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 );