1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/
2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  t1tables.h                                                             */
4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*    Basic Type 1/Type 2 tables definitions and interface (specification  */
6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*    only).                                                               */
7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
8e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov/*  Copyright 1996-2004, 2006, 2008, 2009, 2011, 2014 by                   */
9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  This file is part of the FreeType project, and may only be used,       */
12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  modified, and distributed under the terms of the FreeType project      */
13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  this file you indicate that you have read the license and              */
15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  understand and accept it fully.                                        */
16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/
18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef __T1TABLES_H__
21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define __T1TABLES_H__
22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
24e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include <ft2build.h>
25e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include FT_FREETYPE_H
26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef FREETYPE_H
28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#error "freetype.h of FreeType 1 has been loaded!"
29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#error "Please fix the directory search order for header files"
30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#error "so that freetype.h of FreeType 2 is found first."
31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
34ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFT_BEGIN_HEADER
35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Section>                                                             */
40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    type1_tables                                                       */
41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Title>                                                               */
43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Type 1 Tables                                                      */
44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Abstract>                                                            */
46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Type~1 (PostScript) specific font tables.                          */
47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    This section contains the definition of Type 1-specific tables,    */
50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    including structures related to other PostScript font formats.     */
51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
52e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /* <Order>                                                               */
53e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_FontInfoRec                                                     */
54e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_FontInfo                                                        */
55e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_PrivateRec                                                      */
56e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_Private                                                         */
57e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*                                                                       */
58e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    CID_FaceDictRec                                                    */
59e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    CID_FaceDict                                                       */
60e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    CID_FaceInfoRec                                                    */
61e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    CID_FaceInfo                                                       */
62e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*                                                                       */
63e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    FT_Has_PS_Glyph_Names                                              */
64e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    FT_Get_PS_Font_Info                                                */
65e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    FT_Get_PS_Font_Private                                             */
66e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    FT_Get_PS_Font_Value                                               */
67e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*                                                                       */
68e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    T1_Blend_Flags                                                     */
69e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    T1_EncodingType                                                    */
70e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_Dict_Keys                                                       */
71e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*                                                                       */
72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* Note that we separate font data in PS_FontInfoRec and PS_PrivateRec */
76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* structures in order to support Multiple Master fonts.               */
77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Struct>                                                              */
82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    PS_FontInfoRec                                                     */
83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    A structure used to model a Type~1 or Type~2 FontInfo dictionary.  */
86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Note that for Multiple Master fonts, each instance has its own     */
87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FontInfo dictionary.                                               */
88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef struct  PS_FontInfoRec_
90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  {
91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_String*  version;
92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_String*  notice;
93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_String*  full_name;
94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_String*  family_name;
95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_String*  weight;
96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Long     italic_angle;
97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Bool     is_fixed_pitch;
98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Short    underline_position;
99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_UShort   underline_thickness;
100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  } PS_FontInfoRec;
102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Struct>                                                              */
107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    PS_FontInfo                                                        */
108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    A handle to a @PS_FontInfoRec structure.                           */
111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef struct PS_FontInfoRec_*  PS_FontInfo;
113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Struct>                                                              */
118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    T1_FontInfo                                                        */
119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    This type is equivalent to @PS_FontInfoRec.  It is deprecated but  */
122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    kept to maintain source compatibility between various versions of  */
123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    FreeType.                                                          */
124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef PS_FontInfoRec  T1_FontInfo;
126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Struct>                                                              */
131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    PS_PrivateRec                                                      */
132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    A structure used to model a Type~1 or Type~2 private dictionary.   */
135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Note that for Multiple Master fonts, each instance has its own     */
136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Private dictionary.                                                */
137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef struct  PS_PrivateRec_
139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  {
140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Int     unique_id;
141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Int     lenIV;
142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Byte    num_blue_values;
144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Byte    num_other_blues;
145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Byte    num_family_blues;
146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Byte    num_family_other_blues;
147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Short   blue_values[14];
149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Short   other_blues[10];
150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Short   family_blues      [14];
152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Short   family_other_blues[10];
153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Fixed   blue_scale;
155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Int     blue_shift;
156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Int     blue_fuzz;
157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_UShort  standard_width[1];
159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_UShort  standard_height[1];
160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Byte    num_snap_widths;
162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Byte    num_snap_heights;
163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Bool    force_bold;
164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Bool    round_stem_up;
165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Short   snap_widths [13];  /* including std width  */
167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Short   snap_heights[13];  /* including std height */
168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Fixed   expansion_factor;
170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Long    language_group;
172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Long    password;
173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Short   min_feature[2];
175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  } PS_PrivateRec;
177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Struct>                                                              */
182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    PS_Private                                                         */
183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    A handle to a @PS_PrivateRec structure.                            */
186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef struct PS_PrivateRec_*  PS_Private;
188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Struct>                                                              */
193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    T1_Private                                                         */
194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*   This type is equivalent to @PS_PrivateRec.  It is deprecated but    */
197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*   kept to maintain source compatibility between various versions of   */
198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*   FreeType.                                                           */
199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef PS_PrivateRec  T1_Private;
201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Enum>                                                                */
206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    T1_Blend_Flags                                                     */
207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    A set of flags used to indicate which fields are present in a      */
210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    given blend dictionary (font info or private).  Used to support    */
211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    Multiple Masters fonts.                                            */
212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
213e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /* <Values>                                                              */
214e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    T1_BLEND_UNDERLINE_POSITION ::                                     */
215e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    T1_BLEND_UNDERLINE_THICKNESS ::                                    */
216e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    T1_BLEND_ITALIC_ANGLE ::                                           */
217e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    T1_BLEND_BLUE_VALUES ::                                            */
218e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    T1_BLEND_OTHER_BLUES ::                                            */
219e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    T1_BLEND_STANDARD_WIDTH ::                                         */
220e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    T1_BLEND_STANDARD_HEIGHT ::                                        */
221e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    T1_BLEND_STEM_SNAP_WIDTHS ::                                       */
222e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    T1_BLEND_STEM_SNAP_HEIGHTS ::                                      */
223e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    T1_BLEND_BLUE_SCALE ::                                             */
224e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    T1_BLEND_BLUE_SHIFT ::                                             */
225e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    T1_BLEND_FAMILY_BLUES ::                                           */
226e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    T1_BLEND_FAMILY_OTHER_BLUES ::                                     */
227e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    T1_BLEND_FORCE_BOLD ::                                             */
228e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*                                                                       */
229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef enum  T1_Blend_Flags_
230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  {
231e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov    /* required fields in a FontInfo blend dictionary */
232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    T1_BLEND_UNDERLINE_POSITION = 0,
233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    T1_BLEND_UNDERLINE_THICKNESS,
234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    T1_BLEND_ITALIC_ANGLE,
235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
236e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov    /* required fields in a Private blend dictionary */
237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    T1_BLEND_BLUE_VALUES,
238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    T1_BLEND_OTHER_BLUES,
239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    T1_BLEND_STANDARD_WIDTH,
240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    T1_BLEND_STANDARD_HEIGHT,
241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    T1_BLEND_STEM_SNAP_WIDTHS,
242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    T1_BLEND_STEM_SNAP_HEIGHTS,
243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    T1_BLEND_BLUE_SCALE,
244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    T1_BLEND_BLUE_SHIFT,
245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    T1_BLEND_FAMILY_BLUES,
246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    T1_BLEND_FAMILY_OTHER_BLUES,
247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    T1_BLEND_FORCE_BOLD,
248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
249e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov    T1_BLEND_MAX    /* do not remove */
250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  } T1_Blend_Flags;
252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
254e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /* these constants are deprecated; use the corresponding */
255e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /* `T1_Blend_Flags' values instead                       */
256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define t1_blend_underline_position   T1_BLEND_UNDERLINE_POSITION
257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define t1_blend_underline_thickness  T1_BLEND_UNDERLINE_THICKNESS
258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define t1_blend_italic_angle         T1_BLEND_ITALIC_ANGLE
259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define t1_blend_blue_values          T1_BLEND_BLUE_VALUES
260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define t1_blend_other_blues          T1_BLEND_OTHER_BLUES
261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define t1_blend_standard_widths      T1_BLEND_STANDARD_WIDTH
262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define t1_blend_standard_height      T1_BLEND_STANDARD_HEIGHT
263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define t1_blend_stem_snap_widths     T1_BLEND_STEM_SNAP_WIDTHS
264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define t1_blend_stem_snap_heights    T1_BLEND_STEM_SNAP_HEIGHTS
265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define t1_blend_blue_scale           T1_BLEND_BLUE_SCALE
266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define t1_blend_blue_shift           T1_BLEND_BLUE_SHIFT
267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define t1_blend_family_blues         T1_BLEND_FAMILY_BLUES
268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define t1_blend_family_other_blues   T1_BLEND_FAMILY_OTHER_BLUES
269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define t1_blend_force_bold           T1_BLEND_FORCE_BOLD
270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define t1_blend_max                  T1_BLEND_MAX
271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
272e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /* */
273e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* maximum number of Multiple Masters designs, as defined in the spec */
276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define T1_MAX_MM_DESIGNS     16
277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* maximum number of Multiple Masters axes, as defined in the spec */
279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define T1_MAX_MM_AXIS        4
280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* maximum number of elements in a design map */
282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define T1_MAX_MM_MAP_POINTS  20
283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* this structure is used to store the BlendDesignMap entry for an axis */
286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef struct  PS_DesignMap_
287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  {
288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Byte    num_points;
289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Long*   design_points;
290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Fixed*  blend_points;
291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  } PS_DesignMapRec, *PS_DesignMap;
293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* backwards-compatible definition */
295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef PS_DesignMapRec  T1_DesignMap;
296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef struct  PS_BlendRec_
299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  {
300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_UInt          num_designs;
301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_UInt          num_axis;
302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_String*       axis_names[T1_MAX_MM_AXIS];
304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Fixed*        design_pos[T1_MAX_MM_DESIGNS];
305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DesignMapRec  design_map[T1_MAX_MM_AXIS];
306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Fixed*        weight_vector;
308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Fixed*        default_weight_vector;
309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_FontInfo      font_infos[T1_MAX_MM_DESIGNS + 1];
311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_Private       privates  [T1_MAX_MM_DESIGNS + 1];
312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_ULong         blend_bitflags;
314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_BBox*         bboxes    [T1_MAX_MM_DESIGNS + 1];
316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    /* since 2.3.0 */
318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    /* undocumented, optional: the default design instance;   */
320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    /* corresponds to default_weight_vector --                */
321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    /* num_default_design_vector == 0 means it is not present */
322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    /* in the font and associated metrics files               */
323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_UInt          default_design_vector[T1_MAX_MM_DESIGNS];
324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_UInt          num_default_design_vector;
325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  } PS_BlendRec, *PS_Blend;
327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* backwards-compatible definition */
330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef PS_BlendRec  T1_Blend;
331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Struct>                                                              */
336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    CID_FaceDictRec                                                    */
337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    A structure used to represent data in a CID top-level dictionary.  */
340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef struct  CID_FaceDictRec_
342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  {
343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_PrivateRec  private_dict;
344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_UInt        len_buildchar;
346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Fixed       forcebold_threshold;
347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Pos         stroke_width;
348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Fixed       expansion_factor;
349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Byte        paint_type;
351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Byte        font_type;
352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Matrix      font_matrix;
353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Vector      font_offset;
354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_UInt        num_subrs;
356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_ULong       subrmap_offset;
357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Int         sd_bytes;
358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  } CID_FaceDictRec;
360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Struct>                                                              */
365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    CID_FaceDict                                                       */
366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    A handle to a @CID_FaceDictRec structure.                          */
369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef struct CID_FaceDictRec_*  CID_FaceDict;
371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
373e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*************************************************************************/
374e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*                                                                       */
375e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /* <Struct>                                                              */
376e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    CID_FontDict                                                       */
377e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*                                                                       */
378e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /* <Description>                                                         */
379e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    This type is equivalent to @CID_FaceDictRec.  It is deprecated but */
380e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    kept to maintain source compatibility between various versions of  */
381e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    FreeType.                                                          */
382e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*                                                                       */
383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef CID_FaceDictRec  CID_FontDict;
384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Struct>                                                              */
389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    CID_FaceInfoRec                                                    */
390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    A structure used to represent CID Face information.                */
393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef struct  CID_FaceInfoRec_
395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  {
396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_String*      cid_font_name;
397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Fixed        cid_version;
398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Int          cid_font_type;
399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_String*      registry;
401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_String*      ordering;
402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Int          supplement;
403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_FontInfoRec  font_info;
405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_BBox         font_bbox;
406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_ULong        uid_base;
407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Int          num_xuid;
409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_ULong        xuid[16];
410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_ULong        cidmap_offset;
412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Int          fd_bytes;
413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Int          gd_bytes;
414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_ULong        cid_count;
415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Int          num_dicts;
417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CID_FaceDict    font_dicts;
418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_ULong        data_offset;
420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  } CID_FaceInfoRec;
422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Struct>                                                              */
427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    CID_FaceInfo                                                       */
428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    A handle to a @CID_FaceInfoRec structure.                          */
431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef struct CID_FaceInfoRec_*  CID_FaceInfo;
433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Struct>                                                              */
438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    CID_Info                                                           */
439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*   This type is equivalent to @CID_FaceInfoRec.  It is deprecated but  */
442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*   kept to maintain source compatibility between various versions of   */
443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*   FreeType.                                                           */
444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef CID_FaceInfoRec  CID_Info;
446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /************************************************************************
449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @function:
451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    FT_Has_PS_Glyph_Names
452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @description:
454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    Return true if a given face provides reliable PostScript glyph
455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    names.  This is similar to using the @FT_HAS_GLYPH_NAMES macro,
456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    except that certain fonts (mostly TrueType) contain incorrect
457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    glyph name tables.
458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    When this function returns true, the caller is sure that the glyph
460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    names returned by @FT_Get_Glyph_Name are reliable.
461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @input:
463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    face ::
464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       face handle
465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @return:
467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    Boolean.  True if glyph names are reliable.
468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   */
470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_EXPORT( FT_Int )
471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_Has_PS_Glyph_Names( FT_Face  face );
472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /************************************************************************
475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @function:
477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    FT_Get_PS_Font_Info
478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @description:
480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    Retrieve the @PS_FontInfoRec structure corresponding to a given
481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    PostScript font.
482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @input:
484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    face ::
485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       PostScript face handle.
486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @output:
488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    afont_info ::
489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       Output font info structure pointer.
490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @return:
492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    FreeType error code.  0~means success.
493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @note:
495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    The string pointers within the font info structure are owned by
496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    the face and don't need to be freed by the caller.
497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    If the font's format is not PostScript-based, this function will
499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    return the `FT_Err_Invalid_Argument' error code.
500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   */
502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_EXPORT( FT_Error )
503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_Get_PS_Font_Info( FT_Face      face,
504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                       PS_FontInfo  afont_info );
505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /************************************************************************
508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @function:
510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    FT_Get_PS_Font_Private
511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @description:
513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    Retrieve the @PS_PrivateRec structure corresponding to a given
514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    PostScript font.
515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @input:
517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    face ::
518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       PostScript face handle.
519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @output:
521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    afont_private ::
522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       Output private dictionary structure pointer.
523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @return:
525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    FreeType error code.  0~means success.
526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @note:
528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    The string pointers within the @PS_PrivateRec structure are owned by
529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    the face and don't need to be freed by the caller.
530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    If the font's format is not PostScript-based, this function returns
532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    the `FT_Err_Invalid_Argument' error code.
533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   */
535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_EXPORT( FT_Error )
536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_Get_PS_Font_Private( FT_Face     face,
537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                          PS_Private  afont_private );
538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Enum>                                                                */
543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    T1_EncodingType                                                    */
544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    An enumeration describing the `Encoding' entry in a Type 1         */
547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    dictionary.                                                        */
548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
549e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /* <Values>                                                              */
550e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    T1_ENCODING_TYPE_NONE ::                                           */
551e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    T1_ENCODING_TYPE_ARRAY ::                                          */
552e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    T1_ENCODING_TYPE_STANDARD ::                                       */
553e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    T1_ENCODING_TYPE_ISOLATIN1 ::                                      */
554e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    T1_ENCODING_TYPE_EXPERT ::                                         */
555e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*                                                                       */
556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef enum  T1_EncodingType_
557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  {
558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    T1_ENCODING_TYPE_NONE = 0,
559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    T1_ENCODING_TYPE_ARRAY,
560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    T1_ENCODING_TYPE_STANDARD,
561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    T1_ENCODING_TYPE_ISOLATIN1,
562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    T1_ENCODING_TYPE_EXPERT
563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  } T1_EncodingType;
565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*************************************************************************/
568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Enum>                                                                */
570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    PS_Dict_Keys                                                       */
571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* <Description>                                                         */
573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    An enumeration used in calls to @FT_Get_PS_Font_Value to identify  */
574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*    the Type~1 dictionary entry to retrieve.                           */
575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /*                                                                       */
576e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /* <Values>                                                              */
577e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_FONT_TYPE ::                                               */
578e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_FONT_MATRIX ::                                             */
579e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_FONT_BBOX ::                                               */
580e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_PAINT_TYPE ::                                              */
581e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_FONT_NAME ::                                               */
582e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_UNIQUE_ID ::                                               */
583e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_NUM_CHAR_STRINGS ::                                        */
584e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_CHAR_STRING_KEY ::                                         */
585e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_CHAR_STRING ::                                             */
586e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_ENCODING_TYPE ::                                           */
587e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_ENCODING_ENTRY ::                                          */
588e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_NUM_SUBRS ::                                               */
589e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_SUBR ::                                                    */
590e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_STD_HW ::                                                  */
591e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_STD_VW ::                                                  */
592e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_NUM_BLUE_VALUES ::                                         */
593e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_BLUE_VALUE ::                                              */
594e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_BLUE_FUZZ ::                                               */
595e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_NUM_OTHER_BLUES ::                                         */
596e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_OTHER_BLUE ::                                              */
597e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_NUM_FAMILY_BLUES ::                                        */
598e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_FAMILY_BLUE ::                                             */
599e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_NUM_FAMILY_OTHER_BLUES ::                                  */
600e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_FAMILY_OTHER_BLUE ::                                       */
601e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_BLUE_SCALE ::                                              */
602e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_BLUE_SHIFT ::                                              */
603e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_NUM_STEM_SNAP_H ::                                         */
604e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_STEM_SNAP_H ::                                             */
605e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_NUM_STEM_SNAP_V ::                                         */
606e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_STEM_SNAP_V ::                                             */
607e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_FORCE_BOLD ::                                              */
608e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_RND_STEM_UP ::                                             */
609e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_MIN_FEATURE ::                                             */
610e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_LEN_IV ::                                                  */
611e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_PASSWORD ::                                                */
612e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_LANGUAGE_GROUP ::                                          */
613e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_VERSION ::                                                 */
614e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_NOTICE ::                                                  */
615e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_FULL_NAME ::                                               */
616e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_FAMILY_NAME ::                                             */
617e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_WEIGHT ::                                                  */
618e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_IS_FIXED_PITCH ::                                          */
619e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_UNDERLINE_POSITION ::                                      */
620e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_UNDERLINE_THICKNESS ::                                     */
621e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_FS_TYPE ::                                                 */
622e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*    PS_DICT_ITALIC_ANGLE ::                                            */
623e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov  /*                                                                       */
624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef enum  PS_Dict_Keys_
625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  {
626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    /* conventionally in the font dictionary */
627ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_FONT_TYPE,              /* FT_Byte         */
628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_FONT_MATRIX,            /* FT_Fixed        */
629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_FONT_BBOX,              /* FT_Fixed        */
630ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_PAINT_TYPE,             /* FT_Byte         */
631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_FONT_NAME,              /* FT_String*      */
632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_UNIQUE_ID,              /* FT_Int          */
633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_NUM_CHAR_STRINGS,       /* FT_Int          */
634ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_CHAR_STRING_KEY,        /* FT_String*      */
635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_CHAR_STRING,            /* FT_String*      */
636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_ENCODING_TYPE,          /* T1_EncodingType */
637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_ENCODING_ENTRY,         /* FT_String*      */
638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
639ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    /* conventionally in the font Private dictionary */
640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_NUM_SUBRS,              /* FT_Int     */
641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_SUBR,                   /* FT_String* */
642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_STD_HW,                 /* FT_UShort  */
643ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_STD_VW,                 /* FT_UShort  */
644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_NUM_BLUE_VALUES,        /* FT_Byte    */
645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_BLUE_VALUE,             /* FT_Short   */
646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_BLUE_FUZZ,              /* FT_Int     */
647ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_NUM_OTHER_BLUES,        /* FT_Byte    */
648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_OTHER_BLUE,             /* FT_Short   */
649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_NUM_FAMILY_BLUES,       /* FT_Byte    */
650ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_FAMILY_BLUE,            /* FT_Short   */
651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_NUM_FAMILY_OTHER_BLUES, /* FT_Byte    */
652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_FAMILY_OTHER_BLUE,      /* FT_Short   */
653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_BLUE_SCALE,             /* FT_Fixed   */
654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_BLUE_SHIFT,             /* FT_Int     */
655ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_NUM_STEM_SNAP_H,        /* FT_Byte    */
656ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_STEM_SNAP_H,            /* FT_Short   */
657ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_NUM_STEM_SNAP_V,        /* FT_Byte    */
658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_STEM_SNAP_V,            /* FT_Short   */
659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_FORCE_BOLD,             /* FT_Bool    */
660ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_RND_STEM_UP,            /* FT_Bool    */
661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_MIN_FEATURE,            /* FT_Short   */
662ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_LEN_IV,                 /* FT_Int     */
663ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_PASSWORD,               /* FT_Long    */
664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_LANGUAGE_GROUP,         /* FT_Long    */
665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
666ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    /* conventionally in the font FontInfo dictionary */
667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_VERSION,                /* FT_String* */
668ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_NOTICE,                 /* FT_String* */
669ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_FULL_NAME,              /* FT_String* */
670ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_FAMILY_NAME,            /* FT_String* */
671ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_WEIGHT,                 /* FT_String* */
672ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_IS_FIXED_PITCH,         /* FT_Bool    */
673ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_UNDERLINE_POSITION,     /* FT_Short   */
674ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_UNDERLINE_THICKNESS,    /* FT_UShort  */
675ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_FS_TYPE,                /* FT_UShort  */
676ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_ITALIC_ANGLE,           /* FT_Long    */
677ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
678ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    PS_DICT_MAX = PS_DICT_ITALIC_ANGLE
679ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
680ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  } PS_Dict_Keys;
681ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
682ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
683ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /************************************************************************
684ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
685ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @function:
686ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    FT_Get_PS_Font_Value
687ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
688ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @description:
689ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    Retrieve the value for the supplied key from a PostScript font.
690ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
691ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @input:
692ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    face ::
693ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       PostScript face handle.
694ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
695ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    key ::
696ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       An enumeration value representing the dictionary key to retrieve.
697ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
698ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    idx ::
699ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       For array values, this specifies the index to be returned.
700ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
701ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    value ::
702ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       A pointer to memory into which to write the value.
703ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
704ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    valen_len ::
705ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       The size, in bytes, of the memory supplied for the value.
706ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
707ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @output:
708ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    value ::
709ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *       The value matching the above key, if it exists.
710ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
711ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @return:
712ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    The amount of memory (in bytes) required to hold the requested
713ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    value (if it exists, -1 otherwise).
714ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
715ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   * @note:
716ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    The values returned are not pointers into the internal structures of
717ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    the face, but are `fresh' copies, so that the memory containing them
718ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    belongs to the calling application.  This also enforces the
719ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    `read-only' nature of these values, i.e., this function cannot be
720ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    used to manipulate the face.
721ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
722ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    `value' is a void pointer because the values returned can be of
723ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    various types.
724ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
725ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    If either `value' is NULL or `value_len' is too small, just the
726ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    required memory size for the requested entry is returned.
727ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
728ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    The `idx' parameter is used, not only to retrieve elements of, for
729ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    example, the FontMatrix or FontBBox, but also to retrieve name keys
730ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    from the CharStrings dictionary, and the charstrings themselves.  It
731ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    is ignored for atomic values.
732ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
733ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    PS_DICT_BLUE_SCALE returns a value that is scaled up by 1000.  To
734ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    get the value as in the font stream, you need to divide by
735ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    65536000.0 (to remove the FT_Fixed scale, and the x1000 scale).
736ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
737ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    IMPORTANT: Only key/value pairs read by the FreeType interpreter can
738ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    be retrieved.  So, for example, PostScript procedures such as NP,
739ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    ND, and RD are not available.  Arbitrary keys are, obviously, not be
740ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    available either.
741ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
742ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    If the font's format is not PostScript-based, this function returns
743ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *    the `FT_Err_Invalid_Argument' error code.
744ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   *
745ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   */
746ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_EXPORT( FT_Long )
747ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_Get_PS_Font_Value( FT_Face       face,
748ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                        PS_Dict_Keys  key,
749ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                        FT_UInt       idx,
750ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                        void         *value,
751ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                        FT_Long       value_len );
752ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
753ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* */
754ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
755ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFT_END_HEADER
756ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
757ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* __T1TABLES_H__ */
758ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
759ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
760ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* END */
761