[os2] Move typometrics detection logic to the table (#1465)
authorEbrahim Byagowi <ebrahim@gnu.org>
Sat, 8 Dec 2018 10:10:44 +0000 (13:40 +0330)
committerGitHub <noreply@github.com>
Sat, 8 Dec 2018 10:10:44 +0000 (13:40 +0330)
src/hb-ot-hmtx-table.hh
src/hb-ot-os2-table.hh

index f22ed1d..cd5e798 100644 (file)
@@ -192,16 +192,12 @@ struct hmtxvmtx
       default_advance = default_advance_ ? default_advance_ : hb_face_get_upem (face);
 
       bool got_font_extents = false;
-      if (T::os2Tag != HB_TAG_NONE)
+      if (T::os2Tag != HB_TAG_NONE && face->table.OS2->is_typo_metrics ())
       {
-#define USE_TYPO_METRICS (1u<<7)
-       if (0 != (face->table.OS2->fsSelection & USE_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;
-       }
+       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);
index e06ed57..67890f7 100644 (file)
@@ -112,10 +112,11 @@ struct OS2
     OBLIQUE            = 1u<<9
   };
 
-  inline bool is_italic (void) const  { return fsSelection & ITALIC; }
-  inline bool is_oblique (void) const { return fsSelection & OBLIQUE; }
+  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% */