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