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 12 matching lines...) Expand all Loading... |
23 * | 23 * |
24 * Google Author(s): Behdad Esfahbod | 24 * Google Author(s): Behdad Esfahbod |
25 */ | 25 */ |
26 | 26 |
27 #ifndef HB_OT_HMTX_TABLE_HH | 27 #ifndef HB_OT_HMTX_TABLE_HH |
28 #define HB_OT_HMTX_TABLE_HH | 28 #define HB_OT_HMTX_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 { |
| 34 |
33 | 35 |
34 /* | 36 /* |
35 * hmtx -- The Horizontal Metrics Table | 37 * hmtx -- The Horizontal Metrics Table |
36 */ | 38 */ |
37 | 39 |
38 #define HB_OT_TAG_hmtx HB_TAG('h','m','t','x') | 40 #define HB_OT_TAG_hmtx HB_TAG('h','m','t','x') |
39 | 41 |
40 | 42 |
41 struct LongHorMetric | 43 struct LongHorMetric |
42 { | 44 { |
43 USHORT advanceWidth; | 45 USHORT advanceWidth; |
44 SHORT lsb; | 46 SHORT lsb; |
45 public: | 47 public: |
46 DEFINE_SIZE_STATIC (4); | 48 DEFINE_SIZE_STATIC (4); |
47 }; | 49 }; |
48 | 50 |
49 struct hmtx | 51 struct hmtx |
50 { | 52 { |
51 static const hb_tag_t Tag = HB_OT_TAG_hmtx; | 53 static const hb_tag_t Tag = HB_OT_TAG_hmtx; |
52 | 54 |
53 inline bool sanitize (hb_sanitize_context_t *c) { | 55 inline bool sanitize (hb_sanitize_context_t *c) { |
54 TRACE_SANITIZE (); | 56 TRACE_SANITIZE (); |
55 /* We don't check for anything specific here. The users of the | 57 /* We don't check for anything specific here. The users of the |
56 * struct do all the hard work... */ | 58 * struct do all the hard work... */ |
57 return TRACE_RETURN (true); | 59 return TRACE_RETURN (true); |
58 } | 60 } |
59 | 61 |
60 private: | 62 protected: |
61 LongHorMetric longHorMetric[VAR]; /* Paired advance width and left side | 63 LongHorMetric longHorMetric[VAR]; /* Paired advance width and left side |
62 * bearing values for each glyph. The | 64 * bearing values for each glyph. The |
63 * value numOfHMetrics comes from | 65 * value numOfHMetrics comes from |
64 * the 'hhea' table. If the font is | 66 * the 'hhea' table. If the font is |
65 * monospaced, only one entry need | 67 * monospaced, only one entry need |
66 * be in the array, but that entry is | 68 * be in the array, but that entry is |
67 * required. The last entry applies to | 69 * required. The last entry applies to |
68 * all subsequent glyphs. */ | 70 * all subsequent glyphs. */ |
69 SHORT leftSideBearingX[VAR]; /* Here the advanceWidth is assumed | 71 SHORT leftSideBearingX[VAR]; /* Here the advanceWidth is assumed |
70 * to be the same as the advanceWidth | 72 * to be the same as the advanceWidth |
71 * for the last entry above. The | 73 * for the last entry above. The |
72 * number of entries in this array is | 74 * number of entries in this array is |
73 * derived from numGlyphs (from 'maxp' | 75 * derived from numGlyphs (from 'maxp' |
74 * table) minus numberOfHMetrics. This | 76 * table) minus numberOfHMetrics. This |
75 * generally is used with a run of | 77 * generally is used with a run of |
76 * monospaced glyphs (e.g., Kanji | 78 * monospaced glyphs (e.g., Kanji |
77 * fonts or Courier fonts). Only one | 79 * fonts or Courier fonts). Only one |
78 * run is allowed and it must be at | 80 * run is allowed and it must be at |
79 * the end. This allows a monospaced | 81 * the end. This allows a monospaced |
80 * font to vary the left side bearing | 82 * font to vary the left side bearing |
81 * values for each glyph. */ | 83 * values for each glyph. */ |
82 public: | 84 public: |
83 DEFINE_SIZE_ARRAY2 (0, longHorMetric, leftSideBearingX); | 85 DEFINE_SIZE_ARRAY2 (0, longHorMetric, leftSideBearingX); |
84 }; | 86 }; |
85 | 87 |
| 88 |
| 89 } // namespace OT |
| 90 |
| 91 |
86 #endif /* HB_OT_HMTX_TABLE_HH */ | 92 #endif /* HB_OT_HMTX_TABLE_HH */ |
OLD | NEW |