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:
David Turner 2000-05-17 20:56:01 +00:00
parent e49ab25c08
commit 3475e7fba3
8 changed files with 53 additions and 41 deletions

12
CHANGES
View File

@ -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..

View File

@ -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:

View File

@ -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;

View File

@ -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 );

View File

@ -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
/*************************************************************************/
/*************************************************************************/

View File

@ -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
}

View File

@ -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;
}

View File

@ -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 );