[ot-font] Fix sign of ascent/descent
Some fonts, like msmincho, have positive number as descent in vhea table. That's wrong. Just enforce sign on ascent/descent when reading both horizontal and vertical metrics. Fixes https://github.com/harfbuzz/harfbuzz/issues/1248
This commit is contained in:
parent
ba502dea1e
commit
401cdf0792
|
@ -199,8 +199,8 @@ struct hmtxvmtx
|
||||||
#define USE_TYPO_METRICS (1u<<7)
|
#define USE_TYPO_METRICS (1u<<7)
|
||||||
if (0 != (os2_table->fsSelection & USE_TYPO_METRICS))
|
if (0 != (os2_table->fsSelection & USE_TYPO_METRICS))
|
||||||
{
|
{
|
||||||
ascender = os2_table->sTypoAscender;
|
ascender = abs (os2_table->sTypoAscender);
|
||||||
descender = os2_table->sTypoDescender;
|
descender = -abs (os2_table->sTypoDescender);
|
||||||
line_gap = os2_table->sTypoLineGap;
|
line_gap = os2_table->sTypoLineGap;
|
||||||
got_font_extents = (ascender | descender) != 0;
|
got_font_extents = (ascender | descender) != 0;
|
||||||
}
|
}
|
||||||
|
@ -212,8 +212,8 @@ struct hmtxvmtx
|
||||||
num_advances = _hea_table->numberOfLongMetrics;
|
num_advances = _hea_table->numberOfLongMetrics;
|
||||||
if (!got_font_extents)
|
if (!got_font_extents)
|
||||||
{
|
{
|
||||||
ascender = _hea_table->ascender;
|
ascender = abs (_hea_table->ascender);
|
||||||
descender = _hea_table->descender;
|
descender = -abs (_hea_table->descender);
|
||||||
line_gap = _hea_table->lineGap;
|
line_gap = _hea_table->lineGap;
|
||||||
got_font_extents = (ascender | descender) != 0;
|
got_font_extents = (ascender | descender) != 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue