{
litehtml::string_vector fonts;
litehtml::split_string(faceName, fonts, ",");
- litehtml::trim(fonts[0]);
+ if (! fonts.empty()) {
+ litehtml::trim(fonts[0]);
+ }
cairo_font_face_t* fnt = 0;
cairo_save(m_temp_cr);
- cairo_set_font_size(m_temp_cr, fnt->size);
- cairo_set_font_face(m_temp_cr, fnt->font);
+ if (fnt) {
+ cairo_set_font_size(m_temp_cr, fnt->size);
+ cairo_set_font_face(m_temp_cr, fnt->font);
+ }
cairo_text_extents_t ext;
cairo_text_extents(m_temp_cr, text, &ext);
apply_clip(cr);
- cairo_set_font_face(cr, fnt->font);
- cairo_set_font_size(cr, fnt->size);
+ if (fnt) {
+ cairo_set_font_face(cr, fnt->font);
+ cairo_set_font_size(cr, fnt->size);
+ }
cairo_font_extents_t ext;
cairo_font_extents(cr, &ext);
int tw = 0;
- if(fnt->underline || fnt->strikeout)
- {
+ if (fnt) {
+ if(fnt->underline || fnt->strikeout)
+ {
tw = text_width(text, hFont);
- }
+ }
- if(fnt->underline)
- {
+ if(fnt->underline)
+ {
cairo_set_line_width(cr, 1);
cairo_move_to(cr, x, y + 1.5);
cairo_line_to(cr, x + tw, y + 1.5);
cairo_stroke(cr);
- }
- if(fnt->strikeout)
- {
+ }
+ if(fnt->strikeout)
+ {
cairo_text_extents_t tex;
cairo_text_extents(cr, "x", &tex);
cairo_move_to(cr, x, (double) ln_y - 0.5);
cairo_line_to(cr, x + tw, (double) ln_y - 0.5);
cairo_stroke(cr);
- }
+ }
+ }
cairo_restore(cr);
}