1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/
2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  ttobjs.h                                                               */
4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*    Objects manager (specification).                                     */
6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
7a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang/*  Copyright 1996-2009, 2011-2013 by                                      */
8049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
9049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
10049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  This file is part of the FreeType project, and may only be used,       */
11049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  modified, and distributed under the terms of the FreeType project      */
12049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
13049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  this file you indicate that you have read the license and              */
14049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*  understand and accept it fully.                                        */
15049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*                                                                         */
16049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/
17049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
18049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
19049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef __TTOBJS_H__
20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define __TTOBJS_H__
21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <ft2build.h>
24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_INTERNAL_OBJECTS_H
25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_INTERNAL_TRUETYPE_TYPES_H
26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_BEGIN_HEADER
29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Type>                                                                */
34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    TT_Driver                                                          */
35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    A handle to a TrueType driver object.                              */
38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct TT_DriverRec_*  TT_Driver;
40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Type>                                                                */
45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    TT_Instance                                                        */
46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    A handle to a TrueType size object.                                */
49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct TT_SizeRec_*  TT_Size;
51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Type>                                                                */
56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    TT_GlyphSlot                                                       */
57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    A handle to a TrueType glyph slot object.                          */
60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Note>                                                                */
62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    This is a direct typedef of FT_GlyphSlot, as there is nothing      */
63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    specific about the TrueType glyph slot.                            */
64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef FT_GlyphSlot  TT_GlyphSlot;
66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Struct>                                                              */
71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    TT_GraphicsState                                                   */
72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* <Description>                                                         */
74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*    The TrueType graphics state used during bytecode interpretation.   */
75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct  TT_GraphicsState_
77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_UShort      rp0;
79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_UShort      rp1;
80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_UShort      rp2;
81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_UnitVector  dualVector;
83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_UnitVector  projVector;
84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_UnitVector  freeVector;
85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING
87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Bool        both_x_axis;
88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif
89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Long        loop;
91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_F26Dot6     minimum_distance;
92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Int         round_state;
93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Bool        auto_flip;
95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_F26Dot6     control_value_cutin;
96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_F26Dot6     single_width_cutin;
97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_F26Dot6     single_width_value;
98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Short       delta_base;
99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Short       delta_shift;
100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Byte        instruct_control;
1020a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project    /* According to Greg Hitchcock from Microsoft, the `scan_control'     */
1030a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project    /* variable as documented in the TrueType specification is a 32-bit   */
1040a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project    /* integer; the high-word part holds the SCANTYPE value, the low-word */
1050a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project    /* part the SCANCTRL value.  We separate it into two fields.          */
106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Bool        scan_control;
107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Int         scan_type;
108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_UShort      gep0;
110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_UShort      gep1;
111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_UShort      gep2;
112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } TT_GraphicsState;
114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef TT_USE_BYTECODE_INTERPRETER
117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_LOCAL( void )
119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  tt_glyphzone_done( TT_GlyphZone  zone );
120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_LOCAL( FT_Error )
122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  tt_glyphzone_new( FT_Memory     memory,
123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                    FT_UShort     maxPoints,
124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                    FT_Short      maxContours,
125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                    TT_GlyphZone  zone );
126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* TT_USE_BYTECODE_INTERPRETER */
128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*  EXECUTION SUBTABLES                                                  */
134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*  These sub-tables relate to instruction execution.                    */
136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define TT_MAX_CODE_RANGES  3
141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* There can only be 3 active code ranges at once:                       */
146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*   - the Font Program                                                  */
147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*   - the CVT Program                                                   */
148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*   - a glyph's instructions set                                        */
149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef enum  TT_CodeRange_Tag_
151049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    tt_coderange_none = 0,
153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    tt_coderange_font,
154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    tt_coderange_cvt,
155049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    tt_coderange_glyph
156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } TT_CodeRange_Tag;
158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct  TT_CodeRange_
161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Byte*  base;
163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_ULong  size;
164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } TT_CodeRange;
166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef TT_CodeRange  TT_CodeRangeTable[TT_MAX_CODE_RANGES];
168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* Defines a function/instruction definition record.                     */
173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct  TT_DefRecord_
175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
176a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang    FT_Int    range;          /* in which code range is it located?     */
177a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang    FT_Long   start;          /* where does it start?                   */
178a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang    FT_Long   end;            /* where does it end?                     */
179a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang    FT_UInt   opc;            /* function #, or instruction code        */
180a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang    FT_Bool   active;         /* is it active?                          */
181a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang    FT_Bool   inline_delta;   /* is function that defines inline delta? */
182a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang    FT_ULong  sph_fdef_flags; /* flags to identify special functions    */
183049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } TT_DefRecord, *TT_DefArray;
185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
186049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
187049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
188049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
189049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* Subglyph transformation record.                                       */
190049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
191049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct  TT_Transform_
192049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
193049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Fixed    xx, xy;     /* transformation matrix coefficients */
194049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Fixed    yx, yy;
195a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang    FT_F26Dot6  ox, oy;     /* offsets                            */
196049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
197049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } TT_Transform;
198049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
199049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
200049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
201049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
202049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* A note regarding non-squared pixels:                                  */
203049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
204049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* (This text will probably go into some docs at some time; for now, it  */
205295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner  /* is kept here to explain some definitions in the TT_Size_Metrics       */
206295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner  /* record).                                                              */
207049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
208049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* The CVT is a one-dimensional array containing values that control     */
209049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* certain important characteristics in a font, like the height of all   */
210049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* capitals, all lowercase letter, default spacing or stem width/height. */
211049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
212049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* These values are found in FUnits in the font file, and must be scaled */
213049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* to pixel coordinates before being used by the CVT and glyph programs. */
214049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* Unfortunately, when using distinct x and y resolutions (or distinct x */
215049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* and y pointsizes), there are two possible scalings.                   */
216049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
217049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* A first try was to implement a `lazy' scheme where all values were    */
218049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* scaled when first used.  However, while some values are always used   */
219049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* in the same direction, some others are used under many different      */
220049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* circumstances and orientations.                                       */
221049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
222049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* I have found a simpler way to do the same, and it even seems to work  */
223049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* in most of the cases:                                                 */
224049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
225049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* - All CVT values are scaled to the maximum ppem size.                 */
226049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
227049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* - When performing a read or write in the CVT, a ratio factor is used  */
228049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*   to perform adequate scaling.  Example:                              */
229049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
230049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*     x_ppem = 14                                                       */
231049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*     y_ppem = 10                                                       */
232049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
233049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*   We choose ppem = x_ppem = 14 as the CVT scaling size.  All cvt      */
234049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*   entries are scaled to it.                                           */
235049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
236049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*     x_ratio = 1.0                                                     */
237049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*     y_ratio = y_ppem/ppem (< 1.0)                                     */
238049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
239049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*   We compute the current ratio like:                                  */
240049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
241049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*   - If projVector is horizontal,                                      */
242049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*       ratio = x_ratio = 1.0                                           */
243049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
244049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*   - if projVector is vertical,                                        */
245049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*       ratio = y_ratio                                                 */
246049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
247049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*   - else,                                                             */
248049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*       ratio = sqrt( (proj.x * x_ratio) ^ 2 + (proj.y * y_ratio) ^ 2 ) */
249049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
250049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*   Reading a cvt value returns                                         */
251049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*     ratio * cvt[index]                                                */
252049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
253049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*   Writing a cvt value in pixels:                                      */
254049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*     cvt[index] / ratio                                                */
255049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
256049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*   The current ppem is simply                                          */
257049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*     ratio * ppem                                                      */
258049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
259049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
260049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
261049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
262049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
263049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
264049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* Metrics used by the TrueType size and context objects.                */
265049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
266049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct  TT_Size_Metrics_
267049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
268049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    /* for non-square pixels */
269049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Long     x_ratio;
270049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Long     y_ratio;
271049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
272049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_UShort   ppem;               /* maximum ppem size              */
273049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Long     ratio;              /* current ratio                  */
274049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Fixed    scale;
275049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
276049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_F26Dot6  compensations[4];   /* device-specific compensations  */
277049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
278049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Bool     valid;
279049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
280049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Bool     rotated;            /* `is the glyph rotated?'-flag   */
281049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Bool     stretched;          /* `is the glyph stretched?'-flag */
282049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
283049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } TT_Size_Metrics;
284049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
285049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
286049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
287049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
288049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* TrueType size class.                                                  */
289049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
290049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct  TT_SizeRec_
291049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
292049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_SizeRec         root;
293049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
294049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    /* we have our own copy of metrics so that we can modify */
295049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    /* it without affecting auto-hinting (when used)         */
296049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Size_Metrics    metrics;
297049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
298049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    TT_Size_Metrics    ttmetrics;
299049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
300049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_ULong           strike_index;      /* 0xFFFFFFFF to indicate invalid */
301049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
302049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef TT_USE_BYTECODE_INTERPRETER
303049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
304049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_UInt            num_function_defs; /* number of function definitions */
305049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_UInt            max_function_defs;
306049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    TT_DefArray        function_defs;     /* table of function definitions  */
307049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
308049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_UInt            num_instruction_defs;  /* number of ins. definitions */
309049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_UInt            max_instruction_defs;
310049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    TT_DefArray        instruction_defs;      /* table of ins. definitions  */
311049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
312049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_UInt            max_func;
313049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_UInt            max_ins;
314049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
315049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    TT_CodeRangeTable  codeRangeTable;
316049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
317049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    TT_GraphicsState   GS;
318049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
319049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_ULong           cvt_size;      /* the scaled control value table */
320049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Long*           cvt;
321049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
322049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_UShort          storage_size; /* The storage area is now part of */
323049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Long*           storage;      /* the instance                    */
324049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
325049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    TT_GlyphZoneRec    twilight;     /* The instance's twilight zone    */
326049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
327049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    /* debugging variables */
328049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
329049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    /* When using the debugger, we must keep the */
330049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    /* execution context tied to the instance    */
331049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    /* object rather than asking it on demand.   */
332049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
333049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Bool            debug;
334049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    TT_ExecContext     context;
335049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
336049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Bool            bytecode_ready;
337049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    FT_Bool            cvt_ready;
338049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
339049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* TT_USE_BYTECODE_INTERPRETER */
340049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
341049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } TT_SizeRec;
342049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
343049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
344049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
345049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
346049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* TrueType driver class.                                                */
347049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
348049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  typedef struct  TT_DriverRec_
349049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  {
350a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang    FT_DriverRec  root;
351a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang
352049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    TT_ExecContext   context;  /* execution context        */
353049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    TT_GlyphZoneRec  zone;     /* glyph loader points zone */
354049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
355a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang    FT_UInt  interpreter_version;
356049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
357049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  } TT_DriverRec;
358049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
359049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
360049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* Note: All of the functions below (except tt_size_reset()) are used    */
361049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* as function pointers in a FT_Driver_ClassRec.  Therefore their        */
362049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* parameters are of types FT_Face, FT_Size, etc., rather than TT_Face,  */
363049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* TT_Size, etc., so that the compiler can confirm that the types and    */
364049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* number of parameters are correct.  In all cases the FT_xxx types are  */
365049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* cast to their TT_xxx counterparts inside the functions since FreeType */
366049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* will always use the TT driver to create them.                         */
367049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
368049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
369049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
370049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
371049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* Face functions                                                        */
372049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
373049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_LOCAL( FT_Error )
374049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  tt_face_init( FT_Stream      stream,
375049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                FT_Face        ttface,      /* TT_Face */
376049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                FT_Int         face_index,
377049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                FT_Int         num_params,
378049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project                FT_Parameter*  params );
379049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
380049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_LOCAL( void )
381049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  tt_face_done( FT_Face  ttface );          /* TT_Face */
382049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
383049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
384049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
385049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
386049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* Size functions                                                        */
387049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
388049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_LOCAL( FT_Error )
389049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  tt_size_init( FT_Size  ttsize );          /* TT_Size */
390049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
391049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_LOCAL( void )
392049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  tt_size_done( FT_Size  ttsize );          /* TT_Size */
393049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
394049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef TT_USE_BYTECODE_INTERPRETER
395049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
396049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_LOCAL( FT_Error )
397c3ee10bfa1f76a18500b487de9c85757375b48f3David 'Digit' Turner  tt_size_run_fpgm( TT_Size  size,
398c3ee10bfa1f76a18500b487de9c85757375b48f3David 'Digit' Turner                    FT_Bool  pedantic );
399049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
400049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_LOCAL( FT_Error )
401c3ee10bfa1f76a18500b487de9c85757375b48f3David 'Digit' Turner  tt_size_run_prep( TT_Size  size,
402c3ee10bfa1f76a18500b487de9c85757375b48f3David 'Digit' Turner                    FT_Bool  pedantic );
403049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
404049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_LOCAL( FT_Error )
405c3ee10bfa1f76a18500b487de9c85757375b48f3David 'Digit' Turner  tt_size_ready_bytecode( TT_Size  size,
406c3ee10bfa1f76a18500b487de9c85757375b48f3David 'Digit' Turner                          FT_Bool  pedantic );
407049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
408049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* TT_USE_BYTECODE_INTERPRETER */
409049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
410049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_LOCAL( FT_Error )
411049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  tt_size_reset( TT_Size  size );
412049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
413049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
414049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
415049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
416049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* Driver functions                                                      */
417049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
418049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_LOCAL( FT_Error )
419049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  tt_driver_init( FT_Module  ttdriver );    /* TT_Driver */
420049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
421049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_LOCAL( void )
422049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  tt_driver_done( FT_Module  ttdriver );    /* TT_Driver */
423049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
424049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
425049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*************************************************************************/
426049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
427049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /* Slot functions                                                        */
428049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  /*                                                                       */
429049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  FT_LOCAL( FT_Error )
430049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  tt_slot_init( FT_GlyphSlot  slot );
431049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
432049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
433a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang  /* auxiliary */
434a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define IS_HINTED( flags )  ( ( flags & FT_LOAD_NO_HINTING ) == 0 )
435a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang
436a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang
437049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_END_HEADER
438049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
439049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* __TTOBJS_H__ */
440049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
441049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
442049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */
443