forked from minhngoc25a/freetype2
removed TT_MAX_SUBGLYPHS macro, there is no static
limit on the number of subglyphs in a TrueType font.. changed the default number of gray levels used by the smooth renderer to 256 (instead of 128). Of course, the human eye can't tell a difference ;-)
This commit is contained in:
parent
e49ab25c08
commit
3475e7fba3
12
CHANGES
12
CHANGES
|
@ -1,4 +1,14 @@
|
|||
LATEST CHANGES -
|
||||
LATEST_CHANGES
|
||||
|
||||
- changed the default number of gray levels of the smooth renderer to
|
||||
256 (instead of the previous 128). Of course, the human eye can't
|
||||
see any difference ;-)
|
||||
|
||||
- removed TT_MAX_SUBGLYPHS, there is no static limit on the number of
|
||||
subglyphs in a TrueType font now..
|
||||
|
||||
=============================================================================
|
||||
OLD CHANGES 16 May 2000
|
||||
|
||||
- tagged "BETA-6" in the CVS tree. This one is a serious release candidate
|
||||
even though it doesn't incorporate the auto-hinter yet..
|
||||
|
|
|
@ -98,8 +98,8 @@
|
|||
pixel_mode >= gr_pixel_mode_max )
|
||||
goto Fail;
|
||||
|
||||
if ( pixel_mode != gr_pixel_mode_gray ||
|
||||
( num_grays >= 2 && num_grays < 256 ) )
|
||||
if ( pixel_mode != gr_pixel_mode_gray ||
|
||||
( num_grays >= 2 && num_grays <= 256 ) )
|
||||
return 0;
|
||||
|
||||
Fail:
|
||||
|
|
|
@ -57,7 +57,7 @@
|
|||
|
||||
static int res = 72; /* default resolution in dpi */
|
||||
|
||||
static grColor fore_color = { 127 };
|
||||
static grColor fore_color = { 255 };
|
||||
|
||||
static int graph_init = 0;
|
||||
static int render_mode = 1;
|
||||
|
@ -158,7 +158,7 @@
|
|||
bit.mode = gr_pixel_mode_gray;
|
||||
bit.width = DIM_X;
|
||||
bit.rows = DIM_Y;
|
||||
bit.grays = 128;
|
||||
bit.grays = 256;
|
||||
|
||||
surface = grNewSurface( 0, &bit );
|
||||
if (!surface)
|
||||
|
@ -254,7 +254,7 @@
|
|||
if( !hinted )
|
||||
load_flags |= FT_LOAD_NO_HINTING;
|
||||
|
||||
num_grays = 128;
|
||||
num_grays = 256;
|
||||
if (!antialias)
|
||||
num_grays = 0;
|
||||
|
||||
|
|
|
@ -66,7 +66,7 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
|
||||
int res = 72;
|
||||
|
||||
static grColor fore_color = { 127 };
|
||||
static grColor fore_color = { 255 };
|
||||
|
||||
int Fail;
|
||||
unsigned char autorun;
|
||||
|
@ -127,7 +127,7 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
bit.mode = gr_pixel_mode_gray;
|
||||
bit.width = DIM_X;
|
||||
bit.rows = DIM_Y;
|
||||
bit.grays = 128;
|
||||
bit.grays = 256;
|
||||
|
||||
surface = grNewSurface( 0, &bit );
|
||||
if (!surface)
|
||||
|
@ -185,7 +185,7 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
|||
bit3.pitch = bit2.pitch;
|
||||
bit3.mode = antialias ? bit.mode : gr_pixel_mode_mono;
|
||||
bit3.buffer = bit_buffer;
|
||||
bit3.grays = 128;
|
||||
bit3.grays = 256;
|
||||
|
||||
FT_Outline_Translate( &glyph->outline, -left, -bottom );
|
||||
memset( bit_buffer, 0, size );
|
||||
|
|
|
@ -349,8 +349,6 @@
|
|||
/* */
|
||||
#define TT_CONFIG_OPTION_INTERPRETER_SWITCH
|
||||
|
||||
/* The maximum number of sub-glyphs in a TrueType composite glyph */
|
||||
#define TT_MAX_SUBGLYPHS 96
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
|
|
|
@ -1016,13 +1016,13 @@ int check_sort( PCell cells, int count )
|
|||
{
|
||||
if (spans->coverage)
|
||||
#if 1
|
||||
memset( p + spans->x, (spans->coverage+1) >> 1, spans->len );
|
||||
memset( p + spans->x, (unsigned char)spans->coverage, spans->len );
|
||||
#else
|
||||
{
|
||||
q = p + spans->x;
|
||||
limit = q + spans->len;
|
||||
for ( ; q < limit; q++ )
|
||||
q[0] = (spans->coverage+1) >> 1;
|
||||
q[0] = (unsigned char)spans->coverage;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -2866,7 +2866,7 @@ Scan_DropOuts :
|
|||
|
||||
/* set default 5-levels gray palette */
|
||||
for ( n = 0; n < 5; n++ )
|
||||
raster->grays[n] = (n*127/4);
|
||||
raster->grays[n] = (n*255/4);
|
||||
|
||||
raster->gray_width = RASTER_GRAY_LINES/2;
|
||||
}
|
||||
|
|
|
@ -467,7 +467,6 @@
|
|||
TT_Error error;
|
||||
TT_Face face = loader->face;
|
||||
TT_ULong offset;
|
||||
FT_SubGlyph subglyphs[ TT_MAX_SUBGLYPHS ];
|
||||
TT_Int num_subglyphs = 0, contours_count;
|
||||
TT_UInt index, num_points, num_contours, count;
|
||||
TT_Fixed x_scale, y_scale;
|
||||
|
@ -632,7 +631,8 @@
|
|||
else /* otherwise, load a composite !! */
|
||||
{
|
||||
/* for each subglyph, read composite header */
|
||||
FT_SubGlyph* subglyph = subglyphs;
|
||||
TT_GlyphSlot glyph = loader->glyph;
|
||||
FT_SubGlyph* subglyph = glyph->subglyphs + glyph->num_subglyphs;
|
||||
|
||||
if (ACCESS_Frame(count)) goto Fail;
|
||||
|
||||
|
@ -640,6 +640,25 @@
|
|||
do
|
||||
{
|
||||
TT_Fixed xx, xy, yy, yx;
|
||||
FT_UInt total_subglyphs;
|
||||
|
||||
/* grow the 'glyph->subglyphs' table if necessary */
|
||||
total_subglyphs = glyph->num_subglyphs + num_subglyphs;
|
||||
if ( total_subglyphs >= glyph->max_subglyphs )
|
||||
{
|
||||
FT_UInt new_max = glyph->max_subglyphs;
|
||||
FT_Memory memory = loader->face->root.memory;
|
||||
|
||||
while (new_max <= total_subglyphs)
|
||||
new_max += 4;
|
||||
|
||||
if ( REALLOC_ARRAY( glyph->subglyphs, glyph->max_subglyphs,
|
||||
new_max, FT_SubGlyph ) )
|
||||
goto Fail;
|
||||
|
||||
glyph->max_subglyphs = new_max;
|
||||
subglyph = glyph->subglyphs + glyph->num_subglyphs + num_subglyphs;
|
||||
}
|
||||
|
||||
subglyph->arg1 = subglyph->arg2 = 0;
|
||||
|
||||
|
@ -687,8 +706,6 @@
|
|||
|
||||
subglyph++;
|
||||
num_subglyphs++;
|
||||
if (num_subglyphs >= TT_MAX_SUBGLYPHS)
|
||||
break;
|
||||
}
|
||||
while (subglyph[-1].flags & MORE_COMPONENTS);
|
||||
|
||||
|
@ -707,27 +724,9 @@
|
|||
/* responsible for interpreting this data..) */
|
||||
if ( loader->load_flags & FT_LOAD_NO_RECURSE )
|
||||
{
|
||||
FT_GlyphSlot glyph = loader->glyph;
|
||||
|
||||
/* reallocate subglyph array if necessary */
|
||||
if (glyph->max_subglyphs < num_subglyphs)
|
||||
{
|
||||
FT_Memory memory = loader->face->root.memory;
|
||||
|
||||
if ( REALLOC_ARRAY( glyph->subglyphs, glyph->max_subglyphs,
|
||||
num_subglyphs, FT_SubGlyph ) )
|
||||
goto Fail;
|
||||
|
||||
glyph->max_subglyphs = num_subglyphs;
|
||||
}
|
||||
|
||||
/* copy subglyph array */
|
||||
MEM_Copy( glyph->subglyphs, subglyphs,
|
||||
num_subglyphs*sizeof(FT_SubGlyph));
|
||||
|
||||
/* set up remaining glyph fields */
|
||||
glyph->num_subglyphs = num_subglyphs;
|
||||
glyph->format = ft_glyph_format_composite;
|
||||
glyph->num_subglyphs += num_subglyphs;
|
||||
glyph->format = ft_glyph_format_composite;
|
||||
goto Load_End;
|
||||
}
|
||||
|
||||
|
@ -741,7 +740,9 @@
|
|||
{
|
||||
TT_Int n, num_base_points, num_new_points;
|
||||
|
||||
subglyph = subglyphs;
|
||||
subglyph = glyph->subglyphs + glyph->num_subglyphs;
|
||||
glyph->num_subglyphs += num_subglyphs;
|
||||
|
||||
for ( n = 0; n < num_subglyphs; n++, subglyph++ )
|
||||
{
|
||||
TT_Vector pp1, pp2;
|
||||
|
@ -753,6 +754,8 @@
|
|||
num_base_points = loader->base.n_points;
|
||||
|
||||
error = load_truetype_glyph( loader, subglyph->index );
|
||||
if (error) goto Fail;
|
||||
|
||||
if ( subglyph->flags & USE_MY_METRICS )
|
||||
{
|
||||
pp1 = loader->pp1;
|
||||
|
@ -935,8 +938,8 @@
|
|||
loader->pp2 = pp1[1];
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
/* end of composite loading */
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
|
@ -1326,7 +1329,8 @@
|
|||
#endif
|
||||
|
||||
/* Main loading loop */
|
||||
glyph->format = ft_glyph_format_outline;
|
||||
glyph->format = ft_glyph_format_outline;
|
||||
glyph->num_subglyphs = 0;
|
||||
error = load_truetype_glyph( &loader, glyph_index );
|
||||
if (!error)
|
||||
compute_glyph_metrics( &loader, glyph_index );
|
||||
|
|
Loading…
Reference in New Issue