20#include FT_INTERNAL_DEBUG_H
22#include FT_MULTIPLE_MASTERS_H
23#include FT_INTERNAL_OBJECTS_H
24#include FT_SERVICE_MULTIPLE_MASTERS_H
25#include FT_SERVICE_METRICS_VARIATIONS_H
35#define FT_COMPONENT trace_mm
40 FT_Service_MultiMasters *aservice )
48 return FT_THROW( Invalid_Face_Handle );
68 FT_Service_MetricsVariations *aservice )
76 return FT_THROW( Invalid_Face_Handle );
101 FT_Service_MultiMasters service;
107 return FT_THROW( Invalid_Argument );
113 if ( service->get_mm )
114 error = service->get_mm(
face, amaster );
128 FT_Service_MultiMasters service;
134 return FT_THROW( Invalid_Argument );
140 if ( service->get_mm_var )
141 error = service->get_mm_var(
face, amaster );
158 return FT_THROW( Invalid_Library_Handle );
175 FT_Service_MultiMasters service;
180 if ( num_coords && !
coords )
181 return FT_THROW( Invalid_Argument );
187 if ( service->set_mm_design )
192 if ( !
error &&
face->autohint.finalizer )
194 face->autohint.finalizer(
face->autohint.data );
210 FT_Service_MultiMasters service_mm =
NULL;
211 FT_Service_MetricsVariations service_mvar =
NULL;
216 if ( num_coords && !
coords )
217 return FT_THROW( Invalid_Argument );
223 if ( service_mm->set_var_design )
235 if ( service_mvar && service_mvar->metrics_adjust )
236 service_mvar->metrics_adjust(
face );
240 if ( !
error &&
face->autohint.finalizer )
242 face->autohint.finalizer(
face->autohint.data );
258 FT_Service_MultiMasters service;
264 return FT_THROW( Invalid_Argument );
270 if ( service->get_var_design )
286 FT_Service_MultiMasters service_mm =
NULL;
287 FT_Service_MetricsVariations service_mvar =
NULL;
292 if ( num_coords && !
coords )
293 return FT_THROW( Invalid_Argument );
299 if ( service_mm->set_mm_blend )
311 if ( service_mvar && service_mvar->metrics_adjust )
312 service_mvar->metrics_adjust(
face );
316 if ( !
error &&
face->autohint.finalizer )
318 face->autohint.finalizer(
face->autohint.data );
337 FT_Service_MultiMasters service_mm =
NULL;
338 FT_Service_MetricsVariations service_mvar =
NULL;
343 if ( num_coords && !
coords )
344 return FT_THROW( Invalid_Argument );
350 if ( service_mm->set_mm_blend )
362 if ( service_mvar && service_mvar->metrics_adjust )
363 service_mvar->metrics_adjust(
face );
367 if ( !
error &&
face->autohint.finalizer )
369 face->autohint.finalizer(
face->autohint.data );
385 FT_Service_MultiMasters service;
391 return FT_THROW( Invalid_Argument );
397 if ( service->get_mm_blend )
416 FT_Service_MultiMasters service;
422 return FT_THROW( Invalid_Argument );
428 if ( service->get_mm_blend )
446 if ( !master || !
flags )
447 return FT_THROW( Invalid_Argument );
449 if ( axis_index >= master->num_axis )
450 return FT_THROW( Invalid_Argument );
454 *
flags = axis_flags[axis_index];
468 FT_Service_MultiMasters service_mm =
NULL;
469 FT_Service_MetricsVariations service_mvar =
NULL;
478 if ( service_mm->set_instance )
479 error = service_mm->set_instance(
face, instance_index );
486 if ( service_mvar && service_mvar->metrics_adjust )
487 service_mvar->metrics_adjust(
face );
491 if ( !
error &&
face->autohint.finalizer )
493 face->autohint.finalizer(
face->autohint.data );
499 face->face_index = ( instance_index << 16 ) |
500 (
face->face_index & 0xFFFFL );
501 face->face_flags &= ~FT_FACE_FLAG_VARIATION;
#define FT_HAS_MULTIPLE_MASTERS(face)
FT_Get_Multi_Master(FT_Face face, FT_Multi_Master *amaster)
FT_Set_MM_Blend_Coordinates(FT_Face face, FT_UInt num_coords, FT_Fixed *coords)
FT_Get_Var_Axis_Flags(FT_MM_Var *master, FT_UInt axis_index, FT_UInt *flags)
FT_Set_Var_Blend_Coordinates(FT_Face face, FT_UInt num_coords, FT_Fixed *coords)
static FT_Error ft_face_get_mvar_service(FT_Face face, FT_Service_MetricsVariations *aservice)
FT_Set_MM_Design_Coordinates(FT_Face face, FT_UInt num_coords, FT_Long *coords)
FT_Get_MM_Blend_Coordinates(FT_Face face, FT_UInt num_coords, FT_Fixed *coords)
FT_Get_Var_Blend_Coordinates(FT_Face face, FT_UInt num_coords, FT_Fixed *coords)
FT_Set_Var_Design_Coordinates(FT_Face face, FT_UInt num_coords, FT_Fixed *coords)
FT_Get_Var_Design_Coordinates(FT_Face face, FT_UInt num_coords, FT_Fixed *coords)
FT_Done_MM_Var(FT_Library library, FT_MM_Var *amaster)
FT_Set_Named_Instance(FT_Face face, FT_UInt instance_index)
static FT_Error ft_face_get_mm_service(FT_Face face, FT_Service_MultiMasters *aservice)
FT_Get_MM_Var(FT_Face face, FT_MM_Var **amaster)
#define FT_FACE_LOOKUP_SERVICE(face, ptr, id)
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
GLenum GLuint GLint GLenum face
static char memory[1024 *256]