1 2 // Copyright Michael D. Parker 2018. 3 // Distributed under the Boost Software License, Version 1.0. 4 // (See accompanying file LICENSE_1_0.txt or copy at 5 // http://www.boost.org/LICENSE_1_0.txt) 6 7 module bindbc.freetype.bind.freetype; 8 9 import core.stdc.config; 10 import bindbc.freetype.config; 11 import bindbc.freetype.bind.ftimage, 12 bindbc.freetype.bind.ftsystem, 13 bindbc.freetype.bind.fttypes; 14 15 struct FT_Glyph_Metrics { 16 FT_Pos width; 17 FT_Pos height; 18 FT_Pos horiBearingX; 19 FT_Pos horiBearingY; 20 FT_Pos horiAdvance; 21 FT_Pos vertBearingX; 22 FT_Pos vertBearingY; 23 FT_Pos vertAdvance; 24 } 25 26 struct FT_Bitmap_Size { 27 FT_Short height; 28 FT_Short width; 29 FT_Pos size; 30 FT_Pos x_ppem; 31 FT_Pos y_ppem; 32 } 33 34 struct FT_LibraryRec; 35 struct FT_ModuleRec; 36 struct FT_DriverRec; 37 struct FT_RendererRec; 38 39 alias FT_Library = FT_LibraryRec*; 40 alias FT_Module = FT_ModuleRec*; 41 alias FT_Driver = FT_DriverRec*; 42 alias FT_Renderer = FT_RendererRec*; 43 alias FT_Face = FT_FaceRec*; 44 alias FT_Size = FT_SizeRec*; 45 alias FT_GlyphSlot = FT_GlyphSlotRec*; 46 alias FT_CharMap = FT_CharMapRec*; 47 48 alias FT_ENC_TAG = FT_MAKE_TAG; 49 50 alias FT_Encoding = FT_Tag; 51 enum :FT_Tag { 52 FT_ENCODING_NONE = 0, 53 FT_ENCODING_MS_SYMBOL = FT_MAKE_TAG('s','y','m','b'), 54 FT_ENCODING_UNICODE = FT_MAKE_TAG('u','n','i','c'), 55 FT_ENCODING_SJIS = FT_MAKE_TAG('s','j','i','s'), 56 FT_ENCODING_PRC = FT_MAKE_TAG('g','b',' ',' '), 57 FT_ENCODING_BIG5 = FT_MAKE_TAG('b','i','g','5'), 58 FT_ENCODING_WANSUNG = FT_MAKE_TAG('w','a','n','s'), 59 FT_ENCODING_JOHAB = FT_MAKE_TAG('j','o','h','a'), 60 FT_ENCODING_GB2312 = FT_ENCODING_PRC, 61 FT_ENCODING_MS_SJIS = FT_ENCODING_SJIS, 62 FT_ENCODING_MS_GB2312 = FT_ENCODING_PRC, 63 FT_ENCODING_MS_BIG5 = FT_ENCODING_BIG5, 64 FT_ENCODING_MS_WANSUNG = FT_ENCODING_WANSUNG, 65 FT_ENCODING_MS_JOHAB = FT_ENCODING_JOHAB, 66 FT_ENCODING_ADOBE_STANDARD = FT_MAKE_TAG('A','D','O','B'), 67 FT_ENCODING_ADOBE_EXPERT = FT_MAKE_TAG('A','D','B','E'), 68 FT_ENCODING_ADOBE_CUSTOM = FT_MAKE_TAG('A','D','B','C'), 69 FT_ENCODING_ADOBE_LATIN_1 = FT_MAKE_TAG('l','a','t','1'), 70 FT_ENCODING_OLD_LATIN_2 = FT_MAKE_TAG('l','a','t','2'), 71 FT_ENCODING_APPLE_ROMAN = FT_MAKE_TAG('a','r','m','n'), 72 } 73 74 struct FT_CharMapRec { 75 FT_Face face; 76 FT_Encoding encoding; 77 FT_UShort platform_id; 78 FT_UShort encoding_id; 79 } 80 81 struct FT_Face_InternalRec; 82 alias FT_Face_Internal = FT_Face_InternalRec*; 83 84 struct FT_FaceRec { 85 FT_Long num_faces; 86 FT_Long face_index; 87 FT_Long face_flags; 88 FT_Long style_flags; 89 FT_Long num_glyphs; 90 FT_String* family_name; 91 FT_String* style_name; 92 FT_Int num_fixed_sizes; 93 FT_Bitmap_Size* available_sizes; 94 FT_Int num_charmaps; 95 FT_CharMap* charmaps; 96 FT_Generic generic; 97 FT_BBox bbox; 98 FT_UShort units_per_EM; 99 FT_Short ascender; 100 FT_Short descender; 101 FT_Short height; 102 FT_Short max_advance_width; 103 FT_Short max_advance_height; 104 FT_Short underline_position; 105 FT_Short underline_thickness; 106 FT_GlyphSlot glyph; 107 FT_Size size; 108 FT_CharMap charmap; 109 FT_Driver driver; 110 FT_Memory memory; 111 FT_Stream stream; 112 FT_ListRec sizes_list; 113 FT_Generic autohint; 114 void* extensions; 115 FT_Face_Internal internal; 116 } 117 118 enum : uint { 119 FT_FACE_FLAG_SCALABLE = 1 << 0, 120 FT_FACE_FLAG_FIXED_SIZES = 1 << 1, 121 FT_FACE_FLAG_FIXED_WIDTH = 1 << 2, 122 FT_FACE_FLAG_SFNT = 1 << 3, 123 FT_FACE_FLAG_HORIZONTAL = 1 << 4, 124 FT_FACE_FLAG_VERTICAL = 1 << 5, 125 FT_FACE_FLAG_KERNING = 1 << 6, 126 FT_FACE_FLAG_FAST_GLYPHS = 1 << 7, 127 FT_FACE_FLAG_MULTIPLE_MASTERS = 1 << 8, 128 FT_FACE_FLAG_GLYPH_NAMES = 1 << 9, 129 FT_FACE_FLAG_EXTERNAL_STREAM = 1 << 10, 130 FT_FACE_FLAG_HINTER = 1 << 11, 131 FT_FACE_FLAG_CID_KEYED = 1 << 12, 132 FT_FACE_FLAG_TRICKY = 1 << 13, 133 FT_FACE_FLAG_COLOR = 1 << 14, 134 135 // Added in Freetype 2.9 136 FT_FACE_FLAG_VARIATION = 1 << 15, 137 } 138 139 @nogc nothrow { 140 bool FT_HAS_HORIZONTAL(FT_Face face) { 141 return (face.face_flags & FT_FACE_FLAG_HORIZONTAL) != 0; 142 } 143 144 bool FT_HAS_VERTICAL(FT_Face face) { 145 return (face.face_flags & FT_FACE_FLAG_VERTICAL) != 0; 146 } 147 148 bool FT_HAS_KERNING(FT_Face face) { 149 return (face.face_flags & FT_FACE_FLAG_KERNING) != 0; 150 } 151 152 bool FT_IS_SCALABLE(FT_Face face) { 153 return (face.face_flags & FT_FACE_FLAG_SCALABLE) != 0; 154 } 155 156 bool FT_IS_SFNT(FT_Face face) { 157 return (face.face_flags & FT_FACE_FLAG_SFNT) != 0; 158 } 159 160 bool FT_IS_FIXED_WIDTH(FT_Face face) { 161 return (face.face_flags & FT_FACE_FLAG_FIXED_WIDTH) != 0; 162 } 163 164 bool FT_HAS_FIXED_SIZES(FT_Face face) { 165 return (face.face_flags & FT_FACE_FLAG_FIXED_SIZES) != 0; 166 } 167 168 bool FT_HAS_FAST_GLYPHS(FT_Face face) { 169 return false; 170 } 171 172 bool FT_HAS_GLYPH_NAMES(FT_Face face) { 173 return (face.face_flags & FT_FACE_FLAG_GLYPH_NAMES) != 0; 174 } 175 176 bool FT_HAS_MULTIPLE_MASTERS(FT_Face face) { 177 return (face.face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS) != 0; 178 } 179 180 bool FT_IS_CID_KEYED(FT_Face face) { 181 return (face.face_flags & FT_FACE_FLAG_CID_KEYED) != 0; 182 } 183 184 bool FT_IS_TRICKY(FT_Face face) { 185 return (face.face_flags & FT_FACE_FLAG_TRICKY) != 0; 186 } 187 188 bool FT_HAS_COLOR(FT_Face face) { 189 return (face.face_flags & FT_FACE_FLAG_COLOR) != 0; 190 } 191 192 static if(ftSupport >= FTSupport.ft27) { 193 bool FT_IS_NAMED_INSTANCE(FT_Face face) { 194 return (face.face_index & 0x7FFF0000L) != 0; 195 } 196 } 197 198 static if(ftSupport >= FTSupport.ft29) { 199 bool FT_IS_VARIATION(FT_Face face) { 200 return (face.face_flags & FT_FACE_FLAG_VARIATION) != 0; 201 } 202 } 203 } 204 205 enum { 206 FT_STYLE_FLAG_ITALIC = 1 << 0, 207 FT_STYLE_FLAG_BOLD = 1 << 1, 208 } 209 210 struct FT_Size_InternalRec; 211 alias FT_Size_Internal = FT_Size_InternalRec*; 212 213 struct FT_Size_Metrics { 214 FT_UShort x_ppem; 215 FT_UShort y_ppem; 216 217 FT_Fixed x_scale; 218 FT_Fixed y_scale; 219 220 FT_Pos ascender; 221 FT_Pos descender; 222 FT_Pos height; 223 FT_Pos max_advance; 224 } 225 226 struct FT_SizeRec { 227 FT_Face face; 228 FT_Generic generic; 229 FT_Size_Metrics metrics; 230 FT_Size_Internal internal; 231 } 232 233 struct FT_SubGlyphRec; 234 struct FT_Slot_InternalRec; 235 alias FT_SubGlyph = FT_SubGlyphRec*; 236 alias FT_Slot_Internal = FT_Slot_InternalRec*; 237 238 struct FT_GlyphSlotRec { 239 FT_Library library; 240 FT_Face face; 241 FT_GlyphSlot next; 242 243 // Renamed from "reserved" in Freetype 2.10 244 FT_UInt glyph_index; 245 246 FT_Generic generic; 247 FT_Glyph_Metrics metrics; 248 FT_Fixed linearHoriAdvance; 249 FT_Fixed linearVertAdvance; 250 FT_Vector advance; 251 FT_Glyph_Format format; 252 FT_Bitmap bitmap; 253 FT_Int bitmap_left; 254 FT_Int bitmap_top; 255 FT_Outline outline; 256 FT_UInt num_subglyphs; 257 FT_SubGlyph subglyphs; 258 void* control_data; 259 c_long control_len; 260 FT_Pos lsb_delta; 261 FT_Pos rsb_delta; 262 void* other; 263 FT_Slot_Internal internal; 264 } 265 266 enum : uint { 267 FT_OPEN_MEMORY = 0x1, 268 FT_OPEN_STREAM = 0x2, 269 FT_OPEN_PATHNAME = 0x4, 270 FT_OPEN_DRIVER = 0x8, 271 FT_OPEN_PARAMS = 0x10, 272 } 273 274 struct FT_Parameter { 275 FT_ULong tag; 276 FT_Pointer data; 277 } 278 279 struct FT_Open_Args { 280 FT_UInt flags; 281 const(FT_Byte)* memory_base; 282 FT_Long memory_size; 283 FT_String* pathname; 284 FT_Stream stream; 285 FT_Module driver; 286 FT_Int num_params; 287 FT_Parameter* params; 288 } 289 290 alias FT_Size_Request_Type = int; 291 enum { 292 FT_SIZE_REQUEST_TYPE_NOMINAL, 293 FT_SIZE_REQUEST_TYPE_REAL_DIM, 294 FT_SIZE_REQUEST_TYPE_BBOX, 295 FT_SIZE_REQUEST_TYPE_CELL, 296 FT_SIZE_REQUEST_TYPE_SCALES, 297 FT_SIZE_REQUEST_TYPE_MAX 298 } 299 300 struct FT_Size_RequestRec { 301 FT_Size_Request_Type type; 302 FT_Long width; 303 FT_Long height; 304 FT_UInt horiResolution; 305 FT_UInt vertResolution; 306 } 307 308 alias FT_Size_Request = FT_Size_RequestRec*; 309 310 static if(ftSupport >= FTSupport.ft27) { 311 enum : uint { 312 FT_LOAD_DEFAULT = 0x0, 313 FT_LOAD_NO_SCALE = 1 << 0, 314 FT_LOAD_NO_HINTING = 1 << 1, 315 FT_LOAD_RENDER = 1 << 2, 316 FT_LOAD_NO_BITMAP = 1 << 3, 317 FT_LOAD_VERTICAL_LAYOUT = 1 << 4, 318 FT_LOAD_FORCE_AUTOHINT = 1 << 5, 319 FT_LOAD_CROP_BITMAP = 1 << 6, 320 FT_LOAD_PEDANTIC = 1 << 7, 321 FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH = 1 << 9, 322 FT_LOAD_NO_RECURSE = 1 << 10, 323 FT_LOAD_IGNORE_TRANSFORM = 1 << 11, 324 FT_LOAD_MONOCHROME = 1 << 12, 325 FT_LOAD_LINEAR_DESIGN = 1 << 13, 326 FT_LOAD_NO_AUTOHINT = 1 << 15, 327 FT_LOAD_COLOR = 1 << 20, 328 FT_LOAD_COMPUTE_METRICS = 1 << 21, 329 FT_LOAD_BITMAP_METRICS_ONLY = 1 << 22, 330 } 331 } 332 else { 333 enum : uint { 334 FT_LOAD_DEFAULT = 0x0, 335 FT_LOAD_NO_SCALE = 1 << 0, 336 FT_LOAD_NO_HINTING = 1 << 1, 337 FT_LOAD_RENDER = 1 << 2, 338 FT_LOAD_NO_BITMAP = 1 << 3, 339 FT_LOAD_VERTICAL_LAYOUT = 1 << 4, 340 FT_LOAD_FORCE_AUTOHINT = 1 << 5, 341 FT_LOAD_CROP_BITMAP = 1 << 6, 342 FT_LOAD_PEDANTIC = 1 << 7, 343 FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH = 1 << 9, 344 FT_LOAD_NO_RECURSE = 1 << 10, 345 FT_LOAD_IGNORE_TRANSFORM = 1 << 11, 346 FT_LOAD_MONOCHROME = 1 << 12, 347 FT_LOAD_LINEAR_DESIGN = 1 << 13, 348 FT_LOAD_NO_AUTOHINT = 1 << 15, 349 FT_LOAD_COLOR = 1 << 20, 350 FT_LOAD_COMPUTE_METRICS = 1 << 21, 351 } 352 } 353 354 enum { 355 FT_LOAD_TARGET_NORMAL = (FT_RENDER_MODE_NORMAL & 15) << 16, 356 FT_LOAD_TARGET_LIGHT = (FT_RENDER_MODE_LIGHT & 15) << 16, 357 FT_LOAD_TARGET_MONO = (FT_RENDER_MODE_MONO & 15) << 16, 358 FT_LOAD_TARGET_LCD = (FT_RENDER_MODE_LCD & 15) << 16, 359 FT_LOAD_TARGET_LCD_V = (FT_RENDER_MODE_LCD_V & 15) << 16, 360 } 361 362 @nogc FT_Render_Mode FT_LOAD_TARGET_MODE(uint x) nothrow { 363 return cast(FT_Render_Mode)((x >> 16) & 15); 364 } 365 366 alias FT_Render_Mode = uint; 367 enum { 368 FT_RENDER_MODE_NORMAL = 0, 369 FT_RENDER_MODE_LIGHT, 370 FT_RENDER_MODE_MONO, 371 FT_RENDER_MODE_LCD, 372 FT_RENDER_MODE_LCD_V, 373 FT_RENDER_MODE_MAX 374 } 375 376 enum FT_Kerning_Mode { 377 FT_KERNING_DEFAULT = 0, 378 FT_KERNING_UNFITTED, 379 FT_KERNING_UNSCALED 380 } 381 382 enum { 383 FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS = 1, 384 FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES = 2, 385 FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID = 4, 386 FT_SUBGLYPH_FLAG_SCALE = 8, 387 FT_SUBGLYPH_FLAG_XY_SCALE = 0x40, 388 FT_SUBGLYPH_FLAG_2X2 = 0x80, 389 FT_SUBGLYPH_FLAG_USE_MY_METRICS = 0x200, 390 } 391 392 enum { 393 FT_FSTYPE_INSTALLABLE_EMBEDDING = 0x0000, 394 FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING = 0x0002, 395 FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING = 0x0004, 396 FT_FSTYPE_EDITABLE_EMBEDDING = 0x0008, 397 FT_FSTYPE_NO_SUBSETTING = 0x0100, 398 FT_FSTYPE_BITMAP_EMBEDDING_ONLY = 0x0200, 399 } 400 401 version(BindFT_Static) { 402 extern(C) @nogc nothrow { 403 FT_Error FT_Init_FreeType(FT_Library*); 404 FT_Error FT_Done_FreeType(FT_Library); 405 FT_Error FT_New_Face(FT_Library,const(char)*,FT_Long,FT_Face*); 406 FT_Error FT_New_Memory_Face(FT_Library,const(FT_Byte)*,FT_Long,FT_Long,FT_Face*); 407 FT_Error FT_Open_Face(FT_Library,const(FT_Open_Args)*,FT_Long,FT_Face*); 408 FT_Error FT_Attach_File(FT_Face,const(char)*); 409 FT_Error FT_Attach_Stream(FT_Face,FT_Open_Args*); 410 FT_Error FT_Reference_Face(FT_Face); 411 FT_Error FT_Done_Face(FT_Face); 412 FT_Error FT_Select_Size(FT_Face,FT_Int); 413 FT_Error FT_Request_Size(FT_Face,FT_Size_Request); 414 FT_Error FT_Set_Char_Size(FT_Face,FT_F26Dot6,FT_F26Dot6,FT_UInt,FT_UInt); 415 FT_Error FT_Set_Pixel_Sizes(FT_Face,FT_UInt,FT_UInt); 416 FT_Error FT_Load_Glyph(FT_Face,FT_UInt,FT_Int32); 417 FT_Error FT_Load_Char(FT_Face,FT_ULong,FT_Int32); 418 void FT_Set_Transform(FT_Face,FT_Matrix*,FT_Vector*); 419 FT_Error FT_Render_Glyph(FT_GlyphSlot,FT_Render_Mode); 420 FT_Error FT_Get_Kerning(FT_Face,FT_UInt,FT_UInt,FT_UInt,FT_Vector*); 421 FT_Error FT_Get_Track_Kerning(FT_Face,FT_Fixed,FT_Int,FT_Fixed*); 422 FT_Error FT_Get_Glyph_Name(FT_Face,FT_UInt,FT_Pointer,FT_UInt); 423 const(char)* FT_Get_Postscript_Name(FT_Face); 424 FT_Error FT_Select_Charmap(FT_Face,FT_Encoding); 425 FT_Error FT_Set_Charmap(FT_Face,FT_CharMap); 426 FT_Int FT_Get_Charmap_Index(FT_CharMap); 427 FT_UInt FT_Get_Char_Index(FT_Face,FT_ULong); 428 FT_ULong FT_Get_First_Char(FT_Face,FT_UInt*); 429 FT_ULong FT_Get_Next_Char(FT_Face,FT_ULong,FT_UInt*); 430 FT_UInt FT_Get_Name_Index(FT_Face,FT_String*); 431 FT_Error FT_Get_SubGlyph_Info(FT_GlyphSlot,FT_UInt,FT_Int*,FT_UInt*,FT_Int*,FT_Int*,FT_Matrix*); 432 FT_UShort FT_Get_FSType_Flags(FT_Face); 433 FT_UInt FT_Face_GetCharVariantIndex(FT_Face,FT_ULong,FT_ULong); 434 FT_Int FT_Face_GetCharVariantIsDefault(FT_Face,FT_ULong,FT_ULong); 435 FT_UInt32* FT_Face_GetVariantSelectors(FT_Face); 436 FT_UInt32* FT_Face_GetVariantsOfChar(FT_Face,FT_ULong); 437 FT_UInt32* FT_Face_GetCharsOfVariant(FT_Face,FT_ULong); 438 FT_Long FT_MulDiv(FT_Long,FT_Long,FT_Long); 439 FT_Long FT_MulFix(FT_Long,FT_Long); 440 FT_Long FT_DivFix(FT_Long,FT_Long); 441 FT_Fixed FT_RoundFix(FT_Fixed); 442 FT_Fixed FT_CeilFix(FT_Fixed); 443 FT_Fixed FT_FloorFix(FT_Fixed); 444 void FT_Vector_Transform(FT_Vector*,FT_Matrix*); 445 void FT_Library_Version(FT_Library,FT_Int*,FT_Int*,FT_Int*); 446 FT_Bool FT_Face_CheckTrueTypePatents(FT_Face); 447 FT_Bool FT_Face_SetUnpatentedHinting(FT_Face,FT_Bool); 448 } 449 450 static if(ftSupport >= FTSupport.ft28) { 451 FT_Error FT_Face_Properties(FT_Face,FT_String*); 452 } 453 } 454 else { 455 extern(C) @nogc nothrow { 456 alias pFT_Init_FreeType = FT_Error function(FT_Library*); 457 alias pFT_Done_FreeType = FT_Error function(FT_Library); 458 alias pFT_New_Face = FT_Error function(FT_Library,const(char)*,FT_Long,FT_Face*); 459 alias pFT_New_Memory_Face = FT_Error function(FT_Library,const(FT_Byte)*,FT_Long,FT_Long,FT_Face*); 460 alias pFT_Open_Face = FT_Error function(FT_Library,const(FT_Open_Args)*,FT_Long,FT_Face*); 461 alias pFT_Attach_File = FT_Error function(FT_Face,const(char)*); 462 alias pFT_Attach_Stream = FT_Error function(FT_Face,FT_Open_Args*); 463 alias pFT_Reference_Face = FT_Error function(FT_Face); 464 alias pFT_Done_Face = FT_Error function(FT_Face); 465 alias pFT_Select_Size = FT_Error function(FT_Face,FT_Int); 466 alias pFT_Request_Size = FT_Error function(FT_Face,FT_Size_Request); 467 alias pFT_Set_Char_Size = FT_Error function(FT_Face,FT_F26Dot6,FT_F26Dot6,FT_UInt,FT_UInt); 468 alias pFT_Set_Pixel_Sizes = FT_Error function(FT_Face,FT_UInt,FT_UInt); 469 alias pFT_Load_Glyph = FT_Error function(FT_Face,FT_UInt,FT_Int32); 470 alias pFT_Load_Char = FT_Error function(FT_Face,FT_ULong,FT_Int32); 471 alias pFT_Set_Transform = void function(FT_Face,FT_Matrix*,FT_Vector*); 472 alias pFT_Render_Glyph = FT_Error function(FT_GlyphSlot,FT_Render_Mode); 473 alias pFT_Get_Kerning = FT_Error function(FT_Face,FT_UInt,FT_UInt,FT_UInt,FT_Vector*); 474 alias pFT_Get_Track_Kerning = FT_Error function(FT_Face,FT_Fixed,FT_Int,FT_Fixed*); 475 alias pFT_Get_Glyph_Name = FT_Error function(FT_Face,FT_UInt,FT_Pointer,FT_UInt); 476 alias pFT_Get_Postscript_Name = const(char)* function(FT_Face); 477 alias pFT_Select_Charmap = FT_Error function(FT_Face,FT_Encoding); 478 alias pFT_Set_Charmap = FT_Error function(FT_Face,FT_CharMap); 479 alias pFT_Get_Charmap_Index = FT_Int function(FT_CharMap); 480 alias pFT_Get_Char_Index = FT_UInt function(FT_Face,FT_ULong); 481 alias pFT_Get_First_Char = FT_ULong function(FT_Face,FT_UInt*); 482 alias pFT_Get_Next_Char = FT_ULong function(FT_Face,FT_ULong,FT_UInt*); 483 alias pFT_Get_Name_Index = FT_UInt function(FT_Face,FT_String*); 484 alias pFT_Get_SubGlyph_Info = FT_Error function(FT_GlyphSlot,FT_UInt,FT_Int*,FT_UInt*,FT_Int*,FT_Int*,FT_Matrix*); 485 alias pFT_Get_FSType_Flags = FT_UShort function(FT_Face); 486 alias pFT_Face_GetCharVariantIndex = FT_UInt function(FT_Face,FT_ULong,FT_ULong); 487 alias pFT_Face_GetCharVariantIsDefault = FT_Int function(FT_Face,FT_ULong,FT_ULong); 488 alias pFT_Face_GetVariantSelectors = FT_UInt32* function(FT_Face); 489 alias pFT_Face_GetVariantsOfChar = FT_UInt32* function(FT_Face,FT_ULong); 490 alias pFT_Face_GetCharsOfVariant = FT_UInt32* function(FT_Face,FT_ULong); 491 alias pFT_MulDiv = FT_Long function(FT_Long,FT_Long,FT_Long); 492 alias pFT_MulFix = FT_Long function(FT_Long,FT_Long); 493 alias pFT_DivFix = FT_Long function(FT_Long,FT_Long); 494 alias pFT_RoundFix = FT_Fixed function(FT_Fixed); 495 alias pFT_CeilFix = FT_Fixed function(FT_Fixed); 496 alias pFT_FloorFix = FT_Fixed function(FT_Fixed); 497 alias pFT_Vector_Transform = void function(FT_Vector*,FT_Matrix*); 498 alias pFT_Library_Version = void function(FT_Library,FT_Int*,FT_Int*,FT_Int*); 499 alias pFT_Face_CheckTrueTypePatents = FT_Bool function(FT_Face); 500 alias pFT_Face_SetUnpatentedHinting = FT_Bool function(FT_Face,FT_Bool); 501 502 static if(ftSupport >= FTSupport.ft28) { 503 alias pFT_Face_Properties = FT_Error function(FT_Face,FT_String*); 504 } 505 } 506 507 __gshared { 508 pFT_Init_FreeType FT_Init_FreeType; 509 pFT_Done_FreeType FT_Done_FreeType; 510 pFT_New_Face FT_New_Face; 511 pFT_New_Memory_Face FT_New_Memory_Face; 512 pFT_Open_Face FT_Open_Face; 513 pFT_Attach_File FT_Attach_File; 514 pFT_Attach_Stream FT_Attach_Stream; 515 pFT_Reference_Face FT_Reference_Face; 516 pFT_Done_Face FT_Done_Face; 517 pFT_Select_Size FT_Select_Size; 518 pFT_Request_Size FT_Request_Size; 519 pFT_Set_Char_Size FT_Set_Char_Size; 520 pFT_Set_Pixel_Sizes FT_Set_Pixel_Sizes; 521 pFT_Load_Glyph FT_Load_Glyph; 522 pFT_Load_Char FT_Load_Char; 523 pFT_Set_Transform FT_Set_Transform; 524 pFT_Render_Glyph FT_Render_Glyph; 525 pFT_Get_Kerning FT_Get_Kerning; 526 pFT_Get_Track_Kerning FT_Get_Track_Kerning; 527 pFT_Get_Glyph_Name FT_Get_Glyph_Name; 528 pFT_Get_Postscript_Name FT_Get_Postscript_Name; 529 pFT_Select_Charmap FT_Select_Charmap; 530 pFT_Set_Charmap FT_Set_Charmap; 531 pFT_Get_Charmap_Index FT_Get_Charmap_Index; 532 pFT_Get_Char_Index FT_Get_Char_Index; 533 pFT_Get_First_Char FT_Get_First_Char; 534 pFT_Get_Next_Char FT_Get_Next_Char; 535 pFT_Get_Name_Index FT_Get_Name_Index; 536 pFT_Get_SubGlyph_Info FT_Get_SubGlyph_Info; 537 pFT_Get_FSType_Flags FT_Get_FSType_Flags; 538 pFT_Face_GetCharVariantIndex FT_Face_GetCharVariantIndex; 539 pFT_Face_GetCharVariantIsDefault FT_Face_GetCharVariantIsDefault; 540 pFT_Face_GetVariantSelectors FT_Face_GetVariantSelectors; 541 pFT_Face_GetVariantsOfChar FT_Face_GetVariantsOfChar; 542 pFT_Face_GetCharsOfVariant FT_Face_GetCharsOfVariant; 543 pFT_MulDiv FT_MulDiv; 544 pFT_MulFix FT_MulFix; 545 pFT_DivFix FT_DivFix; 546 pFT_RoundFix FT_RoundFix; 547 pFT_CeilFix FT_CeilFix; 548 pFT_FloorFix FT_FloorFix; 549 pFT_Vector_Transform FT_Vector_Transform; 550 pFT_Library_Version FT_Library_Version; 551 pFT_Face_CheckTrueTypePatents FT_Face_CheckTrueTypePatents; 552 pFT_Face_SetUnpatentedHinting FT_Face_SetUnpatentedHinting; 553 554 static if(ftSupport >= FTSupport.ft28) { 555 pFT_Face_Properties FT_Face_Properties; 556 } 557 } 558 }