Use FcIsWidth to share code
Set FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH when scanning fonts to avoid misclassifying some Han fonts as monospaced.
This commit is contained in:
parent
65d1441df8
commit
0b7a0da20b
|
@ -857,28 +857,13 @@ FcFreeTypeQuery (const FcChar8 *file,
|
||||||
case 9: width = FC_WIDTH_ULTRAEXPANDED; break;
|
case 9: width = FC_WIDTH_ULTRAEXPANDED; break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (MY_Get_BDF_Property (face, "SETWIDTH_NAME", &prop) == 0 &&
|
if (width == -1 &&
|
||||||
|
MY_Get_BDF_Property (face, "SETWIDTH_NAME", &prop) == 0 &&
|
||||||
prop.type == BDF_PROPERTY_TYPE_ATOM)
|
prop.type == BDF_PROPERTY_TYPE_ATOM)
|
||||||
{
|
{
|
||||||
static struct {
|
width = FcIsWidth (prop.u.atom);
|
||||||
FcChar8 *width_name;
|
|
||||||
int width;
|
|
||||||
} FcSetWidths[] = {
|
|
||||||
{ "Condensed", FC_WIDTH_CONDENSED },
|
|
||||||
{ "SemiCondensed", FC_WIDTH_SEMICONDENSED },
|
|
||||||
{ "Normal", FC_WIDTH_NORMAL },
|
|
||||||
};
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (FcDebug () & FC_DBG_SCANV)
|
if (FcDebug () & FC_DBG_SCANV)
|
||||||
printf ("\tsetwidth: %s\n", prop.u.atom);
|
printf ("\tsetwidth %s maps to %d\n", prop.u.atom, width);
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1760,7 +1745,7 @@ FcFreeTypeCheckGlyph (FT_Face face, FcChar32 ucs4,
|
||||||
FT_UInt glyph, FcBlanks *blanks,
|
FT_UInt glyph, FcBlanks *blanks,
|
||||||
FT_Pos *advance)
|
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;
|
FT_GlyphSlot slot;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue