34#define FT_COMPONENT mm
39 FT_Service_MultiMasters *aservice )
47 return FT_THROW( Invalid_Face_Handle );
67 FT_Service_MetricsVariations *aservice )
75 return FT_THROW( Invalid_Face_Handle );
100 FT_Service_MultiMasters service;
106 return FT_THROW( Invalid_Argument );
112 if ( service->get_mm )
113 error = service->get_mm(
face, amaster );
127 FT_Service_MultiMasters service;
133 return FT_THROW( Invalid_Argument );
139 if ( service->get_mm_var )
140 error = service->get_mm_var(
face, amaster );
157 return FT_THROW( Invalid_Library_Handle );
174 FT_Service_MultiMasters service;
179 if ( num_coords && !
coords )
180 return FT_THROW( Invalid_Argument );
186 if ( service->set_mm_design )
191 if ( !
error &&
face->autohint.finalizer )
193 face->autohint.finalizer(
face->autohint.data );
209 FT_Service_MultiMasters service;
214 if (
len && !weightvector )
215 return FT_THROW( Invalid_Argument );
221 if ( service->set_mm_weightvector )
222 error = service->set_mm_weightvector(
face,
len, weightvector );
226 if ( !
error &&
face->autohint.finalizer )
228 face->autohint.finalizer(
face->autohint.data );
242 FT_Service_MultiMasters service;
247 if (
len && !weightvector )
248 return FT_THROW( Invalid_Argument );
254 if ( service->get_mm_weightvector )
255 error = service->get_mm_weightvector(
face,
len, weightvector );
270 FT_Service_MultiMasters service_mm =
NULL;
271 FT_Service_MetricsVariations service_mvar =
NULL;
276 if ( num_coords && !
coords )
277 return FT_THROW( Invalid_Argument );
283 if ( service_mm->set_var_design )
295 if ( service_mvar && service_mvar->metrics_adjust )
296 service_mvar->metrics_adjust(
face );
300 if ( !
error &&
face->autohint.finalizer )
302 face->autohint.finalizer(
face->autohint.data );
318 FT_Service_MultiMasters service;
324 return FT_THROW( Invalid_Argument );
330 if ( service->get_var_design )
346 FT_Service_MultiMasters service_mm =
NULL;
347 FT_Service_MetricsVariations service_mvar =
NULL;
352 if ( num_coords && !
coords )
353 return FT_THROW( Invalid_Argument );
359 if ( service_mm->set_mm_blend )
371 if ( service_mvar && service_mvar->metrics_adjust )
372 service_mvar->metrics_adjust(
face );
376 if ( !
error &&
face->autohint.finalizer )
378 face->autohint.finalizer(
face->autohint.data );
397 FT_Service_MultiMasters service_mm =
NULL;
398 FT_Service_MetricsVariations service_mvar =
NULL;
403 if ( num_coords && !
coords )
404 return FT_THROW( Invalid_Argument );
410 if ( service_mm->set_mm_blend )
422 if ( service_mvar && service_mvar->metrics_adjust )
423 service_mvar->metrics_adjust(
face );
427 if ( !
error &&
face->autohint.finalizer )
429 face->autohint.finalizer(
face->autohint.data );
445 FT_Service_MultiMasters service;
451 return FT_THROW( Invalid_Argument );
457 if ( service->get_mm_blend )
476 FT_Service_MultiMasters service;
482 return FT_THROW( Invalid_Argument );
488 if ( service->get_mm_blend )
506 if ( !master || !
flags )
507 return FT_THROW( Invalid_Argument );
509 if ( axis_index >= master->num_axis )
510 return FT_THROW( Invalid_Argument );
514 *
flags = axis_flags[axis_index];
528 FT_Service_MultiMasters service_mm =
NULL;
529 FT_Service_MetricsVariations service_mvar =
NULL;
538 if ( service_mm->set_instance )
539 error = service_mm->set_instance(
face, instance_index );
546 if ( service_mvar && service_mvar->metrics_adjust )
547 service_mvar->metrics_adjust(
face );
551 if ( !
error &&
face->autohint.finalizer )
553 face->autohint.finalizer(
face->autohint.data );
559 face->face_index = ( instance_index << 16 ) |
560 (
face->face_index & 0xFFFFL );
561 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_Set_MM_WeightVector(FT_Face face, FT_UInt len, FT_Fixed *weightvector)
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_Get_MM_WeightVector(FT_Face face, FT_UInt *len, FT_Fixed *weightvector)
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]