34#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
45 typedef struct GX_AVarCorrespondenceRec_
50 } GX_AVarCorrespondenceRec_, *GX_AVarCorrespondence;
62 typedef struct GX_AVarSegmentRec_
65 GX_AVarCorrespondence correspondence;
67 } GX_AVarSegmentRec, *GX_AVarSegment;
78 typedef struct GX_AVarTableRec_
80 GX_AVarSegment avar_segment;
81 GX_ItemVarStoreRec itemStore;
82 GX_DeltaSetIdxMapRec axisMap;
84 } GX_AVarTableRec, *GX_AVarTable;
95 typedef struct GX_HVVarTableRec_
97 GX_ItemVarStoreRec itemStore;
98 GX_DeltaSetIdxMapRec widthMap;
101 GX_DeltaSetIdxMapRec lsbMap;
102 GX_DeltaSetIdxMapRec rsbMap;
104 GX_DeltaSetIdxMapRec tsbMap;
105 GX_DeltaSetIdxMapRec bsbMap;
106 GX_DeltaSetIdxMapRec vorgMap;
109 } GX_HVVarTableRec, *GX_HVVarTable;
112#define MVAR_TAG_GASP_0 FT_MAKE_TAG( 'g', 's', 'p', '0' )
113#define MVAR_TAG_GASP_1 FT_MAKE_TAG( 'g', 's', 'p', '1' )
114#define MVAR_TAG_GASP_2 FT_MAKE_TAG( 'g', 's', 'p', '2' )
115#define MVAR_TAG_GASP_3 FT_MAKE_TAG( 'g', 's', 'p', '3' )
116#define MVAR_TAG_GASP_4 FT_MAKE_TAG( 'g', 's', 'p', '4' )
117#define MVAR_TAG_GASP_5 FT_MAKE_TAG( 'g', 's', 'p', '5' )
118#define MVAR_TAG_GASP_6 FT_MAKE_TAG( 'g', 's', 'p', '6' )
119#define MVAR_TAG_GASP_7 FT_MAKE_TAG( 'g', 's', 'p', '7' )
120#define MVAR_TAG_GASP_8 FT_MAKE_TAG( 'g', 's', 'p', '8' )
121#define MVAR_TAG_GASP_9 FT_MAKE_TAG( 'g', 's', 'p', '9' )
123#define MVAR_TAG_CPHT FT_MAKE_TAG( 'c', 'p', 'h', 't' )
124#define MVAR_TAG_HASC FT_MAKE_TAG( 'h', 'a', 's', 'c' )
125#define MVAR_TAG_HCLA FT_MAKE_TAG( 'h', 'c', 'l', 'a' )
126#define MVAR_TAG_HCLD FT_MAKE_TAG( 'h', 'c', 'l', 'd' )
127#define MVAR_TAG_HCOF FT_MAKE_TAG( 'h', 'c', 'o', 'f' )
128#define MVAR_TAG_HCRN FT_MAKE_TAG( 'h', 'c', 'r', 'n' )
129#define MVAR_TAG_HCRS FT_MAKE_TAG( 'h', 'c', 'r', 's' )
130#define MVAR_TAG_HDSC FT_MAKE_TAG( 'h', 'd', 's', 'c' )
131#define MVAR_TAG_HLGP FT_MAKE_TAG( 'h', 'l', 'g', 'p' )
132#define MVAR_TAG_SBXO FT_MAKE_TAG( 's', 'b', 'x', 'o' )
133#define MVAR_TAG_SBXS FT_MAKE_TAG( 's', 'b', 'x', 's' )
134#define MVAR_TAG_SBYO FT_MAKE_TAG( 's', 'b', 'y', 'o' )
135#define MVAR_TAG_SBYS FT_MAKE_TAG( 's', 'b', 'y', 's' )
136#define MVAR_TAG_SPXO FT_MAKE_TAG( 's', 'p', 'x', 'o' )
137#define MVAR_TAG_SPXS FT_MAKE_TAG( 's', 'p', 'x', 's' )
138#define MVAR_TAG_SPYO FT_MAKE_TAG( 's', 'p', 'y', 'o' )
139#define MVAR_TAG_SPYS FT_MAKE_TAG( 's', 'p', 'y', 's' )
140#define MVAR_TAG_STRO FT_MAKE_TAG( 's', 't', 'r', 'o' )
141#define MVAR_TAG_STRS FT_MAKE_TAG( 's', 't', 'r', 's' )
142#define MVAR_TAG_UNDO FT_MAKE_TAG( 'u', 'n', 'd', 'o' )
143#define MVAR_TAG_UNDS FT_MAKE_TAG( 'u', 'n', 'd', 's' )
144#define MVAR_TAG_VASC FT_MAKE_TAG( 'v', 'a', 's', 'c' )
145#define MVAR_TAG_VCOF FT_MAKE_TAG( 'v', 'c', 'o', 'f' )
146#define MVAR_TAG_VCRN FT_MAKE_TAG( 'v', 'c', 'r', 'n' )
147#define MVAR_TAG_VCRS FT_MAKE_TAG( 'v', 'c', 'r', 's' )
148#define MVAR_TAG_VDSC FT_MAKE_TAG( 'v', 'd', 's', 'c' )
149#define MVAR_TAG_VLGP FT_MAKE_TAG( 'v', 'l', 'g', 'p' )
150#define MVAR_TAG_XHGT FT_MAKE_TAG( 'x', 'h', 'g', 't' )
153 typedef struct GX_ValueRec_
156 FT_UShort outerIndex;
157 FT_UShort innerIndex;
161 } GX_ValueRec, *GX_Value;
172 typedef struct GX_MVarTableRec_
174 FT_UShort valueCount;
176 GX_ItemVarStoreRec itemStore;
179 } GX_MVarTableRec, *GX_MVarTable;
275 typedef struct GX_BlendRec_
279 FT_Fixed* normalizedcoords;
284 FT_Fixed* normalized_stylecoords;
288 GX_AVarTable avar_table;
291 FT_Bool hvar_checked;
293 GX_HVVarTable hvar_table;
296 FT_Bool vvar_checked;
298 GX_HVVarTable vvar_table;
300 GX_MVarTable mvar_table;
303 FT_Fixed* tuplecoords;
304 FT_Fixed* tuplescalars;
307 FT_ULong* glyphoffsets;
322 typedef enum GX_TupleCountFlags_
324 GX_TC_TUPLES_SHARE_POINT_NUMBERS = 0x8000,
325 GX_TC_RESERVED_TUPLE_FLAGS = 0x7000,
326 GX_TC_TUPLE_COUNT_MASK = 0x0FFF
328 } GX_TupleCountFlags;
340 typedef enum GX_TupleIndexFlags_
342 GX_TI_EMBEDDED_TUPLE_COORD = 0x8000,
343 GX_TI_INTERMEDIATE_TUPLE = 0x4000,
344 GX_TI_PRIVATE_POINT_NUMBERS = 0x2000,
345 GX_TI_RESERVED_TUPLE_FLAG = 0x1000,
346 GX_TI_TUPLE_INDEX_MASK = 0x0FFF
348 } GX_TupleIndexFlags;
351#define TTAG_wght FT_MAKE_TAG( 'w', 'g', 'h', 't' )
352#define TTAG_wdth FT_MAKE_TAG( 'w', 'd', 't', 'h' )
353#define TTAG_opsz FT_MAKE_TAG( 'o', 'p', 's', 'z' )
354#define TTAG_slnt FT_MAKE_TAG( 's', 'l', 'n', 't' )
355#define TTAG_ital FT_MAKE_TAG( 'i', 't', 'a', 'l' )
359 TT_Set_MM_Blend( FT_Face face,
364 TT_Get_MM_Blend( FT_Face face,
369 TT_Set_Var_Design( FT_Face face,
374 TT_Get_MM_Var( FT_Face face,
375 FT_MM_Var* *master );
378 TT_Get_Var_Design( FT_Face face,
383 TT_Set_Named_Instance( FT_Face face,
384 FT_UInt instance_index );
387 TT_Get_Default_Named_Instance( FT_Face face,
388 FT_UInt *instance_index );
391 tt_construct_ps_name( FT_Face face );
394 tt_face_vary_cvt( TT_Face face,
399 TT_Vary_Apply_Glyph_Deltas( TT_Loader loader,
401 FT_Vector* unrounded );
404 tt_hadvance_adjust( FT_Face face,
409 tt_vadvance_adjust( FT_Face face,
414 tt_apply_mvar( FT_Face face );
417 tt_var_load_item_variation_store( FT_Face face,
419 GX_ItemVarStore itemStore );
422 tt_var_load_delta_set_index_mapping( FT_Face face,
424 GX_DeltaSetIdxMap map,
425 GX_ItemVarStore itemStore,
426 FT_ULong table_len );
428 FT_LOCAL( FT_ItemVarDelta )
429 tt_var_get_item_delta( FT_Face face,
430 GX_ItemVarStore itemStore,
432 FT_UInt innerIndex );
435 tt_var_done_item_variation_store( FT_Face face,
436 GX_ItemVarStore itemStore );
439 tt_var_done_delta_set_index_map( FT_Face face,
440 GX_DeltaSetIdxMap deltaSetIdxMap );
444 tt_get_var_blend( FT_Face face,
447 FT_Fixed* *normalizedcoords,
448 FT_MM_Var* *mm_var );
451 tt_done_blend( FT_Face face );