[metrics] Fall back to hhea if OS2 metrics are empty
authorBehdad Esfahbod <behdad@behdad.org>
Fri, 19 Jul 2019 18:13:50 +0000 (11:13 -0700)
committerBehdad Esfahbod <behdad@behdad.org>
Fri, 19 Jul 2019 18:14:20 +0000 (11:14 -0700)
Reinstates previous logic, even if it might be unnecessary.

src/hb-ot-metrics-internal.cc

index ccf4e37..513053c 100644 (file)
@@ -60,14 +60,14 @@ hb_ot_metrics_get_position_internal (hb_face_t       *face,
   (face->table.TABLE->has_data () && \
     (position && (*position = face->table.TABLE->ATTR + GET_VAR), true))
   case HB_OT_METRICS_HORIZONTAL_ASCENDER:
-    return face->table.OS2->use_typo_metrics () ?
-          GET_METRIC (OS2, sTypoAscender) : GET_METRIC (hhea, ascender);
+    return (face->table.OS2->use_typo_metrics () && GET_METRIC (OS2, sTypoAscender)) ||
+          GET_METRIC (hhea, ascender);
   case HB_OT_METRICS_HORIZONTAL_DESCENDER:
-    return face->table.OS2->use_typo_metrics () ?
-          GET_METRIC (OS2, sTypoDescender) : GET_METRIC (hhea, descender);
+    return (face->table.OS2->use_typo_metrics () && GET_METRIC (OS2, sTypoDescender)) ||
+          GET_METRIC (hhea, descender);
   case HB_OT_METRICS_HORIZONTAL_LINE_GAP:
-    return face->table.OS2->use_typo_metrics () ?
-          GET_METRIC (OS2, sTypoLineGap) : GET_METRIC (hhea, lineGap);
+    return (face->table.OS2->use_typo_metrics () && GET_METRIC (OS2, sTypoLineGap)) ||
+          GET_METRIC (hhea, lineGap);
   case HB_OT_METRICS_HORIZONTAL_CLIPPING_ASCENT:  return GET_METRIC (OS2, usWinAscent);
   case HB_OT_METRICS_HORIZONTAL_CLIPPING_DESCENT: return GET_METRIC (OS2, usWinDescent);
   case HB_OT_METRICS_VERTICAL_ASCENDER:           return GET_METRIC (vhea, ascender);