• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright © 2011,2012  Google, Inc.
3  *
4  *  This is part of HarfBuzz, a text shaping library.
5  *
6  * Permission is hereby granted, without written agreement and without
7  * license or royalty fees, to use, copy, modify, and distribute this
8  * software and its documentation for any purpose, provided that the
9  * above copyright notice and the following two paragraphs appear in
10  * all copies of this software.
11  *
12  * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
13  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
14  * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
15  * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
16  * DAMAGE.
17  *
18  * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
19  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
20  * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
21  * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
22  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
23  *
24  * Google Author(s): Behdad Esfahbod
25  */
26 
27 #ifndef HB_OT_HHEA_TABLE_HH
28 #define HB_OT_HHEA_TABLE_HH
29 
30 #include "hb-open-type-private.hh"
31 
32 
33 namespace OT {
34 
35 
36 /*
37  * hhea -- The Horizontal Header Table
38  */
39 
40 #define HB_OT_TAG_hhea HB_TAG('h','h','e','a')
41 
42 
43 struct hhea
44 {
45   static const hb_tag_t tableTag	= HB_OT_TAG_hhea;
46 
sanitizeOT::hhea47   inline bool sanitize (hb_sanitize_context_t *c) {
48     TRACE_SANITIZE (this);
49     return TRACE_RETURN (c->check_struct (this) && likely (version.major == 1));
50   }
51 
52   protected:
53   FixedVersion	version;		/* 0x00010000 for version 1.0. */
54   FWORD		ascender;		/* Typographic ascent. <a
55 					 * href="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6hhea.html">
56 					 * (Distance from baseline of highest
57 					 * ascender)</a> */
58   FWORD		descender;		/* Typographic descent. <a
59 					 * href="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6hhea.html">
60 					 * (Distance from baseline of lowest
61 					 * descender)</a> */
62   FWORD		lineGap;		/* Typographic line gap. Negative
63 					 * LineGap values are treated as zero
64 					 * in Windows 3.1, System 6, and
65 					 * System 7. */
66   UFWORD	advanceWidthMax;	/* Maximum advance width value in
67 					 * 'hmtx' table. */
68   FWORD		minLeftSideBearing;	/* Minimum left sidebearing value in
69 					 * 'hmtx' table. */
70   FWORD		minRightSideBearing;	/* Minimum right sidebearing value;
71 					 * calculated as Min(aw - lsb -
72 					 * (xMax - xMin)). */
73   FWORD		xMaxExtent;		/* Max(lsb + (xMax - xMin)). */
74   SHORT		caretSlopeRise;		/* Used to calculate the slope of the
75 					 * cursor (rise/run); 1 for vertical. */
76   SHORT		caretSlopeRun;		/* 0 for vertical. */
77   SHORT		caretOffset;		/* The amount by which a slanted
78 					 * highlight on a glyph needs
79 					 * to be shifted to produce the
80 					 * best appearance. Set to 0 for
81 					 * non--slanted fonts */
82   SHORT		reserved1;		/* set to 0 */
83   SHORT		reserved2;		/* set to 0 */
84   SHORT		reserved3;		/* set to 0 */
85   SHORT		reserved4;		/* set to 0 */
86   SHORT		metricDataFormat;	/* 0 for current format. */
87   USHORT	numberOfHMetrics;	/* Number of hMetric entries in 'hmtx'
88 					 * table */
89   public:
90   DEFINE_SIZE_STATIC (36);
91 };
92 
93 
94 } /* namespace OT */
95 
96 
97 #endif /* HB_OT_HHEA_TABLE_HH */
98