1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/
2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  sfnt.h                                                                 */
4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*    High-level `sfnt' driver interface (specification).                  */
6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  Copyright 1996-2006, 2009, 2012-2013 by                                */
8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  This file is part of the FreeType project, and may only be used,       */
11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  modified, and distributed under the terms of the FreeType project      */
12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  this file you indicate that you have read the license and              */
14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  understand and accept it fully.                                        */
15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/
17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef __SFNT_H__
20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define __SFNT_H__
21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../ft2build.h"
24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "ftdriver.h"
25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "tttypes.h"
26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
28ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFT_BEGIN_HEADER
29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <FuncType>                                                            */
34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    TT_Init_Face_Func                                                  */
35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    First part of the SFNT face object initialization.  This finds     */
38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    the face in a SFNT file or collection, and load its format tag in  */
39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    face->format_tag.                                                  */
40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Input>                                                               */
42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    stream     :: The input stream.                                    */
43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    face       :: A handle to the target face object.                  */
45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    face_index :: The index of the TrueType font, if we are opening a  */
47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                  collection.                                          */
48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    num_params :: The number of additional parameters.                 */
50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    params     :: Optional additional parameters.                      */
52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Return>                                                              */
54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FreeType error code.  0 means success.                             */
55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Note>                                                                */
57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    The stream cursor must be at the font file's origin.               */
58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    This function recognizes fonts embedded in a `TrueType             */
60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    collection'.                                                       */
61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Once the format tag has been validated by the font driver, it      */
63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    should then call the TT_Load_Face_Func() callback to read the rest */
64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    of the SFNT tables in the object.                                  */
65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef FT_Error
67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  (*TT_Init_Face_Func)( FT_Stream      stream,
68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                        TT_Face        face,
69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                        FT_Int         face_index,
70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                        FT_Int         num_params,
71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                        FT_Parameter*  params );
72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <FuncType>                                                            */
77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    TT_Load_Face_Func                                                  */
78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Second part of the SFNT face object initialization.  This loads    */
81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    the common SFNT tables (head, OS/2, maxp, metrics, etc.) in the    */
82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    face object.                                                       */
83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Input>                                                               */
85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    stream     :: The input stream.                                    */
86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    face       :: A handle to the target face object.                  */
88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    face_index :: The index of the TrueType font, if we are opening a  */
90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                  collection.                                          */
91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    num_params :: The number of additional parameters.                 */
93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    params     :: Optional additional parameters.                      */
95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Return>                                                              */
97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FreeType error code.  0 means success.                             */
98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Note>                                                                */
100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    This function must be called after TT_Init_Face_Func().            */
101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef FT_Error
103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  (*TT_Load_Face_Func)( FT_Stream      stream,
104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                        TT_Face        face,
105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                        FT_Int         face_index,
106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                        FT_Int         num_params,
107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                        FT_Parameter*  params );
108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <FuncType>                                                            */
113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    TT_Done_Face_Func                                                  */
114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    A callback used to delete the common SFNT data from a face.        */
117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Input>                                                               */
119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    face :: A handle to the target face object.                        */
120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Note>                                                                */
122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    This function does NOT destroy the face object.                    */
123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef void
125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  (*TT_Done_Face_Func)( TT_Face  face );
126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <FuncType>                                                            */
131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    TT_Load_Any_Func                                                   */
132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Load any font table into client memory.                            */
135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Input>                                                               */
137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    face   :: The face object to look for.                             */
138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    tag    :: The tag of table to load.  Use the value 0 if you want   */
140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*              to access the whole font file, else set this parameter   */
141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*              to a valid TrueType table tag that you can forge with    */
142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*              the MAKE_TT_TAG macro.                                   */
143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    offset :: The starting offset in the table (or the file if         */
145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*              tag == 0).                                               */
146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    length :: The address of the decision variable:                    */
148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                If length == NULL:                                     */
150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                  Loads the whole table.  Returns an error if          */
151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                  `offset' == 0!                                       */
152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                If *length == 0:                                       */
154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                  Exits immediately; returning the length of the given */
155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                  table or of the font file, depending on the value of */
156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                  `tag'.                                               */
157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                If *length != 0:                                       */
159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                  Loads the next `length' bytes of table or font,      */
160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                  starting at offset `offset' (in table or font too).  */
161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Output>                                                              */
163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    buffer :: The address of target buffer.                            */
164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Return>                                                              */
166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    TrueType error code.  0 means success.                             */
167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef FT_Error
169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  (*TT_Load_Any_Func)( TT_Face    face,
170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                       FT_ULong   tag,
171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                       FT_Long    offset,
172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                       FT_Byte   *buffer,
173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                       FT_ULong*  length );
174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <FuncType>                                                            */
179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    TT_Find_SBit_Image_Func                                            */
180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Check whether an embedded bitmap (an `sbit') exists for a given    */
183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    glyph, at a given strike.                                          */
184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Input>                                                               */
186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    face          :: The target face object.                           */
187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    glyph_index   :: The glyph index.                                  */
189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    strike_index  :: The current strike index.                         */
191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Output>                                                              */
193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    arange        :: The SBit range containing the glyph index.        */
194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    astrike       :: The SBit strike containing the glyph index.       */
196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    aglyph_offset :: The offset of the glyph data in `EBDT' table.     */
198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Return>                                                              */
200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FreeType error code.  0 means success.  Returns                    */
201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    SFNT_Err_Invalid_Argument if no sbit exists for the requested      */
202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    glyph.                                                             */
203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef FT_Error
205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  (*TT_Find_SBit_Image_Func)( TT_Face          face,
206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                              FT_UInt          glyph_index,
207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                              FT_ULong         strike_index,
208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                              TT_SBit_Range   *arange,
209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                              TT_SBit_Strike  *astrike,
210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                              FT_ULong        *aglyph_offset );
211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <FuncType>                                                            */
216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    TT_Load_SBit_Metrics_Func                                          */
217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Get the big metrics for a given embedded bitmap.                   */
220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Input>                                                               */
222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    stream      :: The input stream.                                   */
223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    range       :: The SBit range containing the glyph.                */
225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Output>                                                              */
227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    big_metrics :: A big SBit metrics structure for the glyph.         */
228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Return>                                                              */
230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FreeType error code.  0 means success.                             */
231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Note>                                                                */
233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    The stream cursor must be positioned at the glyph's offset within  */
234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    the `EBDT' table before the call.                                  */
235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    If the image format uses variable metrics, the stream cursor is    */
237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    positioned just after the metrics header in the `EBDT' table on    */
238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    function exit.                                                     */
239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef FT_Error
241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  (*TT_Load_SBit_Metrics_Func)( FT_Stream        stream,
242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                TT_SBit_Range    range,
243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                TT_SBit_Metrics  metrics );
244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <FuncType>                                                            */
249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    TT_Load_SBit_Image_Func                                            */
250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Load a given glyph sbit image from the font resource.  This also   */
253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    returns its metrics.                                               */
254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Input>                                                               */
256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    face ::                                                            */
257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      The target face object.                                          */
258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    strike_index ::                                                    */
260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      The strike index.                                                */
261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    glyph_index ::                                                     */
263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      The current glyph index.                                         */
264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    load_flags ::                                                      */
266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      The current load flags.                                          */
267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    stream ::                                                          */
269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      The input stream.                                                */
270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Output>                                                              */
272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    amap ::                                                            */
273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      The target pixmap.                                               */
274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    ametrics ::                                                        */
276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*      A big sbit metrics structure for the glyph image.                */
277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Return>                                                              */
279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FreeType error code.  0 means success.  Returns an error if no     */
280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    glyph sbit exists for the index.                                   */
281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*  <Note>                                                               */
283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    The `map.buffer' field is always freed before the glyph is loaded. */
284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef FT_Error
286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  (*TT_Load_SBit_Image_Func)( TT_Face              face,
287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                              FT_ULong             strike_index,
288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                              FT_UInt              glyph_index,
289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                              FT_UInt              load_flags,
290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                              FT_Stream            stream,
291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                              FT_Bitmap           *amap,
292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                              TT_SBit_MetricsRec  *ametrics );
293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <FuncType>                                                            */
298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    TT_Set_SBit_Strike_Func                                            */
299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Select an sbit strike for a given size request.                    */
302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Input>                                                               */
304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    face          :: The target face object.                           */
305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    req           :: The size request.                                 */
307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Output>                                                              */
309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    astrike_index :: The index of the sbit strike.                     */
310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Return>                                                              */
312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FreeType error code.  0 means success.  Returns an error if no     */
313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    sbit strike exists for the selected ppem values.                   */
314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef FT_Error
316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  (*TT_Set_SBit_Strike_Func)( TT_Face          face,
317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                              FT_Size_Request  req,
318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                              FT_ULong*        astrike_index );
319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <FuncType>                                                            */
324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    TT_Load_Strike_Metrics_Func                                        */
325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Load the metrics of a given strike.                                */
328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Input>                                                               */
330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    face          :: The target face object.                           */
331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    strike_index  :: The strike index.                                 */
333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Output>                                                              */
335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    metrics       :: the metrics of the strike.                        */
336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Return>                                                              */
338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FreeType error code.  0 means success.  Returns an error if no     */
339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    such sbit strike exists.                                           */
340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef FT_Error
342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  (*TT_Load_Strike_Metrics_Func)( TT_Face           face,
343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                  FT_ULong          strike_index,
344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                  FT_Size_Metrics*  metrics );
345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <FuncType>                                                            */
350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    TT_Get_PS_Name_Func                                                */
351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Get the PostScript glyph name of a glyph.                          */
354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Input>                                                               */
356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    idx  :: The glyph index.                                           */
357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    PSname :: The address of a string pointer.  Will be NULL in case   */
359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*              of error, otherwise it is a pointer to the glyph name.   */
360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*              You must not modify the returned string!                 */
362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Output>                                                              */
364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FreeType error code.  0 means success.                             */
365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef FT_Error
367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  (*TT_Get_PS_Name_Func)( TT_Face      face,
368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                          FT_UInt      idx,
369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                          FT_String**  PSname );
370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <FuncType>                                                            */
375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    TT_Load_Metrics_Func                                               */
376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Load a metrics table, which is a table with a horizontal and a     */
379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    vertical version.                                                  */
380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Input>                                                               */
382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    face     :: A handle to the target face object.                    */
383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    stream   :: The input stream.                                      */
385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    vertical :: A boolean flag.  If set, load the vertical one.        */
387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Return>                                                              */
389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FreeType error code.  0 means success.                             */
390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef FT_Error
392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  (*TT_Load_Metrics_Func)( TT_Face    face,
393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                           FT_Stream  stream,
394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                           FT_Bool    vertical );
395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <FuncType>                                                            */
400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    TT_Get_Metrics_Func                                                */
401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Load the horizontal or vertical header in a face object.           */
404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Input>                                                               */
406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    face     :: A handle to the target face object.                    */
407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    stream   :: The input stream.                                      */
409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    vertical :: A boolean flag.  If set, load vertical metrics.        */
411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Return>                                                              */
413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FreeType error code.  0 means success.                             */
414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef FT_Error
416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  (*TT_Get_Metrics_Func)( TT_Face     face,
417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                          FT_Bool     vertical,
418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                          FT_UInt     gindex,
419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                          FT_Short*   abearing,
420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                          FT_UShort*  aadvance );
421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <FuncType>                                                            */
426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    TT_Load_Table_Func                                                 */
427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Load a given TrueType table.                                       */
430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Input>                                                               */
432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    face   :: A handle to the target face object.                      */
433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    stream :: The input stream.                                        */
435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Return>                                                              */
437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FreeType error code.  0 means success.                             */
438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Note>                                                                */
440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    The function uses `face->goto_table' to seek the stream to the     */
441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    start of the table, except while loading the font directory.       */
442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef FT_Error
444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  (*TT_Load_Table_Func)( TT_Face    face,
445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                         FT_Stream  stream );
446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <FuncType>                                                            */
451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    TT_Free_Table_Func                                                 */
452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Free a given TrueType table.                                       */
455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Input>                                                               */
457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    face :: A handle to the target face object.                        */
458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef void
460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  (*TT_Free_Table_Func)( TT_Face  face );
461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*
464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @functype:
465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    TT_Face_GetKerningFunc
466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @description:
468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    Return the horizontal kerning value between two glyphs.
469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @input:
471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    face        :: A handle to the source face object.
472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    left_glyph  :: The left glyph index.
473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    right_glyph :: The right glyph index.
474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @return:
476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    The kerning value in font units.
477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   */
478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef FT_Int
479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  (*TT_Face_GetKerningFunc)( TT_Face  face,
480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                             FT_UInt  left_glyph,
481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                             FT_UInt  right_glyph );
482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Struct>                                                              */
487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    SFNT_Interface                                                     */
488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    This structure holds pointers to the functions used to load and    */
491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    free the basic tables that are required in a `sfnt' font file.     */
492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Fields>                                                              */
494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Check the various xxx_Func() descriptions for details.             */
495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef struct  SFNT_Interface_
497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  {
498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_Loader_GotoTableFunc      goto_table;
499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_Init_Face_Func            init_face;
501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_Load_Face_Func            load_face;
502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_Done_Face_Func            done_face;
503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Module_Requester          get_interface;
504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_Load_Any_Func             load_any;
506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    /* these functions are called by `load_face' but they can also  */
508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    /* be called from external modules, if there is a need to do so */
509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_Load_Table_Func           load_head;
510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_Load_Metrics_Func         load_hhea;
511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_Load_Table_Func           load_cmap;
512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_Load_Table_Func           load_maxp;
513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_Load_Table_Func           load_os2;
514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_Load_Table_Func           load_post;
515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_Load_Table_Func           load_name;
517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_Free_Table_Func           free_name;
518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    /* this field was called `load_kerning' up to version 2.1.10 */
520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_Load_Table_Func           load_kern;
521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_Load_Table_Func           load_gasp;
523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_Load_Table_Func           load_pclt;
524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    /* see `ttload.h'; this field was called `load_bitmap_header' up to */
526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    /* version 2.1.10                                                   */
527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_Load_Table_Func           load_bhed;
528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_Load_SBit_Image_Func      load_sbit_image;
530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    /* see `ttpost.h' */
532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_Get_PS_Name_Func          get_psname;
533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_Free_Table_Func           free_psnames;
534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    /* starting here, the structure differs from version 2.1.7 */
536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    /* this field was introduced in version 2.1.8, named `get_psname' */
538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_Face_GetKerningFunc       get_kerning;
539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    /* new elements introduced after version 2.1.10 */
541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    /* load the font directory, i.e., the offset table and */
543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    /* the table directory                                 */
544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_Load_Table_Func           load_font_dir;
545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_Load_Metrics_Func         load_hmtx;
546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_Load_Table_Func           load_eblc;
548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_Free_Table_Func           free_eblc;
549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_Set_SBit_Strike_Func      set_sbit_strike;
551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_Load_Strike_Metrics_Func  load_strike_metrics;
552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_Get_Metrics_Func          get_metrics;
554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  } SFNT_Interface;
556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* transitional */
559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef SFNT_Interface*   SFNT_Service;
560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef FT_CONFIG_OPTION_PIC
562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_DEFINE_SFNT_INTERFACE(        \
564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          class_,                        \
565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          goto_table_,                   \
566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          init_face_,                    \
567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_face_,                    \
568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          done_face_,                    \
569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          get_interface_,                \
570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_any_,                     \
571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_head_,                    \
572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_hhea_,                    \
573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_cmap_,                    \
574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_maxp_,                    \
575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_os2_,                     \
576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_post_,                    \
577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_name_,                    \
578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          free_name_,                    \
579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_kern_,                    \
580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_gasp_,                    \
581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_pclt_,                    \
582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_bhed_,                    \
583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_sbit_image_,              \
584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          get_psname_,                   \
585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          free_psnames_,                 \
586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          get_kerning_,                  \
587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_font_dir_,                \
588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_hmtx_,                    \
589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_eblc_,                    \
590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          free_eblc_,                    \
591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          set_sbit_strike_,              \
592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_strike_metrics_,          \
593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          get_metrics_ )                 \
594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  static const SFNT_Interface  class_ =  \
595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  {                                      \
596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    goto_table_,                         \
597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    init_face_,                          \
598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    load_face_,                          \
599ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    done_face_,                          \
600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    get_interface_,                      \
601ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    load_any_,                           \
602ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    load_head_,                          \
603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    load_hhea_,                          \
604ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    load_cmap_,                          \
605ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    load_maxp_,                          \
606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    load_os2_,                           \
607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    load_post_,                          \
608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    load_name_,                          \
609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    free_name_,                          \
610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    load_kern_,                          \
611ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    load_gasp_,                          \
612ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    load_pclt_,                          \
613ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    load_bhed_,                          \
614ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    load_sbit_image_,                    \
615ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    get_psname_,                         \
616ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    free_psnames_,                       \
617ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    get_kerning_,                        \
618ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    load_font_dir_,                      \
619ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    load_hmtx_,                          \
620ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    load_eblc_,                          \
621ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    free_eblc_,                          \
622ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    set_sbit_strike_,                    \
623ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    load_strike_metrics_,                \
624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    get_metrics_,                        \
625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  };
626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
627ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else /* FT_CONFIG_OPTION_PIC */
628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_INTERNAL( a, a_ )  \
630ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          clazz->a = a_;
631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_DEFINE_SFNT_INTERFACE(                       \
633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          class_,                                       \
634ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          goto_table_,                                  \
635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          init_face_,                                   \
636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_face_,                                   \
637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          done_face_,                                   \
638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          get_interface_,                               \
639ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_any_,                                    \
640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_head_,                                   \
641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_hhea_,                                   \
642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_cmap_,                                   \
643ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_maxp_,                                   \
644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_os2_,                                    \
645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_post_,                                   \
646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_name_,                                   \
647ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          free_name_,                                   \
648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_kern_,                                   \
649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_gasp_,                                   \
650ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_pclt_,                                   \
651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_bhed_,                                   \
652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_sbit_image_,                             \
653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          get_psname_,                                  \
654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          free_psnames_,                                \
655ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          get_kerning_,                                 \
656ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_font_dir_,                               \
657ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_hmtx_,                                   \
658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_eblc_,                                   \
659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          free_eblc_,                                   \
660ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          set_sbit_strike_,                             \
661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          load_strike_metrics_,                         \
662ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          get_metrics_ )                                \
663ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  void                                                  \
664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_Init_Class_ ## class_( FT_Library       library,   \
665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                            SFNT_Interface*  clazz )    \
666ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  {                                                     \
667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_UNUSED( library );                               \
668ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                        \
669ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->goto_table          = goto_table_;           \
670ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->init_face           = init_face_;            \
671ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->load_face           = load_face_;            \
672ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->done_face           = done_face_;            \
673ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->get_interface       = get_interface_;        \
674ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->load_any            = load_any_;             \
675ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->load_head           = load_head_;            \
676ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->load_hhea           = load_hhea_;            \
677ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->load_cmap           = load_cmap_;            \
678ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->load_maxp           = load_maxp_;            \
679ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->load_os2            = load_os2_;             \
680ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->load_post           = load_post_;            \
681ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->load_name           = load_name_;            \
682ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->free_name           = free_name_;            \
683ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->load_kern           = load_kern_;            \
684ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->load_gasp           = load_gasp_;            \
685ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->load_pclt           = load_pclt_;            \
686ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->load_bhed           = load_bhed_;            \
687ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->load_sbit_image     = load_sbit_image_;      \
688ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->get_psname          = get_psname_;           \
689ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->free_psnames        = free_psnames_;         \
690ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->get_kerning         = get_kerning_;          \
691ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->load_font_dir       = load_font_dir_;        \
692ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->load_hmtx           = load_hmtx_;            \
693ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->load_eblc           = load_eblc_;            \
694ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->free_eblc           = free_eblc_;            \
695ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->set_sbit_strike     = set_sbit_strike_;      \
696ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->load_strike_metrics = load_strike_metrics_;  \
697ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    clazz->get_metrics         = get_metrics_;          \
698ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  }
699ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
700ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* FT_CONFIG_OPTION_PIC */
701ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
702ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFT_END_HEADER
703ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
704ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* __SFNT_H__ */
705ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
706ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
707ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* END */
708