* devel/ftoption.h: Synchronize with
include/freetype/config/ftoption.h. * src/smooth/ftgrays.c (gray_record_cell): Remove shadowing variable declaration. (gray_convert_glyph): Fix compiler warnings. Formatting, copyright years.
This commit is contained in:
parent
bd50295ca4
commit
2d8629b393
88
ChangeLog
88
ChangeLog
@ -1,11 +1,38 @@
|
||||
2006-09-03 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
* devel/ftoption.h: Synchronize with
|
||||
include/freetype/config/ftoption.h.
|
||||
|
||||
* src/smooth/ftgrays.c (gray_record_cell): Remove shadowing
|
||||
variable declaration.
|
||||
(gray_convert_glyph): Fix compiler warnings.
|
||||
|
||||
2006-09-01 David Turner <david@freetype.org>
|
||||
|
||||
* src/truetype/ttobjs.c: updated the TrueType loader to recognize
|
||||
a few fonts that require the automatic unpatented loader
|
||||
* src/truetype/ttobjs.c (tt_face_init): Update the TrueType loader
|
||||
to recognize a few fonts that require the automatic unpatented
|
||||
loader.
|
||||
|
||||
* src/smooth/ftgrays.c: optmized the performance of the anti-aliased
|
||||
rasterizer. The speed gains is between 15% and 25%, depending on
|
||||
content
|
||||
* src/smooth/ftgrays.c: Optmize the performance of the anti-aliased
|
||||
rasterizer. The speed improvement is between 15% and 25%, depending
|
||||
on the font data.
|
||||
|
||||
(GRAYS_USE_GAMMA, GRAYS_COMPACT): Removed, and all associated code.
|
||||
(TCell): Redefine.
|
||||
(TRaster): New members `buffer', `buffer_size', `ycells', `ycount'.
|
||||
(gray_init_cells): Updated.
|
||||
(gray_find_cell, gray_alloc_cell): New functions.
|
||||
(gray_record_cell): Rewritten to use `gray_find_cell' and
|
||||
`gray_alloc_cell'.
|
||||
(PACK, LESS_THAN, SWAP_CELLS, DEBUG_SORT, QUICK_SORT, SHELL_SORT,
|
||||
QSORT_THRESHOLD):
|
||||
Removed.
|
||||
(gray_shell_sort, gray_quick_sort, gray_check_sort,
|
||||
gray_dump_cells): Removed.
|
||||
(gray_sweep): Rewritten.
|
||||
(gray_convert_glyph): Rewrite code which used one of the sorting
|
||||
functions.
|
||||
(gray_raster_render): Updated.
|
||||
|
||||
2006-08-29 Dr. Werner Fink <werner@suse.de>
|
||||
|
||||
@ -14,28 +41,45 @@
|
||||
|
||||
2006-08-27 David Turner <david@freetype.org>
|
||||
|
||||
<TO BE WRITTEN>
|
||||
* include/freetype/config/ftoption.h (TT_USE_BYTECODE_INTERPRETER):
|
||||
New macro, defined if either TT_CONFIG_OPTION_BYTECODE_INTERPRETER
|
||||
or TT_CONFIG_OPTION_UNPATENTED_HINTING is defined.
|
||||
|
||||
* include/freetype/internal/ftcalc.h, src/base/ftcalc.c,
|
||||
src/truetype/truetype.c, src/truetype/ttdriver.c,
|
||||
src/truetype/ttgload.c, src/truetype/ttgload.h,
|
||||
src/truetype/ttinterp.c, src/truetype/ttobjs.c,
|
||||
src/truetype/ttobjs.h, src/truetype/ttpload.c, src/type42/t42drivr.c:
|
||||
s/TT_CONFIG_OPTION_BYTECODE_INTERPRETER/TT_USE_BYTECODE_INTERPRETER/.
|
||||
|
||||
* include/freetype/internal/ftobjs.h (FT_Face_InternalRec): New
|
||||
member `force_autohint'.
|
||||
|
||||
* src/base/ftobjs.c (FT_Load_Glyph): Use `force_autohint'.
|
||||
|
||||
* src/truetype/ttobjs.c (tt_face_init): Prepare code for testing
|
||||
against a list of font names which need the bytecode interpreter.
|
||||
|
||||
2006-08-27 Jens Claudius <jens.claudius@yahoo.com>
|
||||
|
||||
Fix miscellaneous compiler warnings.
|
||||
|
||||
* freetype2/include/freetype/internal/ftobjs.h: close
|
||||
comment with `*/' to avoid `/* in comment' compiler warning.
|
||||
* freetype2/include/freetype/internal/ftobjs.h: Close comment with
|
||||
`*/' to avoid `/* in comment' compiler warning.
|
||||
|
||||
* freetype2/src/base/ftdbgmem.c (ft_mem_table_get_source): Turn
|
||||
cast `(FT_UInt32)(void*)' into `(FT_UInt32)(FT_PtrDist)(void*)'
|
||||
since on 64-bit platforms void* is larger than FT_UInt32.
|
||||
* freetype2/src/base/ftdbgmem.c (ft_mem_table_get_source): Turn cast
|
||||
`(FT_UInt32)(void*)' into `(FT_UInt32)(FT_PtrDist)(void*)' since on
|
||||
64-bit platforms void* is larger than FT_UInt32.
|
||||
|
||||
* freetype2/src/base/ftobjs.c (t_validator_error): cast
|
||||
away volatileness of argument to ft_longjmp. Spotted by
|
||||
Werner `Putzfrau' Lemberg.
|
||||
* freetype2/src/base/ftobjs.c (t_validator_error): Cast away
|
||||
volatileness of argument to ft_longjmp. Spotted by Werner
|
||||
`Putzfrau' Lemberg.
|
||||
|
||||
* freetype2/src/bdf/bdflib.c (bdf_load_font): initialize
|
||||
local variable `lineno'.
|
||||
* freetype2/src/bdf/bdflib.c (bdf_load_font): Initialize local
|
||||
variable `lineno'.
|
||||
|
||||
* freetype2/src/gxvalid/gxvmod.c (classic_kern_validate):
|
||||
mark local variable `error' volatile.
|
||||
* freetype2/src/gxvalid/gxvmod.c (classic_kern_validate): Mark local
|
||||
variable `error' as volatile.
|
||||
|
||||
2006-08-27 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
@ -1248,10 +1292,10 @@
|
||||
(FTC_CMapCache_Lookup) [FT_CONFIG_OPTION_OLD_INTERNALS]: New
|
||||
compatibility code.
|
||||
|
||||
* src/cache/ftcbasic.c: fixed a silly bug that prevented our super-duper
|
||||
"hack" to support rogue clients compiled against 2.1.7 to work correctly.
|
||||
Probably explains the GNUstep crashes with the second release
|
||||
candidate.
|
||||
* src/cache/ftcbasic.c: Fix a silly bug that prevented our `hack' to
|
||||
support rogue clients compiled against 2.1.7 to work correctly.
|
||||
This probably explains the GNUstep crashes with the second release
|
||||
candidate.
|
||||
|
||||
2006-02-23 Chia-I Wu <b90201047@ntu.edu.tw>
|
||||
|
||||
|
@ -471,7 +471,7 @@ FT_BEGIN_HEADER
|
||||
/* component offsets in composite glyphs. */
|
||||
/* */
|
||||
/* Apple and MS disagree on the default behavior of component offsets */
|
||||
/* in composites. Apple says that they should be scaled by the scale */
|
||||
/* in composites. Apple says that they should be scaled by the scaling */
|
||||
/* factors in the transformation matrix (roughly, it's more complex) */
|
||||
/* while MS says they should not. OpenType defines two bits in the */
|
||||
/* composite flags array which can be used to disambiguate, but old */
|
||||
@ -594,6 +594,16 @@ FT_BEGIN_HEADER
|
||||
#undef FT_CONFIG_OPTION_OLD_INTERNALS
|
||||
|
||||
|
||||
/*
|
||||
* This variable is defined if either unpatented or native TrueType
|
||||
* hinting is requested by the definitions above.
|
||||
*/
|
||||
#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
|
||||
#define TT_USE_BYTECODE_INTERPRETER
|
||||
#elif defined TT_CONFIG_OPTION_UNPATENTED_HINTING
|
||||
#define TT_USE_BYTECODE_INTERPRETER
|
||||
#endif
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
|
||||
|
@ -572,7 +572,7 @@ FT_BEGIN_HEADER
|
||||
#define AF_CONFIG_OPTION_CJK
|
||||
|
||||
|
||||
/* */
|
||||
/* */
|
||||
|
||||
/*
|
||||
* This temporary macro is used to control various optimizations for
|
||||
@ -594,14 +594,14 @@ FT_BEGIN_HEADER
|
||||
#define FT_CONFIG_OPTION_OLD_INTERNALS
|
||||
|
||||
|
||||
/*
|
||||
* this variable is defined if either unpatented or native TrueType
|
||||
* hinting is requested by the definitions above.
|
||||
*/
|
||||
/*
|
||||
* This variable is defined if either unpatented or native TrueType
|
||||
* hinting is requested by the definitions above.
|
||||
*/
|
||||
#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
|
||||
# define TT_USE_BYTECODE_INTERPRETER
|
||||
#define TT_USE_BYTECODE_INTERPRETER
|
||||
#elif defined TT_CONFIG_OPTION_UNPATENTED_HINTING
|
||||
# define TT_USE_BYTECODE_INTERPRETER
|
||||
#define TT_USE_BYTECODE_INTERPRETER
|
||||
#endif
|
||||
|
||||
FT_END_HEADER
|
||||
|
@ -212,25 +212,25 @@ FT_BEGIN_HEADER
|
||||
/* @FT_CONFIG_OPTION_INCREMENTAL is defined. */
|
||||
/* */
|
||||
/* force_autohing :: */
|
||||
/* this boolean flag is used to instruct the glyph loader to */
|
||||
/* ignore the format-specific hinter, and use the auto-hinter */
|
||||
/* instead to load all glyphs. */
|
||||
/* This boolean flag instructs the glyph loader to ignore the */
|
||||
/* format-specific hinter, and to use the auto-hinter instead to */
|
||||
/* load all glyphs. */
|
||||
/* */
|
||||
/* if the unpatented bytecode interpreter was compiled withing */
|
||||
/* the library then: */
|
||||
/* If the unpatented bytecode interpreter is compiled into the */
|
||||
/* library, then: */
|
||||
/* */
|
||||
/* - if this is one of the tricky Asian fonts, like Gulim, which */
|
||||
/* absolutely require a bytecode interpreter to load anything */
|
||||
/* properly, the flag will be set to FALSE */
|
||||
/* properly, the flag is set to FALSE */
|
||||
/* */
|
||||
/* - for other fonts, the flag will be set to TRUE, and the */
|
||||
/* auto-hinter will be used to scale the glyphs. */
|
||||
/* - for other fonts, the flag is set to TRUE, and the auto-hinter */
|
||||
/* is used to scale the glyphs. */
|
||||
/* */
|
||||
/* if the unpatented bytecode interpretr was *not* compiled */
|
||||
/* within the librayr, the flag will always be FALSE */
|
||||
/* If the unpatented bytecode interpreter is not compiled into */
|
||||
/* the library, the flag is always set to FALSE. */
|
||||
/* */
|
||||
/* the detection of "tricky" fonts is located in the TrueType */
|
||||
/* face loader. */
|
||||
/* The detection of `tricky' fonts is located in the TrueType */
|
||||
/* face loader, testing against a bunch of font names. */
|
||||
/* */
|
||||
typedef struct FT_Face_InternalRec_
|
||||
{
|
||||
@ -644,8 +644,8 @@ FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/* 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 */
|
||||
/* 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
|
||||
|
||||
|
@ -133,10 +133,8 @@
|
||||
#define FT_TRACE( x ) do ; while ( 0 ) /* nothing */
|
||||
#endif
|
||||
|
||||
|
||||
#else /* _STANDALONE_ */
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include "ftgrays.h"
|
||||
#include FT_INTERNAL_OBJECTS_H
|
||||
@ -148,7 +146,6 @@
|
||||
#define ErrRaster_Invalid_Mode Smooth_Err_Cannot_Render_Glyph
|
||||
#define ErrRaster_Invalid_Outline Smooth_Err_Invalid_Outline
|
||||
|
||||
|
||||
#endif /* _STANDALONE_ */
|
||||
|
||||
|
||||
@ -326,13 +323,13 @@ typedef struct TCell_
|
||||
ras.buffer = buffer;
|
||||
ras.buffer_size = byte_size;
|
||||
|
||||
ras.ycells = (PCell*) buffer;
|
||||
ras.cells = NULL;
|
||||
ras.max_cells = 0;
|
||||
ras.num_cells = 0;
|
||||
ras.area = 0;
|
||||
ras.cover = 0;
|
||||
ras.invalid = 1;
|
||||
ras.ycells = (PCell*) buffer;
|
||||
ras.cells = NULL;
|
||||
ras.max_cells = 0;
|
||||
ras.num_cells = 0;
|
||||
ras.area = 0;
|
||||
ras.cover = 0;
|
||||
ras.invalid = 1;
|
||||
}
|
||||
|
||||
|
||||
@ -385,11 +382,12 @@ typedef struct TCell_
|
||||
/* Record the current cell in the table. */
|
||||
/* */
|
||||
static PCell*
|
||||
gray_find_cell( RAS_ARG_ TCoord x,
|
||||
TCoord y )
|
||||
gray_find_cell( RAS_ARG_ TCoord x,
|
||||
TCoord y )
|
||||
{
|
||||
PCell *pnode, node;
|
||||
|
||||
|
||||
pnode = &ras.ycells[y];
|
||||
for (;;)
|
||||
{
|
||||
@ -399,15 +397,17 @@ typedef struct TCell_
|
||||
|
||||
pnode = &node->next;
|
||||
}
|
||||
return pnode;
|
||||
|
||||
return pnode;
|
||||
}
|
||||
|
||||
|
||||
static PCell
|
||||
gray_alloc_cell( RAS_ARG_ TCoord x )
|
||||
gray_alloc_cell( RAS_ARG_ TCoord x )
|
||||
{
|
||||
PCell cell;
|
||||
|
||||
|
||||
if ( ras.num_cells >= ras.max_cells )
|
||||
ft_longjmp( ras.jump_buffer, 1 );
|
||||
|
||||
@ -423,13 +423,10 @@ typedef struct TCell_
|
||||
static void
|
||||
gray_record_cell( RAS_ARG )
|
||||
{
|
||||
PCell cell;
|
||||
|
||||
|
||||
if ( !ras.invalid && ( ras.area | ras.cover ) )
|
||||
{
|
||||
TCoord x = (TCoord)(ras.ex - ras.min_ex);
|
||||
TCoord y = (TCoord)(ras.ey - ras.min_ey);
|
||||
TCoord x = (TCoord)( ras.ex - ras.min_ex );
|
||||
TCoord y = (TCoord)( ras.ey - ras.min_ey );
|
||||
PCell *pparent = gray_find_cell( RAS_VAR_ x, y );
|
||||
PCell cell = *pparent;
|
||||
|
||||
@ -445,6 +442,7 @@ typedef struct TCell_
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Set the current cell to a new position. */
|
||||
@ -1257,6 +1255,7 @@ typedef struct TCell_
|
||||
|
||||
FT_UNUSED( target );
|
||||
|
||||
|
||||
if ( ras.num_cells == 0 )
|
||||
return;
|
||||
|
||||
@ -1268,15 +1267,18 @@ typedef struct TCell_
|
||||
TCoord cover = 0;
|
||||
TCoord x = 0;
|
||||
|
||||
|
||||
for ( ; cell != NULL; cell = cell->next )
|
||||
{
|
||||
TArea area;
|
||||
|
||||
|
||||
if ( cell->x > x && cover != 0 )
|
||||
gray_hline( RAS_VAR_ x, yindex, cover*(ONE_PIXEL*2), cell->x - x );
|
||||
gray_hline( RAS_VAR_ x, yindex, cover * ( ONE_PIXEL * 2 ),
|
||||
cell->x - x );
|
||||
|
||||
cover += cell->cover;
|
||||
area = cover*(ONE_PIXEL*2) - cell->area;
|
||||
area = cover * ( ONE_PIXEL * 2 ) - cell->area;
|
||||
|
||||
if ( area != 0 && cell->x >= 0 )
|
||||
gray_hline( RAS_VAR_ cell->x, yindex, area, 1 );
|
||||
@ -1285,8 +1287,8 @@ typedef struct TCell_
|
||||
}
|
||||
|
||||
if ( cover != 0 )
|
||||
gray_hline( RAS_VAR_ x, yindex, cover*(ONE_PIXEL*2),
|
||||
(ras.max_ex - x) );
|
||||
gray_hline( RAS_VAR_ x, yindex, cover * ( ONE_PIXEL * 2 ),
|
||||
ras.max_ex - x );
|
||||
}
|
||||
|
||||
if ( ras.render_span && ras.num_gray_spans > 0 )
|
||||
@ -1294,6 +1296,7 @@ typedef struct TCell_
|
||||
ras.gray_spans, ras.render_span_data );
|
||||
}
|
||||
|
||||
|
||||
#ifdef _STANDALONE_
|
||||
|
||||
/*************************************************************************/
|
||||
@ -1646,9 +1649,10 @@ typedef struct TCell_
|
||||
int error;
|
||||
|
||||
{
|
||||
PCell cells_max;
|
||||
int yindex, ycount;
|
||||
long cell_start, cell_mod;
|
||||
PCell cells_max;
|
||||
int yindex;
|
||||
long cell_start, cell_mod;
|
||||
|
||||
|
||||
ras.ycells = (PCell*)ras.buffer;
|
||||
ras.ycount = band->max - band->min;
|
||||
@ -1656,18 +1660,18 @@ typedef struct TCell_
|
||||
for ( yindex = 0; yindex < ras.ycount; yindex++ )
|
||||
ras.ycells[yindex] = NULL;
|
||||
|
||||
cell_start = sizeof(PCell)*ras.ycount;
|
||||
cell_mod = cell_start % sizeof(TCell);
|
||||
cell_start = sizeof ( PCell ) * ras.ycount;
|
||||
cell_mod = cell_start % sizeof ( TCell );
|
||||
if ( cell_mod > 0 )
|
||||
cell_start += sizeof(TCell) - cell_mod;
|
||||
cell_start += sizeof ( TCell ) - cell_mod;
|
||||
|
||||
cells_max = (PCell)(ras.buffer + ras.buffer_size);
|
||||
ras.cells = (PCell)((char*)ras.buffer + cell_start);
|
||||
cells_max = (PCell)( (char*)ras.buffer + ras.buffer_size );
|
||||
ras.cells = (PCell)( (char*)ras.buffer + cell_start );
|
||||
if ( ras.cells >= cells_max )
|
||||
goto ReduceBands;
|
||||
|
||||
ras.max_cells = (cells_max - ras.cells);
|
||||
if (ras.max_cells < 2)
|
||||
ras.max_cells = cells_max - ras.cells;
|
||||
if ( ras.max_cells < 2 )
|
||||
goto ReduceBands;
|
||||
}
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* FreeType TrueType driver component (body only). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2004 by */
|
||||
/* Copyright 1996-2001, 2004, 2006 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* TrueType Glyph Loader (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
@ -261,9 +261,8 @@
|
||||
face->unpatented_hinting = TRUE;
|
||||
}
|
||||
|
||||
/* compare the face with a list of well-known "tricky' fonts !!
|
||||
* this list shall be expanded as we find them
|
||||
*/
|
||||
/* Compare the face with a list of well-known `tricky' fonts. */
|
||||
/* This list shall be expanded as we find more of them. */
|
||||
if ( !face->unpatented_hinting )
|
||||
{
|
||||
static const char* const trick_names[] =
|
||||
@ -275,11 +274,11 @@
|
||||
"PMingLiU", /* mingliu.ttc */
|
||||
NULL
|
||||
};
|
||||
int nn;
|
||||
int nn;
|
||||
|
||||
/* note that we only check the face name at the moment, it might
|
||||
* be worthy to do more checks for a few special cases
|
||||
*/
|
||||
|
||||
/* Note that we only check the face name at the moment; it might */
|
||||
/* be worth to do more checks for a few special cases. */
|
||||
for ( nn = 0; trick_names[nn] != NULL; nn++ )
|
||||
{
|
||||
if ( ft_strcmp( ttface->family_name, trick_names[nn] ) == 0 )
|
||||
|
@ -209,9 +209,9 @@
|
||||
if ( info->is_fixed_pitch )
|
||||
root->face_flags |= FT_FACE_FLAG_FIXED_WIDTH;
|
||||
|
||||
/* note, only define if we have the patented bytecode interpreter,
|
||||
* there are no known "tricky" Type42 fonts that could be loaded
|
||||
* with the unpatented interpreter */
|
||||
/* 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
Block a user