1otData = [ 2 # 3 # common 4 # 5 ("LookupOrder", []), 6 ( 7 "ScriptList", 8 [ 9 ("uint16", "ScriptCount", None, None, "Number of ScriptRecords"), 10 ( 11 "struct", 12 "ScriptRecord", 13 "ScriptCount", 14 0, 15 "Array of ScriptRecords -listed alphabetically by ScriptTag", 16 ), 17 ], 18 ), 19 ( 20 "ScriptRecord", 21 [ 22 ("Tag", "ScriptTag", None, None, "4-byte ScriptTag identifier"), 23 ( 24 "Offset", 25 "Script", 26 None, 27 None, 28 "Offset to Script table-from beginning of ScriptList", 29 ), 30 ], 31 ), 32 ( 33 "Script", 34 [ 35 ( 36 "Offset", 37 "DefaultLangSys", 38 None, 39 None, 40 "Offset to DefaultLangSys table-from beginning of Script table-may be NULL", 41 ), 42 ( 43 "uint16", 44 "LangSysCount", 45 None, 46 None, 47 "Number of LangSysRecords for this script-excluding the DefaultLangSys", 48 ), 49 ( 50 "struct", 51 "LangSysRecord", 52 "LangSysCount", 53 0, 54 "Array of LangSysRecords-listed alphabetically by LangSysTag", 55 ), 56 ], 57 ), 58 ( 59 "LangSysRecord", 60 [ 61 ("Tag", "LangSysTag", None, None, "4-byte LangSysTag identifier"), 62 ( 63 "Offset", 64 "LangSys", 65 None, 66 None, 67 "Offset to LangSys table-from beginning of Script table", 68 ), 69 ], 70 ), 71 ( 72 "LangSys", 73 [ 74 ( 75 "Offset", 76 "LookupOrder", 77 None, 78 None, 79 "= NULL (reserved for an offset to a reordering table)", 80 ), 81 ( 82 "uint16", 83 "ReqFeatureIndex", 84 None, 85 None, 86 "Index of a feature required for this language system- if no required features = 0xFFFF", 87 ), 88 ( 89 "uint16", 90 "FeatureCount", 91 None, 92 None, 93 "Number of FeatureIndex values for this language system-excludes the required feature", 94 ), 95 ( 96 "uint16", 97 "FeatureIndex", 98 "FeatureCount", 99 0, 100 "Array of indices into the FeatureList-in arbitrary order", 101 ), 102 ], 103 ), 104 ( 105 "FeatureList", 106 [ 107 ( 108 "uint16", 109 "FeatureCount", 110 None, 111 None, 112 "Number of FeatureRecords in this table", 113 ), 114 ( 115 "struct", 116 "FeatureRecord", 117 "FeatureCount", 118 0, 119 "Array of FeatureRecords-zero-based (first feature has FeatureIndex = 0)-listed alphabetically by FeatureTag", 120 ), 121 ], 122 ), 123 ( 124 "FeatureRecord", 125 [ 126 ("Tag", "FeatureTag", None, None, "4-byte feature identification tag"), 127 ( 128 "Offset", 129 "Feature", 130 None, 131 None, 132 "Offset to Feature table-from beginning of FeatureList", 133 ), 134 ], 135 ), 136 ( 137 "Feature", 138 [ 139 ( 140 "Offset", 141 "FeatureParams", 142 None, 143 None, 144 "= NULL (reserved for offset to FeatureParams)", 145 ), 146 ( 147 "uint16", 148 "LookupCount", 149 None, 150 None, 151 "Number of LookupList indices for this feature", 152 ), 153 ( 154 "uint16", 155 "LookupListIndex", 156 "LookupCount", 157 0, 158 "Array of LookupList indices for this feature -zero-based (first lookup is LookupListIndex = 0)", 159 ), 160 ], 161 ), 162 ("FeatureParams", []), 163 ( 164 "FeatureParamsSize", 165 [ 166 ( 167 "DeciPoints", 168 "DesignSize", 169 None, 170 None, 171 "The design size in 720/inch units (decipoints).", 172 ), 173 ( 174 "uint16", 175 "SubfamilyID", 176 None, 177 None, 178 "Serves as an identifier that associates fonts in a subfamily.", 179 ), 180 ("NameID", "SubfamilyNameID", None, None, "Subfamily NameID."), 181 ( 182 "DeciPoints", 183 "RangeStart", 184 None, 185 None, 186 "Small end of recommended usage range (exclusive) in 720/inch units.", 187 ), 188 ( 189 "DeciPoints", 190 "RangeEnd", 191 None, 192 None, 193 "Large end of recommended usage range (inclusive) in 720/inch units.", 194 ), 195 ], 196 ), 197 ( 198 "FeatureParamsStylisticSet", 199 [ 200 ("uint16", "Version", None, None, "Set to 0."), 201 ("NameID", "UINameID", None, None, "UI NameID."), 202 ], 203 ), 204 ( 205 "FeatureParamsCharacterVariants", 206 [ 207 ("uint16", "Format", None, None, "Set to 0."), 208 ("NameID", "FeatUILabelNameID", None, None, "Feature UI label NameID."), 209 ( 210 "NameID", 211 "FeatUITooltipTextNameID", 212 None, 213 None, 214 "Feature UI tooltip text NameID.", 215 ), 216 ("NameID", "SampleTextNameID", None, None, "Sample text NameID."), 217 ("uint16", "NumNamedParameters", None, None, "Number of named parameters."), 218 ( 219 "NameID", 220 "FirstParamUILabelNameID", 221 None, 222 None, 223 "First NameID of UI feature parameters.", 224 ), 225 ( 226 "uint16", 227 "CharCount", 228 None, 229 None, 230 "Count of characters this feature provides glyph variants for.", 231 ), 232 ( 233 "uint24", 234 "Character", 235 "CharCount", 236 0, 237 "Unicode characters for which this feature provides glyph variants.", 238 ), 239 ], 240 ), 241 ( 242 "LookupList", 243 [ 244 ("uint16", "LookupCount", None, None, "Number of lookups in this table"), 245 ( 246 "Offset", 247 "Lookup", 248 "LookupCount", 249 0, 250 "Array of offsets to Lookup tables-from beginning of LookupList -zero based (first lookup is Lookup index = 0)", 251 ), 252 ], 253 ), 254 ( 255 "Lookup", 256 [ 257 ( 258 "uint16", 259 "LookupType", 260 None, 261 None, 262 "Different enumerations for GSUB and GPOS", 263 ), 264 ("LookupFlag", "LookupFlag", None, None, "Lookup qualifiers"), 265 ( 266 "uint16", 267 "SubTableCount", 268 None, 269 None, 270 "Number of SubTables for this lookup", 271 ), 272 ( 273 "Offset", 274 "SubTable", 275 "SubTableCount", 276 0, 277 "Array of offsets to SubTables-from beginning of Lookup table", 278 ), 279 ( 280 "uint16", 281 "MarkFilteringSet", 282 None, 283 "LookupFlag & 0x0010", 284 "If set, indicates that the lookup table structure is followed by a MarkFilteringSet field. The layout engine skips over all mark glyphs not in the mark filtering set indicated.", 285 ), 286 ], 287 ), 288 ( 289 "CoverageFormat1", 290 [ 291 ("uint16", "CoverageFormat", None, None, "Format identifier-format = 1"), 292 ("uint16", "GlyphCount", None, None, "Number of glyphs in the GlyphArray"), 293 ( 294 "GlyphID", 295 "GlyphArray", 296 "GlyphCount", 297 0, 298 "Array of GlyphIDs-in numerical order", 299 ), 300 ], 301 ), 302 ( 303 "CoverageFormat2", 304 [ 305 ("uint16", "CoverageFormat", None, None, "Format identifier-format = 2"), 306 ("uint16", "RangeCount", None, None, "Number of RangeRecords"), 307 ( 308 "struct", 309 "RangeRecord", 310 "RangeCount", 311 0, 312 "Array of glyph ranges-ordered by Start GlyphID", 313 ), 314 ], 315 ), 316 ( 317 "RangeRecord", 318 [ 319 ("GlyphID", "Start", None, None, "First GlyphID in the range"), 320 ("GlyphID", "End", None, None, "Last GlyphID in the range"), 321 ( 322 "uint16", 323 "StartCoverageIndex", 324 None, 325 None, 326 "Coverage Index of first GlyphID in range", 327 ), 328 ], 329 ), 330 ( 331 "ClassDefFormat1", 332 [ 333 ("uint16", "ClassFormat", None, None, "Format identifier-format = 1"), 334 ( 335 "GlyphID", 336 "StartGlyph", 337 None, 338 None, 339 "First GlyphID of the ClassValueArray", 340 ), 341 ("uint16", "GlyphCount", None, None, "Size of the ClassValueArray"), 342 ( 343 "uint16", 344 "ClassValueArray", 345 "GlyphCount", 346 0, 347 "Array of Class Values-one per GlyphID", 348 ), 349 ], 350 ), 351 ( 352 "ClassDefFormat2", 353 [ 354 ("uint16", "ClassFormat", None, None, "Format identifier-format = 2"), 355 ("uint16", "ClassRangeCount", None, None, "Number of ClassRangeRecords"), 356 ( 357 "struct", 358 "ClassRangeRecord", 359 "ClassRangeCount", 360 0, 361 "Array of ClassRangeRecords-ordered by Start GlyphID", 362 ), 363 ], 364 ), 365 ( 366 "ClassRangeRecord", 367 [ 368 ("GlyphID", "Start", None, None, "First GlyphID in the range"), 369 ("GlyphID", "End", None, None, "Last GlyphID in the range"), 370 ("uint16", "Class", None, None, "Applied to all glyphs in the range"), 371 ], 372 ), 373 ( 374 "Device", 375 [ 376 ("uint16", "StartSize", None, None, "Smallest size to correct-in ppem"), 377 ("uint16", "EndSize", None, None, "Largest size to correct-in ppem"), 378 ( 379 "uint16", 380 "DeltaFormat", 381 None, 382 None, 383 "Format of DeltaValue array data: 1, 2, or 3", 384 ), 385 ( 386 "DeltaValue", 387 "DeltaValue", 388 "", 389 "DeltaFormat in (1,2,3)", 390 "Array of compressed data", 391 ), 392 ], 393 ), 394 # 395 # gpos 396 # 397 ( 398 "GPOS", 399 [ 400 ( 401 "Version", 402 "Version", 403 None, 404 None, 405 "Version of the GPOS table- 0x00010000 or 0x00010001", 406 ), 407 ( 408 "Offset", 409 "ScriptList", 410 None, 411 None, 412 "Offset to ScriptList table-from beginning of GPOS table", 413 ), 414 ( 415 "Offset", 416 "FeatureList", 417 None, 418 None, 419 "Offset to FeatureList table-from beginning of GPOS table", 420 ), 421 ( 422 "Offset", 423 "LookupList", 424 None, 425 None, 426 "Offset to LookupList table-from beginning of GPOS table", 427 ), 428 ( 429 "LOffset", 430 "FeatureVariations", 431 None, 432 "Version >= 0x00010001", 433 "Offset to FeatureVariations table-from beginning of GPOS table", 434 ), 435 ], 436 ), 437 ( 438 "SinglePosFormat1", 439 [ 440 ("uint16", "PosFormat", None, None, "Format identifier-format = 1"), 441 ( 442 "Offset", 443 "Coverage", 444 None, 445 None, 446 "Offset to Coverage table-from beginning of SinglePos subtable", 447 ), 448 ( 449 "uint16", 450 "ValueFormat", 451 None, 452 None, 453 "Defines the types of data in the ValueRecord", 454 ), 455 ( 456 "ValueRecord", 457 "Value", 458 None, 459 None, 460 "Defines positioning value(s)-applied to all glyphs in the Coverage table", 461 ), 462 ], 463 ), 464 ( 465 "SinglePosFormat2", 466 [ 467 ("uint16", "PosFormat", None, None, "Format identifier-format = 2"), 468 ( 469 "Offset", 470 "Coverage", 471 None, 472 None, 473 "Offset to Coverage table-from beginning of SinglePos subtable", 474 ), 475 ( 476 "uint16", 477 "ValueFormat", 478 None, 479 None, 480 "Defines the types of data in the ValueRecord", 481 ), 482 ("uint16", "ValueCount", None, None, "Number of ValueRecords"), 483 ( 484 "ValueRecord", 485 "Value", 486 "ValueCount", 487 0, 488 "Array of ValueRecords-positioning values applied to glyphs", 489 ), 490 ], 491 ), 492 ( 493 "PairPosFormat1", 494 [ 495 ("uint16", "PosFormat", None, None, "Format identifier-format = 1"), 496 ( 497 "Offset", 498 "Coverage", 499 None, 500 None, 501 "Offset to Coverage table-from beginning of PairPos subtable-only the first glyph in each pair", 502 ), 503 ( 504 "uint16", 505 "ValueFormat1", 506 None, 507 None, 508 "Defines the types of data in ValueRecord1-for the first glyph in the pair -may be zero (0)", 509 ), 510 ( 511 "uint16", 512 "ValueFormat2", 513 None, 514 None, 515 "Defines the types of data in ValueRecord2-for the second glyph in the pair -may be zero (0)", 516 ), 517 ("uint16", "PairSetCount", None, None, "Number of PairSet tables"), 518 ( 519 "Offset", 520 "PairSet", 521 "PairSetCount", 522 0, 523 "Array of offsets to PairSet tables-from beginning of PairPos subtable-ordered by Coverage Index", 524 ), 525 ], 526 ), 527 ( 528 "PairSet", 529 [ 530 ("uint16", "PairValueCount", None, None, "Number of PairValueRecords"), 531 ( 532 "struct", 533 "PairValueRecord", 534 "PairValueCount", 535 0, 536 "Array of PairValueRecords-ordered by GlyphID of the second glyph", 537 ), 538 ], 539 ), 540 ( 541 "PairValueRecord", 542 [ 543 ( 544 "GlyphID", 545 "SecondGlyph", 546 None, 547 None, 548 "GlyphID of second glyph in the pair-first glyph is listed in the Coverage table", 549 ), 550 ( 551 "ValueRecord", 552 "Value1", 553 None, 554 None, 555 "Positioning data for the first glyph in the pair", 556 ), 557 ( 558 "ValueRecord", 559 "Value2", 560 None, 561 None, 562 "Positioning data for the second glyph in the pair", 563 ), 564 ], 565 ), 566 ( 567 "PairPosFormat2", 568 [ 569 ("uint16", "PosFormat", None, None, "Format identifier-format = 2"), 570 ( 571 "Offset", 572 "Coverage", 573 None, 574 None, 575 "Offset to Coverage table-from beginning of PairPos subtable-for the first glyph of the pair", 576 ), 577 ( 578 "uint16", 579 "ValueFormat1", 580 None, 581 None, 582 "ValueRecord definition-for the first glyph of the pair-may be zero (0)", 583 ), 584 ( 585 "uint16", 586 "ValueFormat2", 587 None, 588 None, 589 "ValueRecord definition-for the second glyph of the pair-may be zero (0)", 590 ), 591 ( 592 "Offset", 593 "ClassDef1", 594 None, 595 None, 596 "Offset to ClassDef table-from beginning of PairPos subtable-for the first glyph of the pair", 597 ), 598 ( 599 "Offset", 600 "ClassDef2", 601 None, 602 None, 603 "Offset to ClassDef table-from beginning of PairPos subtable-for the second glyph of the pair", 604 ), 605 ( 606 "uint16", 607 "Class1Count", 608 None, 609 None, 610 "Number of classes in ClassDef1 table-includes Class0", 611 ), 612 ( 613 "uint16", 614 "Class2Count", 615 None, 616 None, 617 "Number of classes in ClassDef2 table-includes Class0", 618 ), 619 ( 620 "struct", 621 "Class1Record", 622 "Class1Count", 623 0, 624 "Array of Class1 records-ordered by Class1", 625 ), 626 ], 627 ), 628 ( 629 "Class1Record", 630 [ 631 ( 632 "struct", 633 "Class2Record", 634 "Class2Count", 635 0, 636 "Array of Class2 records-ordered by Class2", 637 ), 638 ], 639 ), 640 ( 641 "Class2Record", 642 [ 643 ( 644 "ValueRecord", 645 "Value1", 646 None, 647 None, 648 "Positioning for first glyph-empty if ValueFormat1 = 0", 649 ), 650 ( 651 "ValueRecord", 652 "Value2", 653 None, 654 None, 655 "Positioning for second glyph-empty if ValueFormat2 = 0", 656 ), 657 ], 658 ), 659 ( 660 "CursivePosFormat1", 661 [ 662 ("uint16", "PosFormat", None, None, "Format identifier-format = 1"), 663 ( 664 "Offset", 665 "Coverage", 666 None, 667 None, 668 "Offset to Coverage table-from beginning of CursivePos subtable", 669 ), 670 ("uint16", "EntryExitCount", None, None, "Number of EntryExit records"), 671 ( 672 "struct", 673 "EntryExitRecord", 674 "EntryExitCount", 675 0, 676 "Array of EntryExit records-in Coverage Index order", 677 ), 678 ], 679 ), 680 ( 681 "EntryExitRecord", 682 [ 683 ( 684 "Offset", 685 "EntryAnchor", 686 None, 687 None, 688 "Offset to EntryAnchor table-from beginning of CursivePos subtable-may be NULL", 689 ), 690 ( 691 "Offset", 692 "ExitAnchor", 693 None, 694 None, 695 "Offset to ExitAnchor table-from beginning of CursivePos subtable-may be NULL", 696 ), 697 ], 698 ), 699 ( 700 "MarkBasePosFormat1", 701 [ 702 ("uint16", "PosFormat", None, None, "Format identifier-format = 1"), 703 ( 704 "Offset", 705 "MarkCoverage", 706 None, 707 None, 708 "Offset to MarkCoverage table-from beginning of MarkBasePos subtable", 709 ), 710 ( 711 "Offset", 712 "BaseCoverage", 713 None, 714 None, 715 "Offset to BaseCoverage table-from beginning of MarkBasePos subtable", 716 ), 717 ("uint16", "ClassCount", None, None, "Number of classes defined for marks"), 718 ( 719 "Offset", 720 "MarkArray", 721 None, 722 None, 723 "Offset to MarkArray table-from beginning of MarkBasePos subtable", 724 ), 725 ( 726 "Offset", 727 "BaseArray", 728 None, 729 None, 730 "Offset to BaseArray table-from beginning of MarkBasePos subtable", 731 ), 732 ], 733 ), 734 ( 735 "BaseArray", 736 [ 737 ("uint16", "BaseCount", None, None, "Number of BaseRecords"), 738 ( 739 "struct", 740 "BaseRecord", 741 "BaseCount", 742 0, 743 "Array of BaseRecords-in order of BaseCoverage Index", 744 ), 745 ], 746 ), 747 ( 748 "BaseRecord", 749 [ 750 ( 751 "Offset", 752 "BaseAnchor", 753 "ClassCount", 754 0, 755 "Array of offsets (one per class) to Anchor tables-from beginning of BaseArray table-ordered by class-zero-based", 756 ), 757 ], 758 ), 759 ( 760 "MarkLigPosFormat1", 761 [ 762 ("uint16", "PosFormat", None, None, "Format identifier-format = 1"), 763 ( 764 "Offset", 765 "MarkCoverage", 766 None, 767 None, 768 "Offset to Mark Coverage table-from beginning of MarkLigPos subtable", 769 ), 770 ( 771 "Offset", 772 "LigatureCoverage", 773 None, 774 None, 775 "Offset to Ligature Coverage table-from beginning of MarkLigPos subtable", 776 ), 777 ("uint16", "ClassCount", None, None, "Number of defined mark classes"), 778 ( 779 "Offset", 780 "MarkArray", 781 None, 782 None, 783 "Offset to MarkArray table-from beginning of MarkLigPos subtable", 784 ), 785 ( 786 "Offset", 787 "LigatureArray", 788 None, 789 None, 790 "Offset to LigatureArray table-from beginning of MarkLigPos subtable", 791 ), 792 ], 793 ), 794 ( 795 "LigatureArray", 796 [ 797 ( 798 "uint16", 799 "LigatureCount", 800 None, 801 None, 802 "Number of LigatureAttach table offsets", 803 ), 804 ( 805 "Offset", 806 "LigatureAttach", 807 "LigatureCount", 808 0, 809 "Array of offsets to LigatureAttach tables-from beginning of LigatureArray table-ordered by LigatureCoverage Index", 810 ), 811 ], 812 ), 813 ( 814 "LigatureAttach", 815 [ 816 ( 817 "uint16", 818 "ComponentCount", 819 None, 820 None, 821 "Number of ComponentRecords in this ligature", 822 ), 823 ( 824 "struct", 825 "ComponentRecord", 826 "ComponentCount", 827 0, 828 "Array of Component records-ordered in writing direction", 829 ), 830 ], 831 ), 832 ( 833 "ComponentRecord", 834 [ 835 ( 836 "Offset", 837 "LigatureAnchor", 838 "ClassCount", 839 0, 840 "Array of offsets (one per class) to Anchor tables-from beginning of LigatureAttach table-ordered by class-NULL if a component does not have an attachment for a class-zero-based array", 841 ), 842 ], 843 ), 844 ( 845 "MarkMarkPosFormat1", 846 [ 847 ("uint16", "PosFormat", None, None, "Format identifier-format = 1"), 848 ( 849 "Offset", 850 "Mark1Coverage", 851 None, 852 None, 853 "Offset to Combining Mark Coverage table-from beginning of MarkMarkPos subtable", 854 ), 855 ( 856 "Offset", 857 "Mark2Coverage", 858 None, 859 None, 860 "Offset to Base Mark Coverage table-from beginning of MarkMarkPos subtable", 861 ), 862 ( 863 "uint16", 864 "ClassCount", 865 None, 866 None, 867 "Number of Combining Mark classes defined", 868 ), 869 ( 870 "Offset", 871 "Mark1Array", 872 None, 873 None, 874 "Offset to MarkArray table for Mark1-from beginning of MarkMarkPos subtable", 875 ), 876 ( 877 "Offset", 878 "Mark2Array", 879 None, 880 None, 881 "Offset to Mark2Array table for Mark2-from beginning of MarkMarkPos subtable", 882 ), 883 ], 884 ), 885 ( 886 "Mark2Array", 887 [ 888 ("uint16", "Mark2Count", None, None, "Number of Mark2 records"), 889 ( 890 "struct", 891 "Mark2Record", 892 "Mark2Count", 893 0, 894 "Array of Mark2 records-in Coverage order", 895 ), 896 ], 897 ), 898 ( 899 "Mark2Record", 900 [ 901 ( 902 "Offset", 903 "Mark2Anchor", 904 "ClassCount", 905 0, 906 "Array of offsets (one per class) to Anchor tables-from beginning of Mark2Array table-zero-based array", 907 ), 908 ], 909 ), 910 ( 911 "PosLookupRecord", 912 [ 913 ( 914 "uint16", 915 "SequenceIndex", 916 None, 917 None, 918 "Index to input glyph sequence-first glyph = 0", 919 ), 920 ( 921 "uint16", 922 "LookupListIndex", 923 None, 924 None, 925 "Lookup to apply to that position-zero-based", 926 ), 927 ], 928 ), 929 ( 930 "ContextPosFormat1", 931 [ 932 ("uint16", "PosFormat", None, None, "Format identifier-format = 1"), 933 ( 934 "Offset", 935 "Coverage", 936 None, 937 None, 938 "Offset to Coverage table-from beginning of ContextPos subtable", 939 ), 940 ("uint16", "PosRuleSetCount", None, None, "Number of PosRuleSet tables"), 941 ( 942 "Offset", 943 "PosRuleSet", 944 "PosRuleSetCount", 945 0, 946 "Array of offsets to PosRuleSet tables-from beginning of ContextPos subtable-ordered by Coverage Index", 947 ), 948 ], 949 ), 950 ( 951 "PosRuleSet", 952 [ 953 ("uint16", "PosRuleCount", None, None, "Number of PosRule tables"), 954 ( 955 "Offset", 956 "PosRule", 957 "PosRuleCount", 958 0, 959 "Array of offsets to PosRule tables-from beginning of PosRuleSet-ordered by preference", 960 ), 961 ], 962 ), 963 ( 964 "PosRule", 965 [ 966 ( 967 "uint16", 968 "GlyphCount", 969 None, 970 None, 971 "Number of glyphs in the Input glyph sequence", 972 ), 973 ("uint16", "PosCount", None, None, "Number of PosLookupRecords"), 974 ( 975 "GlyphID", 976 "Input", 977 "GlyphCount", 978 -1, 979 "Array of input GlyphIDs-starting with the second glyph", 980 ), 981 ( 982 "struct", 983 "PosLookupRecord", 984 "PosCount", 985 0, 986 "Array of positioning lookups-in design order", 987 ), 988 ], 989 ), 990 ( 991 "ContextPosFormat2", 992 [ 993 ("uint16", "PosFormat", None, None, "Format identifier-format = 2"), 994 ( 995 "Offset", 996 "Coverage", 997 None, 998 None, 999 "Offset to Coverage table-from beginning of ContextPos subtable", 1000 ), 1001 ( 1002 "Offset", 1003 "ClassDef", 1004 None, 1005 None, 1006 "Offset to ClassDef table-from beginning of ContextPos subtable", 1007 ), 1008 ("uint16", "PosClassSetCount", None, None, "Number of PosClassSet tables"), 1009 ( 1010 "Offset", 1011 "PosClassSet", 1012 "PosClassSetCount", 1013 0, 1014 "Array of offsets to PosClassSet tables-from beginning of ContextPos subtable-ordered by class-may be NULL", 1015 ), 1016 ], 1017 ), 1018 ( 1019 "PosClassSet", 1020 [ 1021 ( 1022 "uint16", 1023 "PosClassRuleCount", 1024 None, 1025 None, 1026 "Number of PosClassRule tables", 1027 ), 1028 ( 1029 "Offset", 1030 "PosClassRule", 1031 "PosClassRuleCount", 1032 0, 1033 "Array of offsets to PosClassRule tables-from beginning of PosClassSet-ordered by preference", 1034 ), 1035 ], 1036 ), 1037 ( 1038 "PosClassRule", 1039 [ 1040 ("uint16", "GlyphCount", None, None, "Number of glyphs to be matched"), 1041 ("uint16", "PosCount", None, None, "Number of PosLookupRecords"), 1042 ( 1043 "uint16", 1044 "Class", 1045 "GlyphCount", 1046 -1, 1047 "Array of classes-beginning with the second class-to be matched to the input glyph sequence", 1048 ), 1049 ( 1050 "struct", 1051 "PosLookupRecord", 1052 "PosCount", 1053 0, 1054 "Array of positioning lookups-in design order", 1055 ), 1056 ], 1057 ), 1058 ( 1059 "ContextPosFormat3", 1060 [ 1061 ("uint16", "PosFormat", None, None, "Format identifier-format = 3"), 1062 ( 1063 "uint16", 1064 "GlyphCount", 1065 None, 1066 None, 1067 "Number of glyphs in the input sequence", 1068 ), 1069 ("uint16", "PosCount", None, None, "Number of PosLookupRecords"), 1070 ( 1071 "Offset", 1072 "Coverage", 1073 "GlyphCount", 1074 0, 1075 "Array of offsets to Coverage tables-from beginning of ContextPos subtable", 1076 ), 1077 ( 1078 "struct", 1079 "PosLookupRecord", 1080 "PosCount", 1081 0, 1082 "Array of positioning lookups-in design order", 1083 ), 1084 ], 1085 ), 1086 ( 1087 "ChainContextPosFormat1", 1088 [ 1089 ("uint16", "PosFormat", None, None, "Format identifier-format = 1"), 1090 ( 1091 "Offset", 1092 "Coverage", 1093 None, 1094 None, 1095 "Offset to Coverage table-from beginning of ContextPos subtable", 1096 ), 1097 ( 1098 "uint16", 1099 "ChainPosRuleSetCount", 1100 None, 1101 None, 1102 "Number of ChainPosRuleSet tables", 1103 ), 1104 ( 1105 "Offset", 1106 "ChainPosRuleSet", 1107 "ChainPosRuleSetCount", 1108 0, 1109 "Array of offsets to ChainPosRuleSet tables-from beginning of ContextPos subtable-ordered by Coverage Index", 1110 ), 1111 ], 1112 ), 1113 ( 1114 "ChainPosRuleSet", 1115 [ 1116 ( 1117 "uint16", 1118 "ChainPosRuleCount", 1119 None, 1120 None, 1121 "Number of ChainPosRule tables", 1122 ), 1123 ( 1124 "Offset", 1125 "ChainPosRule", 1126 "ChainPosRuleCount", 1127 0, 1128 "Array of offsets to ChainPosRule tables-from beginning of ChainPosRuleSet-ordered by preference", 1129 ), 1130 ], 1131 ), 1132 ( 1133 "ChainPosRule", 1134 [ 1135 ( 1136 "uint16", 1137 "BacktrackGlyphCount", 1138 None, 1139 None, 1140 "Total number of glyphs in the backtrack sequence (number of glyphs to be matched before the first glyph)", 1141 ), 1142 ( 1143 "GlyphID", 1144 "Backtrack", 1145 "BacktrackGlyphCount", 1146 0, 1147 "Array of backtracking GlyphID's (to be matched before the input sequence)", 1148 ), 1149 ( 1150 "uint16", 1151 "InputGlyphCount", 1152 None, 1153 None, 1154 "Total number of glyphs in the input sequence (includes the first glyph)", 1155 ), 1156 ( 1157 "GlyphID", 1158 "Input", 1159 "InputGlyphCount", 1160 -1, 1161 "Array of input GlyphIDs (start with second glyph)", 1162 ), 1163 ( 1164 "uint16", 1165 "LookAheadGlyphCount", 1166 None, 1167 None, 1168 "Total number of glyphs in the look ahead sequence (number of glyphs to be matched after the input sequence)", 1169 ), 1170 ( 1171 "GlyphID", 1172 "LookAhead", 1173 "LookAheadGlyphCount", 1174 0, 1175 "Array of lookahead GlyphID's (to be matched after the input sequence)", 1176 ), 1177 ("uint16", "PosCount", None, None, "Number of PosLookupRecords"), 1178 ( 1179 "struct", 1180 "PosLookupRecord", 1181 "PosCount", 1182 0, 1183 "Array of PosLookupRecords (in design order)", 1184 ), 1185 ], 1186 ), 1187 ( 1188 "ChainContextPosFormat2", 1189 [ 1190 ("uint16", "PosFormat", None, None, "Format identifier-format = 2"), 1191 ( 1192 "Offset", 1193 "Coverage", 1194 None, 1195 None, 1196 "Offset to Coverage table-from beginning of ChainContextPos subtable", 1197 ), 1198 ( 1199 "Offset", 1200 "BacktrackClassDef", 1201 None, 1202 None, 1203 "Offset to ClassDef table containing backtrack sequence context-from beginning of ChainContextPos subtable", 1204 ), 1205 ( 1206 "Offset", 1207 "InputClassDef", 1208 None, 1209 None, 1210 "Offset to ClassDef table containing input sequence context-from beginning of ChainContextPos subtable", 1211 ), 1212 ( 1213 "Offset", 1214 "LookAheadClassDef", 1215 None, 1216 None, 1217 "Offset to ClassDef table containing lookahead sequence context-from beginning of ChainContextPos subtable", 1218 ), 1219 ( 1220 "uint16", 1221 "ChainPosClassSetCount", 1222 None, 1223 None, 1224 "Number of ChainPosClassSet tables", 1225 ), 1226 ( 1227 "Offset", 1228 "ChainPosClassSet", 1229 "ChainPosClassSetCount", 1230 0, 1231 "Array of offsets to ChainPosClassSet tables-from beginning of ChainContextPos subtable-ordered by input class-may be NULL", 1232 ), 1233 ], 1234 ), 1235 ( 1236 "ChainPosClassSet", 1237 [ 1238 ( 1239 "uint16", 1240 "ChainPosClassRuleCount", 1241 None, 1242 None, 1243 "Number of ChainPosClassRule tables", 1244 ), 1245 ( 1246 "Offset", 1247 "ChainPosClassRule", 1248 "ChainPosClassRuleCount", 1249 0, 1250 "Array of offsets to ChainPosClassRule tables-from beginning of ChainPosClassSet-ordered by preference", 1251 ), 1252 ], 1253 ), 1254 ( 1255 "ChainPosClassRule", 1256 [ 1257 ( 1258 "uint16", 1259 "BacktrackGlyphCount", 1260 None, 1261 None, 1262 "Total number of glyphs in the backtrack sequence (number of glyphs to be matched before the first glyph)", 1263 ), 1264 ( 1265 "uint16", 1266 "Backtrack", 1267 "BacktrackGlyphCount", 1268 0, 1269 "Array of backtracking classes(to be matched before the input sequence)", 1270 ), 1271 ( 1272 "uint16", 1273 "InputGlyphCount", 1274 None, 1275 None, 1276 "Total number of classes in the input sequence (includes the first class)", 1277 ), 1278 ( 1279 "uint16", 1280 "Input", 1281 "InputGlyphCount", 1282 -1, 1283 "Array of input classes(start with second class; to be matched with the input glyph sequence)", 1284 ), 1285 ( 1286 "uint16", 1287 "LookAheadGlyphCount", 1288 None, 1289 None, 1290 "Total number of classes in the look ahead sequence (number of classes to be matched after the input sequence)", 1291 ), 1292 ( 1293 "uint16", 1294 "LookAhead", 1295 "LookAheadGlyphCount", 1296 0, 1297 "Array of lookahead classes(to be matched after the input sequence)", 1298 ), 1299 ("uint16", "PosCount", None, None, "Number of PosLookupRecords"), 1300 ( 1301 "struct", 1302 "PosLookupRecord", 1303 "PosCount", 1304 0, 1305 "Array of PosLookupRecords (in design order)", 1306 ), 1307 ], 1308 ), 1309 ( 1310 "ChainContextPosFormat3", 1311 [ 1312 ("uint16", "PosFormat", None, None, "Format identifier-format = 3"), 1313 ( 1314 "uint16", 1315 "BacktrackGlyphCount", 1316 None, 1317 None, 1318 "Number of glyphs in the backtracking sequence", 1319 ), 1320 ( 1321 "Offset", 1322 "BacktrackCoverage", 1323 "BacktrackGlyphCount", 1324 0, 1325 "Array of offsets to coverage tables in backtracking sequence, in glyph sequence order", 1326 ), 1327 ( 1328 "uint16", 1329 "InputGlyphCount", 1330 None, 1331 None, 1332 "Number of glyphs in input sequence", 1333 ), 1334 ( 1335 "Offset", 1336 "InputCoverage", 1337 "InputGlyphCount", 1338 0, 1339 "Array of offsets to coverage tables in input sequence, in glyph sequence order", 1340 ), 1341 ( 1342 "uint16", 1343 "LookAheadGlyphCount", 1344 None, 1345 None, 1346 "Number of glyphs in lookahead sequence", 1347 ), 1348 ( 1349 "Offset", 1350 "LookAheadCoverage", 1351 "LookAheadGlyphCount", 1352 0, 1353 "Array of offsets to coverage tables in lookahead sequence, in glyph sequence order", 1354 ), 1355 ("uint16", "PosCount", None, None, "Number of PosLookupRecords"), 1356 ( 1357 "struct", 1358 "PosLookupRecord", 1359 "PosCount", 1360 0, 1361 "Array of PosLookupRecords,in design order", 1362 ), 1363 ], 1364 ), 1365 ( 1366 "ExtensionPosFormat1", 1367 [ 1368 ("uint16", "ExtFormat", None, None, "Format identifier. Set to 1."), 1369 ( 1370 "uint16", 1371 "ExtensionLookupType", 1372 None, 1373 None, 1374 "Lookup type of subtable referenced by ExtensionOffset (i.e. the extension subtable).", 1375 ), 1376 ("LOffset", "ExtSubTable", None, None, "Offset to SubTable"), 1377 ], 1378 ), 1379 # ('ValueRecord', [ 1380 # ('int16', 'XPlacement', None, None, 'Horizontal adjustment for placement-in design units'), 1381 # ('int16', 'YPlacement', None, None, 'Vertical adjustment for placement-in design units'), 1382 # ('int16', 'XAdvance', None, None, 'Horizontal adjustment for advance-in design units (only used for horizontal writing)'), 1383 # ('int16', 'YAdvance', None, None, 'Vertical adjustment for advance-in design units (only used for vertical writing)'), 1384 # ('Offset', 'XPlaDevice', None, None, 'Offset to Device table for horizontal placement-measured from beginning of PosTable (may be NULL)'), 1385 # ('Offset', 'YPlaDevice', None, None, 'Offset to Device table for vertical placement-measured from beginning of PosTable (may be NULL)'), 1386 # ('Offset', 'XAdvDevice', None, None, 'Offset to Device table for horizontal advance-measured from beginning of PosTable (may be NULL)'), 1387 # ('Offset', 'YAdvDevice', None, None, 'Offset to Device table for vertical advance-measured from beginning of PosTable (may be NULL)'), 1388 # ]), 1389 ( 1390 "AnchorFormat1", 1391 [ 1392 ("uint16", "AnchorFormat", None, None, "Format identifier-format = 1"), 1393 ("int16", "XCoordinate", None, None, "Horizontal value-in design units"), 1394 ("int16", "YCoordinate", None, None, "Vertical value-in design units"), 1395 ], 1396 ), 1397 ( 1398 "AnchorFormat2", 1399 [ 1400 ("uint16", "AnchorFormat", None, None, "Format identifier-format = 2"), 1401 ("int16", "XCoordinate", None, None, "Horizontal value-in design units"), 1402 ("int16", "YCoordinate", None, None, "Vertical value-in design units"), 1403 ("uint16", "AnchorPoint", None, None, "Index to glyph contour point"), 1404 ], 1405 ), 1406 ( 1407 "AnchorFormat3", 1408 [ 1409 ("uint16", "AnchorFormat", None, None, "Format identifier-format = 3"), 1410 ("int16", "XCoordinate", None, None, "Horizontal value-in design units"), 1411 ("int16", "YCoordinate", None, None, "Vertical value-in design units"), 1412 ( 1413 "Offset", 1414 "XDeviceTable", 1415 None, 1416 None, 1417 "Offset to Device table for X coordinate- from beginning of Anchor table (may be NULL)", 1418 ), 1419 ( 1420 "Offset", 1421 "YDeviceTable", 1422 None, 1423 None, 1424 "Offset to Device table for Y coordinate- from beginning of Anchor table (may be NULL)", 1425 ), 1426 ], 1427 ), 1428 ( 1429 "MarkArray", 1430 [ 1431 ("uint16", "MarkCount", None, None, "Number of MarkRecords"), 1432 ( 1433 "struct", 1434 "MarkRecord", 1435 "MarkCount", 1436 0, 1437 "Array of MarkRecords-in Coverage order", 1438 ), 1439 ], 1440 ), 1441 ( 1442 "MarkRecord", 1443 [ 1444 ("uint16", "Class", None, None, "Class defined for this mark"), 1445 ( 1446 "Offset", 1447 "MarkAnchor", 1448 None, 1449 None, 1450 "Offset to Anchor table-from beginning of MarkArray table", 1451 ), 1452 ], 1453 ), 1454 # 1455 # gsub 1456 # 1457 ( 1458 "GSUB", 1459 [ 1460 ( 1461 "Version", 1462 "Version", 1463 None, 1464 None, 1465 "Version of the GSUB table- 0x00010000 or 0x00010001", 1466 ), 1467 ( 1468 "Offset", 1469 "ScriptList", 1470 None, 1471 None, 1472 "Offset to ScriptList table-from beginning of GSUB table", 1473 ), 1474 ( 1475 "Offset", 1476 "FeatureList", 1477 None, 1478 None, 1479 "Offset to FeatureList table-from beginning of GSUB table", 1480 ), 1481 ( 1482 "Offset", 1483 "LookupList", 1484 None, 1485 None, 1486 "Offset to LookupList table-from beginning of GSUB table", 1487 ), 1488 ( 1489 "LOffset", 1490 "FeatureVariations", 1491 None, 1492 "Version >= 0x00010001", 1493 "Offset to FeatureVariations table-from beginning of GSUB table", 1494 ), 1495 ], 1496 ), 1497 ( 1498 "SingleSubstFormat1", 1499 [ 1500 ("uint16", "SubstFormat", None, None, "Format identifier-format = 1"), 1501 ( 1502 "Offset", 1503 "Coverage", 1504 None, 1505 None, 1506 "Offset to Coverage table-from beginning of Substitution table", 1507 ), 1508 ( 1509 "uint16", 1510 "DeltaGlyphID", 1511 None, 1512 None, 1513 "Add to original GlyphID modulo 65536 to get substitute GlyphID", 1514 ), 1515 ], 1516 ), 1517 ( 1518 "SingleSubstFormat2", 1519 [ 1520 ("uint16", "SubstFormat", None, None, "Format identifier-format = 2"), 1521 ( 1522 "Offset", 1523 "Coverage", 1524 None, 1525 None, 1526 "Offset to Coverage table-from beginning of Substitution table", 1527 ), 1528 ( 1529 "uint16", 1530 "GlyphCount", 1531 None, 1532 None, 1533 "Number of GlyphIDs in the Substitute array", 1534 ), 1535 ( 1536 "GlyphID", 1537 "Substitute", 1538 "GlyphCount", 1539 0, 1540 "Array of substitute GlyphIDs-ordered by Coverage Index", 1541 ), 1542 ], 1543 ), 1544 ( 1545 "MultipleSubstFormat1", 1546 [ 1547 ("uint16", "SubstFormat", None, None, "Format identifier-format = 1"), 1548 ( 1549 "Offset", 1550 "Coverage", 1551 None, 1552 None, 1553 "Offset to Coverage table-from beginning of Substitution table", 1554 ), 1555 ( 1556 "uint16", 1557 "SequenceCount", 1558 None, 1559 None, 1560 "Number of Sequence table offsets in the Sequence array", 1561 ), 1562 ( 1563 "Offset", 1564 "Sequence", 1565 "SequenceCount", 1566 0, 1567 "Array of offsets to Sequence tables-from beginning of Substitution table-ordered by Coverage Index", 1568 ), 1569 ], 1570 ), 1571 ( 1572 "Sequence", 1573 [ 1574 ( 1575 "uint16", 1576 "GlyphCount", 1577 None, 1578 None, 1579 "Number of GlyphIDs in the Substitute array. This should always be greater than 0.", 1580 ), 1581 ( 1582 "GlyphID", 1583 "Substitute", 1584 "GlyphCount", 1585 0, 1586 "String of GlyphIDs to substitute", 1587 ), 1588 ], 1589 ), 1590 ( 1591 "AlternateSubstFormat1", 1592 [ 1593 ("uint16", "SubstFormat", None, None, "Format identifier-format = 1"), 1594 ( 1595 "Offset", 1596 "Coverage", 1597 None, 1598 None, 1599 "Offset to Coverage table-from beginning of Substitution table", 1600 ), 1601 ( 1602 "uint16", 1603 "AlternateSetCount", 1604 None, 1605 None, 1606 "Number of AlternateSet tables", 1607 ), 1608 ( 1609 "Offset", 1610 "AlternateSet", 1611 "AlternateSetCount", 1612 0, 1613 "Array of offsets to AlternateSet tables-from beginning of Substitution table-ordered by Coverage Index", 1614 ), 1615 ], 1616 ), 1617 ( 1618 "AlternateSet", 1619 [ 1620 ( 1621 "uint16", 1622 "GlyphCount", 1623 None, 1624 None, 1625 "Number of GlyphIDs in the Alternate array", 1626 ), 1627 ( 1628 "GlyphID", 1629 "Alternate", 1630 "GlyphCount", 1631 0, 1632 "Array of alternate GlyphIDs-in arbitrary order", 1633 ), 1634 ], 1635 ), 1636 ( 1637 "LigatureSubstFormat1", 1638 [ 1639 ("uint16", "SubstFormat", None, None, "Format identifier-format = 1"), 1640 ( 1641 "Offset", 1642 "Coverage", 1643 None, 1644 None, 1645 "Offset to Coverage table-from beginning of Substitution table", 1646 ), 1647 ("uint16", "LigSetCount", None, None, "Number of LigatureSet tables"), 1648 ( 1649 "Offset", 1650 "LigatureSet", 1651 "LigSetCount", 1652 0, 1653 "Array of offsets to LigatureSet tables-from beginning of Substitution table-ordered by Coverage Index", 1654 ), 1655 ], 1656 ), 1657 ( 1658 "LigatureSet", 1659 [ 1660 ("uint16", "LigatureCount", None, None, "Number of Ligature tables"), 1661 ( 1662 "Offset", 1663 "Ligature", 1664 "LigatureCount", 1665 0, 1666 "Array of offsets to Ligature tables-from beginning of LigatureSet table-ordered by preference", 1667 ), 1668 ], 1669 ), 1670 ( 1671 "Ligature", 1672 [ 1673 ("GlyphID", "LigGlyph", None, None, "GlyphID of ligature to substitute"), 1674 ("uint16", "CompCount", None, None, "Number of components in the ligature"), 1675 ( 1676 "GlyphID", 1677 "Component", 1678 "CompCount", 1679 -1, 1680 "Array of component GlyphIDs-start with the second component-ordered in writing direction", 1681 ), 1682 ], 1683 ), 1684 ( 1685 "SubstLookupRecord", 1686 [ 1687 ( 1688 "uint16", 1689 "SequenceIndex", 1690 None, 1691 None, 1692 "Index into current glyph sequence-first glyph = 0", 1693 ), 1694 ( 1695 "uint16", 1696 "LookupListIndex", 1697 None, 1698 None, 1699 "Lookup to apply to that position-zero-based", 1700 ), 1701 ], 1702 ), 1703 ( 1704 "ContextSubstFormat1", 1705 [ 1706 ("uint16", "SubstFormat", None, None, "Format identifier-format = 1"), 1707 ( 1708 "Offset", 1709 "Coverage", 1710 None, 1711 None, 1712 "Offset to Coverage table-from beginning of Substitution table", 1713 ), 1714 ( 1715 "uint16", 1716 "SubRuleSetCount", 1717 None, 1718 None, 1719 "Number of SubRuleSet tables-must equal GlyphCount in Coverage table", 1720 ), 1721 ( 1722 "Offset", 1723 "SubRuleSet", 1724 "SubRuleSetCount", 1725 0, 1726 "Array of offsets to SubRuleSet tables-from beginning of Substitution table-ordered by Coverage Index", 1727 ), 1728 ], 1729 ), 1730 ( 1731 "SubRuleSet", 1732 [ 1733 ("uint16", "SubRuleCount", None, None, "Number of SubRule tables"), 1734 ( 1735 "Offset", 1736 "SubRule", 1737 "SubRuleCount", 1738 0, 1739 "Array of offsets to SubRule tables-from beginning of SubRuleSet table-ordered by preference", 1740 ), 1741 ], 1742 ), 1743 ( 1744 "SubRule", 1745 [ 1746 ( 1747 "uint16", 1748 "GlyphCount", 1749 None, 1750 None, 1751 "Total number of glyphs in input glyph sequence-includes the first glyph", 1752 ), 1753 ("uint16", "SubstCount", None, None, "Number of SubstLookupRecords"), 1754 ( 1755 "GlyphID", 1756 "Input", 1757 "GlyphCount", 1758 -1, 1759 "Array of input GlyphIDs-start with second glyph", 1760 ), 1761 ( 1762 "struct", 1763 "SubstLookupRecord", 1764 "SubstCount", 1765 0, 1766 "Array of SubstLookupRecords-in design order", 1767 ), 1768 ], 1769 ), 1770 ( 1771 "ContextSubstFormat2", 1772 [ 1773 ("uint16", "SubstFormat", None, None, "Format identifier-format = 2"), 1774 ( 1775 "Offset", 1776 "Coverage", 1777 None, 1778 None, 1779 "Offset to Coverage table-from beginning of Substitution table", 1780 ), 1781 ( 1782 "Offset", 1783 "ClassDef", 1784 None, 1785 None, 1786 "Offset to glyph ClassDef table-from beginning of Substitution table", 1787 ), 1788 ("uint16", "SubClassSetCount", None, None, "Number of SubClassSet tables"), 1789 ( 1790 "Offset", 1791 "SubClassSet", 1792 "SubClassSetCount", 1793 0, 1794 "Array of offsets to SubClassSet tables-from beginning of Substitution table-ordered by class-may be NULL", 1795 ), 1796 ], 1797 ), 1798 ( 1799 "SubClassSet", 1800 [ 1801 ( 1802 "uint16", 1803 "SubClassRuleCount", 1804 None, 1805 None, 1806 "Number of SubClassRule tables", 1807 ), 1808 ( 1809 "Offset", 1810 "SubClassRule", 1811 "SubClassRuleCount", 1812 0, 1813 "Array of offsets to SubClassRule tables-from beginning of SubClassSet-ordered by preference", 1814 ), 1815 ], 1816 ), 1817 ( 1818 "SubClassRule", 1819 [ 1820 ( 1821 "uint16", 1822 "GlyphCount", 1823 None, 1824 None, 1825 "Total number of classes specified for the context in the rule-includes the first class", 1826 ), 1827 ("uint16", "SubstCount", None, None, "Number of SubstLookupRecords"), 1828 ( 1829 "uint16", 1830 "Class", 1831 "GlyphCount", 1832 -1, 1833 "Array of classes-beginning with the second class-to be matched to the input glyph class sequence", 1834 ), 1835 ( 1836 "struct", 1837 "SubstLookupRecord", 1838 "SubstCount", 1839 0, 1840 "Array of Substitution lookups-in design order", 1841 ), 1842 ], 1843 ), 1844 ( 1845 "ContextSubstFormat3", 1846 [ 1847 ("uint16", "SubstFormat", None, None, "Format identifier-format = 3"), 1848 ( 1849 "uint16", 1850 "GlyphCount", 1851 None, 1852 None, 1853 "Number of glyphs in the input glyph sequence", 1854 ), 1855 ("uint16", "SubstCount", None, None, "Number of SubstLookupRecords"), 1856 ( 1857 "Offset", 1858 "Coverage", 1859 "GlyphCount", 1860 0, 1861 "Array of offsets to Coverage table-from beginning of Substitution table-in glyph sequence order", 1862 ), 1863 ( 1864 "struct", 1865 "SubstLookupRecord", 1866 "SubstCount", 1867 0, 1868 "Array of SubstLookupRecords-in design order", 1869 ), 1870 ], 1871 ), 1872 ( 1873 "ChainContextSubstFormat1", 1874 [ 1875 ("uint16", "SubstFormat", None, None, "Format identifier-format = 1"), 1876 ( 1877 "Offset", 1878 "Coverage", 1879 None, 1880 None, 1881 "Offset to Coverage table-from beginning of Substitution table", 1882 ), 1883 ( 1884 "uint16", 1885 "ChainSubRuleSetCount", 1886 None, 1887 None, 1888 "Number of ChainSubRuleSet tables-must equal GlyphCount in Coverage table", 1889 ), 1890 ( 1891 "Offset", 1892 "ChainSubRuleSet", 1893 "ChainSubRuleSetCount", 1894 0, 1895 "Array of offsets to ChainSubRuleSet tables-from beginning of Substitution table-ordered by Coverage Index", 1896 ), 1897 ], 1898 ), 1899 ( 1900 "ChainSubRuleSet", 1901 [ 1902 ( 1903 "uint16", 1904 "ChainSubRuleCount", 1905 None, 1906 None, 1907 "Number of ChainSubRule tables", 1908 ), 1909 ( 1910 "Offset", 1911 "ChainSubRule", 1912 "ChainSubRuleCount", 1913 0, 1914 "Array of offsets to ChainSubRule tables-from beginning of ChainSubRuleSet table-ordered by preference", 1915 ), 1916 ], 1917 ), 1918 ( 1919 "ChainSubRule", 1920 [ 1921 ( 1922 "uint16", 1923 "BacktrackGlyphCount", 1924 None, 1925 None, 1926 "Total number of glyphs in the backtrack sequence (number of glyphs to be matched before the first glyph)", 1927 ), 1928 ( 1929 "GlyphID", 1930 "Backtrack", 1931 "BacktrackGlyphCount", 1932 0, 1933 "Array of backtracking GlyphID's (to be matched before the input sequence)", 1934 ), 1935 ( 1936 "uint16", 1937 "InputGlyphCount", 1938 None, 1939 None, 1940 "Total number of glyphs in the input sequence (includes the first glyph)", 1941 ), 1942 ( 1943 "GlyphID", 1944 "Input", 1945 "InputGlyphCount", 1946 -1, 1947 "Array of input GlyphIDs (start with second glyph)", 1948 ), 1949 ( 1950 "uint16", 1951 "LookAheadGlyphCount", 1952 None, 1953 None, 1954 "Total number of glyphs in the look ahead sequence (number of glyphs to be matched after the input sequence)", 1955 ), 1956 ( 1957 "GlyphID", 1958 "LookAhead", 1959 "LookAheadGlyphCount", 1960 0, 1961 "Array of lookahead GlyphID's (to be matched after the input sequence)", 1962 ), 1963 ("uint16", "SubstCount", None, None, "Number of SubstLookupRecords"), 1964 ( 1965 "struct", 1966 "SubstLookupRecord", 1967 "SubstCount", 1968 0, 1969 "Array of SubstLookupRecords (in design order)", 1970 ), 1971 ], 1972 ), 1973 ( 1974 "ChainContextSubstFormat2", 1975 [ 1976 ("uint16", "SubstFormat", None, None, "Format identifier-format = 2"), 1977 ( 1978 "Offset", 1979 "Coverage", 1980 None, 1981 None, 1982 "Offset to Coverage table-from beginning of Substitution table", 1983 ), 1984 ( 1985 "Offset", 1986 "BacktrackClassDef", 1987 None, 1988 None, 1989 "Offset to glyph ClassDef table containing backtrack sequence data-from beginning of Substitution table", 1990 ), 1991 ( 1992 "Offset", 1993 "InputClassDef", 1994 None, 1995 None, 1996 "Offset to glyph ClassDef table containing input sequence data-from beginning of Substitution table", 1997 ), 1998 ( 1999 "Offset", 2000 "LookAheadClassDef", 2001 None, 2002 None, 2003 "Offset to glyph ClassDef table containing lookahead sequence data-from beginning of Substitution table", 2004 ), 2005 ( 2006 "uint16", 2007 "ChainSubClassSetCount", 2008 None, 2009 None, 2010 "Number of ChainSubClassSet tables", 2011 ), 2012 ( 2013 "Offset", 2014 "ChainSubClassSet", 2015 "ChainSubClassSetCount", 2016 0, 2017 "Array of offsets to ChainSubClassSet tables-from beginning of Substitution table-ordered by input class-may be NULL", 2018 ), 2019 ], 2020 ), 2021 ( 2022 "ChainSubClassSet", 2023 [ 2024 ( 2025 "uint16", 2026 "ChainSubClassRuleCount", 2027 None, 2028 None, 2029 "Number of ChainSubClassRule tables", 2030 ), 2031 ( 2032 "Offset", 2033 "ChainSubClassRule", 2034 "ChainSubClassRuleCount", 2035 0, 2036 "Array of offsets to ChainSubClassRule tables-from beginning of ChainSubClassSet-ordered by preference", 2037 ), 2038 ], 2039 ), 2040 ( 2041 "ChainSubClassRule", 2042 [ 2043 ( 2044 "uint16", 2045 "BacktrackGlyphCount", 2046 None, 2047 None, 2048 "Total number of glyphs in the backtrack sequence (number of glyphs to be matched before the first glyph)", 2049 ), 2050 ( 2051 "uint16", 2052 "Backtrack", 2053 "BacktrackGlyphCount", 2054 0, 2055 "Array of backtracking classes(to be matched before the input sequence)", 2056 ), 2057 ( 2058 "uint16", 2059 "InputGlyphCount", 2060 None, 2061 None, 2062 "Total number of classes in the input sequence (includes the first class)", 2063 ), 2064 ( 2065 "uint16", 2066 "Input", 2067 "InputGlyphCount", 2068 -1, 2069 "Array of input classes(start with second class; to be matched with the input glyph sequence)", 2070 ), 2071 ( 2072 "uint16", 2073 "LookAheadGlyphCount", 2074 None, 2075 None, 2076 "Total number of classes in the look ahead sequence (number of classes to be matched after the input sequence)", 2077 ), 2078 ( 2079 "uint16", 2080 "LookAhead", 2081 "LookAheadGlyphCount", 2082 0, 2083 "Array of lookahead classes(to be matched after the input sequence)", 2084 ), 2085 ("uint16", "SubstCount", None, None, "Number of SubstLookupRecords"), 2086 ( 2087 "struct", 2088 "SubstLookupRecord", 2089 "SubstCount", 2090 0, 2091 "Array of SubstLookupRecords (in design order)", 2092 ), 2093 ], 2094 ), 2095 ( 2096 "ChainContextSubstFormat3", 2097 [ 2098 ("uint16", "SubstFormat", None, None, "Format identifier-format = 3"), 2099 ( 2100 "uint16", 2101 "BacktrackGlyphCount", 2102 None, 2103 None, 2104 "Number of glyphs in the backtracking sequence", 2105 ), 2106 ( 2107 "Offset", 2108 "BacktrackCoverage", 2109 "BacktrackGlyphCount", 2110 0, 2111 "Array of offsets to coverage tables in backtracking sequence, in glyph sequence order", 2112 ), 2113 ( 2114 "uint16", 2115 "InputGlyphCount", 2116 None, 2117 None, 2118 "Number of glyphs in input sequence", 2119 ), 2120 ( 2121 "Offset", 2122 "InputCoverage", 2123 "InputGlyphCount", 2124 0, 2125 "Array of offsets to coverage tables in input sequence, in glyph sequence order", 2126 ), 2127 ( 2128 "uint16", 2129 "LookAheadGlyphCount", 2130 None, 2131 None, 2132 "Number of glyphs in lookahead sequence", 2133 ), 2134 ( 2135 "Offset", 2136 "LookAheadCoverage", 2137 "LookAheadGlyphCount", 2138 0, 2139 "Array of offsets to coverage tables in lookahead sequence, in glyph sequence order", 2140 ), 2141 ("uint16", "SubstCount", None, None, "Number of SubstLookupRecords"), 2142 ( 2143 "struct", 2144 "SubstLookupRecord", 2145 "SubstCount", 2146 0, 2147 "Array of SubstLookupRecords, in design order", 2148 ), 2149 ], 2150 ), 2151 ( 2152 "ExtensionSubstFormat1", 2153 [ 2154 ("uint16", "ExtFormat", None, None, "Format identifier. Set to 1."), 2155 ( 2156 "uint16", 2157 "ExtensionLookupType", 2158 None, 2159 None, 2160 "Lookup type of subtable referenced by ExtensionOffset (i.e. the extension subtable).", 2161 ), 2162 ( 2163 "LOffset", 2164 "ExtSubTable", 2165 None, 2166 None, 2167 "Array of offsets to Lookup tables-from beginning of LookupList -zero based (first lookup is Lookup index = 0)", 2168 ), 2169 ], 2170 ), 2171 ( 2172 "ReverseChainSingleSubstFormat1", 2173 [ 2174 ("uint16", "SubstFormat", None, None, "Format identifier-format = 1"), 2175 ( 2176 "Offset", 2177 "Coverage", 2178 None, 2179 0, 2180 "Offset to Coverage table - from beginning of Substitution table", 2181 ), 2182 ( 2183 "uint16", 2184 "BacktrackGlyphCount", 2185 None, 2186 None, 2187 "Number of glyphs in the backtracking sequence", 2188 ), 2189 ( 2190 "Offset", 2191 "BacktrackCoverage", 2192 "BacktrackGlyphCount", 2193 0, 2194 "Array of offsets to coverage tables in backtracking sequence, in glyph sequence order", 2195 ), 2196 ( 2197 "uint16", 2198 "LookAheadGlyphCount", 2199 None, 2200 None, 2201 "Number of glyphs in lookahead sequence", 2202 ), 2203 ( 2204 "Offset", 2205 "LookAheadCoverage", 2206 "LookAheadGlyphCount", 2207 0, 2208 "Array of offsets to coverage tables in lookahead sequence, in glyph sequence order", 2209 ), 2210 ( 2211 "uint16", 2212 "GlyphCount", 2213 None, 2214 None, 2215 "Number of GlyphIDs in the Substitute array", 2216 ), 2217 ( 2218 "GlyphID", 2219 "Substitute", 2220 "GlyphCount", 2221 0, 2222 "Array of substitute GlyphIDs-ordered by Coverage index", 2223 ), 2224 ], 2225 ), 2226 # 2227 # gdef 2228 # 2229 ( 2230 "GDEF", 2231 [ 2232 ( 2233 "Version", 2234 "Version", 2235 None, 2236 None, 2237 "Version of the GDEF table- 0x00010000, 0x00010002, or 0x00010003", 2238 ), 2239 ( 2240 "Offset", 2241 "GlyphClassDef", 2242 None, 2243 None, 2244 "Offset to class definition table for glyph type-from beginning of GDEF header (may be NULL)", 2245 ), 2246 ( 2247 "Offset", 2248 "AttachList", 2249 None, 2250 None, 2251 "Offset to list of glyphs with attachment points-from beginning of GDEF header (may be NULL)", 2252 ), 2253 ( 2254 "Offset", 2255 "LigCaretList", 2256 None, 2257 None, 2258 "Offset to list of positioning points for ligature carets-from beginning of GDEF header (may be NULL)", 2259 ), 2260 ( 2261 "Offset", 2262 "MarkAttachClassDef", 2263 None, 2264 None, 2265 "Offset to class definition table for mark attachment type-from beginning of GDEF header (may be NULL)", 2266 ), 2267 ( 2268 "Offset", 2269 "MarkGlyphSetsDef", 2270 None, 2271 "Version >= 0x00010002", 2272 "Offset to the table of mark set definitions-from beginning of GDEF header (may be NULL)", 2273 ), 2274 ( 2275 "LOffset", 2276 "VarStore", 2277 None, 2278 "Version >= 0x00010003", 2279 "Offset to variation store (may be NULL)", 2280 ), 2281 ], 2282 ), 2283 ( 2284 "AttachList", 2285 [ 2286 ( 2287 "Offset", 2288 "Coverage", 2289 None, 2290 None, 2291 "Offset to Coverage table - from beginning of AttachList table", 2292 ), 2293 ( 2294 "uint16", 2295 "GlyphCount", 2296 None, 2297 None, 2298 "Number of glyphs with attachment points", 2299 ), 2300 ( 2301 "Offset", 2302 "AttachPoint", 2303 "GlyphCount", 2304 0, 2305 "Array of offsets to AttachPoint tables-from beginning of AttachList table-in Coverage Index order", 2306 ), 2307 ], 2308 ), 2309 ( 2310 "AttachPoint", 2311 [ 2312 ( 2313 "uint16", 2314 "PointCount", 2315 None, 2316 None, 2317 "Number of attachment points on this glyph", 2318 ), 2319 ( 2320 "uint16", 2321 "PointIndex", 2322 "PointCount", 2323 0, 2324 "Array of contour point indices -in increasing numerical order", 2325 ), 2326 ], 2327 ), 2328 ( 2329 "LigCaretList", 2330 [ 2331 ( 2332 "Offset", 2333 "Coverage", 2334 None, 2335 None, 2336 "Offset to Coverage table - from beginning of LigCaretList table", 2337 ), 2338 ("uint16", "LigGlyphCount", None, None, "Number of ligature glyphs"), 2339 ( 2340 "Offset", 2341 "LigGlyph", 2342 "LigGlyphCount", 2343 0, 2344 "Array of offsets to LigGlyph tables-from beginning of LigCaretList table-in Coverage Index order", 2345 ), 2346 ], 2347 ), 2348 ( 2349 "LigGlyph", 2350 [ 2351 ( 2352 "uint16", 2353 "CaretCount", 2354 None, 2355 None, 2356 "Number of CaretValues for this ligature (components - 1)", 2357 ), 2358 ( 2359 "Offset", 2360 "CaretValue", 2361 "CaretCount", 2362 0, 2363 "Array of offsets to CaretValue tables-from beginning of LigGlyph table-in increasing coordinate order", 2364 ), 2365 ], 2366 ), 2367 ( 2368 "CaretValueFormat1", 2369 [ 2370 ("uint16", "CaretValueFormat", None, None, "Format identifier-format = 1"), 2371 ("int16", "Coordinate", None, None, "X or Y value, in design units"), 2372 ], 2373 ), 2374 ( 2375 "CaretValueFormat2", 2376 [ 2377 ("uint16", "CaretValueFormat", None, None, "Format identifier-format = 2"), 2378 ("uint16", "CaretValuePoint", None, None, "Contour point index on glyph"), 2379 ], 2380 ), 2381 ( 2382 "CaretValueFormat3", 2383 [ 2384 ("uint16", "CaretValueFormat", None, None, "Format identifier-format = 3"), 2385 ("int16", "Coordinate", None, None, "X or Y value, in design units"), 2386 ( 2387 "Offset", 2388 "DeviceTable", 2389 None, 2390 None, 2391 "Offset to Device table for X or Y value-from beginning of CaretValue table", 2392 ), 2393 ], 2394 ), 2395 ( 2396 "MarkGlyphSetsDef", 2397 [ 2398 ("uint16", "MarkSetTableFormat", None, None, "Format identifier == 1"), 2399 ("uint16", "MarkSetCount", None, None, "Number of mark sets defined"), 2400 ( 2401 "LOffset", 2402 "Coverage", 2403 "MarkSetCount", 2404 0, 2405 "Array of offsets to mark set coverage tables.", 2406 ), 2407 ], 2408 ), 2409 # 2410 # base 2411 # 2412 ( 2413 "BASE", 2414 [ 2415 ( 2416 "Version", 2417 "Version", 2418 None, 2419 None, 2420 "Version of the BASE table-initially 0x00010000", 2421 ), 2422 ( 2423 "Offset", 2424 "HorizAxis", 2425 None, 2426 None, 2427 "Offset to horizontal Axis table-from beginning of BASE table-may be NULL", 2428 ), 2429 ( 2430 "Offset", 2431 "VertAxis", 2432 None, 2433 None, 2434 "Offset to vertical Axis table-from beginning of BASE table-may be NULL", 2435 ), 2436 ( 2437 "LOffset", 2438 "VarStore", 2439 None, 2440 "Version >= 0x00010001", 2441 "Offset to variation store (may be NULL)", 2442 ), 2443 ], 2444 ), 2445 ( 2446 "Axis", 2447 [ 2448 ( 2449 "Offset", 2450 "BaseTagList", 2451 None, 2452 None, 2453 "Offset to BaseTagList table-from beginning of Axis table-may be NULL", 2454 ), 2455 ( 2456 "Offset", 2457 "BaseScriptList", 2458 None, 2459 None, 2460 "Offset to BaseScriptList table-from beginning of Axis table", 2461 ), 2462 ], 2463 ), 2464 ( 2465 "BaseTagList", 2466 [ 2467 ( 2468 "uint16", 2469 "BaseTagCount", 2470 None, 2471 None, 2472 "Number of baseline identification tags in this text direction-may be zero (0)", 2473 ), 2474 ( 2475 "Tag", 2476 "BaselineTag", 2477 "BaseTagCount", 2478 0, 2479 "Array of 4-byte baseline identification tags-must be in alphabetical order", 2480 ), 2481 ], 2482 ), 2483 ( 2484 "BaseScriptList", 2485 [ 2486 ( 2487 "uint16", 2488 "BaseScriptCount", 2489 None, 2490 None, 2491 "Number of BaseScriptRecords defined", 2492 ), 2493 ( 2494 "struct", 2495 "BaseScriptRecord", 2496 "BaseScriptCount", 2497 0, 2498 "Array of BaseScriptRecords-in alphabetical order by BaseScriptTag", 2499 ), 2500 ], 2501 ), 2502 ( 2503 "BaseScriptRecord", 2504 [ 2505 ("Tag", "BaseScriptTag", None, None, "4-byte script identification tag"), 2506 ( 2507 "Offset", 2508 "BaseScript", 2509 None, 2510 None, 2511 "Offset to BaseScript table-from beginning of BaseScriptList", 2512 ), 2513 ], 2514 ), 2515 ( 2516 "BaseScript", 2517 [ 2518 ( 2519 "Offset", 2520 "BaseValues", 2521 None, 2522 None, 2523 "Offset to BaseValues table-from beginning of BaseScript table-may be NULL", 2524 ), 2525 ( 2526 "Offset", 2527 "DefaultMinMax", 2528 None, 2529 None, 2530 "Offset to MinMax table- from beginning of BaseScript table-may be NULL", 2531 ), 2532 ( 2533 "uint16", 2534 "BaseLangSysCount", 2535 None, 2536 None, 2537 "Number of BaseLangSysRecords defined-may be zero (0)", 2538 ), 2539 ( 2540 "struct", 2541 "BaseLangSysRecord", 2542 "BaseLangSysCount", 2543 0, 2544 "Array of BaseLangSysRecords-in alphabetical order by BaseLangSysTag", 2545 ), 2546 ], 2547 ), 2548 ( 2549 "BaseLangSysRecord", 2550 [ 2551 ( 2552 "Tag", 2553 "BaseLangSysTag", 2554 None, 2555 None, 2556 "4-byte language system identification tag", 2557 ), 2558 ( 2559 "Offset", 2560 "MinMax", 2561 None, 2562 None, 2563 "Offset to MinMax table-from beginning of BaseScript table", 2564 ), 2565 ], 2566 ), 2567 ( 2568 "BaseValues", 2569 [ 2570 ( 2571 "uint16", 2572 "DefaultIndex", 2573 None, 2574 None, 2575 "Index number of default baseline for this script-equals index position of baseline tag in BaselineArray of the BaseTagList", 2576 ), 2577 ( 2578 "uint16", 2579 "BaseCoordCount", 2580 None, 2581 None, 2582 "Number of BaseCoord tables defined-should equal BaseTagCount in the BaseTagList", 2583 ), 2584 ( 2585 "Offset", 2586 "BaseCoord", 2587 "BaseCoordCount", 2588 0, 2589 "Array of offsets to BaseCoord-from beginning of BaseValues table-order matches BaselineTag array in the BaseTagList", 2590 ), 2591 ], 2592 ), 2593 ( 2594 "MinMax", 2595 [ 2596 ( 2597 "Offset", 2598 "MinCoord", 2599 None, 2600 None, 2601 "Offset to BaseCoord table-defines minimum extent value-from the beginning of MinMax table-may be NULL", 2602 ), 2603 ( 2604 "Offset", 2605 "MaxCoord", 2606 None, 2607 None, 2608 "Offset to BaseCoord table-defines maximum extent value-from the beginning of MinMax table-may be NULL", 2609 ), 2610 ( 2611 "uint16", 2612 "FeatMinMaxCount", 2613 None, 2614 None, 2615 "Number of FeatMinMaxRecords-may be zero (0)", 2616 ), 2617 ( 2618 "struct", 2619 "FeatMinMaxRecord", 2620 "FeatMinMaxCount", 2621 0, 2622 "Array of FeatMinMaxRecords-in alphabetical order, by FeatureTableTag", 2623 ), 2624 ], 2625 ), 2626 ( 2627 "FeatMinMaxRecord", 2628 [ 2629 ( 2630 "Tag", 2631 "FeatureTableTag", 2632 None, 2633 None, 2634 "4-byte feature identification tag-must match FeatureTag in FeatureList", 2635 ), 2636 ( 2637 "Offset", 2638 "MinCoord", 2639 None, 2640 None, 2641 "Offset to BaseCoord table-defines minimum extent value-from beginning of MinMax table-may be NULL", 2642 ), 2643 ( 2644 "Offset", 2645 "MaxCoord", 2646 None, 2647 None, 2648 "Offset to BaseCoord table-defines maximum extent value-from beginning of MinMax table-may be NULL", 2649 ), 2650 ], 2651 ), 2652 ( 2653 "BaseCoordFormat1", 2654 [ 2655 ("uint16", "BaseCoordFormat", None, None, "Format identifier-format = 1"), 2656 ("int16", "Coordinate", None, None, "X or Y value, in design units"), 2657 ], 2658 ), 2659 ( 2660 "BaseCoordFormat2", 2661 [ 2662 ("uint16", "BaseCoordFormat", None, None, "Format identifier-format = 2"), 2663 ("int16", "Coordinate", None, None, "X or Y value, in design units"), 2664 ("GlyphID", "ReferenceGlyph", None, None, "GlyphID of control glyph"), 2665 ( 2666 "uint16", 2667 "BaseCoordPoint", 2668 None, 2669 None, 2670 "Index of contour point on the ReferenceGlyph", 2671 ), 2672 ], 2673 ), 2674 ( 2675 "BaseCoordFormat3", 2676 [ 2677 ("uint16", "BaseCoordFormat", None, None, "Format identifier-format = 3"), 2678 ("int16", "Coordinate", None, None, "X or Y value, in design units"), 2679 ( 2680 "Offset", 2681 "DeviceTable", 2682 None, 2683 None, 2684 "Offset to Device table for X or Y value", 2685 ), 2686 ], 2687 ), 2688 # 2689 # jstf 2690 # 2691 ( 2692 "JSTF", 2693 [ 2694 ( 2695 "Version", 2696 "Version", 2697 None, 2698 None, 2699 "Version of the JSTF table-initially set to 0x00010000", 2700 ), 2701 ( 2702 "uint16", 2703 "JstfScriptCount", 2704 None, 2705 None, 2706 "Number of JstfScriptRecords in this table", 2707 ), 2708 ( 2709 "struct", 2710 "JstfScriptRecord", 2711 "JstfScriptCount", 2712 0, 2713 "Array of JstfScriptRecords-in alphabetical order, by JstfScriptTag", 2714 ), 2715 ], 2716 ), 2717 ( 2718 "JstfScriptRecord", 2719 [ 2720 ("Tag", "JstfScriptTag", None, None, "4-byte JstfScript identification"), 2721 ( 2722 "Offset", 2723 "JstfScript", 2724 None, 2725 None, 2726 "Offset to JstfScript table-from beginning of JSTF Header", 2727 ), 2728 ], 2729 ), 2730 ( 2731 "JstfScript", 2732 [ 2733 ( 2734 "Offset", 2735 "ExtenderGlyph", 2736 None, 2737 None, 2738 "Offset to ExtenderGlyph table-from beginning of JstfScript table-may be NULL", 2739 ), 2740 ( 2741 "Offset", 2742 "DefJstfLangSys", 2743 None, 2744 None, 2745 "Offset to Default JstfLangSys table-from beginning of JstfScript table-may be NULL", 2746 ), 2747 ( 2748 "uint16", 2749 "JstfLangSysCount", 2750 None, 2751 None, 2752 "Number of JstfLangSysRecords in this table- may be zero (0)", 2753 ), 2754 ( 2755 "struct", 2756 "JstfLangSysRecord", 2757 "JstfLangSysCount", 2758 0, 2759 "Array of JstfLangSysRecords-in alphabetical order, by JstfLangSysTag", 2760 ), 2761 ], 2762 ), 2763 ( 2764 "JstfLangSysRecord", 2765 [ 2766 ("Tag", "JstfLangSysTag", None, None, "4-byte JstfLangSys identifier"), 2767 ( 2768 "Offset", 2769 "JstfLangSys", 2770 None, 2771 None, 2772 "Offset to JstfLangSys table-from beginning of JstfScript table", 2773 ), 2774 ], 2775 ), 2776 ( 2777 "ExtenderGlyph", 2778 [ 2779 ( 2780 "uint16", 2781 "GlyphCount", 2782 None, 2783 None, 2784 "Number of Extender Glyphs in this script", 2785 ), 2786 ( 2787 "GlyphID", 2788 "ExtenderGlyph", 2789 "GlyphCount", 2790 0, 2791 "GlyphIDs-in increasing numerical order", 2792 ), 2793 ], 2794 ), 2795 ( 2796 "JstfLangSys", 2797 [ 2798 ( 2799 "uint16", 2800 "JstfPriorityCount", 2801 None, 2802 None, 2803 "Number of JstfPriority tables", 2804 ), 2805 ( 2806 "Offset", 2807 "JstfPriority", 2808 "JstfPriorityCount", 2809 0, 2810 "Array of offsets to JstfPriority tables-from beginning of JstfLangSys table-in priority order", 2811 ), 2812 ], 2813 ), 2814 ( 2815 "JstfPriority", 2816 [ 2817 ( 2818 "Offset", 2819 "ShrinkageEnableGSUB", 2820 None, 2821 None, 2822 "Offset to Shrinkage Enable JstfGSUBModList table-from beginning of JstfPriority table-may be NULL", 2823 ), 2824 ( 2825 "Offset", 2826 "ShrinkageDisableGSUB", 2827 None, 2828 None, 2829 "Offset to Shrinkage Disable JstfGSUBModList table-from beginning of JstfPriority table-may be NULL", 2830 ), 2831 ( 2832 "Offset", 2833 "ShrinkageEnableGPOS", 2834 None, 2835 None, 2836 "Offset to Shrinkage Enable JstfGPOSModList table-from beginning of JstfPriority table-may be NULL", 2837 ), 2838 ( 2839 "Offset", 2840 "ShrinkageDisableGPOS", 2841 None, 2842 None, 2843 "Offset to Shrinkage Disable JstfGPOSModList table-from beginning of JstfPriority table-may be NULL", 2844 ), 2845 ( 2846 "Offset", 2847 "ShrinkageJstfMax", 2848 None, 2849 None, 2850 "Offset to Shrinkage JstfMax table-from beginning of JstfPriority table -may be NULL", 2851 ), 2852 ( 2853 "Offset", 2854 "ExtensionEnableGSUB", 2855 None, 2856 None, 2857 "Offset to Extension Enable JstfGSUBModList table-may be NULL", 2858 ), 2859 ( 2860 "Offset", 2861 "ExtensionDisableGSUB", 2862 None, 2863 None, 2864 "Offset to Extension Disable JstfGSUBModList table-from beginning of JstfPriority table-may be NULL", 2865 ), 2866 ( 2867 "Offset", 2868 "ExtensionEnableGPOS", 2869 None, 2870 None, 2871 "Offset to Extension Enable JstfGSUBModList table-may be NULL", 2872 ), 2873 ( 2874 "Offset", 2875 "ExtensionDisableGPOS", 2876 None, 2877 None, 2878 "Offset to Extension Disable JstfGSUBModList table-from beginning of JstfPriority table-may be NULL", 2879 ), 2880 ( 2881 "Offset", 2882 "ExtensionJstfMax", 2883 None, 2884 None, 2885 "Offset to Extension JstfMax table-from beginning of JstfPriority table -may be NULL", 2886 ), 2887 ], 2888 ), 2889 ( 2890 "JstfGSUBModList", 2891 [ 2892 ( 2893 "uint16", 2894 "LookupCount", 2895 None, 2896 None, 2897 "Number of lookups for this modification", 2898 ), 2899 ( 2900 "uint16", 2901 "GSUBLookupIndex", 2902 "LookupCount", 2903 0, 2904 "Array of LookupIndex identifiers in GSUB-in increasing numerical order", 2905 ), 2906 ], 2907 ), 2908 ( 2909 "JstfGPOSModList", 2910 [ 2911 ( 2912 "uint16", 2913 "LookupCount", 2914 None, 2915 None, 2916 "Number of lookups for this modification", 2917 ), 2918 ( 2919 "uint16", 2920 "GPOSLookupIndex", 2921 "LookupCount", 2922 0, 2923 "Array of LookupIndex identifiers in GPOS-in increasing numerical order", 2924 ), 2925 ], 2926 ), 2927 ( 2928 "JstfMax", 2929 [ 2930 ( 2931 "uint16", 2932 "LookupCount", 2933 None, 2934 None, 2935 "Number of lookup Indices for this modification", 2936 ), 2937 ( 2938 "Offset", 2939 "Lookup", 2940 "LookupCount", 2941 0, 2942 "Array of offsets to GPOS-type lookup tables-from beginning of JstfMax table-in design order", 2943 ), 2944 ], 2945 ), 2946 # 2947 # STAT 2948 # 2949 ( 2950 "STAT", 2951 [ 2952 ( 2953 "Version", 2954 "Version", 2955 None, 2956 None, 2957 "Version of the table-initially set to 0x00010000, currently 0x00010002.", 2958 ), 2959 ( 2960 "uint16", 2961 "DesignAxisRecordSize", 2962 None, 2963 None, 2964 "Size in bytes of each design axis record", 2965 ), 2966 ("uint16", "DesignAxisCount", None, None, "Number of design axis records"), 2967 ( 2968 "LOffsetTo(AxisRecordArray)", 2969 "DesignAxisRecord", 2970 None, 2971 None, 2972 "Offset in bytes from the beginning of the STAT table to the start of the design axes array", 2973 ), 2974 ("uint16", "AxisValueCount", None, None, "Number of axis value tables"), 2975 ( 2976 "LOffsetTo(AxisValueArray)", 2977 "AxisValueArray", 2978 None, 2979 None, 2980 "Offset in bytes from the beginning of the STAT table to the start of the axes value offset array", 2981 ), 2982 ( 2983 "NameID", 2984 "ElidedFallbackNameID", 2985 None, 2986 "Version >= 0x00010001", 2987 "NameID to use when all style attributes are elided.", 2988 ), 2989 ], 2990 ), 2991 ( 2992 "AxisRecordArray", 2993 [ 2994 ("AxisRecord", "Axis", "DesignAxisCount", 0, "Axis records"), 2995 ], 2996 ), 2997 ( 2998 "AxisRecord", 2999 [ 3000 ( 3001 "Tag", 3002 "AxisTag", 3003 None, 3004 None, 3005 "A tag identifying the axis of design variation", 3006 ), 3007 ( 3008 "NameID", 3009 "AxisNameID", 3010 None, 3011 None, 3012 'The name ID for entries in the "name" table that provide a display string for this axis', 3013 ), 3014 ( 3015 "uint16", 3016 "AxisOrdering", 3017 None, 3018 None, 3019 "A value that applications can use to determine primary sorting of face names, or for ordering of descriptors when composing family or face names", 3020 ), 3021 ( 3022 "uint8", 3023 "MoreBytes", 3024 "DesignAxisRecordSize", 3025 -8, 3026 "Extra bytes. Set to empty array.", 3027 ), 3028 ], 3029 ), 3030 ( 3031 "AxisValueArray", 3032 [ 3033 ("Offset", "AxisValue", "AxisValueCount", 0, "Axis values"), 3034 ], 3035 ), 3036 ( 3037 "AxisValueFormat1", 3038 [ 3039 ("uint16", "Format", None, None, "Format, = 1"), 3040 ( 3041 "uint16", 3042 "AxisIndex", 3043 None, 3044 None, 3045 "Index into the axis record array identifying the axis of design variation to which the axis value record applies.", 3046 ), 3047 ("STATFlags", "Flags", None, None, "Flags."), 3048 ("NameID", "ValueNameID", None, None, ""), 3049 ("Fixed", "Value", None, None, ""), 3050 ], 3051 ), 3052 ( 3053 "AxisValueFormat2", 3054 [ 3055 ("uint16", "Format", None, None, "Format, = 2"), 3056 ( 3057 "uint16", 3058 "AxisIndex", 3059 None, 3060 None, 3061 "Index into the axis record array identifying the axis of design variation to which the axis value record applies.", 3062 ), 3063 ("STATFlags", "Flags", None, None, "Flags."), 3064 ("NameID", "ValueNameID", None, None, ""), 3065 ("Fixed", "NominalValue", None, None, ""), 3066 ("Fixed", "RangeMinValue", None, None, ""), 3067 ("Fixed", "RangeMaxValue", None, None, ""), 3068 ], 3069 ), 3070 ( 3071 "AxisValueFormat3", 3072 [ 3073 ("uint16", "Format", None, None, "Format, = 3"), 3074 ( 3075 "uint16", 3076 "AxisIndex", 3077 None, 3078 None, 3079 "Index into the axis record array identifying the axis of design variation to which the axis value record applies.", 3080 ), 3081 ("STATFlags", "Flags", None, None, "Flags."), 3082 ("NameID", "ValueNameID", None, None, ""), 3083 ("Fixed", "Value", None, None, ""), 3084 ("Fixed", "LinkedValue", None, None, ""), 3085 ], 3086 ), 3087 ( 3088 "AxisValueFormat4", 3089 [ 3090 ("uint16", "Format", None, None, "Format, = 4"), 3091 ( 3092 "uint16", 3093 "AxisCount", 3094 None, 3095 None, 3096 "The total number of axes contributing to this axis-values combination.", 3097 ), 3098 ("STATFlags", "Flags", None, None, "Flags."), 3099 ("NameID", "ValueNameID", None, None, ""), 3100 ( 3101 "struct", 3102 "AxisValueRecord", 3103 "AxisCount", 3104 0, 3105 "Array of AxisValue records that provide the combination of axis values, one for each contributing axis. ", 3106 ), 3107 ], 3108 ), 3109 ( 3110 "AxisValueRecord", 3111 [ 3112 ( 3113 "uint16", 3114 "AxisIndex", 3115 None, 3116 None, 3117 "Index into the axis record array identifying the axis of design variation to which the axis value record applies.", 3118 ), 3119 ("Fixed", "Value", None, None, "A numeric value for this attribute value."), 3120 ], 3121 ), 3122 # 3123 # Variation fonts 3124 # 3125 # GSUB/GPOS FeatureVariations 3126 ( 3127 "FeatureVariations", 3128 [ 3129 ( 3130 "Version", 3131 "Version", 3132 None, 3133 None, 3134 "Version of the table-initially set to 0x00010000", 3135 ), 3136 ( 3137 "uint32", 3138 "FeatureVariationCount", 3139 None, 3140 None, 3141 "Number of records in the FeatureVariationRecord array", 3142 ), 3143 ( 3144 "struct", 3145 "FeatureVariationRecord", 3146 "FeatureVariationCount", 3147 0, 3148 "Array of FeatureVariationRecord", 3149 ), 3150 ], 3151 ), 3152 ( 3153 "FeatureVariationRecord", 3154 [ 3155 ( 3156 "LOffset", 3157 "ConditionSet", 3158 None, 3159 None, 3160 "Offset to a ConditionSet table, from beginning of the FeatureVariations table.", 3161 ), 3162 ( 3163 "LOffset", 3164 "FeatureTableSubstitution", 3165 None, 3166 None, 3167 "Offset to a FeatureTableSubstitution table, from beginning of the FeatureVariations table", 3168 ), 3169 ], 3170 ), 3171 ( 3172 "ConditionSet", 3173 [ 3174 ( 3175 "uint16", 3176 "ConditionCount", 3177 None, 3178 None, 3179 "Number of condition tables in the ConditionTable array", 3180 ), 3181 ( 3182 "LOffset", 3183 "ConditionTable", 3184 "ConditionCount", 3185 0, 3186 "Array of condition tables.", 3187 ), 3188 ], 3189 ), 3190 ( 3191 "ConditionTableFormat1", 3192 [ 3193 ("uint16", "Format", None, None, "Format, = 1"), 3194 ( 3195 "uint16", 3196 "AxisIndex", 3197 None, 3198 None, 3199 "Index for the variation axis within the fvar table, base 0.", 3200 ), 3201 ( 3202 "F2Dot14", 3203 "FilterRangeMinValue", 3204 None, 3205 None, 3206 "Minimum normalized axis value of the font variation instances that satisfy this condition.", 3207 ), 3208 ( 3209 "F2Dot14", 3210 "FilterRangeMaxValue", 3211 None, 3212 None, 3213 "Maximum value that satisfies this condition.", 3214 ), 3215 ], 3216 ), 3217 ( 3218 "FeatureTableSubstitution", 3219 [ 3220 ( 3221 "Version", 3222 "Version", 3223 None, 3224 None, 3225 "Version of the table-initially set to 0x00010000", 3226 ), 3227 ( 3228 "uint16", 3229 "SubstitutionCount", 3230 None, 3231 None, 3232 "Number of records in the FeatureVariationRecords array", 3233 ), 3234 ( 3235 "FeatureTableSubstitutionRecord", 3236 "SubstitutionRecord", 3237 "SubstitutionCount", 3238 0, 3239 "Array of FeatureTableSubstitutionRecord", 3240 ), 3241 ], 3242 ), 3243 ( 3244 "FeatureTableSubstitutionRecord", 3245 [ 3246 ("uint16", "FeatureIndex", None, None, "The feature table index to match."), 3247 ( 3248 "LOffset", 3249 "Feature", 3250 None, 3251 None, 3252 "Offset to an alternate feature table, from start of the FeatureTableSubstitution table.", 3253 ), 3254 ], 3255 ), 3256 # VariationStore 3257 ( 3258 "VarRegionAxis", 3259 [ 3260 ("F2Dot14", "StartCoord", None, None, ""), 3261 ("F2Dot14", "PeakCoord", None, None, ""), 3262 ("F2Dot14", "EndCoord", None, None, ""), 3263 ], 3264 ), 3265 ( 3266 "VarRegion", 3267 [ 3268 ("struct", "VarRegionAxis", "RegionAxisCount", 0, ""), 3269 ], 3270 ), 3271 ( 3272 "VarRegionList", 3273 [ 3274 ("uint16", "RegionAxisCount", None, None, ""), 3275 ("uint16", "RegionCount", None, None, ""), 3276 ("VarRegion", "Region", "RegionCount", 0, ""), 3277 ], 3278 ), 3279 ( 3280 "VarData", 3281 [ 3282 ("uint16", "ItemCount", None, None, ""), 3283 ("uint16", "NumShorts", None, None, ""), 3284 ("uint16", "VarRegionCount", None, None, ""), 3285 ("uint16", "VarRegionIndex", "VarRegionCount", 0, ""), 3286 ("VarDataValue", "Item", "ItemCount", 0, ""), 3287 ], 3288 ), 3289 ( 3290 "VarStore", 3291 [ 3292 ("uint16", "Format", None, None, "Set to 1."), 3293 ("LOffset", "VarRegionList", None, None, ""), 3294 ("uint16", "VarDataCount", None, None, ""), 3295 ("LOffset", "VarData", "VarDataCount", 0, ""), 3296 ], 3297 ), 3298 # Variation helpers 3299 ( 3300 "VarIdxMap", 3301 [ 3302 ("uint16", "EntryFormat", None, None, ""), # Automatically computed 3303 ("uint16", "MappingCount", None, None, ""), # Automatically computed 3304 ("VarIdxMapValue", "mapping", "", 0, "Array of compressed data"), 3305 ], 3306 ), 3307 ( 3308 "DeltaSetIndexMapFormat0", 3309 [ 3310 ("uint8", "Format", None, None, "Format of the DeltaSetIndexMap = 0"), 3311 ("uint8", "EntryFormat", None, None, ""), # Automatically computed 3312 ("uint16", "MappingCount", None, None, ""), # Automatically computed 3313 ("VarIdxMapValue", "mapping", "", 0, "Array of compressed data"), 3314 ], 3315 ), 3316 ( 3317 "DeltaSetIndexMapFormat1", 3318 [ 3319 ("uint8", "Format", None, None, "Format of the DeltaSetIndexMap = 1"), 3320 ("uint8", "EntryFormat", None, None, ""), # Automatically computed 3321 ("uint32", "MappingCount", None, None, ""), # Automatically computed 3322 ("VarIdxMapValue", "mapping", "", 0, "Array of compressed data"), 3323 ], 3324 ), 3325 # Glyph advance variations 3326 ( 3327 "HVAR", 3328 [ 3329 ( 3330 "Version", 3331 "Version", 3332 None, 3333 None, 3334 "Version of the HVAR table-initially = 0x00010000", 3335 ), 3336 ("LOffset", "VarStore", None, None, ""), 3337 ("LOffsetTo(VarIdxMap)", "AdvWidthMap", None, None, ""), 3338 ("LOffsetTo(VarIdxMap)", "LsbMap", None, None, ""), 3339 ("LOffsetTo(VarIdxMap)", "RsbMap", None, None, ""), 3340 ], 3341 ), 3342 ( 3343 "VVAR", 3344 [ 3345 ( 3346 "Version", 3347 "Version", 3348 None, 3349 None, 3350 "Version of the VVAR table-initially = 0x00010000", 3351 ), 3352 ("LOffset", "VarStore", None, None, ""), 3353 ("LOffsetTo(VarIdxMap)", "AdvHeightMap", None, None, ""), 3354 ("LOffsetTo(VarIdxMap)", "TsbMap", None, None, ""), 3355 ("LOffsetTo(VarIdxMap)", "BsbMap", None, None, ""), 3356 ("LOffsetTo(VarIdxMap)", "VOrgMap", None, None, "Vertical origin mapping."), 3357 ], 3358 ), 3359 # Font-wide metrics variations 3360 ( 3361 "MetricsValueRecord", 3362 [ 3363 ("Tag", "ValueTag", None, None, "4-byte font-wide measure identifier"), 3364 ("uint32", "VarIdx", None, None, "Combined outer-inner variation index"), 3365 ( 3366 "uint8", 3367 "MoreBytes", 3368 "ValueRecordSize", 3369 -8, 3370 "Extra bytes. Set to empty array.", 3371 ), 3372 ], 3373 ), 3374 ( 3375 "MVAR", 3376 [ 3377 ( 3378 "Version", 3379 "Version", 3380 None, 3381 None, 3382 "Version of the MVAR table-initially = 0x00010000", 3383 ), 3384 ("uint16", "Reserved", None, None, "Set to 0"), 3385 ("uint16", "ValueRecordSize", None, None, ""), 3386 ("uint16", "ValueRecordCount", None, None, ""), 3387 ("Offset", "VarStore", None, None, ""), 3388 ("MetricsValueRecord", "ValueRecord", "ValueRecordCount", 0, ""), 3389 ], 3390 ), 3391 # 3392 # math 3393 # 3394 ( 3395 "MATH", 3396 [ 3397 ( 3398 "Version", 3399 "Version", 3400 None, 3401 None, 3402 "Version of the MATH table-initially set to 0x00010000.", 3403 ), 3404 ( 3405 "Offset", 3406 "MathConstants", 3407 None, 3408 None, 3409 "Offset to MathConstants table - from the beginning of MATH table.", 3410 ), 3411 ( 3412 "Offset", 3413 "MathGlyphInfo", 3414 None, 3415 None, 3416 "Offset to MathGlyphInfo table - from the beginning of MATH table.", 3417 ), 3418 ( 3419 "Offset", 3420 "MathVariants", 3421 None, 3422 None, 3423 "Offset to MathVariants table - from the beginning of MATH table.", 3424 ), 3425 ], 3426 ), 3427 ( 3428 "MathValueRecord", 3429 [ 3430 ("int16", "Value", None, None, "The X or Y value in design units."), 3431 ( 3432 "Offset", 3433 "DeviceTable", 3434 None, 3435 None, 3436 "Offset to the device table - from the beginning of parent table. May be NULL. Suggested format for device table is 1.", 3437 ), 3438 ], 3439 ), 3440 ( 3441 "MathConstants", 3442 [ 3443 ( 3444 "int16", 3445 "ScriptPercentScaleDown", 3446 None, 3447 None, 3448 "Percentage of scaling down for script level 1. Suggested value: 80%.", 3449 ), 3450 ( 3451 "int16", 3452 "ScriptScriptPercentScaleDown", 3453 None, 3454 None, 3455 "Percentage of scaling down for script level 2 (ScriptScript). Suggested value: 60%.", 3456 ), 3457 ( 3458 "uint16", 3459 "DelimitedSubFormulaMinHeight", 3460 None, 3461 None, 3462 "Minimum height required for a delimited expression to be treated as a subformula. Suggested value: normal line height x1.5.", 3463 ), 3464 ( 3465 "uint16", 3466 "DisplayOperatorMinHeight", 3467 None, 3468 None, 3469 "Minimum height of n-ary operators (such as integral and summation) for formulas in display mode.", 3470 ), 3471 ( 3472 "MathValueRecord", 3473 "MathLeading", 3474 None, 3475 None, 3476 "White space to be left between math formulas to ensure proper line spacing. For example, for applications that treat line gap as a part of line ascender, formulas with ink going above (os2.sTypoAscender + os2.sTypoLineGap - MathLeading) or with ink going below os2.sTypoDescender will result in increasing line height.", 3477 ), 3478 ("MathValueRecord", "AxisHeight", None, None, "Axis height of the font."), 3479 ( 3480 "MathValueRecord", 3481 "AccentBaseHeight", 3482 None, 3483 None, 3484 "Maximum (ink) height of accent base that does not require raising the accents. Suggested: x-height of the font (os2.sxHeight) plus any possible overshots.", 3485 ), 3486 ( 3487 "MathValueRecord", 3488 "FlattenedAccentBaseHeight", 3489 None, 3490 None, 3491 "Maximum (ink) height of accent base that does not require flattening the accents. Suggested: cap height of the font (os2.sCapHeight).", 3492 ), 3493 ( 3494 "MathValueRecord", 3495 "SubscriptShiftDown", 3496 None, 3497 None, 3498 "The standard shift down applied to subscript elements. Positive for moving in the downward direction. Suggested: os2.ySubscriptYOffset.", 3499 ), 3500 ( 3501 "MathValueRecord", 3502 "SubscriptTopMax", 3503 None, 3504 None, 3505 "Maximum allowed height of the (ink) top of subscripts that does not require moving subscripts further down. Suggested: 4/5 x-height.", 3506 ), 3507 ( 3508 "MathValueRecord", 3509 "SubscriptBaselineDropMin", 3510 None, 3511 None, 3512 "Minimum allowed drop of the baseline of subscripts relative to the (ink) bottom of the base. Checked for bases that are treated as a box or extended shape. Positive for subscript baseline dropped below the base bottom.", 3513 ), 3514 ( 3515 "MathValueRecord", 3516 "SuperscriptShiftUp", 3517 None, 3518 None, 3519 "Standard shift up applied to superscript elements. Suggested: os2.ySuperscriptYOffset.", 3520 ), 3521 ( 3522 "MathValueRecord", 3523 "SuperscriptShiftUpCramped", 3524 None, 3525 None, 3526 "Standard shift of superscripts relative to the base, in cramped style.", 3527 ), 3528 ( 3529 "MathValueRecord", 3530 "SuperscriptBottomMin", 3531 None, 3532 None, 3533 "Minimum allowed height of the (ink) bottom of superscripts that does not require moving subscripts further up. Suggested: 1/4 x-height.", 3534 ), 3535 ( 3536 "MathValueRecord", 3537 "SuperscriptBaselineDropMax", 3538 None, 3539 None, 3540 "Maximum allowed drop of the baseline of superscripts relative to the (ink) top of the base. Checked for bases that are treated as a box or extended shape. Positive for superscript baseline below the base top.", 3541 ), 3542 ( 3543 "MathValueRecord", 3544 "SubSuperscriptGapMin", 3545 None, 3546 None, 3547 "Minimum gap between the superscript and subscript ink. Suggested: 4x default rule thickness.", 3548 ), 3549 ( 3550 "MathValueRecord", 3551 "SuperscriptBottomMaxWithSubscript", 3552 None, 3553 None, 3554 "The maximum level to which the (ink) bottom of superscript can be pushed to increase the gap between superscript and subscript, before subscript starts being moved down. Suggested: 4/5 x-height.", 3555 ), 3556 ( 3557 "MathValueRecord", 3558 "SpaceAfterScript", 3559 None, 3560 None, 3561 "Extra white space to be added after each subscript and superscript. Suggested: 0.5pt for a 12 pt font.", 3562 ), 3563 ( 3564 "MathValueRecord", 3565 "UpperLimitGapMin", 3566 None, 3567 None, 3568 "Minimum gap between the (ink) bottom of the upper limit, and the (ink) top of the base operator.", 3569 ), 3570 ( 3571 "MathValueRecord", 3572 "UpperLimitBaselineRiseMin", 3573 None, 3574 None, 3575 "Minimum distance between baseline of upper limit and (ink) top of the base operator.", 3576 ), 3577 ( 3578 "MathValueRecord", 3579 "LowerLimitGapMin", 3580 None, 3581 None, 3582 "Minimum gap between (ink) top of the lower limit, and (ink) bottom of the base operator.", 3583 ), 3584 ( 3585 "MathValueRecord", 3586 "LowerLimitBaselineDropMin", 3587 None, 3588 None, 3589 "Minimum distance between baseline of the lower limit and (ink) bottom of the base operator.", 3590 ), 3591 ( 3592 "MathValueRecord", 3593 "StackTopShiftUp", 3594 None, 3595 None, 3596 "Standard shift up applied to the top element of a stack.", 3597 ), 3598 ( 3599 "MathValueRecord", 3600 "StackTopDisplayStyleShiftUp", 3601 None, 3602 None, 3603 "Standard shift up applied to the top element of a stack in display style.", 3604 ), 3605 ( 3606 "MathValueRecord", 3607 "StackBottomShiftDown", 3608 None, 3609 None, 3610 "Standard shift down applied to the bottom element of a stack. Positive for moving in the downward direction.", 3611 ), 3612 ( 3613 "MathValueRecord", 3614 "StackBottomDisplayStyleShiftDown", 3615 None, 3616 None, 3617 "Standard shift down applied to the bottom element of a stack in display style. Positive for moving in the downward direction.", 3618 ), 3619 ( 3620 "MathValueRecord", 3621 "StackGapMin", 3622 None, 3623 None, 3624 "Minimum gap between (ink) bottom of the top element of a stack, and the (ink) top of the bottom element. Suggested: 3x default rule thickness.", 3625 ), 3626 ( 3627 "MathValueRecord", 3628 "StackDisplayStyleGapMin", 3629 None, 3630 None, 3631 "Minimum gap between (ink) bottom of the top element of a stack, and the (ink) top of the bottom element in display style. Suggested: 7x default rule thickness.", 3632 ), 3633 ( 3634 "MathValueRecord", 3635 "StretchStackTopShiftUp", 3636 None, 3637 None, 3638 "Standard shift up applied to the top element of the stretch stack.", 3639 ), 3640 ( 3641 "MathValueRecord", 3642 "StretchStackBottomShiftDown", 3643 None, 3644 None, 3645 "Standard shift down applied to the bottom element of the stretch stack. Positive for moving in the downward direction.", 3646 ), 3647 ( 3648 "MathValueRecord", 3649 "StretchStackGapAboveMin", 3650 None, 3651 None, 3652 "Minimum gap between the ink of the stretched element, and the (ink) bottom of the element above. Suggested: UpperLimitGapMin", 3653 ), 3654 ( 3655 "MathValueRecord", 3656 "StretchStackGapBelowMin", 3657 None, 3658 None, 3659 "Minimum gap between the ink of the stretched element, and the (ink) top of the element below. Suggested: LowerLimitGapMin.", 3660 ), 3661 ( 3662 "MathValueRecord", 3663 "FractionNumeratorShiftUp", 3664 None, 3665 None, 3666 "Standard shift up applied to the numerator.", 3667 ), 3668 ( 3669 "MathValueRecord", 3670 "FractionNumeratorDisplayStyleShiftUp", 3671 None, 3672 None, 3673 "Standard shift up applied to the numerator in display style. Suggested: StackTopDisplayStyleShiftUp.", 3674 ), 3675 ( 3676 "MathValueRecord", 3677 "FractionDenominatorShiftDown", 3678 None, 3679 None, 3680 "Standard shift down applied to the denominator. Positive for moving in the downward direction.", 3681 ), 3682 ( 3683 "MathValueRecord", 3684 "FractionDenominatorDisplayStyleShiftDown", 3685 None, 3686 None, 3687 "Standard shift down applied to the denominator in display style. Positive for moving in the downward direction. Suggested: StackBottomDisplayStyleShiftDown.", 3688 ), 3689 ( 3690 "MathValueRecord", 3691 "FractionNumeratorGapMin", 3692 None, 3693 None, 3694 "Minimum tolerated gap between the (ink) bottom of the numerator and the ink of the fraction bar. Suggested: default rule thickness", 3695 ), 3696 ( 3697 "MathValueRecord", 3698 "FractionNumDisplayStyleGapMin", 3699 None, 3700 None, 3701 "Minimum tolerated gap between the (ink) bottom of the numerator and the ink of the fraction bar in display style. Suggested: 3x default rule thickness.", 3702 ), 3703 ( 3704 "MathValueRecord", 3705 "FractionRuleThickness", 3706 None, 3707 None, 3708 "Thickness of the fraction bar. Suggested: default rule thickness.", 3709 ), 3710 ( 3711 "MathValueRecord", 3712 "FractionDenominatorGapMin", 3713 None, 3714 None, 3715 "Minimum tolerated gap between the (ink) top of the denominator and the ink of the fraction bar. Suggested: default rule thickness", 3716 ), 3717 ( 3718 "MathValueRecord", 3719 "FractionDenomDisplayStyleGapMin", 3720 None, 3721 None, 3722 "Minimum tolerated gap between the (ink) top of the denominator and the ink of the fraction bar in display style. Suggested: 3x default rule thickness.", 3723 ), 3724 ( 3725 "MathValueRecord", 3726 "SkewedFractionHorizontalGap", 3727 None, 3728 None, 3729 "Horizontal distance between the top and bottom elements of a skewed fraction.", 3730 ), 3731 ( 3732 "MathValueRecord", 3733 "SkewedFractionVerticalGap", 3734 None, 3735 None, 3736 "Vertical distance between the ink of the top and bottom elements of a skewed fraction.", 3737 ), 3738 ( 3739 "MathValueRecord", 3740 "OverbarVerticalGap", 3741 None, 3742 None, 3743 "Distance between the overbar and the (ink) top of he base. Suggested: 3x default rule thickness.", 3744 ), 3745 ( 3746 "MathValueRecord", 3747 "OverbarRuleThickness", 3748 None, 3749 None, 3750 "Thickness of overbar. Suggested: default rule thickness.", 3751 ), 3752 ( 3753 "MathValueRecord", 3754 "OverbarExtraAscender", 3755 None, 3756 None, 3757 "Extra white space reserved above the overbar. Suggested: default rule thickness.", 3758 ), 3759 ( 3760 "MathValueRecord", 3761 "UnderbarVerticalGap", 3762 None, 3763 None, 3764 "Distance between underbar and (ink) bottom of the base. Suggested: 3x default rule thickness.", 3765 ), 3766 ( 3767 "MathValueRecord", 3768 "UnderbarRuleThickness", 3769 None, 3770 None, 3771 "Thickness of underbar. Suggested: default rule thickness.", 3772 ), 3773 ( 3774 "MathValueRecord", 3775 "UnderbarExtraDescender", 3776 None, 3777 None, 3778 "Extra white space reserved below the underbar. Always positive. Suggested: default rule thickness.", 3779 ), 3780 ( 3781 "MathValueRecord", 3782 "RadicalVerticalGap", 3783 None, 3784 None, 3785 "Space between the (ink) top of the expression and the bar over it. Suggested: 1 1/4 default rule thickness.", 3786 ), 3787 ( 3788 "MathValueRecord", 3789 "RadicalDisplayStyleVerticalGap", 3790 None, 3791 None, 3792 "Space between the (ink) top of the expression and the bar over it. Suggested: default rule thickness + 1/4 x-height.", 3793 ), 3794 ( 3795 "MathValueRecord", 3796 "RadicalRuleThickness", 3797 None, 3798 None, 3799 "Thickness of the radical rule. This is the thickness of the rule in designed or constructed radical signs. Suggested: default rule thickness.", 3800 ), 3801 ( 3802 "MathValueRecord", 3803 "RadicalExtraAscender", 3804 None, 3805 None, 3806 "Extra white space reserved above the radical. Suggested: RadicalRuleThickness.", 3807 ), 3808 ( 3809 "MathValueRecord", 3810 "RadicalKernBeforeDegree", 3811 None, 3812 None, 3813 "Extra horizontal kern before the degree of a radical, if such is present. Suggested: 5/18 of em.", 3814 ), 3815 ( 3816 "MathValueRecord", 3817 "RadicalKernAfterDegree", 3818 None, 3819 None, 3820 "Negative kern after the degree of a radical, if such is present. Suggested: 10/18 of em.", 3821 ), 3822 ( 3823 "uint16", 3824 "RadicalDegreeBottomRaisePercent", 3825 None, 3826 None, 3827 "Height of the bottom of the radical degree, if such is present, in proportion to the ascender of the radical sign. Suggested: 60%.", 3828 ), 3829 ], 3830 ), 3831 ( 3832 "MathGlyphInfo", 3833 [ 3834 ( 3835 "Offset", 3836 "MathItalicsCorrectionInfo", 3837 None, 3838 None, 3839 "Offset to MathItalicsCorrectionInfo table - from the beginning of MathGlyphInfo table.", 3840 ), 3841 ( 3842 "Offset", 3843 "MathTopAccentAttachment", 3844 None, 3845 None, 3846 "Offset to MathTopAccentAttachment table - from the beginning of MathGlyphInfo table.", 3847 ), 3848 ( 3849 "Offset", 3850 "ExtendedShapeCoverage", 3851 None, 3852 None, 3853 "Offset to coverage table for Extended Shape glyphs - from the beginning of MathGlyphInfo table. When the left or right glyph of a box is an extended shape variant, the (ink) box (and not the default position defined by values in MathConstants table) should be used for vertical positioning purposes. May be NULL.", 3854 ), 3855 ( 3856 "Offset", 3857 "MathKernInfo", 3858 None, 3859 None, 3860 "Offset to MathKernInfo table - from the beginning of MathGlyphInfo table.", 3861 ), 3862 ], 3863 ), 3864 ( 3865 "MathItalicsCorrectionInfo", 3866 [ 3867 ( 3868 "Offset", 3869 "Coverage", 3870 None, 3871 None, 3872 "Offset to Coverage table - from the beginning of MathItalicsCorrectionInfo table.", 3873 ), 3874 ( 3875 "uint16", 3876 "ItalicsCorrectionCount", 3877 None, 3878 None, 3879 "Number of italics correction values. Should coincide with the number of covered glyphs.", 3880 ), 3881 ( 3882 "MathValueRecord", 3883 "ItalicsCorrection", 3884 "ItalicsCorrectionCount", 3885 0, 3886 "Array of MathValueRecords defining italics correction values for each covered glyph.", 3887 ), 3888 ], 3889 ), 3890 ( 3891 "MathTopAccentAttachment", 3892 [ 3893 ( 3894 "Offset", 3895 "TopAccentCoverage", 3896 None, 3897 None, 3898 "Offset to Coverage table - from the beginning of MathTopAccentAttachment table.", 3899 ), 3900 ( 3901 "uint16", 3902 "TopAccentAttachmentCount", 3903 None, 3904 None, 3905 "Number of top accent attachment point values. Should coincide with the number of covered glyphs", 3906 ), 3907 ( 3908 "MathValueRecord", 3909 "TopAccentAttachment", 3910 "TopAccentAttachmentCount", 3911 0, 3912 "Array of MathValueRecords defining top accent attachment points for each covered glyph", 3913 ), 3914 ], 3915 ), 3916 ( 3917 "MathKernInfo", 3918 [ 3919 ( 3920 "Offset", 3921 "MathKernCoverage", 3922 None, 3923 None, 3924 "Offset to Coverage table - from the beginning of the MathKernInfo table.", 3925 ), 3926 ("uint16", "MathKernCount", None, None, "Number of MathKernInfoRecords."), 3927 ( 3928 "MathKernInfoRecord", 3929 "MathKernInfoRecords", 3930 "MathKernCount", 3931 0, 3932 "Array of MathKernInfoRecords, per-glyph information for mathematical positioning of subscripts and superscripts.", 3933 ), 3934 ], 3935 ), 3936 ( 3937 "MathKernInfoRecord", 3938 [ 3939 ( 3940 "Offset", 3941 "TopRightMathKern", 3942 None, 3943 None, 3944 "Offset to MathKern table for top right corner - from the beginning of MathKernInfo table. May be NULL.", 3945 ), 3946 ( 3947 "Offset", 3948 "TopLeftMathKern", 3949 None, 3950 None, 3951 "Offset to MathKern table for the top left corner - from the beginning of MathKernInfo table. May be NULL.", 3952 ), 3953 ( 3954 "Offset", 3955 "BottomRightMathKern", 3956 None, 3957 None, 3958 "Offset to MathKern table for bottom right corner - from the beginning of MathKernInfo table. May be NULL.", 3959 ), 3960 ( 3961 "Offset", 3962 "BottomLeftMathKern", 3963 None, 3964 None, 3965 "Offset to MathKern table for bottom left corner - from the beginning of MathKernInfo table. May be NULL.", 3966 ), 3967 ], 3968 ), 3969 ( 3970 "MathKern", 3971 [ 3972 ( 3973 "uint16", 3974 "HeightCount", 3975 None, 3976 None, 3977 "Number of heights on which the kern value changes.", 3978 ), 3979 ( 3980 "MathValueRecord", 3981 "CorrectionHeight", 3982 "HeightCount", 3983 0, 3984 "Array of correction heights at which the kern value changes. Sorted by the height value in design units.", 3985 ), 3986 ( 3987 "MathValueRecord", 3988 "KernValue", 3989 "HeightCount", 3990 1, 3991 "Array of kern values corresponding to heights. First value is the kern value for all heights less or equal than the first height in this table.Last value is the value to be applied for all heights greater than the last height in this table. Negative values are interpreted as move glyphs closer to each other.", 3992 ), 3993 ], 3994 ), 3995 ( 3996 "MathVariants", 3997 [ 3998 ( 3999 "uint16", 4000 "MinConnectorOverlap", 4001 None, 4002 None, 4003 "Minimum overlap of connecting glyphs during glyph construction, in design units.", 4004 ), 4005 ( 4006 "Offset", 4007 "VertGlyphCoverage", 4008 None, 4009 None, 4010 "Offset to Coverage table - from the beginning of MathVariants table.", 4011 ), 4012 ( 4013 "Offset", 4014 "HorizGlyphCoverage", 4015 None, 4016 None, 4017 "Offset to Coverage table - from the beginning of MathVariants table.", 4018 ), 4019 ( 4020 "uint16", 4021 "VertGlyphCount", 4022 None, 4023 None, 4024 "Number of glyphs for which information is provided for vertically growing variants.", 4025 ), 4026 ( 4027 "uint16", 4028 "HorizGlyphCount", 4029 None, 4030 None, 4031 "Number of glyphs for which information is provided for horizontally growing variants.", 4032 ), 4033 ( 4034 "Offset", 4035 "VertGlyphConstruction", 4036 "VertGlyphCount", 4037 0, 4038 "Array of offsets to MathGlyphConstruction tables - from the beginning of the MathVariants table, for shapes growing in vertical direction.", 4039 ), 4040 ( 4041 "Offset", 4042 "HorizGlyphConstruction", 4043 "HorizGlyphCount", 4044 0, 4045 "Array of offsets to MathGlyphConstruction tables - from the beginning of the MathVariants table, for shapes growing in horizontal direction.", 4046 ), 4047 ], 4048 ), 4049 ( 4050 "MathGlyphConstruction", 4051 [ 4052 ( 4053 "Offset", 4054 "GlyphAssembly", 4055 None, 4056 None, 4057 "Offset to GlyphAssembly table for this shape - from the beginning of MathGlyphConstruction table. May be NULL", 4058 ), 4059 ( 4060 "uint16", 4061 "VariantCount", 4062 None, 4063 None, 4064 "Count of glyph growing variants for this glyph.", 4065 ), 4066 ( 4067 "MathGlyphVariantRecord", 4068 "MathGlyphVariantRecord", 4069 "VariantCount", 4070 0, 4071 "MathGlyphVariantRecords for alternative variants of the glyphs.", 4072 ), 4073 ], 4074 ), 4075 ( 4076 "MathGlyphVariantRecord", 4077 [ 4078 ("GlyphID", "VariantGlyph", None, None, "Glyph ID for the variant."), 4079 ( 4080 "uint16", 4081 "AdvanceMeasurement", 4082 None, 4083 None, 4084 "Advance width/height, in design units, of the variant, in the direction of requested glyph extension.", 4085 ), 4086 ], 4087 ), 4088 ( 4089 "GlyphAssembly", 4090 [ 4091 ( 4092 "MathValueRecord", 4093 "ItalicsCorrection", 4094 None, 4095 None, 4096 "Italics correction of this GlyphAssembly. Should not depend on the assembly size.", 4097 ), 4098 ("uint16", "PartCount", None, None, "Number of parts in this assembly."), 4099 ( 4100 "GlyphPartRecord", 4101 "PartRecords", 4102 "PartCount", 4103 0, 4104 "Array of part records, from left to right and bottom to top.", 4105 ), 4106 ], 4107 ), 4108 ( 4109 "GlyphPartRecord", 4110 [ 4111 ("GlyphID", "glyph", None, None, "Glyph ID for the part."), 4112 ( 4113 "uint16", 4114 "StartConnectorLength", 4115 None, 4116 None, 4117 "Advance width/ height of the straight bar connector material, in design units, is at the beginning of the glyph, in the direction of the extension.", 4118 ), 4119 ( 4120 "uint16", 4121 "EndConnectorLength", 4122 None, 4123 None, 4124 "Advance width/ height of the straight bar connector material, in design units, is at the end of the glyph, in the direction of the extension.", 4125 ), 4126 ( 4127 "uint16", 4128 "FullAdvance", 4129 None, 4130 None, 4131 "Full advance width/height for this part, in the direction of the extension. In design units.", 4132 ), 4133 ( 4134 "uint16", 4135 "PartFlags", 4136 None, 4137 None, 4138 "Part qualifiers. PartFlags enumeration currently uses only one bit: 0x0001 fExtender: If set, the part can be skipped or repeated. 0xFFFE Reserved", 4139 ), 4140 ], 4141 ), 4142 ## 4143 ## Apple Advanced Typography (AAT) tables 4144 ## 4145 ( 4146 "AATLookupSegment", 4147 [ 4148 ("uint16", "lastGlyph", None, None, "Last glyph index in this segment."), 4149 ("uint16", "firstGlyph", None, None, "First glyph index in this segment."), 4150 ( 4151 "uint16", 4152 "value", 4153 None, 4154 None, 4155 "A 16-bit offset from the start of the table to the data.", 4156 ), 4157 ], 4158 ), 4159 # 4160 # ankr 4161 # 4162 ( 4163 "ankr", 4164 [ 4165 ("struct", "AnchorPoints", None, None, "Anchor points table."), 4166 ], 4167 ), 4168 ( 4169 "AnchorPointsFormat0", 4170 [ 4171 ("uint16", "Format", None, None, "Format of the anchor points table, = 0."), 4172 ("uint16", "Flags", None, None, "Flags. Currenty unused, set to zero."), 4173 ( 4174 "AATLookupWithDataOffset(AnchorGlyphData)", 4175 "Anchors", 4176 None, 4177 None, 4178 "Table of with anchor overrides for each glyph.", 4179 ), 4180 ], 4181 ), 4182 ( 4183 "AnchorGlyphData", 4184 [ 4185 ( 4186 "uint32", 4187 "AnchorPointCount", 4188 None, 4189 None, 4190 "Number of anchor points for this glyph.", 4191 ), 4192 ( 4193 "struct", 4194 "AnchorPoint", 4195 "AnchorPointCount", 4196 0, 4197 "Individual anchor points.", 4198 ), 4199 ], 4200 ), 4201 ( 4202 "AnchorPoint", 4203 [ 4204 ("int16", "XCoordinate", None, None, "X coordinate of this anchor point."), 4205 ("int16", "YCoordinate", None, None, "Y coordinate of this anchor point."), 4206 ], 4207 ), 4208 # 4209 # bsln 4210 # 4211 ( 4212 "bsln", 4213 [ 4214 ( 4215 "Version", 4216 "Version", 4217 None, 4218 None, 4219 "Version number of the AAT baseline table (0x00010000 for the initial version).", 4220 ), 4221 ("struct", "Baseline", None, None, "Baseline table."), 4222 ], 4223 ), 4224 ( 4225 "BaselineFormat0", 4226 [ 4227 ("uint16", "Format", None, None, "Format of the baseline table, = 0."), 4228 ( 4229 "uint16", 4230 "DefaultBaseline", 4231 None, 4232 None, 4233 "Default baseline value for all glyphs. This value can be from 0 through 31.", 4234 ), 4235 ( 4236 "uint16", 4237 "Delta", 4238 32, 4239 0, 4240 "These are the FUnit distance deltas from the font’s natural baseline to the other baselines used in the font. A total of 32 deltas must be assigned.", 4241 ), 4242 ], 4243 ), 4244 ( 4245 "BaselineFormat1", 4246 [ 4247 ("uint16", "Format", None, None, "Format of the baseline table, = 1."), 4248 ( 4249 "uint16", 4250 "DefaultBaseline", 4251 None, 4252 None, 4253 "Default baseline value for all glyphs. This value can be from 0 through 31.", 4254 ), 4255 ( 4256 "uint16", 4257 "Delta", 4258 32, 4259 0, 4260 "These are the FUnit distance deltas from the font’s natural baseline to the other baselines used in the font. A total of 32 deltas must be assigned.", 4261 ), 4262 ( 4263 "AATLookup(uint16)", 4264 "BaselineValues", 4265 None, 4266 None, 4267 "Lookup table that maps glyphs to their baseline values.", 4268 ), 4269 ], 4270 ), 4271 ( 4272 "BaselineFormat2", 4273 [ 4274 ("uint16", "Format", None, None, "Format of the baseline table, = 1."), 4275 ( 4276 "uint16", 4277 "DefaultBaseline", 4278 None, 4279 None, 4280 "Default baseline value for all glyphs. This value can be from 0 through 31.", 4281 ), 4282 ( 4283 "GlyphID", 4284 "StandardGlyph", 4285 None, 4286 None, 4287 "Glyph index of the glyph in this font to be used to set the baseline values. This glyph must contain a set of control points (whose numbers are contained in the following field) that determines baseline distances.", 4288 ), 4289 ( 4290 "uint16", 4291 "ControlPoint", 4292 32, 4293 0, 4294 "Array of 32 control point numbers, associated with the standard glyph. A value of 0xFFFF means there is no corresponding control point in the standard glyph.", 4295 ), 4296 ], 4297 ), 4298 ( 4299 "BaselineFormat3", 4300 [ 4301 ("uint16", "Format", None, None, "Format of the baseline table, = 1."), 4302 ( 4303 "uint16", 4304 "DefaultBaseline", 4305 None, 4306 None, 4307 "Default baseline value for all glyphs. This value can be from 0 through 31.", 4308 ), 4309 ( 4310 "GlyphID", 4311 "StandardGlyph", 4312 None, 4313 None, 4314 "Glyph index of the glyph in this font to be used to set the baseline values. This glyph must contain a set of control points (whose numbers are contained in the following field) that determines baseline distances.", 4315 ), 4316 ( 4317 "uint16", 4318 "ControlPoint", 4319 32, 4320 0, 4321 "Array of 32 control point numbers, associated with the standard glyph. A value of 0xFFFF means there is no corresponding control point in the standard glyph.", 4322 ), 4323 ( 4324 "AATLookup(uint16)", 4325 "BaselineValues", 4326 None, 4327 None, 4328 "Lookup table that maps glyphs to their baseline values.", 4329 ), 4330 ], 4331 ), 4332 # 4333 # cidg 4334 # 4335 ( 4336 "cidg", 4337 [ 4338 ("struct", "CIDGlyphMapping", None, None, "CID-to-glyph mapping table."), 4339 ], 4340 ), 4341 ( 4342 "CIDGlyphMappingFormat0", 4343 [ 4344 ( 4345 "uint16", 4346 "Format", 4347 None, 4348 None, 4349 "Format of the CID-to-glyph mapping table, = 0.", 4350 ), 4351 ("uint16", "DataFormat", None, None, "Currenty unused, set to zero."), 4352 ("uint32", "StructLength", None, None, "Size of the table in bytes."), 4353 ("uint16", "Registry", None, None, "The registry ID."), 4354 ( 4355 "char64", 4356 "RegistryName", 4357 None, 4358 None, 4359 "The registry name in ASCII; unused bytes should be set to 0.", 4360 ), 4361 ("uint16", "Order", None, None, "The order ID."), 4362 ( 4363 "char64", 4364 "OrderName", 4365 None, 4366 None, 4367 "The order name in ASCII; unused bytes should be set to 0.", 4368 ), 4369 ("uint16", "SupplementVersion", None, None, "The supplement version."), 4370 ( 4371 "CIDGlyphMap", 4372 "Mapping", 4373 None, 4374 None, 4375 "A mapping from CIDs to the glyphs in the font, starting with CID 0. If a CID from the identified collection has no glyph in the font, 0xFFFF is used", 4376 ), 4377 ], 4378 ), 4379 # 4380 # feat 4381 # 4382 ( 4383 "feat", 4384 [ 4385 ( 4386 "Version", 4387 "Version", 4388 None, 4389 None, 4390 "Version of the feat table-initially set to 0x00010000.", 4391 ), 4392 ("FeatureNames", "FeatureNames", None, None, "The feature names."), 4393 ], 4394 ), 4395 ( 4396 "FeatureNames", 4397 [ 4398 ( 4399 "uint16", 4400 "FeatureNameCount", 4401 None, 4402 None, 4403 "Number of entries in the feature name array.", 4404 ), 4405 ("uint16", "Reserved1", None, None, "Reserved (set to zero)."), 4406 ("uint32", "Reserved2", None, None, "Reserved (set to zero)."), 4407 ( 4408 "FeatureName", 4409 "FeatureName", 4410 "FeatureNameCount", 4411 0, 4412 "The feature name array.", 4413 ), 4414 ], 4415 ), 4416 ( 4417 "FeatureName", 4418 [ 4419 ("uint16", "FeatureType", None, None, "Feature type."), 4420 ( 4421 "uint16", 4422 "SettingsCount", 4423 None, 4424 None, 4425 "The number of records in the setting name array.", 4426 ), 4427 ( 4428 "LOffset", 4429 "Settings", 4430 None, 4431 None, 4432 "Offset to setting table for this feature.", 4433 ), 4434 ( 4435 "uint16", 4436 "FeatureFlags", 4437 None, 4438 None, 4439 "Single-bit flags associated with the feature type.", 4440 ), 4441 ( 4442 "NameID", 4443 "FeatureNameID", 4444 None, 4445 None, 4446 "The name table index for the feature name.", 4447 ), 4448 ], 4449 ), 4450 ( 4451 "Settings", 4452 [ 4453 ("Setting", "Setting", "SettingsCount", 0, "The setting array."), 4454 ], 4455 ), 4456 ( 4457 "Setting", 4458 [ 4459 ("uint16", "SettingValue", None, None, "The setting."), 4460 ( 4461 "NameID", 4462 "SettingNameID", 4463 None, 4464 None, 4465 "The name table index for the setting name.", 4466 ), 4467 ], 4468 ), 4469 # 4470 # gcid 4471 # 4472 ( 4473 "gcid", 4474 [ 4475 ("struct", "GlyphCIDMapping", None, None, "Glyph to CID mapping table."), 4476 ], 4477 ), 4478 ( 4479 "GlyphCIDMappingFormat0", 4480 [ 4481 ( 4482 "uint16", 4483 "Format", 4484 None, 4485 None, 4486 "Format of the glyph-to-CID mapping table, = 0.", 4487 ), 4488 ("uint16", "DataFormat", None, None, "Currenty unused, set to zero."), 4489 ("uint32", "StructLength", None, None, "Size of the table in bytes."), 4490 ("uint16", "Registry", None, None, "The registry ID."), 4491 ( 4492 "char64", 4493 "RegistryName", 4494 None, 4495 None, 4496 "The registry name in ASCII; unused bytes should be set to 0.", 4497 ), 4498 ("uint16", "Order", None, None, "The order ID."), 4499 ( 4500 "char64", 4501 "OrderName", 4502 None, 4503 None, 4504 "The order name in ASCII; unused bytes should be set to 0.", 4505 ), 4506 ("uint16", "SupplementVersion", None, None, "The supplement version."), 4507 ( 4508 "GlyphCIDMap", 4509 "Mapping", 4510 None, 4511 None, 4512 "The CIDs for the glyphs in the font, starting with glyph 0. If a glyph does not correspond to a CID in the identified collection, 0xFFFF is used", 4513 ), 4514 ], 4515 ), 4516 # 4517 # lcar 4518 # 4519 ( 4520 "lcar", 4521 [ 4522 ( 4523 "Version", 4524 "Version", 4525 None, 4526 None, 4527 "Version number of the ligature caret table (0x00010000 for the initial version).", 4528 ), 4529 ("struct", "LigatureCarets", None, None, "Ligature carets table."), 4530 ], 4531 ), 4532 ( 4533 "LigatureCaretsFormat0", 4534 [ 4535 ( 4536 "uint16", 4537 "Format", 4538 None, 4539 None, 4540 "Format of the ligature caret table. Format 0 indicates division points are distances in font units, Format 1 indicates division points are indexes of control points.", 4541 ), 4542 ( 4543 "AATLookup(LigCaretDistances)", 4544 "Carets", 4545 None, 4546 None, 4547 "Lookup table associating ligature glyphs with their caret positions, in font unit distances.", 4548 ), 4549 ], 4550 ), 4551 ( 4552 "LigatureCaretsFormat1", 4553 [ 4554 ( 4555 "uint16", 4556 "Format", 4557 None, 4558 None, 4559 "Format of the ligature caret table. Format 0 indicates division points are distances in font units, Format 1 indicates division points are indexes of control points.", 4560 ), 4561 ( 4562 "AATLookup(LigCaretPoints)", 4563 "Carets", 4564 None, 4565 None, 4566 "Lookup table associating ligature glyphs with their caret positions, as control points.", 4567 ), 4568 ], 4569 ), 4570 ( 4571 "LigCaretDistances", 4572 [ 4573 ("uint16", "DivsionPointCount", None, None, "Number of division points."), 4574 ( 4575 "int16", 4576 "DivisionPoint", 4577 "DivsionPointCount", 4578 0, 4579 "Distance in font units through which a subdivision is made orthogonally to the baseline.", 4580 ), 4581 ], 4582 ), 4583 ( 4584 "LigCaretPoints", 4585 [ 4586 ("uint16", "DivsionPointCount", None, None, "Number of division points."), 4587 ( 4588 "int16", 4589 "DivisionPoint", 4590 "DivsionPointCount", 4591 0, 4592 "The number of the control point through which a subdivision is made orthogonally to the baseline.", 4593 ), 4594 ], 4595 ), 4596 # 4597 # mort 4598 # 4599 ( 4600 "mort", 4601 [ 4602 ("Version", "Version", None, None, "Version of the mort table."), 4603 ( 4604 "uint32", 4605 "MorphChainCount", 4606 None, 4607 None, 4608 "Number of metamorphosis chains.", 4609 ), 4610 ( 4611 "MortChain", 4612 "MorphChain", 4613 "MorphChainCount", 4614 0, 4615 "Array of metamorphosis chains.", 4616 ), 4617 ], 4618 ), 4619 ( 4620 "MortChain", 4621 [ 4622 ( 4623 "Flags32", 4624 "DefaultFlags", 4625 None, 4626 None, 4627 "The default specification for subtables.", 4628 ), 4629 ( 4630 "uint32", 4631 "StructLength", 4632 None, 4633 None, 4634 "Total byte count, including this header; must be a multiple of 4.", 4635 ), 4636 ( 4637 "uint16", 4638 "MorphFeatureCount", 4639 None, 4640 None, 4641 "Number of metamorphosis feature entries.", 4642 ), 4643 ( 4644 "uint16", 4645 "MorphSubtableCount", 4646 None, 4647 None, 4648 "The number of subtables in the chain.", 4649 ), 4650 ( 4651 "struct", 4652 "MorphFeature", 4653 "MorphFeatureCount", 4654 0, 4655 "Array of metamorphosis features.", 4656 ), 4657 ( 4658 "MortSubtable", 4659 "MorphSubtable", 4660 "MorphSubtableCount", 4661 0, 4662 "Array of metamorphosis subtables.", 4663 ), 4664 ], 4665 ), 4666 ( 4667 "MortSubtable", 4668 [ 4669 ( 4670 "uint16", 4671 "StructLength", 4672 None, 4673 None, 4674 "Total subtable length, including this header.", 4675 ), 4676 ( 4677 "uint8", 4678 "CoverageFlags", 4679 None, 4680 None, 4681 "Most significant byte of coverage flags.", 4682 ), 4683 ("uint8", "MorphType", None, None, "Subtable type."), 4684 ( 4685 "Flags32", 4686 "SubFeatureFlags", 4687 None, 4688 None, 4689 "The 32-bit mask identifying which subtable this is (the subtable being executed if the AND of this value and the processed defaultFlags is nonzero).", 4690 ), 4691 ("SubStruct", "SubStruct", None, None, "SubTable."), 4692 ], 4693 ), 4694 # 4695 # morx 4696 # 4697 ( 4698 "morx", 4699 [ 4700 ("uint16", "Version", None, None, "Version of the morx table."), 4701 ("uint16", "Reserved", None, None, "Reserved (set to zero)."), 4702 ( 4703 "uint32", 4704 "MorphChainCount", 4705 None, 4706 None, 4707 "Number of extended metamorphosis chains.", 4708 ), 4709 ( 4710 "MorxChain", 4711 "MorphChain", 4712 "MorphChainCount", 4713 0, 4714 "Array of extended metamorphosis chains.", 4715 ), 4716 ], 4717 ), 4718 ( 4719 "MorxChain", 4720 [ 4721 ( 4722 "Flags32", 4723 "DefaultFlags", 4724 None, 4725 None, 4726 "The default specification for subtables.", 4727 ), 4728 ( 4729 "uint32", 4730 "StructLength", 4731 None, 4732 None, 4733 "Total byte count, including this header; must be a multiple of 4.", 4734 ), 4735 ( 4736 "uint32", 4737 "MorphFeatureCount", 4738 None, 4739 None, 4740 "Number of feature subtable entries.", 4741 ), 4742 ( 4743 "uint32", 4744 "MorphSubtableCount", 4745 None, 4746 None, 4747 "The number of subtables in the chain.", 4748 ), 4749 ( 4750 "MorphFeature", 4751 "MorphFeature", 4752 "MorphFeatureCount", 4753 0, 4754 "Array of metamorphosis features.", 4755 ), 4756 ( 4757 "MorxSubtable", 4758 "MorphSubtable", 4759 "MorphSubtableCount", 4760 0, 4761 "Array of extended metamorphosis subtables.", 4762 ), 4763 ], 4764 ), 4765 ( 4766 "MorphFeature", 4767 [ 4768 ("uint16", "FeatureType", None, None, "The type of feature."), 4769 ( 4770 "uint16", 4771 "FeatureSetting", 4772 None, 4773 None, 4774 "The feature's setting (aka selector).", 4775 ), 4776 ( 4777 "Flags32", 4778 "EnableFlags", 4779 None, 4780 None, 4781 "Flags for the settings that this feature and setting enables.", 4782 ), 4783 ( 4784 "Flags32", 4785 "DisableFlags", 4786 None, 4787 None, 4788 "Complement of flags for the settings that this feature and setting disable.", 4789 ), 4790 ], 4791 ), 4792 # Apple TrueType Reference Manual, chapter “The ‘morx’ table”, 4793 # section “Metamorphosis Subtables”. 4794 # https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6morx.html 4795 ( 4796 "MorxSubtable", 4797 [ 4798 ( 4799 "uint32", 4800 "StructLength", 4801 None, 4802 None, 4803 "Total subtable length, including this header.", 4804 ), 4805 ( 4806 "uint8", 4807 "CoverageFlags", 4808 None, 4809 None, 4810 "Most significant byte of coverage flags.", 4811 ), 4812 ("uint16", "Reserved", None, None, "Unused."), 4813 ("uint8", "MorphType", None, None, "Subtable type."), 4814 ( 4815 "Flags32", 4816 "SubFeatureFlags", 4817 None, 4818 None, 4819 "The 32-bit mask identifying which subtable this is (the subtable being executed if the AND of this value and the processed defaultFlags is nonzero).", 4820 ), 4821 ("SubStruct", "SubStruct", None, None, "SubTable."), 4822 ], 4823 ), 4824 ( 4825 "StateHeader", 4826 [ 4827 ( 4828 "uint32", 4829 "ClassCount", 4830 None, 4831 None, 4832 "Number of classes, which is the number of 16-bit entry indices in a single line in the state array.", 4833 ), 4834 ( 4835 "uint32", 4836 "MorphClass", 4837 None, 4838 None, 4839 "Offset from the start of this state table header to the start of the class table.", 4840 ), 4841 ( 4842 "uint32", 4843 "StateArrayOffset", 4844 None, 4845 None, 4846 "Offset from the start of this state table header to the start of the state array.", 4847 ), 4848 ( 4849 "uint32", 4850 "EntryTableOffset", 4851 None, 4852 None, 4853 "Offset from the start of this state table header to the start of the entry table.", 4854 ), 4855 ], 4856 ), 4857 ( 4858 "RearrangementMorph", 4859 [ 4860 ( 4861 "STXHeader(RearrangementMorphAction)", 4862 "StateTable", 4863 None, 4864 None, 4865 "Finite-state transducer table for indic rearrangement.", 4866 ), 4867 ], 4868 ), 4869 ( 4870 "ContextualMorph", 4871 [ 4872 ( 4873 "STXHeader(ContextualMorphAction)", 4874 "StateTable", 4875 None, 4876 None, 4877 "Finite-state transducer for contextual glyph substitution.", 4878 ), 4879 ], 4880 ), 4881 ( 4882 "LigatureMorph", 4883 [ 4884 ( 4885 "STXHeader(LigatureMorphAction)", 4886 "StateTable", 4887 None, 4888 None, 4889 "Finite-state transducer for ligature substitution.", 4890 ), 4891 ], 4892 ), 4893 ( 4894 "NoncontextualMorph", 4895 [ 4896 ( 4897 "AATLookup(GlyphID)", 4898 "Substitution", 4899 None, 4900 None, 4901 "The noncontextual glyph substitution table.", 4902 ), 4903 ], 4904 ), 4905 ( 4906 "InsertionMorph", 4907 [ 4908 ( 4909 "STXHeader(InsertionMorphAction)", 4910 "StateTable", 4911 None, 4912 None, 4913 "Finite-state transducer for glyph insertion.", 4914 ), 4915 ], 4916 ), 4917 ( 4918 "MorphClass", 4919 [ 4920 ( 4921 "uint16", 4922 "FirstGlyph", 4923 None, 4924 None, 4925 "Glyph index of the first glyph in the class table.", 4926 ), 4927 # ('uint16', 'GlyphCount', None, None, 'Number of glyphs in class table.'), 4928 # ('uint8', 'GlyphClass', 'GlyphCount', 0, 'The class codes (indexed by glyph index minus firstGlyph). Class codes range from 0 to the value of stateSize minus 1.'), 4929 ], 4930 ), 4931 # If the 'morx' table version is 3 or greater, then the last subtable in the chain is followed by a subtableGlyphCoverageArray, as described below. 4932 # ('Offset', 'MarkGlyphSetsDef', None, 'round(Version*0x10000) >= 0x00010002', 'Offset to the table of mark set definitions-from beginning of GDEF header (may be NULL)'), 4933 # 4934 # prop 4935 # 4936 ( 4937 "prop", 4938 [ 4939 ( 4940 "Fixed", 4941 "Version", 4942 None, 4943 None, 4944 "Version number of the AAT glyphs property table. Version 1.0 is the initial table version. Version 2.0, which is recognized by macOS 8.5 and later, adds support for the “attaches on right” bit. Version 3.0, which gets recognized by macOS X and iOS, adds support for the additional directional properties defined in Unicode 3.0.", 4945 ), 4946 ("struct", "GlyphProperties", None, None, "Glyph properties."), 4947 ], 4948 ), 4949 ( 4950 "GlyphPropertiesFormat0", 4951 [ 4952 ("uint16", "Format", None, None, "Format, = 0."), 4953 ( 4954 "uint16", 4955 "DefaultProperties", 4956 None, 4957 None, 4958 "Default properties applied to a glyph. Since there is no lookup table in prop format 0, the default properties get applied to every glyph in the font.", 4959 ), 4960 ], 4961 ), 4962 ( 4963 "GlyphPropertiesFormat1", 4964 [ 4965 ("uint16", "Format", None, None, "Format, = 1."), 4966 ( 4967 "uint16", 4968 "DefaultProperties", 4969 None, 4970 None, 4971 "Default properties applied to a glyph if that glyph is not present in the Properties lookup table.", 4972 ), 4973 ( 4974 "AATLookup(uint16)", 4975 "Properties", 4976 None, 4977 None, 4978 "Lookup data associating glyphs with their properties.", 4979 ), 4980 ], 4981 ), 4982 # 4983 # opbd 4984 # 4985 ( 4986 "opbd", 4987 [ 4988 ( 4989 "Version", 4990 "Version", 4991 None, 4992 None, 4993 "Version number of the optical bounds table (0x00010000 for the initial version).", 4994 ), 4995 ("struct", "OpticalBounds", None, None, "Optical bounds table."), 4996 ], 4997 ), 4998 ( 4999 "OpticalBoundsFormat0", 5000 [ 5001 ( 5002 "uint16", 5003 "Format", 5004 None, 5005 None, 5006 "Format of the optical bounds table, = 0.", 5007 ), 5008 ( 5009 "AATLookup(OpticalBoundsDeltas)", 5010 "OpticalBoundsDeltas", 5011 None, 5012 None, 5013 "Lookup table associating glyphs with their optical bounds, given as deltas in font units.", 5014 ), 5015 ], 5016 ), 5017 ( 5018 "OpticalBoundsFormat1", 5019 [ 5020 ( 5021 "uint16", 5022 "Format", 5023 None, 5024 None, 5025 "Format of the optical bounds table, = 1.", 5026 ), 5027 ( 5028 "AATLookup(OpticalBoundsPoints)", 5029 "OpticalBoundsPoints", 5030 None, 5031 None, 5032 "Lookup table associating glyphs with their optical bounds, given as references to control points.", 5033 ), 5034 ], 5035 ), 5036 ( 5037 "OpticalBoundsDeltas", 5038 [ 5039 ( 5040 "int16", 5041 "Left", 5042 None, 5043 None, 5044 "Delta value for the left-side optical edge.", 5045 ), 5046 ("int16", "Top", None, None, "Delta value for the top-side optical edge."), 5047 ( 5048 "int16", 5049 "Right", 5050 None, 5051 None, 5052 "Delta value for the right-side optical edge.", 5053 ), 5054 ( 5055 "int16", 5056 "Bottom", 5057 None, 5058 None, 5059 "Delta value for the bottom-side optical edge.", 5060 ), 5061 ], 5062 ), 5063 ( 5064 "OpticalBoundsPoints", 5065 [ 5066 ( 5067 "int16", 5068 "Left", 5069 None, 5070 None, 5071 "Control point index for the left-side optical edge, or -1 if this glyph has none.", 5072 ), 5073 ( 5074 "int16", 5075 "Top", 5076 None, 5077 None, 5078 "Control point index for the top-side optical edge, or -1 if this glyph has none.", 5079 ), 5080 ( 5081 "int16", 5082 "Right", 5083 None, 5084 None, 5085 "Control point index for the right-side optical edge, or -1 if this glyph has none.", 5086 ), 5087 ( 5088 "int16", 5089 "Bottom", 5090 None, 5091 None, 5092 "Control point index for the bottom-side optical edge, or -1 if this glyph has none.", 5093 ), 5094 ], 5095 ), 5096 # 5097 # TSIC 5098 # 5099 ( 5100 "TSIC", 5101 [ 5102 ( 5103 "Version", 5104 "Version", 5105 None, 5106 None, 5107 "Version of table initially set to 0x00010000.", 5108 ), 5109 ("uint16", "Flags", None, None, "TSIC flags - set to 0"), 5110 ("uint16", "AxisCount", None, None, "Axis count from fvar"), 5111 ("uint16", "RecordCount", None, None, "TSIC record count"), 5112 ("uint16", "Reserved", None, None, "Set to 0"), 5113 ("Tag", "AxisArray", "AxisCount", 0, "Array of axis tags in fvar order"), 5114 ( 5115 "LocationRecord", 5116 "RecordLocations", 5117 "RecordCount", 5118 0, 5119 "Location in variation space of TSIC record", 5120 ), 5121 ("TSICRecord", "Record", "RecordCount", 0, "Array of TSIC records"), 5122 ], 5123 ), 5124 ( 5125 "LocationRecord", 5126 [ 5127 ("F2Dot14", "Axis", "AxisCount", 0, "Axis record"), 5128 ], 5129 ), 5130 ( 5131 "TSICRecord", 5132 [ 5133 ("uint16", "Flags", None, None, "Record flags - set to 0"), 5134 ("uint16", "NumCVTEntries", None, None, "Number of CVT number value pairs"), 5135 ("uint16", "NameLength", None, None, "Length of optional user record name"), 5136 ("uint16", "NameArray", "NameLength", 0, "Unicode 16 name"), 5137 ("uint16", "CVTArray", "NumCVTEntries", 0, "CVT number array"), 5138 ("int16", "CVTValueArray", "NumCVTEntries", 0, "CVT value"), 5139 ], 5140 ), 5141 # 5142 # COLR 5143 # 5144 ( 5145 "COLR", 5146 [ 5147 ("uint16", "Version", None, None, "Table version number (starts at 0)."), 5148 ( 5149 "uint16", 5150 "BaseGlyphRecordCount", 5151 None, 5152 None, 5153 "Number of Base Glyph Records.", 5154 ), 5155 ( 5156 "LOffset", 5157 "BaseGlyphRecordArray", 5158 None, 5159 None, 5160 "Offset (from beginning of COLR table) to Base Glyph records.", 5161 ), 5162 ( 5163 "LOffset", 5164 "LayerRecordArray", 5165 None, 5166 None, 5167 "Offset (from beginning of COLR table) to Layer Records.", 5168 ), 5169 ("uint16", "LayerRecordCount", None, None, "Number of Layer Records."), 5170 ( 5171 "LOffset", 5172 "BaseGlyphList", 5173 None, 5174 "Version >= 1", 5175 "Offset (from beginning of COLR table) to array of Version-1 Base Glyph records.", 5176 ), 5177 ( 5178 "LOffset", 5179 "LayerList", 5180 None, 5181 "Version >= 1", 5182 "Offset (from beginning of COLR table) to LayerList.", 5183 ), 5184 ( 5185 "LOffset", 5186 "ClipList", 5187 None, 5188 "Version >= 1", 5189 "Offset to ClipList table (may be NULL)", 5190 ), 5191 ( 5192 "LOffsetTo(DeltaSetIndexMap)", 5193 "VarIndexMap", 5194 None, 5195 "Version >= 1", 5196 "Offset to DeltaSetIndexMap table (may be NULL)", 5197 ), 5198 ( 5199 "LOffset", 5200 "VarStore", 5201 None, 5202 "Version >= 1", 5203 "Offset to variation store (may be NULL)", 5204 ), 5205 ], 5206 ), 5207 ( 5208 "BaseGlyphRecordArray", 5209 [ 5210 ( 5211 "BaseGlyphRecord", 5212 "BaseGlyphRecord", 5213 "BaseGlyphRecordCount", 5214 0, 5215 "Base Glyph records.", 5216 ), 5217 ], 5218 ), 5219 ( 5220 "BaseGlyphRecord", 5221 [ 5222 ( 5223 "GlyphID", 5224 "BaseGlyph", 5225 None, 5226 None, 5227 "Glyph ID of reference glyph. This glyph is for reference only and is not rendered for color.", 5228 ), 5229 ( 5230 "uint16", 5231 "FirstLayerIndex", 5232 None, 5233 None, 5234 "Index (from beginning of the Layer Records) to the layer record. There will be numLayers consecutive entries for this base glyph.", 5235 ), 5236 ( 5237 "uint16", 5238 "NumLayers", 5239 None, 5240 None, 5241 "Number of color layers associated with this glyph.", 5242 ), 5243 ], 5244 ), 5245 ( 5246 "LayerRecordArray", 5247 [ 5248 ("LayerRecord", "LayerRecord", "LayerRecordCount", 0, "Layer records."), 5249 ], 5250 ), 5251 ( 5252 "LayerRecord", 5253 [ 5254 ( 5255 "GlyphID", 5256 "LayerGlyph", 5257 None, 5258 None, 5259 "Glyph ID of layer glyph (must be in z-order from bottom to top).", 5260 ), 5261 ( 5262 "uint16", 5263 "PaletteIndex", 5264 None, 5265 None, 5266 "Index value to use with a selected color palette.", 5267 ), 5268 ], 5269 ), 5270 ( 5271 "BaseGlyphList", 5272 [ 5273 ( 5274 "uint32", 5275 "BaseGlyphCount", 5276 None, 5277 None, 5278 "Number of Version-1 Base Glyph records", 5279 ), 5280 ( 5281 "struct", 5282 "BaseGlyphPaintRecord", 5283 "BaseGlyphCount", 5284 0, 5285 "Array of Version-1 Base Glyph records", 5286 ), 5287 ], 5288 ), 5289 ( 5290 "BaseGlyphPaintRecord", 5291 [ 5292 ("GlyphID", "BaseGlyph", None, None, "Glyph ID of reference glyph."), 5293 ( 5294 "LOffset", 5295 "Paint", 5296 None, 5297 None, 5298 "Offset (from beginning of BaseGlyphPaintRecord) to Paint, typically a PaintColrLayers.", 5299 ), 5300 ], 5301 ), 5302 ( 5303 "LayerList", 5304 [ 5305 ("uint32", "LayerCount", None, None, "Number of Version-1 Layers"), 5306 ( 5307 "LOffset", 5308 "Paint", 5309 "LayerCount", 5310 0, 5311 "Array of offsets to Paint tables, from the start of the LayerList table.", 5312 ), 5313 ], 5314 ), 5315 ( 5316 "ClipListFormat1", 5317 [ 5318 ( 5319 "uint8", 5320 "Format", 5321 None, 5322 None, 5323 "Format for ClipList with 16bit glyph IDs: 1", 5324 ), 5325 ("uint32", "ClipCount", None, None, "Number of Clip records."), 5326 ( 5327 "struct", 5328 "ClipRecord", 5329 "ClipCount", 5330 0, 5331 "Array of Clip records sorted by glyph ID.", 5332 ), 5333 ], 5334 ), 5335 ( 5336 "ClipRecord", 5337 [ 5338 ("uint16", "StartGlyphID", None, None, "First glyph ID in the range."), 5339 ("uint16", "EndGlyphID", None, None, "Last glyph ID in the range."), 5340 ("Offset24", "ClipBox", None, None, "Offset to a ClipBox table."), 5341 ], 5342 ), 5343 ( 5344 "ClipBoxFormat1", 5345 [ 5346 ( 5347 "uint8", 5348 "Format", 5349 None, 5350 None, 5351 "Format for ClipBox without variation: set to 1.", 5352 ), 5353 ("int16", "xMin", None, None, "Minimum x of clip box."), 5354 ("int16", "yMin", None, None, "Minimum y of clip box."), 5355 ("int16", "xMax", None, None, "Maximum x of clip box."), 5356 ("int16", "yMax", None, None, "Maximum y of clip box."), 5357 ], 5358 ), 5359 ( 5360 "ClipBoxFormat2", 5361 [ 5362 ("uint8", "Format", None, None, "Format for variable ClipBox: set to 2."), 5363 ("int16", "xMin", None, None, "Minimum x of clip box. VarIndexBase + 0."), 5364 ("int16", "yMin", None, None, "Minimum y of clip box. VarIndexBase + 1."), 5365 ("int16", "xMax", None, None, "Maximum x of clip box. VarIndexBase + 2."), 5366 ("int16", "yMax", None, None, "Maximum y of clip box. VarIndexBase + 3."), 5367 ( 5368 "VarIndex", 5369 "VarIndexBase", 5370 None, 5371 None, 5372 "Base index into DeltaSetIndexMap.", 5373 ), 5374 ], 5375 ), 5376 # COLRv1 Affine2x3 uses the same column-major order to serialize a 2D 5377 # Affine Transformation as the one used by fontTools.misc.transform. 5378 # However, for historical reasons, the labels 'xy' and 'yx' are swapped. 5379 # Their fundamental meaning is the same though. 5380 # COLRv1 Affine2x3 follows the names found in FreeType and Cairo. 5381 # In all case, the second element in the 6-tuple correspond to the 5382 # y-part of the x basis vector, and the third to the x-part of the y 5383 # basis vector. 5384 # See https://github.com/googlefonts/colr-gradients-spec/pull/85 5385 ( 5386 "Affine2x3", 5387 [ 5388 ("Fixed", "xx", None, None, "x-part of x basis vector"), 5389 ("Fixed", "yx", None, None, "y-part of x basis vector"), 5390 ("Fixed", "xy", None, None, "x-part of y basis vector"), 5391 ("Fixed", "yy", None, None, "y-part of y basis vector"), 5392 ("Fixed", "dx", None, None, "Translation in x direction"), 5393 ("Fixed", "dy", None, None, "Translation in y direction"), 5394 ], 5395 ), 5396 ( 5397 "VarAffine2x3", 5398 [ 5399 ("Fixed", "xx", None, None, "x-part of x basis vector. VarIndexBase + 0."), 5400 ("Fixed", "yx", None, None, "y-part of x basis vector. VarIndexBase + 1."), 5401 ("Fixed", "xy", None, None, "x-part of y basis vector. VarIndexBase + 2."), 5402 ("Fixed", "yy", None, None, "y-part of y basis vector. VarIndexBase + 3."), 5403 ( 5404 "Fixed", 5405 "dx", 5406 None, 5407 None, 5408 "Translation in x direction. VarIndexBase + 4.", 5409 ), 5410 ( 5411 "Fixed", 5412 "dy", 5413 None, 5414 None, 5415 "Translation in y direction. VarIndexBase + 5.", 5416 ), 5417 ( 5418 "VarIndex", 5419 "VarIndexBase", 5420 None, 5421 None, 5422 "Base index into DeltaSetIndexMap.", 5423 ), 5424 ], 5425 ), 5426 ( 5427 "ColorStop", 5428 [ 5429 ("F2Dot14", "StopOffset", None, None, ""), 5430 ("uint16", "PaletteIndex", None, None, "Index for a CPAL palette entry."), 5431 ("F2Dot14", "Alpha", None, None, "Values outsided [0.,1.] reserved"), 5432 ], 5433 ), 5434 ( 5435 "VarColorStop", 5436 [ 5437 ("F2Dot14", "StopOffset", None, None, "VarIndexBase + 0."), 5438 ("uint16", "PaletteIndex", None, None, "Index for a CPAL palette entry."), 5439 ( 5440 "F2Dot14", 5441 "Alpha", 5442 None, 5443 None, 5444 "Values outsided [0.,1.] reserved. VarIndexBase + 1.", 5445 ), 5446 ( 5447 "VarIndex", 5448 "VarIndexBase", 5449 None, 5450 None, 5451 "Base index into DeltaSetIndexMap.", 5452 ), 5453 ], 5454 ), 5455 ( 5456 "ColorLine", 5457 [ 5458 ( 5459 "ExtendMode", 5460 "Extend", 5461 None, 5462 None, 5463 "Enum {PAD = 0, REPEAT = 1, REFLECT = 2}", 5464 ), 5465 ("uint16", "StopCount", None, None, "Number of Color stops."), 5466 ("ColorStop", "ColorStop", "StopCount", 0, "Array of Color stops."), 5467 ], 5468 ), 5469 ( 5470 "VarColorLine", 5471 [ 5472 ( 5473 "ExtendMode", 5474 "Extend", 5475 None, 5476 None, 5477 "Enum {PAD = 0, REPEAT = 1, REFLECT = 2}", 5478 ), 5479 ("uint16", "StopCount", None, None, "Number of Color stops."), 5480 ("VarColorStop", "ColorStop", "StopCount", 0, "Array of Color stops."), 5481 ], 5482 ), 5483 # PaintColrLayers 5484 ( 5485 "PaintFormat1", 5486 [ 5487 ("uint8", "PaintFormat", None, None, "Format identifier-format = 1"), 5488 ( 5489 "uint8", 5490 "NumLayers", 5491 None, 5492 None, 5493 "Number of offsets to Paint to read from LayerList.", 5494 ), 5495 ("uint32", "FirstLayerIndex", None, None, "Index into LayerList."), 5496 ], 5497 ), 5498 # PaintSolid 5499 ( 5500 "PaintFormat2", 5501 [ 5502 ("uint8", "PaintFormat", None, None, "Format identifier-format = 2"), 5503 ("uint16", "PaletteIndex", None, None, "Index for a CPAL palette entry."), 5504 ("F2Dot14", "Alpha", None, None, "Values outsided [0.,1.] reserved"), 5505 ], 5506 ), 5507 # PaintVarSolid 5508 ( 5509 "PaintFormat3", 5510 [ 5511 ("uint8", "PaintFormat", None, None, "Format identifier-format = 3"), 5512 ("uint16", "PaletteIndex", None, None, "Index for a CPAL palette entry."), 5513 ( 5514 "F2Dot14", 5515 "Alpha", 5516 None, 5517 None, 5518 "Values outsided [0.,1.] reserved. VarIndexBase + 0.", 5519 ), 5520 ( 5521 "VarIndex", 5522 "VarIndexBase", 5523 None, 5524 None, 5525 "Base index into DeltaSetIndexMap.", 5526 ), 5527 ], 5528 ), 5529 # PaintLinearGradient 5530 ( 5531 "PaintFormat4", 5532 [ 5533 ("uint8", "PaintFormat", None, None, "Format identifier-format = 4"), 5534 ( 5535 "Offset24", 5536 "ColorLine", 5537 None, 5538 None, 5539 "Offset (from beginning of PaintLinearGradient table) to ColorLine subtable.", 5540 ), 5541 ("int16", "x0", None, None, ""), 5542 ("int16", "y0", None, None, ""), 5543 ("int16", "x1", None, None, ""), 5544 ("int16", "y1", None, None, ""), 5545 ("int16", "x2", None, None, ""), 5546 ("int16", "y2", None, None, ""), 5547 ], 5548 ), 5549 # PaintVarLinearGradient 5550 ( 5551 "PaintFormat5", 5552 [ 5553 ("uint8", "PaintFormat", None, None, "Format identifier-format = 5"), 5554 ( 5555 "LOffset24To(VarColorLine)", 5556 "ColorLine", 5557 None, 5558 None, 5559 "Offset (from beginning of PaintVarLinearGradient table) to VarColorLine subtable.", 5560 ), 5561 ("int16", "x0", None, None, "VarIndexBase + 0."), 5562 ("int16", "y0", None, None, "VarIndexBase + 1."), 5563 ("int16", "x1", None, None, "VarIndexBase + 2."), 5564 ("int16", "y1", None, None, "VarIndexBase + 3."), 5565 ("int16", "x2", None, None, "VarIndexBase + 4."), 5566 ("int16", "y2", None, None, "VarIndexBase + 5."), 5567 ( 5568 "VarIndex", 5569 "VarIndexBase", 5570 None, 5571 None, 5572 "Base index into DeltaSetIndexMap.", 5573 ), 5574 ], 5575 ), 5576 # PaintRadialGradient 5577 ( 5578 "PaintFormat6", 5579 [ 5580 ("uint8", "PaintFormat", None, None, "Format identifier-format = 6"), 5581 ( 5582 "Offset24", 5583 "ColorLine", 5584 None, 5585 None, 5586 "Offset (from beginning of PaintRadialGradient table) to ColorLine subtable.", 5587 ), 5588 ("int16", "x0", None, None, ""), 5589 ("int16", "y0", None, None, ""), 5590 ("uint16", "r0", None, None, ""), 5591 ("int16", "x1", None, None, ""), 5592 ("int16", "y1", None, None, ""), 5593 ("uint16", "r1", None, None, ""), 5594 ], 5595 ), 5596 # PaintVarRadialGradient 5597 ( 5598 "PaintFormat7", 5599 [ 5600 ("uint8", "PaintFormat", None, None, "Format identifier-format = 7"), 5601 ( 5602 "LOffset24To(VarColorLine)", 5603 "ColorLine", 5604 None, 5605 None, 5606 "Offset (from beginning of PaintVarRadialGradient table) to VarColorLine subtable.", 5607 ), 5608 ("int16", "x0", None, None, "VarIndexBase + 0."), 5609 ("int16", "y0", None, None, "VarIndexBase + 1."), 5610 ("uint16", "r0", None, None, "VarIndexBase + 2."), 5611 ("int16", "x1", None, None, "VarIndexBase + 3."), 5612 ("int16", "y1", None, None, "VarIndexBase + 4."), 5613 ("uint16", "r1", None, None, "VarIndexBase + 5."), 5614 ( 5615 "VarIndex", 5616 "VarIndexBase", 5617 None, 5618 None, 5619 "Base index into DeltaSetIndexMap.", 5620 ), 5621 ], 5622 ), 5623 # PaintSweepGradient 5624 ( 5625 "PaintFormat8", 5626 [ 5627 ("uint8", "PaintFormat", None, None, "Format identifier-format = 8"), 5628 ( 5629 "Offset24", 5630 "ColorLine", 5631 None, 5632 None, 5633 "Offset (from beginning of PaintSweepGradient table) to ColorLine subtable.", 5634 ), 5635 ("int16", "centerX", None, None, "Center x coordinate."), 5636 ("int16", "centerY", None, None, "Center y coordinate."), 5637 ( 5638 "BiasedAngle", 5639 "startAngle", 5640 None, 5641 None, 5642 "Start of the angular range of the gradient.", 5643 ), 5644 ( 5645 "BiasedAngle", 5646 "endAngle", 5647 None, 5648 None, 5649 "End of the angular range of the gradient.", 5650 ), 5651 ], 5652 ), 5653 # PaintVarSweepGradient 5654 ( 5655 "PaintFormat9", 5656 [ 5657 ("uint8", "PaintFormat", None, None, "Format identifier-format = 9"), 5658 ( 5659 "LOffset24To(VarColorLine)", 5660 "ColorLine", 5661 None, 5662 None, 5663 "Offset (from beginning of PaintVarSweepGradient table) to VarColorLine subtable.", 5664 ), 5665 ("int16", "centerX", None, None, "Center x coordinate. VarIndexBase + 0."), 5666 ("int16", "centerY", None, None, "Center y coordinate. VarIndexBase + 1."), 5667 ( 5668 "BiasedAngle", 5669 "startAngle", 5670 None, 5671 None, 5672 "Start of the angular range of the gradient. VarIndexBase + 2.", 5673 ), 5674 ( 5675 "BiasedAngle", 5676 "endAngle", 5677 None, 5678 None, 5679 "End of the angular range of the gradient. VarIndexBase + 3.", 5680 ), 5681 ( 5682 "VarIndex", 5683 "VarIndexBase", 5684 None, 5685 None, 5686 "Base index into DeltaSetIndexMap.", 5687 ), 5688 ], 5689 ), 5690 # PaintGlyph 5691 ( 5692 "PaintFormat10", 5693 [ 5694 ("uint8", "PaintFormat", None, None, "Format identifier-format = 10"), 5695 ( 5696 "Offset24", 5697 "Paint", 5698 None, 5699 None, 5700 "Offset (from beginning of PaintGlyph table) to Paint subtable.", 5701 ), 5702 ("GlyphID", "Glyph", None, None, "Glyph ID for the source outline."), 5703 ], 5704 ), 5705 # PaintColrGlyph 5706 ( 5707 "PaintFormat11", 5708 [ 5709 ("uint8", "PaintFormat", None, None, "Format identifier-format = 11"), 5710 ( 5711 "GlyphID", 5712 "Glyph", 5713 None, 5714 None, 5715 "Virtual glyph ID for a BaseGlyphList base glyph.", 5716 ), 5717 ], 5718 ), 5719 # PaintTransform 5720 ( 5721 "PaintFormat12", 5722 [ 5723 ("uint8", "PaintFormat", None, None, "Format identifier-format = 12"), 5724 ( 5725 "Offset24", 5726 "Paint", 5727 None, 5728 None, 5729 "Offset (from beginning of PaintTransform table) to Paint subtable.", 5730 ), 5731 ( 5732 "LOffset24To(Affine2x3)", 5733 "Transform", 5734 None, 5735 None, 5736 "2x3 matrix for 2D affine transformations.", 5737 ), 5738 ], 5739 ), 5740 # PaintVarTransform 5741 ( 5742 "PaintFormat13", 5743 [ 5744 ("uint8", "PaintFormat", None, None, "Format identifier-format = 13"), 5745 ( 5746 "Offset24", 5747 "Paint", 5748 None, 5749 None, 5750 "Offset (from beginning of PaintVarTransform table) to Paint subtable.", 5751 ), 5752 ( 5753 "LOffset24To(VarAffine2x3)", 5754 "Transform", 5755 None, 5756 None, 5757 "2x3 matrix for 2D affine transformations.", 5758 ), 5759 ], 5760 ), 5761 # PaintTranslate 5762 ( 5763 "PaintFormat14", 5764 [ 5765 ("uint8", "PaintFormat", None, None, "Format identifier-format = 14"), 5766 ( 5767 "Offset24", 5768 "Paint", 5769 None, 5770 None, 5771 "Offset (from beginning of PaintTranslate table) to Paint subtable.", 5772 ), 5773 ("int16", "dx", None, None, "Translation in x direction."), 5774 ("int16", "dy", None, None, "Translation in y direction."), 5775 ], 5776 ), 5777 # PaintVarTranslate 5778 ( 5779 "PaintFormat15", 5780 [ 5781 ("uint8", "PaintFormat", None, None, "Format identifier-format = 15"), 5782 ( 5783 "Offset24", 5784 "Paint", 5785 None, 5786 None, 5787 "Offset (from beginning of PaintVarTranslate table) to Paint subtable.", 5788 ), 5789 ( 5790 "int16", 5791 "dx", 5792 None, 5793 None, 5794 "Translation in x direction. VarIndexBase + 0.", 5795 ), 5796 ( 5797 "int16", 5798 "dy", 5799 None, 5800 None, 5801 "Translation in y direction. VarIndexBase + 1.", 5802 ), 5803 ( 5804 "VarIndex", 5805 "VarIndexBase", 5806 None, 5807 None, 5808 "Base index into DeltaSetIndexMap.", 5809 ), 5810 ], 5811 ), 5812 # PaintScale 5813 ( 5814 "PaintFormat16", 5815 [ 5816 ("uint8", "PaintFormat", None, None, "Format identifier-format = 16"), 5817 ( 5818 "Offset24", 5819 "Paint", 5820 None, 5821 None, 5822 "Offset (from beginning of PaintScale table) to Paint subtable.", 5823 ), 5824 ("F2Dot14", "scaleX", None, None, ""), 5825 ("F2Dot14", "scaleY", None, None, ""), 5826 ], 5827 ), 5828 # PaintVarScale 5829 ( 5830 "PaintFormat17", 5831 [ 5832 ("uint8", "PaintFormat", None, None, "Format identifier-format = 17"), 5833 ( 5834 "Offset24", 5835 "Paint", 5836 None, 5837 None, 5838 "Offset (from beginning of PaintVarScale table) to Paint subtable.", 5839 ), 5840 ("F2Dot14", "scaleX", None, None, "VarIndexBase + 0."), 5841 ("F2Dot14", "scaleY", None, None, "VarIndexBase + 1."), 5842 ( 5843 "VarIndex", 5844 "VarIndexBase", 5845 None, 5846 None, 5847 "Base index into DeltaSetIndexMap.", 5848 ), 5849 ], 5850 ), 5851 # PaintScaleAroundCenter 5852 ( 5853 "PaintFormat18", 5854 [ 5855 ("uint8", "PaintFormat", None, None, "Format identifier-format = 18"), 5856 ( 5857 "Offset24", 5858 "Paint", 5859 None, 5860 None, 5861 "Offset (from beginning of PaintScaleAroundCenter table) to Paint subtable.", 5862 ), 5863 ("F2Dot14", "scaleX", None, None, ""), 5864 ("F2Dot14", "scaleY", None, None, ""), 5865 ("int16", "centerX", None, None, ""), 5866 ("int16", "centerY", None, None, ""), 5867 ], 5868 ), 5869 # PaintVarScaleAroundCenter 5870 ( 5871 "PaintFormat19", 5872 [ 5873 ("uint8", "PaintFormat", None, None, "Format identifier-format = 19"), 5874 ( 5875 "Offset24", 5876 "Paint", 5877 None, 5878 None, 5879 "Offset (from beginning of PaintVarScaleAroundCenter table) to Paint subtable.", 5880 ), 5881 ("F2Dot14", "scaleX", None, None, "VarIndexBase + 0."), 5882 ("F2Dot14", "scaleY", None, None, "VarIndexBase + 1."), 5883 ("int16", "centerX", None, None, "VarIndexBase + 2."), 5884 ("int16", "centerY", None, None, "VarIndexBase + 3."), 5885 ( 5886 "VarIndex", 5887 "VarIndexBase", 5888 None, 5889 None, 5890 "Base index into DeltaSetIndexMap.", 5891 ), 5892 ], 5893 ), 5894 # PaintScaleUniform 5895 ( 5896 "PaintFormat20", 5897 [ 5898 ("uint8", "PaintFormat", None, None, "Format identifier-format = 20"), 5899 ( 5900 "Offset24", 5901 "Paint", 5902 None, 5903 None, 5904 "Offset (from beginning of PaintScaleUniform table) to Paint subtable.", 5905 ), 5906 ("F2Dot14", "scale", None, None, ""), 5907 ], 5908 ), 5909 # PaintVarScaleUniform 5910 ( 5911 "PaintFormat21", 5912 [ 5913 ("uint8", "PaintFormat", None, None, "Format identifier-format = 21"), 5914 ( 5915 "Offset24", 5916 "Paint", 5917 None, 5918 None, 5919 "Offset (from beginning of PaintVarScaleUniform table) to Paint subtable.", 5920 ), 5921 ("F2Dot14", "scale", None, None, "VarIndexBase + 0."), 5922 ( 5923 "VarIndex", 5924 "VarIndexBase", 5925 None, 5926 None, 5927 "Base index into DeltaSetIndexMap.", 5928 ), 5929 ], 5930 ), 5931 # PaintScaleUniformAroundCenter 5932 ( 5933 "PaintFormat22", 5934 [ 5935 ("uint8", "PaintFormat", None, None, "Format identifier-format = 22"), 5936 ( 5937 "Offset24", 5938 "Paint", 5939 None, 5940 None, 5941 "Offset (from beginning of PaintScaleUniformAroundCenter table) to Paint subtable.", 5942 ), 5943 ("F2Dot14", "scale", None, None, ""), 5944 ("int16", "centerX", None, None, ""), 5945 ("int16", "centerY", None, None, ""), 5946 ], 5947 ), 5948 # PaintVarScaleUniformAroundCenter 5949 ( 5950 "PaintFormat23", 5951 [ 5952 ("uint8", "PaintFormat", None, None, "Format identifier-format = 23"), 5953 ( 5954 "Offset24", 5955 "Paint", 5956 None, 5957 None, 5958 "Offset (from beginning of PaintVarScaleUniformAroundCenter table) to Paint subtable.", 5959 ), 5960 ("F2Dot14", "scale", None, None, "VarIndexBase + 0"), 5961 ("int16", "centerX", None, None, "VarIndexBase + 1"), 5962 ("int16", "centerY", None, None, "VarIndexBase + 2"), 5963 ( 5964 "VarIndex", 5965 "VarIndexBase", 5966 None, 5967 None, 5968 "Base index into DeltaSetIndexMap.", 5969 ), 5970 ], 5971 ), 5972 # PaintRotate 5973 ( 5974 "PaintFormat24", 5975 [ 5976 ("uint8", "PaintFormat", None, None, "Format identifier-format = 24"), 5977 ( 5978 "Offset24", 5979 "Paint", 5980 None, 5981 None, 5982 "Offset (from beginning of PaintRotate table) to Paint subtable.", 5983 ), 5984 ("Angle", "angle", None, None, ""), 5985 ], 5986 ), 5987 # PaintVarRotate 5988 ( 5989 "PaintFormat25", 5990 [ 5991 ("uint8", "PaintFormat", None, None, "Format identifier-format = 25"), 5992 ( 5993 "Offset24", 5994 "Paint", 5995 None, 5996 None, 5997 "Offset (from beginning of PaintVarRotate table) to Paint subtable.", 5998 ), 5999 ("Angle", "angle", None, None, "VarIndexBase + 0."), 6000 ( 6001 "VarIndex", 6002 "VarIndexBase", 6003 None, 6004 None, 6005 "Base index into DeltaSetIndexMap.", 6006 ), 6007 ], 6008 ), 6009 # PaintRotateAroundCenter 6010 ( 6011 "PaintFormat26", 6012 [ 6013 ("uint8", "PaintFormat", None, None, "Format identifier-format = 26"), 6014 ( 6015 "Offset24", 6016 "Paint", 6017 None, 6018 None, 6019 "Offset (from beginning of PaintRotateAroundCenter table) to Paint subtable.", 6020 ), 6021 ("Angle", "angle", None, None, ""), 6022 ("int16", "centerX", None, None, ""), 6023 ("int16", "centerY", None, None, ""), 6024 ], 6025 ), 6026 # PaintVarRotateAroundCenter 6027 ( 6028 "PaintFormat27", 6029 [ 6030 ("uint8", "PaintFormat", None, None, "Format identifier-format = 27"), 6031 ( 6032 "Offset24", 6033 "Paint", 6034 None, 6035 None, 6036 "Offset (from beginning of PaintVarRotateAroundCenter table) to Paint subtable.", 6037 ), 6038 ("Angle", "angle", None, None, "VarIndexBase + 0."), 6039 ("int16", "centerX", None, None, "VarIndexBase + 1."), 6040 ("int16", "centerY", None, None, "VarIndexBase + 2."), 6041 ( 6042 "VarIndex", 6043 "VarIndexBase", 6044 None, 6045 None, 6046 "Base index into DeltaSetIndexMap.", 6047 ), 6048 ], 6049 ), 6050 # PaintSkew 6051 ( 6052 "PaintFormat28", 6053 [ 6054 ("uint8", "PaintFormat", None, None, "Format identifier-format = 28"), 6055 ( 6056 "Offset24", 6057 "Paint", 6058 None, 6059 None, 6060 "Offset (from beginning of PaintSkew table) to Paint subtable.", 6061 ), 6062 ("Angle", "xSkewAngle", None, None, ""), 6063 ("Angle", "ySkewAngle", None, None, ""), 6064 ], 6065 ), 6066 # PaintVarSkew 6067 ( 6068 "PaintFormat29", 6069 [ 6070 ("uint8", "PaintFormat", None, None, "Format identifier-format = 29"), 6071 ( 6072 "Offset24", 6073 "Paint", 6074 None, 6075 None, 6076 "Offset (from beginning of PaintVarSkew table) to Paint subtable.", 6077 ), 6078 ("Angle", "xSkewAngle", None, None, "VarIndexBase + 0."), 6079 ("Angle", "ySkewAngle", None, None, "VarIndexBase + 1."), 6080 ( 6081 "VarIndex", 6082 "VarIndexBase", 6083 None, 6084 None, 6085 "Base index into DeltaSetIndexMap.", 6086 ), 6087 ], 6088 ), 6089 # PaintSkewAroundCenter 6090 ( 6091 "PaintFormat30", 6092 [ 6093 ("uint8", "PaintFormat", None, None, "Format identifier-format = 30"), 6094 ( 6095 "Offset24", 6096 "Paint", 6097 None, 6098 None, 6099 "Offset (from beginning of PaintSkewAroundCenter table) to Paint subtable.", 6100 ), 6101 ("Angle", "xSkewAngle", None, None, ""), 6102 ("Angle", "ySkewAngle", None, None, ""), 6103 ("int16", "centerX", None, None, ""), 6104 ("int16", "centerY", None, None, ""), 6105 ], 6106 ), 6107 # PaintVarSkewAroundCenter 6108 ( 6109 "PaintFormat31", 6110 [ 6111 ("uint8", "PaintFormat", None, None, "Format identifier-format = 31"), 6112 ( 6113 "Offset24", 6114 "Paint", 6115 None, 6116 None, 6117 "Offset (from beginning of PaintVarSkewAroundCenter table) to Paint subtable.", 6118 ), 6119 ("Angle", "xSkewAngle", None, None, "VarIndexBase + 0."), 6120 ("Angle", "ySkewAngle", None, None, "VarIndexBase + 1."), 6121 ("int16", "centerX", None, None, "VarIndexBase + 2."), 6122 ("int16", "centerY", None, None, "VarIndexBase + 3."), 6123 ( 6124 "VarIndex", 6125 "VarIndexBase", 6126 None, 6127 None, 6128 "Base index into DeltaSetIndexMap.", 6129 ), 6130 ], 6131 ), 6132 # PaintComposite 6133 ( 6134 "PaintFormat32", 6135 [ 6136 ("uint8", "PaintFormat", None, None, "Format identifier-format = 32"), 6137 ( 6138 "LOffset24To(Paint)", 6139 "SourcePaint", 6140 None, 6141 None, 6142 "Offset (from beginning of PaintComposite table) to source Paint subtable.", 6143 ), 6144 ( 6145 "CompositeMode", 6146 "CompositeMode", 6147 None, 6148 None, 6149 "A CompositeMode enumeration value.", 6150 ), 6151 ( 6152 "LOffset24To(Paint)", 6153 "BackdropPaint", 6154 None, 6155 None, 6156 "Offset (from beginning of PaintComposite table) to backdrop Paint subtable.", 6157 ), 6158 ], 6159 ), 6160 # 6161 # avar 6162 # 6163 ( 6164 "AxisValueMap", 6165 [ 6166 ( 6167 "F2Dot14", 6168 "FromCoordinate", 6169 None, 6170 None, 6171 "A normalized coordinate value obtained using default normalization", 6172 ), 6173 ( 6174 "F2Dot14", 6175 "ToCoordinate", 6176 None, 6177 None, 6178 "The modified, normalized coordinate value", 6179 ), 6180 ], 6181 ), 6182 ( 6183 "AxisSegmentMap", 6184 [ 6185 ( 6186 "uint16", 6187 "PositionMapCount", 6188 None, 6189 None, 6190 "The number of correspondence pairs for this axis", 6191 ), 6192 ( 6193 "AxisValueMap", 6194 "AxisValueMap", 6195 "PositionMapCount", 6196 0, 6197 "The array of axis value map records for this axis", 6198 ), 6199 ], 6200 ), 6201 ( 6202 "avar", 6203 [ 6204 ( 6205 "Version", 6206 "Version", 6207 None, 6208 None, 6209 "Version of the avar table- 0x00010000 or 0x00020000", 6210 ), 6211 ("uint16", "Reserved", None, None, "Permanently reserved; set to zero"), 6212 ( 6213 "uint16", 6214 "AxisCount", 6215 None, 6216 None, 6217 'The number of variation axes for this font. This must be the same number as axisCount in the "fvar" table', 6218 ), 6219 ( 6220 "AxisSegmentMap", 6221 "AxisSegmentMap", 6222 "AxisCount", 6223 0, 6224 'The segment maps array — one segment map for each axis, in the order of axes specified in the "fvar" table', 6225 ), 6226 ( 6227 "LOffsetTo(DeltaSetIndexMap)", 6228 "VarIdxMap", 6229 None, 6230 "Version >= 0x00020000", 6231 "", 6232 ), 6233 ("LOffset", "VarStore", None, "Version >= 0x00020000", ""), 6234 ], 6235 ), 6236] 6237