root / trunk / Windows / libs / freetype / include / freetype2 / freetype / tttables.h @ 3
View | Annotate | Download (37.3 KB)
| 1 | /***************************************************************************/
|
|---|---|
| 2 | /* */
|
| 3 | /* tttables.h */
|
| 4 | /* */
|
| 5 | /* Basic SFNT/TrueType tables definitions and interface */
|
| 6 | /* (specification only). */
|
| 7 | /* */
|
| 8 | /* Copyright 1996-2001, 2002, 2003, 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 __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 the definition of TrueType-specific tables */
|
| 49 | /* as well as some routines used to access and process them. */
|
| 50 | /* */
|
| 51 | /*************************************************************************/
|
| 52 | |
| 53 | |
| 54 | /*************************************************************************/
|
| 55 | /* */
|
| 56 | /* <Struct> */
|
| 57 | /* TT_Header */
|
| 58 | /* */
|
| 59 | /* <Description> */
|
| 60 | /* A structure used to model a TrueType font header table. All */
|
| 61 | /* fields follow the TrueType specification. */
|
| 62 | /* */
|
| 63 | typedef struct TT_Header_ |
| 64 | {
|
| 65 | FT_Fixed Table_Version; |
| 66 | FT_Fixed Font_Revision; |
| 67 | |
| 68 | FT_Long CheckSum_Adjust; |
| 69 | FT_Long Magic_Number; |
| 70 | |
| 71 | FT_UShort Flags; |
| 72 | FT_UShort Units_Per_EM; |
| 73 | |
| 74 | FT_Long Created [2];
|
| 75 | FT_Long Modified[2];
|
| 76 | |
| 77 | FT_Short xMin; |
| 78 | FT_Short yMin; |
| 79 | FT_Short xMax; |
| 80 | FT_Short yMax; |
| 81 | |
| 82 | FT_UShort Mac_Style; |
| 83 | FT_UShort Lowest_Rec_PPEM; |
| 84 | |
| 85 | FT_Short Font_Direction; |
| 86 | FT_Short Index_To_Loc_Format; |
| 87 | FT_Short Glyph_Data_Format; |
| 88 | |
| 89 | } TT_Header; |
| 90 | |
| 91 | |
| 92 | /*************************************************************************/
|
| 93 | /* */
|
| 94 | /* <Struct> */
|
| 95 | /* TT_HoriHeader */
|
| 96 | /* */
|
| 97 | /* <Description> */
|
| 98 | /* A structure used to model a TrueType horizontal header, the `hhea' */
|
| 99 | /* table, as well as the corresponding horizontal metrics table, */
|
| 100 | /* i.e., the `hmtx' table. */
|
| 101 | /* */
|
| 102 | /* <Fields> */
|
| 103 | /* Version :: The table version. */
|
| 104 | /* */
|
| 105 | /* Ascender :: The font's ascender, i.e., the distance */
|
| 106 | /* from the baseline to the top-most of all */
|
| 107 | /* glyph points found in the font. */
|
| 108 | /* */
|
| 109 | /* This value is invalid in many fonts, as */
|
| 110 | /* it is usually set by the font designer, */
|
| 111 | /* and often reflects only a portion of the */
|
| 112 | /* glyphs found in the font (maybe ASCII). */
|
| 113 | /* */
|
| 114 | /* You should use the `sTypoAscender' field */
|
| 115 | /* of the OS/2 table instead if you want */
|
| 116 | /* the correct one. */
|
| 117 | /* */
|
| 118 | /* Descender :: The font's descender, i.e., the distance */
|
| 119 | /* from the baseline to the bottom-most of */
|
| 120 | /* all glyph points found in the font. It */
|
| 121 | /* is negative. */
|
| 122 | /* */
|
| 123 | /* This value is invalid in many fonts, as */
|
| 124 | /* it is usually set by the font designer, */
|
| 125 | /* and often reflects only a portion of the */
|
| 126 | /* glyphs found in the font (maybe ASCII). */
|
| 127 | /* */
|
| 128 | /* You should use the `sTypoDescender' */
|
| 129 | /* field of the OS/2 table instead if you */
|
| 130 | /* want the correct one. */
|
| 131 | /* */
|
| 132 | /* Line_Gap :: The font's line gap, i.e., the distance */
|
| 133 | /* to add to the ascender and descender to */
|
| 134 | /* get the BTB, i.e., the */
|
| 135 | /* baseline-to-baseline distance for the */
|
| 136 | /* font. */
|
| 137 | /* */
|
| 138 | /* advance_Width_Max :: This field is the maximum of all advance */
|
| 139 | /* widths found in the font. It can be */
|
| 140 | /* used to compute the maximum width of an */
|
| 141 | /* arbitrary string of text. */
|
| 142 | /* */
|
| 143 | /* min_Left_Side_Bearing :: The minimum left side bearing of all */
|
| 144 | /* glyphs within the font. */
|
| 145 | /* */
|
| 146 | /* min_Right_Side_Bearing :: The minimum right side bearing of all */
|
| 147 | /* glyphs within the font. */
|
| 148 | /* */
|
| 149 | /* xMax_Extent :: The maximum horizontal extent (i.e., the */
|
| 150 | /* `width' of a glyph's bounding box) for */
|
| 151 | /* all glyphs in the font. */
|
| 152 | /* */
|
| 153 | /* caret_Slope_Rise :: The rise coefficient of the cursor's */
|
| 154 | /* slope of the cursor (slope=rise/run). */
|
| 155 | /* */
|
| 156 | /* caret_Slope_Run :: The run coefficient of the cursor's */
|
| 157 | /* slope. */
|
| 158 | /* */
|
| 159 | /* Reserved :: 10 reserved bytes. */
|
| 160 | /* */
|
| 161 | /* metric_Data_Format :: Always 0. */
|
| 162 | /* */
|
| 163 | /* number_Of_HMetrics :: Number of HMetrics entries in the `hmtx' */
|
| 164 | /* table -- this value can be smaller than */
|
| 165 | /* the total number of glyphs in the font. */
|
| 166 | /* */
|
| 167 | /* long_metrics :: A pointer into the `hmtx' table. */
|
| 168 | /* */
|
| 169 | /* short_metrics :: A pointer into the `hmtx' table. */
|
| 170 | /* */
|
| 171 | /* <Note> */
|
| 172 | /* IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should */
|
| 173 | /* be identical except for the names of their fields which */
|
| 174 | /* are different. */
|
| 175 | /* */
|
| 176 | /* This ensures that a single function in the `ttload' */
|
| 177 | /* module is able to read both the horizontal and vertical */
|
| 178 | /* headers. */
|
| 179 | /* */
|
| 180 | typedef struct TT_HoriHeader_ |
| 181 | {
|
| 182 | FT_Fixed Version; |
| 183 | FT_Short Ascender; |
| 184 | FT_Short Descender; |
| 185 | FT_Short Line_Gap; |
| 186 | |
| 187 | FT_UShort advance_Width_Max; /* advance width maximum */
|
| 188 | |
| 189 | FT_Short min_Left_Side_Bearing; /* minimum left-sb */
|
| 190 | FT_Short min_Right_Side_Bearing; /* minimum right-sb */
|
| 191 | FT_Short xMax_Extent; /* xmax extents */
|
| 192 | FT_Short caret_Slope_Rise; |
| 193 | FT_Short caret_Slope_Run; |
| 194 | FT_Short caret_Offset; |
| 195 | |
| 196 | FT_Short Reserved[4];
|
| 197 | |
| 198 | FT_Short metric_Data_Format; |
| 199 | FT_UShort number_Of_HMetrics; |
| 200 | |
| 201 | /* The following fields are not defined by the TrueType specification */
|
| 202 | /* but they are used to connect the metrics header to the relevant */
|
| 203 | /* `HMTX' table. */
|
| 204 | |
| 205 | void* long_metrics;
|
| 206 | void* short_metrics;
|
| 207 | |
| 208 | } TT_HoriHeader; |
| 209 | |
| 210 | |
| 211 | /*************************************************************************/
|
| 212 | /* */
|
| 213 | /* <Struct> */
|
| 214 | /* TT_VertHeader */
|
| 215 | /* */
|
| 216 | /* <Description> */
|
| 217 | /* A structure used to model a TrueType vertical header, the `vhea' */
|
| 218 | /* table, as well as the corresponding vertical metrics table, i.e., */
|
| 219 | /* the `vmtx' table. */
|
| 220 | /* */
|
| 221 | /* <Fields> */
|
| 222 | /* Version :: The table version. */
|
| 223 | /* */
|
| 224 | /* Ascender :: The font's ascender, i.e., the distance */
|
| 225 | /* from the baseline to the top-most of */
|
| 226 | /* all glyph points found in the font. */
|
| 227 | /* */
|
| 228 | /* This value is invalid in many fonts, as */
|
| 229 | /* it is usually set by the font designer, */
|
| 230 | /* and often reflects only a portion of */
|
| 231 | /* the glyphs found in the font (maybe */
|
| 232 | /* ASCII). */
|
| 233 | /* */
|
| 234 | /* You should use the `sTypoAscender' */
|
| 235 | /* field of the OS/2 table instead if you */
|
| 236 | /* want the correct one. */
|
| 237 | /* */
|
| 238 | /* Descender :: The font's descender, i.e., the */
|
| 239 | /* distance from the baseline to the */
|
| 240 | /* bottom-most of all glyph points found */
|
| 241 | /* in the font. It is negative. */
|
| 242 | /* */
|
| 243 | /* This value is invalid in many fonts, as */
|
| 244 | /* it is usually set by the font designer, */
|
| 245 | /* and often reflects only a portion of */
|
| 246 | /* the glyphs found in the font (maybe */
|
| 247 | /* ASCII). */
|
| 248 | /* */
|
| 249 | /* You should use the `sTypoDescender' */
|
| 250 | /* field of the OS/2 table instead if you */
|
| 251 | /* want the correct one. */
|
| 252 | /* */
|
| 253 | /* Line_Gap :: The font's line gap, i.e., the distance */
|
| 254 | /* to add to the ascender and descender to */
|
| 255 | /* get the BTB, i.e., the */
|
| 256 | /* baseline-to-baseline distance for the */
|
| 257 | /* font. */
|
| 258 | /* */
|
| 259 | /* advance_Height_Max :: This field is the maximum of all */
|
| 260 | /* advance heights found in the font. It */
|
| 261 | /* can be used to compute the maximum */
|
| 262 | /* height of an arbitrary string of text. */
|
| 263 | /* */
|
| 264 | /* min_Top_Side_Bearing :: The minimum top side bearing of all */
|
| 265 | /* glyphs within the font. */
|
| 266 | /* */
|
| 267 | /* min_Bottom_Side_Bearing :: The minimum bottom side bearing of all */
|
| 268 | /* glyphs within the font. */
|
| 269 | /* */
|
| 270 | /* yMax_Extent :: The maximum vertical extent (i.e., the */
|
| 271 | /* `height' of a glyph's bounding box) for */
|
| 272 | /* all glyphs in the font. */
|
| 273 | /* */
|
| 274 | /* caret_Slope_Rise :: The rise coefficient of the cursor's */
|
| 275 | /* slope of the cursor (slope=rise/run). */
|
| 276 | /* */
|
| 277 | /* caret_Slope_Run :: The run coefficient of the cursor's */
|
| 278 | /* slope. */
|
| 279 | /* */
|
| 280 | /* caret_Offset :: The cursor's offset for slanted fonts. */
|
| 281 | /* This value is `reserved' in vmtx */
|
| 282 | /* version 1.0. */
|
| 283 | /* */
|
| 284 | /* Reserved :: 8 reserved bytes. */
|
| 285 | /* */
|
| 286 | /* metric_Data_Format :: Always 0. */
|
| 287 | /* */
|
| 288 | /* number_Of_HMetrics :: Number of VMetrics entries in the */
|
| 289 | /* `vmtx' table -- this value can be */
|
| 290 | /* smaller than the total number of glyphs */
|
| 291 | /* in the font. */
|
| 292 | /* */
|
| 293 | /* long_metrics :: A pointer into the `vmtx' table. */
|
| 294 | /* */
|
| 295 | /* short_metrics :: A pointer into the `vmtx' table. */
|
| 296 | /* */
|
| 297 | /* <Note> */
|
| 298 | /* IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should */
|
| 299 | /* be identical except for the names of their fields which */
|
| 300 | /* are different. */
|
| 301 | /* */
|
| 302 | /* This ensures that a single function in the `ttload' */
|
| 303 | /* module is able to read both the horizontal and vertical */
|
| 304 | /* headers. */
|
| 305 | /* */
|
| 306 | typedef struct TT_VertHeader_ |
| 307 | {
|
| 308 | FT_Fixed Version; |
| 309 | FT_Short Ascender; |
| 310 | FT_Short Descender; |
| 311 | FT_Short Line_Gap; |
| 312 | |
| 313 | FT_UShort advance_Height_Max; /* advance height maximum */
|
| 314 | |
| 315 | FT_Short min_Top_Side_Bearing; /* minimum left-sb or top-sb */
|
| 316 | FT_Short min_Bottom_Side_Bearing; /* minimum right-sb or bottom-sb */
|
| 317 | FT_Short yMax_Extent; /* xmax or ymax extents */
|
| 318 | FT_Short caret_Slope_Rise; |
| 319 | FT_Short caret_Slope_Run; |
| 320 | FT_Short caret_Offset; |
| 321 | |
| 322 | FT_Short Reserved[4];
|
| 323 | |
| 324 | FT_Short metric_Data_Format; |
| 325 | FT_UShort number_Of_VMetrics; |
| 326 | |
| 327 | /* The following fields are not defined by the TrueType specification */
|
| 328 | /* but they're used to connect the metrics header to the relevant */
|
| 329 | /* `HMTX' or `VMTX' table. */
|
| 330 | |
| 331 | void* long_metrics;
|
| 332 | void* short_metrics;
|
| 333 | |
| 334 | } TT_VertHeader; |
| 335 | |
| 336 | |
| 337 | /*************************************************************************/
|
| 338 | /* */
|
| 339 | /* <Struct> */
|
| 340 | /* TT_OS2 */
|
| 341 | /* */
|
| 342 | /* <Description> */
|
| 343 | /* A structure used to model a TrueType OS/2 table. This is the long */
|
| 344 | /* table version. All fields comply to the TrueType specification. */
|
| 345 | /* */
|
| 346 | /* Note that we now support old Mac fonts which do not include an */
|
| 347 | /* OS/2 table. In this case, the `version' field is always set to */
|
| 348 | /* 0xFFFF. */
|
| 349 | /* */
|
| 350 | typedef struct TT_OS2_ |
| 351 | {
|
| 352 | FT_UShort version; /* 0x0001 - more or 0xFFFF */
|
| 353 | FT_Short xAvgCharWidth; |
| 354 | FT_UShort usWeightClass; |
| 355 | FT_UShort usWidthClass; |
| 356 | FT_Short fsType; |
| 357 | FT_Short ySubscriptXSize; |
| 358 | FT_Short ySubscriptYSize; |
| 359 | FT_Short ySubscriptXOffset; |
| 360 | FT_Short ySubscriptYOffset; |
| 361 | FT_Short ySuperscriptXSize; |
| 362 | FT_Short ySuperscriptYSize; |
| 363 | FT_Short ySuperscriptXOffset; |
| 364 | FT_Short ySuperscriptYOffset; |
| 365 | FT_Short yStrikeoutSize; |
| 366 | FT_Short yStrikeoutPosition; |
| 367 | FT_Short sFamilyClass; |
| 368 | |
| 369 | FT_Byte panose[10];
|
| 370 | |
| 371 | FT_ULong ulUnicodeRange1; /* Bits 0-31 */
|
| 372 | FT_ULong ulUnicodeRange2; /* Bits 32-63 */
|
| 373 | FT_ULong ulUnicodeRange3; /* Bits 64-95 */
|
| 374 | FT_ULong ulUnicodeRange4; /* Bits 96-127 */
|
| 375 | |
| 376 | FT_Char achVendID[4];
|
| 377 | |
| 378 | FT_UShort fsSelection; |
| 379 | FT_UShort usFirstCharIndex; |
| 380 | FT_UShort usLastCharIndex; |
| 381 | FT_Short sTypoAscender; |
| 382 | FT_Short sTypoDescender; |
| 383 | FT_Short sTypoLineGap; |
| 384 | FT_UShort usWinAscent; |
| 385 | FT_UShort usWinDescent; |
| 386 | |
| 387 | /* only version 1 tables: */
|
| 388 | |
| 389 | FT_ULong ulCodePageRange1; /* Bits 0-31 */
|
| 390 | FT_ULong ulCodePageRange2; /* Bits 32-63 */
|
| 391 | |
| 392 | /* only version 2 tables: */
|
| 393 | |
| 394 | FT_Short sxHeight; |
| 395 | FT_Short sCapHeight; |
| 396 | FT_UShort usDefaultChar; |
| 397 | FT_UShort usBreakChar; |
| 398 | FT_UShort usMaxContext; |
| 399 | |
| 400 | } TT_OS2; |
| 401 | |
| 402 | |
| 403 | /*************************************************************************/
|
| 404 | /* */
|
| 405 | /* <Struct> */
|
| 406 | /* TT_Postscript */
|
| 407 | /* */
|
| 408 | /* <Description> */
|
| 409 | /* A structure used to model a TrueType Postscript table. All fields */
|
| 410 | /* comply to the TrueType specification. This structure does not */
|
| 411 | /* reference the Postscript glyph names, which can be nevertheless */
|
| 412 | /* accessed with the `ttpost' module. */
|
| 413 | /* */
|
| 414 | typedef struct TT_Postscript_ |
| 415 | {
|
| 416 | FT_Fixed FormatType; |
| 417 | FT_Fixed italicAngle; |
| 418 | FT_Short underlinePosition; |
| 419 | FT_Short underlineThickness; |
| 420 | FT_ULong isFixedPitch; |
| 421 | FT_ULong minMemType42; |
| 422 | FT_ULong maxMemType42; |
| 423 | FT_ULong minMemType1; |
| 424 | FT_ULong maxMemType1; |
| 425 | |
| 426 | /* Glyph names follow in the file, but we don't */
|
| 427 | /* load them by default. See the ttpost.c file. */
|
| 428 | |
| 429 | } TT_Postscript; |
| 430 | |
| 431 | |
| 432 | /*************************************************************************/
|
| 433 | /* */
|
| 434 | /* <Struct> */
|
| 435 | /* TT_PCLT */
|
| 436 | /* */
|
| 437 | /* <Description> */
|
| 438 | /* A structure used to model a TrueType PCLT table. All fields */
|
| 439 | /* comply to the TrueType specification. */
|
| 440 | /* */
|
| 441 | typedef struct TT_PCLT_ |
| 442 | {
|
| 443 | FT_Fixed Version; |
| 444 | FT_ULong FontNumber; |
| 445 | FT_UShort Pitch; |
| 446 | FT_UShort xHeight; |
| 447 | FT_UShort Style; |
| 448 | FT_UShort TypeFamily; |
| 449 | FT_UShort CapHeight; |
| 450 | FT_UShort SymbolSet; |
| 451 | FT_Char TypeFace[16];
|
| 452 | FT_Char CharacterComplement[8];
|
| 453 | FT_Char FileName[6];
|
| 454 | FT_Char StrokeWeight; |
| 455 | FT_Char WidthType; |
| 456 | FT_Byte SerifStyle; |
| 457 | FT_Byte Reserved; |
| 458 | |
| 459 | } TT_PCLT; |
| 460 | |
| 461 | |
| 462 | /*************************************************************************/
|
| 463 | /* */
|
| 464 | /* <Struct> */
|
| 465 | /* TT_MaxProfile */
|
| 466 | /* */
|
| 467 | /* <Description> */
|
| 468 | /* The maximum profile is a table containing many max values which */
|
| 469 | /* can be used to pre-allocate arrays. This ensures that no memory */
|
| 470 | /* allocation occurs during a glyph load. */
|
| 471 | /* */
|
| 472 | /* <Fields> */
|
| 473 | /* version :: The version number. */
|
| 474 | /* */
|
| 475 | /* numGlyphs :: The number of glyphs in this TrueType */
|
| 476 | /* font. */
|
| 477 | /* */
|
| 478 | /* maxPoints :: The maximum number of points in a */
|
| 479 | /* non-composite TrueType glyph. See also */
|
| 480 | /* the structure element */
|
| 481 | /* `maxCompositePoints'. */
|
| 482 | /* */
|
| 483 | /* maxContours :: The maximum number of contours in a */
|
| 484 | /* non-composite TrueType glyph. See also */
|
| 485 | /* the structure element */
|
| 486 | /* `maxCompositeContours'. */
|
| 487 | /* */
|
| 488 | /* maxCompositePoints :: The maximum number of points in a */
|
| 489 | /* composite TrueType glyph. See also the */
|
| 490 | /* structure element `maxPoints'. */
|
| 491 | /* */
|
| 492 | /* maxCompositeContours :: The maximum number of contours in a */
|
| 493 | /* composite TrueType glyph. See also the */
|
| 494 | /* structure element `maxContours'. */
|
| 495 | /* */
|
| 496 | /* maxZones :: The maximum number of zones used for */
|
| 497 | /* glyph hinting. */
|
| 498 | /* */
|
| 499 | /* maxTwilightPoints :: The maximum number of points in the */
|
| 500 | /* twilight zone used for glyph hinting. */
|
| 501 | /* */
|
| 502 | /* maxStorage :: The maximum number of elements in the */
|
| 503 | /* storage area used for glyph hinting. */
|
| 504 | /* */
|
| 505 | /* maxFunctionDefs :: The maximum number of function */
|
| 506 | /* definitions in the TrueType bytecode for */
|
| 507 | /* this font. */
|
| 508 | /* */
|
| 509 | /* maxInstructionDefs :: The maximum number of instruction */
|
| 510 | /* definitions in the TrueType bytecode for */
|
| 511 | /* this font. */
|
| 512 | /* */
|
| 513 | /* maxStackElements :: The maximum number of stack elements used */
|
| 514 | /* during bytecode interpretation. */
|
| 515 | /* */
|
| 516 | /* maxSizeOfInstructions :: The maximum number of TrueType opcodes */
|
| 517 | /* used for glyph hinting. */
|
| 518 | /* */
|
| 519 | /* maxComponentElements :: The maximum number of simple (i.e., non- */
|
| 520 | /* composite) glyphs in a composite glyph. */
|
| 521 | /* */
|
| 522 | /* maxComponentDepth :: The maximum nesting depth of composite */
|
| 523 | /* glyphs. */
|
| 524 | /* */
|
| 525 | /* <Note> */
|
| 526 | /* This structure is only used during font loading. */
|
| 527 | /* */
|
| 528 | typedef struct TT_MaxProfile_ |
| 529 | {
|
| 530 | FT_Fixed version; |
| 531 | FT_UShort numGlyphs; |
| 532 | FT_UShort maxPoints; |
| 533 | FT_UShort maxContours; |
| 534 | FT_UShort maxCompositePoints; |
| 535 | FT_UShort maxCompositeContours; |
| 536 | FT_UShort maxZones; |
| 537 | FT_UShort maxTwilightPoints; |
| 538 | FT_UShort maxStorage; |
| 539 | FT_UShort maxFunctionDefs; |
| 540 | FT_UShort maxInstructionDefs; |
| 541 | FT_UShort maxStackElements; |
| 542 | FT_UShort maxSizeOfInstructions; |
| 543 | FT_UShort maxComponentElements; |
| 544 | FT_UShort maxComponentDepth; |
| 545 | |
| 546 | } TT_MaxProfile; |
| 547 | |
| 548 | |
| 549 | /*************************************************************************/
|
| 550 | /* */
|
| 551 | /* <Enum> */
|
| 552 | /* FT_Sfnt_Tag */
|
| 553 | /* */
|
| 554 | /* <Description> */
|
| 555 | /* An enumeration used to specify the index of an SFNT table. */
|
| 556 | /* Used in the @FT_Get_Sfnt_Table API function. */
|
| 557 | /* */
|
| 558 | typedef enum |
| 559 | {
|
| 560 | ft_sfnt_head = 0,
|
| 561 | ft_sfnt_maxp = 1,
|
| 562 | ft_sfnt_os2 = 2,
|
| 563 | ft_sfnt_hhea = 3,
|
| 564 | ft_sfnt_vhea = 4,
|
| 565 | ft_sfnt_post = 5,
|
| 566 | ft_sfnt_pclt = 6,
|
| 567 | |
| 568 | sfnt_max /* internal end mark */
|
| 569 | |
| 570 | } FT_Sfnt_Tag; |
| 571 | |
| 572 | /* */
|
| 573 | |
| 574 | |
| 575 | /*************************************************************************/
|
| 576 | /* */
|
| 577 | /* <Function> */
|
| 578 | /* FT_Get_Sfnt_Table */
|
| 579 | /* */
|
| 580 | /* <Description> */
|
| 581 | /* Returns a pointer to a given SFNT table within a face. */
|
| 582 | /* */
|
| 583 | /* <Input> */
|
| 584 | /* face :: A handle to the source. */
|
| 585 | /* */
|
| 586 | /* tag :: The index of the SFNT table. */
|
| 587 | /* */
|
| 588 | /* <Return> */
|
| 589 | /* A type-less pointer to the table. This will be 0 in case of */
|
| 590 | /* error, or if the corresponding table was not found *OR* loaded */
|
| 591 | /* from the file. */
|
| 592 | /* */
|
| 593 | /* <Note> */
|
| 594 | /* The table is owned by the face object and disappears with it. */
|
| 595 | /* */
|
| 596 | /* This function is only useful to access SFNT tables that are loaded */
|
| 597 | /* by the sfnt, truetype, and opentype drivers. See @FT_Sfnt_Tag for */
|
| 598 | /* a list. */
|
| 599 | /* */
|
| 600 | FT_EXPORT( void* )
|
| 601 | FT_Get_Sfnt_Table( FT_Face face, |
| 602 | FT_Sfnt_Tag tag ); |
| 603 | |
| 604 | |
| 605 | /**************************************************************************
|
| 606 | * |
| 607 | * @function: |
| 608 | * FT_Load_Sfnt_Table |
| 609 | * |
| 610 | * @description: |
| 611 | * Loads any font table into client memory. |
| 612 | * |
| 613 | * @input: |
| 614 | * face :: |
| 615 | * A handle to the source face. |
| 616 | * |
| 617 | * tag :: |
| 618 | * The four-byte tag of the table to load. Use the value 0 if you want |
| 619 | * to access the whole font file. Otherwise, you can use one of the |
| 620 | * definitions found in the @FT_TRUETYPE_TAGS_H file, or forge a new |
| 621 | * one with @FT_MAKE_TAG. |
| 622 | * |
| 623 | * offset :: |
| 624 | * The starting offset in the table (or file if tag == 0). |
| 625 | * |
| 626 | * @output: |
| 627 | * buffer :: |
| 628 | * The target buffer address. The client must ensure that the memory |
| 629 | * array is big enough to hold the data. |
| 630 | * |
| 631 | * @inout: |
| 632 | * length :: |
| 633 | * If the `length' parameter is NULL, then try to load the whole table. |
| 634 | * Return an error code if it fails. |
| 635 | * |
| 636 | * Else, if `*length' is 0, exit immediately while returning the |
| 637 | * table's (or file) full size in it. |
| 638 | * |
| 639 | * Else the number of bytes to read from the table or file, from the |
| 640 | * starting offset. |
| 641 | * |
| 642 | * @return: |
| 643 | * FreeType error code. 0 means success. |
| 644 | * |
| 645 | * @note: |
| 646 | * If you need to determine the table's length you should first call this |
| 647 | * function with `*length' set to 0, as in the following example: |
| 648 | * |
| 649 | * {
|
| 650 | * FT_ULong length = 0; |
| 651 | * |
| 652 | * |
| 653 | * error = FT_Load_Sfnt_Table( face, tag, 0, NULL, &length ); |
| 654 | * if ( error ) { ... table does not exist ... }
|
| 655 | * |
| 656 | * buffer = malloc( length ); |
| 657 | * if ( buffer == NULL ) { ... not enough memory ... }
|
| 658 | * |
| 659 | * error = FT_Load_Sfnt_Table( face, tag, 0, buffer, &length ); |
| 660 | * if ( error ) { ... could not load table ... }
|
| 661 | * } |
| 662 | */ |
| 663 | FT_EXPORT( FT_Error ) |
| 664 | FT_Load_Sfnt_Table( FT_Face face, |
| 665 | FT_ULong tag, |
| 666 | FT_Long offset, |
| 667 | FT_Byte* buffer, |
| 668 | FT_ULong* length ); |
| 669 | |
| 670 | |
| 671 | /**************************************************************************
|
| 672 | * |
| 673 | * @function: |
| 674 | * FT_Sfnt_Table_Info |
| 675 | * |
| 676 | * @description: |
| 677 | * Returns information on an SFNT table. |
| 678 | * |
| 679 | * @input: |
| 680 | * face :: |
| 681 | * A handle to the source face. |
| 682 | * |
| 683 | * table_index :: |
| 684 | * The index of an SFNT table. The function returns |
| 685 | * FT_Err_Table_Missing for an invalid value. |
| 686 | * |
| 687 | * @output: |
| 688 | * tag :: |
| 689 | * The name tag of the SFNT table. |
| 690 | * |
| 691 | * length :: |
| 692 | * The length of the SFNT table. |
| 693 | * |
| 694 | * @return: |
| 695 | * FreeType error code. 0 means success. |
| 696 | * |
| 697 | * @note: |
| 698 | * SFNT tables with length zero are treated as missing by Windows. |
| 699 | * |
| 700 | */ |
| 701 | FT_EXPORT( FT_Error ) |
| 702 | FT_Sfnt_Table_Info( FT_Face face, |
| 703 | FT_UInt table_index, |
| 704 | FT_ULong *tag, |
| 705 | FT_ULong *length ); |
| 706 | |
| 707 | |
| 708 | /*************************************************************************/
|
| 709 | /* */
|
| 710 | /* <Function> */
|
| 711 | /* FT_Get_CMap_Language_ID */
|
| 712 | /* */
|
| 713 | /* <Description> */
|
| 714 | /* Return TrueType/sfnt specific cmap language ID. Definitions of */
|
| 715 | /* language ID values are in `freetype/ttnameid.h'. */
|
| 716 | /* */
|
| 717 | /* <Input> */
|
| 718 | /* charmap :: */
|
| 719 | /* The target charmap. */
|
| 720 | /* */
|
| 721 | /* <Return> */
|
| 722 | /* The language ID of `charmap'. If `charmap' doesn't belong to a */
|
| 723 | /* TrueType/sfnt face, just return 0 as the default value. */
|
| 724 | /* */
|
| 725 | FT_EXPORT( FT_ULong ) |
| 726 | FT_Get_CMap_Language_ID( FT_CharMap charmap ); |
| 727 | |
| 728 | /* */
|
| 729 | |
| 730 | |
| 731 | FT_END_HEADER |
| 732 | |
| 733 | #endif /* __TTTABLES_H__ */ |
| 734 | |
| 735 | |
| 736 | /* END */
|
