[os2] Move typometrics detection logic to the table (#1465)

This commit is contained in:
Ebrahim Byagowi 2018-12-08 13:40:44 +03:30 committed by GitHub
parent 47cf9a9633
commit f7cfe99815
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 12 deletions

View File

@ -192,17 +192,13 @@ struct hmtxvmtx
default_advance = default_advance_ ? default_advance_ : hb_face_get_upem (face);
bool got_font_extents = false;
if (T::os2Tag != HB_TAG_NONE)
{
#define USE_TYPO_METRICS (1u<<7)
if (0 != (face->table.OS2->fsSelection & USE_TYPO_METRICS))
if (T::os2Tag != HB_TAG_NONE && face->table.OS2->is_typo_metrics ())
{
ascender = abs (face->table.OS2->sTypoAscender);
descender = -abs (face->table.OS2->sTypoDescender);
line_gap = face->table.OS2->sTypoLineGap;
got_font_extents = (ascender | descender) != 0;
}
}
hb_blob_t *_hea_blob = hb_sanitize_context_t().reference_table<H> (face);
const H *_hea_table = _hea_blob->as<H> ();

View File

@ -114,8 +114,9 @@ struct OS2
inline bool is_italic (void) const { return fsSelection & ITALIC; }
inline bool is_oblique (void) const { return fsSelection & OBLIQUE; }
inline bool is_typo_metrics (void) const { return fsSelection & USE_TYPO_METRICS; }
enum us_width_class_t {
enum width_class_t {
FWIDTH_ULTRA_CONDENSED = 1, /* 50% */
FWIDTH_EXTRA_CONDENSED = 2, /* 62.5% */
FWIDTH_CONDENSED = 3, /* 75% */