summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2003-05-12 20:48:59 +0000
committerKeith Packard <keithp@keithp.com>2003-05-12 20:48:59 +0000
commit0b7a0da20b24321ef60aee99cd9071a50d78015b (patch)
tree9603cccfa0c5ef7ad0358ba0e5a1d11d9317fce7
parent65d1441df89b898dd74ac1f0fba69c83441dba92 (diff)
Use FcIsWidth to share code
Set FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH when scanning fonts to avoid misclassifying some Han fonts as monospaced.
-rw-r--r--src/fcfreetype.c27
1 files changed, 6 insertions, 21 deletions
diff --git a/src/fcfreetype.c b/src/fcfreetype.c
index a988651..e728358 100644
--- a/src/fcfreetype.c
+++ b/src/fcfreetype.c
@@ -857,28 +857,13 @@ FcFreeTypeQuery (const FcChar8 *file,
case 9: width = FC_WIDTH_ULTRAEXPANDED; break;
}
}
- else if (MY_Get_BDF_Property (face, "SETWIDTH_NAME", &prop) == 0 &&
- prop.type == BDF_PROPERTY_TYPE_ATOM)
+ if (width == -1 &&
+ MY_Get_BDF_Property (face, "SETWIDTH_NAME", &prop) == 0 &&
+ prop.type == BDF_PROPERTY_TYPE_ATOM)
{
- static struct {
- FcChar8 *width_name;
- int width;
- } FcSetWidths[] = {
- { "Condensed", FC_WIDTH_CONDENSED },
- { "SemiCondensed", FC_WIDTH_SEMICONDENSED },
- { "Normal", FC_WIDTH_NORMAL },
- };
- int i;
-
+ width = FcIsWidth (prop.u.atom);
if (FcDebug () & FC_DBG_SCANV)
- printf ("\tsetwidth: %s\n", prop.u.atom);
- for (i = 0; i < sizeof (FcSetWidths) / sizeof (FcSetWidths[0]); i++)
- if (!FcStrCmpIgnoreBlanksAndCase ((FcChar8 *) prop.u.atom,
- FcSetWidths[i].width_name))
- {
- width = FcSetWidths[i].width;
- break;
- }
+ printf ("\tsetwidth %s maps to %d\n", prop.u.atom, width);
}
}
@@ -1760,7 +1745,7 @@ FcFreeTypeCheckGlyph (FT_Face face, FcChar32 ucs4,
FT_UInt glyph, FcBlanks *blanks,
FT_Pos *advance)
{
- FT_Int load_flags = FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING;
+ FT_Int load_flags = FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH | FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING;
FT_GlyphSlot slot;
/*