Add `FT_FACE_FLAG_SBIX` and `FT_HAS_SBIX`.
Fonts with 'sbix' tables need special handling by the application. * include/freetype/freetype.h (FT_FACE_FLAG_SBIX, FT_HAS_SBIX): New macros. * src/sfnt/sfobjs.c (sfnt_load_face): Set `FT_FACE_FLAG_SBIX` if 'sbix' table is present.
This commit is contained in:
parent
06727a5257
commit
907715a6a2
|
@ -154,6 +154,7 @@ FT_BEGIN_HEADER
|
||||||
* FT_FACE_FLAG_EXTERNAL_STREAM
|
* FT_FACE_FLAG_EXTERNAL_STREAM
|
||||||
* FT_FACE_FLAG_HINTER
|
* FT_FACE_FLAG_HINTER
|
||||||
* FT_FACE_FLAG_SVG
|
* FT_FACE_FLAG_SVG
|
||||||
|
* FT_FACE_FLAG_SBIX
|
||||||
*
|
*
|
||||||
* FT_HAS_HORIZONTAL
|
* FT_HAS_HORIZONTAL
|
||||||
* FT_HAS_VERTICAL
|
* FT_HAS_VERTICAL
|
||||||
|
@ -163,6 +164,7 @@ FT_BEGIN_HEADER
|
||||||
* FT_HAS_COLOR
|
* FT_HAS_COLOR
|
||||||
* FT_HAS_MULTIPLE_MASTERS
|
* FT_HAS_MULTIPLE_MASTERS
|
||||||
* FT_HAS_SVG
|
* FT_HAS_SVG
|
||||||
|
* FT_HAS_SBIX
|
||||||
*
|
*
|
||||||
* FT_IS_SFNT
|
* FT_IS_SFNT
|
||||||
* FT_IS_SCALABLE
|
* FT_IS_SCALABLE
|
||||||
|
@ -1236,6 +1238,12 @@ FT_BEGIN_HEADER
|
||||||
*
|
*
|
||||||
* FT_FACE_FLAG_SVG ::
|
* FT_FACE_FLAG_SVG ::
|
||||||
* [Since 2.12] The face has an 'SVG~' OpenType table.
|
* [Since 2.12] The face has an 'SVG~' OpenType table.
|
||||||
|
*
|
||||||
|
* FT_FACE_FLAG_SBIX ::
|
||||||
|
* [Since 2.12] The face has an 'sbix' OpenType table *and* outlines.
|
||||||
|
* For such fonts, @FT_FACE_FLAG_SCALABLE is not set by default to
|
||||||
|
* retain backward compatibility.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
#define FT_FACE_FLAG_SCALABLE ( 1L << 0 )
|
#define FT_FACE_FLAG_SCALABLE ( 1L << 0 )
|
||||||
#define FT_FACE_FLAG_FIXED_SIZES ( 1L << 1 )
|
#define FT_FACE_FLAG_FIXED_SIZES ( 1L << 1 )
|
||||||
|
@ -1254,6 +1262,7 @@ FT_BEGIN_HEADER
|
||||||
#define FT_FACE_FLAG_COLOR ( 1L << 14 )
|
#define FT_FACE_FLAG_COLOR ( 1L << 14 )
|
||||||
#define FT_FACE_FLAG_VARIATION ( 1L << 15 )
|
#define FT_FACE_FLAG_VARIATION ( 1L << 15 )
|
||||||
#define FT_FACE_FLAG_SVG ( 1L << 16 )
|
#define FT_FACE_FLAG_SVG ( 1L << 16 )
|
||||||
|
#define FT_FACE_FLAG_SBIX ( 1L << 17 )
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
|
@ -1510,6 +1519,22 @@ FT_BEGIN_HEADER
|
||||||
( !!( (face)->face_flags & FT_FACE_FLAG_SVG ) )
|
( !!( (face)->face_flags & FT_FACE_FLAG_SVG ) )
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* @macro:
|
||||||
|
* FT_HAS_SBIX
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* A macro that returns true whenever a face object contains an 'sbix'
|
||||||
|
* OpenType table *and* outline glyphs.
|
||||||
|
*
|
||||||
|
* @since:
|
||||||
|
* 2.12
|
||||||
|
*/
|
||||||
|
#define FT_HAS_SBIX( face ) \
|
||||||
|
( !!( (face)->face_flags & FT_FACE_FLAG_SBIX ) )
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
* @enum:
|
* @enum:
|
||||||
|
|
|
@ -1058,8 +1058,13 @@
|
||||||
flags |= FT_FACE_FLAG_COLOR; /* color glyphs */
|
flags |= FT_FACE_FLAG_COLOR; /* color glyphs */
|
||||||
|
|
||||||
if ( has_outline == TRUE )
|
if ( has_outline == TRUE )
|
||||||
|
{
|
||||||
flags |= FT_FACE_FLAG_SCALABLE; /* scalable outlines */
|
flags |= FT_FACE_FLAG_SCALABLE; /* scalable outlines */
|
||||||
|
|
||||||
|
if ( face->sbit_table_type == TT_SBIT_TABLE_TYPE_SBIX )
|
||||||
|
flags |= FT_FACE_FLAG_SBIX; /* and 'sbix' bitmaps */
|
||||||
|
}
|
||||||
|
|
||||||
/* The sfnt driver only supports bitmap fonts natively, thus we */
|
/* The sfnt driver only supports bitmap fonts natively, thus we */
|
||||||
/* don't set FT_FACE_FLAG_HINTER. */
|
/* don't set FT_FACE_FLAG_HINTER. */
|
||||||
flags |= FT_FACE_FLAG_SFNT | /* SFNT file format */
|
flags |= FT_FACE_FLAG_SFNT | /* SFNT file format */
|
||||||
|
|
Loading…
Reference in New Issue