| 1 | /***************************************************************************/ | 
|---|
| 2 | /*                                                                         */ | 
|---|
| 3 | /*  tttables.h                                                             */ | 
|---|
| 4 | /*                                                                         */ | 
|---|
| 5 | /*    Basic SFNT/TrueType tables definitions and interface                 */ | 
|---|
| 6 | /*    (specification 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 TTTABLES_H_ | 
|---|
| 21 | #define TTTABLES_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 | /* <Section>                                                             */ | 
|---|
| 39 | /*    truetype_tables                                                    */ | 
|---|
| 40 | /*                                                                       */ | 
|---|
| 41 | /* <Title>                                                               */ | 
|---|
| 42 | /*    TrueType Tables                                                    */ | 
|---|
| 43 | /*                                                                       */ | 
|---|
| 44 | /* <Abstract>                                                            */ | 
|---|
| 45 | /*    TrueType specific table types and functions.                       */ | 
|---|
| 46 | /*                                                                       */ | 
|---|
| 47 | /* <Description>                                                         */ | 
|---|
| 48 | /*    This section contains definitions of some basic tables specific to */ | 
|---|
| 49 | /*    TrueType and OpenType as well as some routines used to access and  */ | 
|---|
| 50 | /*    process them.                                                      */ | 
|---|
| 51 | /*                                                                       */ | 
|---|
| 52 | /* <Order>                                                               */ | 
|---|
| 53 | /*    TT_Header                                                          */ | 
|---|
| 54 | /*    TT_HoriHeader                                                      */ | 
|---|
| 55 | /*    TT_VertHeader                                                      */ | 
|---|
| 56 | /*    TT_OS2                                                             */ | 
|---|
| 57 | /*    TT_Postscript                                                      */ | 
|---|
| 58 | /*    TT_PCLT                                                            */ | 
|---|
| 59 | /*    TT_MaxProfile                                                      */ | 
|---|
| 60 | /*                                                                       */ | 
|---|
| 61 | /*    FT_Sfnt_Tag                                                        */ | 
|---|
| 62 | /*    FT_Get_Sfnt_Table                                                  */ | 
|---|
| 63 | /*    FT_Load_Sfnt_Table                                                 */ | 
|---|
| 64 | /*    FT_Sfnt_Table_Info                                                 */ | 
|---|
| 65 | /*                                                                       */ | 
|---|
| 66 | /*    FT_Get_CMap_Language_ID                                            */ | 
|---|
| 67 | /*    FT_Get_CMap_Format                                                 */ | 
|---|
| 68 | /*                                                                       */ | 
|---|
| 69 | /*    FT_PARAM_TAG_UNPATENTED_HINTING                                    */ | 
|---|
| 70 | /*                                                                       */ | 
|---|
| 71 | /*************************************************************************/ | 
|---|
| 72 |  | 
|---|
| 73 |  | 
|---|
| 74 | /*************************************************************************/ | 
|---|
| 75 | /*                                                                       */ | 
|---|
| 76 | /* <Struct>                                                              */ | 
|---|
| 77 | /*    TT_Header                                                          */ | 
|---|
| 78 | /*                                                                       */ | 
|---|
| 79 | /* <Description>                                                         */ | 
|---|
| 80 | /*    A structure to model a TrueType font header table.  All fields     */ | 
|---|
| 81 | /*    follow the OpenType specification.                                 */ | 
|---|
| 82 | /*                                                                       */ | 
|---|
| 83 | typedef struct | 
|---|
| 84 | { | 
|---|
| 85 | FT_Fixed   ; | 
|---|
| 86 | FT_Fixed   ; | 
|---|
| 87 |  | 
|---|
| 88 | FT_Long    ; | 
|---|
| 89 | FT_Long    ; | 
|---|
| 90 |  | 
|---|
| 91 | FT_UShort  ; | 
|---|
| 92 | FT_UShort  ; | 
|---|
| 93 |  | 
|---|
| 94 | FT_Long     [2]; | 
|---|
| 95 | FT_Long    [2]; | 
|---|
| 96 |  | 
|---|
| 97 | FT_Short   ; | 
|---|
| 98 | FT_Short   ; | 
|---|
| 99 | FT_Short   ; | 
|---|
| 100 | FT_Short   ; | 
|---|
| 101 |  | 
|---|
| 102 | FT_UShort  ; | 
|---|
| 103 | FT_UShort  ; | 
|---|
| 104 |  | 
|---|
| 105 | FT_Short   ; | 
|---|
| 106 | FT_Short   ; | 
|---|
| 107 | FT_Short   ; | 
|---|
| 108 |  | 
|---|
| 109 | } ; | 
|---|
| 110 |  | 
|---|
| 111 |  | 
|---|
| 112 | /*************************************************************************/ | 
|---|
| 113 | /*                                                                       */ | 
|---|
| 114 | /* <Struct>                                                              */ | 
|---|
| 115 | /*    TT_HoriHeader                                                      */ | 
|---|
| 116 | /*                                                                       */ | 
|---|
| 117 | /* <Description>                                                         */ | 
|---|
| 118 | /*    A structure to model a TrueType horizontal header, the `hhea'      */ | 
|---|
| 119 | /*    table, as well as the corresponding horizontal metrics table,      */ | 
|---|
| 120 | /*    `hmtx'.                                                            */ | 
|---|
| 121 | /*                                                                       */ | 
|---|
| 122 | /* <Fields>                                                              */ | 
|---|
| 123 | /*    Version                :: The table version.                       */ | 
|---|
| 124 | /*                                                                       */ | 
|---|
| 125 | /*    Ascender               :: The font's ascender, i.e., the distance  */ | 
|---|
| 126 | /*                              from the baseline to the top-most of all */ | 
|---|
| 127 | /*                              glyph points found in the font.          */ | 
|---|
| 128 | /*                                                                       */ | 
|---|
| 129 | /*                              This value is invalid in many fonts, as  */ | 
|---|
| 130 | /*                              it is usually set by the font designer,  */ | 
|---|
| 131 | /*                              and often reflects only a portion of the */ | 
|---|
| 132 | /*                              glyphs found in the font (maybe ASCII).  */ | 
|---|
| 133 | /*                                                                       */ | 
|---|
| 134 | /*                              You should use the `sTypoAscender' field */ | 
|---|
| 135 | /*                              of the `OS/2' table instead if you want  */ | 
|---|
| 136 | /*                              the correct one.                         */ | 
|---|
| 137 | /*                                                                       */ | 
|---|
| 138 | /*    Descender              :: The font's descender, i.e., the distance */ | 
|---|
| 139 | /*                              from the baseline to the bottom-most of  */ | 
|---|
| 140 | /*                              all glyph points found in the font.  It  */ | 
|---|
| 141 | /*                              is negative.                             */ | 
|---|
| 142 | /*                                                                       */ | 
|---|
| 143 | /*                              This value is invalid in many fonts, as  */ | 
|---|
| 144 | /*                              it is usually set by the font designer,  */ | 
|---|
| 145 | /*                              and often reflects only a portion of the */ | 
|---|
| 146 | /*                              glyphs found in the font (maybe ASCII).  */ | 
|---|
| 147 | /*                                                                       */ | 
|---|
| 148 | /*                              You should use the `sTypoDescender'      */ | 
|---|
| 149 | /*                              field of the `OS/2' table instead if you */ | 
|---|
| 150 | /*                              want the correct one.                    */ | 
|---|
| 151 | /*                                                                       */ | 
|---|
| 152 | /*    Line_Gap               :: The font's line gap, i.e., the distance  */ | 
|---|
| 153 | /*                              to add to the ascender and descender to  */ | 
|---|
| 154 | /*                              get the BTB, i.e., the                   */ | 
|---|
| 155 | /*                              baseline-to-baseline distance for the    */ | 
|---|
| 156 | /*                              font.                                    */ | 
|---|
| 157 | /*                                                                       */ | 
|---|
| 158 | /*    advance_Width_Max      :: This field is the maximum of all advance */ | 
|---|
| 159 | /*                              widths found in the font.  It can be     */ | 
|---|
| 160 | /*                              used to compute the maximum width of an  */ | 
|---|
| 161 | /*                              arbitrary string of text.                */ | 
|---|
| 162 | /*                                                                       */ | 
|---|
| 163 | /*    min_Left_Side_Bearing  :: The minimum left side bearing of all     */ | 
|---|
| 164 | /*                              glyphs within the font.                  */ | 
|---|
| 165 | /*                                                                       */ | 
|---|
| 166 | /*    min_Right_Side_Bearing :: The minimum right side bearing of all    */ | 
|---|
| 167 | /*                              glyphs within the font.                  */ | 
|---|
| 168 | /*                                                                       */ | 
|---|
| 169 | /*    xMax_Extent            :: The maximum horizontal extent (i.e., the */ | 
|---|
| 170 | /*                              `width' of a glyph's bounding box) for   */ | 
|---|
| 171 | /*                              all glyphs in the font.                  */ | 
|---|
| 172 | /*                                                                       */ | 
|---|
| 173 | /*    caret_Slope_Rise       :: The rise coefficient of the cursor's     */ | 
|---|
| 174 | /*                              slope of the cursor (slope=rise/run).    */ | 
|---|
| 175 | /*                                                                       */ | 
|---|
| 176 | /*    caret_Slope_Run        :: The run coefficient of the cursor's      */ | 
|---|
| 177 | /*                              slope.                                   */ | 
|---|
| 178 | /*                                                                       */ | 
|---|
| 179 | /*    caret_Offset           :: The cursor's offset for slanted fonts.   */ | 
|---|
| 180 | /*                                                                       */ | 
|---|
| 181 | /*    Reserved               :: 8~reserved bytes.                        */ | 
|---|
| 182 | /*                                                                       */ | 
|---|
| 183 | /*    metric_Data_Format     :: Always~0.                                */ | 
|---|
| 184 | /*                                                                       */ | 
|---|
| 185 | /*    number_Of_HMetrics     :: Number of HMetrics entries in the `hmtx' */ | 
|---|
| 186 | /*                              table -- this value can be smaller than  */ | 
|---|
| 187 | /*                              the total number of glyphs in the font.  */ | 
|---|
| 188 | /*                                                                       */ | 
|---|
| 189 | /*    long_metrics           :: A pointer into the `hmtx' table.         */ | 
|---|
| 190 | /*                                                                       */ | 
|---|
| 191 | /*    short_metrics          :: A pointer into the `hmtx' table.         */ | 
|---|
| 192 | /*                                                                       */ | 
|---|
| 193 | /* <Note>                                                                */ | 
|---|
| 194 | /*    For an OpenType variation font, the values of the following fields */ | 
|---|
| 195 | /*    can change after a call to @FT_Set_Var_Design_Coordinates (and     */ | 
|---|
| 196 | /*    friends) if the font contains an `MVAR' table: `caret_Slope_Rise', */ | 
|---|
| 197 | /*    `caret_Slope_Run', and `caret_Offset'.                             */ | 
|---|
| 198 | /*                                                                       */ | 
|---|
| 199 | typedef struct | 
|---|
| 200 | { | 
|---|
| 201 | FT_Fixed   ; | 
|---|
| 202 | FT_Short   ; | 
|---|
| 203 | FT_Short   ; | 
|---|
| 204 | FT_Short   ; | 
|---|
| 205 |  | 
|---|
| 206 | FT_UShort  ;      /* advance width maximum */ | 
|---|
| 207 |  | 
|---|
| 208 | FT_Short   ;  /* minimum left-sb       */ | 
|---|
| 209 | FT_Short   ; /* minimum right-sb      */ | 
|---|
| 210 | FT_Short   ;            /* xmax extents          */ | 
|---|
| 211 | FT_Short   ; | 
|---|
| 212 | FT_Short   ; | 
|---|
| 213 | FT_Short   ; | 
|---|
| 214 |  | 
|---|
| 215 | FT_Short   [4]; | 
|---|
| 216 |  | 
|---|
| 217 | FT_Short   ; | 
|---|
| 218 | FT_UShort  ; | 
|---|
| 219 |  | 
|---|
| 220 | /* The following fields are not defined by the OpenType specification */ | 
|---|
| 221 | /* but they are used to connect the metrics header to the relevant    */ | 
|---|
| 222 | /* `hmtx' table.                                                      */ | 
|---|
| 223 |  | 
|---|
| 224 | void*      ; | 
|---|
| 225 | void*      ; | 
|---|
| 226 |  | 
|---|
| 227 | } ; | 
|---|
| 228 |  | 
|---|
| 229 |  | 
|---|
| 230 | /*************************************************************************/ | 
|---|
| 231 | /*                                                                       */ | 
|---|
| 232 | /* <Struct>                                                              */ | 
|---|
| 233 | /*    TT_VertHeader                                                      */ | 
|---|
| 234 | /*                                                                       */ | 
|---|
| 235 | /* <Description>                                                         */ | 
|---|
| 236 | /*    A structure used to model a TrueType vertical header, the `vhea'   */ | 
|---|
| 237 | /*    table, as well as the corresponding vertical metrics table,        */ | 
|---|
| 238 | /*    `vmtx'.                                                            */ | 
|---|
| 239 | /*                                                                       */ | 
|---|
| 240 | /* <Fields>                                                              */ | 
|---|
| 241 | /*    Version                 :: The table version.                      */ | 
|---|
| 242 | /*                                                                       */ | 
|---|
| 243 | /*    Ascender                :: The font's ascender, i.e., the distance */ | 
|---|
| 244 | /*                               from the baseline to the top-most of    */ | 
|---|
| 245 | /*                               all glyph points found in the font.     */ | 
|---|
| 246 | /*                                                                       */ | 
|---|
| 247 | /*                               This value is invalid in many fonts, as */ | 
|---|
| 248 | /*                               it is usually set by the font designer, */ | 
|---|
| 249 | /*                               and often reflects only a portion of    */ | 
|---|
| 250 | /*                               the glyphs found in the font (maybe     */ | 
|---|
| 251 | /*                               ASCII).                                 */ | 
|---|
| 252 | /*                                                                       */ | 
|---|
| 253 | /*                               You should use the `sTypoAscender'      */ | 
|---|
| 254 | /*                               field of the `OS/2' table instead if    */ | 
|---|
| 255 | /*                               you want the correct one.               */ | 
|---|
| 256 | /*                                                                       */ | 
|---|
| 257 | /*    Descender               :: The font's descender, i.e., the         */ | 
|---|
| 258 | /*                               distance from the baseline to the       */ | 
|---|
| 259 | /*                               bottom-most of all glyph points found   */ | 
|---|
| 260 | /*                               in the font.  It is negative.           */ | 
|---|
| 261 | /*                                                                       */ | 
|---|
| 262 | /*                               This value is invalid in many fonts, as */ | 
|---|
| 263 | /*                               it is usually set by the font designer, */ | 
|---|
| 264 | /*                               and often reflects only a portion of    */ | 
|---|
| 265 | /*                               the glyphs found in the font (maybe     */ | 
|---|
| 266 | /*                               ASCII).                                 */ | 
|---|
| 267 | /*                                                                       */ | 
|---|
| 268 | /*                               You should use the `sTypoDescender'     */ | 
|---|
| 269 | /*                               field of the `OS/2' table instead if    */ | 
|---|
| 270 | /*                               you want the correct one.               */ | 
|---|
| 271 | /*                                                                       */ | 
|---|
| 272 | /*    Line_Gap                :: The font's line gap, i.e., the distance */ | 
|---|
| 273 | /*                               to add to the ascender and descender to */ | 
|---|
| 274 | /*                               get the BTB, i.e., the                  */ | 
|---|
| 275 | /*                               baseline-to-baseline distance for the   */ | 
|---|
| 276 | /*                               font.                                   */ | 
|---|
| 277 | /*                                                                       */ | 
|---|
| 278 | /*    advance_Height_Max      :: This field is the maximum of all        */ | 
|---|
| 279 | /*                               advance heights found in the font.  It  */ | 
|---|
| 280 | /*                               can be used to compute the maximum      */ | 
|---|
| 281 | /*                               height of an arbitrary string of text.  */ | 
|---|
| 282 | /*                                                                       */ | 
|---|
| 283 | /*    min_Top_Side_Bearing    :: The minimum top side bearing of all     */ | 
|---|
| 284 | /*                               glyphs within the font.                 */ | 
|---|
| 285 | /*                                                                       */ | 
|---|
| 286 | /*    min_Bottom_Side_Bearing :: The minimum bottom side bearing of all  */ | 
|---|
| 287 | /*                               glyphs within the font.                 */ | 
|---|
| 288 | /*                                                                       */ | 
|---|
| 289 | /*    yMax_Extent             :: The maximum vertical extent (i.e., the  */ | 
|---|
| 290 | /*                               `height' of a glyph's bounding box) for */ | 
|---|
| 291 | /*                               all glyphs in the font.                 */ | 
|---|
| 292 | /*                                                                       */ | 
|---|
| 293 | /*    caret_Slope_Rise        :: The rise coefficient of the cursor's    */ | 
|---|
| 294 | /*                               slope of the cursor (slope=rise/run).   */ | 
|---|
| 295 | /*                                                                       */ | 
|---|
| 296 | /*    caret_Slope_Run         :: The run coefficient of the cursor's     */ | 
|---|
| 297 | /*                               slope.                                  */ | 
|---|
| 298 | /*                                                                       */ | 
|---|
| 299 | /*    caret_Offset            :: The cursor's offset for slanted fonts.  */ | 
|---|
| 300 | /*                                                                       */ | 
|---|
| 301 | /*    Reserved                :: 8~reserved bytes.                       */ | 
|---|
| 302 | /*                                                                       */ | 
|---|
| 303 | /*    metric_Data_Format      :: Always~0.                               */ | 
|---|
| 304 | /*                                                                       */ | 
|---|
| 305 | /*    number_Of_VMetrics      :: Number of VMetrics entries in the       */ | 
|---|
| 306 | /*                               `vmtx' table -- this value can be       */ | 
|---|
| 307 | /*                               smaller than the total number of glyphs */ | 
|---|
| 308 | /*                               in the font.                            */ | 
|---|
| 309 | /*                                                                       */ | 
|---|
| 310 | /*    long_metrics            :: A pointer into the `vmtx' table.        */ | 
|---|
| 311 | /*                                                                       */ | 
|---|
| 312 | /*    short_metrics           :: A pointer into the `vmtx' table.        */ | 
|---|
| 313 | /*                                                                       */ | 
|---|
| 314 | /* <Note>                                                                */ | 
|---|
| 315 | /*    For an OpenType variation font, the values of the following fields */ | 
|---|
| 316 | /*    can change after a call to @FT_Set_Var_Design_Coordinates (and     */ | 
|---|
| 317 | /*    friends) if the font contains an `MVAR' table: `Ascender',         */ | 
|---|
| 318 | /*    `Descender', `Line_Gap', `caret_Slope_Rise', `caret_Slope_Run',    */ | 
|---|
| 319 | /*    and `caret_Offset'.                                                */ | 
|---|
| 320 | /*                                                                       */ | 
|---|
| 321 | typedef struct | 
|---|
| 322 | { | 
|---|
| 323 | FT_Fixed   ; | 
|---|
| 324 | FT_Short   ; | 
|---|
| 325 | FT_Short   ; | 
|---|
| 326 | FT_Short   ; | 
|---|
| 327 |  | 
|---|
| 328 | FT_UShort  ;      /* advance height maximum */ | 
|---|
| 329 |  | 
|---|
| 330 | FT_Short   ;    /* minimum top-sb          */ | 
|---|
| 331 | FT_Short   ; /* minimum bottom-sb       */ | 
|---|
| 332 | FT_Short   ;             /* ymax extents            */ | 
|---|
| 333 | FT_Short   ; | 
|---|
| 334 | FT_Short   ; | 
|---|
| 335 | FT_Short   ; | 
|---|
| 336 |  | 
|---|
| 337 | FT_Short   [4]; | 
|---|
| 338 |  | 
|---|
| 339 | FT_Short   ; | 
|---|
| 340 | FT_UShort  ; | 
|---|
| 341 |  | 
|---|
| 342 | /* The following fields are not defined by the OpenType specification */ | 
|---|
| 343 | /* but they are used to connect the metrics header to the relevant    */ | 
|---|
| 344 | /* `vmtx' table.                                                      */ | 
|---|
| 345 |  | 
|---|
| 346 | void*      ; | 
|---|
| 347 | void*      ; | 
|---|
| 348 |  | 
|---|
| 349 | } ; | 
|---|
| 350 |  | 
|---|
| 351 |  | 
|---|
| 352 | /*************************************************************************/ | 
|---|
| 353 | /*                                                                       */ | 
|---|
| 354 | /* <Struct>                                                              */ | 
|---|
| 355 | /*    TT_OS2                                                             */ | 
|---|
| 356 | /*                                                                       */ | 
|---|
| 357 | /* <Description>                                                         */ | 
|---|
| 358 | /*    A structure to model a TrueType `OS/2' table.  All fields comply   */ | 
|---|
| 359 | /*    to the OpenType specification.                                     */ | 
|---|
| 360 | /*                                                                       */ | 
|---|
| 361 | /*    Note that we now support old Mac fonts that do not include an      */ | 
|---|
| 362 | /*    `OS/2' table.  In this case, the `version' field is always set to  */ | 
|---|
| 363 | /*    0xFFFF.                                                            */ | 
|---|
| 364 | /*                                                                       */ | 
|---|
| 365 | /* <Note>                                                                */ | 
|---|
| 366 | /*    For an OpenType variation font, the values of the following fields */ | 
|---|
| 367 | /*    can change after a call to @FT_Set_Var_Design_Coordinates (and     */ | 
|---|
| 368 | /*    friends) if the font contains an `MVAR' table: `sCapHeight',       */ | 
|---|
| 369 | /*    `sTypoAscender', `sTypoDescender', `sTypoLineGap', `sxHeight',     */ | 
|---|
| 370 | /*    `usWinAscent', `usWinDescent', `yStrikeoutPosition',               */ | 
|---|
| 371 | /*    `yStrikeoutSize', `ySubscriptXOffset', `ySubScriptXSize',          */ | 
|---|
| 372 | /*    `ySubscriptYOffset', `ySubscriptYSize', `ySuperscriptXOffset',     */ | 
|---|
| 373 | /*    `ySuperscriptXSize', `ySuperscriptYOffset', and                    */ | 
|---|
| 374 | /*    `ySuperscriptYSize'.                                               */ | 
|---|
| 375 | /*                                                                       */ | 
|---|
| 376 | /*    Possible values for bits in the `ulUnicodeRangeX' fields are given */ | 
|---|
| 377 | /*    by the @TT_UCR_XXX macros.                                         */ | 
|---|
| 378 | /*                                                                       */ | 
|---|
| 379 |  | 
|---|
| 380 | typedef struct  TT_OS2_ | 
|---|
| 381 | { | 
|---|
| 382 | FT_UShort  version;                /* 0x0001 - more or 0xFFFF */ | 
|---|
| 383 | FT_Short   xAvgCharWidth; | 
|---|
| 384 | FT_UShort  usWeightClass; | 
|---|
| 385 | FT_UShort  usWidthClass; | 
|---|
| 386 | FT_UShort  fsType; | 
|---|
| 387 | FT_Short   ySubscriptXSize; | 
|---|
| 388 | FT_Short   ySubscriptYSize; | 
|---|
| 389 | FT_Short   ySubscriptXOffset; | 
|---|
| 390 | FT_Short   ySubscriptYOffset; | 
|---|
| 391 | FT_Short   ySuperscriptXSize; | 
|---|
| 392 | FT_Short   ySuperscriptYSize; | 
|---|
| 393 | FT_Short   ySuperscriptXOffset; | 
|---|
| 394 | FT_Short   ySuperscriptYOffset; | 
|---|
| 395 | FT_Short   yStrikeoutSize; | 
|---|
| 396 | FT_Short   yStrikeoutPosition; | 
|---|
| 397 | FT_Short   sFamilyClass; | 
|---|
| 398 |  | 
|---|
| 399 | FT_Byte    panose[10]; | 
|---|
| 400 |  | 
|---|
| 401 | FT_ULong   ulUnicodeRange1;        /* Bits 0-31   */ | 
|---|
| 402 | FT_ULong   ulUnicodeRange2;        /* Bits 32-63  */ | 
|---|
| 403 | FT_ULong   ulUnicodeRange3;        /* Bits 64-95  */ | 
|---|
| 404 | FT_ULong   ulUnicodeRange4;        /* Bits 96-127 */ | 
|---|
| 405 |  | 
|---|
| 406 | FT_Char    achVendID[4]; | 
|---|
| 407 |  | 
|---|
| 408 | FT_UShort  fsSelection; | 
|---|
| 409 | FT_UShort  usFirstCharIndex; | 
|---|
| 410 | FT_UShort  usLastCharIndex; | 
|---|
| 411 | FT_Short   sTypoAscender; | 
|---|
| 412 | FT_Short   sTypoDescender; | 
|---|
| 413 | FT_Short   sTypoLineGap; | 
|---|
| 414 | FT_UShort  usWinAscent; | 
|---|
| 415 | FT_UShort  usWinDescent; | 
|---|
| 416 |  | 
|---|
| 417 | /* only version 1 and higher: */ | 
|---|
| 418 |  | 
|---|
| 419 | FT_ULong   ;       /* Bits 0-31   */ | 
|---|
| 420 | FT_ULong   ;       /* Bits 32-63  */ | 
|---|
| 421 |  | 
|---|
| 422 | /* only version 2 and higher: */ | 
|---|
| 423 |  | 
|---|
| 424 | FT_Short   sxHeight; | 
|---|
| 425 | FT_Short   sCapHeight; | 
|---|
| 426 | FT_UShort  usDefaultChar; | 
|---|
| 427 | FT_UShort  usBreakChar; | 
|---|
| 428 | FT_UShort  usMaxContext; | 
|---|
| 429 |  | 
|---|
| 430 | /* only version 5 and higher: */ | 
|---|
| 431 |  | 
|---|
| 432 | FT_UShort  usLowerOpticalPointSize;       /* in twips (1/20th points) */ | 
|---|
| 433 | FT_UShort  usUpperOpticalPointSize;       /* in twips (1/20th points) */ | 
|---|
| 434 |  | 
|---|
| 435 | } TT_OS2; | 
|---|
| 436 |  | 
|---|
| 437 |  | 
|---|
| 438 | /*************************************************************************/ | 
|---|
| 439 | /*                                                                       */ | 
|---|
| 440 | /* <Struct>                                                              */ | 
|---|
| 441 | /*    TT_Postscript                                                      */ | 
|---|
| 442 | /*                                                                       */ | 
|---|
| 443 | /* <Description>                                                         */ | 
|---|
| 444 | /*    A structure to model a TrueType `post' table.  All fields comply   */ | 
|---|
| 445 | /*    to the OpenType specification.  This structure does not reference  */ | 
|---|
| 446 | /*    a font's PostScript glyph names; use @FT_Get_Glyph_Name to         */ | 
|---|
| 447 | /*    retrieve them.                                                     */ | 
|---|
| 448 | /*                                                                       */ | 
|---|
| 449 | /* <Note>                                                                */ | 
|---|
| 450 | /*    For an OpenType variation font, the values of the following fields */ | 
|---|
| 451 | /*    can change after a call to @FT_Set_Var_Design_Coordinates (and     */ | 
|---|
| 452 | /*    friends) if the font contains an `MVAR' table: `underlinePosition' */ | 
|---|
| 453 | /*    and `underlineThickness'.                                          */ | 
|---|
| 454 | /*                                                                       */ | 
|---|
| 455 | typedef struct  TT_Postscript_ | 
|---|
| 456 | { | 
|---|
| 457 | FT_Fixed  FormatType; | 
|---|
| 458 | FT_Fixed  italicAngle; | 
|---|
| 459 | FT_Short  underlinePosition; | 
|---|
| 460 | FT_Short  underlineThickness; | 
|---|
| 461 | FT_ULong  isFixedPitch; | 
|---|
| 462 | FT_ULong  minMemType42; | 
|---|
| 463 | FT_ULong  maxMemType42; | 
|---|
| 464 | FT_ULong  minMemType1; | 
|---|
| 465 | FT_ULong  maxMemType1; | 
|---|
| 466 |  | 
|---|
| 467 | /* Glyph names follow in the `post' table, but we don't */ | 
|---|
| 468 | /* load them by default.                                */ | 
|---|
| 469 |  | 
|---|
| 470 | } TT_Postscript; | 
|---|
| 471 |  | 
|---|
| 472 |  | 
|---|
| 473 | /*************************************************************************/ | 
|---|
| 474 | /*                                                                       */ | 
|---|
| 475 | /* <Struct>                                                              */ | 
|---|
| 476 | /*    TT_PCLT                                                            */ | 
|---|
| 477 | /*                                                                       */ | 
|---|
| 478 | /* <Description>                                                         */ | 
|---|
| 479 | /*    A structure to model a TrueType `PCLT' table.  All fields comply   */ | 
|---|
| 480 | /*    to the OpenType specification.                                     */ | 
|---|
| 481 | /*                                                                       */ | 
|---|
| 482 | typedef struct  TT_PCLT_ | 
|---|
| 483 | { | 
|---|
| 484 | FT_Fixed   Version; | 
|---|
| 485 | FT_ULong   FontNumber; | 
|---|
| 486 | FT_UShort  Pitch; | 
|---|
| 487 | FT_UShort  xHeight; | 
|---|
| 488 | FT_UShort  Style; | 
|---|
| 489 | FT_UShort  TypeFamily; | 
|---|
| 490 | FT_UShort  CapHeight; | 
|---|
| 491 | FT_UShort  SymbolSet; | 
|---|
| 492 | FT_Char    TypeFace[16]; | 
|---|
| 493 | FT_Char    CharacterComplement[8]; | 
|---|
| 494 | FT_Char    FileName[6]; | 
|---|
| 495 | FT_Char    StrokeWeight; | 
|---|
| 496 | FT_Char    WidthType; | 
|---|
| 497 | FT_Byte    SerifStyle; | 
|---|
| 498 | FT_Byte    Reserved; | 
|---|
| 499 |  | 
|---|
| 500 | } TT_PCLT; | 
|---|
| 501 |  | 
|---|
| 502 |  | 
|---|
| 503 | /*************************************************************************/ | 
|---|
| 504 | /*                                                                       */ | 
|---|
| 505 | /* <Struct>                                                              */ | 
|---|
| 506 | /*    TT_MaxProfile                                                      */ | 
|---|
| 507 | /*                                                                       */ | 
|---|
| 508 | /* <Description>                                                         */ | 
|---|
| 509 | /*    The maximum profile (`maxp') table contains many max values, which */ | 
|---|
| 510 | /*    can be used to pre-allocate arrays for speeding up glyph loading   */ | 
|---|
| 511 | /*    and hinting.                                                       */ | 
|---|
| 512 | /*                                                                       */ | 
|---|
| 513 | /* <Fields>                                                              */ | 
|---|
| 514 | /*    version               :: The version number.                       */ | 
|---|
| 515 | /*                                                                       */ | 
|---|
| 516 | /*    numGlyphs             :: The number of glyphs in this TrueType     */ | 
|---|
| 517 | /*                             font.                                     */ | 
|---|
| 518 | /*                                                                       */ | 
|---|
| 519 | /*    maxPoints             :: The maximum number of points in a         */ | 
|---|
| 520 | /*                             non-composite TrueType glyph.  See also   */ | 
|---|
| 521 | /*                             `maxCompositePoints'.                     */ | 
|---|
| 522 | /*                                                                       */ | 
|---|
| 523 | /*    maxContours           :: The maximum number of contours in a       */ | 
|---|
| 524 | /*                             non-composite TrueType glyph.  See also   */ | 
|---|
| 525 | /*                             `maxCompositeContours'.                   */ | 
|---|
| 526 | /*                                                                       */ | 
|---|
| 527 | /*    maxCompositePoints    :: The maximum number of points in a         */ | 
|---|
| 528 | /*                             composite TrueType glyph.  See also       */ | 
|---|
| 529 | /*                             `maxPoints'.                              */ | 
|---|
| 530 | /*                                                                       */ | 
|---|
| 531 | /*    maxCompositeContours  :: The maximum number of contours in a       */ | 
|---|
| 532 | /*                             composite TrueType glyph.  See also       */ | 
|---|
| 533 | /*                             `maxContours'.                            */ | 
|---|
| 534 | /*                                                                       */ | 
|---|
| 535 | /*    maxZones              :: The maximum number of zones used for      */ | 
|---|
| 536 | /*                             glyph hinting.                            */ | 
|---|
| 537 | /*                                                                       */ | 
|---|
| 538 | /*    maxTwilightPoints     :: The maximum number of points in the       */ | 
|---|
| 539 | /*                             twilight zone used for glyph hinting.     */ | 
|---|
| 540 | /*                                                                       */ | 
|---|
| 541 | /*    maxStorage            :: The maximum number of elements in the     */ | 
|---|
| 542 | /*                             storage area used for glyph hinting.      */ | 
|---|
| 543 | /*                                                                       */ | 
|---|
| 544 | /*    maxFunctionDefs       :: The maximum number of function            */ | 
|---|
| 545 | /*                             definitions in the TrueType bytecode for  */ | 
|---|
| 546 | /*                             this font.                                */ | 
|---|
| 547 | /*                                                                       */ | 
|---|
| 548 | /*    maxInstructionDefs    :: The maximum number of instruction         */ | 
|---|
| 549 | /*                             definitions in the TrueType bytecode for  */ | 
|---|
| 550 | /*                             this font.                                */ | 
|---|
| 551 | /*                                                                       */ | 
|---|
| 552 | /*    maxStackElements      :: The maximum number of stack elements used */ | 
|---|
| 553 | /*                             during bytecode interpretation.           */ | 
|---|
| 554 | /*                                                                       */ | 
|---|
| 555 | /*    maxSizeOfInstructions :: The maximum number of TrueType opcodes    */ | 
|---|
| 556 | /*                             used for glyph hinting.                   */ | 
|---|
| 557 | /*                                                                       */ | 
|---|
| 558 | /*    maxComponentElements  :: The maximum number of simple (i.e., non-  */ | 
|---|
| 559 | /*                             composite) glyphs in a composite glyph.   */ | 
|---|
| 560 | /*                                                                       */ | 
|---|
| 561 | /*    maxComponentDepth     :: The maximum nesting depth of composite    */ | 
|---|
| 562 | /*                             glyphs.                                   */ | 
|---|
| 563 | /*                                                                       */ | 
|---|
| 564 | /* <Note>                                                                */ | 
|---|
| 565 | /*    This structure is only used during font loading.                   */ | 
|---|
| 566 | /*                                                                       */ | 
|---|
| 567 | typedef struct  TT_MaxProfile_ | 
|---|
| 568 | { | 
|---|
| 569 | FT_Fixed   version; | 
|---|
| 570 | FT_UShort  numGlyphs; | 
|---|
| 571 | FT_UShort  maxPoints; | 
|---|
| 572 | FT_UShort  maxContours; | 
|---|
| 573 | FT_UShort  maxCompositePoints; | 
|---|
| 574 | FT_UShort  maxCompositeContours; | 
|---|
| 575 | FT_UShort  maxZones; | 
|---|
| 576 | FT_UShort  maxTwilightPoints; | 
|---|
| 577 | FT_UShort  maxStorage; | 
|---|
| 578 | FT_UShort  maxFunctionDefs; | 
|---|
| 579 | FT_UShort  maxInstructionDefs; | 
|---|
| 580 | FT_UShort  maxStackElements; | 
|---|
| 581 | FT_UShort  maxSizeOfInstructions; | 
|---|
| 582 | FT_UShort  maxComponentElements; | 
|---|
| 583 | FT_UShort  maxComponentDepth; | 
|---|
| 584 |  | 
|---|
| 585 | } TT_MaxProfile; | 
|---|
| 586 |  | 
|---|
| 587 |  | 
|---|
| 588 | /*************************************************************************/ | 
|---|
| 589 | /*                                                                       */ | 
|---|
| 590 | /* <Enum>                                                                */ | 
|---|
| 591 | /*    FT_Sfnt_Tag                                                        */ | 
|---|
| 592 | /*                                                                       */ | 
|---|
| 593 | /* <Description>                                                         */ | 
|---|
| 594 | /*    An enumeration to specify indices of SFNT tables loaded and parsed */ | 
|---|
| 595 | /*    by FreeType during initialization of an SFNT font.  Used in the    */ | 
|---|
| 596 | /*    @FT_Get_Sfnt_Table API function.                                   */ | 
|---|
| 597 | /*                                                                       */ | 
|---|
| 598 | /* <Values>                                                              */ | 
|---|
| 599 | /*    FT_SFNT_HEAD :: To access the font's @TT_Header structure.         */ | 
|---|
| 600 | /*                                                                       */ | 
|---|
| 601 | /*    FT_SFNT_MAXP :: To access the font's @TT_MaxProfile structure.     */ | 
|---|
| 602 | /*                                                                       */ | 
|---|
| 603 | /*    FT_SFNT_OS2  :: To access the font's @TT_OS2 structure.            */ | 
|---|
| 604 | /*                                                                       */ | 
|---|
| 605 | /*    FT_SFNT_HHEA :: To access the font's @TT_HoriHeader structure.     */ | 
|---|
| 606 | /*                                                                       */ | 
|---|
| 607 | /*    FT_SFNT_VHEA :: To access the font's @TT_VertHeader structure.     */ | 
|---|
| 608 | /*                                                                       */ | 
|---|
| 609 | /*    FT_SFNT_POST :: To access the font's @TT_Postscript structure.     */ | 
|---|
| 610 | /*                                                                       */ | 
|---|
| 611 | /*    FT_SFNT_PCLT :: To access the font's @TT_PCLT structure.           */ | 
|---|
| 612 | /*                                                                       */ | 
|---|
| 613 | typedef enum  FT_Sfnt_Tag_ | 
|---|
| 614 | { | 
|---|
| 615 | FT_SFNT_HEAD, | 
|---|
| 616 | FT_SFNT_MAXP, | 
|---|
| 617 | FT_SFNT_OS2, | 
|---|
| 618 | FT_SFNT_HHEA, | 
|---|
| 619 | FT_SFNT_VHEA, | 
|---|
| 620 | FT_SFNT_POST, | 
|---|
| 621 | FT_SFNT_PCLT, | 
|---|
| 622 |  | 
|---|
| 623 | FT_SFNT_MAX | 
|---|
| 624 |  | 
|---|
| 625 | } FT_Sfnt_Tag; | 
|---|
| 626 |  | 
|---|
| 627 | /* these constants are deprecated; use the corresponding `FT_Sfnt_Tag' */ | 
|---|
| 628 | /* values instead                                                      */ | 
|---|
| 629 | #define ft_sfnt_head  FT_SFNT_HEAD | 
|---|
| 630 | #define ft_sfnt_maxp  FT_SFNT_MAXP | 
|---|
| 631 | #define ft_sfnt_os2   FT_SFNT_OS2 | 
|---|
| 632 | #define ft_sfnt_hhea  FT_SFNT_HHEA | 
|---|
| 633 | #define ft_sfnt_vhea  FT_SFNT_VHEA | 
|---|
| 634 | #define ft_sfnt_post  FT_SFNT_POST | 
|---|
| 635 | #define ft_sfnt_pclt  FT_SFNT_PCLT | 
|---|
| 636 |  | 
|---|
| 637 |  | 
|---|
| 638 | /*************************************************************************/ | 
|---|
| 639 | /*                                                                       */ | 
|---|
| 640 | /* <Function>                                                            */ | 
|---|
| 641 | /*    FT_Get_Sfnt_Table                                                  */ | 
|---|
| 642 | /*                                                                       */ | 
|---|
| 643 | /* <Description>                                                         */ | 
|---|
| 644 | /*    Return a pointer to a given SFNT table stored within a face.       */ | 
|---|
| 645 | /*                                                                       */ | 
|---|
| 646 | /* <Input>                                                               */ | 
|---|
| 647 | /*    face :: A handle to the source.                                    */ | 
|---|
| 648 | /*                                                                       */ | 
|---|
| 649 | /*    tag  :: The index of the SFNT table.                               */ | 
|---|
| 650 | /*                                                                       */ | 
|---|
| 651 | /* <Return>                                                              */ | 
|---|
| 652 | /*    A type-less pointer to the table.  This will be NULL in case of    */ | 
|---|
| 653 | /*    error, or if the corresponding table was not found *OR* loaded     */ | 
|---|
| 654 | /*    from the file.                                                     */ | 
|---|
| 655 | /*                                                                       */ | 
|---|
| 656 | /*    Use a typecast according to `tag' to access the structure          */ | 
|---|
| 657 | /*    elements.                                                          */ | 
|---|
| 658 | /*                                                                       */ | 
|---|
| 659 | /* <Note>                                                                */ | 
|---|
| 660 | /*    The table is owned by the face object and disappears with it.      */ | 
|---|
| 661 | /*                                                                       */ | 
|---|
| 662 | /*    This function is only useful to access SFNT tables that are loaded */ | 
|---|
| 663 | /*    by the sfnt, truetype, and opentype drivers.  See @FT_Sfnt_Tag for */ | 
|---|
| 664 | /*    a list.                                                            */ | 
|---|
| 665 | /*                                                                       */ | 
|---|
| 666 | /*    Here an example how to access the `vhea' table:                    */ | 
|---|
| 667 | /*                                                                       */ | 
|---|
| 668 | /*    {                                                                  */ | 
|---|
| 669 | /*      TT_VertHeader*  vert_header;                                     */ | 
|---|
| 670 | /*                                                                       */ | 
|---|
| 671 | /*                                                                       */ | 
|---|
| 672 | /*      vert_header =                                                    */ | 
|---|
| 673 | /*        (TT_VertHeader*)FT_Get_Sfnt_Table( face, FT_SFNT_VHEA );       */ | 
|---|
| 674 | /*    }                                                                  */ | 
|---|
| 675 | /*                                                                       */ | 
|---|
| 676 | FT_EXPORT( void* ) | 
|---|
| 677 | FT_Get_Sfnt_Table( FT_Face      face, | 
|---|
| 678 | FT_Sfnt_Tag  tag ); | 
|---|
| 679 |  | 
|---|
| 680 |  | 
|---|
| 681 | /************************************************************************** | 
|---|
| 682 | * | 
|---|
| 683 | * @function: | 
|---|
| 684 | *   FT_Load_Sfnt_Table | 
|---|
| 685 | * | 
|---|
| 686 | * @description: | 
|---|
| 687 | *   Load any SFNT font table into client memory. | 
|---|
| 688 | * | 
|---|
| 689 | * @input: | 
|---|
| 690 | *   face :: | 
|---|
| 691 | *     A handle to the source face. | 
|---|
| 692 | * | 
|---|
| 693 | *   tag :: | 
|---|
| 694 | *     The four-byte tag of the table to load.  Use value~0 if you want | 
|---|
| 695 | *     to access the whole font file.  Otherwise, you can use one of the | 
|---|
| 696 | *     definitions found in the @FT_TRUETYPE_TAGS_H file, or forge a new | 
|---|
| 697 | *     one with @FT_MAKE_TAG. | 
|---|
| 698 | * | 
|---|
| 699 | *   offset :: | 
|---|
| 700 | *     The starting offset in the table (or file if tag~==~0). | 
|---|
| 701 | * | 
|---|
| 702 | * @output: | 
|---|
| 703 | *   buffer :: | 
|---|
| 704 | *     The target buffer address.  The client must ensure that the memory | 
|---|
| 705 | *     array is big enough to hold the data. | 
|---|
| 706 | * | 
|---|
| 707 | * @inout: | 
|---|
| 708 | *   length :: | 
|---|
| 709 | *     If the `length' parameter is NULL, try to load the whole table. | 
|---|
| 710 | *     Return an error code if it fails. | 
|---|
| 711 | * | 
|---|
| 712 | *     Else, if `*length' is~0, exit immediately while returning the | 
|---|
| 713 | *     table's (or file) full size in it. | 
|---|
| 714 | * | 
|---|
| 715 | *     Else the number of bytes to read from the table or file, from the | 
|---|
| 716 | *     starting offset. | 
|---|
| 717 | * | 
|---|
| 718 | * @return: | 
|---|
| 719 | *   FreeType error code.  0~means success. | 
|---|
| 720 | * | 
|---|
| 721 | * @note: | 
|---|
| 722 | *   If you need to determine the table's length you should first call this | 
|---|
| 723 | *   function with `*length' set to~0, as in the following example: | 
|---|
| 724 | * | 
|---|
| 725 | *     { | 
|---|
| 726 | *       FT_ULong  length = 0; | 
|---|
| 727 | * | 
|---|
| 728 | * | 
|---|
| 729 | *       error = FT_Load_Sfnt_Table( face, tag, 0, NULL, &length ); | 
|---|
| 730 | *       if ( error ) { ... table does not exist ... } | 
|---|
| 731 | * | 
|---|
| 732 | *       buffer = malloc( length ); | 
|---|
| 733 | *       if ( buffer == NULL ) { ... not enough memory ... } | 
|---|
| 734 | * | 
|---|
| 735 | *       error = FT_Load_Sfnt_Table( face, tag, 0, buffer, &length ); | 
|---|
| 736 | *       if ( error ) { ... could not load table ... } | 
|---|
| 737 | *     } | 
|---|
| 738 | * | 
|---|
| 739 | *   Note that structures like @TT_Header or @TT_OS2 can't be used with | 
|---|
| 740 | *   this function; they are limited to @FT_Get_Sfnt_Table.  Reason is that | 
|---|
| 741 | *   those structures depend on the processor architecture, with varying | 
|---|
| 742 | *   size (e.g. 32bit vs. 64bit) or order (big endian vs. little endian). | 
|---|
| 743 | * | 
|---|
| 744 | */ | 
|---|
| 745 | FT_EXPORT( FT_Error ) | 
|---|
| 746 | FT_Load_Sfnt_Table( FT_Face    face, | 
|---|
| 747 | FT_ULong   tag, | 
|---|
| 748 | FT_Long    offset, | 
|---|
| 749 | FT_Byte*   buffer, | 
|---|
| 750 | FT_ULong*  length ); | 
|---|
| 751 |  | 
|---|
| 752 |  | 
|---|
| 753 | /************************************************************************** | 
|---|
| 754 | * | 
|---|
| 755 | * @function: | 
|---|
| 756 | *   FT_Sfnt_Table_Info | 
|---|
| 757 | * | 
|---|
| 758 | * @description: | 
|---|
| 759 | *   Return information on an SFNT table. | 
|---|
| 760 | * | 
|---|
| 761 | * @input: | 
|---|
| 762 | *   face :: | 
|---|
| 763 | *     A handle to the source face. | 
|---|
| 764 | * | 
|---|
| 765 | *   table_index :: | 
|---|
| 766 | *     The index of an SFNT table.  The function returns | 
|---|
| 767 | *     FT_Err_Table_Missing for an invalid value. | 
|---|
| 768 | * | 
|---|
| 769 | * @inout: | 
|---|
| 770 | *   tag :: | 
|---|
| 771 | *     The name tag of the SFNT table.  If the value is NULL, `table_index' | 
|---|
| 772 | *     is ignored, and `length' returns the number of SFNT tables in the | 
|---|
| 773 | *     font. | 
|---|
| 774 | * | 
|---|
| 775 | * @output: | 
|---|
| 776 | *   length :: | 
|---|
| 777 | *     The length of the SFNT table (or the number of SFNT tables, depending | 
|---|
| 778 | *     on `tag'). | 
|---|
| 779 | * | 
|---|
| 780 | * @return: | 
|---|
| 781 | *   FreeType error code.  0~means success. | 
|---|
| 782 | * | 
|---|
| 783 | * @note: | 
|---|
| 784 | *   While parsing fonts, FreeType handles SFNT tables with length zero as | 
|---|
| 785 | *   missing. | 
|---|
| 786 | * | 
|---|
| 787 | */ | 
|---|
| 788 | FT_EXPORT( FT_Error ) | 
|---|
| 789 | FT_Sfnt_Table_Info( FT_Face    face, | 
|---|
| 790 | FT_UInt    table_index, | 
|---|
| 791 | FT_ULong  *tag, | 
|---|
| 792 | FT_ULong  *length ); | 
|---|
| 793 |  | 
|---|
| 794 |  | 
|---|
| 795 | /*************************************************************************/ | 
|---|
| 796 | /*                                                                       */ | 
|---|
| 797 | /* <Function>                                                            */ | 
|---|
| 798 | /*    FT_Get_CMap_Language_ID                                            */ | 
|---|
| 799 | /*                                                                       */ | 
|---|
| 800 | /* <Description>                                                         */ | 
|---|
| 801 | /*    Return cmap language ID as specified in the OpenType standard.     */ | 
|---|
| 802 | /*    Definitions of language ID values are in file @FT_TRUETYPE_IDS_H.  */ | 
|---|
| 803 | /*                                                                       */ | 
|---|
| 804 | /* <Input>                                                               */ | 
|---|
| 805 | /*    charmap ::                                                         */ | 
|---|
| 806 | /*      The target charmap.                                              */ | 
|---|
| 807 | /*                                                                       */ | 
|---|
| 808 | /* <Return>                                                              */ | 
|---|
| 809 | /*    The language ID of `charmap'.  If `charmap' doesn't belong to an   */ | 
|---|
| 810 | /*    SFNT face, just return~0 as the default value.                     */ | 
|---|
| 811 | /*                                                                       */ | 
|---|
| 812 | /*    For a format~14 cmap (to access Unicode IVS), the return value is  */ | 
|---|
| 813 | /*    0xFFFFFFFF.                                                        */ | 
|---|
| 814 | /*                                                                       */ | 
|---|
| 815 | FT_EXPORT( FT_ULong ) | 
|---|
| 816 | FT_Get_CMap_Language_ID( FT_CharMap  charmap ); | 
|---|
| 817 |  | 
|---|
| 818 |  | 
|---|
| 819 | /*************************************************************************/ | 
|---|
| 820 | /*                                                                       */ | 
|---|
| 821 | /* <Function>                                                            */ | 
|---|
| 822 | /*    FT_Get_CMap_Format                                                 */ | 
|---|
| 823 | /*                                                                       */ | 
|---|
| 824 | /* <Description>                                                         */ | 
|---|
| 825 | /*    Return the format of an SFNT `cmap' table.                         */ | 
|---|
| 826 | /*                                                                       */ | 
|---|
| 827 | /* <Input>                                                               */ | 
|---|
| 828 | /*    charmap ::                                                         */ | 
|---|
| 829 | /*      The target charmap.                                              */ | 
|---|
| 830 | /*                                                                       */ | 
|---|
| 831 | /* <Return>                                                              */ | 
|---|
| 832 | /*    The format of `charmap'.  If `charmap' doesn't belong to an SFNT   */ | 
|---|
| 833 | /*    face, return -1.                                                   */ | 
|---|
| 834 | /*                                                                       */ | 
|---|
| 835 | FT_EXPORT( FT_Long ) | 
|---|
| 836 | FT_Get_CMap_Format( FT_CharMap  charmap ); | 
|---|
| 837 |  | 
|---|
| 838 | /* */ | 
|---|
| 839 |  | 
|---|
| 840 |  | 
|---|
| 841 | FT_END_HEADER | 
|---|
| 842 |  | 
|---|
| 843 | #endif /* TTTABLES_H_ */ | 
|---|
| 844 |  | 
|---|
| 845 |  | 
|---|
| 846 | /* END */ | 
|---|
| 847 |  | 
|---|