OLD | NEW |
1 /* | 1 /* |
2 * Copyright © 2011,2012 Google, Inc. | 2 * Copyright © 2011,2012 Google, Inc. |
3 * | 3 * |
4 * This is part of HarfBuzz, a text shaping library. | 4 * This is part of HarfBuzz, a text shaping library. |
5 * | 5 * |
6 * Permission is hereby granted, without written agreement and without | 6 * Permission is hereby granted, without written agreement and without |
7 * license or royalty fees, to use, copy, modify, and distribute this | 7 * license or royalty fees, to use, copy, modify, and distribute this |
8 * software and its documentation for any purpose, provided that the | 8 * software and its documentation for any purpose, provided that the |
9 * above copyright notice and the following two paragraphs appear in | 9 * above copyright notice and the following two paragraphs appear in |
10 * all copies of this software. | 10 * all copies of this software. |
(...skipping 17 matching lines...) Expand all Loading... |
28 #define HB_OT_HHEA_TABLE_HH | 28 #define HB_OT_HHEA_TABLE_HH |
29 | 29 |
30 #include "hb-open-type-private.hh" | 30 #include "hb-open-type-private.hh" |
31 | 31 |
32 | 32 |
33 namespace OT { | 33 namespace OT { |
34 | 34 |
35 | 35 |
36 /* | 36 /* |
37 * hhea -- The Horizontal Header Table | 37 * hhea -- The Horizontal Header Table |
| 38 * vhea -- The Vertical Header Table |
38 */ | 39 */ |
39 | 40 |
40 #define HB_OT_TAG_hhea HB_TAG('h','h','e','a') | 41 #define HB_OT_TAG_hhea HB_TAG('h','h','e','a') |
| 42 #define HB_OT_TAG_vhea HB_TAG('v','h','e','a') |
41 | 43 |
42 | 44 |
43 struct hhea | 45 struct _hea |
44 { | 46 { |
45 static const hb_tag_t tableTag» = HB_OT_TAG_hhea; | 47 static const hb_tag_t tableTag = HB_TAG('_','h','e','a'); |
| 48 |
| 49 static const hb_tag_t hheaTag»= HB_OT_TAG_hhea; |
| 50 static const hb_tag_t vheaTag»= HB_OT_TAG_vhea; |
46 | 51 |
47 inline bool sanitize (hb_sanitize_context_t *c) { | 52 inline bool sanitize (hb_sanitize_context_t *c) { |
48 TRACE_SANITIZE (this); | 53 TRACE_SANITIZE (this); |
49 return TRACE_RETURN (c->check_struct (this) && likely (version.major == 1)); | 54 return TRACE_RETURN (c->check_struct (this) && likely (version.major == 1)); |
50 } | 55 } |
51 | 56 |
52 public: | 57 public: |
53 FixedVersion version; /* 0x00010000u for version 1.0. */ | 58 FixedVersion version; /* 0x00010000u for version 1.0. */ |
54 FWORD»» ascender;» » /* Typographic ascent. <a | 59 FWORD»» ascender;» » /* Typographic ascent. */ |
55 » » » » » * href="http://developer.apple.com/font
s/TTRefMan/RM06/Chap6hhea.html"> | 60 FWORD»» descender;» » /* Typographic descent. */ |
56 » » » » » * (Distance from baseline of highest | 61 FWORD»» lineGap;» » /* Typographic line gap. */ |
57 » » » » » * ascender)</a> */ | 62 UFWORD» advanceMax;» » /* Maximum advance width/height value in |
58 FWORD»» descender;» » /* Typographic descent. <a | 63 » » » » » * metrics table. */ |
59 » » » » » * href="http://developer.apple.com/font
s/TTRefMan/RM06/Chap6hhea.html"> | 64 FWORD»» minLeadingBearing;» /* Minimum left/top sidebearing value in |
60 » » » » » * (Distance from baseline of lowest | 65 » » » » » * metrics table. */ |
61 » » » » » * descender)</a> */ | 66 FWORD»» minTrailingBearing;» /* Minimum right/bottom sidebearing valu
e; |
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 - | 67 * calculated as Min(aw - lsb - |
72 » » » » » * (xMax - xMin)). */ | 68 » » » » » * (xMax - xMin)) for horizontal. */ |
73 FWORD»» xMaxExtent;» » /* Max(lsb + (xMax - xMin)). */ | 69 FWORD»» maxExtent;» » /* horizontal: Max(lsb + (xMax - xMin)), |
| 70 » » » » » * vertical: minLeadingBearing+(yMax-yMi
n). */ |
74 SHORT caretSlopeRise; /* Used to calculate the slope of the | 71 SHORT caretSlopeRise; /* Used to calculate the slope of the |
75 » » » » » * cursor (rise/run); 1 for vertical. */ | 72 » » » » » * cursor (rise/run); 1 for vertical car
et, |
76 SHORT»» caretSlopeRun;» » /* 0 for vertical. */ | 73 » » » » » * 0 for horizontal.*/ |
| 74 SHORT»» caretSlopeRun;» » /* 0 for vertical caret, 1 for horizonta
l. */ |
77 SHORT caretOffset; /* The amount by which a slanted | 75 SHORT caretOffset; /* The amount by which a slanted |
78 * highlight on a glyph needs | 76 * highlight on a glyph needs |
79 * to be shifted to produce the | 77 * to be shifted to produce the |
80 * best appearance. Set to 0 for | 78 * best appearance. Set to 0 for |
81 » » » » » * non--slanted fonts */ | 79 » » » » » * non-slanted fonts. */ |
82 SHORT»» reserved1;» » /* set to 0 */ | 80 SHORT»» reserved1;» » /* Set to 0. */ |
83 SHORT»» reserved2;» » /* set to 0 */ | 81 SHORT»» reserved2;» » /* Set to 0. */ |
84 SHORT»» reserved3;» » /* set to 0 */ | 82 SHORT»» reserved3;» » /* Set to 0. */ |
85 SHORT»» reserved4;» » /* set to 0 */ | 83 SHORT»» reserved4;» » /* Set to 0. */ |
86 SHORT metricDataFormat; /* 0 for current format. */ | 84 SHORT metricDataFormat; /* 0 for current format. */ |
87 USHORT» numberOfHMetrics;» /* Number of hMetric entries in 'hmtx' | 85 USHORT» numberOfLongMetrics;» /* Number of LongMetric entries in metri
c |
88 » » » » » * table */ | 86 » » » » » * table. */ |
89 public: | 87 public: |
90 DEFINE_SIZE_STATIC (36); | 88 DEFINE_SIZE_STATIC (36); |
91 }; | 89 }; |
92 | 90 |
| 91 struct hhea : _hea { |
| 92 static const hb_tag_t tableTag = HB_OT_TAG_hhea; |
| 93 }; |
| 94 struct vhea : _hea { |
| 95 static const hb_tag_t tableTag = HB_OT_TAG_vhea; |
| 96 }; |
| 97 |
93 | 98 |
94 } /* namespace OT */ | 99 } /* namespace OT */ |
95 | 100 |
96 | 101 |
97 #endif /* HB_OT_HHEA_TABLE_HH */ | 102 #endif /* HB_OT_HHEA_TABLE_HH */ |
OLD | NEW |