[692] | 1 | /***************************************************************************/
|
---|
| 2 | /* */
|
---|
| 3 | /* tttypes.h */
|
---|
| 4 | /* */
|
---|
| 5 | /* Basic SFNT/TrueType type definitions and interface (specification */
|
---|
| 6 | /* only). */
|
---|
| 7 | /* */
|
---|
| 8 | /* Copyright 1996-2001, 2002, 2004, 2005 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 __TTTYPES_H__
|
---|
| 21 | #define __TTTYPES_H__
|
---|
| 22 |
|
---|
| 23 |
|
---|
| 24 | #include <ft2build.h>
|
---|
| 25 | #include FT_TRUETYPE_TABLES_H
|
---|
| 26 | #include FT_INTERNAL_OBJECTS_H
|
---|
| 27 |
|
---|
| 28 | #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
---|
| 29 | #include FT_MULTIPLE_MASTERS_H
|
---|
| 30 | #endif
|
---|
| 31 |
|
---|
| 32 |
|
---|
| 33 | FT_BEGIN_HEADER
|
---|
| 34 |
|
---|
| 35 |
|
---|
| 36 | /*************************************************************************/
|
---|
| 37 | /*************************************************************************/
|
---|
| 38 | /*************************************************************************/
|
---|
| 39 | /*** ***/
|
---|
| 40 | /*** ***/
|
---|
| 41 | /*** REQUIRED TRUETYPE/OPENTYPE TABLES DEFINITIONS ***/
|
---|
| 42 | /*** ***/
|
---|
| 43 | /*** ***/
|
---|
| 44 | /*************************************************************************/
|
---|
| 45 | /*************************************************************************/
|
---|
| 46 | /*************************************************************************/
|
---|
| 47 |
|
---|
| 48 |
|
---|
| 49 | /*************************************************************************/
|
---|
| 50 | /* */
|
---|
| 51 | /* <Struct> */
|
---|
| 52 | /* TTC_HeaderRec */
|
---|
| 53 | /* */
|
---|
| 54 | /* <Description> */
|
---|
| 55 | /* TrueType collection header. This table contains the offsets of */
|
---|
| 56 | /* the font headers of each distinct TrueType face in the file. */
|
---|
| 57 | /* */
|
---|
| 58 | /* <Fields> */
|
---|
| 59 | /* tag :: Must be `ttc ' to indicate a TrueType collection. */
|
---|
| 60 | /* */
|
---|
| 61 | /* version :: The version number. */
|
---|
| 62 | /* */
|
---|
| 63 | /* count :: The number of faces in the collection. The */
|
---|
| 64 | /* specification says this should be an unsigned long, but */
|
---|
| 65 | /* we use a signed long since we need the value -1 for */
|
---|
| 66 | /* specific purposes. */
|
---|
| 67 | /* */
|
---|
| 68 | /* offsets :: The offsets of the font headers, one per face. */
|
---|
| 69 | /* */
|
---|
| 70 | typedef struct TTC_HeaderRec_
|
---|
| 71 | {
|
---|
| 72 | FT_ULong tag;
|
---|
| 73 | FT_Fixed version;
|
---|
| 74 | FT_Long count;
|
---|
| 75 | FT_ULong* offsets;
|
---|
| 76 |
|
---|
| 77 | } TTC_HeaderRec;
|
---|
| 78 |
|
---|
| 79 |
|
---|
| 80 | /*************************************************************************/
|
---|
| 81 | /* */
|
---|
| 82 | /* <Struct> */
|
---|
| 83 | /* SFNT_HeaderRec */
|
---|
| 84 | /* */
|
---|
| 85 | /* <Description> */
|
---|
| 86 | /* SFNT file format header. */
|
---|
| 87 | /* */
|
---|
| 88 | /* <Fields> */
|
---|
| 89 | /* format_tag :: The font format tag. */
|
---|
| 90 | /* */
|
---|
| 91 | /* num_tables :: The number of tables in file. */
|
---|
| 92 | /* */
|
---|
| 93 | /* search_range :: Must be `16 * (max power of 2 <= num_tables)'. */
|
---|
| 94 | /* */
|
---|
| 95 | /* entry_selector :: Must be log2 of `search_range / 16'. */
|
---|
| 96 | /* */
|
---|
| 97 | /* range_shift :: Must be `num_tables * 16 - search_range'. */
|
---|
| 98 | /* */
|
---|
| 99 | typedef struct SFNT_HeaderRec_
|
---|
| 100 | {
|
---|
| 101 | FT_ULong format_tag;
|
---|
| 102 | FT_UShort num_tables;
|
---|
| 103 | FT_UShort search_range;
|
---|
| 104 | FT_UShort entry_selector;
|
---|
| 105 | FT_UShort range_shift;
|
---|
| 106 |
|
---|
| 107 | FT_ULong offset; /* not in file */
|
---|
| 108 |
|
---|
| 109 | } SFNT_HeaderRec, *SFNT_Header;
|
---|
| 110 |
|
---|
| 111 |
|
---|
| 112 | /*************************************************************************/
|
---|
| 113 | /* */
|
---|
| 114 | /* <Struct> */
|
---|
| 115 | /* TT_TableRec */
|
---|
| 116 | /* */
|
---|
| 117 | /* <Description> */
|
---|
| 118 | /* This structure describes a given table of a TrueType font. */
|
---|
| 119 | /* */
|
---|
| 120 | /* <Fields> */
|
---|
| 121 | /* Tag :: A four-bytes tag describing the table. */
|
---|
| 122 | /* */
|
---|
| 123 | /* CheckSum :: The table checksum. This value can be ignored. */
|
---|
| 124 | /* */
|
---|
| 125 | /* Offset :: The offset of the table from the start of the TrueType */
|
---|
| 126 | /* font in its resource. */
|
---|
| 127 | /* */
|
---|
| 128 | /* Length :: The table length (in bytes). */
|
---|
| 129 | /* */
|
---|
| 130 | typedef struct TT_TableRec_
|
---|
| 131 | {
|
---|
| 132 | FT_ULong Tag; /* table type */
|
---|
| 133 | FT_ULong CheckSum; /* table checksum */
|
---|
| 134 | FT_ULong Offset; /* table file offset */
|
---|
| 135 | FT_ULong Length; /* table length */
|
---|
| 136 |
|
---|
| 137 | } TT_TableRec, *TT_Table;
|
---|
| 138 |
|
---|
| 139 |
|
---|
| 140 | /*************************************************************************/
|
---|
| 141 | /* */
|
---|
| 142 | /* <Struct> */
|
---|
| 143 | /* TT_LongMetricsRec */
|
---|
| 144 | /* */
|
---|
| 145 | /* <Description> */
|
---|
| 146 | /* A structure modeling the long metrics of the `hmtx' and `vmtx' */
|
---|
| 147 | /* TrueType tables. The values are expressed in font units. */
|
---|
| 148 | /* */
|
---|
| 149 | /* <Fields> */
|
---|
| 150 | /* advance :: The advance width or height for the glyph. */
|
---|
| 151 | /* */
|
---|
| 152 | /* bearing :: The left-side or top-side bearing for the glyph. */
|
---|
| 153 | /* */
|
---|
| 154 | typedef struct TT_LongMetricsRec_
|
---|
| 155 | {
|
---|
| 156 | FT_UShort advance;
|
---|
| 157 | FT_Short bearing;
|
---|
| 158 |
|
---|
| 159 | } TT_LongMetricsRec, *TT_LongMetrics;
|
---|
| 160 |
|
---|
| 161 |
|
---|
| 162 | /*************************************************************************/
|
---|
| 163 | /* */
|
---|
| 164 | /* <Type> */
|
---|
| 165 | /* TT_ShortMetrics */
|
---|
| 166 | /* */
|
---|
| 167 | /* <Description> */
|
---|
| 168 | /* A simple type to model the short metrics of the `hmtx' and `vmtx' */
|
---|
| 169 | /* tables. */
|
---|
| 170 | /* */
|
---|
| 171 | typedef FT_Short TT_ShortMetrics;
|
---|
| 172 |
|
---|
| 173 |
|
---|
| 174 | /*************************************************************************/
|
---|
| 175 | /* */
|
---|
| 176 | /* <Struct> */
|
---|
| 177 | /* TT_NameEntryRec */
|
---|
| 178 | /* */
|
---|
| 179 | /* <Description> */
|
---|
| 180 | /* A structure modeling TrueType name records. Name records are used */
|
---|
| 181 | /* to store important strings like family name, style name, */
|
---|
| 182 | /* copyright, etc. in _localized_ versions (i.e., language, encoding, */
|
---|
| 183 | /* etc). */
|
---|
| 184 | /* */
|
---|
| 185 | /* <Fields> */
|
---|
| 186 | /* platformID :: The ID of the name's encoding platform. */
|
---|
| 187 | /* */
|
---|
| 188 | /* encodingID :: The platform-specific ID for the name's encoding. */
|
---|
| 189 | /* */
|
---|
| 190 | /* languageID :: The platform-specific ID for the name's language. */
|
---|
| 191 | /* */
|
---|
| 192 | /* nameID :: The ID specifying what kind of name this is. */
|
---|
| 193 | /* */
|
---|
| 194 | /* stringLength :: The length of the string in bytes. */
|
---|
| 195 | /* */
|
---|
| 196 | /* stringOffset :: The offset to the string in the `name' table. */
|
---|
| 197 | /* */
|
---|
| 198 | /* string :: A pointer to the string's bytes. Note that these */
|
---|
| 199 | /* are usually UTF-16 encoded characters. */
|
---|
| 200 | /* */
|
---|
| 201 | typedef struct TT_NameEntryRec_
|
---|
| 202 | {
|
---|
| 203 | FT_UShort platformID;
|
---|
| 204 | FT_UShort encodingID;
|
---|
| 205 | FT_UShort languageID;
|
---|
| 206 | FT_UShort nameID;
|
---|
| 207 | FT_UShort stringLength;
|
---|
| 208 | FT_ULong stringOffset;
|
---|
| 209 |
|
---|
| 210 | /* this last field is not defined in the spec */
|
---|
| 211 | /* but used by the FreeType engine */
|
---|
| 212 |
|
---|
| 213 | FT_Byte* string;
|
---|
| 214 |
|
---|
| 215 | } TT_NameEntryRec, *TT_NameEntry;
|
---|
| 216 |
|
---|
| 217 |
|
---|
| 218 | /*************************************************************************/
|
---|
| 219 | /* */
|
---|
| 220 | /* <Struct> */
|
---|
| 221 | /* TT_NameTableRec */
|
---|
| 222 | /* */
|
---|
| 223 | /* <Description> */
|
---|
| 224 | /* A structure modeling the TrueType name table. */
|
---|
| 225 | /* */
|
---|
| 226 | /* <Fields> */
|
---|
| 227 | /* format :: The format of the name table. */
|
---|
| 228 | /* */
|
---|
| 229 | /* numNameRecords :: The number of names in table. */
|
---|
| 230 | /* */
|
---|
| 231 | /* storageOffset :: The offset of the name table in the `name' */
|
---|
| 232 | /* TrueType table. */
|
---|
| 233 | /* */
|
---|
| 234 | /* names :: An array of name records. */
|
---|
| 235 | /* */
|
---|
| 236 | /* stream :: the file's input stream. */
|
---|
| 237 | /* */
|
---|
| 238 | typedef struct TT_NameTableRec_
|
---|
| 239 | {
|
---|
| 240 | FT_UShort format;
|
---|
| 241 | FT_UInt numNameRecords;
|
---|
| 242 | FT_UInt storageOffset;
|
---|
| 243 | TT_NameEntryRec* names;
|
---|
| 244 | FT_Stream stream;
|
---|
| 245 |
|
---|
| 246 | } TT_NameTableRec, *TT_NameTable;
|
---|
| 247 |
|
---|
| 248 |
|
---|
| 249 | /*************************************************************************/
|
---|
| 250 | /*************************************************************************/
|
---|
| 251 | /*************************************************************************/
|
---|
| 252 | /*** ***/
|
---|
| 253 | /*** ***/
|
---|
| 254 | /*** OPTIONAL TRUETYPE/OPENTYPE TABLES DEFINITIONS ***/
|
---|
| 255 | /*** ***/
|
---|
| 256 | /*** ***/
|
---|
| 257 | /*************************************************************************/
|
---|
| 258 | /*************************************************************************/
|
---|
| 259 | /*************************************************************************/
|
---|
| 260 |
|
---|
| 261 |
|
---|
| 262 | /*************************************************************************/
|
---|
| 263 | /* */
|
---|
| 264 | /* <Struct> */
|
---|
| 265 | /* TT_GaspRangeRec */
|
---|
| 266 | /* */
|
---|
| 267 | /* <Description> */
|
---|
| 268 | /* A tiny structure used to model a gasp range according to the */
|
---|
| 269 | /* TrueType specification. */
|
---|
| 270 | /* */
|
---|
| 271 | /* <Fields> */
|
---|
| 272 | /* maxPPEM :: The maximum ppem value to which `gaspFlag' applies. */
|
---|
| 273 | /* */
|
---|
| 274 | /* gaspFlag :: A flag describing the grid-fitting and anti-aliasing */
|
---|
| 275 | /* modes to be used. */
|
---|
| 276 | /* */
|
---|
| 277 | typedef struct TT_GaspRangeRec_
|
---|
| 278 | {
|
---|
| 279 | FT_UShort maxPPEM;
|
---|
| 280 | FT_UShort gaspFlag;
|
---|
| 281 |
|
---|
| 282 | } TT_GaspRangeRec, *TT_GaspRange;
|
---|
| 283 |
|
---|
| 284 |
|
---|
| 285 | #define TT_GASP_GRIDFIT 0x01
|
---|
| 286 | #define TT_GASP_DOGRAY 0x02
|
---|
| 287 |
|
---|
| 288 |
|
---|
| 289 | /*************************************************************************/
|
---|
| 290 | /* */
|
---|
| 291 | /* <Struct> */
|
---|
| 292 | /* TT_GaspRec */
|
---|
| 293 | /* */
|
---|
| 294 | /* <Description> */
|
---|
| 295 | /* A structure modeling the TrueType `gasp' table used to specify */
|
---|
| 296 | /* grid-fitting and anti-aliasing behaviour. */
|
---|
| 297 | /* */
|
---|
| 298 | /* <Fields> */
|
---|
| 299 | /* version :: The version number. */
|
---|
| 300 | /* */
|
---|
| 301 | /* numRanges :: The number of gasp ranges in table. */
|
---|
| 302 | /* */
|
---|
| 303 | /* gaspRanges :: An array of gasp ranges. */
|
---|
| 304 | /* */
|
---|
| 305 | typedef struct TT_Gasp_
|
---|
| 306 | {
|
---|
| 307 | FT_UShort version;
|
---|
| 308 | FT_UShort numRanges;
|
---|
| 309 | TT_GaspRange gaspRanges;
|
---|
| 310 |
|
---|
| 311 | } TT_GaspRec;
|
---|
| 312 |
|
---|
| 313 |
|
---|
| 314 | #ifndef FT_OPTIMIZE_MEMORY
|
---|
| 315 |
|
---|
| 316 | /*************************************************************************/
|
---|
| 317 | /* */
|
---|
| 318 | /* <Struct> */
|
---|
| 319 | /* TT_HdmxEntryRec */
|
---|
| 320 | /* */
|
---|
| 321 | /* <Description> */
|
---|
| 322 | /* A small structure used to model the pre-computed widths of a given */
|
---|
| 323 | /* size. They are found in the `hdmx' table. */
|
---|
| 324 | /* */
|
---|
| 325 | /* <Fields> */
|
---|
| 326 | /* ppem :: The pixels per EM value at which these metrics apply. */
|
---|
| 327 | /* */
|
---|
| 328 | /* max_width :: The maximum advance width for this metric. */
|
---|
| 329 | /* */
|
---|
| 330 | /* widths :: An array of widths. Note: These are 8-bit bytes. */
|
---|
| 331 | /* */
|
---|
| 332 | typedef struct TT_HdmxEntryRec_
|
---|
| 333 | {
|
---|
| 334 | FT_Byte ppem;
|
---|
| 335 | FT_Byte max_width;
|
---|
| 336 | FT_Byte* widths;
|
---|
| 337 |
|
---|
| 338 | } TT_HdmxEntryRec, *TT_HdmxEntry;
|
---|
| 339 |
|
---|
| 340 |
|
---|
| 341 | /*************************************************************************/
|
---|
| 342 | /* */
|
---|
| 343 | /* <Struct> */
|
---|
| 344 | /* TT_HdmxRec */
|
---|
| 345 | /* */
|
---|
| 346 | /* <Description> */
|
---|
| 347 | /* A structure used to model the `hdmx' table, which contains */
|
---|
| 348 | /* pre-computed widths for a set of given sizes/dimensions. */
|
---|
| 349 | /* */
|
---|
| 350 | /* <Fields> */
|
---|
| 351 | /* version :: The version number. */
|
---|
| 352 | /* */
|
---|
| 353 | /* num_records :: The number of hdmx records. */
|
---|
| 354 | /* */
|
---|
| 355 | /* records :: An array of hdmx records. */
|
---|
| 356 | /* */
|
---|
| 357 | typedef struct TT_HdmxRec_
|
---|
| 358 | {
|
---|
| 359 | FT_UShort version;
|
---|
| 360 | FT_Short num_records;
|
---|
| 361 | TT_HdmxEntry records;
|
---|
| 362 |
|
---|
| 363 | } TT_HdmxRec, *TT_Hdmx;
|
---|
| 364 |
|
---|
| 365 |
|
---|
| 366 | /*************************************************************************/
|
---|
| 367 | /* */
|
---|
| 368 | /* <Struct> */
|
---|
| 369 | /* TT_Kern0_PairRec */
|
---|
| 370 | /* */
|
---|
| 371 | /* <Description> */
|
---|
| 372 | /* A structure used to model a kerning pair for the kerning table */
|
---|
| 373 | /* format 0. The engine now loads this table if it finds one in the */
|
---|
| 374 | /* font file. */
|
---|
| 375 | /* */
|
---|
| 376 | /* <Fields> */
|
---|
| 377 | /* left :: The index of the left glyph in pair. */
|
---|
| 378 | /* */
|
---|
| 379 | /* right :: The index of the right glyph in pair. */
|
---|
| 380 | /* */
|
---|
| 381 | /* value :: The kerning distance. A positive value spaces the */
|
---|
| 382 | /* glyphs, a negative one makes them closer. */
|
---|
| 383 | /* */
|
---|
| 384 | typedef struct TT_Kern0_PairRec_
|
---|
| 385 | {
|
---|
| 386 | FT_UShort left; /* index of left glyph in pair */
|
---|
| 387 | FT_UShort right; /* index of right glyph in pair */
|
---|
| 388 | FT_FWord value; /* kerning value */
|
---|
| 389 |
|
---|
| 390 | } TT_Kern0_PairRec, *TT_Kern0_Pair;
|
---|
| 391 |
|
---|
| 392 | #endif /* !OPTIMIZE_MEMORY */
|
---|
| 393 |
|
---|
| 394 |
|
---|
| 395 | /*************************************************************************/
|
---|
| 396 | /*************************************************************************/
|
---|
| 397 | /*************************************************************************/
|
---|
| 398 | /*** ***/
|
---|
| 399 | /*** ***/
|
---|
| 400 | /*** EMBEDDED BITMAPS SUPPORT ***/
|
---|
| 401 | /*** ***/
|
---|
| 402 | /*** ***/
|
---|
| 403 | /*************************************************************************/
|
---|
| 404 | /*************************************************************************/
|
---|
| 405 | /*************************************************************************/
|
---|
| 406 |
|
---|
| 407 |
|
---|
| 408 | /*************************************************************************/
|
---|
| 409 | /* */
|
---|
| 410 | /* <Struct> */
|
---|
| 411 | /* TT_SBit_MetricsRec */
|
---|
| 412 | /* */
|
---|
| 413 | /* <Description> */
|
---|
| 414 | /* A structure used to hold the big metrics of a given glyph bitmap */
|
---|
| 415 | /* in a TrueType or OpenType font. These are usually found in the */
|
---|
| 416 | /* `EBDT' (Microsoft) or `bloc' (Apple) table. */
|
---|
| 417 | /* */
|
---|
| 418 | /* <Fields> */
|
---|
| 419 | /* height :: The glyph height in pixels. */
|
---|
| 420 | /* */
|
---|
| 421 | /* width :: The glyph width in pixels. */
|
---|
| 422 | /* */
|
---|
| 423 | /* horiBearingX :: The horizontal left bearing. */
|
---|
| 424 | /* */
|
---|
| 425 | /* horiBearingY :: The horizontal top bearing. */
|
---|
| 426 | /* */
|
---|
| 427 | /* horiAdvance :: The horizontal advance. */
|
---|
| 428 | /* */
|
---|
| 429 | /* vertBearingX :: The vertical left bearing. */
|
---|
| 430 | /* */
|
---|
| 431 | /* vertBearingY :: The vertical top bearing. */
|
---|
| 432 | /* */
|
---|
| 433 | /* vertAdvance :: The vertical advance. */
|
---|
| 434 | /* */
|
---|
| 435 | typedef struct TT_SBit_MetricsRec_
|
---|
| 436 | {
|
---|
| 437 | FT_Byte height;
|
---|
| 438 | FT_Byte width;
|
---|
| 439 |
|
---|
| 440 | FT_Char horiBearingX;
|
---|
| 441 | FT_Char horiBearingY;
|
---|
| 442 | FT_Byte horiAdvance;
|
---|
| 443 |
|
---|
| 444 | FT_Char vertBearingX;
|
---|
| 445 | FT_Char vertBearingY;
|
---|
| 446 | FT_Byte vertAdvance;
|
---|
| 447 |
|
---|
| 448 | } TT_SBit_MetricsRec, *TT_SBit_Metrics;
|
---|
| 449 |
|
---|
| 450 |
|
---|
| 451 | /*************************************************************************/
|
---|
| 452 | /* */
|
---|
| 453 | /* <Struct> */
|
---|
| 454 | /* TT_SBit_SmallMetricsRec */
|
---|
| 455 | /* */
|
---|
| 456 | /* <Description> */
|
---|
| 457 | /* A structure used to hold the small metrics of a given glyph bitmap */
|
---|
| 458 | /* in a TrueType or OpenType font. These are usually found in the */
|
---|
| 459 | /* `EBDT' (Microsoft) or the `bdat' (Apple) table. */
|
---|
| 460 | /* */
|
---|
| 461 | /* <Fields> */
|
---|
| 462 | /* height :: The glyph height in pixels. */
|
---|
| 463 | /* */
|
---|
| 464 | /* width :: The glyph width in pixels. */
|
---|
| 465 | /* */
|
---|
| 466 | /* bearingX :: The left-side bearing. */
|
---|
| 467 | /* */
|
---|
| 468 | /* bearingY :: The top-side bearing. */
|
---|
| 469 | /* */
|
---|
| 470 | /* advance :: The advance width or height. */
|
---|
| 471 | /* */
|
---|
| 472 | typedef struct TT_SBit_Small_Metrics_
|
---|
| 473 | {
|
---|
| 474 | FT_Byte height;
|
---|
| 475 | FT_Byte width;
|
---|
| 476 |
|
---|
| 477 | FT_Char bearingX;
|
---|
| 478 | FT_Char bearingY;
|
---|
| 479 | FT_Byte advance;
|
---|
| 480 |
|
---|
| 481 | } TT_SBit_SmallMetricsRec, *TT_SBit_SmallMetrics;
|
---|
| 482 |
|
---|
| 483 |
|
---|
| 484 | /*************************************************************************/
|
---|
| 485 | /* */
|
---|
| 486 | /* <Struct> */
|
---|
| 487 | /* TT_SBit_LineMetricsRec */
|
---|
| 488 | /* */
|
---|
| 489 | /* <Description> */
|
---|
| 490 | /* A structure used to describe the text line metrics of a given */
|
---|
| 491 | /* bitmap strike, for either a horizontal or vertical layout. */
|
---|
| 492 | /* */
|
---|
| 493 | /* <Fields> */
|
---|
| 494 | /* ascender :: The ascender in pixels. */
|
---|
| 495 | /* */
|
---|
| 496 | /* descender :: The descender in pixels. */
|
---|
| 497 | /* */
|
---|
| 498 | /* max_width :: The maximum glyph width in pixels. */
|
---|
| 499 | /* */
|
---|
| 500 | /* caret_slope_enumerator :: Rise of the caret slope, typically set */
|
---|
| 501 | /* to 1 for non-italic fonts. */
|
---|
| 502 | /* */
|
---|
| 503 | /* caret_slope_denominator :: Rise of the caret slope, typically set */
|
---|
| 504 | /* to 0 for non-italic fonts. */
|
---|
| 505 | /* */
|
---|
| 506 | /* caret_offset :: Offset in pixels to move the caret for */
|
---|
| 507 | /* proper positioning. */
|
---|
| 508 | /* */
|
---|
| 509 | /* min_origin_SB :: Minimum of horiBearingX (resp. */
|
---|
| 510 | /* vertBearingY). */
|
---|
| 511 | /* min_advance_SB :: Minimum of */
|
---|
| 512 | /* */
|
---|
| 513 | /* horizontal advance - */
|
---|
| 514 | /* ( horiBearingX + width ) */
|
---|
| 515 | /* */
|
---|
| 516 | /* resp. */
|
---|
| 517 | /* */
|
---|
| 518 | /* vertical advance - */
|
---|
| 519 | /* ( vertBearingY + height ) */
|
---|
| 520 | /* */
|
---|
| 521 | /* max_before_BL :: Maximum of horiBearingY (resp. */
|
---|
| 522 | /* vertBearingY). */
|
---|
| 523 | /* */
|
---|
| 524 | /* min_after_BL :: Minimum of */
|
---|
| 525 | /* */
|
---|
| 526 | /* horiBearingY - height */
|
---|
| 527 | /* */
|
---|
| 528 | /* resp. */
|
---|
| 529 | /* */
|
---|
| 530 | /* vertBearingX - width */
|
---|
| 531 | /* */
|
---|
| 532 | /* pads :: Unused (to make the size of the record */
|
---|
| 533 | /* a multiple of 32 bits. */
|
---|
| 534 | /* */
|
---|
| 535 | typedef struct TT_SBit_LineMetricsRec_
|
---|
| 536 | {
|
---|
| 537 | FT_Char ascender;
|
---|
| 538 | FT_Char descender;
|
---|
| 539 | FT_Byte max_width;
|
---|
| 540 | FT_Char caret_slope_numerator;
|
---|
| 541 | FT_Char caret_slope_denominator;
|
---|
| 542 | FT_Char caret_offset;
|
---|
| 543 | FT_Char min_origin_SB;
|
---|
| 544 | FT_Char min_advance_SB;
|
---|
| 545 | FT_Char max_before_BL;
|
---|
| 546 | FT_Char min_after_BL;
|
---|
| 547 | FT_Char pads[2];
|
---|
| 548 |
|
---|
| 549 | } TT_SBit_LineMetricsRec, *TT_SBit_LineMetrics;
|
---|
| 550 |
|
---|
| 551 |
|
---|
| 552 | /*************************************************************************/
|
---|
| 553 | /* */
|
---|
| 554 | /* <Struct> */
|
---|
| 555 | /* TT_SBit_RangeRec */
|
---|
| 556 | /* */
|
---|
| 557 | /* <Description> */
|
---|
| 558 | /* A TrueType/OpenType subIndexTable as defined in the `EBLC' */
|
---|
| 559 | /* (Microsoft) or `bloc' (Apple) tables. */
|
---|
| 560 | /* */
|
---|
| 561 | /* <Fields> */
|
---|
| 562 | /* first_glyph :: The first glyph index in the range. */
|
---|
| 563 | /* */
|
---|
| 564 | /* last_glyph :: The last glyph index in the range. */
|
---|
| 565 | /* */
|
---|
| 566 | /* index_format :: The format of index table. Valid values are 1 */
|
---|
| 567 | /* to 5. */
|
---|
| 568 | /* */
|
---|
| 569 | /* image_format :: The format of `EBDT' image data. */
|
---|
| 570 | /* */
|
---|
| 571 | /* image_offset :: The offset to image data in `EBDT'. */
|
---|
| 572 | /* */
|
---|
| 573 | /* image_size :: For index formats 2 and 5. This is the size in */
|
---|
| 574 | /* bytes of each glyph bitmap. */
|
---|
| 575 | /* */
|
---|
| 576 | /* big_metrics :: For index formats 2 and 5. This is the big */
|
---|
| 577 | /* metrics for each glyph bitmap. */
|
---|
| 578 | /* */
|
---|
| 579 | /* num_glyphs :: For index formats 4 and 5. This is the number of */
|
---|
| 580 | /* glyphs in the code array. */
|
---|
| 581 | /* */
|
---|
| 582 | /* glyph_offsets :: For index formats 1 and 3. */
|
---|
| 583 | /* */
|
---|
| 584 | /* glyph_codes :: For index formats 4 and 5. */
|
---|
| 585 | /* */
|
---|
| 586 | /* table_offset :: The offset of the index table in the `EBLC' */
|
---|
| 587 | /* table. Only used during strike loading. */
|
---|
| 588 | /* */
|
---|
| 589 | typedef struct TT_SBit_RangeRec
|
---|
| 590 | {
|
---|
| 591 | FT_UShort first_glyph;
|
---|
| 592 | FT_UShort last_glyph;
|
---|
| 593 |
|
---|
| 594 | FT_UShort index_format;
|
---|
| 595 | FT_UShort image_format;
|
---|
| 596 | FT_ULong image_offset;
|
---|
| 597 |
|
---|
| 598 | FT_ULong image_size;
|
---|
| 599 | TT_SBit_MetricsRec metrics;
|
---|
| 600 | FT_ULong num_glyphs;
|
---|
| 601 |
|
---|
| 602 | FT_ULong* glyph_offsets;
|
---|
| 603 | FT_UShort* glyph_codes;
|
---|
| 604 |
|
---|
| 605 | FT_ULong table_offset;
|
---|
| 606 |
|
---|
| 607 | } TT_SBit_RangeRec, *TT_SBit_Range;
|
---|
| 608 |
|
---|
| 609 |
|
---|
| 610 | /*************************************************************************/
|
---|
| 611 | /* */
|
---|
| 612 | /* <Struct> */
|
---|
| 613 | /* TT_SBit_StrikeRec */
|
---|
| 614 | /* */
|
---|
| 615 | /* <Description> */
|
---|
| 616 | /* A structure used describe a given bitmap strike in the `EBLC' */
|
---|
| 617 | /* (Microsoft) or `bloc' (Apple) tables. */
|
---|
| 618 | /* */
|
---|
| 619 | /* <Fields> */
|
---|
| 620 | /* num_index_ranges :: The number of index ranges. */
|
---|
| 621 | /* */
|
---|
| 622 | /* index_ranges :: An array of glyph index ranges. */
|
---|
| 623 | /* */
|
---|
| 624 | /* color_ref :: Unused. `color_ref' is put in for future */
|
---|
| 625 | /* enhancements, but these fields are already */
|
---|
| 626 | /* in use by other platforms (e.g. Newton). */
|
---|
| 627 | /* For details, please see */
|
---|
| 628 | /* */
|
---|
| 629 | /* http://fonts.apple.com/ */
|
---|
| 630 | /* TTRefMan/RM06/Chap6bloc.html */
|
---|
| 631 | /* */
|
---|
| 632 | /* hori :: The line metrics for horizontal layouts. */
|
---|
| 633 | /* */
|
---|
| 634 | /* vert :: The line metrics for vertical layouts. */
|
---|
| 635 | /* */
|
---|
| 636 | /* start_glyph :: The lowest glyph index for this strike. */
|
---|
| 637 | /* */
|
---|
| 638 | /* end_glyph :: The highest glyph index for this strike. */
|
---|
| 639 | /* */
|
---|
| 640 | /* x_ppem :: The number of horizontal pixels per EM. */
|
---|
| 641 | /* */
|
---|
| 642 | /* y_ppem :: The number of vertical pixels per EM. */
|
---|
| 643 | /* */
|
---|
| 644 | /* bit_depth :: The bit depth. Valid values are 1, 2, 4, */
|
---|
| 645 | /* and 8. */
|
---|
| 646 | /* */
|
---|
| 647 | /* flags :: Is this a vertical or horizontal strike? For */
|
---|
| 648 | /* details, please see */
|
---|
| 649 | /* */
|
---|
| 650 | /* http://fonts.apple.com/ */
|
---|
| 651 | /* TTRefMan/RM06/Chap6bloc.html */
|
---|
| 652 | /* */
|
---|
| 653 | typedef struct TT_SBit_StrikeRec_
|
---|
| 654 | {
|
---|
| 655 | FT_Int num_ranges;
|
---|
| 656 | TT_SBit_Range sbit_ranges;
|
---|
| 657 | FT_ULong ranges_offset;
|
---|
| 658 |
|
---|
| 659 | FT_ULong color_ref;
|
---|
| 660 |
|
---|
| 661 | TT_SBit_LineMetricsRec hori;
|
---|
| 662 | TT_SBit_LineMetricsRec vert;
|
---|
| 663 |
|
---|
| 664 | FT_UShort start_glyph;
|
---|
| 665 | FT_UShort end_glyph;
|
---|
| 666 |
|
---|
| 667 | FT_Byte x_ppem;
|
---|
| 668 | FT_Byte y_ppem;
|
---|
| 669 |
|
---|
| 670 | FT_Byte bit_depth;
|
---|
| 671 | FT_Char flags;
|
---|
| 672 |
|
---|
| 673 | } TT_SBit_StrikeRec, *TT_SBit_Strike;
|
---|
| 674 |
|
---|
| 675 |
|
---|
| 676 | /*************************************************************************/
|
---|
| 677 | /* */
|
---|
| 678 | /* <Struct> */
|
---|
| 679 | /* TT_SBit_ComponentRec */
|
---|
| 680 | /* */
|
---|
| 681 | /* <Description> */
|
---|
| 682 | /* A simple structure to describe a compound sbit element. */
|
---|
| 683 | /* */
|
---|
| 684 | /* <Fields> */
|
---|
| 685 | /* glyph_code :: The element's glyph index. */
|
---|
| 686 | /* */
|
---|
| 687 | /* x_offset :: The element's left bearing. */
|
---|
| 688 | /* */
|
---|
| 689 | /* y_offset :: The element's top bearing. */
|
---|
| 690 | /* */
|
---|
| 691 | typedef struct TT_SBit_ComponentRec_
|
---|
| 692 | {
|
---|
| 693 | FT_UShort glyph_code;
|
---|
| 694 | FT_Char x_offset;
|
---|
| 695 | FT_Char y_offset;
|
---|
| 696 |
|
---|
| 697 | } TT_SBit_ComponentRec, *TT_SBit_Component;
|
---|
| 698 |
|
---|
| 699 |
|
---|
| 700 | /*************************************************************************/
|
---|
| 701 | /* */
|
---|
| 702 | /* <Struct> */
|
---|
| 703 | /* TT_SBit_ScaleRec */
|
---|
| 704 | /* */
|
---|
| 705 | /* <Description> */
|
---|
| 706 | /* A structure used describe a given bitmap scaling table, as defined */
|
---|
| 707 | /* in the `EBSC' table. */
|
---|
| 708 | /* */
|
---|
| 709 | /* <Fields> */
|
---|
| 710 | /* hori :: The horizontal line metrics. */
|
---|
| 711 | /* */
|
---|
| 712 | /* vert :: The vertical line metrics. */
|
---|
| 713 | /* */
|
---|
| 714 | /* x_ppem :: The number of horizontal pixels per EM. */
|
---|
| 715 | /* */
|
---|
| 716 | /* y_ppem :: The number of vertical pixels per EM. */
|
---|
| 717 | /* */
|
---|
| 718 | /* x_ppem_substitute :: Substitution x_ppem value. */
|
---|
| 719 | /* */
|
---|
| 720 | /* y_ppem_substitute :: Substitution y_ppem value. */
|
---|
| 721 | /* */
|
---|
| 722 | typedef struct TT_SBit_ScaleRec_
|
---|
| 723 | {
|
---|
| 724 | TT_SBit_LineMetricsRec hori;
|
---|
| 725 | TT_SBit_LineMetricsRec vert;
|
---|
| 726 |
|
---|
| 727 | FT_Byte x_ppem;
|
---|
| 728 | FT_Byte y_ppem;
|
---|
| 729 |
|
---|
| 730 | FT_Byte x_ppem_substitute;
|
---|
| 731 | FT_Byte y_ppem_substitute;
|
---|
| 732 |
|
---|
| 733 | } TT_SBit_ScaleRec, *TT_SBit_Scale;
|
---|
| 734 |
|
---|
| 735 |
|
---|
| 736 | /*************************************************************************/
|
---|
| 737 | /*************************************************************************/
|
---|
| 738 | /*************************************************************************/
|
---|
| 739 | /*** ***/
|
---|
| 740 | /*** ***/
|
---|
| 741 | /*** POSTSCRIPT GLYPH NAMES SUPPORT ***/
|
---|
| 742 | /*** ***/
|
---|
| 743 | /*** ***/
|
---|
| 744 | /*************************************************************************/
|
---|
| 745 | /*************************************************************************/
|
---|
| 746 | /*************************************************************************/
|
---|
| 747 |
|
---|
| 748 |
|
---|
| 749 | /*************************************************************************/
|
---|
| 750 | /* */
|
---|
| 751 | /* <Struct> */
|
---|
| 752 | /* TT_Post_20Rec */
|
---|
| 753 | /* */
|
---|
| 754 | /* <Description> */
|
---|
| 755 | /* Postscript names sub-table, format 2.0. Stores the PS name of */
|
---|
| 756 | /* each glyph in the font face. */
|
---|
| 757 | /* */
|
---|
| 758 | /* <Fields> */
|
---|
| 759 | /* num_glyphs :: The number of named glyphs in the table. */
|
---|
| 760 | /* */
|
---|
| 761 | /* num_names :: The number of PS names stored in the table. */
|
---|
| 762 | /* */
|
---|
| 763 | /* glyph_indices :: The indices of the glyphs in the names arrays. */
|
---|
| 764 | /* */
|
---|
| 765 | /* glyph_names :: The PS names not in Mac Encoding. */
|
---|
| 766 | /* */
|
---|
| 767 | typedef struct TT_Post_20Rec_
|
---|
| 768 | {
|
---|
| 769 | FT_UShort num_glyphs;
|
---|
| 770 | FT_UShort num_names;
|
---|
| 771 | FT_UShort* glyph_indices;
|
---|
| 772 | FT_Char** glyph_names;
|
---|
| 773 |
|
---|
| 774 | } TT_Post_20Rec, *TT_Post_20;
|
---|
| 775 |
|
---|
| 776 |
|
---|
| 777 | /*************************************************************************/
|
---|
| 778 | /* */
|
---|
| 779 | /* <Struct> */
|
---|
| 780 | /* TT_Post_25Rec */
|
---|
| 781 | /* */
|
---|
| 782 | /* <Description> */
|
---|
| 783 | /* Postscript names sub-table, format 2.5. Stores the PS name of */
|
---|
| 784 | /* each glyph in the font face. */
|
---|
| 785 | /* */
|
---|
| 786 | /* <Fields> */
|
---|
| 787 | /* num_glyphs :: The number of glyphs in the table. */
|
---|
| 788 | /* */
|
---|
| 789 | /* offsets :: An array of signed offsets in a normal Mac */
|
---|
| 790 | /* Postscript name encoding. */
|
---|
| 791 | /* */
|
---|
| 792 | typedef struct TT_Post_25_
|
---|
| 793 | {
|
---|
| 794 | FT_UShort num_glyphs;
|
---|
| 795 | FT_Char* offsets;
|
---|
| 796 |
|
---|
| 797 | } TT_Post_25Rec, *TT_Post_25;
|
---|
| 798 |
|
---|
| 799 |
|
---|
| 800 | /*************************************************************************/
|
---|
| 801 | /* */
|
---|
| 802 | /* <Struct> */
|
---|
| 803 | /* TT_Post_NamesRec */
|
---|
| 804 | /* */
|
---|
| 805 | /* <Description> */
|
---|
| 806 | /* Postscript names table, either format 2.0 or 2.5. */
|
---|
| 807 | /* */
|
---|
| 808 | /* <Fields> */
|
---|
| 809 | /* loaded :: A flag to indicate whether the PS names are loaded. */
|
---|
| 810 | /* */
|
---|
| 811 | /* format_20 :: The sub-table used for format 2.0. */
|
---|
| 812 | /* */
|
---|
| 813 | /* format_25 :: The sub-table used for format 2.5. */
|
---|
| 814 | /* */
|
---|
| 815 | typedef struct TT_Post_NamesRec_
|
---|
| 816 | {
|
---|
| 817 | FT_Bool loaded;
|
---|
| 818 |
|
---|
| 819 | union
|
---|
| 820 | {
|
---|
| 821 | TT_Post_20Rec format_20;
|
---|
| 822 | TT_Post_25Rec format_25;
|
---|
| 823 |
|
---|
| 824 | } names;
|
---|
| 825 |
|
---|
| 826 | } TT_Post_NamesRec, *TT_Post_Names;
|
---|
| 827 |
|
---|
| 828 |
|
---|
| 829 | /*************************************************************************/
|
---|
| 830 | /*************************************************************************/
|
---|
| 831 | /*************************************************************************/
|
---|
| 832 | /*** ***/
|
---|
| 833 | /*** ***/
|
---|
| 834 | /*** GX VARIATION TABLE SUPPORT ***/
|
---|
| 835 | /*** ***/
|
---|
| 836 | /*** ***/
|
---|
| 837 | /*************************************************************************/
|
---|
| 838 | /*************************************************************************/
|
---|
| 839 | /*************************************************************************/
|
---|
| 840 |
|
---|
| 841 |
|
---|
| 842 | #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
---|
| 843 | typedef struct GX_BlendRec_ *GX_Blend;
|
---|
| 844 | #endif
|
---|
| 845 |
|
---|
| 846 |
|
---|
| 847 | /*************************************************************************/
|
---|
| 848 | /*************************************************************************/
|
---|
| 849 | /*************************************************************************/
|
---|
| 850 | /*** ***/
|
---|
| 851 | /*** ***/
|
---|
| 852 | /*** ORIGINAL TT_FACE CLASS DEFINITION ***/
|
---|
| 853 | /*** ***/
|
---|
| 854 | /*** ***/
|
---|
| 855 | /*************************************************************************/
|
---|
| 856 | /*************************************************************************/
|
---|
| 857 | /*************************************************************************/
|
---|
| 858 |
|
---|
| 859 |
|
---|
| 860 | /*************************************************************************/
|
---|
| 861 | /* */
|
---|
| 862 | /* This structure/class is defined here because it is common to the */
|
---|
| 863 | /* following formats: TTF, OpenType-TT, and OpenType-CFF. */
|
---|
| 864 | /* */
|
---|
| 865 | /* Note, however, that the classes TT_Size and TT_GlyphSlot are not */
|
---|
| 866 | /* shared between font drivers, and are thus defined in `ttobjs.h'. */
|
---|
| 867 | /* */
|
---|
| 868 | /*************************************************************************/
|
---|
| 869 |
|
---|
| 870 |
|
---|
| 871 | /*************************************************************************/
|
---|
| 872 | /* */
|
---|
| 873 | /* <Type> */
|
---|
| 874 | /* TT_Face */
|
---|
| 875 | /* */
|
---|
| 876 | /* <Description> */
|
---|
| 877 | /* A handle to a TrueType face/font object. A TT_Face encapsulates */
|
---|
| 878 | /* the resolution and scaling independent parts of a TrueType font */
|
---|
| 879 | /* resource. */
|
---|
| 880 | /* */
|
---|
| 881 | /* <Note> */
|
---|
| 882 | /* The TT_Face structure is also used as a `parent class' for the */
|
---|
| 883 | /* OpenType-CFF class (T2_Face). */
|
---|
| 884 | /* */
|
---|
| 885 | typedef struct TT_FaceRec_* TT_Face;
|
---|
| 886 |
|
---|
| 887 |
|
---|
| 888 | /* a function type used for the truetype bytecode interpreter hooks */
|
---|
| 889 | typedef FT_Error
|
---|
| 890 | (*TT_Interpreter)( void* exec_context );
|
---|
| 891 |
|
---|
| 892 | /* forward declaration */
|
---|
| 893 | typedef struct TT_LoaderRec_* TT_Loader;
|
---|
| 894 |
|
---|
| 895 |
|
---|
| 896 | /*************************************************************************/
|
---|
| 897 | /* */
|
---|
| 898 | /* <FuncType> */
|
---|
| 899 | /* TT_Loader_GotoTableFunc */
|
---|
| 900 | /* */
|
---|
| 901 | /* <Description> */
|
---|
| 902 | /* Seeks a stream to the start of a given TrueType table. */
|
---|
| 903 | /* */
|
---|
| 904 | /* <Input> */
|
---|
| 905 | /* face :: A handle to the target face object. */
|
---|
| 906 | /* */
|
---|
| 907 | /* tag :: A 4-byte tag used to name the table. */
|
---|
| 908 | /* */
|
---|
| 909 | /* stream :: The input stream. */
|
---|
| 910 | /* */
|
---|
| 911 | /* <Output> */
|
---|
| 912 | /* length :: The length of the table in bytes. Set to 0 if not */
|
---|
| 913 | /* needed. */
|
---|
| 914 | /* */
|
---|
| 915 | /* <Return> */
|
---|
| 916 | /* FreeType error code. 0 means success. */
|
---|
| 917 | /* */
|
---|
| 918 | /* <Note> */
|
---|
| 919 | /* The stream cursor must be at the font file's origin. */
|
---|
| 920 | /* */
|
---|
| 921 | typedef FT_Error
|
---|
| 922 | (*TT_Loader_GotoTableFunc)( TT_Face face,
|
---|
| 923 | FT_ULong tag,
|
---|
| 924 | FT_Stream stream,
|
---|
| 925 | FT_ULong* length );
|
---|
| 926 |
|
---|
| 927 |
|
---|
| 928 | /*************************************************************************/
|
---|
| 929 | /* */
|
---|
| 930 | /* <FuncType> */
|
---|
| 931 | /* TT_Loader_StartGlyphFunc */
|
---|
| 932 | /* */
|
---|
| 933 | /* <Description> */
|
---|
| 934 | /* Seeks a stream to the start of a given glyph element, and opens a */
|
---|
| 935 | /* frame for it. */
|
---|
| 936 | /* */
|
---|
| 937 | /* <Input> */
|
---|
| 938 | /* loader :: The current TrueType glyph loader object. */
|
---|
| 939 | /* */
|
---|
| 940 | /* glyph index :: The index of the glyph to access. */
|
---|
| 941 | /* */
|
---|
| 942 | /* offset :: The offset of the glyph according to the */
|
---|
| 943 | /* `locations' table. */
|
---|
| 944 | /* */
|
---|
| 945 | /* byte_count :: The size of the frame in bytes. */
|
---|
| 946 | /* */
|
---|
| 947 | /* <Return> */
|
---|
| 948 | /* FreeType error code. 0 means success. */
|
---|
| 949 | /* */
|
---|
| 950 | /* <Note> */
|
---|
| 951 | /* This function is normally equivalent to FT_STREAM_SEEK(offset) */
|
---|
| 952 | /* followed by FT_FRAME_ENTER(byte_count) with the loader's stream, */
|
---|
| 953 | /* but alternative formats (e.g. compressed ones) might use something */
|
---|
| 954 | /* different. */
|
---|
| 955 | /* */
|
---|
| 956 | typedef FT_Error
|
---|
| 957 | (*TT_Loader_StartGlyphFunc)( TT_Loader loader,
|
---|
| 958 | FT_UInt glyph_index,
|
---|
| 959 | FT_ULong offset,
|
---|
| 960 | FT_UInt byte_count );
|
---|
| 961 |
|
---|
| 962 |
|
---|
| 963 | /*************************************************************************/
|
---|
| 964 | /* */
|
---|
| 965 | /* <FuncType> */
|
---|
| 966 | /* TT_Loader_ReadGlyphFunc */
|
---|
| 967 | /* */
|
---|
| 968 | /* <Description> */
|
---|
| 969 | /* Reads one glyph element (its header, a simple glyph, or a */
|
---|
| 970 | /* composite) from the loader's current stream frame. */
|
---|
| 971 | /* */
|
---|
| 972 | /* <Input> */
|
---|
| 973 | /* loader :: The current TrueType glyph loader object. */
|
---|
| 974 | /* */
|
---|
| 975 | /* <Return> */
|
---|
| 976 | /* FreeType error code. 0 means success. */
|
---|
| 977 | /* */
|
---|
| 978 | typedef FT_Error
|
---|
| 979 | (*TT_Loader_ReadGlyphFunc)( TT_Loader loader );
|
---|
| 980 |
|
---|
| 981 |
|
---|
| 982 | /*************************************************************************/
|
---|
| 983 | /* */
|
---|
| 984 | /* <FuncType> */
|
---|
| 985 | /* TT_Loader_EndGlyphFunc */
|
---|
| 986 | /* */
|
---|
| 987 | /* <Description> */
|
---|
| 988 | /* Closes the current loader stream frame for the glyph. */
|
---|
| 989 | /* */
|
---|
| 990 | /* <Input> */
|
---|
| 991 | /* loader :: The current TrueType glyph loader object. */
|
---|
| 992 | /* */
|
---|
| 993 | typedef void
|
---|
| 994 | (*TT_Loader_EndGlyphFunc)( TT_Loader loader );
|
---|
| 995 |
|
---|
| 996 |
|
---|
| 997 | /*************************************************************************/
|
---|
| 998 | /* */
|
---|
| 999 | /* TrueType Face Type */
|
---|
| 1000 | /* */
|
---|
| 1001 | /* <Struct> */
|
---|
| 1002 | /* TT_Face */
|
---|
| 1003 | /* */
|
---|
| 1004 | /* <Description> */
|
---|
| 1005 | /* The TrueType face class. These objects model the resolution and */
|
---|
| 1006 | /* point-size independent data found in a TrueType font file. */
|
---|
| 1007 | /* */
|
---|
| 1008 | /* <Fields> */
|
---|
| 1009 | /* root :: The base FT_Face structure, managed by the */
|
---|
| 1010 | /* base layer. */
|
---|
| 1011 | /* */
|
---|
| 1012 | /* ttc_header :: The TrueType collection header, used when */
|
---|
| 1013 | /* the file is a `ttc' rather than a `ttf'. */
|
---|
| 1014 | /* For ordinary font files, the field */
|
---|
| 1015 | /* `ttc_header.count' is set to 0. */
|
---|
| 1016 | /* */
|
---|
| 1017 | /* format_tag :: The font format tag. */
|
---|
| 1018 | /* */
|
---|
| 1019 | /* num_tables :: The number of TrueType tables in this font */
|
---|
| 1020 | /* file. */
|
---|
| 1021 | /* */
|
---|
| 1022 | /* dir_tables :: The directory of TrueType tables for this */
|
---|
| 1023 | /* font file. */
|
---|
| 1024 | /* */
|
---|
| 1025 | /* header :: The font's font header (`head' table). */
|
---|
| 1026 | /* Read on font opening. */
|
---|
| 1027 | /* */
|
---|
| 1028 | /* horizontal :: The font's horizontal header (`hhea' */
|
---|
| 1029 | /* table). This field also contains the */
|
---|
| 1030 | /* associated horizontal metrics table */
|
---|
| 1031 | /* (`hmtx'). */
|
---|
| 1032 | /* */
|
---|
| 1033 | /* max_profile :: The font's maximum profile table. Read on */
|
---|
| 1034 | /* font opening. Note that some maximum */
|
---|
| 1035 | /* values cannot be taken directly from this */
|
---|
| 1036 | /* table. We thus define additional fields */
|
---|
| 1037 | /* below to hold the computed maxima. */
|
---|
| 1038 | /* */
|
---|
| 1039 | /* max_components :: The maximum number of glyph components */
|
---|
| 1040 | /* required to load any composite glyph from */
|
---|
| 1041 | /* this font. Used to size the load stack. */
|
---|
| 1042 | /* */
|
---|
| 1043 | /* vertical_info :: A boolean which is set when the font file */
|
---|
| 1044 | /* contains vertical metrics. If not, the */
|
---|
| 1045 | /* value of the `vertical' field is */
|
---|
| 1046 | /* undefined. */
|
---|
| 1047 | /* */
|
---|
| 1048 | /* vertical :: The font's vertical header (`vhea' table). */
|
---|
| 1049 | /* This field also contains the associated */
|
---|
| 1050 | /* vertical metrics table (`vmtx'), if found. */
|
---|
| 1051 | /* IMPORTANT: The contents of this field is */
|
---|
| 1052 | /* undefined if the `verticalInfo' field is */
|
---|
| 1053 | /* unset. */
|
---|
| 1054 | /* */
|
---|
| 1055 | /* num_names :: The number of name records within this */
|
---|
| 1056 | /* TrueType font. */
|
---|
| 1057 | /* */
|
---|
| 1058 | /* name_table :: The table of name records (`name'). */
|
---|
| 1059 | /* */
|
---|
| 1060 | /* os2 :: The font's OS/2 table (`OS/2'). */
|
---|
| 1061 | /* */
|
---|
| 1062 | /* postscript :: The font's PostScript table (`post' */
|
---|
| 1063 | /* table). The PostScript glyph names are */
|
---|
| 1064 | /* not loaded by the driver on face opening. */
|
---|
| 1065 | /* See the `ttpost' module for more details. */
|
---|
| 1066 | /* */
|
---|
| 1067 | /* cmap_table :: Address of the face's `cmap' SFNT table */
|
---|
| 1068 | /* in memory (it's an extracted frame). */
|
---|
| 1069 | /* */
|
---|
| 1070 | /* cmap_size :: The size in bytes of the `cmap_table' */
|
---|
| 1071 | /* described above. */
|
---|
| 1072 | /* */
|
---|
| 1073 | /* goto_table :: A function called by each TrueType table */
|
---|
| 1074 | /* loader to position a stream's cursor to */
|
---|
| 1075 | /* the start of a given table according to */
|
---|
| 1076 | /* its tag. It defaults to TT_Goto_Face but */
|
---|
| 1077 | /* can be different for strange formats (e.g. */
|
---|
| 1078 | /* Type 42). */
|
---|
| 1079 | /* */
|
---|
| 1080 | /* access_glyph_frame :: A function used to access the frame of a */
|
---|
| 1081 | /* given glyph within the face's font file. */
|
---|
| 1082 | /* */
|
---|
| 1083 | /* forget_glyph_frame :: A function used to forget the frame of a */
|
---|
| 1084 | /* given glyph when all data has been loaded. */
|
---|
| 1085 | /* */
|
---|
| 1086 | /* read_glyph_header :: A function used to read a glyph header. */
|
---|
| 1087 | /* It must be called between an `access' and */
|
---|
| 1088 | /* `forget'. */
|
---|
| 1089 | /* */
|
---|
| 1090 | /* read_simple_glyph :: A function used to read a simple glyph. */
|
---|
| 1091 | /* It must be called after the header was */
|
---|
| 1092 | /* read, and before the `forget'. */
|
---|
| 1093 | /* */
|
---|
| 1094 | /* read_composite_glyph :: A function used to read a composite glyph. */
|
---|
| 1095 | /* It must be called after the header was */
|
---|
| 1096 | /* read, and before the `forget'. */
|
---|
| 1097 | /* */
|
---|
| 1098 | /* sfnt :: A pointer to the SFNT service. */
|
---|
| 1099 | /* */
|
---|
| 1100 | /* psnames :: A pointer to the PostScript names service. */
|
---|
| 1101 | /* */
|
---|
| 1102 | /* hdmx :: The face's horizontal device metrics */
|
---|
| 1103 | /* (`hdmx' table). This table is optional in */
|
---|
| 1104 | /* TrueType/OpenType fonts. */
|
---|
| 1105 | /* */
|
---|
| 1106 | /* gasp :: The grid-fitting and scaling properties */
|
---|
| 1107 | /* table (`gasp'). This table is optional in */
|
---|
| 1108 | /* TrueType/OpenType fonts. */
|
---|
| 1109 | /* */
|
---|
| 1110 | /* pclt :: The `pclt' SFNT table. */
|
---|
| 1111 | /* */
|
---|
| 1112 | /* num_sbit_strikes :: The number of sbit strikes, i.e., bitmap */
|
---|
| 1113 | /* sizes, embedded in this font. */
|
---|
| 1114 | /* */
|
---|
| 1115 | /* sbit_strikes :: An array of sbit strikes embedded in this */
|
---|
| 1116 | /* font. This table is optional in a */
|
---|
| 1117 | /* TrueType/OpenType font. */
|
---|
| 1118 | /* */
|
---|
| 1119 | /* num_sbit_scales :: The number of sbit scales for this font. */
|
---|
| 1120 | /* */
|
---|
| 1121 | /* sbit_scales :: Array of sbit scales embedded in this */
|
---|
| 1122 | /* font. This table is optional in a */
|
---|
| 1123 | /* TrueType/OpenType font. */
|
---|
| 1124 | /* */
|
---|
| 1125 | /* postscript_names :: A table used to store the Postscript names */
|
---|
| 1126 | /* of the glyphs for this font. See the */
|
---|
| 1127 | /* file `ttconfig.h' for comments on the */
|
---|
| 1128 | /* TT_CONFIG_OPTION_POSTSCRIPT_NAMES option. */
|
---|
| 1129 | /* */
|
---|
| 1130 | /* num_locations :: The number of glyph locations in this */
|
---|
| 1131 | /* TrueType file. This should be */
|
---|
| 1132 | /* identical to the number of glyphs. */
|
---|
| 1133 | /* Ignored for Type 2 fonts. */
|
---|
| 1134 | /* */
|
---|
| 1135 | /* glyph_locations :: An array of longs. These are offsets to */
|
---|
| 1136 | /* glyph data within the `glyf' table. */
|
---|
| 1137 | /* Ignored for Type 2 font faces. */
|
---|
| 1138 | /* */
|
---|
| 1139 | /* glyf_len :: The length of the `glyf' table. Needed */
|
---|
| 1140 | /* for malformed `loca' tables. */
|
---|
| 1141 | /* */
|
---|
| 1142 | /* font_program_size :: Size in bytecodes of the face's font */
|
---|
| 1143 | /* program. 0 if none defined. Ignored for */
|
---|
| 1144 | /* Type 2 fonts. */
|
---|
| 1145 | /* */
|
---|
| 1146 | /* font_program :: The face's font program (bytecode stream) */
|
---|
| 1147 | /* executed at load time, also used during */
|
---|
| 1148 | /* glyph rendering. Comes from the `fpgm' */
|
---|
| 1149 | /* table. Ignored for Type 2 font fonts. */
|
---|
| 1150 | /* */
|
---|
| 1151 | /* cvt_program_size :: The size in bytecodes of the face's cvt */
|
---|
| 1152 | /* program. Ignored for Type 2 fonts. */
|
---|
| 1153 | /* */
|
---|
| 1154 | /* cvt_program :: The face's cvt program (bytecode stream) */
|
---|
| 1155 | /* executed each time an instance/size is */
|
---|
| 1156 | /* changed/reset. Comes from the `prep' */
|
---|
| 1157 | /* table. Ignored for Type 2 fonts. */
|
---|
| 1158 | /* */
|
---|
| 1159 | /* cvt_size :: Size of the control value table (in */
|
---|
| 1160 | /* entries). Ignored for Type 2 fonts. */
|
---|
| 1161 | /* */
|
---|
| 1162 | /* cvt :: The face's original control value table. */
|
---|
| 1163 | /* Coordinates are expressed in unscaled font */
|
---|
| 1164 | /* units. Comes from the `cvt ' table. */
|
---|
| 1165 | /* Ignored for Type 2 fonts. */
|
---|
| 1166 | /* */
|
---|
| 1167 | /* num_kern_pairs :: The number of kerning pairs present in the */
|
---|
| 1168 | /* font file. The engine only loads the */
|
---|
| 1169 | /* first horizontal format 0 kern table it */
|
---|
| 1170 | /* finds in the font file. Ignored for */
|
---|
| 1171 | /* Type 2 fonts. */
|
---|
| 1172 | /* */
|
---|
| 1173 | /* kern_table_index :: The index of the kerning table in the font */
|
---|
| 1174 | /* kerning directory. Ignored for Type 2 */
|
---|
| 1175 | /* fonts. */
|
---|
| 1176 | /* */
|
---|
| 1177 | /* interpreter :: A pointer to the TrueType bytecode */
|
---|
| 1178 | /* interpreters field is also used to hook */
|
---|
| 1179 | /* the debugger in `ttdebug'. */
|
---|
| 1180 | /* */
|
---|
| 1181 | /* unpatented_hinting :: If true, use only unpatented methods in */
|
---|
| 1182 | /* the bytecode interpreter. */
|
---|
| 1183 | /* */
|
---|
| 1184 | /* doblend :: A boolean which is set if the font should */
|
---|
| 1185 | /* be blended (this is for GX var). */
|
---|
| 1186 | /* */
|
---|
| 1187 | /* blend :: Contains the data needed to control GX */
|
---|
| 1188 | /* variation tables (rather like Multiple */
|
---|
| 1189 | /* Master data). */
|
---|
| 1190 | /* */
|
---|
| 1191 | /* extra :: Reserved for third-party font drivers. */
|
---|
| 1192 | /* */
|
---|
| 1193 | /* postscript_name :: The PS name of the font. Used by the */
|
---|
| 1194 | /* postscript name service. */
|
---|
| 1195 | /* */
|
---|
| 1196 | typedef struct TT_FaceRec_
|
---|
| 1197 | {
|
---|
| 1198 | FT_FaceRec root;
|
---|
| 1199 |
|
---|
| 1200 | TTC_HeaderRec ttc_header;
|
---|
| 1201 |
|
---|
| 1202 | FT_ULong format_tag;
|
---|
| 1203 | FT_UShort num_tables;
|
---|
| 1204 | TT_Table dir_tables;
|
---|
| 1205 |
|
---|
| 1206 | TT_Header header; /* TrueType header table */
|
---|
| 1207 | TT_HoriHeader horizontal; /* TrueType horizontal header */
|
---|
| 1208 | #ifdef FT_OPTIMIZE_MEMORY
|
---|
| 1209 | FT_Byte* horz_metrics;
|
---|
| 1210 | FT_ULong horz_metrics_size;
|
---|
| 1211 | #endif
|
---|
| 1212 |
|
---|
| 1213 | TT_MaxProfile max_profile;
|
---|
| 1214 | FT_ULong max_components;
|
---|
| 1215 |
|
---|
| 1216 | FT_Bool vertical_info;
|
---|
| 1217 | TT_VertHeader vertical; /* TT Vertical header, if present */
|
---|
| 1218 | #ifdef FT_OPTIMIZE_MEMORY
|
---|
| 1219 | FT_Byte* vert_metrics;
|
---|
| 1220 | FT_ULong vert_metrics_size;
|
---|
| 1221 | #endif
|
---|
| 1222 |
|
---|
| 1223 | FT_UShort num_names; /* number of name records */
|
---|
| 1224 | TT_NameTableRec name_table; /* name table */
|
---|
| 1225 |
|
---|
| 1226 | TT_OS2 os2; /* TrueType OS/2 table */
|
---|
| 1227 | TT_Postscript postscript; /* TrueType Postscript table */
|
---|
| 1228 |
|
---|
| 1229 | FT_Byte* cmap_table; /* extracted 'cmap' table */
|
---|
| 1230 | FT_ULong cmap_size;
|
---|
| 1231 |
|
---|
| 1232 | TT_Loader_GotoTableFunc goto_table;
|
---|
| 1233 |
|
---|
| 1234 | TT_Loader_StartGlyphFunc access_glyph_frame;
|
---|
| 1235 | TT_Loader_EndGlyphFunc forget_glyph_frame;
|
---|
| 1236 | TT_Loader_ReadGlyphFunc read_glyph_header;
|
---|
| 1237 | TT_Loader_ReadGlyphFunc read_simple_glyph;
|
---|
| 1238 | TT_Loader_ReadGlyphFunc read_composite_glyph;
|
---|
| 1239 |
|
---|
| 1240 | /* a typeless pointer to the SFNT_Interface table used to load */
|
---|
| 1241 | /* the basic TrueType tables in the face object */
|
---|
| 1242 | void* sfnt;
|
---|
| 1243 |
|
---|
| 1244 | /* a typeless pointer to the FT_Service_PsCMapsRec table used to */
|
---|
| 1245 | /* handle glyph names <-> unicode & Mac values */
|
---|
| 1246 | void* psnames;
|
---|
| 1247 |
|
---|
| 1248 |
|
---|
| 1249 | /***********************************************************************/
|
---|
| 1250 | /* */
|
---|
| 1251 | /* Optional TrueType/OpenType tables */
|
---|
| 1252 | /* */
|
---|
| 1253 | /***********************************************************************/
|
---|
| 1254 |
|
---|
| 1255 | /* horizontal device metrics */
|
---|
| 1256 | #ifdef FT_OPTIMIZE_MEMORY
|
---|
| 1257 | FT_Byte* hdmx_table;
|
---|
| 1258 | FT_ULong hdmx_table_size;
|
---|
| 1259 | FT_UInt hdmx_record_count;
|
---|
| 1260 | FT_ULong hdmx_record_size;
|
---|
| 1261 | FT_Byte* hdmx_record_sizes;
|
---|
| 1262 | #else
|
---|
| 1263 | TT_HdmxRec hdmx;
|
---|
| 1264 | #endif
|
---|
| 1265 |
|
---|
| 1266 | /* grid-fitting and scaling table */
|
---|
| 1267 | TT_GaspRec gasp; /* the `gasp' table */
|
---|
| 1268 |
|
---|
| 1269 | /* PCL 5 table */
|
---|
| 1270 | TT_PCLT pclt;
|
---|
| 1271 |
|
---|
| 1272 | /* embedded bitmaps support */
|
---|
| 1273 | #ifdef FT_OPTIMIZE_MEMORY
|
---|
| 1274 | FT_Byte* sbit_table;
|
---|
| 1275 | FT_ULong sbit_table_size;
|
---|
| 1276 | FT_UInt sbit_num_strikes;
|
---|
| 1277 | #else
|
---|
| 1278 | FT_ULong num_sbit_strikes;
|
---|
| 1279 | TT_SBit_Strike sbit_strikes;
|
---|
| 1280 | #endif
|
---|
| 1281 |
|
---|
| 1282 | FT_ULong num_sbit_scales;
|
---|
| 1283 | TT_SBit_Scale sbit_scales;
|
---|
| 1284 |
|
---|
| 1285 | /* postscript names table */
|
---|
| 1286 | TT_Post_NamesRec postscript_names;
|
---|
| 1287 |
|
---|
| 1288 |
|
---|
| 1289 | /***********************************************************************/
|
---|
| 1290 | /* */
|
---|
| 1291 | /* TrueType-specific fields (ignored by the OTF-Type2 driver) */
|
---|
| 1292 | /* */
|
---|
| 1293 | /***********************************************************************/
|
---|
| 1294 |
|
---|
| 1295 | /* the glyph locations */
|
---|
| 1296 | #ifdef FT_OPTIMIZE_MEMORY
|
---|
| 1297 | FT_UInt num_locations;
|
---|
| 1298 | FT_Byte* glyph_locations;
|
---|
| 1299 | #else
|
---|
| 1300 | FT_UShort num_locations;
|
---|
| 1301 | FT_Long* glyph_locations;
|
---|
| 1302 | #endif
|
---|
| 1303 |
|
---|
| 1304 | FT_ULong glyf_len;
|
---|
| 1305 |
|
---|
| 1306 | /* the font program, if any */
|
---|
| 1307 | FT_ULong font_program_size;
|
---|
| 1308 | FT_Byte* font_program;
|
---|
| 1309 |
|
---|
| 1310 | /* the cvt program, if any */
|
---|
| 1311 | FT_ULong cvt_program_size;
|
---|
| 1312 | FT_Byte* cvt_program;
|
---|
| 1313 |
|
---|
| 1314 | /* the original, unscaled, control value table */
|
---|
| 1315 | FT_ULong cvt_size;
|
---|
| 1316 | FT_Short* cvt;
|
---|
| 1317 |
|
---|
| 1318 | #ifdef FT_OPTIMIZE_MEMORY
|
---|
| 1319 | FT_Byte* kern_table;
|
---|
| 1320 | FT_ULong kern_table_size;
|
---|
| 1321 | FT_UInt num_kern_tables;
|
---|
| 1322 | FT_UInt32 kern_avail_bits;
|
---|
| 1323 | FT_UInt32 kern_order_bits;
|
---|
| 1324 | #else
|
---|
| 1325 | /* the format 0 kerning table, if any */
|
---|
| 1326 | FT_Int num_kern_pairs;
|
---|
| 1327 | FT_Int kern_table_index;
|
---|
| 1328 | TT_Kern0_Pair kern_pairs;
|
---|
| 1329 | #endif
|
---|
| 1330 |
|
---|
| 1331 | /* A pointer to the bytecode interpreter to use. This is also */
|
---|
| 1332 | /* used to hook the debugger for the `ttdebug' utility. */
|
---|
| 1333 | TT_Interpreter interpreter;
|
---|
| 1334 |
|
---|
| 1335 | #ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING
|
---|
| 1336 | /* Use unpatented hinting only. */
|
---|
| 1337 | FT_Bool unpatented_hinting;
|
---|
| 1338 | #endif
|
---|
| 1339 |
|
---|
| 1340 | #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
---|
| 1341 | FT_Bool doblend;
|
---|
| 1342 | GX_Blend blend;
|
---|
| 1343 | #endif
|
---|
| 1344 |
|
---|
| 1345 | /***********************************************************************/
|
---|
| 1346 | /* */
|
---|
| 1347 | /* Other tables or fields. This is used by derivative formats like */
|
---|
| 1348 | /* OpenType. */
|
---|
| 1349 | /* */
|
---|
| 1350 | /***********************************************************************/
|
---|
| 1351 |
|
---|
| 1352 | FT_Generic extra;
|
---|
| 1353 |
|
---|
| 1354 | const char* postscript_name;
|
---|
| 1355 |
|
---|
| 1356 | } TT_FaceRec;
|
---|
| 1357 |
|
---|
| 1358 |
|
---|
| 1359 | /*************************************************************************/
|
---|
| 1360 | /* */
|
---|
| 1361 | /* <Struct> */
|
---|
| 1362 | /* TT_GlyphZoneRec */
|
---|
| 1363 | /* */
|
---|
| 1364 | /* <Description> */
|
---|
| 1365 | /* A glyph zone is used to load, scale and hint glyph outline */
|
---|
| 1366 | /* coordinates. */
|
---|
| 1367 | /* */
|
---|
| 1368 | /* <Fields> */
|
---|
| 1369 | /* memory :: A handle to the memory manager. */
|
---|
| 1370 | /* */
|
---|
| 1371 | /* max_points :: The maximal size in points of the zone. */
|
---|
| 1372 | /* */
|
---|
| 1373 | /* max_contours :: Max size in links contours of thez one. */
|
---|
| 1374 | /* */
|
---|
| 1375 | /* n_points :: The current number of points in the zone. */
|
---|
| 1376 | /* */
|
---|
| 1377 | /* n_contours :: The current number of contours in the zone. */
|
---|
| 1378 | /* */
|
---|
| 1379 | /* org :: The original glyph coordinates (font */
|
---|
| 1380 | /* units/scaled). */
|
---|
| 1381 | /* */
|
---|
| 1382 | /* cur :: The current glyph coordinates (scaled/hinted). */
|
---|
| 1383 | /* */
|
---|
| 1384 | /* tags :: The point control tags. */
|
---|
| 1385 | /* */
|
---|
| 1386 | /* contours :: The contours end points. */
|
---|
| 1387 | /* */
|
---|
| 1388 | typedef struct TT_GlyphZoneRec_
|
---|
| 1389 | {
|
---|
| 1390 | FT_Memory memory;
|
---|
| 1391 | FT_UShort max_points;
|
---|
| 1392 | FT_UShort max_contours;
|
---|
| 1393 | FT_UShort n_points; /* number of points in zone */
|
---|
| 1394 | FT_Short n_contours; /* number of contours */
|
---|
| 1395 |
|
---|
| 1396 | FT_Vector* org; /* original point coordinates */
|
---|
| 1397 | FT_Vector* cur; /* current point coordinates */
|
---|
| 1398 |
|
---|
| 1399 | FT_Byte* tags; /* current touch flags */
|
---|
| 1400 | FT_UShort* contours; /* contour end points */
|
---|
| 1401 |
|
---|
| 1402 | } TT_GlyphZoneRec, *TT_GlyphZone;
|
---|
| 1403 |
|
---|
| 1404 |
|
---|
| 1405 | /* handle to execution context */
|
---|
| 1406 | typedef struct TT_ExecContextRec_* TT_ExecContext;
|
---|
| 1407 |
|
---|
| 1408 | /* glyph loader structure */
|
---|
| 1409 | typedef struct TT_LoaderRec_
|
---|
| 1410 | {
|
---|
| 1411 | FT_Face face;
|
---|
| 1412 | FT_Size size;
|
---|
| 1413 | FT_GlyphSlot glyph;
|
---|
| 1414 | FT_GlyphLoader gloader;
|
---|
| 1415 |
|
---|
| 1416 | FT_ULong load_flags;
|
---|
| 1417 | FT_UInt glyph_index;
|
---|
| 1418 |
|
---|
| 1419 | FT_Stream stream;
|
---|
| 1420 | FT_Int byte_len;
|
---|
| 1421 |
|
---|
| 1422 | FT_Short n_contours;
|
---|
| 1423 | FT_BBox bbox;
|
---|
| 1424 | FT_Int left_bearing;
|
---|
| 1425 | FT_Int advance;
|
---|
| 1426 | FT_Int top_bearing;
|
---|
| 1427 | FT_Int vadvance;
|
---|
| 1428 | FT_Int linear;
|
---|
| 1429 | FT_Bool linear_def;
|
---|
| 1430 | FT_Bool preserve_pps;
|
---|
| 1431 | FT_Vector pp1;
|
---|
| 1432 | FT_Vector pp2;
|
---|
| 1433 | FT_Vector pp3;
|
---|
| 1434 | FT_Vector pp4;
|
---|
| 1435 |
|
---|
| 1436 | FT_ULong glyf_offset;
|
---|
| 1437 |
|
---|
| 1438 | /* the zone where we load our glyphs */
|
---|
| 1439 | TT_GlyphZoneRec base;
|
---|
| 1440 | TT_GlyphZoneRec zone;
|
---|
| 1441 |
|
---|
| 1442 | TT_ExecContext exec;
|
---|
| 1443 | FT_Byte* instructions;
|
---|
| 1444 | FT_ULong ins_pos;
|
---|
| 1445 |
|
---|
| 1446 | /* for possible extensibility in other formats */
|
---|
| 1447 | void* other;
|
---|
| 1448 |
|
---|
| 1449 | } TT_LoaderRec;
|
---|
| 1450 |
|
---|
| 1451 |
|
---|
| 1452 | FT_END_HEADER
|
---|
| 1453 |
|
---|
| 1454 | #endif /* __TTTYPES_H__ */
|
---|
| 1455 |
|
---|
| 1456 |
|
---|
| 1457 | /* END */
|
---|