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
|
- tagged "BETA-6" in the CVS tree. This one is a serious release candidate
|
||||||
even though it doesn't incorporate the auto-hinter yet..
|
even though it doesn't incorporate the auto-hinter yet..
|
||||||
|
|
|
@ -98,8 +98,8 @@
|
||||||
pixel_mode >= gr_pixel_mode_max )
|
pixel_mode >= gr_pixel_mode_max )
|
||||||
goto Fail;
|
goto Fail;
|
||||||
|
|
||||||
if ( pixel_mode != gr_pixel_mode_gray ||
|
if ( pixel_mode != gr_pixel_mode_gray ||
|
||||||
( num_grays >= 2 && num_grays < 256 ) )
|
( num_grays >= 2 && num_grays <= 256 ) )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
Fail:
|
Fail:
|
||||||
|
|
|
@ -57,7 +57,7 @@
|
||||||
|
|
||||||
static int res = 72; /* default resolution in dpi */
|
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 graph_init = 0;
|
||||||
static int render_mode = 1;
|
static int render_mode = 1;
|
||||||
|
@ -158,7 +158,7 @@
|
||||||
bit.mode = gr_pixel_mode_gray;
|
bit.mode = gr_pixel_mode_gray;
|
||||||
bit.width = DIM_X;
|
bit.width = DIM_X;
|
||||||
bit.rows = DIM_Y;
|
bit.rows = DIM_Y;
|
||||||
bit.grays = 128;
|
bit.grays = 256;
|
||||||
|
|
||||||
surface = grNewSurface( 0, &bit );
|
surface = grNewSurface( 0, &bit );
|
||||||
if (!surface)
|
if (!surface)
|
||||||
|
@ -254,7 +254,7 @@
|
||||||
if( !hinted )
|
if( !hinted )
|
||||||
load_flags |= FT_LOAD_NO_HINTING;
|
load_flags |= FT_LOAD_NO_HINTING;
|
||||||
|
|
||||||
num_grays = 128;
|
num_grays = 256;
|
||||||
if (!antialias)
|
if (!antialias)
|
||||||
num_grays = 0;
|
num_grays = 0;
|
||||||
|
|
||||||
|
|
|
@ -66,7 +66,7 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
||||||
|
|
||||||
int res = 72;
|
int res = 72;
|
||||||
|
|
||||||
static grColor fore_color = { 127 };
|
static grColor fore_color = { 255 };
|
||||||
|
|
||||||
int Fail;
|
int Fail;
|
||||||
unsigned char autorun;
|
unsigned char autorun;
|
||||||
|
@ -127,7 +127,7 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
||||||
bit.mode = gr_pixel_mode_gray;
|
bit.mode = gr_pixel_mode_gray;
|
||||||
bit.width = DIM_X;
|
bit.width = DIM_X;
|
||||||
bit.rows = DIM_Y;
|
bit.rows = DIM_Y;
|
||||||
bit.grays = 128;
|
bit.grays = 256;
|
||||||
|
|
||||||
surface = grNewSurface( 0, &bit );
|
surface = grNewSurface( 0, &bit );
|
||||||
if (!surface)
|
if (!surface)
|
||||||
|
@ -185,7 +185,7 @@ $\243^\250*\265\371%!\247:/;.,?<>";
|
||||||
bit3.pitch = bit2.pitch;
|
bit3.pitch = bit2.pitch;
|
||||||
bit3.mode = antialias ? bit.mode : gr_pixel_mode_mono;
|
bit3.mode = antialias ? bit.mode : gr_pixel_mode_mono;
|
||||||
bit3.buffer = bit_buffer;
|
bit3.buffer = bit_buffer;
|
||||||
bit3.grays = 128;
|
bit3.grays = 256;
|
||||||
|
|
||||||
FT_Outline_Translate( &glyph->outline, -left, -bottom );
|
FT_Outline_Translate( &glyph->outline, -left, -bottom );
|
||||||
memset( bit_buffer, 0, size );
|
memset( bit_buffer, 0, size );
|
||||||
|
|
|
@ -349,8 +349,6 @@
|
||||||
/* */
|
/* */
|
||||||
#define TT_CONFIG_OPTION_INTERPRETER_SWITCH
|
#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 (spans->coverage)
|
||||||
#if 1
|
#if 1
|
||||||
memset( p + spans->x, (spans->coverage+1) >> 1, spans->len );
|
memset( p + spans->x, (unsigned char)spans->coverage, spans->len );
|
||||||
#else
|
#else
|
||||||
{
|
{
|
||||||
q = p + spans->x;
|
q = p + spans->x;
|
||||||
limit = q + spans->len;
|
limit = q + spans->len;
|
||||||
for ( ; q < limit; q++ )
|
for ( ; q < limit; q++ )
|
||||||
q[0] = (spans->coverage+1) >> 1;
|
q[0] = (unsigned char)spans->coverage;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -2866,7 +2866,7 @@ Scan_DropOuts :
|
||||||
|
|
||||||
/* set default 5-levels gray palette */
|
/* set default 5-levels gray palette */
|
||||||
for ( n = 0; n < 5; n++ )
|
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;
|
raster->gray_width = RASTER_GRAY_LINES/2;
|
||||||
}
|
}
|
||||||
|
|
|
@ -467,7 +467,6 @@
|
||||||
TT_Error error;
|
TT_Error error;
|
||||||
TT_Face face = loader->face;
|
TT_Face face = loader->face;
|
||||||
TT_ULong offset;
|
TT_ULong offset;
|
||||||
FT_SubGlyph subglyphs[ TT_MAX_SUBGLYPHS ];
|
|
||||||
TT_Int num_subglyphs = 0, contours_count;
|
TT_Int num_subglyphs = 0, contours_count;
|
||||||
TT_UInt index, num_points, num_contours, count;
|
TT_UInt index, num_points, num_contours, count;
|
||||||
TT_Fixed x_scale, y_scale;
|
TT_Fixed x_scale, y_scale;
|
||||||
|
@ -632,7 +631,8 @@
|
||||||
else /* otherwise, load a composite !! */
|
else /* otherwise, load a composite !! */
|
||||||
{
|
{
|
||||||
/* for each subglyph, read composite header */
|
/* 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;
|
if (ACCESS_Frame(count)) goto Fail;
|
||||||
|
|
||||||
|
@ -640,6 +640,25 @@
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
TT_Fixed xx, xy, yy, yx;
|
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;
|
subglyph->arg1 = subglyph->arg2 = 0;
|
||||||
|
|
||||||
|
@ -687,8 +706,6 @@
|
||||||
|
|
||||||
subglyph++;
|
subglyph++;
|
||||||
num_subglyphs++;
|
num_subglyphs++;
|
||||||
if (num_subglyphs >= TT_MAX_SUBGLYPHS)
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
while (subglyph[-1].flags & MORE_COMPONENTS);
|
while (subglyph[-1].flags & MORE_COMPONENTS);
|
||||||
|
|
||||||
|
@ -707,27 +724,9 @@
|
||||||
/* responsible for interpreting this data..) */
|
/* responsible for interpreting this data..) */
|
||||||
if ( loader->load_flags & FT_LOAD_NO_RECURSE )
|
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 */
|
/* set up remaining glyph fields */
|
||||||
glyph->num_subglyphs = num_subglyphs;
|
glyph->num_subglyphs += num_subglyphs;
|
||||||
glyph->format = ft_glyph_format_composite;
|
glyph->format = ft_glyph_format_composite;
|
||||||
goto Load_End;
|
goto Load_End;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -741,7 +740,9 @@
|
||||||
{
|
{
|
||||||
TT_Int n, num_base_points, num_new_points;
|
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++ )
|
for ( n = 0; n < num_subglyphs; n++, subglyph++ )
|
||||||
{
|
{
|
||||||
TT_Vector pp1, pp2;
|
TT_Vector pp1, pp2;
|
||||||
|
@ -753,6 +754,8 @@
|
||||||
num_base_points = loader->base.n_points;
|
num_base_points = loader->base.n_points;
|
||||||
|
|
||||||
error = load_truetype_glyph( loader, subglyph->index );
|
error = load_truetype_glyph( loader, subglyph->index );
|
||||||
|
if (error) goto Fail;
|
||||||
|
|
||||||
if ( subglyph->flags & USE_MY_METRICS )
|
if ( subglyph->flags & USE_MY_METRICS )
|
||||||
{
|
{
|
||||||
pp1 = loader->pp1;
|
pp1 = loader->pp1;
|
||||||
|
@ -935,8 +938,8 @@
|
||||||
loader->pp2 = pp1[1];
|
loader->pp2 = pp1[1];
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
/* end of composite loading */
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
@ -1326,7 +1329,8 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Main loading loop */
|
/* 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 );
|
error = load_truetype_glyph( &loader, glyph_index );
|
||||||
if (!error)
|
if (!error)
|
||||||
compute_glyph_metrics( &loader, glyph_index );
|
compute_glyph_metrics( &loader, glyph_index );
|
||||||
|
|
Loading…
Reference in New Issue