formatting, copyright years

This commit is contained in:
Werner Lemberg 2007-01-06 07:47:45 +00:00
parent d88a0c9e64
commit f629439905
11 changed files with 131 additions and 79 deletions

View File

@ -1,26 +1,61 @@
2007-01-04 David Turner <david@freetype.org>
* src/pfr/pfrobjs.c (pfr_face_init): detect non-scalable fonts
correctly. fixes bug #17876
* src/pfr/pfrobjs.c (pfr_face_init): Detect non-scalable fonts
correctly. This fixes Savannah bug #17876.
* src/truetype/ttobjs.h, src/truetype/ttobjs.c,
src/truetype/ttgload.c: do not allocate interpreter-specific
tables in memory if we're not going to load glyphs with it
anyway.
* src/sfnt/ttmtx.c, include/freetype/internal/tttypes.h:
don't extract the metrics table from the SFNT font file.
Instead, reparse it on each glyph load, since the runtime
difference will not be noticeable, and it can save a lot
of heap memory when memory-mapped files are not used.
Do not allocate interpreter-specific tables in memory if we are not
going to load glyphs with the bytecode interpreter anyway.
* src/sfnt/ttcmap.c: slight optimization in the CMAP 4 validator
* src/truetype/ttgload.c (tt_loader_init): Load execution context
only if glyph is hinted.
Updated.
* src/truetype/ttobjs.h (TT_SizeRec): Add members `bytecode_ready'
and `cvs_ready'.
Add `tt_size_ready_bytecode' declaration.
* src/truetype/ttobjs.c (tt_size_done_bytecode,
tt_size_init_bytecode, tt_size_ready_bytecode): New functions.
(tt_size_init): Move most code into `tt_size_init_bytecode'.
(tt_size_done): Move most code into `tt_size_done_bytecode'.
(tt_size_reset): Move some code to `tt_size_ready_bytecode'.
* src/cff/cffload.c, src/cff/cffload.h, src/cff/cffgload.c,
src/cff/cfftypes.h: formatting + do not load the CFF index
offsets into memory, since this wastes a *lot* of heap memory
with large Asian CFF fonts. There is no significant performance
loss
Don't extract the metrics table from the SFNT font file. Instead,
reparse it on each glyph load. The runtime difference is not
noticeable, and it can save a lot of heap memory when memory-mapped
files are not used.
* include/freetype/internal/tttypes.h (TT_FaceRec): Add members
`horz_metrics_offset' and `vert_metrics_ofset'.
* src/sfnt/ttmtx.c (tt_face_load_hmtx, tt_face_get_metrics):
Updated.
* src/sfnt/ttcmap.c (tt_cmap4_validate): Slight optimization.
Do not load the CFF index offsets into memory, since this wastes a
*lot* of heap memory with large Asian CFF fonts. There is no
significant performance loss.
* src/cff/cffload.h: Add `cff_charset_cid_to_gindex' declaration.
* src/cff/cfftypes.h (CFF_IndexRec): Add fields `start' and
`data_size'.
(CFF_CharsetRec): Add field `num_glyphs'.
* src/cff/cffload.c (cff_index_read_offset, cff_index_load_offsets,
cff_charset_cid_to_gindex): New functions.
(cff_new_index): Renamed to...
(cff_index_init): This. Update all callers.
Updated -- some code has been moved to `cff_index_load_offsets'.
(cff_done_index): Renamed to...
(cff_index_done): This. Update all callers.
(cff_index_get_pointers, cff_index_access_element): Updated to use
stream offsets.
(cff_charset_compute_cids): Set `num_glyphs' field.
(cff_encoding_load): Updated.
* src/cff/cffgload.c (cff_slot_load): Updated.
2007-01-04 David Turner <david@freetype.org>

View File

@ -4,7 +4,7 @@
/* */
/* OpenType Glyph Loader (body). */
/* */
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006 by */
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@ -2424,9 +2424,11 @@
{
CFF_Index csindex = &cff->charstrings_index;
if (csindex->offsets)
if ( csindex->offsets )
{
glyph->root.control_data = csindex->bytes + csindex->offsets[glyph_index] - 1;
glyph->root.control_data = csindex->bytes +
csindex->offsets[glyph_index] - 1;
glyph->root.control_len = charstring_len;
}
}

View File

@ -4,7 +4,7 @@
/* */
/* OpenType and CFF data/program tables loader (body). */
/* */
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006 by */
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@ -193,6 +193,7 @@
#undef FT_COMPONENT
#define FT_COMPONENT trace_cffload
/* read an offset from the index's stream current position */
static FT_ULong
cff_index_read_offset( CFF_Index idx,
@ -203,12 +204,14 @@
FT_Byte tmp[4];
FT_ULong result = 0;
if ( !FT_STREAM_READ( tmp, idx->off_size ) )
{
FT_Int nn;
for ( nn = 0; nn < idx->off_size; nn++ )
result = (result << 8) | tmp[nn];
result = ( result << 8 ) | tmp[nn];
}
*perror = error;
@ -258,7 +261,7 @@
goto Exit;
size = cff_index_read_offset( idx, &error );
if (error)
if ( error )
goto Exit;
if ( size == 0 )
@ -316,6 +319,7 @@
FT_Stream stream = idx->stream;
FT_Memory memory = stream->memory;
if ( idx->count > 0 && idx->offsets == NULL )
{
FT_Byte offsize = idx->off_size;
@ -324,6 +328,7 @@
FT_Byte* p_end;
FT_ULong* poff;
data_size = (FT_ULong)( idx->count + 1 ) * offsize;
if ( FT_NEW_ARRAY( idx->offsets, idx->count + 1 ) ||
@ -361,15 +366,13 @@
}
Exit:
if (error)
if ( error )
FT_FREE( idx->offsets );
return error;
}
/* allocate a table containing pointers to an index's elements */
static FT_Error
cff_index_get_pointers( CFF_Index idx,
@ -400,7 +403,7 @@
offset = old_offset;
/* sanity check for invalid offset tables */
else if ( offset < old_offset || offset-1 >= idx->data_size )
else if ( offset < old_offset || offset - 1 >= idx->data_size )
offset = old_offset;
t[n] = idx->bytes + offset - 1;
@ -434,13 +437,15 @@
/* load offsets from file or the offset table */
if ( !idx->offsets )
{
FT_ULong pos = element*idx->off_size;
FT_ULong pos = element * idx->off_size;
if ( FT_STREAM_SEEK( idx->start + 3 + pos ) )
goto Exit;
off1 = cff_index_read_offset( idx, &error );
if (error) goto Exit;
if ( error )
goto Exit;
if ( off1 != 0 )
{
@ -760,12 +765,14 @@
{
FT_UInt result = 0;
if ( cid < charset->max_cid )
result = charset->cids[cid];
return result;
}
static void
cff_charset_free_cids( CFF_Charset charset,
FT_Memory memory )
@ -1393,10 +1400,14 @@
goto Exit;
/* read the name, top dict, string and global subrs index */
if ( FT_SET_ERROR( cff_index_init( &font->name_index, stream, 0 )) ||
FT_SET_ERROR( cff_index_init( &font->font_dict_index, stream, 0 )) ||
FT_SET_ERROR( cff_index_init( &font->string_index, stream, 0 )) ||
FT_SET_ERROR( cff_index_init( &font->global_subrs_index, stream, 1 )) )
if ( FT_SET_ERROR( cff_index_init( &font->name_index,
stream, 0 ) ) ||
FT_SET_ERROR( cff_index_init( &font->font_dict_index,
stream, 0 ) ) ||
FT_SET_ERROR( cff_index_init( &font->string_index,
stream, 0 ) ) ||
FT_SET_ERROR( cff_index_init( &font->global_subrs_index,
stream, 1 ) ) )
goto Exit;
/* well, we don't really forget the `disabled' fonts... */

View File

@ -4,7 +4,7 @@
/* */
/* OpenType & CFF data/program tables loader (specification). */
/* */
/* Copyright 1996-2001, 2002, 2003 by */
/* Copyright 1996-2001, 2002, 2003, 2007 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@ -56,6 +56,7 @@ FT_BEGIN_HEADER
cff_charset_cid_to_gindex( CFF_Charset charset,
FT_UInt cid );
FT_LOCAL( FT_Error )
cff_font_load( FT_Stream stream,
FT_Int face_index,

View File

@ -5,7 +5,7 @@
/* Basic OpenType/CFF type definitions and interface (specification */
/* only). */
/* */
/* Copyright 1996-2001, 2002, 2003, 2006 by */
/* Copyright 1996-2001, 2002, 2003, 2006, 2007 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@ -40,7 +40,7 @@ FT_BEGIN_HEADER
/* stream :: The source input stream. */
/* */
/* start :: The position of the first index byte in the */
/* input stream */
/* input stream. */
/* */
/* count :: The number of elements in the index. */
/* */
@ -49,10 +49,10 @@ FT_BEGIN_HEADER
/* data_offset :: The position of first data byte in the index's */
/* bytes. */
/* */
/* data_size :: size of data table in this index */
/* data_size :: The size of the data table in this index. */
/* */
/* offsets :: A table of element offsets in the index. must be */
/* loaded explicitely */
/* offsets :: A table of element offsets in the index. Must be */
/* loaded explicitly. */
/* */
/* bytes :: If the index is loaded in memory, its bytes. */
/* */

View File

@ -4,7 +4,7 @@
/* */
/* FreeType PFR object methods (body). */
/* */
/* Copyright 2002, 2003, 2004, 2005, 2006 by */
/* Copyright 2002, 2003, 2004, 2005, 2006, 2007 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@ -122,7 +122,7 @@
if ( error )
goto Exit;
/* now, set-up all root face fields */
/* now set up all root face fields */
{
PFR_PhyFont phy_font = &face->phy_font;
@ -132,16 +132,17 @@
pfrface->face_flags = FT_FACE_FLAG_SCALABLE;
/* if all characters point to the same gps_offset 0, we */
/* assume the font only contains bitmaps */
/* assume that the font only contains bitmaps */
{
FT_UInt nn;
for ( nn = 0; nn < phy_font->num_chars; nn++ )
if ( phy_font->chars[nn].gps_offset != 0 )
break;
if ( nn == phy_font->num_chars )
pfrface->face_flags = 0; /* not SCALABLE !! */
pfrface->face_flags = 0; /* not scalable */
}
if ( (phy_font->flags & PFR_PHY_PROPORTIONAL) == 0 )

View File

@ -4,7 +4,7 @@
/* */
/* TrueType character mapping table (cmap) support (body). */
/* */
/* Copyright 2002, 2003, 2004, 2005, 2006 by */
/* Copyright 2002, 2003, 2004, 2005, 2006, 2007 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */

View File

@ -72,6 +72,7 @@
FT_ULong* ptable_offset;
FT_ULong* ptable_size;
if ( vertical )
{
tag = TTAG_vmtx;
@ -86,7 +87,7 @@
}
error = face->goto_table( face, tag, stream, &table_size );
if (error)
if ( error )
goto Fail;
*ptable_size = table_size;
@ -366,8 +367,8 @@
{
if ( gindex < (FT_UInt)k )
{
table_pos += 4*gindex;
if ( table_pos+6 > table_end )
table_pos += 4 * gindex;
if ( table_pos + 6 > table_end )
goto NoData;
if ( FT_STREAM_SEEK( table_pos ) ||
@ -377,16 +378,16 @@
}
else
{
table_pos += 4*(k-1);
if ( table_pos+4 > table_end )
table_pos += 4 * ( k - 1 );
if ( table_pos + 4 > table_end )
goto NoData;
if ( FT_STREAM_SEEK( table_pos ) ||
FT_READ_USHORT( *aadvance ) )
goto NoData;
table_pos += 4 + 2*(gindex - k);
if ( table_pos+2 > table_end )
table_pos += 4 + 2 * ( gindex - k );
if ( table_pos + 2 > table_end )
*abearing = 0;
else
{

View File

@ -4,7 +4,7 @@
/* */
/* TrueType Glyph Loader (body). */
/* */
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006 by */
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */

View File

@ -4,7 +4,7 @@
/* */
/* Objects manager (body). */
/* */
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006 by */
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@ -528,6 +528,7 @@
TT_Face face = (TT_Face)ftsize->face;
FT_Memory memory = face->root.memory;
if ( size->debug )
{
/* the debug context must be deleted by the debugger itself */
@ -561,10 +562,8 @@
}
/* initialize bytecode-related fields in the size object,
* should only be needed when bytecode interpretation is
* really needed
*/
/* Initialize bytecode-related fields in the size object. */
/* We do this only if bytecode interpretation is really needed. */
static FT_Error
tt_size_init_bytecode( FT_Size ftsize )
{
@ -646,7 +645,7 @@
error = tt_size_run_fpgm( size );
Exit:
if (error)
if ( error )
tt_size_done_bytecode( ftsize );
return error;
@ -656,7 +655,8 @@
FT_LOCAL_DEF( FT_Error )
tt_size_ready_bytecode( TT_Size size )
{
FT_Error error = 0;
FT_Error error = TT_Err_Ok;
if ( !size->bytecode_ready )
{
@ -677,7 +677,7 @@
for ( i = 0; i < size->cvt_size; i++ )
size->cvt[i] = FT_MulFix( face->cvt[i], size->ttmetrics.scale );
/* All twilight points are originally zero */
/* all twilight points are originally zero */
for ( i = 0; i < (FT_UInt)size->twilight.n_points; i++ )
{
size->twilight.org[i].x = 0;
@ -703,13 +703,13 @@
FT_LOCAL_DEF( FT_Error )
tt_size_ready_bytecode( TT_Size size )
{
FT_UNUSED(ftsize);
FT_UNUSED( ftsize );
return 0;
}
#endif /* !TT_USE_BYTECODE_INTERPRETER */
/*************************************************************************/
/* */
/* <Function> */
@ -758,6 +758,7 @@
{
TT_Size size = (TT_Size)ttsize;
#ifdef TT_USE_BYTECODE_INTERPRETER
if ( size->bytecode_ready )
tt_size_done_bytecode( ttsize );

View File

@ -4,7 +4,7 @@
/* */
/* Objects manager (specification). */
/* */
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006 by */
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */