[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:
Behdad Esfahbod 2018-10-23 17:00:49 -07:00
parent ba502dea1e
commit 401cdf0792
1 changed files with 4 additions and 4 deletions

View File

@ -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;
} }