1ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner/***************************************************************************/
2ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner/*                                                                         */
3ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner/*  tttables.h                                                             */
4ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner/*                                                                         */
5ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner/*    Basic SFNT/TrueType tables definitions and interface                 */
65aa646c565b963d44e295162dbe27c039fdd2e1bWerner Lemberg/*    (specification only).                                                */
7ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner/*                                                                         */
80a0c22569deab933df21127e75db5c81f724f292Werner Lemberg/*  Copyright 1996-2018 by                                                 */
9ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
10ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner/*                                                                         */
116cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg/*  This file is part of the FreeType project, and may only be used,       */
126cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg/*  modified, and distributed under the terms of the FreeType project      */
13ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
14ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner/*  this file you indicate that you have read the license and              */
15ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner/*  understand and accept it fully.                                        */
16ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner/*                                                                         */
17ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner/***************************************************************************/
18ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
196cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg
2037412ff9f42212bcf4dd29d9762f3c35b5735768Werner Lemberg#ifndef TTTABLES_H_
2137412ff9f42212bcf4dd29d9762f3c35b5735768Werner Lemberg#define TTTABLES_H_
22ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
2390d9964ec9c6537a69dedbc29f0a6d277707dbccWerner Lemberg
24d3c8e064a5587e924f83913e5eae38586b50840cDavid Turner#include <ft2build.h>
258fba32d2d6f284bfd49ed6c0557880e0bb692f49David Turner#include FT_FREETYPE_H
268fba32d2d6f284bfd49ed6c0557880e0bb692f49David Turner
27ab3e9140009301fd028b639ab00389c1d7e5d4ccWerner Lemberg#ifdef FREETYPE_H
28ab3e9140009301fd028b639ab00389c1d7e5d4ccWerner Lemberg#error "freetype.h of FreeType 1 has been loaded!"
29ab3e9140009301fd028b639ab00389c1d7e5d4ccWerner Lemberg#error "Please fix the directory search order for header files"
30ab3e9140009301fd028b639ab00389c1d7e5d4ccWerner Lemberg#error "so that freetype.h of FreeType 2 is found first."
31ab3e9140009301fd028b639ab00389c1d7e5d4ccWerner Lemberg#endif
32ab3e9140009301fd028b639ab00389c1d7e5d4ccWerner Lemberg
3390d9964ec9c6537a69dedbc29f0a6d277707dbccWerner Lemberg
348fba32d2d6f284bfd49ed6c0557880e0bb692f49David TurnerFT_BEGIN_HEADER
356cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg
3618b55f7bbc39f92877f825326441c13f8aaf5e80David Turner  /*************************************************************************/
3718b55f7bbc39f92877f825326441c13f8aaf5e80David Turner  /*                                                                       */
3838208a6e6b07c8d3e144632c33833e16023b410bWerner Lemberg  /* <Section>                                                             */
3938208a6e6b07c8d3e144632c33833e16023b410bWerner Lemberg  /*    truetype_tables                                                    */
4018b55f7bbc39f92877f825326441c13f8aaf5e80David Turner  /*                                                                       */
4138208a6e6b07c8d3e144632c33833e16023b410bWerner Lemberg  /* <Title>                                                               */
4238208a6e6b07c8d3e144632c33833e16023b410bWerner Lemberg  /*    TrueType Tables                                                    */
4318b55f7bbc39f92877f825326441c13f8aaf5e80David Turner  /*                                                                       */
4418b55f7bbc39f92877f825326441c13f8aaf5e80David Turner  /* <Abstract>                                                            */
45ee95b6f0d487cb31e90170032ab39d120258052eWerner Lemberg  /*    TrueType specific table types and functions.                       */
4618b55f7bbc39f92877f825326441c13f8aaf5e80David Turner  /*                                                                       */
4718b55f7bbc39f92877f825326441c13f8aaf5e80David Turner  /* <Description>                                                         */
488013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    This section contains definitions of some basic tables specific to */
498013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    TrueType and OpenType as well as some routines used to access and  */
508013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    process them.                                                      */
5118b55f7bbc39f92877f825326441c13f8aaf5e80David Turner  /*                                                                       */
52de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg  /* <Order>                                                               */
53de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg  /*    TT_Header                                                          */
54de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg  /*    TT_HoriHeader                                                      */
55de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg  /*    TT_VertHeader                                                      */
56de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg  /*    TT_OS2                                                             */
57de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg  /*    TT_Postscript                                                      */
58de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg  /*    TT_PCLT                                                            */
59de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg  /*    TT_MaxProfile                                                      */
60de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg  /*                                                                       */
61de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg  /*    FT_Sfnt_Tag                                                        */
62de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg  /*    FT_Get_Sfnt_Table                                                  */
63de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg  /*    FT_Load_Sfnt_Table                                                 */
64de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg  /*    FT_Sfnt_Table_Info                                                 */
65de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg  /*                                                                       */
66de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg  /*    FT_Get_CMap_Language_ID                                            */
67de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg  /*    FT_Get_CMap_Format                                                 */
68de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg  /*                                                                       */
69de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg  /*    FT_PARAM_TAG_UNPATENTED_HINTING                                    */
70de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg  /*                                                                       */
7138208a6e6b07c8d3e144632c33833e16023b410bWerner Lemberg  /*************************************************************************/
7238208a6e6b07c8d3e144632c33833e16023b410bWerner Lemberg
7390d9964ec9c6537a69dedbc29f0a6d277707dbccWerner Lemberg
74ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*************************************************************************/
75ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
76ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /* <Struct>                                                              */
77ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    TT_Header                                                          */
78ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
79ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /* <Description>                                                         */
808013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    A structure to model a TrueType font header table.  All fields     */
818013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    follow the OpenType specification.                                 */
82ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
83ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  typedef struct  TT_Header_
84ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  {
85ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Fixed   Table_Version;
86ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Fixed   Font_Revision;
87ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
88ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Long    CheckSum_Adjust;
89ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Long    Magic_Number;
90ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
91ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_UShort  Flags;
92ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_UShort  Units_Per_EM;
93ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
94ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Long    Created [2];
95ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Long    Modified[2];
96ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
97ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   xMin;
98ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   yMin;
99ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   xMax;
100ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   yMax;
101ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
102ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_UShort  Mac_Style;
103ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_UShort  Lowest_Rec_PPEM;
104ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
105ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   Font_Direction;
106ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   Index_To_Loc_Format;
107ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   Glyph_Data_Format;
108ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
109ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  } TT_Header;
110ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
111ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
112ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*************************************************************************/
113ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
114ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /* <Struct>                                                              */
115ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    TT_HoriHeader                                                      */
116ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
117ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /* <Description>                                                         */
1188013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    A structure to model a TrueType horizontal header, the `hhea'      */
119ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    table, as well as the corresponding horizontal metrics table,      */
1208013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    `hmtx'.                                                            */
121ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
122ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /* <Fields>                                                              */
123ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    Version                :: The table version.                       */
124ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
125ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    Ascender               :: The font's ascender, i.e., the distance  */
126ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              from the baseline to the top-most of all */
127ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              glyph points found in the font.          */
128ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
129ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              This value is invalid in many fonts, as  */
130ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              it is usually set by the font designer,  */
131ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              and often reflects only a portion of the */
132ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              glyphs found in the font (maybe ASCII).  */
133ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
134ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              You should use the `sTypoAscender' field */
1358013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*                              of the `OS/2' table instead if you want  */
136ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              the correct one.                         */
137ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
138ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    Descender              :: The font's descender, i.e., the distance */
139ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              from the baseline to the bottom-most of  */
140ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              all glyph points found in the font.  It  */
141ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              is negative.                             */
142ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
143ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              This value is invalid in many fonts, as  */
144ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              it is usually set by the font designer,  */
145ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              and often reflects only a portion of the */
146ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              glyphs found in the font (maybe ASCII).  */
147ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
148ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              You should use the `sTypoDescender'      */
1498013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*                              field of the `OS/2' table instead if you */
150ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              want the correct one.                    */
151ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
152ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    Line_Gap               :: The font's line gap, i.e., the distance  */
153ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              to add to the ascender and descender to  */
154ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              get the BTB, i.e., the                   */
155ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              baseline-to-baseline distance for the    */
156ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              font.                                    */
157ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
158ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    advance_Width_Max      :: This field is the maximum of all advance */
159ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              widths found in the font.  It can be     */
160ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              used to compute the maximum width of an  */
161ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              arbitrary string of text.                */
162ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
163ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    min_Left_Side_Bearing  :: The minimum left side bearing of all     */
164ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              glyphs within the font.                  */
165ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
166ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    min_Right_Side_Bearing :: The minimum right side bearing of all    */
167ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              glyphs within the font.                  */
168ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
169ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    xMax_Extent            :: The maximum horizontal extent (i.e., the */
170ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              `width' of a glyph's bounding box) for   */
171ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              all glyphs in the font.                  */
172ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
173ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    caret_Slope_Rise       :: The rise coefficient of the cursor's     */
174ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              slope of the cursor (slope=rise/run).    */
175ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
176ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    caret_Slope_Run        :: The run coefficient of the cursor's      */
177ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              slope.                                   */
178ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
179cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*    caret_Offset           :: The cursor's offset for slanted fonts.   */
180cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*                                                                       */
1818a9b63913f62bdf342f4bd8791cb7c7ebfdbfeddWerner Lemberg  /*    Reserved               :: 8~reserved bytes.                        */
182ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
1838a9b63913f62bdf342f4bd8791cb7c7ebfdbfeddWerner Lemberg  /*    metric_Data_Format     :: Always~0.                                */
184ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
185ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    number_Of_HMetrics     :: Number of HMetrics entries in the `hmtx' */
186ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              table -- this value can be smaller than  */
187ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                              the total number of glyphs in the font.  */
188ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
189ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    long_metrics           :: A pointer into the `hmtx' table.         */
190ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
191ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    short_metrics          :: A pointer into the `hmtx' table.         */
192ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
193ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /* <Note>                                                                */
194cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*    For an OpenType variation font, the values of the following fields */
195cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*    can change after a call to @FT_Set_Var_Design_Coordinates (and     */
196cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*    friends) if the font contains an `MVAR' table: `caret_Slope_Rise', */
197cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*    `caret_Slope_Run', and `caret_Offset'.                             */
198cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*                                                                       */
199ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  typedef struct  TT_HoriHeader_
200ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  {
201ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Fixed   Version;
202ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   Ascender;
203ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   Descender;
204ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   Line_Gap;
205ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
206ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_UShort  advance_Width_Max;      /* advance width maximum */
207ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
208ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   min_Left_Side_Bearing;  /* minimum left-sb       */
209ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   min_Right_Side_Bearing; /* minimum right-sb      */
210ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   xMax_Extent;            /* xmax extents          */
211ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   caret_Slope_Rise;
212ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   caret_Slope_Run;
213ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   caret_Offset;
214ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
2155dea44438f74324403cb2974a5701cac7ceab32aWerner Lemberg    FT_Short   Reserved[4];
216ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
217ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   metric_Data_Format;
218ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_UShort  number_Of_HMetrics;
219ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
2208013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg    /* The following fields are not defined by the OpenType specification */
2214a2305cf0c686d58273e264780b48b159e42f604Werner Lemberg    /* but they are used to connect the metrics header to the relevant    */
222cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg    /* `hmtx' table.                                                      */
223ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
224ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    void*      long_metrics;
225ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    void*      short_metrics;
226ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
227ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  } TT_HoriHeader;
228ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
229ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
230ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*************************************************************************/
231ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
232ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /* <Struct>                                                              */
233ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    TT_VertHeader                                                      */
234ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
235ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /* <Description>                                                         */
236ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    A structure used to model a TrueType vertical header, the `vhea'   */
2378013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    table, as well as the corresponding vertical metrics table,        */
2388013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    `vmtx'.                                                            */
239ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
240ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /* <Fields>                                                              */
241ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    Version                 :: The table version.                      */
242ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
243ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    Ascender                :: The font's ascender, i.e., the distance */
244ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               from the baseline to the top-most of    */
245ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               all glyph points found in the font.     */
246ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
247ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               This value is invalid in many fonts, as */
248ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               it is usually set by the font designer, */
249ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               and often reflects only a portion of    */
250ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               the glyphs found in the font (maybe     */
251ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               ASCII).                                 */
252ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
253ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               You should use the `sTypoAscender'      */
2548013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*                               field of the `OS/2' table instead if    */
2558013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*                               you want the correct one.               */
256ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
257ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    Descender               :: The font's descender, i.e., the         */
258ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               distance from the baseline to the       */
259ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               bottom-most of all glyph points found   */
260ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               in the font.  It is negative.           */
261ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
262ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               This value is invalid in many fonts, as */
263ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               it is usually set by the font designer, */
264ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               and often reflects only a portion of    */
265ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               the glyphs found in the font (maybe     */
266ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               ASCII).                                 */
267ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
268ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               You should use the `sTypoDescender'     */
2698013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*                               field of the `OS/2' table instead if    */
2708013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*                               you want the correct one.               */
271ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
272ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    Line_Gap                :: The font's line gap, i.e., the distance */
273ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               to add to the ascender and descender to */
274ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               get the BTB, i.e., the                  */
275ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               baseline-to-baseline distance for the   */
276ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               font.                                   */
277ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
278ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    advance_Height_Max      :: This field is the maximum of all        */
279ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               advance heights found in the font.  It  */
280ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               can be used to compute the maximum      */
281ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               height of an arbitrary string of text.  */
282ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
283ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    min_Top_Side_Bearing    :: The minimum top side bearing of all     */
284ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               glyphs within the font.                 */
285ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
286ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    min_Bottom_Side_Bearing :: The minimum bottom side bearing of all  */
287ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               glyphs within the font.                 */
288ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
289ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    yMax_Extent             :: The maximum vertical extent (i.e., the  */
290ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               `height' of a glyph's bounding box) for */
291ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               all glyphs in the font.                 */
292ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
293ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    caret_Slope_Rise        :: The rise coefficient of the cursor's    */
294ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               slope of the cursor (slope=rise/run).   */
295ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
296ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    caret_Slope_Run         :: The run coefficient of the cursor's     */
297ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               slope.                                  */
298ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
2995dea44438f74324403cb2974a5701cac7ceab32aWerner Lemberg  /*    caret_Offset            :: The cursor's offset for slanted fonts.  */
3005dea44438f74324403cb2974a5701cac7ceab32aWerner Lemberg  /*                                                                       */
3018a9b63913f62bdf342f4bd8791cb7c7ebfdbfeddWerner Lemberg  /*    Reserved                :: 8~reserved bytes.                       */
302ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
3038a9b63913f62bdf342f4bd8791cb7c7ebfdbfeddWerner Lemberg  /*    metric_Data_Format      :: Always~0.                               */
304ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
3058013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    number_Of_VMetrics      :: Number of VMetrics entries in the       */
306ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               `vmtx' table -- this value can be       */
307ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               smaller than the total number of glyphs */
308ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                               in the font.                            */
309ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
310cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*    long_metrics            :: A pointer into the `vmtx' table.        */
311ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
312cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*    short_metrics           :: A pointer into the `vmtx' table.        */
313ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
314ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /* <Note>                                                                */
315cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*    For an OpenType variation font, the values of the following fields */
316cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*    can change after a call to @FT_Set_Var_Design_Coordinates (and     */
317cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*    friends) if the font contains an `MVAR' table: `Ascender',         */
318cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*    `Descender', `Line_Gap', `caret_Slope_Rise', `caret_Slope_Run',    */
319cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*    and `caret_Offset'.                                                */
320cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*                                                                       */
3214a2305cf0c686d58273e264780b48b159e42f604Werner Lemberg  typedef struct  TT_VertHeader_
322ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  {
323ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Fixed   Version;
324ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   Ascender;
325ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   Descender;
326ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   Line_Gap;
327ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
328ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_UShort  advance_Height_Max;      /* advance height maximum */
329ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
3308013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg    FT_Short   min_Top_Side_Bearing;    /* minimum top-sb          */
3318013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg    FT_Short   min_Bottom_Side_Bearing; /* minimum bottom-sb       */
3328013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg    FT_Short   yMax_Extent;             /* ymax extents            */
333ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   caret_Slope_Rise;
334ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   caret_Slope_Run;
335ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   caret_Offset;
336ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
3375dea44438f74324403cb2974a5701cac7ceab32aWerner Lemberg    FT_Short   Reserved[4];
338ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
339ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   metric_Data_Format;
340ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_UShort  number_Of_VMetrics;
341ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
3428013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg    /* The following fields are not defined by the OpenType specification */
343cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg    /* but they are used to connect the metrics header to the relevant    */
3448013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg    /* `vmtx' table.                                                      */
345ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
346ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    void*      long_metrics;
347ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    void*      short_metrics;
348ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
349ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  } TT_VertHeader;
350ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
3516cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg
352ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*************************************************************************/
353ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
354ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /* <Struct>                                                              */
355ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    TT_OS2                                                             */
356ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
357ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /* <Description>                                                         */
3588013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    A structure to model a TrueType `OS/2' table.  All fields comply   */
3598013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    to the OpenType specification.                                     */
360ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
3618013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    Note that we now support old Mac fonts that do not include an      */
3628013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    `OS/2' table.  In this case, the `version' field is always set to  */
3638013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    0xFFFF.                                                            */
364ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
3658013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /* <Note>                                                                */
366cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*    For an OpenType variation font, the values of the following fields */
367cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*    can change after a call to @FT_Set_Var_Design_Coordinates (and     */
368cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*    friends) if the font contains an `MVAR' table: `sCapHeight',       */
369cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*    `sTypoAscender', `sTypoDescender', `sTypoLineGap', `sxHeight',     */
370cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*    `usWinAscent', `usWinDescent', `yStrikeoutPosition',               */
371cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*    `yStrikeoutSize', `ySubscriptXOffset', `ySubScriptXSize',          */
372cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*    `ySubscriptYOffset', `ySubscriptYSize', `ySuperscriptXOffset',     */
373cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*    `ySuperscriptXSize', `ySuperscriptYOffset', and                    */
374cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*    `ySuperscriptYSize'.                                               */
3758013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*                                                                       */
3768013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    Possible values for bits in the `ulUnicodeRangeX' fields are given */
3778013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    by the @TT_UCR_XXX macros.                                         */
3788013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*                                                                       */
379cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg
380ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  typedef struct  TT_OS2_
381ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  {
382ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_UShort  version;                /* 0x0001 - more or 0xFFFF */
383ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   xAvgCharWidth;
384ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_UShort  usWeightClass;
385ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_UShort  usWidthClass;
38610aa8585932c08f048684231acb6fe1030152338Werner Lemberg    FT_UShort  fsType;
387ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   ySubscriptXSize;
388ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   ySubscriptYSize;
389ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   ySubscriptXOffset;
390ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   ySubscriptYOffset;
391ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   ySuperscriptXSize;
392ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   ySuperscriptYSize;
393ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   ySuperscriptXOffset;
394ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   ySuperscriptYOffset;
395ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   yStrikeoutSize;
396ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   yStrikeoutPosition;
397ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   sFamilyClass;
398ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
399ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Byte    panose[10];
400ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
401ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_ULong   ulUnicodeRange1;        /* Bits 0-31   */
402ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_ULong   ulUnicodeRange2;        /* Bits 32-63  */
403ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_ULong   ulUnicodeRange3;        /* Bits 64-95  */
404ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_ULong   ulUnicodeRange4;        /* Bits 96-127 */
405ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
406ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Char    achVendID[4];
407ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
408ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_UShort  fsSelection;
409ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_UShort  usFirstCharIndex;
410ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_UShort  usLastCharIndex;
411ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   sTypoAscender;
412ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   sTypoDescender;
413ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short   sTypoLineGap;
414ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_UShort  usWinAscent;
415ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_UShort  usWinDescent;
416ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
4170c61c096b8155838cea11deb4e4af5db7c29fe73Werner Lemberg    /* only version 1 and higher: */
418ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
419ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_ULong   ulCodePageRange1;       /* Bits 0-31   */
420ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_ULong   ulCodePageRange2;       /* Bits 32-63  */
421ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
4220c61c096b8155838cea11deb4e4af5db7c29fe73Werner Lemberg    /* only version 2 and higher: */
4236cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg
42462c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner    FT_Short   sxHeight;
42562c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner    FT_Short   sCapHeight;
42662c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner    FT_UShort  usDefaultChar;
42762c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner    FT_UShort  usBreakChar;
42862c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner    FT_UShort  usMaxContext;
429e49ab25c0822e1043be29e836944c7886f4e8990David Turner
4300c61c096b8155838cea11deb4e4af5db7c29fe73Werner Lemberg    /* only version 5 and higher: */
431ee5105107b59049c5d012d7658810c8378c8f411Werner Lemberg
432bc25de66c112a9ff4722264330ada77b6e651408Werner Lemberg    FT_UShort  usLowerOpticalPointSize;       /* in twips (1/20th points) */
433bc25de66c112a9ff4722264330ada77b6e651408Werner Lemberg    FT_UShort  usUpperOpticalPointSize;       /* in twips (1/20th points) */
434ee5105107b59049c5d012d7658810c8378c8f411Werner Lemberg
435ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  } TT_OS2;
436ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
437ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
438ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*************************************************************************/
439ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
440ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /* <Struct>                                                              */
441ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*    TT_Postscript                                                      */
442ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
443ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /* <Description>                                                         */
4448013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    A structure to model a TrueType `post' table.  All fields comply   */
4458013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    to the OpenType specification.  This structure does not reference  */
4468013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    a font's PostScript glyph names; use @FT_Get_Glyph_Name to         */
4478013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    retrieve them.                                                     */
448ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  /*                                                                       */
449cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /* <Note>                                                                */
450cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*    For an OpenType variation font, the values of the following fields */
451cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*    can change after a call to @FT_Set_Var_Design_Coordinates (and     */
452cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*    friends) if the font contains an `MVAR' table: `underlinePosition' */
453cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*    and `underlineThickness'.                                          */
454cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*                                                                       */
455ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  typedef struct  TT_Postscript_
456ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  {
457ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Fixed  FormatType;
458ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Fixed  italicAngle;
459ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short  underlinePosition;
460ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_Short  underlineThickness;
461ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_ULong  isFixedPitch;
462ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_ULong  minMemType42;
463ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_ULong  maxMemType42;
464ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_ULong  minMemType1;
465ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner    FT_ULong  maxMemType1;
466ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
4678013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg    /* Glyph names follow in the `post' table, but we don't */
4688013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg    /* load them by default.                                */
469ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
470ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  } TT_Postscript;
471ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
4726cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg
47351179f0ae3a7bcb0d45c736df1189942e9fc99beDavid Turner  /*************************************************************************/
47451179f0ae3a7bcb0d45c736df1189942e9fc99beDavid Turner  /*                                                                       */
47551179f0ae3a7bcb0d45c736df1189942e9fc99beDavid Turner  /* <Struct>                                                              */
47651179f0ae3a7bcb0d45c736df1189942e9fc99beDavid Turner  /*    TT_PCLT                                                            */
47751179f0ae3a7bcb0d45c736df1189942e9fc99beDavid Turner  /*                                                                       */
47851179f0ae3a7bcb0d45c736df1189942e9fc99beDavid Turner  /* <Description>                                                         */
4798013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    A structure to model a TrueType `PCLT' table.  All fields comply   */
4808013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    to the OpenType specification.                                     */
48151179f0ae3a7bcb0d45c736df1189942e9fc99beDavid Turner  /*                                                                       */
4824a2305cf0c686d58273e264780b48b159e42f604Werner Lemberg  typedef struct  TT_PCLT_
48351179f0ae3a7bcb0d45c736df1189942e9fc99beDavid Turner  {
48451179f0ae3a7bcb0d45c736df1189942e9fc99beDavid Turner    FT_Fixed   Version;
4856cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg    FT_ULong   FontNumber;
4866cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg    FT_UShort  Pitch;
4876cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg    FT_UShort  xHeight;
4886cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg    FT_UShort  Style;
4896cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg    FT_UShort  TypeFamily;
4906cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg    FT_UShort  CapHeight;
4916cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg    FT_UShort  SymbolSet;
4926cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg    FT_Char    TypeFace[16];
4936cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg    FT_Char    CharacterComplement[8];
4946cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg    FT_Char    FileName[6];
4956cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg    FT_Char    StrokeWeight;
4966cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg    FT_Char    WidthType;
4976cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg    FT_Byte    SerifStyle;
4986cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg    FT_Byte    Reserved;
4995aa646c565b963d44e295162dbe27c039fdd2e1bWerner Lemberg
50051179f0ae3a7bcb0d45c736df1189942e9fc99beDavid Turner  } TT_PCLT;
501ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
5026cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg
50362c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*************************************************************************/
50462c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                                                                       */
50562c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /* <Struct>                                                              */
50662c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*    TT_MaxProfile                                                      */
50762c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                                                                       */
50862c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /* <Description>                                                         */
509cb937047965ee38f53c54daaa44b6ad9828cce64Werner Lemberg  /*    The maximum profile (`maxp') table contains many max values, which */
5108013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    can be used to pre-allocate arrays for speeding up glyph loading   */
5118013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    and hinting.                                                       */
51262c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                                                                       */
51362c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /* <Fields>                                                              */
51462c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*    version               :: The version number.                       */
51562c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                                                                       */
51662c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*    numGlyphs             :: The number of glyphs in this TrueType     */
51762c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                             font.                                     */
51862c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                                                                       */
51962c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*    maxPoints             :: The maximum number of points in a         */
52062c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                             non-composite TrueType glyph.  See also   */
52162c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                             `maxCompositePoints'.                     */
52262c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                                                                       */
52362c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*    maxContours           :: The maximum number of contours in a       */
52462c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                             non-composite TrueType glyph.  See also   */
52562c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                             `maxCompositeContours'.                   */
52662c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                                                                       */
52762c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*    maxCompositePoints    :: The maximum number of points in a         */
5288013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*                             composite TrueType glyph.  See also       */
5298013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*                             `maxPoints'.                              */
53062c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                                                                       */
53162c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*    maxCompositeContours  :: The maximum number of contours in a       */
5328013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*                             composite TrueType glyph.  See also       */
5338013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*                             `maxContours'.                            */
53462c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                                                                       */
53562c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*    maxZones              :: The maximum number of zones used for      */
53662c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                             glyph hinting.                            */
53762c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                                                                       */
53862c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*    maxTwilightPoints     :: The maximum number of points in the       */
53962c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                             twilight zone used for glyph hinting.     */
54062c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                                                                       */
54162c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*    maxStorage            :: The maximum number of elements in the     */
54262c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                             storage area used for glyph hinting.      */
54362c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                                                                       */
54462c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*    maxFunctionDefs       :: The maximum number of function            */
54562c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                             definitions in the TrueType bytecode for  */
54662c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                             this font.                                */
54762c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                                                                       */
54862c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*    maxInstructionDefs    :: The maximum number of instruction         */
54962c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                             definitions in the TrueType bytecode for  */
55062c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                             this font.                                */
55162c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                                                                       */
55262c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*    maxStackElements      :: The maximum number of stack elements used */
55362c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                             during bytecode interpretation.           */
55462c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                                                                       */
55562c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*    maxSizeOfInstructions :: The maximum number of TrueType opcodes    */
55662c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                             used for glyph hinting.                   */
55762c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                                                                       */
55844bb303510725735ca2650bdd524af25abab0c71Werner Lemberg  /*    maxComponentElements  :: The maximum number of simple (i.e., non-  */
55944bb303510725735ca2650bdd524af25abab0c71Werner Lemberg  /*                             composite) glyphs in a composite glyph.   */
56062c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                                                                       */
56144bb303510725735ca2650bdd524af25abab0c71Werner Lemberg  /*    maxComponentDepth     :: The maximum nesting depth of composite    */
56244bb303510725735ca2650bdd524af25abab0c71Werner Lemberg  /*                             glyphs.                                   */
56362c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                                                                       */
56462c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /* <Note>                                                                */
56562c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*    This structure is only used during font loading.                   */
56662c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  /*                                                                       */
56762c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  typedef struct  TT_MaxProfile_
56862c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  {
56962c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner    FT_Fixed   version;
57062c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner    FT_UShort  numGlyphs;
57162c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner    FT_UShort  maxPoints;
57262c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner    FT_UShort  maxContours;
57362c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner    FT_UShort  maxCompositePoints;
57462c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner    FT_UShort  maxCompositeContours;
57562c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner    FT_UShort  maxZones;
57662c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner    FT_UShort  maxTwilightPoints;
57762c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner    FT_UShort  maxStorage;
57862c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner    FT_UShort  maxFunctionDefs;
57962c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner    FT_UShort  maxInstructionDefs;
58062c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner    FT_UShort  maxStackElements;
58162c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner    FT_UShort  maxSizeOfInstructions;
58262c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner    FT_UShort  maxComponentElements;
58362c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner    FT_UShort  maxComponentDepth;
58462c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner
58562c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner  } TT_MaxProfile;
58662c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner
58762c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner
5886aa35cd5e836fb1ae7bf9b50ad7a53311f717265Werner Lemberg  /*************************************************************************/
5896aa35cd5e836fb1ae7bf9b50ad7a53311f717265Werner Lemberg  /*                                                                       */
5906aa35cd5e836fb1ae7bf9b50ad7a53311f717265Werner Lemberg  /* <Enum>                                                                */
5916aa35cd5e836fb1ae7bf9b50ad7a53311f717265Werner Lemberg  /*    FT_Sfnt_Tag                                                        */
5926aa35cd5e836fb1ae7bf9b50ad7a53311f717265Werner Lemberg  /*                                                                       */
5936aa35cd5e836fb1ae7bf9b50ad7a53311f717265Werner Lemberg  /* <Description>                                                         */
5948013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    An enumeration to specify indices of SFNT tables loaded and parsed */
5958013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    by FreeType during initialization of an SFNT font.  Used in the    */
5968013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    @FT_Get_Sfnt_Table API function.                                   */
5976aa35cd5e836fb1ae7bf9b50ad7a53311f717265Werner Lemberg  /*                                                                       */
59816188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg  /* <Values>                                                              */
59916188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg  /*    FT_SFNT_HEAD :: To access the font's @TT_Header structure.         */
60016188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg  /*                                                                       */
60116188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg  /*    FT_SFNT_MAXP :: To access the font's @TT_MaxProfile structure.     */
60216188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg  /*                                                                       */
60316188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg  /*    FT_SFNT_OS2  :: To access the font's @TT_OS2 structure.            */
60416188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg  /*                                                                       */
60516188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg  /*    FT_SFNT_HHEA :: To access the font's @TT_HoriHeader structure.     */
60616188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg  /*                                                                       */
60734207080c6e124356aee3db9aba2daeb00edf1b9Alexei Podtelezhnikov (Алексей Подтележников)  /*    FT_SFNT_VHEA :: To access the font's @TT_VertHeader structure.     */
60816188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg  /*                                                                       */
60916188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg  /*    FT_SFNT_POST :: To access the font's @TT_Postscript structure.     */
61016188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg  /*                                                                       */
61116188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg  /*    FT_SFNT_PCLT :: To access the font's @TT_PCLT structure.           */
61216188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg  /*                                                                       */
6132b0b4221abba6497e05183d58c6a36821b9cce06Werner Lemberg  typedef enum  FT_Sfnt_Tag_
614ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  {
61516188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg    FT_SFNT_HEAD,
61616188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg    FT_SFNT_MAXP,
61716188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg    FT_SFNT_OS2,
61816188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg    FT_SFNT_HHEA,
61916188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg    FT_SFNT_VHEA,
62016188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg    FT_SFNT_POST,
62116188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg    FT_SFNT_PCLT,
62262c7af635eaa1ac9edbba22c4c4ca853b23740bfDavid Turner
62316188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg    FT_SFNT_MAX
624e49ab25c0822e1043be29e836944c7886f4e8990David Turner
625ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner  } FT_Sfnt_Tag;
626ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
62716188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg  /* these constants are deprecated; use the corresponding `FT_Sfnt_Tag' */
62816188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg  /* values instead                                                      */
62916188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg#define ft_sfnt_head  FT_SFNT_HEAD
63016188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg#define ft_sfnt_maxp  FT_SFNT_MAXP
63116188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg#define ft_sfnt_os2   FT_SFNT_OS2
63216188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg#define ft_sfnt_hhea  FT_SFNT_HHEA
63316188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg#define ft_sfnt_vhea  FT_SFNT_VHEA
63416188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg#define ft_sfnt_post  FT_SFNT_POST
63516188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg#define ft_sfnt_pclt  FT_SFNT_PCLT
63616188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg
6376cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg
6386cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg  /*************************************************************************/
6396cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg  /*                                                                       */
6406cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg  /* <Function>                                                            */
6416cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg  /*    FT_Get_Sfnt_Table                                                  */
6426cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg  /*                                                                       */
6436cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg  /* <Description>                                                         */
6448013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    Return a pointer to a given SFNT table stored within a face.       */
6456cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg  /*                                                                       */
6466cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg  /* <Input>                                                               */
6476cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg  /*    face :: A handle to the source.                                    */
6486cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg  /*                                                                       */
6496cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg  /*    tag  :: The index of the SFNT table.                               */
6506cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg  /*                                                                       */
6516cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg  /* <Return>                                                              */
6528013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    A type-less pointer to the table.  This will be NULL in case of    */
6536cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg  /*    error, or if the corresponding table was not found *OR* loaded     */
6546cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg  /*    from the file.                                                     */
6556cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg  /*                                                                       */
656a546af7684b2b6fa0ed24fac10ed979d3bcd8909Werner Lemberg  /*    Use a typecast according to `tag' to access the structure          */
657a546af7684b2b6fa0ed24fac10ed979d3bcd8909Werner Lemberg  /*    elements.                                                          */
658a546af7684b2b6fa0ed24fac10ed979d3bcd8909Werner Lemberg  /*                                                                       */
6596cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg  /* <Note>                                                                */
6606cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg  /*    The table is owned by the face object and disappears with it.      */
6616cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg  /*                                                                       */
6626cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg  /*    This function is only useful to access SFNT tables that are loaded */
6636756dc15ba424186394ca3f295ba8d125b0f047eWerner Lemberg  /*    by the sfnt, truetype, and opentype drivers.  See @FT_Sfnt_Tag for */
664405e25949ce8446526b86436e6fec4ae4629d7d5Werner Lemberg  /*    a list.                                                            */
6656cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg  /*                                                                       */
66621332fb6257cce6bd7c3f9e9ddeb4436ce07a965Werner Lemberg  /*    Here an example how to access the `vhea' table:                    */
66721332fb6257cce6bd7c3f9e9ddeb4436ce07a965Werner Lemberg  /*                                                                       */
66821332fb6257cce6bd7c3f9e9ddeb4436ce07a965Werner Lemberg  /*    {                                                                  */
66921332fb6257cce6bd7c3f9e9ddeb4436ce07a965Werner Lemberg  /*      TT_VertHeader*  vert_header;                                     */
67021332fb6257cce6bd7c3f9e9ddeb4436ce07a965Werner Lemberg  /*                                                                       */
67121332fb6257cce6bd7c3f9e9ddeb4436ce07a965Werner Lemberg  /*                                                                       */
67221332fb6257cce6bd7c3f9e9ddeb4436ce07a965Werner Lemberg  /*      vert_header =                                                    */
67316188ebfac8f179bfeb32a6a3147b4264516bc79Werner Lemberg  /*        (TT_VertHeader*)FT_Get_Sfnt_Table( face, FT_SFNT_VHEA );       */
67421332fb6257cce6bd7c3f9e9ddeb4436ce07a965Werner Lemberg  /*    }                                                                  */
67521332fb6257cce6bd7c3f9e9ddeb4436ce07a965Werner Lemberg  /*                                                                       */
6764a2305cf0c686d58273e264780b48b159e42f604Werner Lemberg  FT_EXPORT( void* )
6774a2305cf0c686d58273e264780b48b159e42f604Werner Lemberg  FT_Get_Sfnt_Table( FT_Face      face,
6784a2305cf0c686d58273e264780b48b159e42f604Werner Lemberg                     FT_Sfnt_Tag  tag );
679ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
6803ae7cc997a270e9cbdf193e27d47168cd8da6276Werner Lemberg
6818013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /**************************************************************************
6828013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *
6838013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   * @function:
6848013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *   FT_Load_Sfnt_Table
6858013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *
6868013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   * @description:
6878013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *   Load any SFNT font table into client memory.
6888013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *
6898013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   * @input:
6908013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *   face ::
6918013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *     A handle to the source face.
6928013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *
6938013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *   tag ::
6948013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *     The four-byte tag of the table to load.  Use value~0 if you want
6958013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *     to access the whole font file.  Otherwise, you can use one of the
6968013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *     definitions found in the @FT_TRUETYPE_TAGS_H file, or forge a new
6978013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *     one with @FT_MAKE_TAG.
6988013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *
6998013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *   offset ::
7008013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *     The starting offset in the table (or file if tag~==~0).
7018013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *
7028013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   * @output:
7038013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *   buffer ::
7048013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *     The target buffer address.  The client must ensure that the memory
7058013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *     array is big enough to hold the data.
7068013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *
7078013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   * @inout:
7088013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *   length ::
7098013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *     If the `length' parameter is NULL, try to load the whole table.
7108013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *     Return an error code if it fails.
7118013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *
7128013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *     Else, if `*length' is~0, exit immediately while returning the
7138013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *     table's (or file) full size in it.
7148013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *
7158013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *     Else the number of bytes to read from the table or file, from the
7168013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *     starting offset.
7178013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *
7188013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   * @return:
7198013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *   FreeType error code.  0~means success.
7208013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *
7218013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   * @note:
7228013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *   If you need to determine the table's length you should first call this
7238013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *   function with `*length' set to~0, as in the following example:
7248013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *
7258013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *     {
7268013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *       FT_ULong  length = 0;
7278013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *
7288013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *
7298013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *       error = FT_Load_Sfnt_Table( face, tag, 0, NULL, &length );
7308013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *       if ( error ) { ... table does not exist ... }
7318013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *
7328013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *       buffer = malloc( length );
7338013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *       if ( buffer == NULL ) { ... not enough memory ... }
7348013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *
7358013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *       error = FT_Load_Sfnt_Table( face, tag, 0, buffer, &length );
7368013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *       if ( error ) { ... could not load table ... }
7378013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *     }
7388013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *
7398013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *   Note that structures like @TT_Header or @TT_OS2 can't be used with
7408013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *   this function; they are limited to @FT_Get_Sfnt_Table.  Reason is that
7418013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *   those structures depend on the processor architecture, with varying
7428013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *   size (e.g. 32bit vs. 64bit) or order (big endian vs. little endian).
7438013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *
7448013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   */
745621e4886223a6528fee553f6618ed1c22297ad19David Turner  FT_EXPORT( FT_Error )
7463ae7cc997a270e9cbdf193e27d47168cd8da6276Werner Lemberg  FT_Load_Sfnt_Table( FT_Face    face,
7473ae7cc997a270e9cbdf193e27d47168cd8da6276Werner Lemberg                      FT_ULong   tag,
7483ae7cc997a270e9cbdf193e27d47168cd8da6276Werner Lemberg                      FT_Long    offset,
7493ae7cc997a270e9cbdf193e27d47168cd8da6276Werner Lemberg                      FT_Byte*   buffer,
7503ae7cc997a270e9cbdf193e27d47168cd8da6276Werner Lemberg                      FT_ULong*  length );
751046f7a0c31cc6ab69483bc99df48f5977901e369David Turner
75291a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg
7538013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /**************************************************************************
7548013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *
7558013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   * @function:
7568013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *   FT_Sfnt_Table_Info
7578013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *
7588013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   * @description:
7598013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *   Return information on an SFNT table.
7608013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *
7618013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   * @input:
7628013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *   face ::
7638013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *     A handle to the source face.
7648013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *
7658013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *   table_index ::
7668013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *     The index of an SFNT table.  The function returns
7678013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *     FT_Err_Table_Missing for an invalid value.
7688013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *
7698013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   * @inout:
7708013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *   tag ::
7718013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *     The name tag of the SFNT table.  If the value is NULL, `table_index'
7728013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *     is ignored, and `length' returns the number of SFNT tables in the
7738013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *     font.
7748013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *
7758013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   * @output:
7768013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *   length ::
7778013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *     The length of the SFNT table (or the number of SFNT tables, depending
7788013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *     on `tag').
7798013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *
7808013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   * @return:
7818013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *   FreeType error code.  0~means success.
7828013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *
7838013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   * @note:
7848013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *   While parsing fonts, FreeType handles SFNT tables with length zero as
7858013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *   missing.
7868013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   *
7878013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg   */
78817439423f8a62e508647d5427c8171c0b229a081Werner Lemberg  FT_EXPORT( FT_Error )
78917439423f8a62e508647d5427c8171c0b229a081Werner Lemberg  FT_Sfnt_Table_Info( FT_Face    face,
79017439423f8a62e508647d5427c8171c0b229a081Werner Lemberg                      FT_UInt    table_index,
79117439423f8a62e508647d5427c8171c0b229a081Werner Lemberg                      FT_ULong  *tag,
79217439423f8a62e508647d5427c8171c0b229a081Werner Lemberg                      FT_ULong  *length );
79317439423f8a62e508647d5427c8171c0b229a081Werner Lemberg
79417439423f8a62e508647d5427c8171c0b229a081Werner Lemberg
79591a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg  /*************************************************************************/
79691a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg  /*                                                                       */
79791a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg  /* <Function>                                                            */
79891a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg  /*    FT_Get_CMap_Language_ID                                            */
79991a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg  /*                                                                       */
80091a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg  /* <Description>                                                         */
8018013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    Return cmap language ID as specified in the OpenType standard.     */
8028013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    Definitions of language ID values are in file @FT_TRUETYPE_IDS_H.  */
80391a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg  /*                                                                       */
80491a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg  /* <Input>                                                               */
80591a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg  /*    charmap ::                                                         */
80691a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg  /*      The target charmap.                                              */
80791a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg  /*                                                                       */
80891a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg  /* <Return>                                                              */
8098013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    The language ID of `charmap'.  If `charmap' doesn't belong to an   */
8108013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    SFNT face, just return~0 as the default value.                     */
81191a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg  /*                                                                       */
8123af607b07d8ac4014c2d6be93ac518a349500dc4Werner Lemberg  /*    For a format~14 cmap (to access Unicode IVS), the return value is  */
8133af607b07d8ac4014c2d6be93ac518a349500dc4Werner Lemberg  /*    0xFFFFFFFF.                                                        */
8143af607b07d8ac4014c2d6be93ac518a349500dc4Werner Lemberg  /*                                                                       */
81591a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg  FT_EXPORT( FT_ULong )
81691a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg  FT_Get_CMap_Language_ID( FT_CharMap  charmap );
81791a67478ec4a8ef0a7363f4728dd6c06be1ca92fWerner Lemberg
818b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg
819b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg  /*************************************************************************/
820b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg  /*                                                                       */
821b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg  /* <Function>                                                            */
822b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg  /*    FT_Get_CMap_Format                                                 */
823b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg  /*                                                                       */
824b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg  /* <Description>                                                         */
8258013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    Return the format of an SFNT `cmap' table.                         */
826b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg  /*                                                                       */
827b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg  /* <Input>                                                               */
828b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg  /*    charmap ::                                                         */
829b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg  /*      The target charmap.                                              */
830b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg  /*                                                                       */
831b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg  /* <Return>                                                              */
8328013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    The format of `charmap'.  If `charmap' doesn't belong to an SFNT   */
8338013d89f7fe7da123e3cd5708e501caf88405226Werner Lemberg  /*    face, return -1.                                                   */
834b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg  /*                                                                       */
835b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg  FT_EXPORT( FT_Long )
836b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg  FT_Get_CMap_Format( FT_CharMap  charmap );
837b826fa7589291a5bb1b725eeec73955e89361e22Werner Lemberg
83818b55f7bbc39f92877f825326441c13f8aaf5e80David Turner  /* */
83918b55f7bbc39f92877f825326441c13f8aaf5e80David Turner
84038208a6e6b07c8d3e144632c33833e16023b410bWerner Lemberg
8418fba32d2d6f284bfd49ed6c0557880e0bb692f49David TurnerFT_END_HEADER
842ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
84337412ff9f42212bcf4dd29d9762f3c35b5735768Werner Lemberg#endif /* TTTABLES_H_ */
844ffd43a6fc86c32c6e0b406fd7bdcac0804ac2b11David Turner
8456cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg
8466cca5578b64e279f74e43a024b61eea89b0b3004Werner Lemberg/* END */
847