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