hb-ot-hmtx-table.hh 2.7 KB
Newer Older
B
Behdad Esfahbod 已提交
1
/*
2
 * Copyright © 2011,2012  Google, Inc.
B
Behdad Esfahbod 已提交
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
 *
 *  This is part of HarfBuzz, a text shaping library.
 *
 * Permission is hereby granted, without written agreement and without
 * license or royalty fees, to use, copy, modify, and distribute this
 * software and its documentation for any purpose, provided that the
 * above copyright notice and the following two paragraphs appear in
 * all copies of this software.
 *
 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
 * DAMAGE.
 *
 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
 *
 * Google Author(s): Behdad Esfahbod
 */

#ifndef HB_OT_HMTX_TABLE_HH
#define HB_OT_HMTX_TABLE_HH

#include "hb-open-type-private.hh"



/*
 * hmtx -- The Horizontal Metrics Table
 */

#define HB_OT_TAG_hmtx HB_TAG('h','m','t','x')


struct LongHorMetric
{
  USHORT	advanceWidth;
  SHORT		lsb;
  public:
  DEFINE_SIZE_STATIC (4);
};

struct hmtx
{
  static const hb_tag_t Tag	= HB_OT_TAG_hmtx;

  inline bool sanitize (hb_sanitize_context_t *c) {
    TRACE_SANITIZE ();
    /* We don't check for anything specific here.  The users of the
     * struct do all the hard work... */
57
    return TRACE_RETURN (true);
B
Behdad Esfahbod 已提交
58 59
  }

60
  protected:
B
Behdad Esfahbod 已提交
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
  LongHorMetric	longHorMetric[VAR];	/* Paired advance width and left side
					 * bearing values for each glyph. The
					 * value numOfHMetrics comes from
					 * the 'hhea' table. If the font is
					 * monospaced, only one entry need
					 * be in the array, but that entry is
					 * required. The last entry applies to
					 * all subsequent glyphs. */
  SHORT		leftSideBearingX[VAR];	/* Here the advanceWidth is assumed
					 * to be the same as the advanceWidth
					 * for the last entry above. The
					 * number of entries in this array is
					 * derived from numGlyphs (from 'maxp'
					 * table) minus numberOfHMetrics. This
					 * generally is used with a run of
					 * monospaced glyphs (e.g., Kanji
					 * fonts or Courier fonts). Only one
					 * run is allowed and it must be at
					 * the end. This allows a monospaced
					 * font to vary the left side bearing
					 * values for each glyph. */
  public:
  DEFINE_SIZE_ARRAY2 (0, longHorMetric, leftSideBearingX);
};

#endif /* HB_OT_HMTX_TABLE_HH */