Imported Upstream version 0.9.40
[platform/upstream/harfbuzz.git] / src / hb-ot-hhea-table.hh
index d433200..992fe55 100644 (file)
@@ -35,61 +35,67 @@ namespace OT {
 
 /*
  * hhea -- The Horizontal Header Table
+ * vhea -- The Vertical Header Table
  */
 
 #define HB_OT_TAG_hhea HB_TAG('h','h','e','a')
+#define HB_OT_TAG_vhea HB_TAG('v','h','e','a')
 
 
-struct hhea
+struct _hea
 {
-  static const hb_tag_t tableTag       = HB_OT_TAG_hhea;
+  static const hb_tag_t tableTag = HB_TAG('_','h','e','a');
+
+  static const hb_tag_t hheaTag        = HB_OT_TAG_hhea;
+  static const hb_tag_t vheaTag        = HB_OT_TAG_vhea;
 
-  inline bool sanitize (hb_sanitize_context_t *c) {
+  inline bool sanitize (hb_sanitize_context_t *c) const
+  {
     TRACE_SANITIZE (this);
     return TRACE_RETURN (c->check_struct (this) && likely (version.major == 1));
   }
 
   public:
   FixedVersion version;                /* 0x00010000u for version 1.0. */
-  FWORD                ascender;               /* Typographic ascent. <a
-                                        * href="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6hhea.html">
-                                        * (Distance from baseline of highest
-                                        * ascender)</a> */
-  FWORD                descender;              /* Typographic descent. <a
-                                        * href="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6hhea.html">
-                                        * (Distance from baseline of lowest
-                                        * descender)</a> */
-  FWORD                lineGap;                /* Typographic line gap. Negative
-                                        * LineGap values are treated as zero
-                                        * in Windows 3.1, System 6, and
-                                        * System 7. */
-  UFWORD       advanceWidthMax;        /* Maximum advance width value in
-                                        * 'hmtx' table. */
-  FWORD                minLeftSideBearing;     /* Minimum left sidebearing value in
-                                        * 'hmtx' table. */
-  FWORD                minRightSideBearing;    /* Minimum right sidebearing value;
+  FWORD                ascender;               /* Typographic ascent. */
+  FWORD                descender;              /* Typographic descent. */
+  FWORD                lineGap;                /* Typographic line gap. */
+  UFWORD       advanceMax;             /* Maximum advance width/height value in
+                                        * metrics table. */
+  FWORD                minLeadingBearing;      /* Minimum left/top sidebearing value in
+                                        * metrics table. */
+  FWORD                minTrailingBearing;     /* Minimum right/bottom sidebearing value;
                                         * calculated as Min(aw - lsb -
-                                        * (xMax - xMin)). */
-  FWORD                xMaxExtent;             /* Max(lsb + (xMax - xMin)). */
+                                        * (xMax - xMin)) for horizontal. */
+  FWORD                maxExtent;              /* horizontal: Max(lsb + (xMax - xMin)),
+                                        * vertical: minLeadingBearing+(yMax-yMin). */
   SHORT                caretSlopeRise;         /* Used to calculate the slope of the
-                                        * cursor (rise/run); 1 for vertical. */
-  SHORT                caretSlopeRun;          /* 0 for vertical. */
+                                        * cursor (rise/run); 1 for vertical caret,
+                                        * 0 for horizontal.*/
+  SHORT                caretSlopeRun;          /* 0 for vertical caret, 1 for horizontal. */
   SHORT                caretOffset;            /* The amount by which a slanted
                                         * highlight on a glyph needs
                                         * to be shifted to produce the
                                         * best appearance. Set to 0 for
-                                        * non--slanted fonts */
-  SHORT                reserved1;              /* set to 0 */
-  SHORT                reserved2;              /* set to 0 */
-  SHORT                reserved3;              /* set to 0 */
-  SHORT                reserved4;              /* set to 0 */
+                                        * non-slanted fonts. */
+  SHORT                reserved1;              /* Set to 0. */
+  SHORT                reserved2;              /* Set to 0. */
+  SHORT                reserved3;              /* Set to 0. */
+  SHORT                reserved4;              /* Set to 0. */
   SHORT                metricDataFormat;       /* 0 for current format. */
-  USHORT       numberOfHMetrics;       /* Number of hMetric entries in 'hmtx'
-                                        * table */
+  USHORT       numberOfLongMetrics;    /* Number of LongMetric entries in metric
+                                        * table. */
   public:
   DEFINE_SIZE_STATIC (36);
 };
 
+struct hhea : _hea {
+  static const hb_tag_t tableTag       = HB_OT_TAG_hhea;
+};
+struct vhea : _hea {
+  static const hb_tag_t tableTag       = HB_OT_TAG_vhea;
+};
+
 
 } /* namespace OT */