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