1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/ 2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* sfnt.h */ 4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* High-level `sfnt' driver interface (specification). */ 6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* Copyright 1996-2006, 2009, 2012-2013 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 __SFNT_H__ 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define __SFNT_H__ 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../ft2build.h" 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "ftdriver.h" 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "tttypes.h" 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFT_BEGIN_HEADER 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <FuncType> */ 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* TT_Init_Face_Func */ 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* First part of the SFNT face object initialization. This finds */ 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the face in a SFNT file or collection, and load its format tag in */ 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face->format_tag. */ 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* stream :: The input stream. */ 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to the target face object. */ 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face_index :: The index of the TrueType font, if we are opening a */ 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* collection. */ 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* num_params :: The number of additional parameters. */ 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* params :: Optional additional parameters. */ 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0 means success. */ 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The stream cursor must be at the font file's origin. */ 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This function recognizes fonts embedded in a `TrueType */ 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* collection'. */ 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Once the format tag has been validated by the font driver, it */ 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* should then call the TT_Load_Face_Func() callback to read the rest */ 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* of the SFNT tables in the object. */ 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef FT_Error 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (*TT_Init_Face_Func)( FT_Stream stream, 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Face face, 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Int face_index, 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Int num_params, 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Parameter* params ); 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <FuncType> */ 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* TT_Load_Face_Func */ 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Second part of the SFNT face object initialization. This loads */ 81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the common SFNT tables (head, OS/2, maxp, metrics, etc.) in the */ 82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face object. */ 83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* stream :: The input stream. */ 86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to the target face object. */ 88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face_index :: The index of the TrueType font, if we are opening a */ 90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* collection. */ 91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* num_params :: The number of additional parameters. */ 93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* params :: Optional additional parameters. */ 95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0 means success. */ 98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This function must be called after TT_Init_Face_Func(). */ 101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef FT_Error 103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (*TT_Load_Face_Func)( FT_Stream stream, 104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Face face, 105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Int face_index, 106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Int num_params, 107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Parameter* params ); 108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <FuncType> */ 113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* TT_Done_Face_Func */ 114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A callback used to delete the common SFNT data from a face. */ 117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to the target face object. */ 120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This function does NOT destroy the face object. */ 123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef void 125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (*TT_Done_Face_Func)( TT_Face face ); 126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <FuncType> */ 131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* TT_Load_Any_Func */ 132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Load any font table into client memory. */ 135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: The face object to look for. */ 138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* tag :: The tag of table to load. Use the value 0 if you want */ 140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* to access the whole font file, else set this parameter */ 141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* to a valid TrueType table tag that you can forge with */ 142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the MAKE_TT_TAG macro. */ 143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* offset :: The starting offset in the table (or the file if */ 145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* tag == 0). */ 146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* length :: The address of the decision variable: */ 148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* If length == NULL: */ 150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Loads the whole table. Returns an error if */ 151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `offset' == 0! */ 152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* If *length == 0: */ 154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Exits immediately; returning the length of the given */ 155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* table or of the font file, depending on the value of */ 156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* `tag'. */ 157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* If *length != 0: */ 159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Loads the next `length' bytes of table or font, */ 160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* starting at offset `offset' (in table or font too). */ 161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Output> */ 163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* buffer :: The address of target buffer. */ 164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* TrueType error code. 0 means success. */ 167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef FT_Error 169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (*TT_Load_Any_Func)( TT_Face face, 170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ULong tag, 171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Long offset, 172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Byte *buffer, 173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ULong* length ); 174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <FuncType> */ 179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* TT_Find_SBit_Image_Func */ 180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Check whether an embedded bitmap (an `sbit') exists for a given */ 183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* glyph, at a given strike. */ 184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: The target face object. */ 187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* glyph_index :: The glyph index. */ 189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* strike_index :: The current strike index. */ 191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Output> */ 193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* arange :: The SBit range containing the glyph index. */ 194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* astrike :: The SBit strike containing the glyph index. */ 196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* aglyph_offset :: The offset of the glyph data in `EBDT' table. */ 198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0 means success. Returns */ 201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* SFNT_Err_Invalid_Argument if no sbit exists for the requested */ 202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* glyph. */ 203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef FT_Error 205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (*TT_Find_SBit_Image_Func)( TT_Face face, 206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt glyph_index, 207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ULong strike_index, 208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_SBit_Range *arange, 209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_SBit_Strike *astrike, 210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ULong *aglyph_offset ); 211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <FuncType> */ 216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* TT_Load_SBit_Metrics_Func */ 217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Get the big metrics for a given embedded bitmap. */ 220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* stream :: The input stream. */ 223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* range :: The SBit range containing the glyph. */ 225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Output> */ 227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* big_metrics :: A big SBit metrics structure for the glyph. */ 228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0 means success. */ 231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The stream cursor must be positioned at the glyph's offset within */ 234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the `EBDT' table before the call. */ 235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* If the image format uses variable metrics, the stream cursor is */ 237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* positioned just after the metrics header in the `EBDT' table on */ 238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* function exit. */ 239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef FT_Error 241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (*TT_Load_SBit_Metrics_Func)( FT_Stream stream, 242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_SBit_Range range, 243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_SBit_Metrics metrics ); 244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <FuncType> */ 249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* TT_Load_SBit_Image_Func */ 250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Load a given glyph sbit image from the font resource. This also */ 253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* returns its metrics. */ 254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: */ 257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The target face object. */ 258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* strike_index :: */ 260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The strike index. */ 261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* glyph_index :: */ 263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The current glyph index. */ 264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* load_flags :: */ 266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The current load flags. */ 267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* stream :: */ 269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The input stream. */ 270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Output> */ 272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* amap :: */ 273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The target pixmap. */ 274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* ametrics :: */ 276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A big sbit metrics structure for the glyph image. */ 277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0 means success. Returns an error if no */ 280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* glyph sbit exists for the index. */ 281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The `map.buffer' field is always freed before the glyph is loaded. */ 284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef FT_Error 286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (*TT_Load_SBit_Image_Func)( TT_Face face, 287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ULong strike_index, 288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt glyph_index, 289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt load_flags, 290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Stream stream, 291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Bitmap *amap, 292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_SBit_MetricsRec *ametrics ); 293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <FuncType> */ 298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* TT_Set_SBit_Strike_Func */ 299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Select an sbit strike for a given size request. */ 302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: The target face object. */ 305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* req :: The size request. */ 307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Output> */ 309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* astrike_index :: The index of the sbit strike. */ 310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0 means success. Returns an error if no */ 313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* sbit strike exists for the selected ppem values. */ 314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef FT_Error 316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (*TT_Set_SBit_Strike_Func)( TT_Face face, 317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Size_Request req, 318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ULong* astrike_index ); 319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <FuncType> */ 324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* TT_Load_Strike_Metrics_Func */ 325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Load the metrics of a given strike. */ 328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: The target face object. */ 331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* strike_index :: The strike index. */ 333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Output> */ 335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* metrics :: the metrics of the strike. */ 336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0 means success. Returns an error if no */ 339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* such sbit strike exists. */ 340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef FT_Error 342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (*TT_Load_Strike_Metrics_Func)( TT_Face face, 343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ULong strike_index, 344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Size_Metrics* metrics ); 345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <FuncType> */ 350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* TT_Get_PS_Name_Func */ 351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Get the PostScript glyph name of a glyph. */ 354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* idx :: The glyph index. */ 357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* PSname :: The address of a string pointer. Will be NULL in case */ 359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* of error, otherwise it is a pointer to the glyph name. */ 360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* You must not modify the returned string! */ 362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Output> */ 364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0 means success. */ 365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef FT_Error 367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (*TT_Get_PS_Name_Func)( TT_Face face, 368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt idx, 369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_String** PSname ); 370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <FuncType> */ 375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* TT_Load_Metrics_Func */ 376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Load a metrics table, which is a table with a horizontal and a */ 379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* vertical version. */ 380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to the target face object. */ 383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* stream :: The input stream. */ 385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* vertical :: A boolean flag. If set, load the vertical one. */ 387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0 means success. */ 390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef FT_Error 392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (*TT_Load_Metrics_Func)( TT_Face face, 393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Stream stream, 394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Bool vertical ); 395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <FuncType> */ 400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* TT_Get_Metrics_Func */ 401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Load the horizontal or vertical header in a face object. */ 404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to the target face object. */ 407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* stream :: The input stream. */ 409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* vertical :: A boolean flag. If set, load vertical metrics. */ 411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0 means success. */ 414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef FT_Error 416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (*TT_Get_Metrics_Func)( TT_Face face, 417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Bool vertical, 418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt gindex, 419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Short* abearing, 420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UShort* aadvance ); 421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <FuncType> */ 426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* TT_Load_Table_Func */ 427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Load a given TrueType table. */ 430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to the target face object. */ 433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* stream :: The input stream. */ 435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Return> */ 437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType error code. 0 means success. */ 438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The function uses `face->goto_table' to seek the stream to the */ 441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* start of the table, except while loading the font directory. */ 442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef FT_Error 444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (*TT_Load_Table_Func)( TT_Face face, 445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Stream stream ); 446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <FuncType> */ 451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* TT_Free_Table_Func */ 452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Free a given TrueType table. */ 455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* face :: A handle to the target face object. */ 458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef void 460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (*TT_Free_Table_Func)( TT_Face face ); 461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* 464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @functype: 465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * TT_Face_GetKerningFunc 466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @description: 468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Return the horizontal kerning value between two glyphs. 469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @input: 471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * face :: A handle to the source face object. 472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * left_glyph :: The left glyph index. 473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * right_glyph :: The right glyph index. 474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @return: 476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * The kerning value in font units. 477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */ 478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef FT_Int 479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (*TT_Face_GetKerningFunc)( TT_Face face, 480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt left_glyph, 481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UInt right_glyph ); 482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Struct> */ 487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* SFNT_Interface */ 488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This structure holds pointers to the functions used to load and */ 491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* free the basic tables that are required in a `sfnt' font file. */ 492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Fields> */ 494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Check the various xxx_Func() descriptions for details. */ 495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct SFNT_Interface_ 497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Loader_GotoTableFunc goto_table; 499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Init_Face_Func init_face; 501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Load_Face_Func load_face; 502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Done_Face_Func done_face; 503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Module_Requester get_interface; 504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Load_Any_Func load_any; 506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* these functions are called by `load_face' but they can also */ 508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* be called from external modules, if there is a need to do so */ 509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Load_Table_Func load_head; 510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Load_Metrics_Func load_hhea; 511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Load_Table_Func load_cmap; 512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Load_Table_Func load_maxp; 513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Load_Table_Func load_os2; 514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Load_Table_Func load_post; 515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Load_Table_Func load_name; 517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Free_Table_Func free_name; 518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* this field was called `load_kerning' up to version 2.1.10 */ 520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Load_Table_Func load_kern; 521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Load_Table_Func load_gasp; 523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Load_Table_Func load_pclt; 524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* see `ttload.h'; this field was called `load_bitmap_header' up to */ 526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* version 2.1.10 */ 527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Load_Table_Func load_bhed; 528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Load_SBit_Image_Func load_sbit_image; 530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* see `ttpost.h' */ 532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Get_PS_Name_Func get_psname; 533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Free_Table_Func free_psnames; 534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* starting here, the structure differs from version 2.1.7 */ 536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* this field was introduced in version 2.1.8, named `get_psname' */ 538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Face_GetKerningFunc get_kerning; 539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* new elements introduced after version 2.1.10 */ 541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* load the font directory, i.e., the offset table and */ 543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* the table directory */ 544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Load_Table_Func load_font_dir; 545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Load_Metrics_Func load_hmtx; 546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Load_Table_Func load_eblc; 548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Free_Table_Func free_eblc; 549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Set_SBit_Strike_Func set_sbit_strike; 551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Load_Strike_Metrics_Func load_strike_metrics; 552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov TT_Get_Metrics_Func get_metrics; 554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } SFNT_Interface; 556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* transitional */ 559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef SFNT_Interface* SFNT_Service; 560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef FT_CONFIG_OPTION_PIC 562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_DEFINE_SFNT_INTERFACE( \ 564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov class_, \ 565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov goto_table_, \ 566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov init_face_, \ 567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_face_, \ 568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov done_face_, \ 569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov get_interface_, \ 570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_any_, \ 571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_head_, \ 572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_hhea_, \ 573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_cmap_, \ 574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_maxp_, \ 575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_os2_, \ 576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_post_, \ 577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_name_, \ 578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov free_name_, \ 579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_kern_, \ 580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_gasp_, \ 581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_pclt_, \ 582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_bhed_, \ 583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_sbit_image_, \ 584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov get_psname_, \ 585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov free_psnames_, \ 586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov get_kerning_, \ 587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_font_dir_, \ 588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_hmtx_, \ 589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_eblc_, \ 590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov free_eblc_, \ 591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov set_sbit_strike_, \ 592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_strike_metrics_, \ 593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov get_metrics_ ) \ 594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static const SFNT_Interface class_ = \ 595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { \ 596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov goto_table_, \ 597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov init_face_, \ 598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_face_, \ 599ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov done_face_, \ 600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov get_interface_, \ 601ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_any_, \ 602ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_head_, \ 603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_hhea_, \ 604ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_cmap_, \ 605ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_maxp_, \ 606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_os2_, \ 607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_post_, \ 608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_name_, \ 609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov free_name_, \ 610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_kern_, \ 611ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_gasp_, \ 612ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_pclt_, \ 613ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_bhed_, \ 614ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_sbit_image_, \ 615ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov get_psname_, \ 616ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov free_psnames_, \ 617ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov get_kerning_, \ 618ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_font_dir_, \ 619ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_hmtx_, \ 620ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_eblc_, \ 621ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov free_eblc_, \ 622ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov set_sbit_strike_, \ 623ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_strike_metrics_, \ 624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov get_metrics_, \ 625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov }; 626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 627ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else /* FT_CONFIG_OPTION_PIC */ 628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_INTERNAL( a, a_ ) \ 630ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->a = a_; 631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_DEFINE_SFNT_INTERFACE( \ 633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov class_, \ 634ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov goto_table_, \ 635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov init_face_, \ 636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_face_, \ 637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov done_face_, \ 638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov get_interface_, \ 639ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_any_, \ 640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_head_, \ 641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_hhea_, \ 642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_cmap_, \ 643ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_maxp_, \ 644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_os2_, \ 645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_post_, \ 646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_name_, \ 647ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov free_name_, \ 648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_kern_, \ 649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_gasp_, \ 650ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_pclt_, \ 651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_bhed_, \ 652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_sbit_image_, \ 653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov get_psname_, \ 654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov free_psnames_, \ 655ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov get_kerning_, \ 656ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_font_dir_, \ 657ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_hmtx_, \ 658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_eblc_, \ 659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov free_eblc_, \ 660ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov set_sbit_strike_, \ 661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov load_strike_metrics_, \ 662ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov get_metrics_ ) \ 663ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void \ 664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Init_Class_ ## class_( FT_Library library, \ 665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SFNT_Interface* clazz ) \ 666ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { \ 667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_UNUSED( library ); \ 668ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov \ 669ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->goto_table = goto_table_; \ 670ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->init_face = init_face_; \ 671ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->load_face = load_face_; \ 672ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->done_face = done_face_; \ 673ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->get_interface = get_interface_; \ 674ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->load_any = load_any_; \ 675ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->load_head = load_head_; \ 676ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->load_hhea = load_hhea_; \ 677ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->load_cmap = load_cmap_; \ 678ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->load_maxp = load_maxp_; \ 679ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->load_os2 = load_os2_; \ 680ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->load_post = load_post_; \ 681ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->load_name = load_name_; \ 682ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->free_name = free_name_; \ 683ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->load_kern = load_kern_; \ 684ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->load_gasp = load_gasp_; \ 685ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->load_pclt = load_pclt_; \ 686ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->load_bhed = load_bhed_; \ 687ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->load_sbit_image = load_sbit_image_; \ 688ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->get_psname = get_psname_; \ 689ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->free_psnames = free_psnames_; \ 690ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->get_kerning = get_kerning_; \ 691ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->load_font_dir = load_font_dir_; \ 692ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->load_hmtx = load_hmtx_; \ 693ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->load_eblc = load_eblc_; \ 694ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->free_eblc = free_eblc_; \ 695ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->set_sbit_strike = set_sbit_strike_; \ 696ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->load_strike_metrics = load_strike_metrics_; \ 697ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clazz->get_metrics = get_metrics_; \ 698ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 699ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 700ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* FT_CONFIG_OPTION_PIC */ 701ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 702ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFT_END_HEADER 703ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 704ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* __SFNT_H__ */ 705ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 706ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 707ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* END */ 708