mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-14 01:55:19 -04:00
Remove some of the unused TT_CONFIG_OPTION_GX_VAR_SUPPORT code
This commit is contained in:
parent
c09df8e94a
commit
afcc32c6b3
@ -36,11 +36,6 @@
|
|||||||
#include "cffparse.h"
|
#include "cffparse.h"
|
||||||
#include "cffobjs.h"
|
#include "cffobjs.h"
|
||||||
|
|
||||||
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
|
||||||
#include FT_SERVICE_MULTIPLE_MASTERS_H
|
|
||||||
#include FT_SERVICE_METRICS_VARIATIONS_H
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "cfferrs.h"
|
#include "cfferrs.h"
|
||||||
|
|
||||||
#include FT_SERVICE_FONT_FORMAT_H
|
#include FT_SERVICE_FONT_FORMAT_H
|
||||||
@ -893,20 +888,6 @@
|
|||||||
FT_SERVICE_ID_PROPERTIES, &cff_service_properties,
|
FT_SERVICE_ID_PROPERTIES, &cff_service_properties,
|
||||||
FT_SERVICE_ID_CFF_LOAD, &cff_service_cff_load
|
FT_SERVICE_ID_CFF_LOAD, &cff_service_cff_load
|
||||||
)
|
)
|
||||||
#elif defined TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
|
||||||
FT_DEFINE_SERVICEDESCREC9(
|
|
||||||
cff_services,
|
|
||||||
|
|
||||||
FT_SERVICE_ID_FONT_FORMAT, FT_FONT_FORMAT_CFF,
|
|
||||||
FT_SERVICE_ID_MULTI_MASTERS, &cff_service_multi_masters,
|
|
||||||
FT_SERVICE_ID_METRICS_VARIATIONS, &cff_service_metrics_variations,
|
|
||||||
FT_SERVICE_ID_POSTSCRIPT_INFO, &cff_service_ps_info,
|
|
||||||
FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &cff_service_ps_name,
|
|
||||||
FT_SERVICE_ID_TT_CMAP, &cff_service_get_cmap_info,
|
|
||||||
FT_SERVICE_ID_CID, &cff_service_cid_info,
|
|
||||||
FT_SERVICE_ID_PROPERTIES, &cff_service_properties,
|
|
||||||
FT_SERVICE_ID_CFF_LOAD, &cff_service_cff_load
|
|
||||||
)
|
|
||||||
#else
|
#else
|
||||||
FT_DEFINE_SERVICEDESCREC7(
|
FT_DEFINE_SERVICEDESCREC7(
|
||||||
cff_services,
|
cff_services,
|
||||||
|
@ -104,18 +104,6 @@ FT_BEGIN_HEADER
|
|||||||
CFF_Parser parser,
|
CFF_Parser parser,
|
||||||
FT_UInt numBlends );
|
FT_UInt numBlends );
|
||||||
|
|
||||||
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
|
||||||
FT_LOCAL( FT_Error )
|
|
||||||
cff_get_var_blend( CFF_Face face,
|
|
||||||
FT_UInt *num_coords,
|
|
||||||
FT_Fixed* *coords,
|
|
||||||
FT_Fixed* *normalizedcoords,
|
|
||||||
FT_MM_Var* *mm_var );
|
|
||||||
|
|
||||||
FT_LOCAL( void )
|
|
||||||
cff_done_blend( CFF_Face face );
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_END_HEADER
|
FT_END_HEADER
|
||||||
|
|
||||||
|
@ -27,12 +27,6 @@
|
|||||||
#include FT_INTERNAL_SFNT_H
|
#include FT_INTERNAL_SFNT_H
|
||||||
#include FT_DRIVER_H
|
#include FT_DRIVER_H
|
||||||
|
|
||||||
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
|
||||||
#include FT_MULTIPLE_MASTERS_H
|
|
||||||
#include FT_SERVICE_MULTIPLE_MASTERS_H
|
|
||||||
#include FT_SERVICE_METRICS_VARIATIONS_H
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include FT_INTERNAL_CFF_OBJECTS_TYPES_H
|
#include FT_INTERNAL_CFF_OBJECTS_TYPES_H
|
||||||
#include "cffobjs.h"
|
#include "cffobjs.h"
|
||||||
#include "cffload.h"
|
#include "cffload.h"
|
||||||
@ -1065,11 +1059,6 @@
|
|||||||
FT_FREE( face->extra.data );
|
FT_FREE( face->extra.data );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
|
||||||
cff_done_blend( face );
|
|
||||||
face->blend = NULL;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -44,11 +44,6 @@
|
|||||||
#include "psobjs.h"
|
#include "psobjs.h"
|
||||||
#include "cffdecode.h"
|
#include "cffdecode.h"
|
||||||
|
|
||||||
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
|
||||||
#include FT_MULTIPLE_MASTERS_H
|
|
||||||
#include FT_SERVICE_MULTIPLE_MASTERS_H
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include FT_SERVICE_CFF_TABLE_LOAD_H
|
#include FT_SERVICE_CFF_TABLE_LOAD_H
|
||||||
|
|
||||||
|
|
||||||
@ -473,32 +468,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
|
||||||
/* Get normalized design vector for current render request; */
|
|
||||||
/* return pointer and length. */
|
|
||||||
/* */
|
|
||||||
/* Note: Uses FT_Fixed not CF2_Fixed for the vector. */
|
|
||||||
FT_LOCAL_DEF( FT_Error )
|
|
||||||
cf2_getNormalizedVector( PS_Decoder* decoder,
|
|
||||||
CF2_UInt *len,
|
|
||||||
FT_Fixed* *vec )
|
|
||||||
{
|
|
||||||
TT_Face face;
|
|
||||||
FT_Service_MultiMasters mm;
|
|
||||||
|
|
||||||
|
|
||||||
FT_ASSERT( decoder && decoder->builder.face );
|
|
||||||
FT_ASSERT( vec && len );
|
|
||||||
FT_ASSERT( !decoder->builder.is_t1 );
|
|
||||||
|
|
||||||
face = (TT_Face)decoder->builder.face;
|
|
||||||
mm = (FT_Service_MultiMasters)face->mm;
|
|
||||||
|
|
||||||
return mm->get_var_blend( FT_FACE( face ), len, NULL, vec, NULL );
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* get `y_ppem' from `CFF_Size' */
|
/* get `y_ppem' from `CFF_Size' */
|
||||||
FT_LOCAL_DEF( CF2_Fixed )
|
FT_LOCAL_DEF( CF2_Fixed )
|
||||||
cf2_getPpemY( PS_Decoder* decoder )
|
cf2_getPpemY( PS_Decoder* decoder )
|
||||||
|
@ -612,406 +612,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
|
||||||
|
|
||||||
/*
|
|
||||||
The maximum length of an axis value descriptor.
|
|
||||||
|
|
||||||
We need 65536 different values for the decimal fraction; this fits
|
|
||||||
nicely into five decimal places. Consequently, it consists of
|
|
||||||
|
|
||||||
. the minus sign if the number is negative,
|
|
||||||
. up to five characters for the digits before the decimal point,
|
|
||||||
. the decimal point if there is a fractional part, and
|
|
||||||
. up to five characters for the digits after the decimal point.
|
|
||||||
|
|
||||||
We also need one byte for the leading `_' character and up to four
|
|
||||||
bytes for the axis tag.
|
|
||||||
*/
|
|
||||||
#define MAX_VALUE_DESCRIPTOR_LEN ( 1 + 5 + 1 + 5 + 1 + 4 )
|
|
||||||
|
|
||||||
|
|
||||||
/* the maximum length of PostScript font names */
|
|
||||||
#define MAX_PS_NAME_LEN 127
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Find the shortest decimal representation of a 16.16 fixed point
|
|
||||||
* number. The function fills `buf' with the result, returning a pointer
|
|
||||||
* to the position after the representation's last byte.
|
|
||||||
*/
|
|
||||||
|
|
||||||
static char*
|
|
||||||
fixed2float( FT_Int fixed,
|
|
||||||
char* buf )
|
|
||||||
{
|
|
||||||
char* p;
|
|
||||||
char* q;
|
|
||||||
char tmp[5];
|
|
||||||
|
|
||||||
FT_Int int_part;
|
|
||||||
FT_Int frac_part;
|
|
||||||
|
|
||||||
FT_Int i;
|
|
||||||
|
|
||||||
|
|
||||||
p = buf;
|
|
||||||
|
|
||||||
if ( fixed == 0 )
|
|
||||||
{
|
|
||||||
*p++ = '0';
|
|
||||||
return p;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( fixed < 0 )
|
|
||||||
{
|
|
||||||
*p++ = '-';
|
|
||||||
fixed = -fixed;
|
|
||||||
}
|
|
||||||
|
|
||||||
int_part = ( fixed >> 16 ) & 0xFFFF;
|
|
||||||
frac_part = fixed & 0xFFFF;
|
|
||||||
|
|
||||||
/* get digits of integer part (in reverse order) */
|
|
||||||
q = tmp;
|
|
||||||
while ( int_part > 0 )
|
|
||||||
{
|
|
||||||
*q++ = '0' + int_part % 10;
|
|
||||||
int_part /= 10;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* copy digits in correct order to buffer */
|
|
||||||
while ( q > tmp )
|
|
||||||
*p++ = *--q;
|
|
||||||
|
|
||||||
if ( !frac_part )
|
|
||||||
return p;
|
|
||||||
|
|
||||||
/* save position of point */
|
|
||||||
q = p;
|
|
||||||
*p++ = '.';
|
|
||||||
|
|
||||||
/* apply rounding */
|
|
||||||
frac_part = frac_part * 10 + 5;
|
|
||||||
|
|
||||||
/* get digits of fractional part */
|
|
||||||
for ( i = 0; i < 5; i++ )
|
|
||||||
{
|
|
||||||
*p++ = '0' + (char)( frac_part / 0x10000L );
|
|
||||||
|
|
||||||
frac_part %= 0x10000L;
|
|
||||||
if ( !frac_part )
|
|
||||||
break;
|
|
||||||
|
|
||||||
frac_part *= 10;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
If the remainder stored in `frac_part' (after the last FOR loop) is
|
|
||||||
smaller than 34480*10, the resulting decimal value minus 0.00001 is
|
|
||||||
an equivalent representation of `fixed'.
|
|
||||||
|
|
||||||
The above FOR loop always finds the larger of the two values; I
|
|
||||||
verified this by iterating over all possible fixed point numbers.
|
|
||||||
|
|
||||||
If the remainder is 17232*10, both values are equally good, and we
|
|
||||||
take the next even number (following IEEE 754's `round to nearest,
|
|
||||||
ties to even' rounding rule).
|
|
||||||
|
|
||||||
If the remainder is smaller than 17232*10, the lower of the two
|
|
||||||
numbers is nearer to the exact result (values 17232 and 34480 were
|
|
||||||
also found by testing all possible fixed point values).
|
|
||||||
|
|
||||||
We use this to find a shorter decimal representation. If not ending
|
|
||||||
with digit zero, we take the representation with less error.
|
|
||||||
*/
|
|
||||||
p--;
|
|
||||||
if ( p - q == 5 ) /* five digits? */
|
|
||||||
{
|
|
||||||
/* take the representation that has zero as the last digit */
|
|
||||||
if ( frac_part < 34480 * 10 &&
|
|
||||||
*p == '1' )
|
|
||||||
*p = '0';
|
|
||||||
|
|
||||||
/* otherwise use the one with less error */
|
|
||||||
else if ( frac_part == 17232 * 10 &&
|
|
||||||
*p & 1 )
|
|
||||||
*p -= 1;
|
|
||||||
|
|
||||||
else if ( frac_part < 17232 * 10 &&
|
|
||||||
*p != '0' )
|
|
||||||
*p -= 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* remove trailing zeros */
|
|
||||||
while ( *p == '0' )
|
|
||||||
*p-- = '\0';
|
|
||||||
|
|
||||||
return p + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static const char hexdigits[16] =
|
|
||||||
{
|
|
||||||
'0', '1', '2', '3', '4', '5', '6', '7',
|
|
||||||
'8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
static const char*
|
|
||||||
sfnt_get_var_ps_name( TT_Face face )
|
|
||||||
{
|
|
||||||
FT_Error error;
|
|
||||||
FT_Memory memory = face->root.memory;
|
|
||||||
|
|
||||||
FT_Service_MultiMasters mm = (FT_Service_MultiMasters)face->mm;
|
|
||||||
|
|
||||||
FT_UInt num_coords;
|
|
||||||
FT_Fixed* coords;
|
|
||||||
FT_MM_Var* mm_var;
|
|
||||||
|
|
||||||
FT_Int found, win, apple;
|
|
||||||
FT_UInt i, j;
|
|
||||||
|
|
||||||
char* result = NULL;
|
|
||||||
char* p;
|
|
||||||
|
|
||||||
|
|
||||||
if ( !face->var_postscript_prefix )
|
|
||||||
{
|
|
||||||
FT_UInt len;
|
|
||||||
|
|
||||||
|
|
||||||
/* check whether we have a Variations PostScript Name Prefix */
|
|
||||||
found = sfnt_get_name_id( face,
|
|
||||||
TT_NAME_ID_VARIATIONS_PREFIX,
|
|
||||||
&win,
|
|
||||||
&apple );
|
|
||||||
if ( !found )
|
|
||||||
{
|
|
||||||
/* otherwise use the typographic family name */
|
|
||||||
found = sfnt_get_name_id( face,
|
|
||||||
TT_NAME_ID_TYPOGRAPHIC_FAMILY,
|
|
||||||
&win,
|
|
||||||
&apple );
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( !found )
|
|
||||||
{
|
|
||||||
/* as a last resort we try the family name; note that this is */
|
|
||||||
/* not in the Adobe TechNote, but GX fonts (which predate the */
|
|
||||||
/* TechNote) benefit from this behaviour */
|
|
||||||
found = sfnt_get_name_id( face,
|
|
||||||
TT_NAME_ID_FONT_FAMILY,
|
|
||||||
&win,
|
|
||||||
&apple );
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( !found )
|
|
||||||
{
|
|
||||||
FT_TRACE0(( "sfnt_get_var_ps_name:"
|
|
||||||
" Can't construct PS name prefix for font instances\n" ));
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* prefer Windows entries over Apple */
|
|
||||||
if ( win != -1 )
|
|
||||||
result = get_win_string( face->root.memory,
|
|
||||||
face->name_table.stream,
|
|
||||||
face->name_table.names + win,
|
|
||||||
sfnt_is_alphanumeric,
|
|
||||||
0 );
|
|
||||||
else
|
|
||||||
result = get_apple_string( face->root.memory,
|
|
||||||
face->name_table.stream,
|
|
||||||
face->name_table.names + apple,
|
|
||||||
sfnt_is_alphanumeric,
|
|
||||||
0 );
|
|
||||||
|
|
||||||
len = ft_strlen( result );
|
|
||||||
|
|
||||||
/* sanitize if necessary; we reserve space for 36 bytes (a 128bit */
|
|
||||||
/* checksum as a hex number, preceded by `-' and followed by three */
|
|
||||||
/* ASCII dots, to be used if the constructed PS name would be too */
|
|
||||||
/* long); this is also sufficient for a single instance */
|
|
||||||
if ( len > MAX_PS_NAME_LEN - ( 1 + 32 + 3 ) )
|
|
||||||
{
|
|
||||||
len = MAX_PS_NAME_LEN - ( 1 + 32 + 3 );
|
|
||||||
result[len] = '\0';
|
|
||||||
|
|
||||||
FT_TRACE0(( "sfnt_get_var_ps_name:"
|
|
||||||
" Shortening variation PS name prefix\n"
|
|
||||||
" "
|
|
||||||
" to %d characters\n", len ));
|
|
||||||
}
|
|
||||||
|
|
||||||
face->var_postscript_prefix = result;
|
|
||||||
face->var_postscript_prefix_len = len;
|
|
||||||
}
|
|
||||||
|
|
||||||
mm->get_var_blend( FT_FACE( face ),
|
|
||||||
&num_coords,
|
|
||||||
&coords,
|
|
||||||
NULL,
|
|
||||||
&mm_var );
|
|
||||||
|
|
||||||
if ( FT_IS_NAMED_INSTANCE( FT_FACE( face ) ) &&
|
|
||||||
!FT_IS_VARIATION( FT_FACE( face ) ) )
|
|
||||||
{
|
|
||||||
SFNT_Service sfnt = (SFNT_Service)face->sfnt;
|
|
||||||
|
|
||||||
FT_Long instance = ( ( face->root.face_index & 0x7FFF0000L ) >> 16 ) - 1;
|
|
||||||
FT_UInt psid = mm_var->namedstyle[instance].psid;
|
|
||||||
|
|
||||||
char* ps_name = NULL;
|
|
||||||
|
|
||||||
|
|
||||||
/* try first to load the name string with index `postScriptNameID' */
|
|
||||||
if ( psid == 6 ||
|
|
||||||
( psid > 255 && psid < 32768 ) )
|
|
||||||
(void)sfnt->get_name( face, (FT_UShort)psid, &ps_name );
|
|
||||||
|
|
||||||
if ( ps_name )
|
|
||||||
{
|
|
||||||
result = ps_name;
|
|
||||||
p = result + ft_strlen( result ) + 1;
|
|
||||||
|
|
||||||
goto check_length;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* otherwise construct a name using `subfamilyNameID' */
|
|
||||||
FT_UInt strid = mm_var->namedstyle[instance].strid;
|
|
||||||
|
|
||||||
char* subfamily_name;
|
|
||||||
char* s;
|
|
||||||
|
|
||||||
|
|
||||||
(void)sfnt->get_name( face, (FT_UShort)strid, &subfamily_name );
|
|
||||||
|
|
||||||
if ( !subfamily_name )
|
|
||||||
{
|
|
||||||
FT_TRACE1(( "sfnt_get_var_ps_name:"
|
|
||||||
" can't construct named instance PS name;\n"
|
|
||||||
" "
|
|
||||||
" trying to construct normal instance PS name\n" ));
|
|
||||||
goto construct_instance_name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* after the prefix we have character `-' followed by the */
|
|
||||||
/* subfamily name (using only characters a-z, A-Z, and 0-9) */
|
|
||||||
if ( FT_ALLOC( result, face->var_postscript_prefix_len +
|
|
||||||
1 + ft_strlen( subfamily_name ) + 1 ) )
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
ft_strcpy( result, face->var_postscript_prefix );
|
|
||||||
|
|
||||||
p = result + face->var_postscript_prefix_len;
|
|
||||||
*p++ = '-';
|
|
||||||
|
|
||||||
s = subfamily_name;
|
|
||||||
while ( *s )
|
|
||||||
{
|
|
||||||
if ( ft_isalnum( *s ) )
|
|
||||||
*p++ = *s;
|
|
||||||
s++;
|
|
||||||
}
|
|
||||||
*p++ = '\0';
|
|
||||||
|
|
||||||
FT_FREE( subfamily_name );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
FT_Var_Axis* axis;
|
|
||||||
|
|
||||||
|
|
||||||
construct_instance_name:
|
|
||||||
axis = mm_var->axis;
|
|
||||||
|
|
||||||
if ( FT_ALLOC( result,
|
|
||||||
face->var_postscript_prefix_len +
|
|
||||||
num_coords * MAX_VALUE_DESCRIPTOR_LEN + 1 ) )
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
p = result;
|
|
||||||
|
|
||||||
ft_strcpy( p, face->var_postscript_prefix );
|
|
||||||
p += face->var_postscript_prefix_len;
|
|
||||||
|
|
||||||
for ( i = 0; i < num_coords; i++, coords++, axis++ )
|
|
||||||
{
|
|
||||||
char t;
|
|
||||||
|
|
||||||
|
|
||||||
/* omit axis value descriptor if it is identical */
|
|
||||||
/* to the default axis value */
|
|
||||||
if ( *coords == axis->def )
|
|
||||||
continue;
|
|
||||||
|
|
||||||
*p++ = '_';
|
|
||||||
p = fixed2float( *coords, p );
|
|
||||||
|
|
||||||
t = (char)( axis->tag >> 24 );
|
|
||||||
if ( t != ' ' && ft_isalnum( t ) )
|
|
||||||
*p++ = t;
|
|
||||||
t = (char)( axis->tag >> 16 );
|
|
||||||
if ( t != ' ' && ft_isalnum( t ) )
|
|
||||||
*p++ = t;
|
|
||||||
t = (char)( axis->tag >> 8 );
|
|
||||||
if ( t != ' ' && ft_isalnum( t ) )
|
|
||||||
*p++ = t;
|
|
||||||
t = (char)axis->tag;
|
|
||||||
if ( t != ' ' && ft_isalnum( t ) )
|
|
||||||
*p++ = t;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
check_length:
|
|
||||||
if ( p - result > MAX_PS_NAME_LEN )
|
|
||||||
{
|
|
||||||
/* the PS name is too long; replace the part after the prefix with */
|
|
||||||
/* a checksum; we use MurmurHash 3 with a hash length of 128 bit */
|
|
||||||
|
|
||||||
FT_UInt32 seed = 123456789;
|
|
||||||
|
|
||||||
FT_UInt32 hash[4];
|
|
||||||
FT_UInt32* h;
|
|
||||||
|
|
||||||
|
|
||||||
murmur_hash_3_128( result, p - result, seed, hash );
|
|
||||||
|
|
||||||
p = result + face->var_postscript_prefix_len;
|
|
||||||
*p++ = '-';
|
|
||||||
|
|
||||||
/* we convert the hash value to hex digits from back to front */
|
|
||||||
p += 32 + 3;
|
|
||||||
h = hash + 3;
|
|
||||||
|
|
||||||
*p-- = '\0';
|
|
||||||
*p-- = '.';
|
|
||||||
*p-- = '.';
|
|
||||||
*p-- = '.';
|
|
||||||
|
|
||||||
for ( i = 0; i < 4; i++, h-- )
|
|
||||||
{
|
|
||||||
FT_UInt32 v = *h;
|
|
||||||
|
|
||||||
|
|
||||||
for ( j = 0; j < 8; j++ )
|
|
||||||
{
|
|
||||||
*p-- = hexdigits[v & 0xF];
|
|
||||||
v >>= 4;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* TT_CONFIG_OPTION_GX_VAR_SUPPORT */
|
|
||||||
|
|
||||||
|
|
||||||
static const char*
|
static const char*
|
||||||
sfnt_get_ps_name( TT_Face face )
|
sfnt_get_ps_name( TT_Face face )
|
||||||
{
|
{
|
||||||
@ -1022,16 +622,6 @@
|
|||||||
if ( face->postscript_name )
|
if ( face->postscript_name )
|
||||||
return face->postscript_name;
|
return face->postscript_name;
|
||||||
|
|
||||||
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
|
||||||
if ( face->blend &&
|
|
||||||
( FT_IS_NAMED_INSTANCE( FT_FACE( face ) ) ||
|
|
||||||
FT_IS_VARIATION( FT_FACE( face ) ) ) )
|
|
||||||
{
|
|
||||||
face->postscript_name = sfnt_get_var_ps_name( face );
|
|
||||||
return face->postscript_name;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* scan the name table to see whether we have a Postscript name here, */
|
/* scan the name table to see whether we have a Postscript name here, */
|
||||||
/* either in Macintosh or Windows platform encodings */
|
/* either in Macintosh or Windows platform encodings */
|
||||||
found = sfnt_get_name_id( face, TT_NAME_ID_PS_NAME, &win, &apple );
|
found = sfnt_get_name_id( face, TT_NAME_ID_PS_NAME, &win, &apple );
|
||||||
|
@ -21,10 +21,6 @@
|
|||||||
#include FT_INTERNAL_STREAM_H
|
#include FT_INTERNAL_STREAM_H
|
||||||
#include FT_TRUETYPE_TAGS_H
|
#include FT_TRUETYPE_TAGS_H
|
||||||
|
|
||||||
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
|
||||||
#include FT_SERVICE_METRICS_VARIATIONS_H
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "ttmtx.h"
|
#include "ttmtx.h"
|
||||||
|
|
||||||
#include "sferrors.h"
|
#include "sferrors.h"
|
||||||
@ -227,11 +223,6 @@
|
|||||||
FT_ULong table_pos, table_size, table_end;
|
FT_ULong table_pos, table_size, table_end;
|
||||||
FT_UShort k;
|
FT_UShort k;
|
||||||
|
|
||||||
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
|
||||||
FT_Service_MetricsVariations var =
|
|
||||||
(FT_Service_MetricsVariations)face->var;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
if ( vertical )
|
if ( vertical )
|
||||||
{
|
{
|
||||||
@ -292,34 +283,6 @@
|
|||||||
*abearing = 0;
|
*abearing = 0;
|
||||||
*aadvance = 0;
|
*aadvance = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
|
||||||
if ( var )
|
|
||||||
{
|
|
||||||
FT_Face f = FT_FACE( face );
|
|
||||||
FT_Int a = (FT_Int)*aadvance;
|
|
||||||
FT_Int b = (FT_Int)*abearing;
|
|
||||||
|
|
||||||
|
|
||||||
if ( vertical )
|
|
||||||
{
|
|
||||||
if ( var->vadvance_adjust )
|
|
||||||
var->vadvance_adjust( f, gindex, &a );
|
|
||||||
if ( var->tsb_adjust )
|
|
||||||
var->tsb_adjust( f, gindex, &b );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if ( var->hadvance_adjust )
|
|
||||||
var->hadvance_adjust( f, gindex, &a );
|
|
||||||
if ( var->lsb_adjust )
|
|
||||||
var->lsb_adjust( f, gindex, &b );
|
|
||||||
}
|
|
||||||
|
|
||||||
*aadvance = (FT_UShort)a;
|
|
||||||
*abearing = (FT_Short)b;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -30,10 +30,6 @@
|
|||||||
|
|
||||||
#ifdef TT_USE_BYTECODE_INTERPRETER
|
#ifdef TT_USE_BYTECODE_INTERPRETER
|
||||||
#include "ttinterp.h"
|
#include "ttinterp.h"
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
|
||||||
#include "ttgxvar.h"
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
@ -772,11 +768,6 @@
|
|||||||
FT_FRAME_RELEASE( face->cvt_program );
|
FT_FRAME_RELEASE( face->cvt_program );
|
||||||
face->font_program_size = 0;
|
face->font_program_size = 0;
|
||||||
face->cvt_program_size = 0;
|
face->cvt_program_size = 0;
|
||||||
|
|
||||||
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
|
||||||
tt_done_blend( face );
|
|
||||||
face->blend = NULL;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -24,10 +24,6 @@
|
|||||||
|
|
||||||
#include "ttpload.h"
|
#include "ttpload.h"
|
||||||
|
|
||||||
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
|
||||||
#include "ttgxvar.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "tterrors.h"
|
#include "tterrors.h"
|
||||||
|
|
||||||
|
|
||||||
@ -359,11 +355,6 @@
|
|||||||
FT_FRAME_EXIT();
|
FT_FRAME_EXIT();
|
||||||
FT_TRACE2(( "loaded\n" ));
|
FT_TRACE2(( "loaded\n" ));
|
||||||
|
|
||||||
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
|
||||||
if ( face->doblend )
|
|
||||||
error = tt_face_vary_cvt( face, stream );
|
|
||||||
#endif
|
|
||||||
|
|
||||||
Exit:
|
Exit:
|
||||||
return error;
|
return error;
|
||||||
|
|
||||||
|
@ -25,10 +25,6 @@
|
|||||||
#include FT_TRUETYPE_TABLES_H
|
#include FT_TRUETYPE_TABLES_H
|
||||||
#include FT_INTERNAL_OBJECTS_H
|
#include FT_INTERNAL_OBJECTS_H
|
||||||
|
|
||||||
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
|
||||||
#include FT_MULTIPLE_MASTERS_H
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
FT_BEGIN_HEADER
|
||||||
|
|
||||||
@ -847,24 +843,6 @@ FT_BEGIN_HEADER
|
|||||||
|
|
||||||
} TT_Post_NamesRec, *TT_Post_Names;
|
} TT_Post_NamesRec, *TT_Post_Names;
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
|
||||||
/*************************************************************************/
|
|
||||||
/*************************************************************************/
|
|
||||||
/*** ***/
|
|
||||||
/*** ***/
|
|
||||||
/*** GX VARIATION TABLE SUPPORT ***/
|
|
||||||
/*** ***/
|
|
||||||
/*** ***/
|
|
||||||
/*************************************************************************/
|
|
||||||
/*************************************************************************/
|
|
||||||
/*************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
|
||||||
typedef struct GX_BlendRec_ *GX_Blend;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
@ -1417,16 +1395,6 @@ FT_BEGIN_HEADER
|
|||||||
/* handle glyph names <-> unicode & Mac values */
|
/* handle glyph names <-> unicode & Mac values */
|
||||||
void* psnames;
|
void* psnames;
|
||||||
|
|
||||||
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
|
||||||
/* a typeless pointer to the FT_Service_MultiMasters table used to */
|
|
||||||
/* handle variation fonts */
|
|
||||||
void* mm;
|
|
||||||
|
|
||||||
/* a typeless pointer to the FT_Service_MetricsVariationsRec table */
|
|
||||||
/* used to handle the HVAR, VVAR, and MVAR OpenType tables */
|
|
||||||
void* var;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* a typeless pointer to the PostScript Aux service */
|
/* a typeless pointer to the PostScript Aux service */
|
||||||
void* psaux;
|
void* psaux;
|
||||||
|
|
||||||
@ -1490,17 +1458,6 @@ FT_BEGIN_HEADER
|
|||||||
|
|
||||||
FT_Bool is_cff2; /* since 2.7.1 */
|
FT_Bool is_cff2; /* since 2.7.1 */
|
||||||
|
|
||||||
#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
|
||||||
FT_Bool doblend;
|
|
||||||
GX_Blend blend;
|
|
||||||
|
|
||||||
FT_UInt32 variation_support; /* since 2.7.1 */
|
|
||||||
|
|
||||||
const char* var_postscript_prefix; /* since 2.7.2 */
|
|
||||||
FT_UInt var_postscript_prefix_len; /* since 2.7.2 */
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* since version 2.2 */
|
/* since version 2.2 */
|
||||||
|
|
||||||
FT_ULong horz_metrics_size;
|
FT_ULong horz_metrics_size;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user