1 module ft.freetype; 2 3 import ft.image; 4 import ft.system; 5 import ft.types; 6 7 extern(C) nothrow @nogc: 8 9 struct FT_Glyph_Metrics 10 { 11 FT_Pos width; 12 FT_Pos height; 13 14 FT_Pos horiBearingX; 15 FT_Pos horiBearingY; 16 FT_Pos horiAdvance; 17 18 FT_Pos vertBearingX; 19 FT_Pos vertBearingY; 20 FT_Pos vertAdvance; 21 } 22 23 struct FT_Bitmap_Size 24 { 25 FT_Short height; 26 FT_Short width; 27 28 FT_Pos size; 29 30 FT_Pos x_ppem; 31 FT_Pos y_ppem; 32 } 33 34 struct FT_LibraryRec; 35 alias FT_Library = FT_LibraryRec*; 36 37 struct FT_ModuleRec; 38 alias FT_Module = FT_ModuleRec*; 39 40 struct FT_DriverRec; 41 alias FT_Driver = FT_DriverRec*; 42 43 struct FT_RendererRec; 44 alias FT_Renderer = FT_RendererRec*; 45 46 47 alias FT_Face = FT_FaceRec*; 48 struct FT_FaceRec 49 { 50 FT_Long num_faces; 51 FT_Long face_index; 52 53 FT_Long face_flags; 54 FT_Long style_flags; 55 56 FT_Long num_glyphs; 57 58 FT_String* family_name; 59 FT_String* style_name; 60 61 FT_Int num_fixed_sizes; 62 FT_Bitmap_Size* available_sizes; 63 64 FT_Int num_charmaps; 65 FT_CharMap* charmaps; 66 67 FT_Generic generic; 68 69 FT_BBox bbox; 70 71 FT_UShort units_per_EM; 72 FT_Short ascender; 73 FT_Short descender; 74 FT_Short height; 75 76 FT_Short max_advance_width; 77 FT_Short max_advance_height; 78 79 FT_Short underline_position; 80 FT_Short underline_thickness; 81 82 FT_GlyphSlot glyph; 83 FT_Size size; 84 FT_CharMap charmap; 85 86 87 FT_Driver driver; 88 FT_Memory memory; 89 FT_Stream stream; 90 91 FT_ListRec sizes_list; 92 93 FT_Generic autohint; /* face-specific auto-hinter data */ 94 void* extensions; /* unused */ 95 96 FT_Face_Internal internal; 97 } 98 99 alias FT_Size = FT_SizeRec*; 100 struct FT_SizeRec 101 { 102 FT_Face face; /* parent face object */ 103 FT_Generic generic; /* generic pointer for client uses */ 104 FT_Size_Metrics metrics; /* size metrics */ 105 FT_Size_Internal internal; 106 } 107 108 alias FT_GlyphSlot = FT_GlyphSlotRec*; 109 struct FT_GlyphSlotRec 110 { 111 FT_Library library; 112 FT_Face face; 113 FT_GlyphSlot next; 114 FT_UInt reserved; /* retained for binary compatibility */ 115 FT_Generic generic; 116 117 FT_Glyph_Metrics metrics; 118 FT_Fixed linearHoriAdvance; 119 FT_Fixed linearVertAdvance; 120 FT_Vector advance; 121 122 FT_Glyph_Format format; 123 124 FT_Bitmap bitmap; 125 FT_Int bitmap_left; 126 FT_Int bitmap_top; 127 128 FT_Outline outline; 129 130 FT_UInt num_subglyphs; 131 FT_SubGlyph subglyphs; 132 133 void* control_data; 134 long control_len; 135 136 FT_Pos lsb_delta; 137 FT_Pos rsb_delta; 138 139 void* other; 140 141 FT_Slot_Internal internal; 142 } 143 144 alias FT_CharMap = FT_CharMapRec*; 145 struct FT_CharMapRec 146 { 147 FT_Face face; 148 FT_Encoding encoding; 149 FT_UShort platform_id; 150 FT_UShort encoding_id; 151 } 152 153 enum FT_Encoding 154 { 155 FT_ENCODING_NONE = 0, 156 157 FT_ENCODING_MS_SYMBOL = makeTag!('s', 'y', 'm', 'b' ), 158 FT_ENCODING_UNICODE = makeTag!('u', 'n', 'i', 'c' ), 159 160 FT_ENCODING_SJIS = makeTag!('s', 'j', 'i', 's' ), 161 FT_ENCODING_PRC = makeTag!('g', 'b', ' ', ' ' ), 162 FT_ENCODING_BIG5 = makeTag!('b', 'i', 'g', '5' ), 163 FT_ENCODING_WANSUNG = makeTag!('w', 'a', 'n', 's' ), 164 FT_ENCODING_JOHAB = makeTag!('j', 'o', 'h', 'a' ), 165 166 FT_ENCODING_GB2312 = FT_ENCODING_PRC, 167 FT_ENCODING_MS_SJIS = FT_ENCODING_SJIS, 168 FT_ENCODING_MS_GB2312 = FT_ENCODING_PRC, 169 FT_ENCODING_MS_BIG5 = FT_ENCODING_BIG5, 170 FT_ENCODING_MS_WANSUNG = FT_ENCODING_WANSUNG, 171 FT_ENCODING_MS_JOHAB = FT_ENCODING_JOHAB, 172 173 FT_ENCODING_ADOBE_STANDARD = makeTag!('A', 'D', 'O', 'B' ), 174 FT_ENCODING_ADOBE_EXPERT = makeTag!('A', 'D', 'B', 'E' ), 175 FT_ENCODING_ADOBE_CUSTOM = makeTag!('A', 'D', 'B', 'C' ), 176 FT_ENCODING_ADOBE_LATIN_1 = makeTag!('l', 'a', 't', '1' ), 177 178 FT_ENCODING_OLD_LATIN_2 = makeTag!('l', 'a', 't', '2' ), 179 180 FT_ENCODING_APPLE_ROMAN = makeTag!('a', 'r', 'm', 'n' ) 181 } 182 183 184 enum FT_ENCODING_NONE = FT_Encoding.FT_ENCODING_NONE; 185 enum FT_ENCODING_UNICODE = FT_Encoding.FT_ENCODING_UNICODE; 186 enum FT_ENCODING_SYMBOL = FT_Encoding.FT_ENCODING_MS_SYMBOL; 187 enum FT_ENCODING_LATIN_1 = FT_Encoding.FT_ENCODING_ADOBE_LATIN_1; 188 enum FT_ENCODING_LATIN_2 = FT_Encoding.FT_ENCODING_OLD_LATIN_2; 189 enum FT_ENCODING_SJIS = FT_Encoding.FT_ENCODING_SJIS; 190 enum FT_ENCODING_GB2312 = FT_Encoding.FT_ENCODING_PRC; 191 enum FT_ENCODING_BIG5 = FT_Encoding.FT_ENCODING_BIG5; 192 enum FT_ENCODING_WANSUNG = FT_Encoding.FT_ENCODING_WANSUNG; 193 enum FT_ENCODING_JOHAB = FT_Encoding.FT_ENCODING_JOHAB; 194 195 enum FT_ENCODING_ADOBE_STANDARD = FT_Encoding.FT_ENCODING_ADOBE_STANDARD; 196 enum FT_ENCODING_ADOBE_EXPERT = FT_Encoding.FT_ENCODING_ADOBE_EXPERT; 197 enum FT_ENCODING_ADOBE_CUSTOM = FT_Encoding.FT_ENCODING_ADOBE_CUSTOM; 198 enum FT_ENCODING_APPLE_ROMAN = FT_Encoding.FT_ENCODING_APPLE_ROMAN; 199 200 201 struct FT_Face_InternalRec; 202 alias FT_Face_Internal = FT_Face_InternalRec*; 203 204 205 enum FT_FACE_FLAG_SCALABLE = 1L << 0; 206 enum FT_FACE_FLAG_FIXED_SIZES = 1L << 1; 207 enum FT_FACE_FLAG_FIXED_WIDTH = 1L << 2; 208 enum FT_FACE_FLAG_SFNT = 1L << 3; 209 enum FT_FACE_FLAG_HORIZONTAL = 1L << 4; 210 enum FT_FACE_FLAG_VERTICAL = 1L << 5; 211 enum FT_FACE_FLAG_KERNING = 1L << 6; 212 enum FT_FACE_FLAG_FAST_GLYPHS = 1L << 7; 213 enum FT_FACE_FLAG_MULTIPLE_MASTERS = 1L << 8; 214 enum FT_FACE_FLAG_GLYPH_NAMES = 1L << 9; 215 enum FT_FACE_FLAG_EXTERNAL_STREAM = 1L << 10; 216 enum FT_FACE_FLAG_HINTER = 1L << 11; 217 enum FT_FACE_FLAG_CID_KEYED = 1L << 12; 218 enum FT_FACE_FLAG_TRICKY = 1L << 13; 219 enum FT_FACE_FLAG_COLOR = 1L << 14; 220 enum FT_FACE_FLAG_VARIATION = 1L << 15; 221 222 223 extern(D) 224 { 225 bool FT_HAS_HORIZONTAL(const(FT_Face) face) 226 { 227 return (face.face_flags & FT_FACE_FLAG_HORIZONTAL) != 0; 228 } 229 230 bool FT_HAS_VERTICAL(const(FT_Face) face) 231 { 232 return (face.face_flags & FT_FACE_FLAG_VERTICAL) != 0; 233 } 234 235 bool FT_HAS_KERNING(const(FT_Face) face) 236 { 237 return (face.face_flags & FT_FACE_FLAG_KERNING) != 0; 238 } 239 240 bool FT_IS_SCALABLE(const(FT_Face) face) 241 { 242 return (face.face_flags & FT_FACE_FLAG_SCALABLE) != 0; 243 } 244 245 bool FT_HAS_SFNT(const(FT_Face) face) 246 { 247 return (face.face_flags & FT_FACE_FLAG_SFNT) != 0; 248 } 249 250 bool FT_IS_FIXED_WIDTH(const(FT_Face) face) 251 { 252 return (face.face_flags & FT_FACE_FLAG_FIXED_WIDTH) != 0; 253 } 254 255 bool FT_IS_FIXED_SIZES(const(FT_Face) face) 256 { 257 return (face.face_flags & FT_FACE_FLAG_FIXED_SIZES) != 0; 258 } 259 260 bool FT_HAS_FAST_GLYPHS(const(FT_Face) face) 261 { 262 return false; 263 } 264 265 bool FT_HAS_GLYPH_NAMES(const(FT_Face) face) 266 { 267 return (face.face_flags & FT_FACE_FLAG_GLYPH_NAMES) != 0; 268 } 269 270 bool FT_HAS_MULTIPLE_MASTERS(const(FT_Face) face) 271 { 272 return (face.face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS) != 0; 273 } 274 275 bool FT_IS_NAMED_INSTANCE(const(FT_Face) face) 276 { 277 return (face.face_index & 0x7fff0000) != 0; 278 } 279 280 bool FT_IS_VARIATION(const(FT_Face) face) 281 { 282 return (face.face_flags & FT_FACE_FLAG_VARIATION) != 0; 283 } 284 285 bool FT_IS_CID_KEYED(const(FT_Face) face) 286 { 287 return (face.face_flags & FT_FACE_FLAG_CID_KEYED) != 0; 288 } 289 290 bool FT_IS_TRICKY(const(FT_Face) face) 291 { 292 return (face.face_flags & FT_FACE_FLAG_TRICKY) != 0; 293 } 294 295 bool FT_HAS_COLOR(const(FT_Face) face) 296 { 297 return (face.face_flags & FT_FACE_FLAG_COLOR) != 0; 298 } 299 300 } 301 302 303 enum FT_STYLE_FLAG_ITALIC = 1; 304 enum FT_STYLE_FLAG_BOLD = 2; 305 306 struct FT_Size_InternalRec; 307 alias FT_Size_Internal = FT_Size_InternalRec*; 308 309 310 struct FT_Size_Metrics 311 { 312 FT_UShort x_ppem; /* horizontal pixels per EM */ 313 FT_UShort y_ppem; /* vertical pixels per EM */ 314 315 FT_Fixed x_scale; /* scaling values used to convert font */ 316 FT_Fixed y_scale; /* units to 26.6 fractional pixels */ 317 318 FT_Pos ascender; /* ascender in 26.6 frac. pixels */ 319 FT_Pos descender; /* descender in 26.6 frac. pixels */ 320 FT_Pos height; /* text height in 26.6 frac. pixels */ 321 FT_Pos max_advance; /* max horizontal advance, in 26.6 pixels */ 322 } 323 324 325 struct FT_SubGlyphRec; 326 alias FT_SubGlyph = FT_SubGlyphRec*; 327 328 struct FT_Slot_InternalRec; 329 alias FT_Slot_Internal = FT_Slot_InternalRec*; 330 331 enum FT_OPEN_MEMORY = 0x1; 332 enum FT_OPEN_STREAM = 0x2; 333 enum FT_OPEN_PATHNAME = 0x4; 334 enum FT_OPEN_DRIVER = 0x8; 335 enum FT_OPEN_PARAMS = 0x10; 336 337 enum ft_open_memory = FT_OPEN_MEMORY; 338 enum ft_open_stream = FT_OPEN_STREAM; 339 enum ft_open_pathname = FT_OPEN_PATHNAME; 340 enum ft_open_driver = FT_OPEN_DRIVER; 341 enum ft_open_params = FT_OPEN_PARAMS; 342 343 344 enum FT_LOAD_DEFAULT = 0x0; 345 enum FT_LOAD_NO_SCALE = 1L << 0; 346 enum FT_LOAD_NO_HINTING = 1L << 1; 347 enum FT_LOAD_RENDER = 1L << 2; 348 enum FT_LOAD_NO_BITMAP = 1L << 3; 349 enum FT_LOAD_VERTICAL_LAYOUT = 1L << 4; 350 enum FT_LOAD_FORCE_AUTOHINT = 1L << 5; 351 enum FT_LOAD_CROP_BITMAP = 1L << 6; 352 enum FT_LOAD_PEDANTIC = 1L << 7; 353 enum FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH = 1L << 9; 354 enum FT_LOAD_NO_RECURSE = 1L << 10; 355 enum FT_LOAD_IGNORE_TRANSFORM = 1L << 11; 356 enum FT_LOAD_MONOCHROME = 1L << 12; 357 enum FT_LOAD_LINEAR_DESIGN = 1L << 13; 358 enum FT_LOAD_NO_AUTOHINT = 1L << 15; 359 enum FT_LOAD_COLOR = 1L << 20; 360 enum FT_LOAD_COMPUTE_METRICS = 1L << 21; 361 enum FT_LOAD_BITMAP_METRICS_ONLY = 1L << 22; 362 363 enum FT_LOAD_ADVANCE_ONLY = 1L << 8; 364 enum FT_LOAD_SBITS_ONLY = 1L << 14; 365 366 struct FT_Parameter 367 { 368 FT_ULong tag; 369 FT_Pointer data; 370 } 371 372 373 struct FT_Open_Args 374 { 375 FT_UInt flags; 376 const(FT_Byte)* memory_base; 377 FT_Long memory_size; 378 FT_String* pathname; 379 FT_Stream stream; 380 FT_Module driver; 381 FT_Int num_params; 382 FT_Parameter* params; 383 } 384 385 386 enum FT_Size_Request_Type 387 { 388 FT_SIZE_REQUEST_TYPE_NOMINAL, 389 FT_SIZE_REQUEST_TYPE_REAL_DIM, 390 FT_SIZE_REQUEST_TYPE_BBOX, 391 FT_SIZE_REQUEST_TYPE_CELL, 392 FT_SIZE_REQUEST_TYPE_SCALES, 393 394 FT_SIZE_REQUEST_TYPE_MAX 395 } 396 397 398 struct FT_Size_RequestRec 399 { 400 FT_Size_Request_Type type; 401 FT_Long width; 402 FT_Long height; 403 FT_UInt horiResolution; 404 FT_UInt vertResolution; 405 } 406 407 alias FT_Size_Request = FT_Size_RequestRec*; 408 409 410 private template loadTarget (FT_Render_Mode x) 411 { 412 enum loadTarget = (int(x) & 15) << 16; 413 } 414 415 416 enum FT_LOAD_TARGET_NORMAL = loadTarget!( FT_Render_Mode.FT_RENDER_MODE_NORMAL ); 417 enum FT_LOAD_TARGET_LIGHT = loadTarget!( FT_Render_Mode.FT_RENDER_MODE_LIGHT ); 418 enum FT_LOAD_TARGET_MONO = loadTarget!( FT_Render_Mode.FT_RENDER_MODE_MONO ); 419 enum FT_LOAD_TARGET_LCD = loadTarget!( FT_Render_Mode.FT_RENDER_MODE_LCD ); 420 enum FT_LOAD_TARGET_LCD_V = loadTarget!( FT_Render_Mode.FT_RENDER_MODE_LCD_V ); 421 422 FT_Render_Mode FT_LOAD_TARGET_MODE(int loadTarget) 423 { 424 return cast(FT_Render_Mode)((loadTarget >> 16) & 15); 425 } 426 427 enum FT_Kerning_Mode 428 { 429 FT_KERNING_DEFAULT = 0, 430 FT_KERNING_UNFITTED, 431 FT_KERNING_UNSCALED 432 } 433 434 435 enum FT_KERNING_DEFAULT = FT_Kerning_Mode.FT_KERNING_DEFAULT; 436 enum FT_KERNING_UNFITTED = FT_Kerning_Mode.FT_KERNING_UNFITTED; 437 enum FT_KERNING_UNSCALED = FT_Kerning_Mode.FT_KERNING_UNSCALED; 438 439 440 441 enum FT_Render_Mode 442 { 443 FT_RENDER_MODE_NORMAL = 0, 444 FT_RENDER_MODE_LIGHT, 445 FT_RENDER_MODE_MONO, 446 FT_RENDER_MODE_LCD, 447 FT_RENDER_MODE_LCD_V, 448 449 FT_RENDER_MODE_MAX 450 } 451 452 453 enum FT_RENDER_MODE_NORMAL = FT_Render_Mode.FT_RENDER_MODE_NORMAL; 454 enum FT_RENDER_MODE_LIGHT = FT_Render_Mode.FT_RENDER_MODE_LIGHT; 455 enum FT_RENDER_MODE_MONO = FT_Render_Mode.FT_RENDER_MODE_MONO; 456 enum FT_RENDER_MODE_LCD = FT_Render_Mode.FT_RENDER_MODE_LCD; 457 enum FT_RENDER_MODE_LCD_V = FT_Render_Mode.FT_RENDER_MODE_LCD_V; 458 459 enum FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS = 1; 460 enum FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES = 2; 461 enum FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID = 4; 462 enum FT_SUBGLYPH_FLAG_SCALE = 8; 463 enum FT_SUBGLYPH_FLAG_XY_SCALE = 0x40; 464 enum FT_SUBGLYPH_FLAG_2X2 = 0x80; 465 enum FT_SUBGLYPH_FLAG_USE_MY_METRICS = 0x200; 466 467 enum FT_FSTYPE_INSTALLABLE_EMBEDDING = 0x0000; 468 enum FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING = 0x0002; 469 enum FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING = 0x0004; 470 enum FT_FSTYPE_EDITABLE_EMBEDDING = 0x0008; 471 enum FT_FSTYPE_NO_SUBSETTING = 0x0100; 472 enum FT_FSTYPE_BITMAP_EMBEDDING_ONLY = 0x0200; 473 474 475 enum FREETYPE_MAJOR = 2; 476 enum FREETYPE_MINOR = 9; 477 enum FREETYPE_PATCH = 1; 478 479 480 481 FT_Error FT_Init_FreeType(FT_Library *alibrary); 482 483 FT_Error 484 FT_Done_FreeType( FT_Library library ); 485 486 487 FT_Error 488 FT_New_Face( FT_Library library, 489 const(char)* filepathname, 490 FT_Long face_index, 491 FT_Face *aface ); 492 493 494 FT_Error 495 FT_New_Memory_Face( FT_Library library, 496 const(FT_Byte)* file_base, 497 FT_Long file_size, 498 FT_Long face_index, 499 FT_Face *aface ); 500 501 502 FT_Error 503 FT_Open_Face( FT_Library library, 504 const(FT_Open_Args)* args, 505 FT_Long face_index, 506 FT_Face *aface ); 507 508 509 FT_Error 510 FT_Attach_File( FT_Face face, 511 const(char)* filepathname ); 512 513 514 FT_Error 515 FT_Attach_Stream( FT_Face face, 516 FT_Open_Args* parameters ); 517 518 519 FT_Error 520 FT_Reference_Face( FT_Face face ); 521 522 523 FT_Error 524 FT_Done_Face( FT_Face face ); 525 526 527 FT_Error 528 FT_Select_Size( FT_Face face, 529 FT_Int strike_index ); 530 531 532 533 FT_Error 534 FT_Request_Size( FT_Face face, 535 FT_Size_Request req ); 536 537 538 FT_Error 539 FT_Set_Char_Size( FT_Face face, 540 FT_F26Dot6 char_width, 541 FT_F26Dot6 char_height, 542 FT_UInt horz_resolution, 543 FT_UInt vert_resolution ); 544 545 546 FT_Error 547 FT_Set_Pixel_Sizes( FT_Face face, 548 FT_UInt pixel_width, 549 FT_UInt pixel_height ); 550 551 552 FT_Error 553 FT_Load_Glyph( FT_Face face, 554 FT_UInt glyph_index, 555 FT_Int32 load_flags ); 556 557 558 FT_Error 559 FT_Load_Char( FT_Face face, 560 FT_ULong char_code, 561 FT_Int32 load_flags ); 562 563 564 void 565 FT_Set_Transform( FT_Face face, 566 FT_Matrix* matrix, 567 FT_Vector* delta ); 568 569 570 571 FT_Error 572 FT_Render_Glyph( FT_GlyphSlot slot, 573 FT_Render_Mode render_mode ); 574 575 576 577 FT_Error 578 FT_Get_Kerning( FT_Face face, 579 FT_UInt left_glyph, 580 FT_UInt right_glyph, 581 FT_UInt kern_mode, 582 FT_Vector *akerning ); 583 584 585 FT_Error 586 FT_Get_Track_Kerning( FT_Face face, 587 FT_Fixed point_size, 588 FT_Int degree, 589 FT_Fixed* akerning ); 590 591 592 FT_Error 593 FT_Get_Glyph_Name( FT_Face face, 594 FT_UInt glyph_index, 595 FT_Pointer buffer, 596 FT_UInt buffer_max ); 597 598 599 const(char)* 600 FT_Get_Postscript_Name( FT_Face face ); 601 602 603 FT_Error 604 FT_Select_Charmap( FT_Face face, 605 FT_Encoding encoding ); 606 607 608 FT_Error 609 FT_Set_Charmap( FT_Face face, 610 FT_CharMap charmap ); 611 612 FT_Int 613 FT_Get_Charmap_Index( FT_CharMap charmap ); 614 615 616 FT_UInt 617 FT_Get_Char_Index( FT_Face face, 618 FT_ULong charcode ); 619 620 621 FT_ULong 622 FT_Get_First_Char( FT_Face face, 623 FT_UInt *agindex ); 624 625 626 FT_ULong 627 FT_Get_Next_Char( FT_Face face, 628 FT_ULong char_code, 629 FT_UInt *agindex ); 630 631 FT_Error 632 FT_Face_Properties( FT_Face face, 633 FT_UInt num_properties, 634 FT_Parameter* properties ); 635 636 637 FT_UInt 638 FT_Get_Name_Index( FT_Face face, 639 FT_String* glyph_name ); 640 641 FT_Error 642 FT_Get_SubGlyph_Info( FT_GlyphSlot glyph, 643 FT_UInt sub_index, 644 FT_Int *p_index, 645 FT_UInt *p_flags, 646 FT_Int *p_arg1, 647 FT_Int *p_arg2, 648 FT_Matrix *p_transform ); 649 650 FT_UShort 651 FT_Get_FSType_Flags( FT_Face face ); 652 653 654 655 656 FT_UInt 657 FT_Face_GetCharVariantIndex( FT_Face face, 658 FT_ULong charcode, 659 FT_ULong variantSelector ); 660 661 662 FT_Int 663 FT_Face_GetCharVariantIsDefault( FT_Face face, 664 FT_ULong charcode, 665 FT_ULong variantSelector ); 666 667 668 FT_UInt32* 669 FT_Face_GetVariantSelectors( FT_Face face ); 670 671 672 FT_UInt32* 673 FT_Face_GetVariantsOfChar( FT_Face face, 674 FT_ULong charcode ); 675 676 677 FT_UInt32* 678 FT_Face_GetCharsOfVariant( FT_Face face, 679 FT_ULong variantSelector ); 680 681 682 683 684 FT_Long 685 FT_MulDiv( FT_Long a, 686 FT_Long b, 687 FT_Long c ); 688 689 690 FT_Long 691 FT_MulFix( FT_Long a, 692 FT_Long b ); 693 694 695 FT_Long 696 FT_DivFix( FT_Long a, 697 FT_Long b ); 698 699 700 FT_Fixed 701 FT_RoundFix( FT_Fixed a ); 702 703 704 FT_Fixed 705 FT_CeilFix( FT_Fixed a ); 706 707 708 FT_Fixed 709 FT_FloorFix( FT_Fixed a ); 710 711 712 void 713 FT_Vector_Transform( FT_Vector* vec, 714 const(FT_Matrix)* matrix ); 715 716 717 void 718 FT_Library_Version( FT_Library library, 719 FT_Int *amajor, 720 FT_Int *aminor, 721 FT_Int *apatch ); 722 723 724 FT_Bool 725 FT_Face_CheckTrueTypePatents( FT_Face face ); 726 727 728 FT_Bool 729 FT_Face_SetUnpatentedHinting( FT_Face face, 730 FT_Bool value );