ReactOS 0.4.16-dev-2332-g4cba65d
tttypes.h
Go to the documentation of this file.
1/****************************************************************************
2 *
3 * tttypes.h
4 *
5 * Basic SFNT/TrueType type definitions and interface (specification
6 * only).
7 *
8 * Copyright (C) 1996-2020 by
9 * David Turner, Robert Wilhelm, and Werner Lemberg.
10 *
11 * This file is part of the FreeType project, and may only be used,
12 * modified, and distributed under the terms of the FreeType project
13 * license, LICENSE.TXT. By continuing to use, modify, or distribute
14 * this file you indicate that you have read the license and
15 * understand and accept it fully.
16 *
17 */
18
19
20#ifndef TTTYPES_H_
21#define TTTYPES_H_
22
23
24#include <freetype/tttables.h>
26#include <freetype/ftcolor.h>
27
28#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
29#include <freetype/ftmm.h>
30#endif
31
32
34
35
36 /*************************************************************************/
37 /*************************************************************************/
38 /*************************************************************************/
39 /*** ***/
40 /*** ***/
41 /*** REQUIRED TRUETYPE/OPENTYPE TABLES DEFINITIONS ***/
42 /*** ***/
43 /*** ***/
44 /*************************************************************************/
45 /*************************************************************************/
46 /*************************************************************************/
47
48
49 /**************************************************************************
50 *
51 * @struct:
52 * TTC_HeaderRec
53 *
54 * @description:
55 * TrueType collection header. This table contains the offsets of the
56 * font headers of each distinct TrueType face in the file.
57 *
58 * @fields:
59 * tag ::
60 * Must be 'ttc~' to indicate a TrueType collection.
61 *
62 * version ::
63 * The version number.
64 *
65 * count ::
66 * The number of faces in the collection. The specification says this
67 * should be an unsigned long, but we use a signed long since we need
68 * the value -1 for specific purposes.
69 *
70 * offsets ::
71 * The offsets of the font headers, one per face.
72 */
73 typedef struct TTC_HeaderRec_
74 {
79
81
82
83 /**************************************************************************
84 *
85 * @struct:
86 * SFNT_HeaderRec
87 *
88 * @description:
89 * SFNT file format header.
90 *
91 * @fields:
92 * format_tag ::
93 * The font format tag.
94 *
95 * num_tables ::
96 * The number of tables in file.
97 *
98 * search_range ::
99 * Must be '16 * (max power of 2 <= num_tables)'.
100 *
101 * entry_selector ::
102 * Must be log2 of 'search_range / 16'.
103 *
104 * range_shift ::
105 * Must be 'num_tables * 16 - search_range'.
106 */
107 typedef struct SFNT_HeaderRec_
108 {
114
115 FT_ULong offset; /* not in file */
116
118
119
120 /**************************************************************************
121 *
122 * @struct:
123 * TT_TableRec
124 *
125 * @description:
126 * This structure describes a given table of a TrueType font.
127 *
128 * @fields:
129 * Tag ::
130 * A four-bytes tag describing the table.
131 *
132 * CheckSum ::
133 * The table checksum. This value can be ignored.
134 *
135 * Offset ::
136 * The offset of the table from the start of the TrueType font in its
137 * resource.
138 *
139 * Length ::
140 * The table length (in bytes).
141 */
142 typedef struct TT_TableRec_
143 {
144 FT_ULong Tag; /* table type */
145 FT_ULong CheckSum; /* table checksum */
146 FT_ULong Offset; /* table file offset */
147 FT_ULong Length; /* table length */
148
150
151
152 /**************************************************************************
153 *
154 * @struct:
155 * TT_LongMetricsRec
156 *
157 * @description:
158 * A structure modeling the long metrics of the 'hmtx' and 'vmtx'
159 * TrueType tables. The values are expressed in font units.
160 *
161 * @fields:
162 * advance ::
163 * The advance width or height for the glyph.
164 *
165 * bearing ::
166 * The left-side or top-side bearing for the glyph.
167 */
168 typedef struct TT_LongMetricsRec_
169 {
172
174
175
176 /**************************************************************************
177 *
178 * @type:
179 * TT_ShortMetrics
180 *
181 * @description:
182 * A simple type to model the short metrics of the 'hmtx' and 'vmtx'
183 * tables.
184 */
186
187
188 /**************************************************************************
189 *
190 * @struct:
191 * TT_NameRec
192 *
193 * @description:
194 * A structure modeling TrueType name records. Name records are used to
195 * store important strings like family name, style name, copyright,
196 * etc. in _localized_ versions (i.e., language, encoding, etc).
197 *
198 * @fields:
199 * platformID ::
200 * The ID of the name's encoding platform.
201 *
202 * encodingID ::
203 * The platform-specific ID for the name's encoding.
204 *
205 * languageID ::
206 * The platform-specific ID for the name's language.
207 *
208 * nameID ::
209 * The ID specifying what kind of name this is.
210 *
211 * stringLength ::
212 * The length of the string in bytes.
213 *
214 * stringOffset ::
215 * The offset to the string in the 'name' table.
216 *
217 * string ::
218 * A pointer to the string's bytes. Note that these are usually UTF-16
219 * encoded characters.
220 */
221 typedef struct TT_NameRec_
222 {
229
230 /* this last field is not defined in the spec */
231 /* but used by the FreeType engine */
232
234
236
237
238 /**************************************************************************
239 *
240 * @struct:
241 * TT_LangTagRec
242 *
243 * @description:
244 * A structure modeling language tag records in SFNT 'name' tables,
245 * introduced in OpenType version 1.6.
246 *
247 * @fields:
248 * stringLength ::
249 * The length of the string in bytes.
250 *
251 * stringOffset ::
252 * The offset to the string in the 'name' table.
253 *
254 * string ::
255 * A pointer to the string's bytes. Note that these are UTF-16BE
256 * encoded characters.
257 */
258 typedef struct TT_LangTagRec_
259 {
262
263 /* this last field is not defined in the spec */
264 /* but used by the FreeType engine */
265
267
269
270
271 /**************************************************************************
272 *
273 * @struct:
274 * TT_NameTableRec
275 *
276 * @description:
277 * A structure modeling the TrueType name table.
278 *
279 * @fields:
280 * format ::
281 * The format of the name table.
282 *
283 * numNameRecords ::
284 * The number of names in table.
285 *
286 * storageOffset ::
287 * The offset of the name table in the 'name' TrueType table.
288 *
289 * names ::
290 * An array of name records.
291 *
292 * numLangTagRecords ::
293 * The number of language tags in table.
294 *
295 * langTags ::
296 * An array of language tag records.
297 *
298 * stream ::
299 * The file's input stream.
300 */
301 typedef struct TT_NameTableRec_
302 {
310
312
313
314 /*************************************************************************/
315 /*************************************************************************/
316 /*************************************************************************/
317 /*** ***/
318 /*** ***/
319 /*** OPTIONAL TRUETYPE/OPENTYPE TABLES DEFINITIONS ***/
320 /*** ***/
321 /*** ***/
322 /*************************************************************************/
323 /*************************************************************************/
324 /*************************************************************************/
325
326
327 /**************************************************************************
328 *
329 * @struct:
330 * TT_GaspRangeRec
331 *
332 * @description:
333 * A tiny structure used to model a gasp range according to the TrueType
334 * specification.
335 *
336 * @fields:
337 * maxPPEM ::
338 * The maximum ppem value to which `gaspFlag` applies.
339 *
340 * gaspFlag ::
341 * A flag describing the grid-fitting and anti-aliasing modes to be
342 * used.
343 */
344 typedef struct TT_GaspRangeRec_
345 {
348
350
351
352#define TT_GASP_GRIDFIT 0x01
353#define TT_GASP_DOGRAY 0x02
354
355
356 /**************************************************************************
357 *
358 * @struct:
359 * TT_GaspRec
360 *
361 * @description:
362 * A structure modeling the TrueType 'gasp' table used to specify
363 * grid-fitting and anti-aliasing behaviour.
364 *
365 * @fields:
366 * version ::
367 * The version number.
368 *
369 * numRanges ::
370 * The number of gasp ranges in table.
371 *
372 * gaspRanges ::
373 * An array of gasp ranges.
374 */
375 typedef struct TT_Gasp_
376 {
380
382
383
384 /*************************************************************************/
385 /*************************************************************************/
386 /*************************************************************************/
387 /*** ***/
388 /*** ***/
389 /*** EMBEDDED BITMAPS SUPPORT ***/
390 /*** ***/
391 /*** ***/
392 /*************************************************************************/
393 /*************************************************************************/
394 /*************************************************************************/
395
396
397 /**************************************************************************
398 *
399 * @struct:
400 * TT_SBit_MetricsRec
401 *
402 * @description:
403 * A structure used to hold the big metrics of a given glyph bitmap in a
404 * TrueType or OpenType font. These are usually found in the 'EBDT'
405 * (Microsoft) or 'bloc' (Apple) table.
406 *
407 * @fields:
408 * height ::
409 * The glyph height in pixels.
410 *
411 * width ::
412 * The glyph width in pixels.
413 *
414 * horiBearingX ::
415 * The horizontal left bearing.
416 *
417 * horiBearingY ::
418 * The horizontal top bearing.
419 *
420 * horiAdvance ::
421 * The horizontal advance.
422 *
423 * vertBearingX ::
424 * The vertical left bearing.
425 *
426 * vertBearingY ::
427 * The vertical top bearing.
428 *
429 * vertAdvance ::
430 * The vertical advance.
431 */
432 typedef struct TT_SBit_MetricsRec_
433 {
436
440
444
446
447
448 /**************************************************************************
449 *
450 * @struct:
451 * TT_SBit_SmallMetricsRec
452 *
453 * @description:
454 * A structure used to hold the small metrics of a given glyph bitmap in
455 * a TrueType or OpenType font. These are usually found in the 'EBDT'
456 * (Microsoft) or the 'bdat' (Apple) table.
457 *
458 * @fields:
459 * height ::
460 * The glyph height in pixels.
461 *
462 * width ::
463 * The glyph width in pixels.
464 *
465 * bearingX ::
466 * The left-side bearing.
467 *
468 * bearingY ::
469 * The top-side bearing.
470 *
471 * advance ::
472 * The advance width or height.
473 */
475 {
478
482
484
485
486 /**************************************************************************
487 *
488 * @struct:
489 * TT_SBit_LineMetricsRec
490 *
491 * @description:
492 * A structure used to describe the text line metrics of a given bitmap
493 * strike, for either a horizontal or vertical layout.
494 *
495 * @fields:
496 * ascender ::
497 * The ascender in pixels.
498 *
499 * descender ::
500 * The descender in pixels.
501 *
502 * max_width ::
503 * The maximum glyph width in pixels.
504 *
505 * caret_slope_enumerator ::
506 * Rise of the caret slope, typically set to 1 for non-italic fonts.
507 *
508 * caret_slope_denominator ::
509 * Rise of the caret slope, typically set to 0 for non-italic fonts.
510 *
511 * caret_offset ::
512 * Offset in pixels to move the caret for proper positioning.
513 *
514 * min_origin_SB ::
515 * Minimum of horiBearingX (resp. vertBearingY).
516 * min_advance_SB ::
517 * Minimum of
518 *
519 * horizontal advance - ( horiBearingX + width )
520 *
521 * resp.
522 *
523 * vertical advance - ( vertBearingY + height )
524 *
525 * max_before_BL ::
526 * Maximum of horiBearingY (resp. vertBearingY).
527 *
528 * min_after_BL ::
529 * Minimum of
530 *
531 * horiBearingY - height
532 *
533 * resp.
534 *
535 * vertBearingX - width
536 *
537 * pads ::
538 * Unused (to make the size of the record a multiple of 32 bits.
539 */
541 {
553
555
556
557 /**************************************************************************
558 *
559 * @struct:
560 * TT_SBit_RangeRec
561 *
562 * @description:
563 * A TrueType/OpenType subIndexTable as defined in the 'EBLC' (Microsoft)
564 * or 'bloc' (Apple) tables.
565 *
566 * @fields:
567 * first_glyph ::
568 * The first glyph index in the range.
569 *
570 * last_glyph ::
571 * The last glyph index in the range.
572 *
573 * index_format ::
574 * The format of index table. Valid values are 1 to 5.
575 *
576 * image_format ::
577 * The format of 'EBDT' image data.
578 *
579 * image_offset ::
580 * The offset to image data in 'EBDT'.
581 *
582 * image_size ::
583 * For index formats 2 and 5. This is the size in bytes of each glyph
584 * bitmap.
585 *
586 * big_metrics ::
587 * For index formats 2 and 5. This is the big metrics for each glyph
588 * bitmap.
589 *
590 * num_glyphs ::
591 * For index formats 4 and 5. This is the number of glyphs in the code
592 * array.
593 *
594 * glyph_offsets ::
595 * For index formats 1 and 3.
596 *
597 * glyph_codes ::
598 * For index formats 4 and 5.
599 *
600 * table_offset ::
601 * The offset of the index table in the 'EBLC' table. Only used during
602 * strike loading.
603 */
604 typedef struct TT_SBit_RangeRec_
605 {
608
612
616
619
621
623
624
625 /**************************************************************************
626 *
627 * @struct:
628 * TT_SBit_StrikeRec
629 *
630 * @description:
631 * A structure used describe a given bitmap strike in the 'EBLC'
632 * (Microsoft) or 'bloc' (Apple) tables.
633 *
634 * @fields:
635 * num_index_ranges ::
636 * The number of index ranges.
637 *
638 * index_ranges ::
639 * An array of glyph index ranges.
640 *
641 * color_ref ::
642 * Unused. `color_ref` is put in for future enhancements, but these
643 * fields are already in use by other platforms (e.g. Newton). For
644 * details, please see
645 *
646 * https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6bloc.html
647 *
648 * hori ::
649 * The line metrics for horizontal layouts.
650 *
651 * vert ::
652 * The line metrics for vertical layouts.
653 *
654 * start_glyph ::
655 * The lowest glyph index for this strike.
656 *
657 * end_glyph ::
658 * The highest glyph index for this strike.
659 *
660 * x_ppem ::
661 * The number of horizontal pixels per EM.
662 *
663 * y_ppem ::
664 * The number of vertical pixels per EM.
665 *
666 * bit_depth ::
667 * The bit depth. Valid values are 1, 2, 4, and 8.
668 *
669 * flags ::
670 * Is this a vertical or horizontal strike? For details, please see
671 *
672 * https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6bloc.html
673 */
674 typedef struct TT_SBit_StrikeRec_
675 {
679
681
684
687
690
693
695
696
697 /**************************************************************************
698 *
699 * @struct:
700 * TT_SBit_ComponentRec
701 *
702 * @description:
703 * A simple structure to describe a compound sbit element.
704 *
705 * @fields:
706 * glyph_code ::
707 * The element's glyph index.
708 *
709 * x_offset ::
710 * The element's left bearing.
711 *
712 * y_offset ::
713 * The element's top bearing.
714 */
716 {
720
722
723
724 /**************************************************************************
725 *
726 * @struct:
727 * TT_SBit_ScaleRec
728 *
729 * @description:
730 * A structure used describe a given bitmap scaling table, as defined in
731 * the 'EBSC' table.
732 *
733 * @fields:
734 * hori ::
735 * The horizontal line metrics.
736 *
737 * vert ::
738 * The vertical line metrics.
739 *
740 * x_ppem ::
741 * The number of horizontal pixels per EM.
742 *
743 * y_ppem ::
744 * The number of vertical pixels per EM.
745 *
746 * x_ppem_substitute ::
747 * Substitution x_ppem value.
748 *
749 * y_ppem_substitute ::
750 * Substitution y_ppem value.
751 */
752 typedef struct TT_SBit_ScaleRec_
753 {
756
759
762
764
765
766 /*************************************************************************/
767 /*************************************************************************/
768 /*************************************************************************/
769 /*** ***/
770 /*** ***/
771 /*** POSTSCRIPT GLYPH NAMES SUPPORT ***/
772 /*** ***/
773 /*** ***/
774 /*************************************************************************/
775 /*************************************************************************/
776 /*************************************************************************/
777
778
779 /**************************************************************************
780 *
781 * @struct:
782 * TT_Post_20Rec
783 *
784 * @description:
785 * Postscript names sub-table, format 2.0. Stores the PS name of each
786 * glyph in the font face.
787 *
788 * @fields:
789 * num_glyphs ::
790 * The number of named glyphs in the table.
791 *
792 * num_names ::
793 * The number of PS names stored in the table.
794 *
795 * glyph_indices ::
796 * The indices of the glyphs in the names arrays.
797 *
798 * glyph_names ::
799 * The PS names not in Mac Encoding.
800 */
801 typedef struct TT_Post_20Rec_
802 {
807
809
810
811 /**************************************************************************
812 *
813 * @struct:
814 * TT_Post_25Rec
815 *
816 * @description:
817 * Postscript names sub-table, format 2.5. Stores the PS name of each
818 * glyph in the font face.
819 *
820 * @fields:
821 * num_glyphs ::
822 * The number of glyphs in the table.
823 *
824 * offsets ::
825 * An array of signed offsets in a normal Mac Postscript name encoding.
826 */
827 typedef struct TT_Post_25_
828 {
831
833
834
835 /**************************************************************************
836 *
837 * @struct:
838 * TT_Post_NamesRec
839 *
840 * @description:
841 * Postscript names table, either format 2.0 or 2.5.
842 *
843 * @fields:
844 * loaded ::
845 * A flag to indicate whether the PS names are loaded.
846 *
847 * format_20 ::
848 * The sub-table used for format 2.0.
849 *
850 * format_25 ::
851 * The sub-table used for format 2.5.
852 */
853 typedef struct TT_Post_NamesRec_
854 {
856
857 union
858 {
861
863
865
866
867 /*************************************************************************/
868 /*************************************************************************/
869 /*************************************************************************/
870 /*** ***/
871 /*** ***/
872 /*** GX VARIATION TABLE SUPPORT ***/
873 /*** ***/
874 /*** ***/
875 /*************************************************************************/
876 /*************************************************************************/
877 /*************************************************************************/
878
879
880#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
881 typedef struct GX_BlendRec_ *GX_Blend;
882#endif
883
884 /*************************************************************************/
885 /*************************************************************************/
886 /*************************************************************************/
887 /*** ***/
888 /*** ***/
889 /*** EMBEDDED BDF PROPERTIES TABLE SUPPORT ***/
890 /*** ***/
891 /*** ***/
892 /*************************************************************************/
893 /*************************************************************************/
894 /*************************************************************************/
895
896 /*
897 * These types are used to support a `BDF ' table that isn't part of the
898 * official TrueType specification. It is mainly used in SFNT-based bitmap
899 * fonts that were generated from a set of BDF fonts.
900 *
901 * The format of the table is as follows.
902 *
903 * USHORT version `BDF ' table version number, should be 0x0001. USHORT
904 * strikeCount Number of strikes (bitmap sizes) in this table. ULONG
905 * stringTable Offset (from start of BDF table) to string
906 * table.
907 *
908 * This is followed by an array of `strikeCount' descriptors, having the
909 * following format.
910 *
911 * USHORT ppem Vertical pixels per EM for this strike. USHORT numItems
912 * Number of items for this strike (properties and
913 * atoms). Maximum is 255.
914 *
915 * This array in turn is followed by `strikeCount' value sets. Each `value
916 * set' is an array of `numItems' items with the following format.
917 *
918 * ULONG item_name Offset in string table to item name.
919 * USHORT item_type The item type. Possible values are
920 * 0 => string (e.g., COMMENT)
921 * 1 => atom (e.g., FONT or even SIZE)
922 * 2 => int32
923 * 3 => uint32
924 * 0x10 => A flag to indicate a properties. This
925 * is ORed with the above values.
926 * ULONG item_value For strings => Offset into string table without
927 * the corresponding double quotes.
928 * For atoms => Offset into string table.
929 * For integers => Direct value.
930 *
931 * All strings in the string table consist of bytes and are
932 * zero-terminated.
933 *
934 */
935
936#ifdef TT_CONFIG_OPTION_BDF
937
938 typedef struct TT_BDFRec_
939 {
940 FT_Byte* table;
941 FT_Byte* table_end;
943 FT_ULong strings_size;
944 FT_UInt num_strikes;
946
947 } TT_BDFRec, *TT_BDF;
948
949#endif /* TT_CONFIG_OPTION_BDF */
950
951 /*************************************************************************/
952 /*************************************************************************/
953 /*************************************************************************/
954 /*** ***/
955 /*** ***/
956 /*** ORIGINAL TT_FACE CLASS DEFINITION ***/
957 /*** ***/
958 /*** ***/
959 /*************************************************************************/
960 /*************************************************************************/
961 /*************************************************************************/
962
963
964 /**************************************************************************
965 *
966 * This structure/class is defined here because it is common to the
967 * following formats: TTF, OpenType-TT, and OpenType-CFF.
968 *
969 * Note, however, that the classes TT_Size and TT_GlyphSlot are not shared
970 * between font drivers, and are thus defined in `ttobjs.h`.
971 *
972 */
973
974
975 /**************************************************************************
976 *
977 * @type:
978 * TT_Face
979 *
980 * @description:
981 * A handle to a TrueType face/font object. A TT_Face encapsulates the
982 * resolution and scaling independent parts of a TrueType font resource.
983 *
984 * @note:
985 * The TT_Face structure is also used as a 'parent class' for the
986 * OpenType-CFF class (T2_Face).
987 */
988 typedef struct TT_FaceRec_* TT_Face;
989
990
991 /* a function type used for the truetype bytecode interpreter hooks */
992 typedef FT_Error
993 (*TT_Interpreter)( void* exec_context );
994
995 /* forward declaration */
996 typedef struct TT_LoaderRec_* TT_Loader;
997
998
999 /**************************************************************************
1000 *
1001 * @functype:
1002 * TT_Loader_GotoTableFunc
1003 *
1004 * @description:
1005 * Seeks a stream to the start of a given TrueType table.
1006 *
1007 * @input:
1008 * face ::
1009 * A handle to the target face object.
1010 *
1011 * tag ::
1012 * A 4-byte tag used to name the table.
1013 *
1014 * stream ::
1015 * The input stream.
1016 *
1017 * @output:
1018 * length ::
1019 * The length of the table in bytes. Set to 0 if not needed.
1020 *
1021 * @return:
1022 * FreeType error code. 0 means success.
1023 *
1024 * @note:
1025 * The stream cursor must be at the font file's origin.
1026 */
1027 typedef FT_Error
1029 FT_ULong tag,
1031 FT_ULong* length );
1032
1033
1034 /**************************************************************************
1035 *
1036 * @functype:
1037 * TT_Loader_StartGlyphFunc
1038 *
1039 * @description:
1040 * Seeks a stream to the start of a given glyph element, and opens a
1041 * frame for it.
1042 *
1043 * @input:
1044 * loader ::
1045 * The current TrueType glyph loader object.
1046 *
1047 * glyph index :: The index of the glyph to access.
1048 *
1049 * offset ::
1050 * The offset of the glyph according to the 'locations' table.
1051 *
1052 * byte_count ::
1053 * The size of the frame in bytes.
1054 *
1055 * @return:
1056 * FreeType error code. 0 means success.
1057 *
1058 * @note:
1059 * This function is normally equivalent to FT_STREAM_SEEK(offset)
1060 * followed by FT_FRAME_ENTER(byte_count) with the loader's stream, but
1061 * alternative formats (e.g. compressed ones) might use something
1062 * different.
1063 */
1064 typedef FT_Error
1068 FT_UInt byte_count );
1069
1070
1071 /**************************************************************************
1072 *
1073 * @functype:
1074 * TT_Loader_ReadGlyphFunc
1075 *
1076 * @description:
1077 * Reads one glyph element (its header, a simple glyph, or a composite)
1078 * from the loader's current stream frame.
1079 *
1080 * @input:
1081 * loader ::
1082 * The current TrueType glyph loader object.
1083 *
1084 * @return:
1085 * FreeType error code. 0 means success.
1086 */
1087 typedef FT_Error
1089
1090
1091 /**************************************************************************
1092 *
1093 * @functype:
1094 * TT_Loader_EndGlyphFunc
1095 *
1096 * @description:
1097 * Closes the current loader stream frame for the glyph.
1098 *
1099 * @input:
1100 * loader ::
1101 * The current TrueType glyph loader object.
1102 */
1103 typedef void
1104 (*TT_Loader_EndGlyphFunc)( TT_Loader loader );
1105
1106
1108 {
1110 TT_SBIT_TABLE_TYPE_EBLC, /* `EBLC' (Microsoft), */
1111 /* `bloc' (Apple) */
1112 TT_SBIT_TABLE_TYPE_CBLC, /* `CBLC' (Google) */
1113 TT_SBIT_TABLE_TYPE_SBIX, /* `sbix' (Apple) */
1114
1115 /* do not remove */
1117
1119
1120
1121 /* OpenType 1.8 brings new tables for variation font support; */
1122 /* to make the old MM and GX fonts still work we need to check */
1123 /* the presence (and validity) of the functionality provided */
1124 /* by those tables. The following flag macros are for the */
1125 /* field `variation_support'. */
1126 /* */
1127 /* Note that `fvar' gets checked immediately at font loading, */
1128 /* while the other features are only loaded if MM support is */
1129 /* actually requested. */
1130
1131 /* FVAR */
1132#define TT_FACE_FLAG_VAR_FVAR ( 1 << 0 )
1133
1134 /* HVAR */
1135#define TT_FACE_FLAG_VAR_HADVANCE ( 1 << 1 )
1136#define TT_FACE_FLAG_VAR_LSB ( 1 << 2 )
1137#define TT_FACE_FLAG_VAR_RSB ( 1 << 3 )
1138
1139 /* VVAR */
1140#define TT_FACE_FLAG_VAR_VADVANCE ( 1 << 4 )
1141#define TT_FACE_FLAG_VAR_TSB ( 1 << 5 )
1142#define TT_FACE_FLAG_VAR_BSB ( 1 << 6 )
1143#define TT_FACE_FLAG_VAR_VORG ( 1 << 7 )
1144
1145 /* MVAR */
1146#define TT_FACE_FLAG_VAR_MVAR ( 1 << 8 )
1147
1148
1149 /**************************************************************************
1150 *
1151 * TrueType Face Type
1152 *
1153 * @struct:
1154 * TT_Face
1155 *
1156 * @description:
1157 * The TrueType face class. These objects model the resolution and
1158 * point-size independent data found in a TrueType font file.
1159 *
1160 * @fields:
1161 * root ::
1162 * The base FT_Face structure, managed by the base layer.
1163 *
1164 * ttc_header ::
1165 * The TrueType collection header, used when the file is a 'ttc' rather
1166 * than a 'ttf'. For ordinary font files, the field `ttc_header.count`
1167 * is set to 0.
1168 *
1169 * format_tag ::
1170 * The font format tag.
1171 *
1172 * num_tables ::
1173 * The number of TrueType tables in this font file.
1174 *
1175 * dir_tables ::
1176 * The directory of TrueType tables for this font file.
1177 *
1178 * header ::
1179 * The font's font header ('head' table). Read on font opening.
1180 *
1181 * horizontal ::
1182 * The font's horizontal header ('hhea' table). This field also
1183 * contains the associated horizontal metrics table ('hmtx').
1184 *
1185 * max_profile ::
1186 * The font's maximum profile table. Read on font opening. Note that
1187 * some maximum values cannot be taken directly from this table. We
1188 * thus define additional fields below to hold the computed maxima.
1189 *
1190 * vertical_info ::
1191 * A boolean which is set when the font file contains vertical metrics.
1192 * If not, the value of the 'vertical' field is undefined.
1193 *
1194 * vertical ::
1195 * The font's vertical header ('vhea' table). This field also contains
1196 * the associated vertical metrics table ('vmtx'), if found.
1197 * IMPORTANT: The contents of this field is undefined if the
1198 * `vertical_info` field is unset.
1199 *
1200 * num_names ::
1201 * The number of name records within this TrueType font.
1202 *
1203 * name_table ::
1204 * The table of name records ('name').
1205 *
1206 * os2 ::
1207 * The font's OS/2 table ('OS/2').
1208 *
1209 * postscript ::
1210 * The font's PostScript table ('post' table). The PostScript glyph
1211 * names are not loaded by the driver on face opening. See the
1212 * 'ttpost' module for more details.
1213 *
1214 * cmap_table ::
1215 * Address of the face's 'cmap' SFNT table in memory (it's an extracted
1216 * frame).
1217 *
1218 * cmap_size ::
1219 * The size in bytes of the `cmap_table` described above.
1220 *
1221 * goto_table ::
1222 * A function called by each TrueType table loader to position a
1223 * stream's cursor to the start of a given table according to its tag.
1224 * It defaults to TT_Goto_Face but can be different for strange formats
1225 * (e.g. Type 42).
1226 *
1227 * access_glyph_frame ::
1228 * A function used to access the frame of a given glyph within the
1229 * face's font file.
1230 *
1231 * forget_glyph_frame ::
1232 * A function used to forget the frame of a given glyph when all data
1233 * has been loaded.
1234 *
1235 * read_glyph_header ::
1236 * A function used to read a glyph header. It must be called between
1237 * an 'access' and 'forget'.
1238 *
1239 * read_simple_glyph ::
1240 * A function used to read a simple glyph. It must be called after the
1241 * header was read, and before the 'forget'.
1242 *
1243 * read_composite_glyph ::
1244 * A function used to read a composite glyph. It must be called after
1245 * the header was read, and before the 'forget'.
1246 *
1247 * sfnt ::
1248 * A pointer to the SFNT service.
1249 *
1250 * psnames ::
1251 * A pointer to the PostScript names service.
1252 *
1253 * mm ::
1254 * A pointer to the Multiple Masters service.
1255 *
1256 * var ::
1257 * A pointer to the Metrics Variations service.
1258 *
1259 * hdmx ::
1260 * The face's horizontal device metrics ('hdmx' table). This table is
1261 * optional in TrueType/OpenType fonts.
1262 *
1263 * gasp ::
1264 * The grid-fitting and scaling properties table ('gasp'). This table
1265 * is optional in TrueType/OpenType fonts.
1266 *
1267 * pclt ::
1268 * The 'pclt' SFNT table.
1269 *
1270 * num_sbit_scales ::
1271 * The number of sbit scales for this font.
1272 *
1273 * sbit_scales ::
1274 * Array of sbit scales embedded in this font. This table is optional
1275 * in a TrueType/OpenType font.
1276 *
1277 * postscript_names ::
1278 * A table used to store the Postscript names of the glyphs for this
1279 * font. See the file `ttconfig.h` for comments on the
1280 * TT_CONFIG_OPTION_POSTSCRIPT_NAMES option.
1281 *
1282 * palette_data ::
1283 * Some fields from the 'CPAL' table that are directly indexed.
1284 *
1285 * palette_index ::
1286 * The current palette index, as set by @FT_Palette_Select.
1287 *
1288 * palette ::
1289 * An array containing the current palette's colors.
1290 *
1291 * have_foreground_color ::
1292 * There was a call to @FT_Palette_Set_Foreground_Color.
1293 *
1294 * foreground_color ::
1295 * The current foreground color corresponding to 'CPAL' color index
1296 * 0xFFFF. Only valid if `have_foreground_color` is set.
1297 *
1298 * font_program_size ::
1299 * Size in bytecodes of the face's font program. 0 if none defined.
1300 * Ignored for Type 2 fonts.
1301 *
1302 * font_program ::
1303 * The face's font program (bytecode stream) executed at load time,
1304 * also used during glyph rendering. Comes from the 'fpgm' table.
1305 * Ignored for Type 2 font fonts.
1306 *
1307 * cvt_program_size ::
1308 * The size in bytecodes of the face's cvt program. Ignored for Type 2
1309 * fonts.
1310 *
1311 * cvt_program ::
1312 * The face's cvt program (bytecode stream) executed each time an
1313 * instance/size is changed/reset. Comes from the 'prep' table.
1314 * Ignored for Type 2 fonts.
1315 *
1316 * cvt_size ::
1317 * Size of the control value table (in entries). Ignored for Type 2
1318 * fonts.
1319 *
1320 * cvt ::
1321 * The face's original control value table. Coordinates are expressed
1322 * in unscaled font units (in 26.6 format). Comes from the 'cvt~'
1323 * table. Ignored for Type 2 fonts.
1324 *
1325 * If varied by the `CVAR' table, non-integer values are possible.
1326 *
1327 * interpreter ::
1328 * A pointer to the TrueType bytecode interpreters field is also used
1329 * to hook the debugger in 'ttdebug'.
1330 *
1331 * extra ::
1332 * Reserved for third-party font drivers.
1333 *
1334 * postscript_name ::
1335 * The PS name of the font. Used by the postscript name service.
1336 *
1337 * glyf_len ::
1338 * The length of the 'glyf' table. Needed for malformed 'loca' tables.
1339 *
1340 * glyf_offset ::
1341 * The file offset of the 'glyf' table.
1342 *
1343 * is_cff2 ::
1344 * Set if the font format is CFF2.
1345 *
1346 * doblend ::
1347 * A boolean which is set if the font should be blended (this is for GX
1348 * var).
1349 *
1350 * blend ::
1351 * Contains the data needed to control GX variation tables (rather like
1352 * Multiple Master data).
1353 *
1354 * variation_support ::
1355 * Flags that indicate which OpenType functionality related to font
1356 * variation support is present, valid, and usable. For example,
1357 * TT_FACE_FLAG_VAR_FVAR is only set if we have at least one design
1358 * axis.
1359 *
1360 * var_postscript_prefix ::
1361 * The PostScript name prefix needed for constructing a variation font
1362 * instance's PS name .
1363 *
1364 * var_postscript_prefix_len ::
1365 * The length of the `var_postscript_prefix` string.
1366 *
1367 * horz_metrics_size ::
1368 * The size of the 'hmtx' table.
1369 *
1370 * vert_metrics_size ::
1371 * The size of the 'vmtx' table.
1372 *
1373 * num_locations ::
1374 * The number of glyph locations in this TrueType file. This should be
1375 * identical to the number of glyphs. Ignored for Type 2 fonts.
1376 *
1377 * glyph_locations ::
1378 * An array of longs. These are offsets to glyph data within the
1379 * 'glyf' table. Ignored for Type 2 font faces.
1380 *
1381 * hdmx_table ::
1382 * A pointer to the 'hdmx' table.
1383 *
1384 * hdmx_table_size ::
1385 * The size of the 'hdmx' table.
1386 *
1387 * hdmx_record_count ::
1388 * The number of hdmx records.
1389 *
1390 * hdmx_record_size ::
1391 * The size of a single hdmx record.
1392 *
1393 * hdmx_record_sizes ::
1394 * An array holding the ppem sizes available in the 'hdmx' table.
1395 *
1396 * sbit_table ::
1397 * A pointer to the font's embedded bitmap location table.
1398 *
1399 * sbit_table_size ::
1400 * The size of `sbit_table`.
1401 *
1402 * sbit_table_type ::
1403 * The sbit table type (CBLC, sbix, etc.).
1404 *
1405 * sbit_num_strikes ::
1406 * The number of sbit strikes exposed by FreeType's API, omitting
1407 * invalid strikes.
1408 *
1409 * sbit_strike_map ::
1410 * A mapping between the strike indices exposed by the API and the
1411 * indices used in the font's sbit table.
1412 *
1413 * cpal ::
1414 * A pointer to data related to the 'CPAL' table. `NULL` if the table
1415 * is not available.
1416 *
1417 * colr ::
1418 * A pointer to data related to the 'COLR' table. `NULL` if the table
1419 * is not available.
1420 *
1421 * kern_table ::
1422 * A pointer to the 'kern' table.
1423 *
1424 * kern_table_size ::
1425 * The size of the 'kern' table.
1426 *
1427 * num_kern_tables ::
1428 * The number of supported kern subtables (up to 32; FreeType
1429 * recognizes only horizontal ones with format 0).
1430 *
1431 * kern_avail_bits ::
1432 * The availability status of kern subtables; if bit n is set, table n
1433 * is available.
1434 *
1435 * kern_order_bits ::
1436 * The sortedness status of kern subtables; if bit n is set, table n is
1437 * sorted.
1438 *
1439 * bdf ::
1440 * Data related to an SFNT font's 'bdf' table; see `tttypes.h`.
1441 *
1442 * horz_metrics_offset ::
1443 * The file offset of the 'hmtx' table.
1444 *
1445 * vert_metrics_offset ::
1446 * The file offset of the 'vmtx' table.
1447 *
1448 * sph_found_func_flags ::
1449 * Flags identifying special bytecode functions (used by the v38
1450 * implementation of the bytecode interpreter).
1451 *
1452 * sph_compatibility_mode ::
1453 * This flag is set if we are in ClearType backward compatibility mode
1454 * (used by the v38 implementation of the bytecode interpreter).
1455 *
1456 * ebdt_start ::
1457 * The file offset of the sbit data table (CBDT, bdat, etc.).
1458 *
1459 * ebdt_size ::
1460 * The size of the sbit data table.
1461 */
1462 typedef struct TT_FaceRec_
1463 {
1465
1467
1471
1472 TT_Header header; /* TrueType header table */
1473 TT_HoriHeader horizontal; /* TrueType horizontal header */
1474
1476
1478 TT_VertHeader vertical; /* TT Vertical header, if present */
1479
1480 FT_UShort num_names; /* number of name records */
1481 TT_NameTableRec name_table; /* name table */
1482
1483 TT_OS2 os2; /* TrueType OS/2 table */
1484 TT_Postscript postscript; /* TrueType Postscript table */
1485
1486 FT_Byte* cmap_table; /* extracted `cmap' table */
1488
1490
1496
1497 /* a typeless pointer to the SFNT_Interface table used to load */
1498 /* the basic TrueType tables in the face object */
1499 void* sfnt;
1500
1501 /* a typeless pointer to the FT_Service_PsCMapsRec table used to */
1502 /* handle glyph names <-> unicode & Mac values */
1503 void* psnames;
1504
1505#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
1506 /* a typeless pointer to the FT_Service_MultiMasters table used to */
1507 /* handle variation fonts */
1508 void* mm;
1509
1510 /* a typeless pointer to the FT_Service_MetricsVariationsRec table */
1511 /* used to handle the HVAR, VVAR, and MVAR OpenType tables */
1512 void* var;
1513#endif
1514
1515 /* a typeless pointer to the PostScript Aux service */
1516 void* psaux;
1517
1518
1519 /************************************************************************
1520 *
1521 * Optional TrueType/OpenType tables
1522 *
1523 */
1524
1525 /* grid-fitting and scaling table */
1526 TT_GaspRec gasp; /* the `gasp' table */
1527
1528 /* PCL 5 table */
1530
1531 /* embedded bitmaps support */
1534
1535 /* postscript names table */
1537
1538 /* glyph colors */
1544
1545
1546 /************************************************************************
1547 *
1548 * TrueType-specific fields (ignored by the CFF driver)
1549 *
1550 */
1551
1552 /* the font program, if any */
1555
1556 /* the cvt program, if any */
1559
1560 /* the original, unscaled, control value table */
1562 FT_Int32* cvt;
1563
1564 /* A pointer to the bytecode interpreter to use. This is also */
1565 /* used to hook the debugger for the `ttdebug' utility. */
1567
1568
1569 /************************************************************************
1570 *
1571 * Other tables or fields. This is used by derivative formats like
1572 * OpenType.
1573 *
1574 */
1575
1577
1578 const char* postscript_name;
1579
1581 FT_ULong glyf_offset; /* since 2.7.1 */
1582
1583 FT_Bool is_cff2; /* since 2.7.1 */
1584
1585#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
1586 FT_Bool doblend;
1587 GX_Blend blend;
1588
1589 FT_UInt32 variation_support; /* since 2.7.1 */
1590
1591 const char* var_postscript_prefix; /* since 2.7.2 */
1592 FT_UInt var_postscript_prefix_len; /* since 2.7.2 */
1593
1594#endif
1595
1596 /* since version 2.2 */
1597
1600
1601 FT_ULong num_locations; /* in broken TTF, gid > 0xFFFF */
1603
1609
1615
1621
1622#ifdef TT_CONFIG_OPTION_BDF
1623 TT_BDFRec bdf;
1624#endif /* TT_CONFIG_OPTION_BDF */
1625
1626 /* since 2.3.0 */
1629
1630#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
1631 /* since 2.4.12 */
1632 FT_ULong sph_found_func_flags; /* special functions found */
1633 /* for this face */
1634 FT_Bool sph_compatibility_mode;
1635#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */
1636
1637#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
1638 /* since 2.7 */
1639 FT_ULong ebdt_start; /* either `CBDT', `EBDT', or `bdat' */
1640 FT_ULong ebdt_size;
1641#endif
1642
1643 /* since 2.10 */
1644 void* cpal;
1645 void* colr;
1646
1648
1649
1650 /**************************************************************************
1651 *
1652 * @struct:
1653 * TT_GlyphZoneRec
1654 *
1655 * @description:
1656 * A glyph zone is used to load, scale and hint glyph outline
1657 * coordinates.
1658 *
1659 * @fields:
1660 * memory ::
1661 * A handle to the memory manager.
1662 *
1663 * max_points ::
1664 * The maximum size in points of the zone.
1665 *
1666 * max_contours ::
1667 * Max size in links contours of the zone.
1668 *
1669 * n_points ::
1670 * The current number of points in the zone.
1671 *
1672 * n_contours ::
1673 * The current number of contours in the zone.
1674 *
1675 * org ::
1676 * The original glyph coordinates (font units/scaled).
1677 *
1678 * cur ::
1679 * The current glyph coordinates (scaled/hinted).
1680 *
1681 * tags ::
1682 * The point control tags.
1683 *
1684 * contours ::
1685 * The contours end points.
1686 *
1687 * first_point ::
1688 * Offset of the current subglyph's first point.
1689 */
1690 typedef struct TT_GlyphZoneRec_
1691 {
1695 FT_UShort n_points; /* number of points in zone */
1696 FT_Short n_contours; /* number of contours */
1697
1698 FT_Vector* org; /* original point coordinates */
1699 FT_Vector* cur; /* current point coordinates */
1700 FT_Vector* orus; /* original (unscaled) point coordinates */
1701
1702 FT_Byte* tags; /* current touch flags */
1703 FT_UShort* contours; /* contour end points */
1704
1705 FT_UShort first_point; /* offset of first (#0) point */
1706
1708
1709
1710 /* handle to execution context */
1712
1713
1714 /**************************************************************************
1715 *
1716 * @type:
1717 * TT_Size
1718 *
1719 * @description:
1720 * A handle to a TrueType size object.
1721 */
1722 typedef struct TT_SizeRec_* TT_Size;
1723
1724
1725 /* glyph loader structure */
1726 typedef struct TT_LoaderRec_
1727 {
1732
1735
1738
1747
1748 /* the zone where we load our glyphs */
1751
1755
1756 /* for possible extensibility in other formats */
1757 void* other;
1758
1759 /* since version 2.1.8 */
1764
1765 /* since version 2.2.1 */
1768
1769 /* since version 2.6.2 */
1771
1773
1774
1776
1777#endif /* TTTYPES_H_ */
1778
1779
1780/* END */
WORD face[3]
Definition: mesh.c:4747
FT_BEGIN_HEADER struct FT_Color_ FT_Color
#define FT_END_HEADER
Definition: ftheader.h:57
#define FT_BEGIN_HEADER
Definition: ftheader.h:37
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
Definition: ftsystem.h:64
signed char FT_Char
Definition: fttypes.h:143
FT_BEGIN_HEADER typedef unsigned char FT_Bool
Definition: fttypes.h:108
unsigned long FT_ULong
Definition: fttypes.h:253
unsigned char FT_Byte
Definition: fttypes.h:154
signed long FT_Fixed
Definition: fttypes.h:287
int FT_Error
Definition: fttypes.h:299
signed long FT_Long
Definition: fttypes.h:242
unsigned short FT_UShort
Definition: fttypes.h:209
signed short FT_Short
Definition: fttypes.h:198
unsigned int FT_UInt
Definition: fttypes.h:231
signed int FT_Int
Definition: fttypes.h:220
GLsizei const GLchar *const * strings
Definition: glext.h:7622
GLintptr offset
Definition: glext.h:5920
GLuint GLsizei GLsizei * length
Definition: glext.h:6040
const char * var
Definition: shader.c:5666
BOOL loaded
Definition: xmlview.c:54
FT_ULong offset
Definition: tttypes.h:115
FT_UShort search_range
Definition: tttypes.h:111
FT_UShort num_tables
Definition: tttypes.h:110
FT_UShort range_shift
Definition: tttypes.h:113
FT_ULong format_tag
Definition: tttypes.h:109
FT_UShort entry_selector
Definition: tttypes.h:112
FT_Long count
Definition: tttypes.h:77
FT_ULong * offsets
Definition: tttypes.h:78
FT_ULong tag
Definition: tttypes.h:75
FT_Fixed version
Definition: tttypes.h:76
void * psaux
Definition: tttypes.h:1516
TT_GaspRec gasp
Definition: tttypes.h:1526
TT_VertHeader vertical
Definition: tttypes.h:1478
FT_Byte * cmap_table
Definition: tttypes.h:1486
FT_ULong glyf_len
Definition: tttypes.h:1580
FT_UShort palette_index
Definition: tttypes.h:1540
TT_SbitTableType sbit_table_type
Definition: tttypes.h:1612
FT_Byte * glyph_locations
Definition: tttypes.h:1602
TT_SBit_Scale sbit_scales
Definition: tttypes.h:1533
TT_PCLT pclt
Definition: tttypes.h:1529
TT_MaxProfile max_profile
Definition: tttypes.h:1475
void * colr
Definition: tttypes.h:1645
FT_ULong num_locations
Definition: tttypes.h:1601
FT_ULong hdmx_table_size
Definition: tttypes.h:1605
void * cpal
Definition: tttypes.h:1644
FT_ULong vert_metrics_offset
Definition: tttypes.h:1628
TT_NameTableRec name_table
Definition: tttypes.h:1481
TT_Loader_ReadGlyphFunc read_glyph_header
Definition: tttypes.h:1493
FT_ULong hdmx_record_size
Definition: tttypes.h:1607
TT_Loader_GotoTableFunc goto_table
Definition: tttypes.h:1489
FT_Bool vertical_info
Definition: tttypes.h:1477
void * sfnt
Definition: tttypes.h:1499
FT_ULong cmap_size
Definition: tttypes.h:1487
TT_OS2 os2
Definition: tttypes.h:1483
FT_ULong num_sbit_scales
Definition: tttypes.h:1532
TT_Postscript postscript
Definition: tttypes.h:1484
FT_UInt32 kern_avail_bits
Definition: tttypes.h:1619
FT_ULong horz_metrics_offset
Definition: tttypes.h:1627
FT_Byte * cvt_program
Definition: tttypes.h:1558
FT_Byte * hdmx_table
Definition: tttypes.h:1604
TT_Loader_StartGlyphFunc access_glyph_frame
Definition: tttypes.h:1491
FT_UInt * sbit_strike_map
Definition: tttypes.h:1614
void * psnames
Definition: tttypes.h:1503
FT_Color foreground_color
Definition: tttypes.h:1543
const char * postscript_name
Definition: tttypes.h:1578
FT_Byte * font_program
Definition: tttypes.h:1554
FT_ULong cvt_size
Definition: tttypes.h:1561
FT_UInt sbit_num_strikes
Definition: tttypes.h:1613
TT_HoriHeader horizontal
Definition: tttypes.h:1473
FT_UInt32 kern_order_bits
Definition: tttypes.h:1620
FT_ULong horz_metrics_size
Definition: tttypes.h:1598
TT_Post_NamesRec postscript_names
Definition: tttypes.h:1536
TT_Interpreter interpreter
Definition: tttypes.h:1566
FT_UInt num_kern_tables
Definition: tttypes.h:1618
TTC_HeaderRec ttc_header
Definition: tttypes.h:1466
FT_UShort num_tables
Definition: tttypes.h:1469
FT_ULong vert_metrics_size
Definition: tttypes.h:1599
TT_Loader_ReadGlyphFunc read_simple_glyph
Definition: tttypes.h:1494
FT_FaceRec root
Definition: tttypes.h:1464
FT_Bool have_foreground_color
Definition: tttypes.h:1542
FT_Generic extra
Definition: tttypes.h:1576
TT_Loader_ReadGlyphFunc read_composite_glyph
Definition: tttypes.h:1495
FT_ULong glyf_offset
Definition: tttypes.h:1581
FT_UInt hdmx_record_count
Definition: tttypes.h:1606
TT_Header header
Definition: tttypes.h:1472
FT_Byte * hdmx_record_sizes
Definition: tttypes.h:1608
TT_Loader_EndGlyphFunc forget_glyph_frame
Definition: tttypes.h:1492
FT_ULong kern_table_size
Definition: tttypes.h:1617
FT_Int32 * cvt
Definition: tttypes.h:1562
FT_Byte * sbit_table
Definition: tttypes.h:1610
FT_ULong font_program_size
Definition: tttypes.h:1553
FT_ULong sbit_table_size
Definition: tttypes.h:1611
FT_Byte * kern_table
Definition: tttypes.h:1616
TT_Table dir_tables
Definition: tttypes.h:1470
FT_ULong format_tag
Definition: tttypes.h:1468
FT_UShort num_names
Definition: tttypes.h:1480
FT_Palette_Data palette_data
Definition: tttypes.h:1539
FT_ULong cvt_program_size
Definition: tttypes.h:1557
FT_Color * palette
Definition: tttypes.h:1541
FT_Bool is_cff2
Definition: tttypes.h:1583
FT_UShort gaspFlag
Definition: tttypes.h:347
FT_UShort maxPPEM
Definition: tttypes.h:346
FT_UShort version
Definition: tttypes.h:377
FT_UShort numRanges
Definition: tttypes.h:378
TT_GaspRange gaspRanges
Definition: tttypes.h:379
FT_Short n_contours
Definition: tttypes.h:1696
FT_Vector * org
Definition: tttypes.h:1698
FT_UShort n_points
Definition: tttypes.h:1695
FT_Vector * orus
Definition: tttypes.h:1700
FT_Vector * cur
Definition: tttypes.h:1699
FT_UShort first_point
Definition: tttypes.h:1705
FT_UShort max_points
Definition: tttypes.h:1693
FT_UShort * contours
Definition: tttypes.h:1703
FT_Memory memory
Definition: tttypes.h:1692
FT_Short max_contours
Definition: tttypes.h:1694
FT_Byte * tags
Definition: tttypes.h:1702
FT_Byte * string
Definition: tttypes.h:266
FT_UShort stringLength
Definition: tttypes.h:260
FT_ULong stringOffset
Definition: tttypes.h:261
FT_Int top_bearing
Definition: tttypes.h:1760
FT_Vector pp4
Definition: tttypes.h:1763
FT_ULong load_flags
Definition: tttypes.h:1733
FT_Byte * limit
Definition: tttypes.h:1767
TT_ExecContext exec
Definition: tttypes.h:1752
TT_Size size
Definition: tttypes.h:1729
FT_Vector pp3
Definition: tttypes.h:1762
FT_Int byte_len
Definition: tttypes.h:1737
void * other
Definition: tttypes.h:1757
FT_UInt glyph_index
Definition: tttypes.h:1734
FT_ULong ins_pos
Definition: tttypes.h:1754
FT_GlyphLoader gloader
Definition: tttypes.h:1731
FT_Byte * cursor
Definition: tttypes.h:1766
FT_Int advance
Definition: tttypes.h:1742
FT_ListRec composites
Definition: tttypes.h:1770
FT_GlyphSlot glyph
Definition: tttypes.h:1730
FT_Short n_contours
Definition: tttypes.h:1739
FT_Vector pp2
Definition: tttypes.h:1746
FT_Bool linear_def
Definition: tttypes.h:1744
FT_Vector pp1
Definition: tttypes.h:1745
TT_GlyphZoneRec zone
Definition: tttypes.h:1750
FT_Byte * instructions
Definition: tttypes.h:1753
TT_GlyphZoneRec base
Definition: tttypes.h:1749
FT_Stream stream
Definition: tttypes.h:1736
TT_Face face
Definition: tttypes.h:1728
FT_BBox bbox
Definition: tttypes.h:1740
FT_Int linear
Definition: tttypes.h:1743
FT_Int left_bearing
Definition: tttypes.h:1741
FT_Int vadvance
Definition: tttypes.h:1761
FT_Short bearing
Definition: tttypes.h:171
FT_UShort advance
Definition: tttypes.h:170
FT_ULong stringOffset
Definition: tttypes.h:228
FT_Byte * string
Definition: tttypes.h:233
FT_UShort languageID
Definition: tttypes.h:225
FT_UShort stringLength
Definition: tttypes.h:227
FT_UShort encodingID
Definition: tttypes.h:224
FT_UShort platformID
Definition: tttypes.h:223
FT_UShort nameID
Definition: tttypes.h:226
TT_NameRec * names
Definition: tttypes.h:306
TT_LangTagRec * langTags
Definition: tttypes.h:308
FT_UInt storageOffset
Definition: tttypes.h:305
FT_UInt numNameRecords
Definition: tttypes.h:304
FT_UInt numLangTagRecords
Definition: tttypes.h:307
FT_UShort format
Definition: tttypes.h:303
FT_Stream stream
Definition: tttypes.h:309
Definition: tttypes.h:802
FT_UShort * glyph_indices
Definition: tttypes.h:805
FT_Char ** glyph_names
Definition: tttypes.h:806
FT_UShort num_glyphs
Definition: tttypes.h:803
FT_UShort num_names
Definition: tttypes.h:804
Definition: tttypes.h:828
FT_Char * offsets
Definition: tttypes.h:830
FT_UShort num_glyphs
Definition: tttypes.h:829
Definition: tttypes.h:854
union TT_Post_NamesRec_::@4526 names
TT_Post_20Rec format_20
Definition: tttypes.h:859
FT_Bool loaded
Definition: tttypes.h:855
TT_Post_25Rec format_25
Definition: tttypes.h:860
FT_UShort glyph_code
Definition: tttypes.h:717
FT_Char caret_slope_denominator
Definition: tttypes.h:546
FT_Char caret_slope_numerator
Definition: tttypes.h:545
FT_Short vertBearingY
Definition: tttypes.h:442
FT_Short horiBearingX
Definition: tttypes.h:437
FT_UShort horiAdvance
Definition: tttypes.h:439
FT_Short horiBearingY
Definition: tttypes.h:438
FT_Short vertBearingX
Definition: tttypes.h:441
FT_UShort height
Definition: tttypes.h:434
FT_UShort width
Definition: tttypes.h:435
FT_UShort vertAdvance
Definition: tttypes.h:443
FT_UShort last_glyph
Definition: tttypes.h:607
FT_UShort first_glyph
Definition: tttypes.h:606
FT_ULong * glyph_offsets
Definition: tttypes.h:617
FT_ULong table_offset
Definition: tttypes.h:620
FT_UShort index_format
Definition: tttypes.h:609
TT_SBit_MetricsRec metrics
Definition: tttypes.h:614
FT_UShort image_format
Definition: tttypes.h:610
FT_UShort * glyph_codes
Definition: tttypes.h:618
FT_ULong image_size
Definition: tttypes.h:613
FT_ULong image_offset
Definition: tttypes.h:611
FT_ULong num_glyphs
Definition: tttypes.h:615
FT_Byte x_ppem
Definition: tttypes.h:757
TT_SBit_LineMetricsRec hori
Definition: tttypes.h:754
FT_Byte y_ppem_substitute
Definition: tttypes.h:761
FT_Byte x_ppem_substitute
Definition: tttypes.h:760
FT_Byte y_ppem
Definition: tttypes.h:758
TT_SBit_LineMetricsRec vert
Definition: tttypes.h:755
FT_UShort start_glyph
Definition: tttypes.h:685
TT_SBit_LineMetricsRec hori
Definition: tttypes.h:682
FT_UShort end_glyph
Definition: tttypes.h:686
FT_Byte x_ppem
Definition: tttypes.h:688
FT_ULong color_ref
Definition: tttypes.h:680
TT_SBit_LineMetricsRec vert
Definition: tttypes.h:683
TT_SBit_Range sbit_ranges
Definition: tttypes.h:677
FT_ULong ranges_offset
Definition: tttypes.h:678
FT_Byte bit_depth
Definition: tttypes.h:691
FT_Byte y_ppem
Definition: tttypes.h:689
FT_Int num_ranges
Definition: tttypes.h:676
FT_ULong Offset
Definition: tttypes.h:146
FT_ULong Length
Definition: tttypes.h:147
FT_ULong Tag
Definition: tttypes.h:144
FT_ULong CheckSum
Definition: tttypes.h:145
Definition: ecma_167.h:138
FT_BEGIN_HEADER struct TT_Header_ TT_Header
struct TT_LoaderRec_ * TT_Loader
Definition: tttypes.h:996
struct TT_LangTagRec_ TT_LangTagRec
struct SFNT_HeaderRec_ * SFNT_Header
struct TT_Post_NamesRec_ TT_Post_NamesRec
struct TT_ExecContextRec_ * TT_ExecContext
Definition: tttypes.h:1711
struct TT_GlyphZoneRec_ * TT_GlyphZone
void(* TT_Loader_EndGlyphFunc)(TT_Loader loader)
Definition: tttypes.h:1104
FT_Error(* TT_Loader_ReadGlyphFunc)(TT_Loader loader)
Definition: tttypes.h:1088
struct TT_LongMetricsRec_ TT_LongMetricsRec
struct TT_NameTableRec_ * TT_NameTable
struct TT_SBit_ScaleRec_ TT_SBit_ScaleRec
struct TT_SBit_Small_Metrics_ TT_SBit_SmallMetricsRec
struct TT_NameTableRec_ TT_NameTableRec
struct TT_FaceRec_ * TT_Face
Definition: tttypes.h:988
struct TT_Post_25_ * TT_Post_25
FT_Error(* TT_Loader_StartGlyphFunc)(TT_Loader loader, FT_UInt glyph_index, FT_ULong offset, FT_UInt byte_count)
Definition: tttypes.h:1065
struct TT_Post_NamesRec_ * TT_Post_Names
struct TT_TableRec_ TT_TableRec
struct TT_LangTagRec_ * TT_LangTag
struct TT_SBit_ComponentRec_ * TT_SBit_Component
FT_Short TT_ShortMetrics
Definition: tttypes.h:185
struct TT_FaceRec_ TT_FaceRec
struct TT_SBit_ScaleRec_ * TT_SBit_Scale
struct TT_GaspRangeRec_ * TT_GaspRange
struct TT_SBit_MetricsRec_ * TT_SBit_Metrics
struct TT_SBit_LineMetricsRec_ * TT_SBit_LineMetrics
struct TT_Post_25_ TT_Post_25Rec
struct TT_SizeRec_ * TT_Size
Definition: tttypes.h:1722
FT_Error(* TT_Loader_GotoTableFunc)(TT_Face face, FT_ULong tag, FT_Stream stream, FT_ULong *length)
Definition: tttypes.h:1028
struct TT_NameRec_ TT_NameRec
struct TT_NameRec_ * TT_Name
struct TT_SBit_RangeRec_ * TT_SBit_Range
enum TT_SbitTableType_ TT_SbitTableType
struct TT_SBit_LineMetricsRec_ TT_SBit_LineMetricsRec
struct TT_SBit_StrikeRec_ * TT_SBit_Strike
FT_Error(* TT_Interpreter)(void *exec_context)
Definition: tttypes.h:993
struct TT_SBit_StrikeRec_ TT_SBit_StrikeRec
struct TT_Gasp_ TT_GaspRec
struct TT_Post_20Rec_ TT_Post_20Rec
struct TT_LongMetricsRec_ * TT_LongMetrics
struct TT_LoaderRec_ TT_LoaderRec
TT_SbitTableType_
Definition: tttypes.h:1108
@ TT_SBIT_TABLE_TYPE_MAX
Definition: tttypes.h:1116
@ TT_SBIT_TABLE_TYPE_CBLC
Definition: tttypes.h:1112
@ TT_SBIT_TABLE_TYPE_NONE
Definition: tttypes.h:1109
@ TT_SBIT_TABLE_TYPE_SBIX
Definition: tttypes.h:1113
@ TT_SBIT_TABLE_TYPE_EBLC
Definition: tttypes.h:1110
struct SFNT_HeaderRec_ SFNT_HeaderRec
struct TT_SBit_ComponentRec_ TT_SBit_ComponentRec
FT_BEGIN_HEADER struct TTC_HeaderRec_ TTC_HeaderRec
struct TT_SBit_MetricsRec_ TT_SBit_MetricsRec
struct TT_GaspRangeRec_ TT_GaspRangeRec
struct TT_GlyphZoneRec_ TT_GlyphZoneRec
struct TT_Post_20Rec_ * TT_Post_20
struct TT_SBit_RangeRec_ TT_SBit_RangeRec
struct TT_TableRec_ * TT_Table
struct TT_SBit_Small_Metrics_ * TT_SBit_SmallMetrics