1 /***************************************************************************/
5 /* TrueType GX Font Variation loader (specification) */
7 /* Copyright 2004 by */
8 /* David Turner, Robert Wilhelm, Werner Lemberg and George Williams. */
10 /* This file is part of the FreeType project, and may only be used, */
11 /* modified, and distributed under the terms of the FreeType project */
12 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */
13 /* this file you indicate that you have read the license and */
14 /* understand and accept it fully. */
16 /***************************************************************************/
30 /*************************************************************************/
33 /* GX_AVarCorrespondenceRec */
36 /* A data structure representing `shortFracCorrespondence' in `avar' */
37 /* table according to the specifications from Apple. */
39 typedef struct GX_AVarCorrespondenceRec_
44 } GX_AVarCorrespondenceRec_
, *GX_AVarCorrespondence
;
47 /*************************************************************************/
53 /* Data from the segment field of `avar' table. */
54 /* There is one of these for each axis. */
56 typedef struct GX_AVarSegmentRec_
59 GX_AVarCorrespondence correspondence
; /* array with pairCount entries */
61 } GX_AVarSegmentRec
, *GX_AVarSegment
;
64 /*************************************************************************/
70 /* Data for interpolating a font from a distortable font specified */
71 /* by the GX *var tables ([fgca]var). */
74 /* num_axis :: The number of axes along which interpolation */
77 /* normalizedcoords :: A normalized value (between [-1,1]) indicating */
78 /* the contribution along each axis to the final */
79 /* interpolated font. */
81 typedef struct GX_BlendRec_
84 FT_Fixed
* normalizedcoords
;
90 GX_AVarSegment avar_segment
;
92 FT_UInt tuplecount
; /* shared tuples in `gvar' */
93 FT_Fixed
* tuplecoords
; /* tuplecoords[tuplecount][num_axis] */
96 FT_ULong
* glyphoffsets
;
101 /*************************************************************************/
104 /* GX_TupleCountFlags */
107 /* Flags used within the `TupleCount' field of the `gvar' table. */
109 typedef enum GX_TupleCountFlags_
111 GX_TC_TUPLES_SHARE_POINT_NUMBERS
= 0x8000,
112 GX_TC_RESERVED_TUPLE_FLAGS
= 0x7000,
113 GX_TC_TUPLE_COUNT_MASK
= 0x0FFF
115 } GX_TupleCountFlags
;
118 /*************************************************************************/
121 /* GX_TupleIndexFlags */
124 /* Flags used within the `TupleIndex' field of the `gvar' and `cvar' */
127 typedef enum GX_TupleIndexFlags_
129 GX_TI_EMBEDDED_TUPLE_COORD
= 0x8000,
130 GX_TI_INTERMEDIATE_TUPLE
= 0x4000,
131 GX_TI_PRIVATE_POINT_NUMBERS
= 0x2000,
132 GX_TI_RESERVED_TUPLE_FLAG
= 0x1000,
133 GX_TI_TUPLE_INDEX_MASK
= 0x0FFF
135 } GX_TupleIndexFlags
;
138 #define TTAG_wght FT_MAKE_TAG( 'w', 'g', 'h', 't' )
139 #define TTAG_wdth FT_MAKE_TAG( 'w', 'd', 't', 'h' )
140 #define TTAG_opsz FT_MAKE_TAG( 'o', 'p', 's', 'z' )
141 #define TTAG_slnt FT_MAKE_TAG( 's', 'l', 'n', 't' )
145 TT_Set_MM_Blend( TT_Face face
,
150 TT_Set_Var_Design( TT_Face face
,
155 TT_Get_MM_Var( TT_Face face
,
156 FT_MM_Var
* *master
);
160 tt_face_vary_cvt( TT_Face face
,
165 TT_Vary_Get_Glyph_Deltas( TT_Face face
,
172 tt_done_blend( FT_Memory memory
,
179 #endif /* __TTGXVAR_H__ */