updated the CHANGES file, plus a few fix in "ftstring" to
display monochrome glyphs too
This commit is contained in:
parent
f9ca2bb58a
commit
c06aba285f
54
CHANGES
54
CHANGES
|
@ -1,5 +1,43 @@
|
||||||
LATEST CHANGES
|
LATEST CHANGES
|
||||||
|
|
||||||
|
- CHANGES TO THE HIGH-LEVEL API
|
||||||
|
|
||||||
|
o FT_Get_Kerning has a new parameter that allows you to select
|
||||||
|
the coordinates of the kerning vector ( font units, scaled,
|
||||||
|
scaled + grid-fitted ).
|
||||||
|
|
||||||
|
o the outline functions are now in <freetype/ftoutln.h> and not
|
||||||
|
part of <freetype/freetype.h> anymore
|
||||||
|
|
||||||
|
o <freetype/ftmodule.h> now contains declarations for
|
||||||
|
FT_New_Library, FT_Done_Library, FT_Add_Default_Modules
|
||||||
|
|
||||||
|
o the so-called convenience functions have moved from "ftoutln.c"
|
||||||
|
to "ftglyph.c", and are thus available with this optional component
|
||||||
|
of the library. They are declared in <freetype/ftglyph.h> now..
|
||||||
|
|
||||||
|
o anti-aliased rendering is now the default for FT_Render_Glyph
|
||||||
|
(i.e. corresponds to render_mode == 0 == ft_render_mode_normal).
|
||||||
|
To generate a monochrome bitmap, use ft_render_mode_mono, or the
|
||||||
|
FT_LOAD_MONOCHROME flag in FT_Load_Glyph/FT_Load_Char.
|
||||||
|
|
||||||
|
FT_LOAD_ANTI_ALIAS is still defined, but values to 0.
|
||||||
|
|
||||||
|
o <freetype/freetype.h> now include <freetype/config/ftconfig.h>,
|
||||||
|
solving a few headaches :-)
|
||||||
|
|
||||||
|
o the type FT_GlyphSlotRec has now a "library" field.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- CHANGES TO THE "ftglyph.h" API
|
||||||
|
|
||||||
|
This API has been severely modified in order to make it simpler,
|
||||||
|
clearer, and more efficient. It certainly now looks like a real
|
||||||
|
"glyph factory" object, and allows client applications to manage
|
||||||
|
(i.e. transform, bbox and render) glyph images without ever knowing
|
||||||
|
their original format.
|
||||||
|
|
||||||
- added support for CID-keyed fonts to the CFF driver.
|
- added support for CID-keyed fonts to the CFF driver.
|
||||||
maybe support for pure CFF + CEF fonts should come in ??
|
maybe support for pure CFF + CEF fonts should come in ??
|
||||||
|
|
||||||
|
@ -13,6 +51,22 @@ LATEST CHANGES
|
||||||
Also removed the use of "cidafm" for now, even if the source files
|
Also removed the use of "cidafm" for now, even if the source files
|
||||||
are still there. This functionality will certainly go into a specific
|
are still there. This functionality will certainly go into a specific
|
||||||
module..
|
module..
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- ADDED SUPPORT FOR THE AUTO-HINTER
|
||||||
|
|
||||||
|
It works :-) I have a demo program which simply is a copy of "ftview"
|
||||||
|
that does a FT_Add_Module( library, &autohinter_module_class ) after
|
||||||
|
library initialisation, and Type 1 & OpenType/CFF fonts are now hinted.
|
||||||
|
|
||||||
|
CID fonts are not hinted, as they include no charmap and the auto-hinter
|
||||||
|
doesn't include "generic" global metrics computations yet..
|
||||||
|
|
||||||
|
Now, I need to release this thing to the FreeType 2 source..
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
- CHANGES TO THE RENDERER MODULES
|
- CHANGES TO THE RENDERER MODULES
|
||||||
|
|
|
@ -188,48 +188,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************
|
|
||||||
*
|
|
||||||
* Compute the dimension of a string of glyphs in pixels
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
static void compute_bbox( FT_BBox* abbox )
|
|
||||||
{
|
|
||||||
PGlyph glyph = glyphs;
|
|
||||||
FT_BBox bbox;
|
|
||||||
int n;
|
|
||||||
|
|
||||||
bbox.xMin = 32000; bbox.xMax = -32000;
|
|
||||||
bbox.yMin = 32000; bbox.yMax = -32000;
|
|
||||||
|
|
||||||
for ( n = 0; n < num_glyphs; n++, glyph++ )
|
|
||||||
{
|
|
||||||
FT_BBox cbox;
|
|
||||||
FT_Pos x, y;
|
|
||||||
|
|
||||||
if (!glyph->image) continue;
|
|
||||||
|
|
||||||
x = glyph->pos.x;
|
|
||||||
y = glyph->pos.y;
|
|
||||||
|
|
||||||
FT_Glyph_Get_CBox( glyph->image,
|
|
||||||
ft_glyph_bbox_gridfit,
|
|
||||||
&cbox );
|
|
||||||
|
|
||||||
cbox.xMin += x;
|
|
||||||
cbox.yMin += y;
|
|
||||||
cbox.xMax += x;
|
|
||||||
cbox.yMax += y;
|
|
||||||
|
|
||||||
if (cbox.xMin < bbox.xMin) bbox.xMin = cbox.xMin;
|
|
||||||
if (cbox.xMax > bbox.xMax) bbox.xMax = cbox.xMax;
|
|
||||||
if (cbox.yMin < bbox.yMin) bbox.yMin = cbox.yMin;
|
|
||||||
if (cbox.yMax > bbox.yMax) bbox.yMax = cbox.yMax;
|
|
||||||
}
|
|
||||||
*abbox = bbox;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************
|
/**************************************************************
|
||||||
*
|
*
|
||||||
* Layout a string of glyphs, the glyphs are untransformed..
|
* Layout a string of glyphs, the glyphs are untransformed..
|
||||||
|
@ -346,7 +304,8 @@
|
||||||
{
|
{
|
||||||
/* convert to a bitmap - destroy native image */
|
/* convert to a bitmap - destroy native image */
|
||||||
error = FT_Glyph_To_Bitmap( &image,
|
error = FT_Glyph_To_Bitmap( &image,
|
||||||
ft_render_mode_normal,
|
antialias ? ft_render_mode_normal
|
||||||
|
: ft_render_mode_mono,
|
||||||
0, 1 );
|
0, 1 );
|
||||||
if (!error)
|
if (!error)
|
||||||
{
|
{
|
||||||
|
@ -586,8 +545,8 @@
|
||||||
static void usage( char* execname )
|
static void usage( char* execname )
|
||||||
{
|
{
|
||||||
fprintf( stderr, "\n" );
|
fprintf( stderr, "\n" );
|
||||||
fprintf( stderr, "ftview: simple string viewer -- part of the FreeType project\n" );
|
fprintf( stderr, "ftstring: string viewer -- part of the FreeType project\n" );
|
||||||
fprintf( stderr, "------------------------------------------------------------\n" );
|
fprintf( stderr, "-------------------------------------------------------\n" );
|
||||||
fprintf( stderr, "\n" );
|
fprintf( stderr, "\n" );
|
||||||
fprintf( stderr, "Usage: %s [options below] ppem fontname[.ttf|.ttc] ...\n",
|
fprintf( stderr, "Usage: %s [options below] ppem fontname[.ttf|.ttc] ...\n",
|
||||||
execname );
|
execname );
|
||||||
|
@ -679,6 +638,10 @@
|
||||||
strncpy( filename, argv[file], 128 );
|
strncpy( filename, argv[file], 128 );
|
||||||
strncpy( alt_filename, argv[file], 128 );
|
strncpy( alt_filename, argv[file], 128 );
|
||||||
|
|
||||||
|
/* first, try to load the glyph name as-is */
|
||||||
|
error = FT_New_Face( library, filename, 0, &face );
|
||||||
|
if (!error) goto Success;
|
||||||
|
|
||||||
#ifndef macintosh
|
#ifndef macintosh
|
||||||
if ( i >= 0 )
|
if ( i >= 0 )
|
||||||
{
|
{
|
||||||
|
@ -687,11 +650,11 @@
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Load face */
|
/* if it didn't work, try to add ".ttf" at the end */
|
||||||
|
|
||||||
error = FT_New_Face( library, filename, 0, &face );
|
error = FT_New_Face( library, filename, 0, &face );
|
||||||
if (error) goto Display_Font;
|
if (error) goto Display_Font;
|
||||||
|
|
||||||
|
Success:
|
||||||
/* prepare the text to be rendered */
|
/* prepare the text to be rendered */
|
||||||
prepare_text( (unsigned char*)Text );
|
prepare_text( (unsigned char*)Text );
|
||||||
|
|
||||||
|
@ -733,11 +696,8 @@
|
||||||
{
|
{
|
||||||
/* layout & render string */
|
/* layout & render string */
|
||||||
{
|
{
|
||||||
FT_BBox bbox;
|
|
||||||
|
|
||||||
reset_transform();
|
reset_transform();
|
||||||
layout_glyphs();
|
layout_glyphs();
|
||||||
compute_bbox( &bbox );
|
|
||||||
render_string( bit.width/2, bit.rows/2 );
|
render_string( bit.width/2, bit.rows/2 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1822,7 +1822,7 @@
|
||||||
/* FT_Render_Glyph. */
|
/* FT_Render_Glyph. */
|
||||||
/* */
|
/* */
|
||||||
/* */
|
/* */
|
||||||
#define FT_LOAD_MONOCHROME 0 /* this is the default */
|
#define FT_LOAD_MONOCHROME 4096
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
|
Loading…
Reference in New Issue