Formatting, improving comments.

This commit is contained in:
Werner Lemberg 2005-12-20 12:01:58 +00:00
parent ce34d122ba
commit b79b513380
9 changed files with 289 additions and 238 deletions

View File

@ -18,33 +18,65 @@
2005-12-13 David Turner <david@freetype.org>
* src/autofit/aflatin.c, src/autofit/afhints.c: changed the
implementation of the LIGHT hinting mode to completely disable
horizontal hinting. This is an experimental effort to integrate
David Chester's latest patch without fucking the other hinting
modes as well.
Change the implementation of the LIGHT hinting mode to completely
disable horizontal hinting. This is an experimental effort to
integrate David Chester's latest patch without affecting the other
hinting modes as well.
Note that this doesn't force auto-hinting for all fonts however.
Note that this doesn't force auto-hinting for all fonts, however.
* Jamfile: small fix to ensure that ftexport.sym is placed in the
same location than other generated objects (i.e. within the 'objs'
directory of the current dir)
* src/autofit/afhints.c (af_glyph_hints_reload): Don't set
scaler_fiags here but...
(af_glyph_hints_rescale): Here.
* include/freetype/config/ftoption.h,
include/freetype/config/ftstdlib.h,
include/freetype/internal/tttypes.h,
src/sfnt/Jamfile, src/sfnt/rules.mk, src/sfnt/sfdriver.c,
src/sfnt/ttbdf.h, src/sfnt/ttbdf.c, src/sfnt/sfobjs.c:
* src/autofit/aflatin.c (af_latin_hints_init): Disable horizontal
hinting for `light' hinting mode.
Added support for an embedded 'BDF ' table within SFNT-based
bitmap font files. This is used to store atoms & properties from
the original BDF fonts that were used to generate the font file.
the feature is controled by TT_CONFIG_OPTION_BDF within 'ftoption.h'
and is used to implement FT_Get_BDF_Property for these font files.
* Jamfile: Small fix to ensure that ftexport.sym is placed into the
same location as other generated objects (i.e., within the `objs'
directory of the current directory).
At the moment, this is still experimental, the BDF table format isn't
cast into stone yet.
Add support for an embedded `BDF ' table within SFNT-based bitmap
font files. This is used to store atoms & properties from the
original BDF fonts that were used to generate the font file.
The feature is controlled by TT_CONFIG_OPTION_BDF within
`ftoption.h' and is used to implement FT_Get_BDF_Property for these
font files.
At the moment, this is still experimental, the BDF table format
isn't cast into stone yet.
* include/freetype/config/ftoption.h (TT_CONFIG_OPTION_BDF): New
macro.
* include/freetype/config/ftstdlib.h (ft_memchr): New macro.
* include/freetype/internal/tttypes.h (TT_BDFRec, TT_BDF)
[TT_CONFIG_OPTION_BDF]: New structure.
(TT_FaceRec) [TT_CONFIG_OPTION_BDF]: New member `bdf'.
* include/freetype/ttags.h (TTAG_BDF): New macro.
* src/sfnt/Jamfile (_sources): Add ttbdf.
* src/sfnt/rules.mk (SFNT_DRV_SRC): Add ttbdf.c.
* src/sfnt/sfdriver.c [TT_CONFIG_OPTION_BDF]: Include ttbdf.h and
FT_SERVICE_BDF_H.
(sfnt_get_charset_it) [TT_CONFIG_OPTION_BDF]: New function.
(sfnt_service_bdf) [TT_CONFIG_OPTION_BDF]: New service.
(sfnt_servives) [TT_CONFIG_OPTION_BDF]: Add sfnt_service_bdf.
* src/sfnt/sfnt.c [TT_CONFIG_OPTION_BDF]: Include ttbdf.c.
* src/sfnt/sfobjs.c [TT_CONFIG_OPTION_BDF]: Include ttbdf.h.
(sfnt_done_face) [TT_CONFIG_OPTION_BDF]: Call
tt_face_free_bdf_props.
* src/sfnt/ttbdf.h, src/sfnt/ttbdf.c: New files.
2005-12-07 Werner Lemberg <wl@gnu.org>

View File

@ -493,11 +493,12 @@ FT_BEGIN_HEADER
/*************************************************************************/
/* */
/* Define TT_CONFIG_OPTION_BDF if upi want to include support for */
/* an embedded 'BDF' table within SFNT-based bitmap formats. */
/* Define TT_CONFIG_OPTION_BDF if you want to include support for */
/* an embedded `BDF ' table within SFNT-based bitmap formats. */
/* */
#define TT_CONFIG_OPTION_BDF
/*************************************************************************/
/*************************************************************************/
/**** ****/

View File

@ -5,7 +5,7 @@
/* ANSI-specific library and header configuration file (specification */
/* only). */
/* */
/* Copyright 2002, 2003, 2004 by */
/* Copyright 2002, 2003, 2004, 2005 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */

View File

@ -855,40 +855,44 @@ FT_BEGIN_HEADER
/*************************************************************************/
/*************************************************************************/
/* these types are used to support a 'BDF' table that isn't part of the
* official TrueType specification. It is mainly used in SFNT-based bitmap
* fonts that were generated from a set of BDF fonts
/*
* These types are used to support a `BDF ' table that isn't part of the
* official TrueType specification. It is mainly used in SFNT-based
* bitmap fonts that were generated from a set of BDF fonts.
*
* the format of the table is the following:
* The format of the table is as follows.
*
* USHORT version 'BDF' table version number, should be 0x0001
* USHORT strikeCount number of strikes (bitmap sizes) in this table
* ULONG stringTable offset (froms start of BDF table) to string table
* USHORT version `BDF ' table version number, should be 0x0001.
* USHORT strikeCount Number of strikes (bitmap sizes) in this table.
* ULONG stringTable Offset (froms start of BDF table) to string
* table.
*
* followed by an array of 'strikeCount' descriptors that look like:
* This is followed by an array of `strikeCount' descriptors, having the
* following format.
*
* USHORT ppem vertical pixels per EM for this strike
* USHORT numItems number of items for this strike (properties and
* atoms), max is 255
* USHORT ppem Vertical pixels per EM for this strike.
* USHORT numItems Number of items for this strike (properties and
* atoms). Maximum is 255.
*
* this array is followed by 'strikeCount' value sets. Each "value set"
* is an array of 'numItems' items that look like the following:
* This array in turn is followed by `strikeCount' value sets. Each
* `value set' is an array of `numItems' items with the following format.
*
* ULONG item_name offset in string table to item name
* USHORT item_type 0 => string (e.g. COMMENT)
* 1 => atom (e.g. FONT or even SIZE)
* ULONG item_name Offset in string table to item name.
* USHORT item_type The item type. Possible values are
* 0 => string (e.g., COMMENT)
* 1 => atom (e.g., FONT or even SIZE)
* 2 => int32
* 3 => uint32
* 0x10 => flag for properties, ored with above values
* 0x10 => A flag to indicate a properties. This
* is ORed with the above values.
* ULONG item_value For strings => Offset into string table without
* the corresponding double quotes.
* For atoms => Offset into string table.
* For integers => Direct value.
*
* ULONG item_value for strings => offset in string table without
* the corresponding double quotes
* All strings in the string table consist of bytes and are
* zero-terminated.
*
* atoms => offset in string table
*
* integers => direct value
*
* all strings in the string table are 8-bit, zero-terminated
*/
#ifdef TT_CONFIG_OPTION_BDF

View File

@ -1308,7 +1308,7 @@
hints->y_scale = metrics->axis[AF_DIMENSION_VERT].scale;
hints->y_delta = metrics->axis[AF_DIMENSION_VERT].delta;
/* compute flags depending on render mode, etc... */
/* compute flags depending on render mode, etc. */
mode = metrics->root.scaler.render_mode;
scaler_flags = hints->scaler_flags;
@ -1337,7 +1337,8 @@
if ( mode == FT_RENDER_MODE_MONO )
other_flags |= AF_LATIN_HINTS_MONO;
/* in 'light' hinting mode, we disable horizontal hinting completely
/*
* In `light' hinting mode we disable horizontal hinting completely.
*/
if ( mode == FT_RENDER_MODE_LIGHT )
scaler_flags |= AF_SCALER_FLAG_NO_HORIZONTAL;

View File

@ -291,13 +291,13 @@
/*
* TT CMAP INFO
*
*/
static const FT_Service_TTCMapsRec tt_service_get_cmap_info =
{
(TT_CMap_Info_GetFunc)tt_get_cmap_info
};
#ifdef TT_CONFIG_OPTION_BDF
static FT_Error
@ -308,11 +308,12 @@
BDF_PropertyRec encoding, registry;
FT_Error error;
/* XXX: I don't know if this is correct, since tt_face_find_bdf_prop
* will only return something correct if we have previously
* selected a size that is listed in the BDF table.
* should we change the BDF table format to include single
* offsets for "CHARSET_REGISTRY" and "CHARSET_ENCODING" ?
/* XXX: I don't know whether this is correct, since
* tt_face_find_bdf_prop only returns something correct if we have
* previously selected a size that is listed in the BDF table.
* Should we change the BDF table format to include single offsets
* for `CHARSET_REGISTRY' and `CHARSET_ENCODING'?
*/
error = tt_face_find_bdf_prop( face, "CHARSET_REGISTRY", &registry );
if ( !error )
@ -346,7 +347,6 @@
/*
* SERVICE LIST
*
*/
static const FT_ServiceDescRec sfnt_services[] =

View File

@ -31,6 +31,7 @@
#include "ttbdf.h"
#endif
/*************************************************************************/
/* */
/* The macro FT_COMPONENT is used in trace mode. It is an implicit */

View File

@ -24,6 +24,7 @@
#include "sferrors.h"
#ifdef TT_CONFIG_OPTION_BDF
/*************************************************************************/
@ -35,15 +36,18 @@
#undef FT_COMPONENT
#define FT_COMPONENT trace_ttbdf
FT_LOCAL_DEF( void )
tt_face_free_bdf_props( TT_Face face )
{
TT_BDF bdf = &face->bdf;
if ( bdf->loaded )
{
FT_Stream stream = FT_FACE(face)->stream;
if ( bdf->table != NULL )
FT_FRAME_RELEASE( bdf->table );
@ -62,6 +66,7 @@ tt_face_load_bdf_props( TT_Face face,
FT_ULong length;
FT_Error error;
FT_ZERO( bdf );
error = tt_face_goto_table( face, TTAG_BDF, stream, &length );
@ -81,6 +86,7 @@ tt_face_load_bdf_props( TT_Face face,
FT_UInt num_strikes = FT_NEXT_USHORT( p );
FT_UInt32 strings = FT_NEXT_ULONG ( p );
if ( version != 0x0001 ||
strings < 8 ||
( strings - 8 ) / 4 < num_strikes ||
@ -98,19 +104,20 @@ tt_face_load_bdf_props( TT_Face face,
bdf->strings_size = length - strings;
}
/* check the strike descriptors
*/
/* check the strike descriptors */
{
FT_UInt count = bdf->num_strikes;
FT_Byte* p = bdf->table + 8;
FT_Byte* strike = p + count * 4;
for ( ; count > 0; count-- )
{
FT_UInt num_items = FT_PEEK_USHORT( p + 2 );
/* we don't need to check the value sets themselves, since this
* is done later
/*
* We don't need to check the value sets themselves, since this
* is done later.
*/
strike += 10 * num_items;
@ -141,6 +148,7 @@ tt_face_find_bdf_prop( TT_Face face,
FT_Byte* strike;
FT_UInt property_len;
aprop->type = BDF_PROPERTY_TYPE_NONE;
if ( bdf->loaded == 0 )
@ -192,7 +200,8 @@ FoundStrike:
/* be a bit paranoid for invalid entries here */
if ( name_offset < bdf->strings_size &&
property_len < bdf->strings_size - name_offset &&
ft_strncmp( property_name, (const char*)bdf->strings + name_offset,
ft_strncmp( property_name,
(const char*)bdf->strings + name_offset,
bdf->strings_size - name_offset ) == 0 )
{
switch ( type & 0x0F )
@ -235,3 +244,6 @@ Exit:
}
#endif /* TT_CONFIG_OPTION_BDF */
/* END */