1*37da2899SCharles.Forsyth /***************************************************************************/ 2*37da2899SCharles.Forsyth /* */ 3*37da2899SCharles.Forsyth /* sfnt.h */ 4*37da2899SCharles.Forsyth /* */ 5*37da2899SCharles.Forsyth /* High-level `sfnt' driver interface (specification). */ 6*37da2899SCharles.Forsyth /* */ 7*37da2899SCharles.Forsyth /* Copyright 1996-2001, 2002 by */ 8*37da2899SCharles.Forsyth /* David Turner, Robert Wilhelm, and Werner Lemberg. */ 9*37da2899SCharles.Forsyth /* */ 10*37da2899SCharles.Forsyth /* This file is part of the FreeType project, and may only be used, */ 11*37da2899SCharles.Forsyth /* modified, and distributed under the terms of the FreeType project */ 12*37da2899SCharles.Forsyth /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 13*37da2899SCharles.Forsyth /* this file you indicate that you have read the license and */ 14*37da2899SCharles.Forsyth /* understand and accept it fully. */ 15*37da2899SCharles.Forsyth /* */ 16*37da2899SCharles.Forsyth /***************************************************************************/ 17*37da2899SCharles.Forsyth 18*37da2899SCharles.Forsyth 19*37da2899SCharles.Forsyth #ifndef __SFNT_H__ 20*37da2899SCharles.Forsyth #define __SFNT_H__ 21*37da2899SCharles.Forsyth 22*37da2899SCharles.Forsyth 23*37da2899SCharles.Forsyth #include <ft2build.h> 24*37da2899SCharles.Forsyth #include FT_INTERNAL_DRIVER_H 25*37da2899SCharles.Forsyth #include FT_INTERNAL_TRUETYPE_TYPES_H 26*37da2899SCharles.Forsyth 27*37da2899SCharles.Forsyth 28*37da2899SCharles.Forsyth FT_BEGIN_HEADER 29*37da2899SCharles.Forsyth 30*37da2899SCharles.Forsyth 31*37da2899SCharles.Forsyth /*************************************************************************/ 32*37da2899SCharles.Forsyth /* */ 33*37da2899SCharles.Forsyth /* <FuncType> */ 34*37da2899SCharles.Forsyth /* TT_Init_Face_Func */ 35*37da2899SCharles.Forsyth /* */ 36*37da2899SCharles.Forsyth /* <Description> */ 37*37da2899SCharles.Forsyth /* First part of the SFNT face object initialization. This will find */ 38*37da2899SCharles.Forsyth /* the face in a SFNT file or collection, and load its format tag in */ 39*37da2899SCharles.Forsyth /* face->format_tag. */ 40*37da2899SCharles.Forsyth /* */ 41*37da2899SCharles.Forsyth /* <Input> */ 42*37da2899SCharles.Forsyth /* stream :: The input stream. */ 43*37da2899SCharles.Forsyth /* */ 44*37da2899SCharles.Forsyth /* face :: A handle to the target face object. */ 45*37da2899SCharles.Forsyth /* */ 46*37da2899SCharles.Forsyth /* face_index :: The index of the TrueType font, if we are opening a */ 47*37da2899SCharles.Forsyth /* collection. */ 48*37da2899SCharles.Forsyth /* */ 49*37da2899SCharles.Forsyth /* num_params :: The number of additional parameters. */ 50*37da2899SCharles.Forsyth /* */ 51*37da2899SCharles.Forsyth /* params :: Optional additional parameters. */ 52*37da2899SCharles.Forsyth /* */ 53*37da2899SCharles.Forsyth /* <Return> */ 54*37da2899SCharles.Forsyth /* FreeType error code. 0 means success. */ 55*37da2899SCharles.Forsyth /* */ 56*37da2899SCharles.Forsyth /* <Note> */ 57*37da2899SCharles.Forsyth /* The stream cursor must be at the font file's origin. */ 58*37da2899SCharles.Forsyth /* */ 59*37da2899SCharles.Forsyth /* This function recognizes fonts embedded in a `TrueType */ 60*37da2899SCharles.Forsyth /* collection'. */ 61*37da2899SCharles.Forsyth /* */ 62*37da2899SCharles.Forsyth /* Once the format tag has been validated by the font driver, it */ 63*37da2899SCharles.Forsyth /* should then call the TT_Load_Face_Func() callback to read the rest */ 64*37da2899SCharles.Forsyth /* of the SFNT tables in the object. */ 65*37da2899SCharles.Forsyth /* */ 66*37da2899SCharles.Forsyth typedef FT_Error 67*37da2899SCharles.Forsyth (*TT_Init_Face_Func)( FT_Stream stream, 68*37da2899SCharles.Forsyth TT_Face face, 69*37da2899SCharles.Forsyth FT_Int face_index, 70*37da2899SCharles.Forsyth FT_Int num_params, 71*37da2899SCharles.Forsyth FT_Parameter* params ); 72*37da2899SCharles.Forsyth 73*37da2899SCharles.Forsyth 74*37da2899SCharles.Forsyth /*************************************************************************/ 75*37da2899SCharles.Forsyth /* */ 76*37da2899SCharles.Forsyth /* <FuncType> */ 77*37da2899SCharles.Forsyth /* TT_Load_Face_Func */ 78*37da2899SCharles.Forsyth /* */ 79*37da2899SCharles.Forsyth /* <Description> */ 80*37da2899SCharles.Forsyth /* Second part of the SFNT face object initialization. This will */ 81*37da2899SCharles.Forsyth /* load the common SFNT tables (head, OS/2, maxp, metrics, etc.) in */ 82*37da2899SCharles.Forsyth /* the face object. */ 83*37da2899SCharles.Forsyth /* */ 84*37da2899SCharles.Forsyth /* <Input> */ 85*37da2899SCharles.Forsyth /* stream :: The input stream. */ 86*37da2899SCharles.Forsyth /* */ 87*37da2899SCharles.Forsyth /* face :: A handle to the target face object. */ 88*37da2899SCharles.Forsyth /* */ 89*37da2899SCharles.Forsyth /* face_index :: The index of the TrueType font, if we are opening a */ 90*37da2899SCharles.Forsyth /* collection. */ 91*37da2899SCharles.Forsyth /* */ 92*37da2899SCharles.Forsyth /* num_params :: The number of additional parameters. */ 93*37da2899SCharles.Forsyth /* */ 94*37da2899SCharles.Forsyth /* params :: Optional additional parameters. */ 95*37da2899SCharles.Forsyth /* */ 96*37da2899SCharles.Forsyth /* <Return> */ 97*37da2899SCharles.Forsyth /* FreeType error code. 0 means success. */ 98*37da2899SCharles.Forsyth /* */ 99*37da2899SCharles.Forsyth /* <Note> */ 100*37da2899SCharles.Forsyth /* This function must be called after TT_Init_Face_Func(). */ 101*37da2899SCharles.Forsyth /* */ 102*37da2899SCharles.Forsyth typedef FT_Error 103*37da2899SCharles.Forsyth (*TT_Load_Face_Func)( FT_Stream stream, 104*37da2899SCharles.Forsyth TT_Face face, 105*37da2899SCharles.Forsyth FT_Int face_index, 106*37da2899SCharles.Forsyth FT_Int num_params, 107*37da2899SCharles.Forsyth FT_Parameter* params ); 108*37da2899SCharles.Forsyth 109*37da2899SCharles.Forsyth 110*37da2899SCharles.Forsyth /*************************************************************************/ 111*37da2899SCharles.Forsyth /* */ 112*37da2899SCharles.Forsyth /* <FuncType> */ 113*37da2899SCharles.Forsyth /* TT_Done_Face_Func */ 114*37da2899SCharles.Forsyth /* */ 115*37da2899SCharles.Forsyth /* <Description> */ 116*37da2899SCharles.Forsyth /* A callback used to delete the common SFNT data from a face. */ 117*37da2899SCharles.Forsyth /* */ 118*37da2899SCharles.Forsyth /* <Input> */ 119*37da2899SCharles.Forsyth /* face :: A handle to the target face object. */ 120*37da2899SCharles.Forsyth /* */ 121*37da2899SCharles.Forsyth /* <Note> */ 122*37da2899SCharles.Forsyth /* This function does NOT destroy the face object. */ 123*37da2899SCharles.Forsyth /* */ 124*37da2899SCharles.Forsyth typedef void 125*37da2899SCharles.Forsyth (*TT_Done_Face_Func)( TT_Face face ); 126*37da2899SCharles.Forsyth 127*37da2899SCharles.Forsyth 128*37da2899SCharles.Forsyth typedef FT_Module_Interface 129*37da2899SCharles.Forsyth (*SFNT_Get_Interface_Func)( FT_Module module, 130*37da2899SCharles.Forsyth const char* func_interface ); 131*37da2899SCharles.Forsyth 132*37da2899SCharles.Forsyth 133*37da2899SCharles.Forsyth /*************************************************************************/ 134*37da2899SCharles.Forsyth /* */ 135*37da2899SCharles.Forsyth /* <FuncType> */ 136*37da2899SCharles.Forsyth /* TT_Load_SFNT_HeaderRec_Func */ 137*37da2899SCharles.Forsyth /* */ 138*37da2899SCharles.Forsyth /* <Description> */ 139*37da2899SCharles.Forsyth /* Loads the header of a SFNT font file. Supports collections. */ 140*37da2899SCharles.Forsyth /* */ 141*37da2899SCharles.Forsyth /* <Input> */ 142*37da2899SCharles.Forsyth /* face :: A handle to the target face object. */ 143*37da2899SCharles.Forsyth /* */ 144*37da2899SCharles.Forsyth /* stream :: The input stream. */ 145*37da2899SCharles.Forsyth /* */ 146*37da2899SCharles.Forsyth /* face_index :: The index of the TrueType font, if we are opening a */ 147*37da2899SCharles.Forsyth /* collection. */ 148*37da2899SCharles.Forsyth /* */ 149*37da2899SCharles.Forsyth /* <Output> */ 150*37da2899SCharles.Forsyth /* sfnt :: The SFNT header. */ 151*37da2899SCharles.Forsyth /* */ 152*37da2899SCharles.Forsyth /* <Return> */ 153*37da2899SCharles.Forsyth /* FreeType error code. 0 means success. */ 154*37da2899SCharles.Forsyth /* */ 155*37da2899SCharles.Forsyth /* <Note> */ 156*37da2899SCharles.Forsyth /* The stream cursor must be at the font file's origin. */ 157*37da2899SCharles.Forsyth /* */ 158*37da2899SCharles.Forsyth /* This function recognizes fonts embedded in a `TrueType */ 159*37da2899SCharles.Forsyth /* collection'. */ 160*37da2899SCharles.Forsyth /* */ 161*37da2899SCharles.Forsyth /* This function checks that the header is valid by looking at the */ 162*37da2899SCharles.Forsyth /* values of `search_range', `entry_selector', and `range_shift'. */ 163*37da2899SCharles.Forsyth /* */ 164*37da2899SCharles.Forsyth typedef FT_Error 165*37da2899SCharles.Forsyth (*TT_Load_SFNT_HeaderRec_Func)( TT_Face face, 166*37da2899SCharles.Forsyth FT_Stream stream, 167*37da2899SCharles.Forsyth FT_Long face_index, 168*37da2899SCharles.Forsyth SFNT_Header sfnt ); 169*37da2899SCharles.Forsyth 170*37da2899SCharles.Forsyth 171*37da2899SCharles.Forsyth /*************************************************************************/ 172*37da2899SCharles.Forsyth /* */ 173*37da2899SCharles.Forsyth /* <FuncType> */ 174*37da2899SCharles.Forsyth /* TT_Load_Directory_Func */ 175*37da2899SCharles.Forsyth /* */ 176*37da2899SCharles.Forsyth /* <Description> */ 177*37da2899SCharles.Forsyth /* Loads the table directory into a face object. */ 178*37da2899SCharles.Forsyth /* */ 179*37da2899SCharles.Forsyth /* <Input> */ 180*37da2899SCharles.Forsyth /* face :: A handle to the target face object. */ 181*37da2899SCharles.Forsyth /* */ 182*37da2899SCharles.Forsyth /* stream :: The input stream. */ 183*37da2899SCharles.Forsyth /* */ 184*37da2899SCharles.Forsyth /* sfnt :: The SFNT header. */ 185*37da2899SCharles.Forsyth /* */ 186*37da2899SCharles.Forsyth /* <Return> */ 187*37da2899SCharles.Forsyth /* FreeType error code. 0 means success. */ 188*37da2899SCharles.Forsyth /* */ 189*37da2899SCharles.Forsyth /* <Note> */ 190*37da2899SCharles.Forsyth /* The stream cursor must be on the first byte after the 4-byte font */ 191*37da2899SCharles.Forsyth /* format tag. This is the case just after a call to */ 192*37da2899SCharles.Forsyth /* TT_Load_Format_Tag(). */ 193*37da2899SCharles.Forsyth /* */ 194*37da2899SCharles.Forsyth typedef FT_Error 195*37da2899SCharles.Forsyth (*TT_Load_Directory_Func)( TT_Face face, 196*37da2899SCharles.Forsyth FT_Stream stream, 197*37da2899SCharles.Forsyth SFNT_Header sfnt ); 198*37da2899SCharles.Forsyth 199*37da2899SCharles.Forsyth 200*37da2899SCharles.Forsyth /*************************************************************************/ 201*37da2899SCharles.Forsyth /* */ 202*37da2899SCharles.Forsyth /* <FuncType> */ 203*37da2899SCharles.Forsyth /* TT_Load_Any_Func */ 204*37da2899SCharles.Forsyth /* */ 205*37da2899SCharles.Forsyth /* <Description> */ 206*37da2899SCharles.Forsyth /* Loads any font table into client memory. */ 207*37da2899SCharles.Forsyth /* */ 208*37da2899SCharles.Forsyth /* <Input> */ 209*37da2899SCharles.Forsyth /* face :: The face object to look for. */ 210*37da2899SCharles.Forsyth /* */ 211*37da2899SCharles.Forsyth /* tag :: The tag of table to load. Use the value 0 if you want */ 212*37da2899SCharles.Forsyth /* to access the whole font file, else set this parameter */ 213*37da2899SCharles.Forsyth /* to a valid TrueType table tag that you can forge with */ 214*37da2899SCharles.Forsyth /* the MAKE_TT_TAG macro. */ 215*37da2899SCharles.Forsyth /* */ 216*37da2899SCharles.Forsyth /* offset :: The starting offset in the table (or the file if */ 217*37da2899SCharles.Forsyth /* tag == 0). */ 218*37da2899SCharles.Forsyth /* */ 219*37da2899SCharles.Forsyth /* length :: The address of the decision variable: */ 220*37da2899SCharles.Forsyth /* */ 221*37da2899SCharles.Forsyth /* If length == NULL: */ 222*37da2899SCharles.Forsyth /* Loads the whole table. Returns an error if */ 223*37da2899SCharles.Forsyth /* `offset' == 0! */ 224*37da2899SCharles.Forsyth /* */ 225*37da2899SCharles.Forsyth /* If *length == 0: */ 226*37da2899SCharles.Forsyth /* Exits immediately; returning the length of the given */ 227*37da2899SCharles.Forsyth /* table or of the font file, depending on the value of */ 228*37da2899SCharles.Forsyth /* `tag'. */ 229*37da2899SCharles.Forsyth /* */ 230*37da2899SCharles.Forsyth /* If *length != 0: */ 231*37da2899SCharles.Forsyth /* Loads the next `length' bytes of table or font, */ 232*37da2899SCharles.Forsyth /* starting at offset `offset' (in table or font too). */ 233*37da2899SCharles.Forsyth /* */ 234*37da2899SCharles.Forsyth /* <Output> */ 235*37da2899SCharles.Forsyth /* buffer :: The address of target buffer. */ 236*37da2899SCharles.Forsyth /* */ 237*37da2899SCharles.Forsyth /* <Return> */ 238*37da2899SCharles.Forsyth /* TrueType error code. 0 means success. */ 239*37da2899SCharles.Forsyth /* */ 240*37da2899SCharles.Forsyth typedef FT_Error 241*37da2899SCharles.Forsyth (*TT_Load_Any_Func)( TT_Face face, 242*37da2899SCharles.Forsyth FT_ULong tag, 243*37da2899SCharles.Forsyth FT_Long offset, 244*37da2899SCharles.Forsyth FT_Byte *buffer, 245*37da2899SCharles.Forsyth FT_ULong* length ); 246*37da2899SCharles.Forsyth 247*37da2899SCharles.Forsyth 248*37da2899SCharles.Forsyth /*************************************************************************/ 249*37da2899SCharles.Forsyth /* */ 250*37da2899SCharles.Forsyth /* <FuncType> */ 251*37da2899SCharles.Forsyth /* TT_Load_SBit_Image_Func */ 252*37da2899SCharles.Forsyth /* */ 253*37da2899SCharles.Forsyth /* <Description> */ 254*37da2899SCharles.Forsyth /* Loads a given glyph sbit image from the font resource. This also */ 255*37da2899SCharles.Forsyth /* returns its metrics. */ 256*37da2899SCharles.Forsyth /* */ 257*37da2899SCharles.Forsyth /* <Input> */ 258*37da2899SCharles.Forsyth /* face :: The target face object. */ 259*37da2899SCharles.Forsyth /* */ 260*37da2899SCharles.Forsyth /* x_ppem :: The horizontal resolution in points per EM. */ 261*37da2899SCharles.Forsyth /* */ 262*37da2899SCharles.Forsyth /* y_ppem :: The vertical resolution in points per EM. */ 263*37da2899SCharles.Forsyth /* */ 264*37da2899SCharles.Forsyth /* glyph_index :: The current glyph index. */ 265*37da2899SCharles.Forsyth /* */ 266*37da2899SCharles.Forsyth /* stream :: The input stream. */ 267*37da2899SCharles.Forsyth /* */ 268*37da2899SCharles.Forsyth /* <Output> */ 269*37da2899SCharles.Forsyth /* amap :: The target pixmap. */ 270*37da2899SCharles.Forsyth /* */ 271*37da2899SCharles.Forsyth /* ametrics :: A big sbit metrics structure for the glyph image. */ 272*37da2899SCharles.Forsyth /* */ 273*37da2899SCharles.Forsyth /* <Return> */ 274*37da2899SCharles.Forsyth /* FreeType error code. 0 means success. Returns an error if no */ 275*37da2899SCharles.Forsyth /* glyph sbit exists for the index. */ 276*37da2899SCharles.Forsyth /* */ 277*37da2899SCharles.Forsyth /* <Note> */ 278*37da2899SCharles.Forsyth /* The `map.buffer' field is always freed before the glyph is loaded. */ 279*37da2899SCharles.Forsyth /* */ 280*37da2899SCharles.Forsyth typedef FT_Error 281*37da2899SCharles.Forsyth (*TT_Load_SBit_Image_Func)( TT_Face face, 282*37da2899SCharles.Forsyth FT_ULong strike_index, 283*37da2899SCharles.Forsyth FT_UInt glyph_index, 284*37da2899SCharles.Forsyth FT_UInt load_flags, 285*37da2899SCharles.Forsyth FT_Stream stream, 286*37da2899SCharles.Forsyth FT_Bitmap *amap, 287*37da2899SCharles.Forsyth TT_SBit_MetricsRec *ametrics ); 288*37da2899SCharles.Forsyth 289*37da2899SCharles.Forsyth 290*37da2899SCharles.Forsyth /*************************************************************************/ 291*37da2899SCharles.Forsyth /* */ 292*37da2899SCharles.Forsyth /* <FuncType> */ 293*37da2899SCharles.Forsyth /* TT_Set_SBit_Strike_Func */ 294*37da2899SCharles.Forsyth /* */ 295*37da2899SCharles.Forsyth /* <Description> */ 296*37da2899SCharles.Forsyth /* Selects an sbit strike for given horizontal and vertical ppem */ 297*37da2899SCharles.Forsyth /* values. */ 298*37da2899SCharles.Forsyth /* */ 299*37da2899SCharles.Forsyth /* <Input> */ 300*37da2899SCharles.Forsyth /* face :: The target face object. */ 301*37da2899SCharles.Forsyth /* */ 302*37da2899SCharles.Forsyth /* x_ppem :: The horizontal resolution in points per EM. */ 303*37da2899SCharles.Forsyth /* */ 304*37da2899SCharles.Forsyth /* y_ppem :: The vertical resolution in points per EM. */ 305*37da2899SCharles.Forsyth /* */ 306*37da2899SCharles.Forsyth /* <Output> */ 307*37da2899SCharles.Forsyth /* astrike_index :: The index of the sbit strike. */ 308*37da2899SCharles.Forsyth /* */ 309*37da2899SCharles.Forsyth /* <Return> */ 310*37da2899SCharles.Forsyth /* FreeType error code. 0 means success. Returns an error if no */ 311*37da2899SCharles.Forsyth /* sbit strike exists for the selected ppem values. */ 312*37da2899SCharles.Forsyth /* */ 313*37da2899SCharles.Forsyth typedef FT_Error 314*37da2899SCharles.Forsyth (*TT_Set_SBit_Strike_Func)( TT_Face face, 315*37da2899SCharles.Forsyth FT_Int x_ppem, 316*37da2899SCharles.Forsyth FT_Int y_ppem, 317*37da2899SCharles.Forsyth FT_ULong *astrike_index ); 318*37da2899SCharles.Forsyth 319*37da2899SCharles.Forsyth 320*37da2899SCharles.Forsyth /*************************************************************************/ 321*37da2899SCharles.Forsyth /* */ 322*37da2899SCharles.Forsyth /* <FuncType> */ 323*37da2899SCharles.Forsyth /* TT_Get_PS_Name_Func */ 324*37da2899SCharles.Forsyth /* */ 325*37da2899SCharles.Forsyth /* <Description> */ 326*37da2899SCharles.Forsyth /* Gets the PostScript glyph name of a glyph. */ 327*37da2899SCharles.Forsyth /* */ 328*37da2899SCharles.Forsyth /* <Input> */ 329*37da2899SCharles.Forsyth /* idx :: The glyph index. */ 330*37da2899SCharles.Forsyth /* */ 331*37da2899SCharles.Forsyth /* PSname :: The address of a string pointer. Will be NULL in case */ 332*37da2899SCharles.Forsyth /* of error, otherwise it is a pointer to the glyph name. */ 333*37da2899SCharles.Forsyth /* */ 334*37da2899SCharles.Forsyth /* You must not modify the returned string! */ 335*37da2899SCharles.Forsyth /* */ 336*37da2899SCharles.Forsyth /* <Output> */ 337*37da2899SCharles.Forsyth /* FreeType error code. 0 means success. */ 338*37da2899SCharles.Forsyth /* */ 339*37da2899SCharles.Forsyth typedef FT_Error 340*37da2899SCharles.Forsyth (*TT_Get_PS_Name_Func)( TT_Face face, 341*37da2899SCharles.Forsyth FT_UInt idx, 342*37da2899SCharles.Forsyth FT_String** PSname ); 343*37da2899SCharles.Forsyth 344*37da2899SCharles.Forsyth 345*37da2899SCharles.Forsyth /*************************************************************************/ 346*37da2899SCharles.Forsyth /* */ 347*37da2899SCharles.Forsyth /* <FuncType> */ 348*37da2899SCharles.Forsyth /* TT_Load_Metrics_Func */ 349*37da2899SCharles.Forsyth /* */ 350*37da2899SCharles.Forsyth /* <Description> */ 351*37da2899SCharles.Forsyth /* Loads the horizontal or vertical header in a face object. */ 352*37da2899SCharles.Forsyth /* */ 353*37da2899SCharles.Forsyth /* <Input> */ 354*37da2899SCharles.Forsyth /* face :: A handle to the target face object. */ 355*37da2899SCharles.Forsyth /* */ 356*37da2899SCharles.Forsyth /* stream :: The input stream. */ 357*37da2899SCharles.Forsyth /* */ 358*37da2899SCharles.Forsyth /* vertical :: A boolean flag. If set, load vertical metrics. */ 359*37da2899SCharles.Forsyth /* */ 360*37da2899SCharles.Forsyth /* <Return> */ 361*37da2899SCharles.Forsyth /* FreeType error code. 0 means success. */ 362*37da2899SCharles.Forsyth /* */ 363*37da2899SCharles.Forsyth typedef FT_Error 364*37da2899SCharles.Forsyth (*TT_Load_Metrics_Func)( TT_Face face, 365*37da2899SCharles.Forsyth FT_Stream stream, 366*37da2899SCharles.Forsyth FT_Bool vertical ); 367*37da2899SCharles.Forsyth 368*37da2899SCharles.Forsyth 369*37da2899SCharles.Forsyth /*************************************************************************/ 370*37da2899SCharles.Forsyth /* */ 371*37da2899SCharles.Forsyth /* <FuncType> */ 372*37da2899SCharles.Forsyth /* TT_CharMap_Load_Func */ 373*37da2899SCharles.Forsyth /* */ 374*37da2899SCharles.Forsyth /* <Description> */ 375*37da2899SCharles.Forsyth /* Loads a given TrueType character map into memory. */ 376*37da2899SCharles.Forsyth /* */ 377*37da2899SCharles.Forsyth /* <Input> */ 378*37da2899SCharles.Forsyth /* face :: A handle to the parent face object. */ 379*37da2899SCharles.Forsyth /* */ 380*37da2899SCharles.Forsyth /* stream :: A handle to the current stream object. */ 381*37da2899SCharles.Forsyth /* */ 382*37da2899SCharles.Forsyth /* <InOut> */ 383*37da2899SCharles.Forsyth /* cmap :: A pointer to a cmap object. */ 384*37da2899SCharles.Forsyth /* */ 385*37da2899SCharles.Forsyth /* <Return> */ 386*37da2899SCharles.Forsyth /* FreeType error code. 0 means success. */ 387*37da2899SCharles.Forsyth /* */ 388*37da2899SCharles.Forsyth /* <Note> */ 389*37da2899SCharles.Forsyth /* The function assumes that the stream is already in use (i.e., */ 390*37da2899SCharles.Forsyth /* opened). In case of error, all partially allocated tables are */ 391*37da2899SCharles.Forsyth /* released. */ 392*37da2899SCharles.Forsyth /* */ 393*37da2899SCharles.Forsyth typedef FT_Error 394*37da2899SCharles.Forsyth (*TT_CharMap_Load_Func)( TT_Face face, 395*37da2899SCharles.Forsyth TT_CMapTable cmap, 396*37da2899SCharles.Forsyth FT_Stream input ); 397*37da2899SCharles.Forsyth 398*37da2899SCharles.Forsyth 399*37da2899SCharles.Forsyth /*************************************************************************/ 400*37da2899SCharles.Forsyth /* */ 401*37da2899SCharles.Forsyth /* <FuncType> */ 402*37da2899SCharles.Forsyth /* TT_CharMap_Free_Func */ 403*37da2899SCharles.Forsyth /* */ 404*37da2899SCharles.Forsyth /* <Description> */ 405*37da2899SCharles.Forsyth /* Destroys a character mapping table. */ 406*37da2899SCharles.Forsyth /* */ 407*37da2899SCharles.Forsyth /* <Input> */ 408*37da2899SCharles.Forsyth /* face :: A handle to the parent face object. */ 409*37da2899SCharles.Forsyth /* */ 410*37da2899SCharles.Forsyth /* cmap :: A handle to a cmap object. */ 411*37da2899SCharles.Forsyth /* */ 412*37da2899SCharles.Forsyth /* <Return> */ 413*37da2899SCharles.Forsyth /* FreeType error code. 0 means success. */ 414*37da2899SCharles.Forsyth /* */ 415*37da2899SCharles.Forsyth typedef FT_Error 416*37da2899SCharles.Forsyth (*TT_CharMap_Free_Func)( TT_Face face, 417*37da2899SCharles.Forsyth TT_CMapTable cmap ); 418*37da2899SCharles.Forsyth 419*37da2899SCharles.Forsyth 420*37da2899SCharles.Forsyth /*************************************************************************/ 421*37da2899SCharles.Forsyth /* */ 422*37da2899SCharles.Forsyth /* <FuncType> */ 423*37da2899SCharles.Forsyth /* TT_Load_Table_Func */ 424*37da2899SCharles.Forsyth /* */ 425*37da2899SCharles.Forsyth /* <Description> */ 426*37da2899SCharles.Forsyth /* Loads a given TrueType table. */ 427*37da2899SCharles.Forsyth /* */ 428*37da2899SCharles.Forsyth /* <Input> */ 429*37da2899SCharles.Forsyth /* face :: A handle to the target face object. */ 430*37da2899SCharles.Forsyth /* */ 431*37da2899SCharles.Forsyth /* stream :: The input stream. */ 432*37da2899SCharles.Forsyth /* */ 433*37da2899SCharles.Forsyth /* <Return> */ 434*37da2899SCharles.Forsyth /* FreeType error code. 0 means success. */ 435*37da2899SCharles.Forsyth /* */ 436*37da2899SCharles.Forsyth /* <Note> */ 437*37da2899SCharles.Forsyth /* The function will use `face->goto_table' to seek the stream to */ 438*37da2899SCharles.Forsyth /* the start of the table. */ 439*37da2899SCharles.Forsyth /* */ 440*37da2899SCharles.Forsyth typedef FT_Error 441*37da2899SCharles.Forsyth (*TT_Load_Table_Func)( TT_Face face, 442*37da2899SCharles.Forsyth FT_Stream stream ); 443*37da2899SCharles.Forsyth 444*37da2899SCharles.Forsyth 445*37da2899SCharles.Forsyth /*************************************************************************/ 446*37da2899SCharles.Forsyth /* */ 447*37da2899SCharles.Forsyth /* <FuncType> */ 448*37da2899SCharles.Forsyth /* TT_Free_Table_Func */ 449*37da2899SCharles.Forsyth /* */ 450*37da2899SCharles.Forsyth /* <Description> */ 451*37da2899SCharles.Forsyth /* Frees a given TrueType table. */ 452*37da2899SCharles.Forsyth /* */ 453*37da2899SCharles.Forsyth /* <Input> */ 454*37da2899SCharles.Forsyth /* face :: A handle to the target face object. */ 455*37da2899SCharles.Forsyth /* */ 456*37da2899SCharles.Forsyth typedef void 457*37da2899SCharles.Forsyth (*TT_Free_Table_Func)( TT_Face face ); 458*37da2899SCharles.Forsyth 459*37da2899SCharles.Forsyth 460*37da2899SCharles.Forsyth /*************************************************************************/ 461*37da2899SCharles.Forsyth /* */ 462*37da2899SCharles.Forsyth /* <Struct> */ 463*37da2899SCharles.Forsyth /* SFNT_Interface */ 464*37da2899SCharles.Forsyth /* */ 465*37da2899SCharles.Forsyth /* <Description> */ 466*37da2899SCharles.Forsyth /* This structure holds pointers to the functions used to load and */ 467*37da2899SCharles.Forsyth /* free the basic tables that are required in a `sfnt' font file. */ 468*37da2899SCharles.Forsyth /* */ 469*37da2899SCharles.Forsyth /* <Fields> */ 470*37da2899SCharles.Forsyth /* Check the various xxx_Func() descriptions for details. */ 471*37da2899SCharles.Forsyth /* */ 472*37da2899SCharles.Forsyth typedef struct SFNT_Interface_ 473*37da2899SCharles.Forsyth { 474*37da2899SCharles.Forsyth TT_Loader_GotoTableFunc goto_table; 475*37da2899SCharles.Forsyth 476*37da2899SCharles.Forsyth TT_Init_Face_Func init_face; 477*37da2899SCharles.Forsyth TT_Load_Face_Func load_face; 478*37da2899SCharles.Forsyth TT_Done_Face_Func done_face; 479*37da2899SCharles.Forsyth SFNT_Get_Interface_Func get_interface; 480*37da2899SCharles.Forsyth 481*37da2899SCharles.Forsyth TT_Load_Any_Func load_any; 482*37da2899SCharles.Forsyth TT_Load_SFNT_HeaderRec_Func load_sfnt_header; 483*37da2899SCharles.Forsyth TT_Load_Directory_Func load_directory; 484*37da2899SCharles.Forsyth 485*37da2899SCharles.Forsyth /* these functions are called by `load_face' but they can also */ 486*37da2899SCharles.Forsyth /* be called from external modules, if there is a need to do so */ 487*37da2899SCharles.Forsyth TT_Load_Table_Func load_header; 488*37da2899SCharles.Forsyth TT_Load_Metrics_Func load_metrics; 489*37da2899SCharles.Forsyth TT_Load_Table_Func load_charmaps; 490*37da2899SCharles.Forsyth TT_Load_Table_Func load_max_profile; 491*37da2899SCharles.Forsyth TT_Load_Table_Func load_os2; 492*37da2899SCharles.Forsyth TT_Load_Table_Func load_psnames; 493*37da2899SCharles.Forsyth 494*37da2899SCharles.Forsyth TT_Load_Table_Func load_names; 495*37da2899SCharles.Forsyth TT_Free_Table_Func free_names; 496*37da2899SCharles.Forsyth 497*37da2899SCharles.Forsyth /* optional tables */ 498*37da2899SCharles.Forsyth TT_Load_Table_Func load_hdmx; 499*37da2899SCharles.Forsyth TT_Free_Table_Func free_hdmx; 500*37da2899SCharles.Forsyth 501*37da2899SCharles.Forsyth TT_Load_Table_Func load_kerning; 502*37da2899SCharles.Forsyth TT_Load_Table_Func load_gasp; 503*37da2899SCharles.Forsyth TT_Load_Table_Func load_pclt; 504*37da2899SCharles.Forsyth 505*37da2899SCharles.Forsyth /* see `ttload.h' */ 506*37da2899SCharles.Forsyth TT_Load_Table_Func load_bitmap_header; 507*37da2899SCharles.Forsyth 508*37da2899SCharles.Forsyth /* see `ttsbit.h' */ 509*37da2899SCharles.Forsyth TT_Set_SBit_Strike_Func set_sbit_strike; 510*37da2899SCharles.Forsyth TT_Load_Table_Func load_sbits; 511*37da2899SCharles.Forsyth TT_Load_SBit_Image_Func load_sbit_image; 512*37da2899SCharles.Forsyth TT_Free_Table_Func free_sbits; 513*37da2899SCharles.Forsyth 514*37da2899SCharles.Forsyth /* see `ttpost.h' */ 515*37da2899SCharles.Forsyth TT_Get_PS_Name_Func get_psname; 516*37da2899SCharles.Forsyth TT_Free_Table_Func free_psnames; 517*37da2899SCharles.Forsyth 518*37da2899SCharles.Forsyth /* see `ttcmap.h' */ 519*37da2899SCharles.Forsyth TT_CharMap_Load_Func load_charmap; 520*37da2899SCharles.Forsyth TT_CharMap_Free_Func free_charmap; 521*37da2899SCharles.Forsyth 522*37da2899SCharles.Forsyth } SFNT_Interface; 523*37da2899SCharles.Forsyth 524*37da2899SCharles.Forsyth 525*37da2899SCharles.Forsyth /* transitional */ 526*37da2899SCharles.Forsyth typedef SFNT_Interface* SFNT_Service; 527*37da2899SCharles.Forsyth 528*37da2899SCharles.Forsyth 529*37da2899SCharles.Forsyth FT_END_HEADER 530*37da2899SCharles.Forsyth 531*37da2899SCharles.Forsyth #endif /* __SFNT_H__ */ 532*37da2899SCharles.Forsyth 533*37da2899SCharles.Forsyth 534*37da2899SCharles.Forsyth /* END */ 535