wchar_t character;
FT_Int32 load_flags = FT_LOAD_TARGET_LIGHT;
+ if (label->face == NULL)
+ return NULL;
+
character_size = mbrtowc (&character, input_text, PLY_UTF8_CHARACTER_SIZE_MAX, NULL);
if (character_size <= 0) {
ply_freetype_unit_t line_height;
ply_rectangle_t *entry;
+ if (label->face == NULL)
+ return;
+
line_height.as_integer = label->face->size->metrics.ascender + -label->face->size->metrics.descender;
dimensions->x = label->area.x;
return;
}
- /* Make sure that the first row fits */
- glyph_y.as_integer += label->face->size->metrics.ascender;
-
/* Go through each line */
do {
bool should_stop;
if (glyph == NULL)
continue;
+ if (is_first_character) {
+ /* Move pen to the first character's base line */
+ glyph_y.as_integer += label->face->size->metrics.ascender;
+ }
+
if (*current_character == '\n') {
if (action == PLY_LOAD_GLYPH_ACTION_MEASURE)
finish_measuring_line (label, &glyph_x, &glyph_y, line_dimensions);
label->is_monospaced = false;
}
}
- if (error)
+ if (error) {
FT_Done_Face (label->face);
+ label->face = NULL;
+ return;
+ }
/* Format is "Family 1[,Family 2[,..]] [25[px]]" .
* [] means optional. */