Visualization Library 2.0.0-b5

A lightweight C++ OpenGL middleware for 2D/3D graphics

VL     Star     Watch     Fork     Issue

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