OLD | NEW |
| (Empty) |
1 /***************************************************************************/ | |
2 /* */ | |
3 /* ttgxvar.h */ | |
4 /* */ | |
5 /* TrueType GX Font Variation loader (specification) */ | |
6 /* */ | |
7 /* Copyright 2004 by */ | |
8 /* David Turner, Robert Wilhelm, Werner Lemberg and George Williams. */ | |
9 /* */ | |
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. */ | |
15 /* */ | |
16 /***************************************************************************/ | |
17 | |
18 | |
19 #ifndef __TTGXVAR_H__ | |
20 #define __TTGXVAR_H__ | |
21 | |
22 | |
23 #include "../../include/ft2build.h" | |
24 #include "ttobjs.h" | |
25 | |
26 | |
27 FT_BEGIN_HEADER | |
28 | |
29 | |
30 /*************************************************************************/ | |
31 /* */ | |
32 /* <Struct> */ | |
33 /* GX_AVarCorrespondenceRec */ | |
34 /* */ | |
35 /* <Description> */ | |
36 /* A data structure representing `shortFracCorrespondence' in `avar' */ | |
37 /* table according to the specifications from Apple. */ | |
38 /* */ | |
39 typedef struct GX_AVarCorrespondenceRec_ | |
40 { | |
41 FT_Fixed fromCoord; | |
42 FT_Fixed toCoord; | |
43 | |
44 } GX_AVarCorrespondenceRec_, *GX_AVarCorrespondence; | |
45 | |
46 | |
47 /*************************************************************************/ | |
48 /* */ | |
49 /* <Struct> */ | |
50 /* GX_AVarRec */ | |
51 /* */ | |
52 /* <Description> */ | |
53 /* Data from the segment field of `avar' table. */ | |
54 /* There is one of these for each axis. */ | |
55 /* */ | |
56 typedef struct GX_AVarSegmentRec_ | |
57 { | |
58 FT_UShort pairCount; | |
59 GX_AVarCorrespondence correspondence; /* array with pairCount entries */ | |
60 | |
61 } GX_AVarSegmentRec, *GX_AVarSegment; | |
62 | |
63 | |
64 /*************************************************************************/ | |
65 /* */ | |
66 /* <Struct> */ | |
67 /* GX_BlendRec */ | |
68 /* */ | |
69 /* <Description> */ | |
70 /* Data for interpolating a font from a distortable font specified */ | |
71 /* by the GX *var tables ([fgca]var). */ | |
72 /* */ | |
73 /* <Fields> */ | |
74 /* num_axis :: The number of axes along which interpolation */ | |
75 /* may happen */ | |
76 /* */ | |
77 /* normalizedcoords :: A normalized value (between [-1,1]) indicating */ | |
78 /* the contribution along each axis to the final */ | |
79 /* interpolated font. */ | |
80 /* */ | |
81 typedef struct GX_BlendRec_ | |
82 { | |
83 FT_UInt num_axis; | |
84 FT_Fixed* normalizedcoords; | |
85 | |
86 FT_MM_Var* mmvar; | |
87 FT_Offset mmvar_len; | |
88 | |
89 FT_Bool avar_checked; | |
90 GX_AVarSegment avar_segment; | |
91 | |
92 FT_UInt tuplecount; /* shared tuples in `gvar' */ | |
93 FT_Fixed* tuplecoords; /* tuplecoords[tuplecount][num_axis] */ | |
94 | |
95 FT_UInt gv_glyphcnt; | |
96 FT_ULong* glyphoffsets; | |
97 | |
98 } GX_BlendRec; | |
99 | |
100 | |
101 /*************************************************************************/ | |
102 /* */ | |
103 /* <enum> */ | |
104 /* GX_TupleCountFlags */ | |
105 /* */ | |
106 /* <Description> */ | |
107 /* Flags used within the `TupleCount' field of the `gvar' table. */ | |
108 /* */ | |
109 typedef enum GX_TupleCountFlags_ | |
110 { | |
111 GX_TC_TUPLES_SHARE_POINT_NUMBERS = 0x8000, | |
112 GX_TC_RESERVED_TUPLE_FLAGS = 0x7000, | |
113 GX_TC_TUPLE_COUNT_MASK = 0x0FFF | |
114 | |
115 } GX_TupleCountFlags; | |
116 | |
117 | |
118 /*************************************************************************/ | |
119 /* */ | |
120 /* <enum> */ | |
121 /* GX_TupleIndexFlags */ | |
122 /* */ | |
123 /* <Description> */ | |
124 /* Flags used within the `TupleIndex' field of the `gvar' and `cvar' */ | |
125 /* tables. */ | |
126 /* */ | |
127 typedef enum GX_TupleIndexFlags_ | |
128 { | |
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 | |
134 | |
135 } GX_TupleIndexFlags; | |
136 | |
137 | |
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' ) | |
142 | |
143 | |
144 FT_LOCAL( FT_Error ) | |
145 TT_Set_MM_Blend( TT_Face face, | |
146 FT_UInt num_coords, | |
147 FT_Fixed* coords ); | |
148 | |
149 FT_LOCAL( FT_Error ) | |
150 TT_Set_Var_Design( TT_Face face, | |
151 FT_UInt num_coords, | |
152 FT_Fixed* coords ); | |
153 | |
154 FT_LOCAL( FT_Error ) | |
155 TT_Get_MM_Var( TT_Face face, | |
156 FT_MM_Var* *master ); | |
157 | |
158 | |
159 FT_LOCAL( FT_Error ) | |
160 tt_face_vary_cvt( TT_Face face, | |
161 FT_Stream stream ); | |
162 | |
163 | |
164 FT_LOCAL( FT_Error ) | |
165 TT_Vary_Get_Glyph_Deltas( TT_Face face, | |
166 FT_UInt glyph_index, | |
167 FT_Vector* *deltas, | |
168 FT_UInt n_points ); | |
169 | |
170 | |
171 FT_LOCAL( void ) | |
172 tt_done_blend( FT_Memory memory, | |
173 GX_Blend blend ); | |
174 | |
175 | |
176 FT_END_HEADER | |
177 | |
178 | |
179 #endif /* __TTGXVAR_H__ */ | |
180 | |
181 | |
182 /* END */ | |
OLD | NEW |