Commit 78a21772 authored by Kenichi Handa's avatar Kenichi Handa
Browse files

ftfont.c (ftfont_check_otf): Fix previous change.

parent 38d50547
2010-09-17 Kenichi Handa <handa@m17n.org>
* ftfont.c (ftfont_check_otf): Fix previous change.
2010-09-14 Kenichi Handa <handa@m17n.org>
 
* ftfont.c (ftfont_check_otf): Fix the case of checking just
......
......@@ -1632,13 +1632,18 @@ ftfont_get_metrics (MFLTFont *font, MFLTGlyphString *gstring,
static int
ftfont_check_otf (MFLTFont *font, MFLTOtfSpec *spec)
{
#define FEATURE_NONE(IDX) (! spec->features[IDX])
#define FEATURE_ANY(IDX) \
(spec->features[IDX] \
&& spec->features[IDX][0] == 0xFFFFFFFF && spec->features[IDX][1] == 0)
struct MFLTFontFT *flt_font_ft = (struct MFLTFontFT *) font;
OTF *otf = flt_font_ft->otf;
OTF_Tag *tags;
int i, n, negative;
if (spec->features[0] && spec->features[0][0] ==0
&& spec->features[1] && spec->features[1][0] ==0)
if (FEATURE_ANY (0) && FEATURE_ANY (1))
/* Return 1 iff any of GSUB or GPOS support the script (and language). */
return (otf
&& (OTF_check_features (otf, 0, spec->script, spec->langsys,
......@@ -1647,23 +1652,25 @@ ftfont_check_otf (MFLTFont *font, MFLTOtfSpec *spec)
NULL, 0) > 0));
for (i = 0; i < 2; i++)
if (! spec->features[i] || spec->features[i][0] != 0)
if (! FEATURE_ANY (i))
{
int no_feature = ! otf || OTF_get_features (otf, i == 0) < 0;
if (! spec->features[i])
if (FEATURE_NONE (i))
{
if (no_feature)
continue;
return 0;
if (otf
&& OTF_check_features (otf, i == 0, spec->script, spec->langsys,
NULL, 0) > 0)
return 0;
continue;
}
if (spec->features[i][0] == 0xFFFFFFFF)
{
if (no_feature)
if (! otf
|| OTF_check_features (otf, i == 0, spec->script, spec->langsys,
NULL, 0) <= 0)
continue;
}
else if (no_feature)
else if (! otf)
return 0;
/* Now (! no_feature) */
for (n = 1; spec->features[i][n]; n++);
tags = alloca (sizeof (OTF_Tag) * n);
for (n = 0, negative = 0; spec->features[i][n]; n++)
......@@ -1687,6 +1694,8 @@ ftfont_check_otf (MFLTFont *font, MFLTOtfSpec *spec)
#endif /* not M17N_FLT_USE_NEW_FEATURE */
}
return 1;
#undef FEATURE_NONE
#undef FEATURE_ANY
}
#define DEVICE_DELTA(table, size) \
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment