/***************************************************************************/ /* */ /* ftmm.h */ /* */ /* FreeType Multiple-Master interface. */ /* */ /* */ /* Copyright 1996-2000 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used */ /* modified and distributed under the terms of the FreeType project */ /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ /* this file you indicate that you have read the license and */ /* understand and accept it fully. */ /* */ /***************************************************************************/ #ifndef FTMM_H #define FTMM_H #include #ifdef __cplusplus extern "C" { #endif /********************************************************************** * * * FT_MM_Axis * * * A simple structure used to model a given axis in design space * for multiple masters fonts.. * * * name :: axis' name * minimum :: axis' minimum design coordinate * maximum :: axis's maximum design coordinate * */ typedef struct FT_MM_Axis_ { FT_String* name; FT_Long minimum; FT_Long maximum; } FT_MM_Axis; /********************************************************************** * * * FT_Multi_Master * * * A structure used to model the axis and space of a multiple * masters font. * * * num_axis :: number of axis. cannot exceed 4 * * num_designs :: number of designs, should ne normally 2^num_axis * even though the Type 1 specification strangely * allows for intermediate designs to be present * this number cannot exceed 16 * * axis :: an table of axis descriptors.. * */ typedef struct FT_Multi_Master_ { FT_UInt num_axis; FT_UInt num_designs; FT_MM_Axis axis[ T1_MAX_MM_AXIS ]; } FT_Multi_Master; typedef FT_Error (*FT_Get_MM_Func)( FT_Face face, FT_Multi_Master* master ); typedef FT_Error (*FT_Set_MM_Design_Func)( FT_Face face, FT_UInt num_coords, FT_Long* coords ); typedef FT_Error (*FT_Set_MM_Blend_Func)( FT_Face face, FT_UInt num_coords, FT_Long* coords ); /************************************************************************* * * * FT_Get_Multi_Master * * * Retrieves the multiple master descriptor of a given font * * * face :: handle to source face * * * master :: multiple masters descriptor * * * Error code. 0 means success. * */ FT_EXPORT_DEF(FT_Error) FT_Get_Multi_Master( FT_Face face, FT_Multi_Master* master ); /************************************************************************* * * * FT_Set_MM_Design_Coordinates * * * For multiple masters fonts, choose an interpolated font design * through design coordinates * * * face :: handle to source face * num_coords :: number of design coordinates (must be equal to the * number of axis in the font). * coords :: design coordinates * * * Error code. 0 means success. * */ FT_EXPORT_DEF(FT_Error) FT_Set_MM_Design_Coordinates( FT_Face face, FT_UInt num_coords, FT_Long* coords ); /************************************************************************* * * * FT_Set_MM_Blend_Coordinates * * * For multiple masters fonts, choose an interpolated font design * through normalized blend coordinates * * * face :: handle to source face * num_coords :: number of design coordinates (must be equal to the * number of axis in the font). * coords :: design coordinates (each one must be between 0 and 1.0) * * * Error code. 0 means success. * */ FT_EXPORT_DEF(FT_Error) FT_Set_MM_Blend_Coordinates( FT_Face face, FT_UInt num_coords, FT_Fixed* coords ); #ifdef __cplusplus } #endif #endif /* FTMM_H */ /* END */