ftmm.h 22 KB

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