Remove unpatented hinter (3/3).
* include/freetype/config/ftoption.h (TT_CONFIG_OPTION_UNPATENTED_HINTING): Remove. * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Remove `ignore_unpatented_hinter' field. Update users. (FT_DEBUG_HOOK_UNPATENTED_HINTING): Remove. Update users. * include/freetype/internal/tttypes.h (TT_FaceRec): Remove `unpatented_hinting' field. Update users. * src/base/ftpatent.c (_tt_check_patents_in_range, _tt_check_patents_in_table, _tt_face_check_patents): Remove. (FT_Face_CheckTrueTypePatents, FT_Face_SetUnpatentedHinting): Replace code with dummies. * src/truetype/ttobjs.c (tt_face_init): Remove now defunct code. * src/truetype/ttobjs.h (TT_GraphicsState): Remove `both_x_axis' field.
This commit is contained in:
parent
5b7871be12
commit
1d8d0b4ef9
26
ChangeLog
26
ChangeLog
|
@ -1,3 +1,29 @@
|
|||
2016-01-28 Nikolaus Waxweiler <madigens@gmail.com>
|
||||
|
||||
Remove unpatented hinter (3/3).
|
||||
|
||||
* include/freetype/config/ftoption.h
|
||||
(TT_CONFIG_OPTION_UNPATENTED_HINTING): Remove.
|
||||
|
||||
* include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Remove
|
||||
`ignore_unpatented_hinter' field.
|
||||
Update users.
|
||||
(FT_DEBUG_HOOK_UNPATENTED_HINTING): Remove.
|
||||
Update users.
|
||||
|
||||
* include/freetype/internal/tttypes.h (TT_FaceRec): Remove
|
||||
`unpatented_hinting' field.
|
||||
Update users.
|
||||
|
||||
* src/base/ftpatent.c (_tt_check_patents_in_range,
|
||||
_tt_check_patents_in_table, _tt_face_check_patents): Remove.
|
||||
(FT_Face_CheckTrueTypePatents, FT_Face_SetUnpatentedHinting):
|
||||
Replace code with dummies.
|
||||
|
||||
* src/truetype/ttobjs.c (tt_face_init): Remove now defunct code.
|
||||
* src/truetype/ttobjs.h (TT_GraphicsState): Remove `both_x_axis'
|
||||
field.
|
||||
|
||||
2016-01-28 Nikolaus Waxweiler <madigens@gmail.com>
|
||||
|
||||
Remove unpatented hinter (2/3).
|
||||
|
|
|
@ -753,8 +753,7 @@
|
|||
* FT_UNPATENTED_HINTING_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* FreeType~2 API which performs color filtering for subpixel rendering.
|
||||
* Deprecated.
|
||||
*/
|
||||
#define FT_UNPATENTED_HINTING_H <freetype/ttunpat.h>
|
||||
|
||||
|
@ -766,7 +765,7 @@
|
|||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* FreeType~2 API which performs color filtering for subpixel rendering.
|
||||
* FreeType~2 API which performs incremental glyph loading.
|
||||
*/
|
||||
#define FT_INCREMENTAL_H <freetype/ftincrem.h>
|
||||
|
||||
|
|
|
@ -605,56 +605,6 @@ FT_BEGIN_HEADER
|
|||
/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* If you define TT_CONFIG_OPTION_UNPATENTED_HINTING, a special version */
|
||||
/* of the TrueType bytecode interpreter is used that doesn't implement */
|
||||
/* any of the patented opcodes and algorithms. The patents related to */
|
||||
/* TrueType hinting have expired worldwide since May 2010; this option */
|
||||
/* is now deprecated. */
|
||||
/* */
|
||||
/* Note that the TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored* */
|
||||
/* if you define TT_CONFIG_OPTION_BYTECODE_INTERPRETER; in other words, */
|
||||
/* either define TT_CONFIG_OPTION_BYTECODE_INTERPRETER or */
|
||||
/* TT_CONFIG_OPTION_UNPATENTED_HINTING but not both at the same time. */
|
||||
/* */
|
||||
/* This macro is only useful for a small number of font files (mostly */
|
||||
/* for Asian scripts) that require bytecode interpretation to properly */
|
||||
/* load glyphs. For all other fonts, this produces unpleasant results, */
|
||||
/* thus the unpatented interpreter is never used to load glyphs from */
|
||||
/* TrueType fonts unless one of the following two options is used. */
|
||||
/* */
|
||||
/* - The unpatented interpreter is explicitly activated by the user */
|
||||
/* through the FT_PARAM_TAG_UNPATENTED_HINTING parameter tag */
|
||||
/* when opening the FT_Face. */
|
||||
/* */
|
||||
/* - FreeType detects that the FT_Face corresponds to one of the */
|
||||
/* `trick' fonts (e.g., `Mingliu') it knows about. The font engine */
|
||||
/* contains a hard-coded list of font names and other matching */
|
||||
/* parameters (see function `tt_face_init' in file */
|
||||
/* `src/truetype/ttobjs.c'). */
|
||||
/* */
|
||||
/* Here a sample code snippet for using FT_PARAM_TAG_UNPATENTED_HINTING. */
|
||||
/* */
|
||||
/* { */
|
||||
/* FT_Parameter parameter; */
|
||||
/* FT_Open_Args open_args; */
|
||||
/* */
|
||||
/* */
|
||||
/* parameter.tag = FT_PARAM_TAG_UNPATENTED_HINTING; */
|
||||
/* */
|
||||
/* open_args.flags = FT_OPEN_PATHNAME | FT_OPEN_PARAMS; */
|
||||
/* open_args.pathname = my_font_pathname; */
|
||||
/* open_args.num_params = 1; */
|
||||
/* open_args.params = ¶meter; */
|
||||
/* */
|
||||
/* error = FT_Open_Face( library, &open_args, index, &face ); */
|
||||
/* ... */
|
||||
/* } */
|
||||
/* */
|
||||
/* #define TT_CONFIG_OPTION_UNPATENTED_HINTING */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Define TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED to compile the */
|
||||
|
@ -856,14 +806,11 @@ FT_BEGIN_HEADER
|
|||
|
||||
|
||||
/*
|
||||
* This macro is defined if either unpatented or native TrueType
|
||||
* hinting is requested by the definitions above.
|
||||
* This macro is defined if native TrueType hinting is requested by the
|
||||
* definitions above.
|
||||
*/
|
||||
#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
|
||||
#define TT_USE_BYTECODE_INTERPRETER
|
||||
#undef TT_CONFIG_OPTION_UNPATENTED_HINTING
|
||||
#elif defined TT_CONFIG_OPTION_UNPATENTED_HINTING
|
||||
#define TT_USE_BYTECODE_INTERPRETER
|
||||
#endif
|
||||
|
||||
|
||||
|
|
|
@ -4217,20 +4217,13 @@ FT_BEGIN_HEADER
|
|||
/* FT_Face_CheckTrueTypePatents */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Parse all bytecode instructions of a TrueType font file to check */
|
||||
/* whether any of the patented opcodes are used. This is only useful */
|
||||
/* if you want to be able to use the unpatented hinter with */
|
||||
/* fonts that do *not* use these opcodes. */
|
||||
/* */
|
||||
/* Note that this function parses *all* glyph instructions in the */
|
||||
/* font file, which may be slow. */
|
||||
/* Deprecated, does nothing. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* face :: A face handle. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* 1~if this is a TrueType font that uses one of the patented */
|
||||
/* opcodes, 0~otherwise. */
|
||||
/* Always returns false. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* Since May 2010, TrueType hinting is no longer patented. */
|
||||
|
@ -4248,9 +4241,7 @@ FT_BEGIN_HEADER
|
|||
/* FT_Face_SetUnpatentedHinting */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Enable or disable the unpatented hinter for a given face. */
|
||||
/* Only enable it if you have determined that the face doesn't */
|
||||
/* use any patented opcodes (see @FT_Face_CheckTrueTypePatents). */
|
||||
/* Deprecated, does nothing. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* face :: A face handle. */
|
||||
|
@ -4258,9 +4249,7 @@ FT_BEGIN_HEADER
|
|||
/* value :: New boolean setting. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* The old setting value. This will always be false if this is not */
|
||||
/* an SFNT font, or if the unpatented hinter is not compiled in this */
|
||||
/* instance of the library. */
|
||||
/* Always returns false. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* Since May 2010, TrueType hinting is no longer patented. */
|
||||
|
|
|
@ -613,12 +613,7 @@ FT_BEGIN_HEADER
|
|||
* The library doesn't implement any kind of bytecode interpreter.
|
||||
*
|
||||
* FT_TRUETYPE_ENGINE_TYPE_UNPATENTED ::
|
||||
* The library implements a bytecode interpreter that doesn't
|
||||
* support the patented operations of the TrueType virtual machine.
|
||||
*
|
||||
* Its main use is to load certain Asian fonts that position and
|
||||
* scale glyph components with bytecode instructions. It produces
|
||||
* bad output for most other fonts.
|
||||
* Deprecated and removed.
|
||||
*
|
||||
* FT_TRUETYPE_ENGINE_TYPE_PATENTED ::
|
||||
* The library implements a bytecode interpreter that covers
|
||||
|
|
|
@ -341,12 +341,6 @@ FT_BEGIN_HEADER
|
|||
/* this data when first opened. This field exists only if */
|
||||
/* @FT_CONFIG_OPTION_INCREMENTAL is defined. */
|
||||
/* */
|
||||
/* ignore_unpatented_hinter :: */
|
||||
/* This boolean flag instructs the glyph loader to ignore the */
|
||||
/* native font hinter, if one is found. This is exclusively used */
|
||||
/* in the case when the unpatented hinter is compiled within the */
|
||||
/* library. */
|
||||
/* */
|
||||
/* refcount :: */
|
||||
/* A counter initialized to~1 at the time an @FT_Face structure is */
|
||||
/* created. @FT_Reference_Face increments this counter, and */
|
||||
|
@ -365,7 +359,6 @@ FT_BEGIN_HEADER
|
|||
FT_Incremental_InterfaceRec* incremental_interface;
|
||||
#endif
|
||||
|
||||
FT_Bool ignore_unpatented_hinter;
|
||||
FT_Int refcount;
|
||||
|
||||
} FT_Face_InternalRec;
|
||||
|
@ -775,13 +768,6 @@ FT_BEGIN_HEADER
|
|||
#define FT_DEBUG_HOOK_TRUETYPE 0
|
||||
|
||||
|
||||
/* Set this debug hook to a non-null pointer to force unpatented hinting */
|
||||
/* for all faces when both TT_USE_BYTECODE_INTERPRETER and */
|
||||
/* TT_CONFIG_OPTION_UNPATENTED_HINTING are defined. This is only used */
|
||||
/* during debugging. */
|
||||
#define FT_DEBUG_HOOK_UNPATENTED_HINTING 1
|
||||
|
||||
|
||||
typedef void (*FT_Bitmap_LcdFilterFunc)( FT_Bitmap* bitmap,
|
||||
FT_Render_Mode render_mode,
|
||||
FT_Library library );
|
||||
|
|
|
@ -1233,9 +1233,6 @@ FT_BEGIN_HEADER
|
|||
/* interpreters field is also used to hook */
|
||||
/* the debugger in `ttdebug'. */
|
||||
/* */
|
||||
/* unpatented_hinting :: If true, use only unpatented methods in */
|
||||
/* the bytecode interpreter. */
|
||||
/* */
|
||||
/* doblend :: A boolean which is set if the font should */
|
||||
/* be blended (this is for GX var). */
|
||||
/* */
|
||||
|
@ -1334,10 +1331,6 @@ FT_BEGIN_HEADER
|
|||
/* used to hook the debugger for the `ttdebug' utility. */
|
||||
TT_Interpreter interpreter;
|
||||
|
||||
#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING
|
||||
/* Use unpatented hinting only. */
|
||||
FT_Bool unpatented_hinting;
|
||||
#endif
|
||||
|
||||
/***********************************************************************/
|
||||
/* */
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
/* */
|
||||
/* ttunpat.h */
|
||||
/* */
|
||||
/* Definitions for the unpatented TrueType hinting system */
|
||||
/* Definitions for the unpatented TrueType hinting system. */
|
||||
/* Obsolete, retained for backwards compatibility. */
|
||||
/* */
|
||||
/* Copyright 2003-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
|
@ -41,9 +42,11 @@ FT_BEGIN_HEADER
|
|||
* FT_PARAM_TAG_UNPATENTED_HINTING
|
||||
*
|
||||
* @description:
|
||||
* A constant used as the tag of an @FT_Parameter structure to indicate
|
||||
* that unpatented methods only should be used by the TrueType bytecode
|
||||
* interpreter for a typeface opened by @FT_Open_Face.
|
||||
* Deprecated.
|
||||
*
|
||||
* Previously: A constant used as the tag of an @FT_Parameter structure to
|
||||
* indicate that unpatented methods only should be used by the TrueType
|
||||
* bytecode interpreter for a typeface opened by @FT_Open_Face.
|
||||
*
|
||||
*/
|
||||
#define FT_PARAM_TAG_UNPATENTED_HINTING FT_MAKE_TAG( 'u', 'n', 'p', 'a' )
|
||||
|
|
|
@ -688,7 +688,6 @@
|
|||
/* both `fpgm' and `prep' tables are missing */
|
||||
if ( ( mode == FT_RENDER_MODE_LIGHT &&
|
||||
!FT_DRIVER_HINTS_LIGHTLY( driver ) ) ||
|
||||
face->internal->ignore_unpatented_hinter ||
|
||||
( FT_IS_SFNT( face ) &&
|
||||
ttface->num_locations &&
|
||||
ttface->max_profile.maxSizeOfInstructions == 0 &&
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
/* ftpatent.c */
|
||||
/* */
|
||||
/* FreeType API for checking patented TrueType bytecode instructions */
|
||||
/* (body). */
|
||||
/* (body). Obsolete, retained for backwards compatibility. */
|
||||
/* */
|
||||
/* Copyright 2007-2016 by */
|
||||
/* David Turner. */
|
||||
|
@ -25,238 +25,14 @@
|
|||
#include FT_SERVICE_TRUETYPE_GLYF_H
|
||||
|
||||
|
||||
static FT_Bool
|
||||
_tt_check_patents_in_range( FT_Stream stream,
|
||||
FT_ULong size )
|
||||
{
|
||||
FT_Bool result = FALSE;
|
||||
FT_Error error;
|
||||
FT_Bytes p, end;
|
||||
|
||||
|
||||
if ( FT_FRAME_ENTER( size ) )
|
||||
return 0;
|
||||
|
||||
p = stream->cursor;
|
||||
end = p + size;
|
||||
|
||||
while ( p < end )
|
||||
{
|
||||
switch (p[0])
|
||||
{
|
||||
case 0x06: /* SPvTL // */
|
||||
case 0x07: /* SPvTL + */
|
||||
case 0x08: /* SFvTL // */
|
||||
case 0x09: /* SFvTL + */
|
||||
case 0x0A: /* SPvFS */
|
||||
case 0x0B: /* SFvFS */
|
||||
result = TRUE;
|
||||
goto Exit;
|
||||
|
||||
case 0x40:
|
||||
if ( p + 1 >= end )
|
||||
goto Exit;
|
||||
|
||||
p += p[1] + 2;
|
||||
break;
|
||||
|
||||
case 0x41:
|
||||
if ( p + 1 >= end )
|
||||
goto Exit;
|
||||
|
||||
p += p[1] * 2 + 2;
|
||||
break;
|
||||
|
||||
case 0x71: /* DELTAP2 */
|
||||
case 0x72: /* DELTAP3 */
|
||||
case 0x73: /* DELTAC0 */
|
||||
case 0x74: /* DELTAC1 */
|
||||
case 0x75: /* DELTAC2 */
|
||||
result = TRUE;
|
||||
goto Exit;
|
||||
|
||||
case 0xB0:
|
||||
case 0xB1:
|
||||
case 0xB2:
|
||||
case 0xB3:
|
||||
case 0xB4:
|
||||
case 0xB5:
|
||||
case 0xB6:
|
||||
case 0xB7:
|
||||
p += ( p[0] - 0xB0 ) + 2;
|
||||
break;
|
||||
|
||||
case 0xB8:
|
||||
case 0xB9:
|
||||
case 0xBA:
|
||||
case 0xBB:
|
||||
case 0xBC:
|
||||
case 0xBD:
|
||||
case 0xBE:
|
||||
case 0xBF:
|
||||
p += ( p[0] - 0xB8 ) * 2 + 3;
|
||||
break;
|
||||
|
||||
default:
|
||||
p += 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Exit:
|
||||
FT_UNUSED( error );
|
||||
FT_FRAME_EXIT();
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
static FT_Bool
|
||||
_tt_check_patents_in_table( FT_Face face,
|
||||
FT_ULong tag )
|
||||
{
|
||||
FT_Stream stream = face->stream;
|
||||
FT_Error error = FT_Err_Ok;
|
||||
FT_Service_SFNT_Table service;
|
||||
FT_Bool result = FALSE;
|
||||
|
||||
|
||||
FT_FACE_FIND_SERVICE( face, service, SFNT_TABLE );
|
||||
|
||||
if ( service )
|
||||
{
|
||||
FT_UInt i = 0;
|
||||
FT_ULong tag_i = 0, offset_i = 0, length_i = 0;
|
||||
|
||||
|
||||
for ( i = 0; !error && tag_i != tag ; i++ )
|
||||
error = service->table_info( face, i,
|
||||
&tag_i, &offset_i, &length_i );
|
||||
|
||||
if ( error ||
|
||||
FT_STREAM_SEEK( offset_i ) )
|
||||
goto Exit;
|
||||
|
||||
result = _tt_check_patents_in_range( stream, length_i );
|
||||
}
|
||||
|
||||
Exit:
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
static FT_Bool
|
||||
_tt_face_check_patents( FT_Face face )
|
||||
{
|
||||
FT_Stream stream = face->stream;
|
||||
FT_UInt gindex;
|
||||
FT_Error error;
|
||||
FT_Bool result;
|
||||
|
||||
FT_Service_TTGlyf service;
|
||||
|
||||
|
||||
result = _tt_check_patents_in_table( face, TTAG_fpgm );
|
||||
if ( result )
|
||||
goto Exit;
|
||||
|
||||
result = _tt_check_patents_in_table( face, TTAG_prep );
|
||||
if ( result )
|
||||
goto Exit;
|
||||
|
||||
FT_FACE_FIND_SERVICE( face, service, TT_GLYF );
|
||||
if ( service == NULL )
|
||||
goto Exit;
|
||||
|
||||
for ( gindex = 0; gindex < (FT_UInt)face->num_glyphs; gindex++ )
|
||||
{
|
||||
FT_ULong offset, num_ins, size;
|
||||
FT_Int num_contours;
|
||||
|
||||
|
||||
offset = service->get_location( face, gindex, &size );
|
||||
if ( size == 0 )
|
||||
continue;
|
||||
|
||||
if ( FT_STREAM_SEEK( offset ) ||
|
||||
FT_READ_SHORT( num_contours ) )
|
||||
continue;
|
||||
|
||||
if ( num_contours >= 0 ) /* simple glyph */
|
||||
{
|
||||
if ( FT_STREAM_SKIP( 8 + num_contours * 2 ) )
|
||||
continue;
|
||||
}
|
||||
else /* compound glyph */
|
||||
{
|
||||
FT_Bool has_instr = 0;
|
||||
|
||||
|
||||
if ( FT_STREAM_SKIP( 8 ) )
|
||||
continue;
|
||||
|
||||
/* now read each component */
|
||||
for (;;)
|
||||
{
|
||||
FT_UInt flags, toskip;
|
||||
|
||||
|
||||
if( FT_READ_USHORT( flags ) )
|
||||
break;
|
||||
|
||||
toskip = 2 + 1 + 1;
|
||||
|
||||
if ( ( flags & ( 1 << 0 ) ) != 0 ) /* ARGS_ARE_WORDS */
|
||||
toskip += 2;
|
||||
|
||||
if ( ( flags & ( 1 << 3 ) ) != 0 ) /* WE_HAVE_A_SCALE */
|
||||
toskip += 2;
|
||||
else if ( ( flags & ( 1 << 6 ) ) != 0 ) /* WE_HAVE_X_Y_SCALE */
|
||||
toskip += 4;
|
||||
else if ( ( flags & ( 1 << 7 ) ) != 0 ) /* WE_HAVE_A_2x2 */
|
||||
toskip += 8;
|
||||
|
||||
if ( ( flags & ( 1 << 8 ) ) != 0 ) /* WE_HAVE_INSTRUCTIONS */
|
||||
has_instr = 1;
|
||||
|
||||
if ( FT_STREAM_SKIP( toskip ) )
|
||||
goto NextGlyph;
|
||||
|
||||
if ( ( flags & ( 1 << 5 ) ) == 0 ) /* MORE_COMPONENTS */
|
||||
break;
|
||||
}
|
||||
|
||||
if ( !has_instr )
|
||||
goto NextGlyph;
|
||||
}
|
||||
|
||||
if ( FT_READ_USHORT( num_ins ) )
|
||||
continue;
|
||||
|
||||
result = _tt_check_patents_in_range( stream, num_ins );
|
||||
if ( result )
|
||||
goto Exit;
|
||||
|
||||
NextGlyph:
|
||||
;
|
||||
}
|
||||
|
||||
Exit:
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/* documentation is in freetype.h */
|
||||
|
||||
FT_EXPORT_DEF( FT_Bool )
|
||||
FT_Face_CheckTrueTypePatents( FT_Face face )
|
||||
{
|
||||
FT_Bool result = FALSE;
|
||||
FT_UNUSED( face );
|
||||
|
||||
|
||||
if ( face && FT_IS_SFNT( face ) )
|
||||
result = _tt_face_check_patents( face );
|
||||
|
||||
return result;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
|
@ -266,22 +42,10 @@
|
|||
FT_Face_SetUnpatentedHinting( FT_Face face,
|
||||
FT_Bool value )
|
||||
{
|
||||
FT_Bool result = FALSE;
|
||||
|
||||
|
||||
#if defined( TT_CONFIG_OPTION_UNPATENTED_HINTING ) && \
|
||||
!defined( TT_CONFIG_OPTION_BYTECODE_INTERPRETER )
|
||||
if ( face && FT_IS_SFNT( face ) )
|
||||
{
|
||||
result = !face->internal->ignore_unpatented_hinter;
|
||||
face->internal->ignore_unpatented_hinter = !value;
|
||||
}
|
||||
#else
|
||||
FT_UNUSED( face );
|
||||
FT_UNUSED( value );
|
||||
#endif
|
||||
|
||||
return result;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* END */
|
||||
|
|
|
@ -429,11 +429,7 @@
|
|||
{
|
||||
#ifdef TT_USE_BYTECODE_INTERPRETER
|
||||
|
||||
#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING
|
||||
FT_TRUETYPE_ENGINE_TYPE_UNPATENTED
|
||||
#else
|
||||
FT_TRUETYPE_ENGINE_TYPE_PATENTED
|
||||
#endif
|
||||
|
||||
#else /* !TT_USE_BYTECODE_INTERPRETER */
|
||||
|
||||
|
|
|
@ -32,10 +32,6 @@
|
|||
#include "ttinterp.h"
|
||||
#endif
|
||||
|
||||
#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING
|
||||
#include FT_TRUETYPE_UNPATENTED_H
|
||||
#endif
|
||||
|
||||
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
||||
#include "ttgxvar.h"
|
||||
#endif
|
||||
|
@ -681,29 +677,6 @@
|
|||
|
||||
#endif /* TT_CONFIG_OPTION_GX_VAR_SUPPORT */
|
||||
|
||||
#if defined( TT_CONFIG_OPTION_UNPATENTED_HINTING ) && \
|
||||
!defined( TT_CONFIG_OPTION_BYTECODE_INTERPRETER )
|
||||
|
||||
{
|
||||
FT_Bool unpatented_hinting;
|
||||
int i;
|
||||
|
||||
|
||||
/* Determine whether unpatented hinting is to be used for this face. */
|
||||
unpatented_hinting = FT_BOOL
|
||||
( library->debug_hooks[FT_DEBUG_HOOK_UNPATENTED_HINTING] != NULL );
|
||||
|
||||
for ( i = 0; i < num_params && !face->unpatented_hinting; i++ )
|
||||
if ( params[i].tag == FT_PARAM_TAG_UNPATENTED_HINTING )
|
||||
unpatented_hinting = TRUE;
|
||||
|
||||
if ( !unpatented_hinting )
|
||||
ttface->internal->ignore_unpatented_hinter = TRUE;
|
||||
}
|
||||
|
||||
#endif /* TT_CONFIG_OPTION_UNPATENTED_HINTING &&
|
||||
!TT_CONFIG_OPTION_BYTECODE_INTERPRETER */
|
||||
|
||||
/* initialize standard glyph loading routines */
|
||||
TT_Init_Glyph_Loading( face );
|
||||
|
||||
|
|
|
@ -72,10 +72,6 @@ FT_BEGIN_HEADER
|
|||
FT_UnitVector projVector;
|
||||
FT_UnitVector freeVector;
|
||||
|
||||
#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING
|
||||
FT_Bool both_x_axis;
|
||||
#endif
|
||||
|
||||
FT_Long loop;
|
||||
FT_F26Dot6 minimum_distance;
|
||||
FT_Int round_state;
|
||||
|
|
|
@ -231,9 +231,6 @@
|
|||
if ( info->is_fixed_pitch )
|
||||
root->face_flags |= FT_FACE_FLAG_FIXED_WIDTH;
|
||||
|
||||
/* We only set this flag if we have the patented bytecode interpreter. */
|
||||
/* There are no known `tricky' Type42 fonts that could be loaded with */
|
||||
/* the unpatented interpreter. */
|
||||
#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
|
||||
root->face_flags |= FT_FACE_FLAG_HINTER;
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue