* src/sfnt/sfobjs.c (tt_face_get_name): All Unicode strings are

encoded in UTF-16BE.  Patch from Rajeev Pahuja <rpahuja@esri.com>.
(tt_name_entry_ascii_from_ucs4): Removed.


* include/freetype/ftxf86.h: Fix and extend comment so that it
appears in the documentation.

* include/freetype/ftchapters.h: Add `font_format' section.


* src/tools/docmaker/tohtml.py (HtmlFormatter::index_exit): Add link
to TOC in index page.


Formatting.
This commit is contained in:
Werner Lemberg 2006-12-01 08:20:47 +00:00
parent 3a18c5e29e
commit 960ba59ad9
11 changed files with 162 additions and 115 deletions

View File

@ -1,30 +1,61 @@
2006-11-28 David Turner <david@freetype.org>
2006-12-01 Werner Lemberg <wl@gnu.org>
* src/smooth/ftgrays.c (gray_raster_render): return 0 when we're
trying to rendering into a zero-width/height bitmap, instead of an
error code.
* src/sfnt/sfobjs.c (tt_face_get_name): All Unicode strings are
encoded in UTF-16BE. Patch from Rajeev Pahuja <rpahuja@esri.com>.
(tt_name_entry_ascii_from_ucs4): Removed.
* src/truetype/ttobjs.c (tt_face_init): Fix typo in previous patch
* src/smooth/ftgrays.c: remove hard-coded error values, use FreeType
ones instead
* include/freetype/ftxf86.h: Fix and extend comment so that it
appears in the documentation.
* src/autofit/afhints.c (af_glyph_hints_dump_segments): remove unused
variable
* include/freetype/ftchapters.h: Add `font_format' section.
* src/tools/docmaker/tohtml.py (HtmlFormatter::index_exit): Add link
to TOC in index page.
2006-11-28 David Turner <david@freetype.org>
* src/smooth/ftgrays.c (gray_raster_render): Return 0 when we are
trying to render into a zero-width/height bitmap, not an error code.
* src/truetype/ttobjs.c (tt_face_init): Fix typo in previous patch.
* src/smooth/ftgrays.c: Remove hard-coded error values; use FreeType
ones instead.
* src/autofit/afhints.c (af_glyph_hints_dump_segments): Remove unused
variable.
2006-11-26 Pierre Hanser <hanser@club-internet.fr>
* src/truetype/ttobjs.c (tt_face_init): Protect against NULL pointer.
2006-11-25 David Turner <david@freetype.org>
2006-11-25 David Turner <david@freetype.org>
* src/autofit/afhints.c: add stubs to link the "ftgrid" test program
when debugging is disabled in the auto-hinter
* src/autofit/afhints.c (af_glyph_hints_dump_points,
af_glyph_hints_dump_segments, af_glyph_hints_dumpedges) [!AF_DEBUG]:
Add stubs to link the `ftgrid' test program when debugging is
disabled in the auto-hinter.
2006-11-23 David Turner <david@freetype.org>
2006-11-23 David Turner <david@freetype.org>
* src/autofit/afhints.c, src/autofit/afhints.h, src/autofit/aflatin.c,
src/autofit/aftypes.h: Misc. auto-hinter improvements
src/autofit/aftypes.h: Miscellaneous auto-hinter improvements.
* src/autofit/afhints.c (af_glyph_hints_dump_segments) [AF_DEBUG]:
Emit more sensible information.
* src/autofit/afhints.h (AF_SegmentRec): Add `height' member.
* src/autofit/aflatin.c (af_latin_metrics_scale_dim): Improve
rounding of blue values.
(af_latin_hints_compute_segments): Hint segment heights.
(af_latin_hints_link_segments): Reduce `len_score' value.
(af_latin_hints_compute_edges): Increase `segment_length_threshold'
value and use `height' member for comparisons.
(af_latin_hint_edges): Extend logging message.
Improve handling of remaining edges.
2006-11-22 Werner Lemberg <wl@gnu.org>

View File

@ -77,7 +77,7 @@ FT_BEGIN_HEADER
/*************************************************************************/
/* */
/* Uncomment the line below if you want to active sub-pixel rendering */
/* Uncomment the line below if you want to activate sub-pixel rendering */
/* (a.k.a. LCD rendering, or ClearType) in this build of the library. */
/* */
/* Note that this feature is covered by several Microsoft patents */

View File

@ -56,6 +56,7 @@
/* bdf_fonts */
/* pfr_fonts */
/* winfnt_fonts */
/* font_formats */
/* */
/***************************************************************************/

View File

@ -102,13 +102,13 @@ FT_BEGIN_HEADER
* @FT_LCD_FILTER_NONE in order to enable it.
*
* Due to *PATENTS* covering subpixel rendering, this function doesn't
* do anything except returning @FT_Err_Unimplemented_Feature if the
* do anything except returning `FT_Err_Unimplemented_Feature' if the
* configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not
* defined in your build of the library, which should correspond to all
* default builds of the library.
*
* The filter affects glyph bitmaps rendered through @FT_Render_Glyph,
* @FT_Glyph_Get_Bitmap, @FT_Load_Glyph, and @FT_Load_Char.
* @FT_Outline_Get_Bitmap, @FT_Load_Glyph, and @FT_Load_Char.
*
* It does _not_ affect the output of @FT_Outline_Render and
* @FT_Outline_Get_Bitmap.

View File

@ -4,7 +4,7 @@
/* */
/* Support functions for X11. */
/* */
/* Copyright 2002, 2003, 2004 by */
/* Copyright 2002, 2003, 2004, 2006 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@ -31,24 +31,44 @@
FT_BEGIN_HEADER
/* this comment is intentionally disabled for now, to prevent this */
/* function from appearing in the API Reference. */
/*@***********************************************************************/
/*************************************************************************/
/* */
/* <Function> */
/* FT_Get_X11_Font_Format */
/* <Section> */
/* font_formats */
/* */
/* <Title> */
/* Font Formats */
/* */
/* <Abstract> */
/* Getting the font format. */
/* */
/* <Description> */
/* Return a string describing the format of a given face as an X11 */
/* FONT_PROPERTY. It should only be used by the FreeType 2 font */
/* backend of the XFree86 font server. */
/* The single function in this section can be used to get the font */
/* format. Note that this information is not needed normally; */
/* however, there are special cases (like in PDF devices) where it is */
/* important to differentiate, inspite of FreeType's uniform API. */
/* */
/*************************************************************************/
/*************************************************************************/
/* */
/* <Function> */
/* FT_Get_X11_Font_Format */
/* */
/* <Description> */
/* Return a string describing the format of a given face, using values */
/* which can be used as an X11 FONT_PROPERTY. Possible values are */
/* `TrueType', `Type 1', `BDF', `PCF', `Type 42', `CID Type 1', `CFF', */
/* `PFR', and `Windows FNT'. */
/* */
/* <Input> */
/* face :: Input face handle. */
/* face :: */
/* Input face handle. */
/* */
/* <Return> */
/* Font format string. NULL in case of error. */
/* Font format string. NULL in case of error. */
/* */
FT_EXPORT( const char* )
FT_Get_X11_Font_Format( FT_Face face );

View File

@ -216,7 +216,7 @@
AF_INDEX_NUM( seg->link, segments ),
AF_INDEX_NUM( seg->serif, segments ),
seg->height,
seg->height - (seg->max_coord - seg->min_coord) );
seg->height - ( seg->max_coord - seg->min_coord ) );
}
printf( "\n" );
}
@ -263,29 +263,32 @@
}
}
#else
/* these empty stubs are only used to link the "ftgrid" test program
* when debugging is disabled
*/
#else /* !AF_DEBUG */
/* these empty stubs are only used to link the `ftgrid' test program */
/* when debugging is disabled */
void
af_glyph_hints_dump_points( AF_GlyphHints hints )
{
FT_UNUSED(hints);
FT_UNUSED( hints );
}
void
af_glyph_hints_dump_segments( AF_GlyphHints hints )
{
FT_UNUSED(hints);
FT_UNUSED( hints );
}
void
af_glyph_hints_dump_edges( AF_GlyphHints hints )
{
FT_UNUSED(hints);
FT_UNUSED( hints );
}
#endif /* AF_DEBUG */
#endif /* !AF_DEBUG */
/* compute the direction value of a given vector */

View File

@ -125,7 +125,7 @@ FT_BEGIN_HEADER
FT_Short pos; /* position of segment */
FT_Short min_coord; /* minimum coordinate of segment */
FT_Short max_coord; /* maximum coordinate of segment */
FT_Short height;
FT_Short height; /* the hinted segment height */
AF_Edge edge; /* the segment's parent edge */
AF_Segment edge_next; /* link to next segment in parent edge */

View File

@ -471,7 +471,7 @@
if ( blue )
{
FT_Pos scaled = FT_MulFix( blue->shoot.org, scaler->y_scale );
FT_Pos fitted = (scaled + 40) & ~63;
FT_Pos fitted = ( scaled + 40 ) & ~63;
if ( scaled != fitted )
@ -772,20 +772,21 @@
} /* contours */
/* now slightly increase the height of segments when this makes sense
* this is used to better detect and ignore serifs
*/
/* now slightly increase the height of segments when this makes */
/* sense -- this is used to better detect and ignore serifs */
{
AF_Segment segments = axis->segments;
AF_Segment segments = axis->segments;
AF_Segment segments_end = segments + axis->num_segments;
for ( segment = segments; segment < segments_end; segment++ )
{
AF_Point first = segment->first;
AF_Point last = segment->last;
AF_Point first = segment->first;
AF_Point last = segment->last;
FT_Pos first_v = first->v;
FT_Pos last_v = last->v;
if ( first == last )
continue;
@ -793,25 +794,27 @@
{
AF_Point p;
p = first->prev;
if ( p->v < first_v )
segment->height += (first_v - p->v) >> 1;
segment->height += ( first_v - p->v ) >> 1;
p = last->next;
if ( p->v > last_v )
segment->height += (p->v - last_v) >> 1;
segment->height += ( p->v - last_v ) >> 1;
}
else
{
AF_Point p;
p = first->prev;
if ( p->v > first_v )
segment->height += (p->v - first_v) >> 1;
segment->height += ( p->v - first_v ) >> 1;
p = last->next;
if ( p->v < last_v )
segment->height += (last_v - p->v) >> 1;
segment->height += ( last_v - p->v ) >> 1;
}
}
}
@ -1841,9 +1844,11 @@
else
edge->pos = FT_PIX_ROUND( edge->opos );
AF_LOG(( "ANCHOR: edge %d (opos=%.2f) and %d (opos=%.2f) snapped to (%.2f) (%.2f)\n",
edge-edges, edge->opos / 64., edge2-edges, edge2->opos/64.,
edge->pos / 64., edge2->pos / 64. ));
AF_LOG(( "ANCHOR: edge %d (opos=%.2f) and %d (opos=%.2f) "
"snapped to (%.2f) (%.2f)\n",
edge-edges, edge->opos / 64.0,
edge2-edges, edge2->opos / 64.0,
edge->pos / 64.0, edge2->pos / 64.0 ));
anchor = edge;
edge->flags |= AF_EDGE_DONE;
@ -2020,10 +2025,12 @@
{
FT_Pos delta;
if ( edge->flags & AF_EDGE_DONE )
continue;
delta = 1000;
if ( edge->serif )
{
delta = edge->serif->opos - edge->opos;
@ -2031,45 +2038,49 @@
delta = -delta;
}
if ( delta < 64+16 )
if ( delta < 64 + 16 )
{
af_latin_align_serif_edge( hints, edge->serif, edge );
AF_LOG(( "SERIF: edge %d (opos=%.2f) serif to %d (opos=%.2f) aligned to (%.2f)\n", edge-edges,
edge->opos/64., edge->serif - edges, edge->serif->opos/64., edge->pos/64.0 ));
AF_LOG(( "SERIF: edge %d (opos=%.2f) serif to %d (opos=%.2f) "
"aligned to (%.2f)\n",
edge-edges, edge->opos / 64.0,
edge->serif - edges, edge->serif->opos / 64.0,
edge->pos / 64.0 ));
}
else if ( !anchor )
{
AF_LOG(( "SERIF_ANCHOR: edge %d (opos=%.2f) snapped to (%.2f)\n",
edge-edges, edge->opos/64., edge->pos/64. ));
edge-edges, edge->opos / 64.0, edge->pos / 64.0 ));
edge->pos = FT_PIX_ROUND( edge->opos );
anchor = edge;
}
else
{
AF_Edge before, after;
AF_Edge before, after;
for ( before = edge-1; before >= edges; before-- )
for ( before = edge - 1; before >= edges; before-- )
if ( before->flags & AF_EDGE_DONE )
break;
break;
for ( after = edge+1; after < edge_limit; after++ )
for ( after = edge + 1; after < edge_limit; after++ )
if ( after->flags & AF_EDGE_DONE )
break;
break;
if ( before >= edges && before < edge &&
after < edge_limit && after > edge )
{
edge->pos = before->pos + FT_MulDiv( edge->opos - before->opos,
after->pos - before->pos,
after->opos - before->opos );
}
if ( before >= edges && before < edge &&
after < edge_limit && after > edge )
edge->pos = before->pos +
FT_MulDiv( edge->opos - before->opos,
after->pos - before->pos,
after->opos - before->opos );
else
edge->pos = anchor->pos +
edge->pos = anchor->pos +
FT_PIX_ROUND( edge->opos - anchor->opos );
AF_LOG(( "SERIF_LINK: edge %d (opos=%.2f) snapped to (%.2f)\n",
edge-edges, edge->opos/64., edge->pos/64. ));
edge-edges, edge->opos / 64.0, edge->pos / 64.0 ));
}
edge->flags |= AF_EDGE_DONE;
if ( edge > edges && edge->pos < edge[-1].pos )

View File

@ -75,37 +75,6 @@
}
/* convert a UCS-4 name entry to ASCII */
static FT_String*
tt_name_entry_ascii_from_ucs4( TT_NameEntry entry,
FT_Memory memory )
{
FT_String* string;
FT_UInt len, code, n;
FT_Byte* read = (FT_Byte*)entry->string;
FT_Error error;
len = (FT_UInt)entry->stringLength / 4;
if ( FT_NEW_ARRAY( string, len + 1 ) )
return NULL;
for ( n = 0; n < len; n++ )
{
code = (FT_UInt)FT_NEXT_ULONG( read );
if ( code < 32 || code > 127 )
code = '?';
string[n] = (char)code;
}
string[len] = 0;
return string;
}
/* convert an Apple Roman or symbol name entry to ASCII */
static FT_String*
tt_name_entry_ascii_from_other( TT_NameEntry entry,
@ -253,13 +222,11 @@
rec = face->name_table.names + found_win;
switch ( rec->encodingID )
{
/* all Unicode strings are encoded using UTF-16BE */
case TT_MS_ID_UNICODE_CS:
case TT_MS_ID_SYMBOL_CS:
convert = tt_name_entry_ascii_from_utf16;
break;
case TT_MS_ID_UCS_4:
convert = tt_name_entry_ascii_from_ucs4;
convert = tt_name_entry_ascii_from_utf16;
break;
default:

View File

@ -1783,17 +1783,17 @@
return ErrRaster_Invalid_Outline;
/* if direct mode is not set, we must have a target bitmap */
if ( (params->flags & FT_RASTER_FLAG_DIRECT) == 0 )
if ( ( params->flags & FT_RASTER_FLAG_DIRECT ) == 0 )
{
if ( !target_map )
return ErrRaster_Invalid_Argument;
if ( !target_map )
return ErrRaster_Invalid_Argument;
/* nothing to do */
if ( !target_map->width || !target_map->rows )
return 0;
/* nothing to do */
if ( !target_map->width || !target_map->rows )
return 0;
if ( !target_map->buffer )
return ErrRaster_Invalid_Argument;
if ( !target_map->buffer )
return ErrRaster_Invalid_Argument;
}
/* this version does not support monochrome rendering */

View File

@ -107,6 +107,16 @@ chapter_header = '<br><table align=center width="75%"><tr><td><h2>'
chapter_inter = '</h2><ul class="empty"><li>'
chapter_footer = '</li></ul></td></tr></table>'
# Index footer.
index_footer_start = """\
<hr>
<table><tr><td width="100%"></td>
<td><font size=-2>[<a href="
"""
index_footer_end = """\
">TOC</a>]</font></td></tr></table>
"""
# source language keyword coloration/styling
#
@ -360,7 +370,7 @@ class HtmlFormatter(Formatter):
# block_index already contains the sorted list of index names
count = len( self.block_index )
rows = (count + self.columns - 1)/self.columns
rows = (count + self.columns - 1) / self.columns
print "<table align=center border=0 cellpadding=0 cellspacing=0>"
for r in range(rows):
@ -377,7 +387,11 @@ class HtmlFormatter(Formatter):
print line
print "</table>"
print self.html_footer
print index_footer_start + \
self.file_prefix + "toc.html" + \
index_footer_end
self.index_items = {}
def index_dump( self, index_filename = None ):