Cleanups.
This commit is contained in:
parent
e7c8842c0f
commit
3f8c17392a
25
ChangeLog
25
ChangeLog
|
@ -209,13 +209,16 @@
|
|||
|
||||
2003-02-13 Graham Asher <graham.asher@btinternet.com>
|
||||
|
||||
* include/freetype/ftincrem.h, src/cff/cffgload.c,
|
||||
src/cid/cidgload.c, src/truetype/ttgload.c, src/type1/t1gload.c
|
||||
[FT_CONFIG_OPTION_INCREMENTAL]: Changed the incremental loading
|
||||
interface in a way that makes it simpler and allows glyph metrics to
|
||||
be changed (e.g., by adding a constant, as required by CFF fonts)
|
||||
rather than just overridden. This was required to make the
|
||||
GhsotScript-to-FreeType bridge work.
|
||||
Changed the incremental loading interface in a way that makes it
|
||||
simpler and allows glyph metrics to be changed (e.g., by adding a
|
||||
constant, as required by CFF fonts) rather than just overridden.
|
||||
This was required to make the GhostScript-to-FreeType bridge work.
|
||||
|
||||
* src/cff/cffgload.c (cff_slot_load) [FT_CONFIG_OPTION_INCREMENTAL]:
|
||||
Allow metrics to be overridden.
|
||||
* src/cid/cidgload.c, src/truetype/ttgload.c, src/type1/t1gload.c
|
||||
[FT_CONFIG_OPTION_INCREMENTAL]:
|
||||
* include/freetype/ftincrem.h: Updated.
|
||||
|
||||
2003-01-31 David Turner <david@freetype.org>
|
||||
|
||||
|
@ -513,10 +516,10 @@
|
|||
|
||||
2002-11-23 David Turner <david@freetype.org>
|
||||
|
||||
* src/cff/cffload.c (cff_charser_load): Modified charset loader to
|
||||
accept pre-defined charsets, even when the font contains fewer
|
||||
glyphs. Also enforced more checks to ensure that we never overflow
|
||||
the character codes array in the encoding.
|
||||
* src/cff/cffload.c (cff_charset_load, cff_encoding_load): Modified
|
||||
charset loader to accept pre-defined charsets, even when the font
|
||||
contains fewer glyphs. Also enforced more checks to ensure that we
|
||||
never overflow the character codes array in the encoding.
|
||||
|
||||
2002-11-22 Antoine Leca <Antoine-Freetype@Leca-Marti.org>
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
FreeType font driver for bdf files
|
||||
|
||||
Copyright (C) 2001-2002 by
|
||||
Copyright (C) 2001, 2002, 2003 by
|
||||
Francesco Zappa Nardelli
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
|
@ -637,6 +637,7 @@ THE SOFTWARE.
|
|||
{
|
||||
bdf_property_t* prop;
|
||||
|
||||
|
||||
FT_ASSERT( face && face->bdffont );
|
||||
|
||||
prop = bdf_get_font_property( face->bdffont, (char*)prop_name );
|
||||
|
@ -644,26 +645,27 @@ THE SOFTWARE.
|
|||
{
|
||||
switch ( prop->format )
|
||||
{
|
||||
case BDF_ATOM:
|
||||
aproperty->type = BDF_PROPERTY_TYPE_ATOM;
|
||||
aproperty->u.atom = prop->value.atom;
|
||||
break;
|
||||
case BDF_ATOM:
|
||||
aproperty->type = BDF_PROPERTY_TYPE_ATOM;
|
||||
aproperty->u.atom = prop->value.atom;
|
||||
break;
|
||||
|
||||
case BDF_INTEGER:
|
||||
aproperty->type = BDF_PROPERTY_TYPE_INTEGER;
|
||||
aproperty->u.integer = prop->value.int32;
|
||||
break;
|
||||
case BDF_INTEGER:
|
||||
aproperty->type = BDF_PROPERTY_TYPE_INTEGER;
|
||||
aproperty->u.integer = prop->value.int32;
|
||||
break;
|
||||
|
||||
case BDF_CARDINAL:
|
||||
aproperty->type = BDF_PROPERTY_TYPE_CARDINAL;
|
||||
aproperty->u.cardinal = prop->value.card32;
|
||||
break;
|
||||
case BDF_CARDINAL:
|
||||
aproperty->type = BDF_PROPERTY_TYPE_CARDINAL;
|
||||
aproperty->u.cardinal = prop->value.card32;
|
||||
break;
|
||||
|
||||
default:
|
||||
goto Fail;
|
||||
default:
|
||||
goto Fail;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
Fail:
|
||||
return FT_Err_Invalid_Argument;
|
||||
}
|
||||
|
@ -676,7 +678,7 @@ THE SOFTWARE.
|
|||
FT_UNUSED( module );
|
||||
|
||||
if ( name && ft_strcmp( name, "get_bdf_property" ) == 0 )
|
||||
return (FT_Module_Interface) bdf_get_bdf_property;
|
||||
return (FT_Module_Interface)bdf_get_bdf_property;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* FreeType CharMap cache (body) */
|
||||
/* */
|
||||
/* Copyright 2000-2001, 2002 by */
|
||||
/* Copyright 2000-2001, 2002, 2003 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
@ -193,16 +193,17 @@
|
|||
break;
|
||||
|
||||
case FTC_CMAP_BY_ENCODING:
|
||||
if (desc->u.encoding == FT_ENCODING_UNICODE)
|
||||
if ( desc->u.encoding == FT_ENCODING_UNICODE )
|
||||
{
|
||||
/* since the `interesting' table, with id's 3,10, is normally the
|
||||
* last one, we loop backwards. This looses with type1 fonts with
|
||||
* non-BMP characters (<.0001%), this wins with .ttf with non-BMP
|
||||
* chars (.01% ?), and this is the same about 99.99% of the time!
|
||||
*/
|
||||
/* Since the `interesting' table, pid/eid (3,10), is normally the
|
||||
* last one, we loop backwards. This looses with type1 fonts with
|
||||
* non-BMP characters (<.0001%), this wins with .ttf with non-BMP
|
||||
* chars (.01% ?), and this is the same about 99.99% of the time!
|
||||
*/
|
||||
|
||||
FT_UInt unicmap_idx = count; /* some UCS-2 map, if we found it */
|
||||
|
||||
|
||||
cur += count - 1;
|
||||
|
||||
for ( idx = 0; idx < count; idx++, cur-- )
|
||||
|
@ -211,15 +212,15 @@
|
|||
{
|
||||
unicmap_idx = idx; /* record we found a Unicode charmap */
|
||||
|
||||
/* XXX If some new encodings to represent UCS-4 are added,
|
||||
* they should be added here.
|
||||
*/
|
||||
/* XXX If some new encodings to represent UCS-4 are added,
|
||||
* they should be added here.
|
||||
*/
|
||||
if ( ( cur[0]->platform_id == TT_PLATFORM_MICROSOFT &&
|
||||
cur[0]->encoding_id == TT_MS_ID_UCS_4 ) ||
|
||||
cur[0]->encoding_id == TT_MS_ID_UCS_4 ) ||
|
||||
( cur[0]->platform_id == TT_PLATFORM_APPLE_UNICODE &&
|
||||
cur[0]->encoding_id == TT_APPLE_ID_UNICODE_32 ) )
|
||||
cur[0]->encoding_id == TT_APPLE_ID_UNICODE_32 ) )
|
||||
|
||||
/* Hurray! We found a UCS-4 charmap. We can stop the scan! */
|
||||
/* Hurray! We found a UCS-4 charmap. We can stop the scan! */
|
||||
{
|
||||
idx = count - 1 - idx;
|
||||
goto Found_idx_for_FTC_CMAP_BY_ENCODING;
|
||||
|
@ -227,9 +228,9 @@
|
|||
}
|
||||
}
|
||||
|
||||
/* We do not have any UCS-4 charmap. Sigh.
|
||||
* Let's see if we have some other kind of Unicode charmap, though.
|
||||
*/
|
||||
/* We do not have any UCS-4 charmap. Sigh.
|
||||
* Let's see if we have some other kind of Unicode charmap, though.
|
||||
*/
|
||||
if ( unicmap_idx < count )
|
||||
idx = count - 1 - unicmap_idx;
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* FreeType sbits manager (body). */
|
||||
/* */
|
||||
/* Copyright 2000-2001, 2002 by */
|
||||
/* Copyright 2000-2001, 2002, 2003 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
@ -189,7 +189,7 @@
|
|||
sbit->format = (FT_Byte)bitmap->pixel_mode;
|
||||
sbit->max_grays = (FT_Byte)(bitmap->num_grays - 1);
|
||||
|
||||
#if 0 /* this doesn't work well with embedded bitmaps !! */
|
||||
#if 0 /* this doesn't work well with embedded bitmaps */
|
||||
|
||||
/* grab the bitmap when possible - this is a hack! */
|
||||
if ( slot->flags & FT_GLYPH_OWN_BITMAP )
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* Simple LRU list-cache (body). */
|
||||
/* */
|
||||
/* Copyright 2000-2001, 2002 by */
|
||||
/* Copyright 2000-2001, 2002, 2003 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
@ -188,40 +188,40 @@
|
|||
goto Exit;
|
||||
}
|
||||
|
||||
/* since we haven't found the relevant element in our LRU list,
|
||||
/* Since we haven't found the relevant element in our LRU list,
|
||||
* we're going to "create" a new one.
|
||||
*
|
||||
* the following code is a bit special, because it tries to handle
|
||||
* The following code is a bit special, because it tries to handle
|
||||
* out-of-memory conditions (OOM) in an intelligent way.
|
||||
*
|
||||
* more precisely, if not enough memory is available to create a
|
||||
* More precisely, if not enough memory is available to create a
|
||||
* new node or "flush" an old one, we need to remove the oldest
|
||||
* elements from our list, and try again. since several tries may
|
||||
* be necessary, a loop is needed
|
||||
* elements from our list, and try again. Since several tries may
|
||||
* be necessary, a loop is needed.
|
||||
*
|
||||
* this loop will only exit when:
|
||||
* This loop will only exit when:
|
||||
*
|
||||
* - a new node was succesfully created, or an old node flushed
|
||||
* - a new node was successfully created, or an old node flushed
|
||||
* - an error other than FT_Err_Out_Of_Memory is detected
|
||||
* - the list of nodes is empty, and it isn't possible to create
|
||||
* new nodes
|
||||
*
|
||||
* on each unsucesful attempt, one node will be removed from the list
|
||||
* On each unsuccessful attempt, one node will be removed from the list.
|
||||
*
|
||||
*/
|
||||
|
||||
{
|
||||
FT_Int drop_last = ( list->max_nodes > 0 &&
|
||||
list->num_nodes >= list->max_nodes );
|
||||
FT_Int drop_last = ( list->max_nodes > 0 &&
|
||||
list->num_nodes >= list->max_nodes );
|
||||
|
||||
for (;;)
|
||||
{
|
||||
node = NULL;
|
||||
|
||||
/* when "drop_last" is true, we should free the last node in
|
||||
* the list to make room for a new one. note that we re-use
|
||||
* its memory block to save allocation calls.
|
||||
*/
|
||||
/* If "drop_last" is true, we should free the last node in
|
||||
* the list to make room for a new one. Note that we reuse
|
||||
* its memory block to save allocation calls.
|
||||
*/
|
||||
if ( drop_last )
|
||||
{
|
||||
/* find the last node in the list
|
||||
|
@ -244,10 +244,10 @@
|
|||
node = *pnode;
|
||||
}
|
||||
|
||||
/* remove it from the list, and try to "flush" it. doing this will
|
||||
* save a significant number of dynamic allocations compared to
|
||||
* a classic destroy/create cycle
|
||||
*/
|
||||
/* Remove it from the list, and try to "flush" it. Doing this will
|
||||
* save a significant number of dynamic allocations compared to
|
||||
* a classic destroy/create cycle.
|
||||
*/
|
||||
*pnode = NULL;
|
||||
list->num_nodes -= 1;
|
||||
|
||||
|
@ -257,14 +257,14 @@
|
|||
if ( !error )
|
||||
goto Success;
|
||||
|
||||
/* note that if an error occured during the flush, we need to
|
||||
/* Note that if an error occured during the flush, we need to
|
||||
* finalize it since it is potentially in incomplete state.
|
||||
*/
|
||||
}
|
||||
|
||||
/* we finalize, but do not destroy the last node, we
|
||||
* simply re-use its memory block !
|
||||
*/
|
||||
/* We finalize, but do not destroy the last node, we
|
||||
* simply reuse its memory block!
|
||||
*/
|
||||
if ( clazz->node_done )
|
||||
clazz->node_done( node, list->data );
|
||||
|
||||
|
@ -272,8 +272,8 @@
|
|||
}
|
||||
else
|
||||
{
|
||||
/* try to allocate a new node when "drop_last" is not TRUE
|
||||
* this usually happens on the first pass, when the LRU list
|
||||
/* Try to allocate a new node when "drop_last" is not TRUE.
|
||||
* This usually happens on the first pass, when the LRU list
|
||||
* is not already full.
|
||||
*/
|
||||
if ( FT_ALLOC( node, clazz->node_size ) )
|
||||
|
@ -316,7 +316,6 @@
|
|||
}
|
||||
|
||||
|
||||
|
||||
FT_EXPORT_DEF( void )
|
||||
FT_LruList_Remove( FT_LruList list,
|
||||
FT_LruNode node )
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* OpenType Glyph Loader (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002 by */
|
||||
/* Copyright 1996-2001, 2002, 2003 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
@ -2366,12 +2366,13 @@
|
|||
#ifdef FT_CONFIG_OPTION_INCREMENTAL
|
||||
|
||||
/* Incremental fonts can optionally override the metrics. */
|
||||
if ( !error &&
|
||||
face->root.internal->incremental_interface &&
|
||||
if ( !error &&
|
||||
face->root.internal->incremental_interface &&
|
||||
face->root.internal->incremental_interface->funcs->get_glyph_metrics )
|
||||
{
|
||||
FT_Incremental_MetricsRec metrics;
|
||||
|
||||
|
||||
metrics.bearing_x = decoder.builder.left_bearing.x;
|
||||
metrics.bearing_y = decoder.builder.left_bearing.y;
|
||||
metrics.advance = decoder.builder.advance.x;
|
||||
|
|
|
@ -1595,7 +1595,7 @@
|
|||
/* In order to use a predefined charset, the following must be */
|
||||
/* true: The charset constructed for the glyphs in the font's */
|
||||
/* charstrings dictionary must match the predefined charset in */
|
||||
/* the first num_glyphs */
|
||||
/* the first num_glyphs. */
|
||||
|
||||
charset->offset = offset; /* record charset type */
|
||||
|
||||
|
@ -1749,9 +1749,10 @@
|
|||
{
|
||||
FT_Byte* p;
|
||||
|
||||
/* by convention, GID 0 is always ".notdef" and is never */
|
||||
/* coded in the font. Hence, the number of codes found */
|
||||
/* in the table is 'count+1' */
|
||||
|
||||
/* By convention, GID 0 is always ".notdef" and is never */
|
||||
/* coded in the font. Hence, the number of codes found */
|
||||
/* in the table is `count+1'. */
|
||||
/* */
|
||||
encoding->count = count + 1;
|
||||
|
||||
|
@ -1821,7 +1822,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
/* simple check, one never knows what can be found in a font */
|
||||
/* simple check; one never knows what can be found in a font */
|
||||
if ( encoding->count > 256 )
|
||||
encoding->count = 256;
|
||||
}
|
||||
|
@ -1923,8 +1924,8 @@
|
|||
encoding->codes[j] = (FT_UShort)i;
|
||||
|
||||
/* update encoding count */
|
||||
if ( encoding->count < j+1 )
|
||||
encoding->count = j+1;
|
||||
if ( encoding->count < j + 1 )
|
||||
encoding->count = j + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue