/***************************************************************************/
/* */
/*ftmm.h */
/* */
/*FreeType Multiple Master font interface (specification). */
/* */
/*Copyright 1996-2015 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
#include FT_TYPE1_TABLES_H
FT_BEGIN_HEADER
/*************************************************************************/
/* */
/*
/*multiple_masters */
/* */
/*
/*Multiple Masters */
/* */
/*
/*How to manage Multiple Masters fonts.*/
/* */
/*
/*The following types and functions are used to manage Multiple*/
/*Master fonts, i.e., the selection of specific design instances by*/
/*setting design axis coordinates. */
/* */
/*George Williams has extended this interface to make it work with */
/*both Type~1 Multiple Masters fonts and GX distortable (var)*/
/*fonts.Some of these routines only work with MM fonts, others */
/*will work with both types.They are similar enough that a */
/*consistent interface makes sense.*/
/* */
/*************************************************************************/
/*************************************************************************/
/* */
/*
/*FT_MM_Axis */
/* */
/*
/*A simple structure used to model a given axis in design space for*/
/*Multiple Masters fonts.*/
/* */
/*This structure cant be used for GX var fonts. */
/* */
/*
/*name:: The axiss name.*/
/* */
/*minimum :: The axiss minimum design coordinate. */
/* */
/*maximum :: The axiss maximum design coordinate. */
/* */
typedef structFT_MM_Axis_
{
FT_String*name;
FT_Long minimum;
FT_Long maximum;
} FT_MM_Axis;
/*************************************************************************/
/* */
/*
/*FT_Multi_Master*/
/* */
/*
/*A structure used to model the axes and space of a Multiple Masters */
/*font.*/
/* */
/*This structure cant be used for GX var fonts. */
/* */
/*
/*num_axis:: Number of axes.Cannot exceed~4. */
/* */
/*num_designs :: Number of designs; should be normally 2^num_axis*/
/* even though the Type~1 specification strangely*/
/* allows for intermediate designs to be present.*/
/* This number cannot exceed~16. */
/* */
/*axis:: A table of axis descriptors.*/
/* */
typedef structFT_Multi_Master_
{
FT_UInt num_axis;
FT_UInt num_designs;
FT_MM_Axisaxis[T1_MAX_MM_AXIS];
} FT_Multi_Master;
/*************************************************************************/
/* */
/*
/*FT_Var_Axis*/
/* */
/*
/*A simple structure used to model a given axis in design space for*/
/*Multiple Masters and GX var fonts. */
/* */
/*
/*name:: The axiss name.*/
/* Not always meaningful for GX. */
/* */
/*minimum :: The axiss minimum design coordinate. */
/* */
/*def :: The axiss default design coordinate. */
/* FreeType computes meaningful default values for MM; it*/
/* is then an integer value, not in 16.16 format.*/
/* */
/*maximum :: The axiss maximum design coordinate. */
/* */
/*tag :: The axiss tag (the GX equivalent to `name). */
/* FreeType provides default values for MM if possible.*/
/* */
/*strid :: The entry in `name table (another GX version of*/
/* `name).*/
/* Not meaningful for MM.*/
/* */
typedef structFT_Var_Axis_
{
FT_String*name;
FT_Fixedminimum;
FT_Fixeddef;
FT_Fixedmaximum;
FT_ULongtag;
FT_UInt strid;
} FT_Var_Axis;
/*************************************************************************/
/* */
/*
/*FT_Var_Named_Style */
/* */
/*
/*A simple structure used to model a named style in a GX var font. */
/* */
/*This structure cant be used for MM fonts. */
/* */
/*
/*coords :: The design coordinates for this style. */
/*This is an array with one entry for each axis. */
/* */
/*strid:: The entry in `name table identifying this style.*/
/* */
typedef structFT_Var_Named_Style_
{
FT_Fixed*coords;
FT_UIntstrid;
} FT_Var_Named_Style;
/*************************************************************************/
/* */
/*
/*FT_MM_Var*/
/* */
/*
/*A structure used to model the axes and space of a Multiple Masters */
/*or GX var distortable font.*/
/* */
/*Some fields are specific to one format and not to the other. */
/* */
/*
/*num_axis:: The number of axes.The maximum value is~4 for */
/* MM; no limit in GX. */
/* */
/*num_designs :: The number of designs; should be normally */
/* 2^num_axis for MM fonts.Not meaningful for GX */
/* (where every glyph could have a different */
/* number of designs). */
/* */
/*num_namedstyles :: The number of named styles; only meaningful for */
/* GX that allows certain design coordinates to*/
/* have a string ID (in the `name table)*/
/* associated with them.The font can tell the*/
/* user that, for example, Weight=1.5 is `Bold. */
/* */
/*axis:: An axis descriptor table. */
/* GX fonts contain slightly more data than MM.*/
/* */
/*namedstyle:: A named style table.*/
/* Only meaningful with GX.*/
/* */
typedef structFT_MM_Var_
{
FT_UIntnum_axis;
FT_UIntnum_designs;
FT_UIntnum_namedstyles;
FT_Var_Axis* axis;
FT_Var_Named_Style*namedstyle;
} FT_MM_Var;
/*************************************************************************/
/* */
/*
/*FT_Get_Multi_Master*/
/* */
/*
/*Retrieve the Multiple Master descriptor of a given font. */
/* */
/*This function cant be used with GX fonts. */
/* */
/**/
/*face:: A handle to the source face.*/
/* */
/*
/*************************************************************************/
/* */
/*
/*FT_Get_MM_Var*/
/* */
/*
/*Retrieve the Multiple Master/GX var descriptor of a given font.*/
/* */
/**/
/*face:: A handle to the source face.*/
/* */
/*
/*************************************************************************/
/* */
/*
/*FT_Set_MM_Design_Coordinates */
/* */
/*
/*For Multiple Masters fonts, choose an interpolated font design */
/*through design coordinates.*/
/* */
/*This function cant be used with GX fonts. */
/* */
/*
/*face :: A handle to the source face. */
/* */
/* */
/*num_coords :: The number of available design coordinates.If it */
/*is larger than the number of axes, ignore the excess */
/*values.If it is smaller than the number of axes, */
/*use default values for the remaining axes. */
/* */
/*coords :: An array of design coordinates.*/
/* */
/*
/*FreeType error code.0~means success. */
/* */
FT_EXPORT( FT_Error )
FT_Set_MM_Design_Coordinates( FT_Face face,
FT_UInt num_coords,
FT_Long*coords );
/*************************************************************************/
/* */
/*
/*FT_Set_Var_Design_Coordinates*/
/* */
/*
/*For Multiple Master or GX Var fonts, choose an interpolated font */
/*design through design coordinates. */
/* */
/*
/*face :: A handle to the source face. */
/* */
/* */
/*num_coords :: The number of available design coordinates.If it */
/*is larger than the number of axes, ignore the excess */
/*values.If it is smaller than the number of axes, */
/*use default values for the remaining axes. */
/* */
/*coords :: An array of design coordinates.*/
/* */
/*
/*FreeType error code.0~means success. */
/* */
FT_EXPORT( FT_Error )
FT_Set_Var_Design_Coordinates( FT_Faceface,
FT_UIntnum_coords,
FT_Fixed*coords );
/*************************************************************************/
/* */
/*
/*FT_Set_MM_Blend_Coordinates*/
/* */
/*
/*For Multiple Masters and GX var fonts, choose an interpolated font */
/*design through normalized blend coordinates. */
/* */
/*
/*face :: A handle to the source face. */
/* */
/* */
/*num_coords :: The number of available design coordinates.If it */
/*is larger than the number of axes, ignore the excess */
/*values.If it is smaller than the number of axes, */
/*use default values for the remaining axes. */
/* */
/*coords :: The design coordinates array (each element must be */
/*between 0 and 1.0).*/
/* */
/*
/*FreeType error code.0~means success. */
/* */
FT_EXPORT( FT_Error )
FT_Set_MM_Blend_Coordinates( FT_Faceface,
FT_UIntnum_coords,
FT_Fixed*coords );
/*************************************************************************/
/* */
/*
/*FT_Set_Var_Blend_Coordinates */
/* */
/*
/*This is another name of @FT_Set_MM_Blend_Coordinates.*/
/* */
FT_EXPORT( FT_Error )
FT_Set_Var_Blend_Coordinates( FT_Faceface,
FT_UIntnum_coords,
FT_Fixed*coords );
/* */
FT_END_HEADER
#endif /* __FTMM_H__ */
/* END */
Reviews
There are no reviews yet.