1 | /**************************************************************************** |
2 | * |
3 | * ftmm.h |
4 | * |
5 | * FreeType Multiple Master font interface (specification). |
6 | * |
7 | * Copyright (C) 1996-2021 by |
8 | * David Turner, Robert Wilhelm, and Werner Lemberg. |
9 | * |
10 | * This file is part of the FreeType project, and may only be used, |
11 | * modified, and distributed under the terms of the FreeType project |
12 | * license, LICENSE.TXT. By continuing to use, modify, or distribute |
13 | * this file you indicate that you have read the license and |
14 | * understand and accept it fully. |
15 | * |
16 | */ |
17 | |
18 | |
19 | #ifndef FTMM_H_ |
20 | #define FTMM_H_ |
21 | |
22 | |
23 | #include <freetype/t1tables.h> |
24 | |
25 | |
26 | FT_BEGIN_HEADER |
27 | |
28 | |
29 | /************************************************************************** |
30 | * |
31 | * @section: |
32 | * multiple_masters |
33 | * |
34 | * @title: |
35 | * Multiple Masters |
36 | * |
37 | * @abstract: |
38 | * How to manage Multiple Masters fonts. |
39 | * |
40 | * @description: |
41 | * The following types and functions are used to manage Multiple Master |
42 | * fonts, i.e., the selection of specific design instances by setting |
43 | * design axis coordinates. |
44 | * |
45 | * Besides Adobe MM fonts, the interface supports Apple's TrueType GX and |
46 | * OpenType variation fonts. Some of the routines only work with Adobe |
47 | * MM fonts, others will work with all three types. They are similar |
48 | * enough that a consistent interface makes sense. |
49 | * |
50 | */ |
51 | |
52 | |
53 | /************************************************************************** |
54 | * |
55 | * @struct: |
56 | * FT_MM_Axis |
57 | * |
58 | * @description: |
59 | * A structure to model a given axis in design space for Multiple Masters |
60 | * fonts. |
61 | * |
62 | * This structure can't be used for TrueType GX or OpenType variation |
63 | * fonts. |
64 | * |
65 | * @fields: |
66 | * name :: |
67 | * The axis's name. |
68 | * |
69 | * minimum :: |
70 | * The axis's minimum design coordinate. |
71 | * |
72 | * maximum :: |
73 | * The axis's maximum design coordinate. |
74 | */ |
75 | typedef struct FT_MM_Axis_ |
76 | { |
77 | FT_String* name; |
78 | FT_Long minimum; |
79 | FT_Long maximum; |
80 | |
81 | } FT_MM_Axis; |
82 | |
83 | |
84 | /************************************************************************** |
85 | * |
86 | * @struct: |
87 | * FT_Multi_Master |
88 | * |
89 | * @description: |
90 | * A structure to model the axes and space of a Multiple Masters font. |
91 | * |
92 | * This structure can't be used for TrueType GX or OpenType variation |
93 | * fonts. |
94 | * |
95 | * @fields: |
96 | * num_axis :: |
97 | * Number of axes. Cannot exceed~4. |
98 | * |
99 | * num_designs :: |
100 | * Number of designs; should be normally 2^num_axis even though the |
101 | * Type~1 specification strangely allows for intermediate designs to be |
102 | * present. This number cannot exceed~16. |
103 | * |
104 | * axis :: |
105 | * A table of axis descriptors. |
106 | */ |
107 | typedef struct FT_Multi_Master_ |
108 | { |
109 | FT_UInt num_axis; |
110 | FT_UInt num_designs; |
111 | FT_MM_Axis axis[T1_MAX_MM_AXIS]; |
112 | |
113 | } FT_Multi_Master; |
114 | |
115 | |
116 | /************************************************************************** |
117 | * |
118 | * @struct: |
119 | * FT_Var_Axis |
120 | * |
121 | * @description: |
122 | * A structure to model a given axis in design space for Multiple |
123 | * Masters, TrueType GX, and OpenType variation fonts. |
124 | * |
125 | * @fields: |
126 | * name :: |
127 | * The axis's name. Not always meaningful for TrueType GX or OpenType |
128 | * variation fonts. |
129 | * |
130 | * minimum :: |
131 | * The axis's minimum design coordinate. |
132 | * |
133 | * def :: |
134 | * The axis's default design coordinate. FreeType computes meaningful |
135 | * default values for Adobe MM fonts. |
136 | * |
137 | * maximum :: |
138 | * The axis's maximum design coordinate. |
139 | * |
140 | * tag :: |
141 | * The axis's tag (the equivalent to 'name' for TrueType GX and |
142 | * OpenType variation fonts). FreeType provides default values for |
143 | * Adobe MM fonts if possible. |
144 | * |
145 | * strid :: |
146 | * The axis name entry in the font's 'name' table. This is another |
147 | * (and often better) version of the 'name' field for TrueType GX or |
148 | * OpenType variation fonts. Not meaningful for Adobe MM fonts. |
149 | * |
150 | * @note: |
151 | * The fields `minimum`, `def`, and `maximum` are 16.16 fractional values |
152 | * for TrueType GX and OpenType variation fonts. For Adobe MM fonts, the |
153 | * values are integers. |
154 | */ |
155 | typedef struct FT_Var_Axis_ |
156 | { |
157 | FT_String* name; |
158 | |
159 | FT_Fixed minimum; |
160 | FT_Fixed def; |
161 | FT_Fixed maximum; |
162 | |
163 | FT_ULong tag; |
164 | FT_UInt strid; |
165 | |
166 | } FT_Var_Axis; |
167 | |
168 | |
169 | /************************************************************************** |
170 | * |
171 | * @struct: |
172 | * FT_Var_Named_Style |
173 | * |
174 | * @description: |
175 | * A structure to model a named instance in a TrueType GX or OpenType |
176 | * variation font. |
177 | * |
178 | * This structure can't be used for Adobe MM fonts. |
179 | * |
180 | * @fields: |
181 | * coords :: |
182 | * The design coordinates for this instance. This is an array with one |
183 | * entry for each axis. |
184 | * |
185 | * strid :: |
186 | * The entry in 'name' table identifying this instance. |
187 | * |
188 | * psid :: |
189 | * The entry in 'name' table identifying a PostScript name for this |
190 | * instance. Value 0xFFFF indicates a missing entry. |
191 | */ |
192 | typedef struct FT_Var_Named_Style_ |
193 | { |
194 | FT_Fixed* coords; |
195 | FT_UInt strid; |
196 | FT_UInt psid; /* since 2.7.1 */ |
197 | |
198 | } FT_Var_Named_Style; |
199 | |
200 | |
201 | /************************************************************************** |
202 | * |
203 | * @struct: |
204 | * FT_MM_Var |
205 | * |
206 | * @description: |
207 | * A structure to model the axes and space of an Adobe MM, TrueType GX, |
208 | * or OpenType variation font. |
209 | * |
210 | * Some fields are specific to one format and not to the others. |
211 | * |
212 | * @fields: |
213 | * num_axis :: |
214 | * The number of axes. The maximum value is~4 for Adobe MM fonts; no |
215 | * limit in TrueType GX or OpenType variation fonts. |
216 | * |
217 | * num_designs :: |
218 | * The number of designs; should be normally 2^num_axis for Adobe MM |
219 | * fonts. Not meaningful for TrueType GX or OpenType variation fonts |
220 | * (where every glyph could have a different number of designs). |
221 | * |
222 | * num_namedstyles :: |
223 | * The number of named styles; a 'named style' is a tuple of design |
224 | * coordinates that has a string ID (in the 'name' table) associated |
225 | * with it. The font can tell the user that, for example, |
226 | * [Weight=1.5,Width=1.1] is 'Bold'. Another name for 'named style' is |
227 | * 'named instance'. |
228 | * |
229 | * For Adobe Multiple Masters fonts, this value is always zero because |
230 | * the format does not support named styles. |
231 | * |
232 | * axis :: |
233 | * An axis descriptor table. TrueType GX and OpenType variation fonts |
234 | * contain slightly more data than Adobe MM fonts. Memory management |
235 | * of this pointer is done internally by FreeType. |
236 | * |
237 | * namedstyle :: |
238 | * A named style (instance) table. Only meaningful for TrueType GX and |
239 | * OpenType variation fonts. Memory management of this pointer is done |
240 | * internally by FreeType. |
241 | */ |
242 | typedef struct FT_MM_Var_ |
243 | { |
244 | FT_UInt num_axis; |
245 | FT_UInt num_designs; |
246 | FT_UInt num_namedstyles; |
247 | FT_Var_Axis* axis; |
248 | FT_Var_Named_Style* namedstyle; |
249 | |
250 | } FT_MM_Var; |
251 | |
252 | |
253 | /************************************************************************** |
254 | * |
255 | * @function: |
256 | * FT_Get_Multi_Master |
257 | * |
258 | * @description: |
259 | * Retrieve a variation descriptor of a given Adobe MM font. |
260 | * |
261 | * This function can't be used with TrueType GX or OpenType variation |
262 | * fonts. |
263 | * |
264 | * @input: |
265 | * face :: |
266 | * A handle to the source face. |
267 | * |
268 | * @output: |
269 | * amaster :: |
270 | * The Multiple Masters descriptor. |
271 | * |
272 | * @return: |
273 | * FreeType error code. 0~means success. |
274 | */ |
275 | FT_EXPORT( FT_Error ) |
276 | FT_Get_Multi_Master( FT_Face face, |
277 | FT_Multi_Master *amaster ); |
278 | |
279 | |
280 | /************************************************************************** |
281 | * |
282 | * @function: |
283 | * FT_Get_MM_Var |
284 | * |
285 | * @description: |
286 | * Retrieve a variation descriptor for a given font. |
287 | * |
288 | * This function works with all supported variation formats. |
289 | * |
290 | * @input: |
291 | * face :: |
292 | * A handle to the source face. |
293 | * |
294 | * @output: |
295 | * amaster :: |
296 | * The variation descriptor. Allocates a data structure, which the |
297 | * user must deallocate with a call to @FT_Done_MM_Var after use. |
298 | * |
299 | * @return: |
300 | * FreeType error code. 0~means success. |
301 | */ |
302 | FT_EXPORT( FT_Error ) |
303 | FT_Get_MM_Var( FT_Face face, |
304 | FT_MM_Var* *amaster ); |
305 | |
306 | |
307 | /************************************************************************** |
308 | * |
309 | * @function: |
310 | * FT_Done_MM_Var |
311 | * |
312 | * @description: |
313 | * Free the memory allocated by @FT_Get_MM_Var. |
314 | * |
315 | * @input: |
316 | * library :: |
317 | * A handle of the face's parent library object that was used in the |
318 | * call to @FT_Get_MM_Var to create `amaster`. |
319 | * |
320 | * @return: |
321 | * FreeType error code. 0~means success. |
322 | */ |
323 | FT_EXPORT( FT_Error ) |
324 | FT_Done_MM_Var( FT_Library library, |
325 | FT_MM_Var *amaster ); |
326 | |
327 | |
328 | /************************************************************************** |
329 | * |
330 | * @function: |
331 | * FT_Set_MM_Design_Coordinates |
332 | * |
333 | * @description: |
334 | * For Adobe MM fonts, choose an interpolated font design through design |
335 | * coordinates. |
336 | * |
337 | * This function can't be used with TrueType GX or OpenType variation |
338 | * fonts. |
339 | * |
340 | * @inout: |
341 | * face :: |
342 | * A handle to the source face. |
343 | * |
344 | * @input: |
345 | * num_coords :: |
346 | * The number of available design coordinates. If it is larger than |
347 | * the number of axes, ignore the excess values. If it is smaller than |
348 | * the number of axes, use default values for the remaining axes. |
349 | * |
350 | * coords :: |
351 | * An array of design coordinates. |
352 | * |
353 | * @return: |
354 | * FreeType error code. 0~means success. |
355 | * |
356 | * @note: |
357 | * [Since 2.8.1] To reset all axes to the default values, call the |
358 | * function with `num_coords` set to zero and `coords` set to `NULL`. |
359 | * |
360 | * [Since 2.9] If `num_coords` is larger than zero, this function sets |
361 | * the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags` field |
362 | * (i.e., @FT_IS_VARIATION will return true). If `num_coords` is zero, |
363 | * this bit flag gets unset. |
364 | */ |
365 | FT_EXPORT( FT_Error ) |
366 | FT_Set_MM_Design_Coordinates( FT_Face face, |
367 | FT_UInt num_coords, |
368 | FT_Long* coords ); |
369 | |
370 | |
371 | /************************************************************************** |
372 | * |
373 | * @function: |
374 | * FT_Set_Var_Design_Coordinates |
375 | * |
376 | * @description: |
377 | * Choose an interpolated font design through design coordinates. |
378 | * |
379 | * This function works with all supported variation formats. |
380 | * |
381 | * @inout: |
382 | * face :: |
383 | * A handle to the source face. |
384 | * |
385 | * @input: |
386 | * num_coords :: |
387 | * The number of available design coordinates. If it is larger than |
388 | * the number of axes, ignore the excess values. If it is smaller than |
389 | * the number of axes, use default values for the remaining axes. |
390 | * |
391 | * coords :: |
392 | * An array of design coordinates. |
393 | * |
394 | * @return: |
395 | * FreeType error code. 0~means success. |
396 | * |
397 | * @note: |
398 | * [Since 2.8.1] To reset all axes to the default values, call the |
399 | * function with `num_coords` set to zero and `coords` set to `NULL`. |
400 | * [Since 2.9] 'Default values' means the currently selected named |
401 | * instance (or the base font if no named instance is selected). |
402 | * |
403 | * [Since 2.9] If `num_coords` is larger than zero, this function sets |
404 | * the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags` field |
405 | * (i.e., @FT_IS_VARIATION will return true). If `num_coords` is zero, |
406 | * this bit flag gets unset. |
407 | */ |
408 | FT_EXPORT( FT_Error ) |
409 | FT_Set_Var_Design_Coordinates( FT_Face face, |
410 | FT_UInt num_coords, |
411 | FT_Fixed* coords ); |
412 | |
413 | |
414 | /************************************************************************** |
415 | * |
416 | * @function: |
417 | * FT_Get_Var_Design_Coordinates |
418 | * |
419 | * @description: |
420 | * Get the design coordinates of the currently selected interpolated |
421 | * font. |
422 | * |
423 | * This function works with all supported variation formats. |
424 | * |
425 | * @input: |
426 | * face :: |
427 | * A handle to the source face. |
428 | * |
429 | * num_coords :: |
430 | * The number of design coordinates to retrieve. If it is larger than |
431 | * the number of axes, set the excess values to~0. |
432 | * |
433 | * @output: |
434 | * coords :: |
435 | * The design coordinates array. |
436 | * |
437 | * @return: |
438 | * FreeType error code. 0~means success. |
439 | * |
440 | * @since: |
441 | * 2.7.1 |
442 | */ |
443 | FT_EXPORT( FT_Error ) |
444 | FT_Get_Var_Design_Coordinates( FT_Face face, |
445 | FT_UInt num_coords, |
446 | FT_Fixed* coords ); |
447 | |
448 | |
449 | /************************************************************************** |
450 | * |
451 | * @function: |
452 | * FT_Set_MM_Blend_Coordinates |
453 | * |
454 | * @description: |
455 | * Choose an interpolated font design through normalized blend |
456 | * coordinates. |
457 | * |
458 | * This function works with all supported variation formats. |
459 | * |
460 | * @inout: |
461 | * face :: |
462 | * A handle to the source face. |
463 | * |
464 | * @input: |
465 | * num_coords :: |
466 | * The number of available design coordinates. If it is larger than |
467 | * the number of axes, ignore the excess values. If it is smaller than |
468 | * the number of axes, use default values for the remaining axes. |
469 | * |
470 | * coords :: |
471 | * The design coordinates array (each element must be between 0 and 1.0 |
472 | * for Adobe MM fonts, and between -1.0 and 1.0 for TrueType GX and |
473 | * OpenType variation fonts). |
474 | * |
475 | * @return: |
476 | * FreeType error code. 0~means success. |
477 | * |
478 | * @note: |
479 | * [Since 2.8.1] To reset all axes to the default values, call the |
480 | * function with `num_coords` set to zero and `coords` set to `NULL`. |
481 | * [Since 2.9] 'Default values' means the currently selected named |
482 | * instance (or the base font if no named instance is selected). |
483 | * |
484 | * [Since 2.9] If `num_coords` is larger than zero, this function sets |
485 | * the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags` field |
486 | * (i.e., @FT_IS_VARIATION will return true). If `num_coords` is zero, |
487 | * this bit flag gets unset. |
488 | */ |
489 | FT_EXPORT( FT_Error ) |
490 | FT_Set_MM_Blend_Coordinates( FT_Face face, |
491 | FT_UInt num_coords, |
492 | FT_Fixed* coords ); |
493 | |
494 | |
495 | /************************************************************************** |
496 | * |
497 | * @function: |
498 | * FT_Get_MM_Blend_Coordinates |
499 | * |
500 | * @description: |
501 | * Get the normalized blend coordinates of the currently selected |
502 | * interpolated font. |
503 | * |
504 | * This function works with all supported variation formats. |
505 | * |
506 | * @input: |
507 | * face :: |
508 | * A handle to the source face. |
509 | * |
510 | * num_coords :: |
511 | * The number of normalized blend coordinates to retrieve. If it is |
512 | * larger than the number of axes, set the excess values to~0.5 for |
513 | * Adobe MM fonts, and to~0 for TrueType GX and OpenType variation |
514 | * fonts. |
515 | * |
516 | * @output: |
517 | * coords :: |
518 | * The normalized blend coordinates array. |
519 | * |
520 | * @return: |
521 | * FreeType error code. 0~means success. |
522 | * |
523 | * @since: |
524 | * 2.7.1 |
525 | */ |
526 | FT_EXPORT( FT_Error ) |
527 | FT_Get_MM_Blend_Coordinates( FT_Face face, |
528 | FT_UInt num_coords, |
529 | FT_Fixed* coords ); |
530 | |
531 | |
532 | /************************************************************************** |
533 | * |
534 | * @function: |
535 | * FT_Set_Var_Blend_Coordinates |
536 | * |
537 | * @description: |
538 | * This is another name of @FT_Set_MM_Blend_Coordinates. |
539 | */ |
540 | FT_EXPORT( FT_Error ) |
541 | FT_Set_Var_Blend_Coordinates( FT_Face face, |
542 | FT_UInt num_coords, |
543 | FT_Fixed* coords ); |
544 | |
545 | |
546 | /************************************************************************** |
547 | * |
548 | * @function: |
549 | * FT_Get_Var_Blend_Coordinates |
550 | * |
551 | * @description: |
552 | * This is another name of @FT_Get_MM_Blend_Coordinates. |
553 | * |
554 | * @since: |
555 | * 2.7.1 |
556 | */ |
557 | FT_EXPORT( FT_Error ) |
558 | FT_Get_Var_Blend_Coordinates( FT_Face face, |
559 | FT_UInt num_coords, |
560 | FT_Fixed* coords ); |
561 | |
562 | |
563 | /************************************************************************** |
564 | * |
565 | * @function: |
566 | * FT_Set_MM_WeightVector |
567 | * |
568 | * @description: |
569 | * For Adobe MM fonts, choose an interpolated font design by directly |
570 | * setting the weight vector. |
571 | * |
572 | * This function can't be used with TrueType GX or OpenType variation |
573 | * fonts. |
574 | * |
575 | * @inout: |
576 | * face :: |
577 | * A handle to the source face. |
578 | * |
579 | * @input: |
580 | * len :: |
581 | * The length of the weight vector array. If it is larger than the |
582 | * number of designs, the extra values are ignored. If it is less than |
583 | * the number of designs, the remaining values are set to zero. |
584 | * |
585 | * weightvector :: |
586 | * An array representing the weight vector. |
587 | * |
588 | * @return: |
589 | * FreeType error code. 0~means success. |
590 | * |
591 | * @note: |
592 | * Adobe Multiple Master fonts limit the number of designs, and thus the |
593 | * length of the weight vector to~16. |
594 | * |
595 | * If `len` is zero and `weightvector` is `NULL`, the weight vector array |
596 | * is reset to the default values. |
597 | * |
598 | * The Adobe documentation also states that the values in the |
599 | * WeightVector array must total 1.0 +/-~0.001. In practice this does |
600 | * not seem to be enforced, so is not enforced here, either. |
601 | * |
602 | * @since: |
603 | * 2.10 |
604 | */ |
605 | FT_EXPORT( FT_Error ) |
606 | FT_Set_MM_WeightVector( FT_Face face, |
607 | FT_UInt len, |
608 | FT_Fixed* weightvector ); |
609 | |
610 | |
611 | /************************************************************************** |
612 | * |
613 | * @function: |
614 | * FT_Get_MM_WeightVector |
615 | * |
616 | * @description: |
617 | * For Adobe MM fonts, retrieve the current weight vector of the font. |
618 | * |
619 | * This function can't be used with TrueType GX or OpenType variation |
620 | * fonts. |
621 | * |
622 | * @inout: |
623 | * face :: |
624 | * A handle to the source face. |
625 | * |
626 | * len :: |
627 | * A pointer to the size of the array to be filled. If the size of the |
628 | * array is less than the number of designs, `FT_Err_Invalid_Argument` |
629 | * is returned, and `len` is set to the required size (the number of |
630 | * designs). If the size of the array is greater than the number of |
631 | * designs, the remaining entries are set to~0. On successful |
632 | * completion, `len` is set to the number of designs (i.e., the number |
633 | * of values written to the array). |
634 | * |
635 | * @output: |
636 | * weightvector :: |
637 | * An array to be filled. |
638 | * |
639 | * @return: |
640 | * FreeType error code. 0~means success. |
641 | * |
642 | * @note: |
643 | * Adobe Multiple Master fonts limit the number of designs, and thus the |
644 | * length of the WeightVector to~16. |
645 | * |
646 | * @since: |
647 | * 2.10 |
648 | */ |
649 | FT_EXPORT( FT_Error ) |
650 | FT_Get_MM_WeightVector( FT_Face face, |
651 | FT_UInt* len, |
652 | FT_Fixed* weightvector ); |
653 | |
654 | |
655 | /************************************************************************** |
656 | * |
657 | * @enum: |
658 | * FT_VAR_AXIS_FLAG_XXX |
659 | * |
660 | * @description: |
661 | * A list of bit flags used in the return value of |
662 | * @FT_Get_Var_Axis_Flags. |
663 | * |
664 | * @values: |
665 | * FT_VAR_AXIS_FLAG_HIDDEN :: |
666 | * The variation axis should not be exposed to user interfaces. |
667 | * |
668 | * @since: |
669 | * 2.8.1 |
670 | */ |
671 | #define FT_VAR_AXIS_FLAG_HIDDEN 1 |
672 | |
673 | |
674 | /************************************************************************** |
675 | * |
676 | * @function: |
677 | * FT_Get_Var_Axis_Flags |
678 | * |
679 | * @description: |
680 | * Get the 'flags' field of an OpenType Variation Axis Record. |
681 | * |
682 | * Not meaningful for Adobe MM fonts (`*flags` is always zero). |
683 | * |
684 | * @input: |
685 | * master :: |
686 | * The variation descriptor. |
687 | * |
688 | * axis_index :: |
689 | * The index of the requested variation axis. |
690 | * |
691 | * @output: |
692 | * flags :: |
693 | * The 'flags' field. See @FT_VAR_AXIS_FLAG_XXX for possible values. |
694 | * |
695 | * @return: |
696 | * FreeType error code. 0~means success. |
697 | * |
698 | * @since: |
699 | * 2.8.1 |
700 | */ |
701 | FT_EXPORT( FT_Error ) |
702 | FT_Get_Var_Axis_Flags( FT_MM_Var* master, |
703 | FT_UInt axis_index, |
704 | FT_UInt* flags ); |
705 | |
706 | |
707 | /************************************************************************** |
708 | * |
709 | * @function: |
710 | * FT_Set_Named_Instance |
711 | * |
712 | * @description: |
713 | * Set or change the current named instance. |
714 | * |
715 | * @input: |
716 | * face :: |
717 | * A handle to the source face. |
718 | * |
719 | * instance_index :: |
720 | * The index of the requested instance, starting with value 1. If set |
721 | * to value 0, FreeType switches to font access without a named |
722 | * instance. |
723 | * |
724 | * @return: |
725 | * FreeType error code. 0~means success. |
726 | * |
727 | * @note: |
728 | * The function uses the value of `instance_index` to set bits 16-30 of |
729 | * the face's `face_index` field. It also resets any variation applied |
730 | * to the font, and the @FT_FACE_FLAG_VARIATION bit of the face's |
731 | * `face_flags` field gets reset to zero (i.e., @FT_IS_VARIATION will |
732 | * return false). |
733 | * |
734 | * For Adobe MM fonts (which don't have named instances) this function |
735 | * simply resets the current face to the default instance. |
736 | * |
737 | * @since: |
738 | * 2.9 |
739 | */ |
740 | FT_EXPORT( FT_Error ) |
741 | FT_Set_Named_Instance( FT_Face face, |
742 | FT_UInt instance_index ); |
743 | |
744 | /* */ |
745 | |
746 | |
747 | FT_END_HEADER |
748 | |
749 | #endif /* FTMM_H_ */ |
750 | |
751 | |
752 | /* END */ |
753 | |