2018-06-03 22:00:42 +02:00
|
|
|
/****************************************************************************
|
|
|
|
*
|
|
|
|
* ftmm.h
|
|
|
|
*
|
|
|
|
* FreeType Multiple Master font interface (specification).
|
|
|
|
*
|
2023-01-17 09:18:25 +01:00
|
|
|
* Copyright (C) 1996-2023 by
|
2018-06-03 22:00:42 +02:00
|
|
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
|
|
|
*
|
|
|
|
* This file is part of the FreeType project, and may only be used,
|
|
|
|
* modified, and distributed under the terms of the FreeType project
|
|
|
|
* license, LICENSE.TXT. By continuing to use, modify, or distribute
|
|
|
|
* this file you indicate that you have read the license and
|
|
|
|
* understand and accept it fully.
|
|
|
|
*
|
|
|
|
*/
|
2000-05-26 19:13:23 +02:00
|
|
|
|
2000-07-10 23:41:32 +02:00
|
|
|
|
2016-01-12 21:37:13 +01:00
|
|
|
#ifndef FTMM_H_
|
|
|
|
#define FTMM_H_
|
2000-05-26 19:13:23 +02:00
|
|
|
|
2000-12-09 01:45:38 +01:00
|
|
|
|
2020-06-08 13:31:55 +02:00
|
|
|
#include <freetype/t1tables.h>
|
2000-12-09 01:45:38 +01:00
|
|
|
|
2000-05-26 19:13:23 +02:00
|
|
|
|
2000-12-01 00:12:33 +01:00
|
|
|
FT_BEGIN_HEADER
|
2000-07-10 23:41:32 +02:00
|
|
|
|
2001-01-11 10:27:49 +01:00
|
|
|
|
2018-06-03 22:00:42 +02:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @section:
|
2018-06-03 22:00:42 +02:00
|
|
|
* multiple_masters
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @title:
|
2018-06-03 22:00:42 +02:00
|
|
|
* Multiple Masters
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @abstract:
|
2018-06-03 22:00:42 +02:00
|
|
|
* How to manage Multiple Masters fonts.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @description:
|
2018-08-24 18:52:30 +02:00
|
|
|
* The following types and functions are used to manage Multiple Master
|
|
|
|
* fonts, i.e., the selection of specific design instances by setting
|
|
|
|
* design axis coordinates.
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
2018-08-24 18:52:30 +02:00
|
|
|
* Besides Adobe MM fonts, the interface supports Apple's TrueType GX and
|
|
|
|
* OpenType variation fonts. Some of the routines only work with Adobe
|
|
|
|
* MM fonts, others will work with all three types. They are similar
|
|
|
|
* enough that a consistent interface makes sense.
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
2022-02-16 14:21:00 +01:00
|
|
|
* For Adobe MM fonts, macro @FT_IS_SFNT returns false. For GX and
|
|
|
|
* OpenType variation fonts, it returns true.
|
|
|
|
*
|
2018-06-03 22:00:42 +02:00
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @struct:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FT_MM_Axis
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @description:
|
2018-08-24 18:52:30 +02:00
|
|
|
* A structure to model a given axis in design space for Multiple Masters
|
|
|
|
* fonts.
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
|
|
|
* This structure can't be used for TrueType GX or OpenType variation
|
|
|
|
* fonts.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @fields:
|
2018-06-03 22:00:42 +02:00
|
|
|
* name ::
|
|
|
|
* The axis's name.
|
|
|
|
*
|
|
|
|
* minimum ::
|
|
|
|
* The axis's minimum design coordinate.
|
|
|
|
*
|
|
|
|
* maximum ::
|
|
|
|
* The axis's maximum design coordinate.
|
|
|
|
*/
|
2000-07-10 23:41:32 +02:00
|
|
|
typedef struct FT_MM_Axis_
|
2000-05-26 19:13:23 +02:00
|
|
|
{
|
|
|
|
FT_String* name;
|
|
|
|
FT_Long minimum;
|
|
|
|
FT_Long maximum;
|
2000-07-14 08:16:47 +02:00
|
|
|
|
2000-05-26 19:13:23 +02:00
|
|
|
} FT_MM_Axis;
|
|
|
|
|
2000-07-10 23:41:32 +02:00
|
|
|
|
2018-06-03 22:00:42 +02:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @struct:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FT_Multi_Master
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @description:
|
2018-08-24 18:52:30 +02:00
|
|
|
* A structure to model the axes and space of a Multiple Masters font.
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
|
|
|
* This structure can't be used for TrueType GX or OpenType variation
|
|
|
|
* fonts.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @fields:
|
2018-06-03 22:00:42 +02:00
|
|
|
* num_axis ::
|
|
|
|
* Number of axes. Cannot exceed~4.
|
|
|
|
*
|
|
|
|
* num_designs ::
|
2018-08-24 18:52:30 +02:00
|
|
|
* Number of designs; should be normally 2^num_axis even though the
|
|
|
|
* Type~1 specification strangely allows for intermediate designs to be
|
|
|
|
* present. This number cannot exceed~16.
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
|
|
|
* axis ::
|
|
|
|
* A table of axis descriptors.
|
|
|
|
*/
|
2000-07-10 23:41:32 +02:00
|
|
|
typedef struct FT_Multi_Master_
|
2000-05-26 19:13:23 +02:00
|
|
|
{
|
|
|
|
FT_UInt num_axis;
|
|
|
|
FT_UInt num_designs;
|
2000-07-10 23:41:32 +02:00
|
|
|
FT_MM_Axis axis[T1_MAX_MM_AXIS];
|
2000-07-14 08:16:47 +02:00
|
|
|
|
2000-05-26 19:13:23 +02:00
|
|
|
} FT_Multi_Master;
|
|
|
|
|
* src/pcf/pcfdrivr.c: Revert change from 2004-04-17.
* src/pcf/pcfutil.c: Use FT_LOCAL_DEF.
* src/pcf/pcfutil.h: Include FT_CONFIG_CONFIG_H.
Use FT_BEGIN_HEADER and FT_END_HEADER.
Use FT_LOCAL.
2004-04-24 George Williams <gww@silcom.com>
Add support for Apple's distortable font technology (in GX fonts).
* devel/ftoption.h, include/freetype/config/ftoption.h
(TT_CONFIG_OPTION_GX_VAR_SUPPORT): New macro.
* include/freetype/ftmm.h (FT_Var_Axis, FT_Var_Named_Style,
FT_MM_Var): New structures.
(FT_Get_MM_Var, FT_Set_Var_Design_Coordinates,
FT_Set_Var_Blend_Coordinates): New function declarations.
* include/freetype/internal/services/svmm.h (FT_Get_MM_Var_Func,
FT_Set_Var_Design_Func): New typedefs.
Update MultiMasters service.
* include/freetype/internal/tttypes.h
[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include FT_MULTIPLE_MASTERS_H.
(GX_Blend) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New typedef.
(TT_Face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New members `doblend'
and `blend'.
* include/freetype/tttags.h (TTAG_avar, TTAG_cvar, TTAG_gvar): New
macros.
* include/freetype/internal/fttrace.h: Add `ttgxvar'.
* src/base/ftmm.c (FT_Get_MM_Var, FT_Set_Var_Design_Coordinates,
FT_Set_Var_Blend_Coordinates): New functions.
* src/sfnt/sfobjs.c (sfnt_load_face)
[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Set FT_FACE_FLAG_MULTIPLE_MASTERS
flag for GX var fonts.
* src/truetype/ttgxvar.c, src/truetype/ttgxvar.h: New files.
* src/truetype/truetype.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.c.
* src/truetype/ttdriver.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
FT_MULTIPLE_MASTERS_H, FT_SERVICE_MULTIPLE_MASTERS_H, and ttgxvar.h.
(tt_service_gx_multi_masters) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]:
New service.
(tt_services) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated.
* src/truetype/ttgload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.h.
(TT_Process_Simple_Glyph, load_truetype_glyph)
[TT_CONFIG_OPTION_GX_VAR_SUPPORT] :Support GX var fonts.
* src/truetype/ttobjs.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.h.
(tt_done_face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call
tt_done_blend.
* src/truetype/ttpload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.h.
(tt_face_load_cvt) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call
tt_face_vary_cvt.
* src/truetype/rules.mk (TT_DRV_SRC): Add ttgxvar.c.
* src/type1/t1driver.c (t1_service_multi_masters): Add T1_Get_MM_Var
and T1_Set_Var_Design.
* src/type1/t1load.c (FT_INT_TO_FIXED, FT_FIXED_TO_INT): New macros.
(T1_Get_MM_Var, T1_Set_Var_Design): New functions.
* src/type1/t1load.h (T1_Get_MM_Var, T1_Set_Var_Design): New
function declarations.
2004-04-25 22:15:11 +02:00
|
|
|
|
2018-06-03 22:00:42 +02:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @struct:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FT_Var_Axis
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @description:
|
2018-06-03 22:00:42 +02:00
|
|
|
* A structure to model a given axis in design space for Multiple
|
|
|
|
* Masters, TrueType GX, and OpenType variation fonts.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @fields:
|
2018-06-03 22:00:42 +02:00
|
|
|
* name ::
|
2018-08-24 18:52:30 +02:00
|
|
|
* The axis's name. Not always meaningful for TrueType GX or OpenType
|
2018-06-03 22:00:42 +02:00
|
|
|
* variation fonts.
|
|
|
|
*
|
|
|
|
* minimum ::
|
|
|
|
* The axis's minimum design coordinate.
|
|
|
|
*
|
|
|
|
* def ::
|
2018-08-24 18:52:30 +02:00
|
|
|
* The axis's default design coordinate. FreeType computes meaningful
|
|
|
|
* default values for Adobe MM fonts.
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
|
|
|
* maximum ::
|
|
|
|
* The axis's maximum design coordinate.
|
|
|
|
*
|
|
|
|
* tag ::
|
2018-08-24 18:52:30 +02:00
|
|
|
* The axis's tag (the equivalent to 'name' for TrueType GX and
|
|
|
|
* OpenType variation fonts). FreeType provides default values for
|
|
|
|
* Adobe MM fonts if possible.
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
|
|
|
* strid ::
|
2019-02-21 09:19:09 +01:00
|
|
|
* The axis name entry in the font's 'name' table. This is another
|
2018-08-24 18:52:30 +02:00
|
|
|
* (and often better) version of the 'name' field for TrueType GX or
|
|
|
|
* OpenType variation fonts. Not meaningful for Adobe MM fonts.
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @note:
|
2018-09-04 10:37:44 +02:00
|
|
|
* The fields `minimum`, `def`, and `maximum` are 16.16 fractional values
|
2018-08-24 18:52:30 +02:00
|
|
|
* for TrueType GX and OpenType variation fonts. For Adobe MM fonts, the
|
2023-02-10 14:24:33 +01:00
|
|
|
* values are whole numbers (i.e., the fractional part is zero).
|
2018-06-03 22:00:42 +02:00
|
|
|
*/
|
* src/pcf/pcfdrivr.c: Revert change from 2004-04-17.
* src/pcf/pcfutil.c: Use FT_LOCAL_DEF.
* src/pcf/pcfutil.h: Include FT_CONFIG_CONFIG_H.
Use FT_BEGIN_HEADER and FT_END_HEADER.
Use FT_LOCAL.
2004-04-24 George Williams <gww@silcom.com>
Add support for Apple's distortable font technology (in GX fonts).
* devel/ftoption.h, include/freetype/config/ftoption.h
(TT_CONFIG_OPTION_GX_VAR_SUPPORT): New macro.
* include/freetype/ftmm.h (FT_Var_Axis, FT_Var_Named_Style,
FT_MM_Var): New structures.
(FT_Get_MM_Var, FT_Set_Var_Design_Coordinates,
FT_Set_Var_Blend_Coordinates): New function declarations.
* include/freetype/internal/services/svmm.h (FT_Get_MM_Var_Func,
FT_Set_Var_Design_Func): New typedefs.
Update MultiMasters service.
* include/freetype/internal/tttypes.h
[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include FT_MULTIPLE_MASTERS_H.
(GX_Blend) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New typedef.
(TT_Face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New members `doblend'
and `blend'.
* include/freetype/tttags.h (TTAG_avar, TTAG_cvar, TTAG_gvar): New
macros.
* include/freetype/internal/fttrace.h: Add `ttgxvar'.
* src/base/ftmm.c (FT_Get_MM_Var, FT_Set_Var_Design_Coordinates,
FT_Set_Var_Blend_Coordinates): New functions.
* src/sfnt/sfobjs.c (sfnt_load_face)
[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Set FT_FACE_FLAG_MULTIPLE_MASTERS
flag for GX var fonts.
* src/truetype/ttgxvar.c, src/truetype/ttgxvar.h: New files.
* src/truetype/truetype.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.c.
* src/truetype/ttdriver.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
FT_MULTIPLE_MASTERS_H, FT_SERVICE_MULTIPLE_MASTERS_H, and ttgxvar.h.
(tt_service_gx_multi_masters) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]:
New service.
(tt_services) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated.
* src/truetype/ttgload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.h.
(TT_Process_Simple_Glyph, load_truetype_glyph)
[TT_CONFIG_OPTION_GX_VAR_SUPPORT] :Support GX var fonts.
* src/truetype/ttobjs.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.h.
(tt_done_face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call
tt_done_blend.
* src/truetype/ttpload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.h.
(tt_face_load_cvt) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call
tt_face_vary_cvt.
* src/truetype/rules.mk (TT_DRV_SRC): Add ttgxvar.c.
* src/type1/t1driver.c (t1_service_multi_masters): Add T1_Get_MM_Var
and T1_Set_Var_Design.
* src/type1/t1load.c (FT_INT_TO_FIXED, FT_FIXED_TO_INT): New macros.
(T1_Get_MM_Var, T1_Set_Var_Design): New functions.
* src/type1/t1load.h (T1_Get_MM_Var, T1_Set_Var_Design): New
function declarations.
2004-04-25 22:15:11 +02:00
|
|
|
typedef struct FT_Var_Axis_
|
|
|
|
{
|
|
|
|
FT_String* name;
|
|
|
|
|
|
|
|
FT_Fixed minimum;
|
|
|
|
FT_Fixed def;
|
|
|
|
FT_Fixed maximum;
|
|
|
|
|
|
|
|
FT_ULong tag;
|
|
|
|
FT_UInt strid;
|
|
|
|
|
|
|
|
} FT_Var_Axis;
|
|
|
|
|
|
|
|
|
2018-06-03 22:00:42 +02:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @struct:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FT_Var_Named_Style
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @description:
|
2018-06-03 22:00:42 +02:00
|
|
|
* A structure to model a named instance in a TrueType GX or OpenType
|
|
|
|
* variation font.
|
|
|
|
*
|
|
|
|
* This structure can't be used for Adobe MM fonts.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @fields:
|
2018-06-03 22:00:42 +02:00
|
|
|
* coords ::
|
2018-08-24 18:52:30 +02:00
|
|
|
* The design coordinates for this instance. This is an array with one
|
|
|
|
* entry for each axis.
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
|
|
|
* strid ::
|
2019-02-21 09:19:09 +01:00
|
|
|
* The entry in 'name' table identifying this instance.
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
|
|
|
* psid ::
|
2019-02-21 09:19:09 +01:00
|
|
|
* The entry in 'name' table identifying a PostScript name for this
|
2018-08-24 18:52:30 +02:00
|
|
|
* instance. Value 0xFFFF indicates a missing entry.
|
2018-06-03 22:00:42 +02:00
|
|
|
*/
|
* src/pcf/pcfdrivr.c: Revert change from 2004-04-17.
* src/pcf/pcfutil.c: Use FT_LOCAL_DEF.
* src/pcf/pcfutil.h: Include FT_CONFIG_CONFIG_H.
Use FT_BEGIN_HEADER and FT_END_HEADER.
Use FT_LOCAL.
2004-04-24 George Williams <gww@silcom.com>
Add support for Apple's distortable font technology (in GX fonts).
* devel/ftoption.h, include/freetype/config/ftoption.h
(TT_CONFIG_OPTION_GX_VAR_SUPPORT): New macro.
* include/freetype/ftmm.h (FT_Var_Axis, FT_Var_Named_Style,
FT_MM_Var): New structures.
(FT_Get_MM_Var, FT_Set_Var_Design_Coordinates,
FT_Set_Var_Blend_Coordinates): New function declarations.
* include/freetype/internal/services/svmm.h (FT_Get_MM_Var_Func,
FT_Set_Var_Design_Func): New typedefs.
Update MultiMasters service.
* include/freetype/internal/tttypes.h
[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include FT_MULTIPLE_MASTERS_H.
(GX_Blend) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New typedef.
(TT_Face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New members `doblend'
and `blend'.
* include/freetype/tttags.h (TTAG_avar, TTAG_cvar, TTAG_gvar): New
macros.
* include/freetype/internal/fttrace.h: Add `ttgxvar'.
* src/base/ftmm.c (FT_Get_MM_Var, FT_Set_Var_Design_Coordinates,
FT_Set_Var_Blend_Coordinates): New functions.
* src/sfnt/sfobjs.c (sfnt_load_face)
[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Set FT_FACE_FLAG_MULTIPLE_MASTERS
flag for GX var fonts.
* src/truetype/ttgxvar.c, src/truetype/ttgxvar.h: New files.
* src/truetype/truetype.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.c.
* src/truetype/ttdriver.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
FT_MULTIPLE_MASTERS_H, FT_SERVICE_MULTIPLE_MASTERS_H, and ttgxvar.h.
(tt_service_gx_multi_masters) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]:
New service.
(tt_services) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated.
* src/truetype/ttgload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.h.
(TT_Process_Simple_Glyph, load_truetype_glyph)
[TT_CONFIG_OPTION_GX_VAR_SUPPORT] :Support GX var fonts.
* src/truetype/ttobjs.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.h.
(tt_done_face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call
tt_done_blend.
* src/truetype/ttpload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.h.
(tt_face_load_cvt) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call
tt_face_vary_cvt.
* src/truetype/rules.mk (TT_DRV_SRC): Add ttgxvar.c.
* src/type1/t1driver.c (t1_service_multi_masters): Add T1_Get_MM_Var
and T1_Set_Var_Design.
* src/type1/t1load.c (FT_INT_TO_FIXED, FT_FIXED_TO_INT): New macros.
(T1_Get_MM_Var, T1_Set_Var_Design): New functions.
* src/type1/t1load.h (T1_Get_MM_Var, T1_Set_Var_Design): New
function declarations.
2004-04-25 22:15:11 +02:00
|
|
|
typedef struct FT_Var_Named_Style_
|
|
|
|
{
|
|
|
|
FT_Fixed* coords;
|
|
|
|
FT_UInt strid;
|
2016-12-15 12:58:26 +01:00
|
|
|
FT_UInt psid; /* since 2.7.1 */
|
* src/pcf/pcfdrivr.c: Revert change from 2004-04-17.
* src/pcf/pcfutil.c: Use FT_LOCAL_DEF.
* src/pcf/pcfutil.h: Include FT_CONFIG_CONFIG_H.
Use FT_BEGIN_HEADER and FT_END_HEADER.
Use FT_LOCAL.
2004-04-24 George Williams <gww@silcom.com>
Add support for Apple's distortable font technology (in GX fonts).
* devel/ftoption.h, include/freetype/config/ftoption.h
(TT_CONFIG_OPTION_GX_VAR_SUPPORT): New macro.
* include/freetype/ftmm.h (FT_Var_Axis, FT_Var_Named_Style,
FT_MM_Var): New structures.
(FT_Get_MM_Var, FT_Set_Var_Design_Coordinates,
FT_Set_Var_Blend_Coordinates): New function declarations.
* include/freetype/internal/services/svmm.h (FT_Get_MM_Var_Func,
FT_Set_Var_Design_Func): New typedefs.
Update MultiMasters service.
* include/freetype/internal/tttypes.h
[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include FT_MULTIPLE_MASTERS_H.
(GX_Blend) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New typedef.
(TT_Face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New members `doblend'
and `blend'.
* include/freetype/tttags.h (TTAG_avar, TTAG_cvar, TTAG_gvar): New
macros.
* include/freetype/internal/fttrace.h: Add `ttgxvar'.
* src/base/ftmm.c (FT_Get_MM_Var, FT_Set_Var_Design_Coordinates,
FT_Set_Var_Blend_Coordinates): New functions.
* src/sfnt/sfobjs.c (sfnt_load_face)
[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Set FT_FACE_FLAG_MULTIPLE_MASTERS
flag for GX var fonts.
* src/truetype/ttgxvar.c, src/truetype/ttgxvar.h: New files.
* src/truetype/truetype.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.c.
* src/truetype/ttdriver.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
FT_MULTIPLE_MASTERS_H, FT_SERVICE_MULTIPLE_MASTERS_H, and ttgxvar.h.
(tt_service_gx_multi_masters) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]:
New service.
(tt_services) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated.
* src/truetype/ttgload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.h.
(TT_Process_Simple_Glyph, load_truetype_glyph)
[TT_CONFIG_OPTION_GX_VAR_SUPPORT] :Support GX var fonts.
* src/truetype/ttobjs.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.h.
(tt_done_face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call
tt_done_blend.
* src/truetype/ttpload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.h.
(tt_face_load_cvt) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call
tt_face_vary_cvt.
* src/truetype/rules.mk (TT_DRV_SRC): Add ttgxvar.c.
* src/type1/t1driver.c (t1_service_multi_masters): Add T1_Get_MM_Var
and T1_Set_Var_Design.
* src/type1/t1load.c (FT_INT_TO_FIXED, FT_FIXED_TO_INT): New macros.
(T1_Get_MM_Var, T1_Set_Var_Design): New functions.
* src/type1/t1load.h (T1_Get_MM_Var, T1_Set_Var_Design): New
function declarations.
2004-04-25 22:15:11 +02:00
|
|
|
|
|
|
|
} FT_Var_Named_Style;
|
|
|
|
|
|
|
|
|
2018-06-03 22:00:42 +02:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @struct:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FT_MM_Var
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @description:
|
2018-08-24 18:52:30 +02:00
|
|
|
* A structure to model the axes and space of an Adobe MM, TrueType GX,
|
|
|
|
* or OpenType variation font.
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
|
|
|
* Some fields are specific to one format and not to the others.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @fields:
|
2018-06-03 22:00:42 +02:00
|
|
|
* num_axis ::
|
2018-08-24 18:52:30 +02:00
|
|
|
* The number of axes. The maximum value is~4 for Adobe MM fonts; no
|
|
|
|
* limit in TrueType GX or OpenType variation fonts.
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
|
|
|
* num_designs ::
|
2018-08-24 18:52:30 +02:00
|
|
|
* The number of designs; should be normally 2^num_axis for Adobe MM
|
|
|
|
* fonts. Not meaningful for TrueType GX or OpenType variation fonts
|
|
|
|
* (where every glyph could have a different number of designs).
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
|
|
|
* num_namedstyles ::
|
2018-08-24 18:52:30 +02:00
|
|
|
* The number of named styles; a 'named style' is a tuple of design
|
2019-02-21 09:19:09 +01:00
|
|
|
* coordinates that has a string ID (in the 'name' table) associated
|
2018-08-24 18:52:30 +02:00
|
|
|
* with it. The font can tell the user that, for example,
|
|
|
|
* [Weight=1.5,Width=1.1] is 'Bold'. Another name for 'named style' is
|
|
|
|
* 'named instance'.
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
2018-08-24 18:52:30 +02:00
|
|
|
* For Adobe Multiple Masters fonts, this value is always zero because
|
|
|
|
* the format does not support named styles.
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
|
|
|
* axis ::
|
2018-08-24 18:52:30 +02:00
|
|
|
* An axis descriptor table. TrueType GX and OpenType variation fonts
|
|
|
|
* contain slightly more data than Adobe MM fonts. Memory management
|
|
|
|
* of this pointer is done internally by FreeType.
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
|
|
|
* namedstyle ::
|
2018-08-24 18:52:30 +02:00
|
|
|
* A named style (instance) table. Only meaningful for TrueType GX and
|
|
|
|
* OpenType variation fonts. Memory management of this pointer is done
|
|
|
|
* internally by FreeType.
|
2018-06-03 22:00:42 +02:00
|
|
|
*/
|
* src/pcf/pcfdrivr.c: Revert change from 2004-04-17.
* src/pcf/pcfutil.c: Use FT_LOCAL_DEF.
* src/pcf/pcfutil.h: Include FT_CONFIG_CONFIG_H.
Use FT_BEGIN_HEADER and FT_END_HEADER.
Use FT_LOCAL.
2004-04-24 George Williams <gww@silcom.com>
Add support for Apple's distortable font technology (in GX fonts).
* devel/ftoption.h, include/freetype/config/ftoption.h
(TT_CONFIG_OPTION_GX_VAR_SUPPORT): New macro.
* include/freetype/ftmm.h (FT_Var_Axis, FT_Var_Named_Style,
FT_MM_Var): New structures.
(FT_Get_MM_Var, FT_Set_Var_Design_Coordinates,
FT_Set_Var_Blend_Coordinates): New function declarations.
* include/freetype/internal/services/svmm.h (FT_Get_MM_Var_Func,
FT_Set_Var_Design_Func): New typedefs.
Update MultiMasters service.
* include/freetype/internal/tttypes.h
[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include FT_MULTIPLE_MASTERS_H.
(GX_Blend) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New typedef.
(TT_Face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New members `doblend'
and `blend'.
* include/freetype/tttags.h (TTAG_avar, TTAG_cvar, TTAG_gvar): New
macros.
* include/freetype/internal/fttrace.h: Add `ttgxvar'.
* src/base/ftmm.c (FT_Get_MM_Var, FT_Set_Var_Design_Coordinates,
FT_Set_Var_Blend_Coordinates): New functions.
* src/sfnt/sfobjs.c (sfnt_load_face)
[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Set FT_FACE_FLAG_MULTIPLE_MASTERS
flag for GX var fonts.
* src/truetype/ttgxvar.c, src/truetype/ttgxvar.h: New files.
* src/truetype/truetype.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.c.
* src/truetype/ttdriver.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
FT_MULTIPLE_MASTERS_H, FT_SERVICE_MULTIPLE_MASTERS_H, and ttgxvar.h.
(tt_service_gx_multi_masters) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]:
New service.
(tt_services) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated.
* src/truetype/ttgload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.h.
(TT_Process_Simple_Glyph, load_truetype_glyph)
[TT_CONFIG_OPTION_GX_VAR_SUPPORT] :Support GX var fonts.
* src/truetype/ttobjs.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.h.
(tt_done_face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call
tt_done_blend.
* src/truetype/ttpload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.h.
(tt_face_load_cvt) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call
tt_face_vary_cvt.
* src/truetype/rules.mk (TT_DRV_SRC): Add ttgxvar.c.
* src/type1/t1driver.c (t1_service_multi_masters): Add T1_Get_MM_Var
and T1_Set_Var_Design.
* src/type1/t1load.c (FT_INT_TO_FIXED, FT_FIXED_TO_INT): New macros.
(T1_Get_MM_Var, T1_Set_Var_Design): New functions.
* src/type1/t1load.h (T1_Get_MM_Var, T1_Set_Var_Design): New
function declarations.
2004-04-25 22:15:11 +02:00
|
|
|
typedef struct FT_MM_Var_
|
|
|
|
{
|
|
|
|
FT_UInt num_axis;
|
|
|
|
FT_UInt num_designs;
|
|
|
|
FT_UInt num_namedstyles;
|
|
|
|
FT_Var_Axis* axis;
|
|
|
|
FT_Var_Named_Style* namedstyle;
|
|
|
|
|
|
|
|
} FT_MM_Var;
|
|
|
|
|
|
|
|
|
2018-06-03 22:00:42 +02:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @function:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FT_Get_Multi_Master
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @description:
|
2018-06-03 22:00:42 +02:00
|
|
|
* Retrieve a variation descriptor of a given Adobe MM font.
|
|
|
|
*
|
|
|
|
* This function can't be used with TrueType GX or OpenType variation
|
|
|
|
* fonts.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @input:
|
2018-06-03 22:00:42 +02:00
|
|
|
* face ::
|
|
|
|
* A handle to the source face.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @output:
|
2018-06-03 22:00:42 +02:00
|
|
|
* amaster ::
|
|
|
|
* The Multiple Masters descriptor.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @return:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FreeType error code. 0~means success.
|
|
|
|
*/
|
2001-06-28 09:17:51 +02:00
|
|
|
FT_EXPORT( FT_Error )
|
|
|
|
FT_Get_Multi_Master( FT_Face face,
|
|
|
|
FT_Multi_Master *amaster );
|
2000-07-10 23:41:32 +02:00
|
|
|
|
|
|
|
|
2018-06-03 22:00:42 +02:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @function:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FT_Get_MM_Var
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @description:
|
2018-06-03 22:00:42 +02:00
|
|
|
* Retrieve a variation descriptor for a given font.
|
|
|
|
*
|
|
|
|
* This function works with all supported variation formats.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @input:
|
2018-06-03 22:00:42 +02:00
|
|
|
* face ::
|
|
|
|
* A handle to the source face.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @output:
|
2018-06-03 22:00:42 +02:00
|
|
|
* amaster ::
|
2018-08-24 18:52:30 +02:00
|
|
|
* The variation descriptor. Allocates a data structure, which the
|
|
|
|
* user must deallocate with a call to @FT_Done_MM_Var after use.
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @return:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FreeType error code. 0~means success.
|
|
|
|
*/
|
* src/pcf/pcfdrivr.c: Revert change from 2004-04-17.
* src/pcf/pcfutil.c: Use FT_LOCAL_DEF.
* src/pcf/pcfutil.h: Include FT_CONFIG_CONFIG_H.
Use FT_BEGIN_HEADER and FT_END_HEADER.
Use FT_LOCAL.
2004-04-24 George Williams <gww@silcom.com>
Add support for Apple's distortable font technology (in GX fonts).
* devel/ftoption.h, include/freetype/config/ftoption.h
(TT_CONFIG_OPTION_GX_VAR_SUPPORT): New macro.
* include/freetype/ftmm.h (FT_Var_Axis, FT_Var_Named_Style,
FT_MM_Var): New structures.
(FT_Get_MM_Var, FT_Set_Var_Design_Coordinates,
FT_Set_Var_Blend_Coordinates): New function declarations.
* include/freetype/internal/services/svmm.h (FT_Get_MM_Var_Func,
FT_Set_Var_Design_Func): New typedefs.
Update MultiMasters service.
* include/freetype/internal/tttypes.h
[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include FT_MULTIPLE_MASTERS_H.
(GX_Blend) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New typedef.
(TT_Face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New members `doblend'
and `blend'.
* include/freetype/tttags.h (TTAG_avar, TTAG_cvar, TTAG_gvar): New
macros.
* include/freetype/internal/fttrace.h: Add `ttgxvar'.
* src/base/ftmm.c (FT_Get_MM_Var, FT_Set_Var_Design_Coordinates,
FT_Set_Var_Blend_Coordinates): New functions.
* src/sfnt/sfobjs.c (sfnt_load_face)
[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Set FT_FACE_FLAG_MULTIPLE_MASTERS
flag for GX var fonts.
* src/truetype/ttgxvar.c, src/truetype/ttgxvar.h: New files.
* src/truetype/truetype.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.c.
* src/truetype/ttdriver.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
FT_MULTIPLE_MASTERS_H, FT_SERVICE_MULTIPLE_MASTERS_H, and ttgxvar.h.
(tt_service_gx_multi_masters) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]:
New service.
(tt_services) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated.
* src/truetype/ttgload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.h.
(TT_Process_Simple_Glyph, load_truetype_glyph)
[TT_CONFIG_OPTION_GX_VAR_SUPPORT] :Support GX var fonts.
* src/truetype/ttobjs.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.h.
(tt_done_face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call
tt_done_blend.
* src/truetype/ttpload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.h.
(tt_face_load_cvt) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call
tt_face_vary_cvt.
* src/truetype/rules.mk (TT_DRV_SRC): Add ttgxvar.c.
* src/type1/t1driver.c (t1_service_multi_masters): Add T1_Get_MM_Var
and T1_Set_Var_Design.
* src/type1/t1load.c (FT_INT_TO_FIXED, FT_FIXED_TO_INT): New macros.
(T1_Get_MM_Var, T1_Set_Var_Design): New functions.
* src/type1/t1load.h (T1_Get_MM_Var, T1_Set_Var_Design): New
function declarations.
2004-04-25 22:15:11 +02:00
|
|
|
FT_EXPORT( FT_Error )
|
|
|
|
FT_Get_MM_Var( FT_Face face,
|
|
|
|
FT_MM_Var* *amaster );
|
|
|
|
|
|
|
|
|
2018-06-03 22:00:42 +02:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @function:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FT_Done_MM_Var
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @description:
|
2018-06-03 22:00:42 +02:00
|
|
|
* Free the memory allocated by @FT_Get_MM_Var.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @input:
|
2018-06-03 22:00:42 +02:00
|
|
|
* library ::
|
2018-08-24 18:52:30 +02:00
|
|
|
* A handle of the face's parent library object that was used in the
|
2018-09-04 10:37:44 +02:00
|
|
|
* call to @FT_Get_MM_Var to create `amaster`.
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @return:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FreeType error code. 0~means success.
|
|
|
|
*/
|
2018-01-06 08:39:36 +01:00
|
|
|
FT_EXPORT( FT_Error )
|
|
|
|
FT_Done_MM_Var( FT_Library library,
|
|
|
|
FT_MM_Var *amaster );
|
|
|
|
|
|
|
|
|
2018-06-03 22:00:42 +02:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @function:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FT_Set_MM_Design_Coordinates
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @description:
|
2018-08-24 18:52:30 +02:00
|
|
|
* For Adobe MM fonts, choose an interpolated font design through design
|
|
|
|
* coordinates.
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
|
|
|
* This function can't be used with TrueType GX or OpenType variation
|
|
|
|
* fonts.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @inout:
|
2018-06-03 22:00:42 +02:00
|
|
|
* face ::
|
|
|
|
* A handle to the source face.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @input:
|
2018-06-03 22:00:42 +02:00
|
|
|
* num_coords ::
|
2018-08-24 18:52:30 +02:00
|
|
|
* The number of available design coordinates. If it is larger than
|
|
|
|
* the number of axes, ignore the excess values. If it is smaller than
|
|
|
|
* the number of axes, use default values for the remaining axes.
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
|
|
|
* coords ::
|
|
|
|
* An array of design coordinates.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @return:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FreeType error code. 0~means success.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @note:
|
2018-06-03 22:00:42 +02:00
|
|
|
* [Since 2.8.1] To reset all axes to the default values, call the
|
2019-02-20 16:18:40 +01:00
|
|
|
* function with `num_coords` set to zero and `coords` set to `NULL`.
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
2018-08-24 18:52:30 +02:00
|
|
|
* [Since 2.9] If `num_coords` is larger than zero, this function sets
|
|
|
|
* the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags` field
|
|
|
|
* (i.e., @FT_IS_VARIATION will return true). If `num_coords` is zero,
|
|
|
|
* this bit flag gets unset.
|
2018-06-03 22:00:42 +02:00
|
|
|
*/
|
2001-06-28 09:17:51 +02:00
|
|
|
FT_EXPORT( FT_Error )
|
|
|
|
FT_Set_MM_Design_Coordinates( FT_Face face,
|
|
|
|
FT_UInt num_coords,
|
|
|
|
FT_Long* coords );
|
2000-07-10 23:41:32 +02:00
|
|
|
|
|
|
|
|
2018-06-03 22:00:42 +02:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @function:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FT_Set_Var_Design_Coordinates
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @description:
|
2018-06-03 22:00:42 +02:00
|
|
|
* Choose an interpolated font design through design coordinates.
|
|
|
|
*
|
|
|
|
* This function works with all supported variation formats.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @inout:
|
2018-06-03 22:00:42 +02:00
|
|
|
* face ::
|
|
|
|
* A handle to the source face.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @input:
|
2018-06-03 22:00:42 +02:00
|
|
|
* num_coords ::
|
2018-08-24 18:52:30 +02:00
|
|
|
* The number of available design coordinates. If it is larger than
|
|
|
|
* the number of axes, ignore the excess values. If it is smaller than
|
|
|
|
* the number of axes, use default values for the remaining axes.
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
|
|
|
* coords ::
|
|
|
|
* An array of design coordinates.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @return:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FreeType error code. 0~means success.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @note:
|
2022-07-02 09:34:13 +02:00
|
|
|
* The design coordinates are 16.16 fractional values for TrueType GX and
|
2023-02-10 14:24:33 +01:00
|
|
|
* OpenType variation fonts. For Adobe MM fonts, the values are supposed
|
|
|
|
* to be whole numbers (i.e., the fractional part is zero).
|
2022-07-02 09:34:13 +02:00
|
|
|
*
|
2018-06-03 22:00:42 +02:00
|
|
|
* [Since 2.8.1] To reset all axes to the default values, call the
|
2019-02-20 16:18:40 +01:00
|
|
|
* function with `num_coords` set to zero and `coords` set to `NULL`.
|
2018-08-24 18:52:30 +02:00
|
|
|
* [Since 2.9] 'Default values' means the currently selected named
|
2018-06-03 22:00:42 +02:00
|
|
|
* instance (or the base font if no named instance is selected).
|
|
|
|
*
|
2018-08-24 18:52:30 +02:00
|
|
|
* [Since 2.9] If `num_coords` is larger than zero, this function sets
|
|
|
|
* the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags` field
|
|
|
|
* (i.e., @FT_IS_VARIATION will return true). If `num_coords` is zero,
|
|
|
|
* this bit flag gets unset.
|
2018-06-03 22:00:42 +02:00
|
|
|
*/
|
* src/pcf/pcfdrivr.c: Revert change from 2004-04-17.
* src/pcf/pcfutil.c: Use FT_LOCAL_DEF.
* src/pcf/pcfutil.h: Include FT_CONFIG_CONFIG_H.
Use FT_BEGIN_HEADER and FT_END_HEADER.
Use FT_LOCAL.
2004-04-24 George Williams <gww@silcom.com>
Add support for Apple's distortable font technology (in GX fonts).
* devel/ftoption.h, include/freetype/config/ftoption.h
(TT_CONFIG_OPTION_GX_VAR_SUPPORT): New macro.
* include/freetype/ftmm.h (FT_Var_Axis, FT_Var_Named_Style,
FT_MM_Var): New structures.
(FT_Get_MM_Var, FT_Set_Var_Design_Coordinates,
FT_Set_Var_Blend_Coordinates): New function declarations.
* include/freetype/internal/services/svmm.h (FT_Get_MM_Var_Func,
FT_Set_Var_Design_Func): New typedefs.
Update MultiMasters service.
* include/freetype/internal/tttypes.h
[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include FT_MULTIPLE_MASTERS_H.
(GX_Blend) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New typedef.
(TT_Face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New members `doblend'
and `blend'.
* include/freetype/tttags.h (TTAG_avar, TTAG_cvar, TTAG_gvar): New
macros.
* include/freetype/internal/fttrace.h: Add `ttgxvar'.
* src/base/ftmm.c (FT_Get_MM_Var, FT_Set_Var_Design_Coordinates,
FT_Set_Var_Blend_Coordinates): New functions.
* src/sfnt/sfobjs.c (sfnt_load_face)
[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Set FT_FACE_FLAG_MULTIPLE_MASTERS
flag for GX var fonts.
* src/truetype/ttgxvar.c, src/truetype/ttgxvar.h: New files.
* src/truetype/truetype.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.c.
* src/truetype/ttdriver.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
FT_MULTIPLE_MASTERS_H, FT_SERVICE_MULTIPLE_MASTERS_H, and ttgxvar.h.
(tt_service_gx_multi_masters) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]:
New service.
(tt_services) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated.
* src/truetype/ttgload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.h.
(TT_Process_Simple_Glyph, load_truetype_glyph)
[TT_CONFIG_OPTION_GX_VAR_SUPPORT] :Support GX var fonts.
* src/truetype/ttobjs.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.h.
(tt_done_face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call
tt_done_blend.
* src/truetype/ttpload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.h.
(tt_face_load_cvt) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call
tt_face_vary_cvt.
* src/truetype/rules.mk (TT_DRV_SRC): Add ttgxvar.c.
* src/type1/t1driver.c (t1_service_multi_masters): Add T1_Get_MM_Var
and T1_Set_Var_Design.
* src/type1/t1load.c (FT_INT_TO_FIXED, FT_FIXED_TO_INT): New macros.
(T1_Get_MM_Var, T1_Set_Var_Design): New functions.
* src/type1/t1load.h (T1_Get_MM_Var, T1_Set_Var_Design): New
function declarations.
2004-04-25 22:15:11 +02:00
|
|
|
FT_EXPORT( FT_Error )
|
|
|
|
FT_Set_Var_Design_Coordinates( FT_Face face,
|
|
|
|
FT_UInt num_coords,
|
|
|
|
FT_Fixed* coords );
|
|
|
|
|
|
|
|
|
2018-06-03 22:00:42 +02:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @function:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FT_Get_Var_Design_Coordinates
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @description:
|
2018-06-03 22:00:42 +02:00
|
|
|
* Get the design coordinates of the currently selected interpolated
|
|
|
|
* font.
|
|
|
|
*
|
|
|
|
* This function works with all supported variation formats.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @input:
|
2018-06-03 22:00:42 +02:00
|
|
|
* face ::
|
|
|
|
* A handle to the source face.
|
|
|
|
*
|
|
|
|
* num_coords ::
|
2018-08-24 18:52:30 +02:00
|
|
|
* The number of design coordinates to retrieve. If it is larger than
|
|
|
|
* the number of axes, set the excess values to~0.
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @output:
|
2018-06-03 22:00:42 +02:00
|
|
|
* coords ::
|
|
|
|
* The design coordinates array.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @return:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FreeType error code. 0~means success.
|
|
|
|
*
|
2022-07-02 09:34:13 +02:00
|
|
|
* @note:
|
|
|
|
* The design coordinates are 16.16 fractional values for TrueType GX and
|
2023-02-10 14:24:33 +01:00
|
|
|
* OpenType variation fonts. For Adobe MM fonts, the values are whole
|
|
|
|
* numbers (i.e., the fractional part is zero).
|
2022-07-02 09:34:13 +02:00
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @since:
|
2018-06-03 22:00:42 +02:00
|
|
|
* 2.7.1
|
|
|
|
*/
|
2016-12-05 22:08:15 +01:00
|
|
|
FT_EXPORT( FT_Error )
|
|
|
|
FT_Get_Var_Design_Coordinates( FT_Face face,
|
|
|
|
FT_UInt num_coords,
|
|
|
|
FT_Fixed* coords );
|
|
|
|
|
|
|
|
|
2018-06-03 22:00:42 +02:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @function:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FT_Set_MM_Blend_Coordinates
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @description:
|
2018-06-03 22:00:42 +02:00
|
|
|
* Choose an interpolated font design through normalized blend
|
|
|
|
* coordinates.
|
|
|
|
*
|
|
|
|
* This function works with all supported variation formats.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @inout:
|
2018-06-03 22:00:42 +02:00
|
|
|
* face ::
|
|
|
|
* A handle to the source face.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @input:
|
2018-06-03 22:00:42 +02:00
|
|
|
* num_coords ::
|
2018-08-24 18:52:30 +02:00
|
|
|
* The number of available design coordinates. If it is larger than
|
|
|
|
* the number of axes, ignore the excess values. If it is smaller than
|
|
|
|
* the number of axes, use default values for the remaining axes.
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
|
|
|
* coords ::
|
2022-07-02 09:34:13 +02:00
|
|
|
* The design coordinates array. Each element is a 16.16 fractional
|
|
|
|
* value and must be between 0 and 1.0 for Adobe MM fonts, and between
|
|
|
|
* -1.0 and 1.0 for TrueType GX and OpenType variation fonts.
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @return:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FreeType error code. 0~means success.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @note:
|
2018-06-03 22:00:42 +02:00
|
|
|
* [Since 2.8.1] To reset all axes to the default values, call the
|
2019-02-20 16:18:40 +01:00
|
|
|
* function with `num_coords` set to zero and `coords` set to `NULL`.
|
2018-08-24 18:52:30 +02:00
|
|
|
* [Since 2.9] 'Default values' means the currently selected named
|
2018-06-03 22:00:42 +02:00
|
|
|
* instance (or the base font if no named instance is selected).
|
|
|
|
*
|
2018-08-24 18:52:30 +02:00
|
|
|
* [Since 2.9] If `num_coords` is larger than zero, this function sets
|
|
|
|
* the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags` field
|
|
|
|
* (i.e., @FT_IS_VARIATION will return true). If `num_coords` is zero,
|
|
|
|
* this bit flag gets unset.
|
2018-06-03 22:00:42 +02:00
|
|
|
*/
|
2001-06-28 09:17:51 +02:00
|
|
|
FT_EXPORT( FT_Error )
|
|
|
|
FT_Set_MM_Blend_Coordinates( FT_Face face,
|
|
|
|
FT_UInt num_coords,
|
|
|
|
FT_Fixed* coords );
|
2000-07-10 23:41:32 +02:00
|
|
|
|
2000-05-26 19:13:23 +02:00
|
|
|
|
2018-06-03 22:00:42 +02:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @function:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FT_Get_MM_Blend_Coordinates
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @description:
|
2018-06-03 22:00:42 +02:00
|
|
|
* Get the normalized blend coordinates of the currently selected
|
|
|
|
* interpolated font.
|
|
|
|
*
|
|
|
|
* This function works with all supported variation formats.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @input:
|
2018-06-03 22:00:42 +02:00
|
|
|
* face ::
|
|
|
|
* A handle to the source face.
|
|
|
|
*
|
|
|
|
* num_coords ::
|
2018-08-24 18:52:30 +02:00
|
|
|
* The number of normalized blend coordinates to retrieve. If it is
|
|
|
|
* larger than the number of axes, set the excess values to~0.5 for
|
|
|
|
* Adobe MM fonts, and to~0 for TrueType GX and OpenType variation
|
|
|
|
* fonts.
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @output:
|
2018-06-03 22:00:42 +02:00
|
|
|
* coords ::
|
2022-07-02 09:34:13 +02:00
|
|
|
* The normalized blend coordinates array (as 16.16 fractional values).
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @return:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FreeType error code. 0~means success.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @since:
|
2018-06-03 22:00:42 +02:00
|
|
|
* 2.7.1
|
|
|
|
*/
|
2016-10-26 16:00:00 +02:00
|
|
|
FT_EXPORT( FT_Error )
|
|
|
|
FT_Get_MM_Blend_Coordinates( FT_Face face,
|
|
|
|
FT_UInt num_coords,
|
|
|
|
FT_Fixed* coords );
|
|
|
|
|
|
|
|
|
2018-06-03 22:00:42 +02:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @function:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FT_Set_Var_Blend_Coordinates
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @description:
|
2018-06-03 22:00:42 +02:00
|
|
|
* This is another name of @FT_Set_MM_Blend_Coordinates.
|
|
|
|
*/
|
* src/pcf/pcfdrivr.c: Revert change from 2004-04-17.
* src/pcf/pcfutil.c: Use FT_LOCAL_DEF.
* src/pcf/pcfutil.h: Include FT_CONFIG_CONFIG_H.
Use FT_BEGIN_HEADER and FT_END_HEADER.
Use FT_LOCAL.
2004-04-24 George Williams <gww@silcom.com>
Add support for Apple's distortable font technology (in GX fonts).
* devel/ftoption.h, include/freetype/config/ftoption.h
(TT_CONFIG_OPTION_GX_VAR_SUPPORT): New macro.
* include/freetype/ftmm.h (FT_Var_Axis, FT_Var_Named_Style,
FT_MM_Var): New structures.
(FT_Get_MM_Var, FT_Set_Var_Design_Coordinates,
FT_Set_Var_Blend_Coordinates): New function declarations.
* include/freetype/internal/services/svmm.h (FT_Get_MM_Var_Func,
FT_Set_Var_Design_Func): New typedefs.
Update MultiMasters service.
* include/freetype/internal/tttypes.h
[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include FT_MULTIPLE_MASTERS_H.
(GX_Blend) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New typedef.
(TT_Face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New members `doblend'
and `blend'.
* include/freetype/tttags.h (TTAG_avar, TTAG_cvar, TTAG_gvar): New
macros.
* include/freetype/internal/fttrace.h: Add `ttgxvar'.
* src/base/ftmm.c (FT_Get_MM_Var, FT_Set_Var_Design_Coordinates,
FT_Set_Var_Blend_Coordinates): New functions.
* src/sfnt/sfobjs.c (sfnt_load_face)
[TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Set FT_FACE_FLAG_MULTIPLE_MASTERS
flag for GX var fonts.
* src/truetype/ttgxvar.c, src/truetype/ttgxvar.h: New files.
* src/truetype/truetype.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.c.
* src/truetype/ttdriver.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
FT_MULTIPLE_MASTERS_H, FT_SERVICE_MULTIPLE_MASTERS_H, and ttgxvar.h.
(tt_service_gx_multi_masters) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]:
New service.
(tt_services) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated.
* src/truetype/ttgload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.h.
(TT_Process_Simple_Glyph, load_truetype_glyph)
[TT_CONFIG_OPTION_GX_VAR_SUPPORT] :Support GX var fonts.
* src/truetype/ttobjs.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.h.
(tt_done_face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call
tt_done_blend.
* src/truetype/ttpload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include
ttgxvar.h.
(tt_face_load_cvt) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call
tt_face_vary_cvt.
* src/truetype/rules.mk (TT_DRV_SRC): Add ttgxvar.c.
* src/type1/t1driver.c (t1_service_multi_masters): Add T1_Get_MM_Var
and T1_Set_Var_Design.
* src/type1/t1load.c (FT_INT_TO_FIXED, FT_FIXED_TO_INT): New macros.
(T1_Get_MM_Var, T1_Set_Var_Design): New functions.
* src/type1/t1load.h (T1_Get_MM_Var, T1_Set_Var_Design): New
function declarations.
2004-04-25 22:15:11 +02:00
|
|
|
FT_EXPORT( FT_Error )
|
|
|
|
FT_Set_Var_Blend_Coordinates( FT_Face face,
|
|
|
|
FT_UInt num_coords,
|
|
|
|
FT_Fixed* coords );
|
|
|
|
|
2016-10-26 16:00:00 +02:00
|
|
|
|
2018-06-03 22:00:42 +02:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @function:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FT_Get_Var_Blend_Coordinates
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @description:
|
2018-06-03 22:00:42 +02:00
|
|
|
* This is another name of @FT_Get_MM_Blend_Coordinates.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @since:
|
2018-06-03 22:00:42 +02:00
|
|
|
* 2.7.1
|
|
|
|
*/
|
2016-10-26 16:00:00 +02:00
|
|
|
FT_EXPORT( FT_Error )
|
|
|
|
FT_Get_Var_Blend_Coordinates( FT_Face face,
|
|
|
|
FT_UInt num_coords,
|
|
|
|
FT_Fixed* coords );
|
|
|
|
|
2017-08-05 18:22:17 +02:00
|
|
|
|
2018-11-27 22:24:06 +01:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
|
|
|
* @function:
|
|
|
|
* FT_Set_MM_WeightVector
|
|
|
|
*
|
|
|
|
* @description:
|
|
|
|
* For Adobe MM fonts, choose an interpolated font design by directly
|
|
|
|
* setting the weight vector.
|
|
|
|
*
|
|
|
|
* This function can't be used with TrueType GX or OpenType variation
|
|
|
|
* fonts.
|
|
|
|
*
|
|
|
|
* @inout:
|
|
|
|
* face ::
|
|
|
|
* A handle to the source face.
|
|
|
|
*
|
|
|
|
* @input:
|
|
|
|
* len ::
|
|
|
|
* The length of the weight vector array. If it is larger than the
|
|
|
|
* number of designs, the extra values are ignored. If it is less than
|
|
|
|
* the number of designs, the remaining values are set to zero.
|
|
|
|
*
|
|
|
|
* weightvector ::
|
|
|
|
* An array representing the weight vector.
|
|
|
|
*
|
|
|
|
* @return:
|
|
|
|
* FreeType error code. 0~means success.
|
|
|
|
*
|
|
|
|
* @note:
|
|
|
|
* Adobe Multiple Master fonts limit the number of designs, and thus the
|
[truetype] Fix deactivation of variation font handling.
According to the documentation, the functions `FT_Set_Named_Instance`,
`FT_Set_MM_Design_Coordinates`, `FT_Set_Var_Design_Coordinates`, and
`FT_Set_Var_Blend_Coordinates` can unset the `FT_FACE_FLAG_VARIATION` flag.
(The same is true for `FT_Set_MM_WeightVector` but this information was
accidentally omitted from the documentation.)
However, if a call of these functions didn't change the axis values this
could fail because internal shortcuts exited too early.
This commit reorganizes the code to handle `FT_FACE_FLAG_VARIATION` in the
top-level API functions, also taking care of the issue at hand.
* src/base/ftmm.c (FT_Set_MM_Design_Coordinates, FT_Set_MM_WeightVector,
FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates,
FT_Set_Var_Blend_Coordinates): Handle `FT_FACE_FLAG_VARIATION`.
* src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design,
TT_Set_Named_Instance) Don't handle `FT_FACE_FLAG_VARIATION`.
* src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_WeightVector,
T1_Set_MM_Design): Ditto.
* src/cff/cffobjs.c (cff_face_init): Use `FT_Set_Named_Instance` instead of
low-level functions.
* src/truetype/ttobjs.c (tt_face_init): Ditto.
2023-04-26 12:03:04 +02:00
|
|
|
* length of the weight vector to 16~elements.
|
2018-11-27 22:24:06 +01:00
|
|
|
*
|
[truetype] Fix deactivation of variation font handling.
According to the documentation, the functions `FT_Set_Named_Instance`,
`FT_Set_MM_Design_Coordinates`, `FT_Set_Var_Design_Coordinates`, and
`FT_Set_Var_Blend_Coordinates` can unset the `FT_FACE_FLAG_VARIATION` flag.
(The same is true for `FT_Set_MM_WeightVector` but this information was
accidentally omitted from the documentation.)
However, if a call of these functions didn't change the axis values this
could fail because internal shortcuts exited too early.
This commit reorganizes the code to handle `FT_FACE_FLAG_VARIATION` in the
top-level API functions, also taking care of the issue at hand.
* src/base/ftmm.c (FT_Set_MM_Design_Coordinates, FT_Set_MM_WeightVector,
FT_Set_Var_Design_Coordinates, FT_Set_MM_Blend_Coordinates,
FT_Set_Var_Blend_Coordinates): Handle `FT_FACE_FLAG_VARIATION`.
* src/truetype/ttgxvar.c (TT_Set_MM_Blend, TT_Set_Var_Design,
TT_Set_Named_Instance) Don't handle `FT_FACE_FLAG_VARIATION`.
* src/type1/t1load.c (T1_Set_MM_Blend, T1_Set_MM_WeightVector,
T1_Set_MM_Design): Ditto.
* src/cff/cffobjs.c (cff_face_init): Use `FT_Set_Named_Instance` instead of
low-level functions.
* src/truetype/ttobjs.c (tt_face_init): Ditto.
2023-04-26 12:03:04 +02:00
|
|
|
* If `len` is larger than zero, this function sets the
|
|
|
|
* @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags` field (i.e.,
|
|
|
|
* @FT_IS_VARIATION will return true). If `len` is zero, this bit flag
|
|
|
|
* is unset and the weight vector array is reset to the default values.
|
2018-11-27 22:24:06 +01:00
|
|
|
*
|
|
|
|
* The Adobe documentation also states that the values in the
|
|
|
|
* WeightVector array must total 1.0 +/-~0.001. In practice this does
|
|
|
|
* not seem to be enforced, so is not enforced here, either.
|
|
|
|
*
|
|
|
|
* @since:
|
|
|
|
* 2.10
|
|
|
|
*/
|
|
|
|
FT_EXPORT( FT_Error )
|
|
|
|
FT_Set_MM_WeightVector( FT_Face face,
|
|
|
|
FT_UInt len,
|
|
|
|
FT_Fixed* weightvector );
|
|
|
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
*
|
|
|
|
* @function:
|
|
|
|
* FT_Get_MM_WeightVector
|
|
|
|
*
|
|
|
|
* @description:
|
|
|
|
* For Adobe MM fonts, retrieve the current weight vector of the font.
|
|
|
|
*
|
|
|
|
* This function can't be used with TrueType GX or OpenType variation
|
|
|
|
* fonts.
|
|
|
|
*
|
|
|
|
* @inout:
|
|
|
|
* face ::
|
|
|
|
* A handle to the source face.
|
|
|
|
*
|
|
|
|
* len ::
|
|
|
|
* A pointer to the size of the array to be filled. If the size of the
|
|
|
|
* array is less than the number of designs, `FT_Err_Invalid_Argument`
|
|
|
|
* is returned, and `len` is set to the required size (the number of
|
|
|
|
* designs). If the size of the array is greater than the number of
|
|
|
|
* designs, the remaining entries are set to~0. On successful
|
|
|
|
* completion, `len` is set to the number of designs (i.e., the number
|
|
|
|
* of values written to the array).
|
|
|
|
*
|
2018-11-29 08:27:35 +01:00
|
|
|
* @output:
|
2018-11-27 22:24:06 +01:00
|
|
|
* weightvector ::
|
|
|
|
* An array to be filled.
|
|
|
|
*
|
|
|
|
* @return:
|
|
|
|
* FreeType error code. 0~means success.
|
|
|
|
*
|
|
|
|
* @note:
|
|
|
|
* Adobe Multiple Master fonts limit the number of designs, and thus the
|
|
|
|
* length of the WeightVector to~16.
|
|
|
|
*
|
|
|
|
* @since:
|
|
|
|
* 2.10
|
|
|
|
*/
|
|
|
|
FT_EXPORT( FT_Error )
|
|
|
|
FT_Get_MM_WeightVector( FT_Face face,
|
|
|
|
FT_UInt* len,
|
|
|
|
FT_Fixed* weightvector );
|
|
|
|
|
|
|
|
|
2018-06-03 22:00:42 +02:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @enum:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FT_VAR_AXIS_FLAG_XXX
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @description:
|
2018-06-03 22:00:42 +02:00
|
|
|
* A list of bit flags used in the return value of
|
|
|
|
* @FT_Get_Var_Axis_Flags.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @values:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FT_VAR_AXIS_FLAG_HIDDEN ::
|
|
|
|
* The variation axis should not be exposed to user interfaces.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @since:
|
2018-06-03 22:00:42 +02:00
|
|
|
* 2.8.1
|
|
|
|
*/
|
2017-08-05 18:22:17 +02:00
|
|
|
#define FT_VAR_AXIS_FLAG_HIDDEN 1
|
|
|
|
|
|
|
|
|
2018-06-03 22:00:42 +02:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @function:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FT_Get_Var_Axis_Flags
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @description:
|
2018-08-24 18:52:30 +02:00
|
|
|
* Get the 'flags' field of an OpenType Variation Axis Record.
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
2018-09-04 10:37:44 +02:00
|
|
|
* Not meaningful for Adobe MM fonts (`*flags` is always zero).
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @input:
|
2018-06-03 22:00:42 +02:00
|
|
|
* master ::
|
|
|
|
* The variation descriptor.
|
|
|
|
*
|
|
|
|
* axis_index ::
|
|
|
|
* The index of the requested variation axis.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @output:
|
2018-06-03 22:00:42 +02:00
|
|
|
* flags ::
|
2018-08-24 18:52:30 +02:00
|
|
|
* The 'flags' field. See @FT_VAR_AXIS_FLAG_XXX for possible values.
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @return:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FreeType error code. 0~means success.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @since:
|
2018-06-03 22:00:42 +02:00
|
|
|
* 2.8.1
|
|
|
|
*/
|
2017-08-05 18:22:17 +02:00
|
|
|
FT_EXPORT( FT_Error )
|
|
|
|
FT_Get_Var_Axis_Flags( FT_MM_Var* master,
|
|
|
|
FT_UInt axis_index,
|
|
|
|
FT_UInt* flags );
|
|
|
|
|
2017-10-07 11:40:03 +02:00
|
|
|
|
2018-06-03 22:00:42 +02:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @function:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FT_Set_Named_Instance
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @description:
|
2018-06-03 22:00:42 +02:00
|
|
|
* Set or change the current named instance.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @input:
|
2018-06-03 22:00:42 +02:00
|
|
|
* face ::
|
|
|
|
* A handle to the source face.
|
|
|
|
*
|
|
|
|
* instance_index ::
|
2018-08-24 18:52:30 +02:00
|
|
|
* The index of the requested instance, starting with value 1. If set
|
|
|
|
* to value 0, FreeType switches to font access without a named
|
2018-06-03 22:00:42 +02:00
|
|
|
* instance.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @return:
|
2018-06-03 22:00:42 +02:00
|
|
|
* FreeType error code. 0~means success.
|
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @note:
|
2018-08-24 18:52:30 +02:00
|
|
|
* The function uses the value of `instance_index` to set bits 16-30 of
|
|
|
|
* the face's `face_index` field. It also resets any variation applied
|
|
|
|
* to the font, and the @FT_FACE_FLAG_VARIATION bit of the face's
|
|
|
|
* `face_flags` field gets reset to zero (i.e., @FT_IS_VARIATION will
|
|
|
|
* return false).
|
|
|
|
*
|
|
|
|
* For Adobe MM fonts (which don't have named instances) this function
|
|
|
|
* simply resets the current face to the default instance.
|
2018-06-03 22:00:42 +02:00
|
|
|
*
|
2018-06-17 21:08:36 +02:00
|
|
|
* @since:
|
2018-06-03 22:00:42 +02:00
|
|
|
* 2.9
|
|
|
|
*/
|
2017-10-07 11:40:03 +02:00
|
|
|
FT_EXPORT( FT_Error )
|
|
|
|
FT_Set_Named_Instance( FT_Face face,
|
|
|
|
FT_UInt instance_index );
|
|
|
|
|
2023-04-26 08:17:17 +02:00
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
*
|
|
|
|
* @function:
|
|
|
|
* FT_Get_Default_Named_Instance
|
|
|
|
*
|
|
|
|
* @description:
|
|
|
|
* Retrieve the index of the default named instance, to be used with
|
|
|
|
* @FT_Set_Named_Instance.
|
|
|
|
*
|
|
|
|
* The default instance of a variation font is that instance for which
|
|
|
|
* the nth axis coordinate is equal to `axis[n].def` (as specified in the
|
|
|
|
* @FT_MM_Var structure), with~n covering all axes.
|
|
|
|
*
|
|
|
|
* FreeType synthesizes a named instance for the default instance if the
|
|
|
|
* font does not contain such an entry.
|
|
|
|
*
|
|
|
|
* @input:
|
|
|
|
* face ::
|
|
|
|
* A handle to the source face.
|
|
|
|
*
|
|
|
|
* @output:
|
|
|
|
* instance_index ::
|
|
|
|
* The index of the default named instance.
|
|
|
|
*
|
|
|
|
* @return:
|
|
|
|
* FreeType error code. 0~means success.
|
|
|
|
*
|
|
|
|
* @note:
|
|
|
|
* For Adobe MM fonts (which don't have named instances) this function
|
|
|
|
* always returns zero for `instance_index`.
|
|
|
|
*
|
|
|
|
* @since:
|
|
|
|
* 2.13.1
|
|
|
|
*/
|
|
|
|
FT_EXPORT( FT_Error )
|
|
|
|
FT_Get_Default_Named_Instance( FT_Face face,
|
|
|
|
FT_UInt *instance_index );
|
|
|
|
|
2001-01-11 10:27:49 +01:00
|
|
|
/* */
|
|
|
|
|
|
|
|
|
2000-12-01 00:12:33 +01:00
|
|
|
FT_END_HEADER
|
2000-05-26 19:13:23 +02:00
|
|
|
|
2016-01-12 21:37:13 +01:00
|
|
|
#endif /* FTMM_H_ */
|
2000-07-10 23:41:32 +02:00
|
|
|
|
|
|
|
|
2000-05-26 19:13:23 +02:00
|
|
|
/* END */
|