LCOV - code coverage report
Current view: directory - gfx/harfbuzz/src - hb-ot-head-table.hh (source / functions) Found Hit Coverage
Test: app.info Lines: 6 0 0.0 %
Date: 2012-06-02 Functions: 2 0 0.0 %

       1                 : /*
       2                 :  * Copyright © 2010  Red Hat, 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                 :  * Red Hat Author(s): Behdad Esfahbod
      25                 :  */
      26                 : 
      27                 : #ifndef HB_OT_HEAD_TABLE_HH
      28                 : #define HB_OT_HEAD_TABLE_HH
      29                 : 
      30                 : #include "hb-open-type-private.hh"
      31                 : 
      32                 : 
      33                 : 
      34                 : /*
      35                 :  * head -- Font Header
      36                 :  */
      37                 : 
      38                 : #define HB_OT_TAG_head HB_TAG('h','e','a','d')
      39                 : 
      40                 : struct head
      41                 : {
      42                 :   static const hb_tag_t Tag     = HB_OT_TAG_head;
      43                 : 
      44               0 :   inline unsigned int get_upem (void) const {
      45               0 :     unsigned int upem = unitsPerEm;
      46                 :     /* If no valid head table found, assume 1000, which matches typicaly Type1 usage. */
      47               0 :     return 16 <= upem && upem <= 16384 ? upem : 1000;
      48                 :   }
      49                 : 
      50               0 :   inline bool sanitize (hb_sanitize_context_t *c) {
      51               0 :     TRACE_SANITIZE ();
      52               0 :     return c->check_struct (this) && likely (version.major == 1);
      53                 :   }
      54                 : 
      55                 :   private:
      56                 :   FixedVersion  version;                /* Version of the head table--currently
      57                 :                                          * 0x00010000 for version 1.0. */
      58                 :   FixedVersion  fontRevision;           /* Set by font manufacturer. */
      59                 :   ULONG         checkSumAdjustment;     /* To compute: set it to 0, sum the
      60                 :                                          * entire font as ULONG, then store
      61                 :                                          * 0xB1B0AFBA - sum. */
      62                 :   ULONG         magicNumber;            /* Set to 0x5F0F3CF5. */
      63                 :   USHORT        flags;                  /* Bit 0: Baseline for font at y=0;
      64                 :                                          * Bit 1: Left sidebearing point at x=0;
      65                 :                                          * Bit 2: Instructions may depend on point size;
      66                 :                                          * Bit 3: Force ppem to integer values for all
      67                 :                                          *   internal scaler math; may use fractional
      68                 :                                          *   ppem sizes if this bit is clear;
      69                 :                                          * Bit 4: Instructions may alter advance width
      70                 :                                          *   (the advance widths might not scale linearly);
      71                 : 
      72                 :                                          * Bits 5-10: These should be set according to
      73                 :                                          *   Apple's specification. However, they are not
      74                 :                                          *   implemented in OpenType.
      75                 :                                          * Bit 5: This bit should be set in fonts that are
      76                 :                                          *   intended to e laid out vertically, and in
      77                 :                                          *   which the glyphs have been drawn such that an
      78                 :                                          *   x-coordinate of 0 corresponds to the desired
      79                 :                                          *   vertical baseline.
      80                 :                                          * Bit 6: This bit must be set to zero.
      81                 :                                          * Bit 7: This bit should be set if the font
      82                 :                                          *   requires layout for correct linguistic
      83                 :                                          *   rendering (e.g. Arabic fonts).
      84                 :                                          * Bit 8: This bit should be set for a GX font
      85                 :                                          *   which has one or more metamorphosis effects
      86                 :                                          *   designated as happening by default.
      87                 :                                          * Bit 9: This bit should be set if the font
      88                 :                                          *   contains any strong right-to-left glyphs.
      89                 :                                          * Bit 10: This bit should be set if the font
      90                 :                                          *   contains Indic-style rearrangement effects.
      91                 : 
      92                 :                                          * Bit 11: Font data is 'lossless,' as a result
      93                 :                                          *   of having been compressed and decompressed
      94                 :                                          *   with the Agfa MicroType Express engine.
      95                 :                                          * Bit 12: Font converted (produce compatible metrics)
      96                 :                                          * Bit 13: Font optimized for ClearType™.
      97                 :                                          *   Note, fonts that rely on embedded bitmaps (EBDT)
      98                 :                                          *   for rendering should not be considered optimized
      99                 :                                          *   for ClearType, and therefore should keep this bit
     100                 :                                          *   cleared.
     101                 :                                          * Bit 14: Last Resort font. If set, indicates that
     102                 :                                          * the glyphs encoded in the cmap subtables are simply
     103                 :                                          * generic symbolic representations of code point
     104                 :                                          * ranges and don’t truly represent support for those
     105                 :                                          * code points. If unset, indicates that the glyphs
     106                 :                                          * encoded in the cmap subtables represent proper
     107                 :                                          * support for those code points.
     108                 :                                          * Bit 15: Reserved, set to 0. */
     109                 :   USHORT        unitsPerEm;             /* Valid range is from 16 to 16384. This value
     110                 :                                          * should be a power of 2 for fonts that have
     111                 :                                          * TrueType outlines. */
     112                 :   LONGDATETIME  created;                /* Number of seconds since 12:00 midnight,
     113                 :                                            January 1, 1904. 64-bit integer */
     114                 :   LONGDATETIME  modified;               /* Number of seconds since 12:00 midnight,
     115                 :                                            January 1, 1904. 64-bit integer */
     116                 :   SHORT         xMin;                   /* For all glyph bounding boxes. */
     117                 :   SHORT         yMin;                   /* For all glyph bounding boxes. */
     118                 :   SHORT         xMax;                   /* For all glyph bounding boxes. */
     119                 :   SHORT         yMax;                   /* For all glyph bounding boxes. */
     120                 :   USHORT        macStyle;               /* Bit 0: Bold (if set to 1);
     121                 :                                          * Bit 1: Italic (if set to 1)
     122                 :                                          * Bit 2: Underline (if set to 1)
     123                 :                                          * Bit 3: Outline (if set to 1)
     124                 :                                          * Bit 4: Shadow (if set to 1)
     125                 :                                          * Bit 5: Condensed (if set to 1)
     126                 :                                          * Bit 6: Extended (if set to 1)
     127                 :                                          * Bits 7-15: Reserved (set to 0). */
     128                 :   USHORT        lowestRecPPEM;          /* Smallest readable size in pixels. */
     129                 :   SHORT         fontDirectionHint;      /* Deprecated (Set to 2).
     130                 :                                          * 0: Fully mixed directional glyphs;
     131                 :                                          * 1: Only strongly left to right;
     132                 :                                          * 2: Like 1 but also contains neutrals;
     133                 :                                          * -1: Only strongly right to left;
     134                 :                                          * -2: Like -1 but also contains neutrals. */
     135                 :   SHORT         indexToLocFormat;       /* 0 for short offsets, 1 for long. */
     136                 :   SHORT         glyphDataFormat;        /* 0 for current format. */
     137                 :   public:
     138                 :   DEFINE_SIZE_STATIC (54);
     139                 : };
     140                 : 
     141                 : 
     142                 : 
     143                 : #endif /* HB_OT_HEAD_TABLE_HH */

Generated by: LCOV version 1.7