1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/ 2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* ftmm.h */ 4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* FreeType Multiple Master font interface (specification). */ 6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 7ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann/* Copyright 1996-2015 by */ 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* David Turner, Robert Wilhelm, and Werner Lemberg. */ 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* This file is part of the FreeType project, and may only be used, */ 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* modified, and distributed under the terms of the FreeType project */ 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* this file you indicate that you have read the license and */ 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* understand and accept it fully. */ 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/ 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef __FTMM_H__ 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define __FTMM_H__ 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 23e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include <ft2build.h> 24e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov#include FT_TYPE1_TABLES_H 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFT_BEGIN_HEADER 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Section> */ 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* multiple_masters */ 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Title> */ 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Multiple Masters */ 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Abstract> */ 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* How to manage Multiple Masters fonts. */ 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The following types and functions are used to manage Multiple */ 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Master fonts, i.e., the selection of specific design instances by */ 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* setting design axis coordinates. */ 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* George Williams has extended this interface to make it work with */ 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* both Type~1 Multiple Masters fonts and GX distortable (var) */ 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* fonts. Some of these routines only work with MM fonts, others */ 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* will work with both types. They are similar enough that a */ 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* consistent interface makes sense. */ 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Struct> */ 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_MM_Axis */ 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A simple structure used to model a given axis in design space for */ 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Multiple Masters fonts. */ 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This structure can't be used for GX var fonts. */ 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Fields> */ 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* name :: The axis's name. */ 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* minimum :: The axis's minimum design coordinate. */ 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* maximum :: The axis's maximum design coordinate. */ 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_MM_Axis_ 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_String* name; 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Long minimum; 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Long maximum; 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } FT_MM_Axis; 80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Struct> */ 85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Multi_Master */ 86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A structure used to model the axes and space of a Multiple Masters */ 89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* font. */ 90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This structure can't be used for GX var fonts. */ 92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Fields> */ 94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* num_axis :: Number of axes. Cannot exceed~4. */ 95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* num_designs :: Number of designs; should be normally 2^num_axis */ 97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* even though the Type~1 specification strangely */ 98ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* allows for intermediate designs to be present. */ 99ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* This number cannot exceed~16. */ 100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* axis :: A table of axis descriptors. */ 102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_Multi_Master_ 104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt num_axis; 106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt num_designs; 107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_MM_Axis axis[T1_MAX_MM_AXIS]; 108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } FT_Multi_Master; 110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Struct> */ 115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Var_Axis */ 116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A simple structure used to model a given axis in design space for */ 119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Multiple Masters and GX var fonts. */ 120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Fields> */ 122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* name :: The axis's name. */ 123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Not always meaningful for GX. */ 124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* minimum :: The axis's minimum design coordinate. */ 126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* def :: The axis's default design coordinate. */ 128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType computes meaningful default values for MM; it */ 129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* is then an integer value, not in 16.16 format. */ 130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* maximum :: The axis's maximum design coordinate. */ 132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* tag :: The axis's tag (the GX equivalent to `name'). */ 134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType provides default values for MM if possible. */ 135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* strid :: The entry in `name' table (another GX version of */ 137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `name'). */ 138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Not meaningful for MM. */ 139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_Var_Axis_ 141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_String* name; 143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Fixed minimum; 145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Fixed def; 146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Fixed maximum; 147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ULong tag; 149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt strid; 150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } FT_Var_Axis; 152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Struct> */ 157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Var_Named_Style */ 158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A simple structure used to model a named style in a GX var font. */ 161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This structure can't be used for MM fonts. */ 163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Fields> */ 165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* coords :: The design coordinates for this style. */ 166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This is an array with one entry for each axis. */ 167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* strid :: The entry in `name' table identifying this style. */ 169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_Var_Named_Style_ 171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Fixed* coords; 173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt strid; 174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } FT_Var_Named_Style; 176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Struct> */ 181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_MM_Var */ 182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A structure used to model the axes and space of a Multiple Masters */ 185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* or GX var distortable font. */ 186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Some fields are specific to one format and not to the other. */ 188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Fields> */ 190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* num_axis :: The number of axes. The maximum value is~4 for */ 191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* MM; no limit in GX. */ 192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* num_designs :: The number of designs; should be normally */ 194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* 2^num_axis for MM fonts. Not meaningful for GX */ 195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* (where every glyph could have a different */ 196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* number of designs). */ 197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* num_namedstyles :: The number of named styles; only meaningful for */ 199e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* GX that allows certain design coordinates to */ 200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* have a string ID (in the `name' table) */ 201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* associated with them. The font can tell the */ 202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* user that, for example, Weight=1.5 is `Bold'. */ 203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 204ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* axis :: An axis descriptor table. */ 205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* GX fonts contain slightly more data than MM. */ 206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 207ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* namedstyle :: A named style table. */ 208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Only meaningful with GX. */ 209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_MM_Var_ 211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt num_axis; 213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt num_designs; 214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt num_namedstyles; 215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Var_Axis* axis; 216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Var_Named_Style* namedstyle; 217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } FT_MM_Var; 219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Get_Multi_Master */ 225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Retrieve the Multiple Master descriptor of a given font. */ 228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This function can't be used with GX fonts. */ 230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to the source face. */ 233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Output> */ 235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* amaster :: The Multiple Masters descriptor. */ 236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Get_Multi_Master( FT_Face face, 242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Multi_Master *amaster ); 243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Get_MM_Var */ 249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Retrieve the Multiple Master/GX var descriptor of a given font. */ 252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to the source face. */ 255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Output> */ 257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* amaster :: The Multiple Masters/GX var descriptor. */ 258e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov /* Allocates a data structure, which the user must free. */ 259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Get_MM_Var( FT_Face face, 265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_MM_Var* *amaster ); 266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Set_MM_Design_Coordinates */ 272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* For Multiple Masters fonts, choose an interpolated font design */ 275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* through design coordinates. */ 276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This function can't be used with GX fonts. */ 278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <InOut> */ 280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to the source face. */ 281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 283ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* num_coords :: The number of available design coordinates. If it */ 284ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* is larger than the number of axes, ignore the excess */ 285ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* values. If it is smaller than the number of axes, */ 286ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* use default values for the remaining axes. */ 287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* coords :: An array of design coordinates. */ 289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Set_MM_Design_Coordinates( FT_Face face, 295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt num_coords, 296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Long* coords ); 297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Set_Var_Design_Coordinates */ 303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* For Multiple Master or GX Var fonts, choose an interpolated font */ 306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* design through design coordinates. */ 307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <InOut> */ 309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to the source face. */ 310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 312ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* num_coords :: The number of available design coordinates. If it */ 313ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* is larger than the number of axes, ignore the excess */ 314ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* values. If it is smaller than the number of axes, */ 315ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* use default values for the remaining axes. */ 316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* coords :: An array of design coordinates. */ 318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Set_Var_Design_Coordinates( FT_Face face, 324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt num_coords, 325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Fixed* coords ); 326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Set_MM_Blend_Coordinates */ 332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* For Multiple Masters and GX var fonts, choose an interpolated font */ 335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* design through normalized blend coordinates. */ 336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <InOut> */ 338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to the source face. */ 339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 341ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* num_coords :: The number of available design coordinates. If it */ 342ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* is larger than the number of axes, ignore the excess */ 343ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* values. If it is smaller than the number of axes, */ 344ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann /* use default values for the remaining axes. */ 345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* coords :: The design coordinates array (each element must be */ 347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* between 0 and 1.0). */ 348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0~means success. */ 351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Set_MM_Blend_Coordinates( FT_Face face, 354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt num_coords, 355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Fixed* coords ); 356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Function> */ 361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Set_Var_Blend_Coordinates */ 362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This is another name of @FT_Set_MM_Blend_Coordinates. */ 365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_EXPORT( FT_Error ) 367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Set_Var_Blend_Coordinates( FT_Face face, 368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt num_coords, 369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Fixed* coords ); 370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 374ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFT_END_HEADER 375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* __FTMM_H__ */ 377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* END */ 380