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 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;
215 if (
len && !weightvector )
216 return FT_THROW( Invalid_Argument );
222 if ( service->set_mm_weightvector )
223 error = service->set_mm_weightvector(
face,
len, weightvector );
227 if ( !
error &&
face->autohint.finalizer )
229 face->autohint.finalizer(
face->autohint.data );
243 FT_Service_MultiMasters service;
248 if (
len && !weightvector )
249 return FT_THROW( Invalid_Argument );
255 if ( service->get_mm_weightvector )
256 error = service->get_mm_weightvector(
face,
len, weightvector );
271 FT_Service_MultiMasters service_mm =
NULL;
272 FT_Service_MetricsVariations service_mvar =
NULL;
277 if ( num_coords && !
coords )
278 return FT_THROW( Invalid_Argument );
284 if ( service_mm->set_var_design )
296 if ( service_mvar && service_mvar->metrics_adjust )
297 service_mvar->metrics_adjust(
face );
301 if ( !
error &&
face->autohint.finalizer )
303 face->autohint.finalizer(
face->autohint.data );
319 FT_Service_MultiMasters service;
325 return FT_THROW( Invalid_Argument );
331 if ( service->get_var_design )
347 FT_Service_MultiMasters service_mm =
NULL;
348 FT_Service_MetricsVariations service_mvar =
NULL;
353 if ( num_coords && !
coords )
354 return FT_THROW( Invalid_Argument );
360 if ( service_mm->set_mm_blend )
372 if ( service_mvar && service_mvar->metrics_adjust )
373 service_mvar->metrics_adjust(
face );
377 if ( !
error &&
face->autohint.finalizer )
379 face->autohint.finalizer(
face->autohint.data );
398 FT_Service_MultiMasters service_mm =
NULL;
399 FT_Service_MetricsVariations service_mvar =
NULL;
404 if ( num_coords && !
coords )
405 return FT_THROW( Invalid_Argument );
411 if ( service_mm->set_mm_blend )
423 if ( service_mvar && service_mvar->metrics_adjust )
424 service_mvar->metrics_adjust(
face );
428 if ( !
error &&
face->autohint.finalizer )
430 face->autohint.finalizer(
face->autohint.data );
446 FT_Service_MultiMasters service;
452 return FT_THROW( Invalid_Argument );
458 if ( service->get_mm_blend )
477 FT_Service_MultiMasters service;
483 return FT_THROW( Invalid_Argument );
489 if ( service->get_mm_blend )
507 if ( !master || !
flags )
508 return FT_THROW( Invalid_Argument );
510 if ( axis_index >= master->num_axis )
511 return FT_THROW( Invalid_Argument );
515 *
flags = axis_flags[axis_index];
529 FT_Service_MultiMasters service_mm =
NULL;
530 FT_Service_MetricsVariations service_mvar =
NULL;
539 if ( service_mm->set_instance )
540 error = service_mm->set_instance(
face, instance_index );
547 if ( service_mvar && service_mvar->metrics_adjust )
548 service_mvar->metrics_adjust(
face );
552 if ( !
error &&
face->autohint.finalizer )
554 face->autohint.finalizer(
face->autohint.data );
560 face->face_index = ( instance_index << 16 ) |
561 (
face->face_index & 0xFFFFL );
562 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]