More careful handling of face->charmap; if is NULL, try to set a unicode
Wed Apr 16 03:46:42 2003 Owen Taylor <otaylor@redhat.com> * pango/opentype/pango-ot-info.c (synthesize_class_def): More careful handling of face->charmap; if is NULL, try to set a unicode charmap, if that doesn't succeed, return. (Hopefully fixes #106550)
This commit is contained in:
parent
587b3940f3
commit
f91deef2c9
|
@ -175,6 +175,21 @@ get_glyph_class (gunichar charcode)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
set_unicode_charmap (FT_Face face)
|
||||||
|
{
|
||||||
|
int charmap;
|
||||||
|
|
||||||
|
for (charmap = 0; charmap < face->num_charmaps; charmap++)
|
||||||
|
if (face->charmaps[charmap]->encoding == ft_encoding_unicode)
|
||||||
|
{
|
||||||
|
FT_Error error = FT_Set_Charmap(face, face->charmaps[charmap]);
|
||||||
|
return error == FT_Err_Ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
/* Synthesize a GDEF table using the font's charmap and the
|
/* Synthesize a GDEF table using the font's charmap and the
|
||||||
* unicode property database. We'll fill in class definitions
|
* unicode property database. We'll fill in class definitions
|
||||||
* for glyphs not in the charmap as we walk through the tables.
|
* for glyphs not in the charmap as we walk through the tables.
|
||||||
|
@ -188,8 +203,12 @@ synthesize_class_def (PangoOTInfo *info)
|
||||||
FT_ULong charcode;
|
FT_ULong charcode;
|
||||||
FT_UInt glyph;
|
FT_UInt glyph;
|
||||||
int i, j;
|
int i, j;
|
||||||
|
FT_CharMap old_charmap;
|
||||||
|
|
||||||
if (info->face->charmap->encoding != ft_encoding_unicode)
|
old_charmap = info->face->charmap;
|
||||||
|
|
||||||
|
if (!old_charmap || !old_charmap->encoding != ft_encoding_unicode)
|
||||||
|
if (!set_unicode_charmap (info->face))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
glyph_infos = g_array_new (FALSE, FALSE, sizeof (GlyphInfo));
|
glyph_infos = g_array_new (FALSE, FALSE, sizeof (GlyphInfo));
|
||||||
|
@ -240,6 +259,9 @@ synthesize_class_def (PangoOTInfo *info)
|
||||||
|
|
||||||
g_free (glyph_indices);
|
g_free (glyph_indices);
|
||||||
g_free (classes);
|
g_free (classes);
|
||||||
|
|
||||||
|
if (old_charmap && info->face->charmap != old_charmap)
|
||||||
|
FT_Set_Charmap (info->face, old_charmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
TTO_GDEF
|
TTO_GDEF
|
||||||
|
|
Loading…
Reference in New Issue