tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

hb-ot-hhea-table.hh (3406B)


      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.hh"
     31 
     32 /*
     33 * hhea -- Horizontal Header
     34 * https://docs.microsoft.com/en-us/typography/opentype/spec/hhea
     35 * vhea -- Vertical Header
     36 * https://docs.microsoft.com/en-us/typography/opentype/spec/vhea
     37 */
     38 #define HB_OT_TAG_hhea HB_TAG('h','h','e','a')
     39 #define HB_OT_TAG_vhea HB_TAG('v','h','e','a')
     40 
     41 
     42 namespace OT {
     43 
     44 
     45 template <typename T>
     46 struct _hea
     47 {
     48  bool has_data () const { return version.major; }
     49 
     50  bool sanitize (hb_sanitize_context_t *c) const
     51  {
     52    TRACE_SANITIZE (this);
     53    return_trace (c->check_struct (this) &&
     54 	  hb_barrier () &&
     55 	  likely (version.major == 1));
     56  }
     57 
     58  public:
     59  FixedVersion<>version;	/* 0x00010000u for version 1.0. */
     60  FWORD		ascender;	/* Typographic ascent. */
     61  FWORD		descender;	/* Typographic descent. */
     62  FWORD		lineGap;	/* Typographic line gap. */
     63  UFWORD	advanceMax;	/* Maximum advance width/height value in
     64 			 * metrics table. */
     65  FWORD		minLeadingBearing;
     66 			/* Minimum left/top sidebearing value in
     67 			 * metrics table. */
     68  FWORD		minTrailingBearing;
     69 			/* Minimum right/bottom sidebearing value;
     70 			 * calculated as Min(aw - lsb -
     71 			 * (xMax - xMin)) for horizontal. */
     72  FWORD		maxExtent;	/* horizontal: Max(lsb + (xMax - xMin)),
     73 			 * vertical: minLeadingBearing+(yMax-yMin). */
     74  HBINT16	caretSlopeRise;	/* Used to calculate the slope of the
     75 			 * cursor (rise/run); 1 for vertical caret,
     76 			 * 0 for horizontal.*/
     77  HBINT16	caretSlopeRun;	/* 0 for vertical caret, 1 for horizontal. */
     78  HBINT16	caretOffset;	/* The amount by which a slanted
     79 			 * highlight on a glyph needs
     80 			 * to be shifted to produce the
     81 			 * best appearance. Set to 0 for
     82 			 * non-slanted fonts. */
     83  HBINT16	reserved1;	/* Set to 0. */
     84  HBINT16	reserved2;	/* Set to 0. */
     85  HBINT16	reserved3;	/* Set to 0. */
     86  HBINT16	reserved4;	/* Set to 0. */
     87  HBINT16	metricDataFormat;/* 0 for current format. */
     88  HBUINT16	numberOfLongMetrics;
     89 			/* Number of LongMetric entries in metric
     90 			 * table. */
     91  public:
     92  DEFINE_SIZE_STATIC (36);
     93 };
     94 
     95 struct hhea : _hea<hhea> {
     96  static constexpr hb_tag_t tableTag = HB_OT_TAG_hhea;
     97 };
     98 struct vhea : _hea<vhea> {
     99  static constexpr hb_tag_t tableTag = HB_OT_TAG_vhea;
    100 };
    101 
    102 
    103 } /* namespace OT */
    104 
    105 
    106 #endif /* HB_OT_HHEA_TABLE_HH */