summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Turner <david@freetype.org>2003-01-08 09:52:32 +0000
committerDavid Turner <david@freetype.org>2003-01-08 09:52:32 +0000
commit265799a9334a5c76fc543b068576cfbb71080ecf (patch)
treeb5e6b745fdaa15d57e77492ad3af15dd8846956a
parent6453a819e89b8c3378b037f92b6801d0ec32c5c3 (diff)
downloadfreetype2-265799a9334a5c76fc543b068576cfbb71080ecf.tar.gz
* src/autohint/ahtypes.h, src/autohint/ahhint.c, src/pshinter/pshalgo3.h,
src/pshinter/pshalgo3.c: implemented the FT_RENDER_MODE_LIGHT hinting mode in the auto and postscript hinters
-rw-r--r--ChangeLog6
-rw-r--r--src/autohint/ahhint.c10
-rw-r--r--src/autohint/ahtypes.h1
-rw-r--r--src/pshinter/pshalgo3.c25
-rw-r--r--src/pshinter/pshalgo3.h1
5 files changed, 31 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index 23363b1e3..8dadbf9e7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2003-01-08 Owen Taylor <owen@redhat.com>
+
+ * src/autohint/ahtypes.h, src/autohint/ahhint.c, src/pshinter/pshalgo3.h,
+ src/pshinter/pshalgo3.c: implemented the FT_RENDER_MODE_LIGHT hinting
+ mode in the auto and postscript hinters
+
2003-01-08 David Turner <david@freetype.org>
* src/base/ftobjs.c (find_unicode_charmap): fixed the error code
diff --git a/src/autohint/ahhint.c b/src/autohint/ahhint.c
index 689f4b9dd..1e2b7b342 100644
--- a/src/autohint/ahhint.c
+++ b/src/autohint/ahhint.c
@@ -104,8 +104,12 @@
sign = 1;
}
- if ( ( vertical && !hinter->do_vert_snapping ) ||
- ( !vertical && !hinter->do_horz_snapping ) )
+ if ( !hinter->do_stem_adjust )
+ {
+ /* leave stem widths unchanged */
+ }
+ else if ( ( vertical && !hinter->do_vert_snapping ) ||
+ ( !vertical && !hinter->do_horz_snapping ) )
{
/* smooth hinting process, very lightly quantize the stem width */
/* */
@@ -1427,6 +1431,8 @@
hinter->do_vert_snapping = FT_BOOL( hint_mode == FT_RENDER_MODE_MONO ||
hint_mode == FT_RENDER_MODE_LCD_V );
+ hinter->do_stem_adjust = FT_BOOL( hint_mode != FT_RENDER_MODE_LIGHT );
+
#if 1
load_flags = FT_LOAD_NO_SCALE
| FT_LOAD_IGNORE_TRANSFORM ;
diff --git a/src/autohint/ahtypes.h b/src/autohint/ahtypes.h
index 50d0f86eb..c9fbf274d 100644
--- a/src/autohint/ahtypes.h
+++ b/src/autohint/ahtypes.h
@@ -496,6 +496,7 @@ FT_BEGIN_HEADER
FT_Bool do_vert_hints; /* disable Y hinting */
FT_Bool do_horz_snapping; /* disable X stem size snapping */
FT_Bool do_vert_snapping; /* disable Y stem size snapping */
+ FT_Bool do_stem_adjust; /* disable light stem snapping */
} AH_HinterRec, *AH_Hinter;
diff --git a/src/pshinter/pshalgo3.c b/src/pshinter/pshalgo3.c
index 4ee01715d..12a0f169b 100644
--- a/src/pshinter/pshalgo3.c
+++ b/src/pshinter/pshalgo3.c
@@ -516,17 +516,20 @@
hint->cur_pos = pos;
hint->cur_len = fit_len;
- if ( len <= 64 )
+ if ( glyph->do_stem_adjust )
{
- /* the stem is less than one pixel, we will center it */
- /* around the nearest pixel center */
- /* */
- pos = ( pos + ( (len >> 1) & -64 ) );
- len = 64;
- }
- else
- {
- len = psh3_dimension_quantize_len( dim, len, 0 );
+ if ( len <= 64 )
+ {
+ /* the stem is less than one pixel, we will center it */
+ /* around the nearest pixel center */
+ /* */
+ pos = ( pos + ( (len >> 1) & -64 ) );
+ len = 64;
+ }
+ else
+ {
+ len = psh3_dimension_quantize_len( dim, len, 0 );
+ }
}
/* now that we have a good hinted stem width, try to position */
@@ -1720,6 +1723,8 @@
glyph->do_vert_snapping = FT_BOOL( hint_mode == FT_RENDER_MODE_MONO ||
hint_mode == FT_RENDER_MODE_LCD_V );
+ glyph->do_stem_adjust = FT_BOOL( hint_mode != FT_RENDER_MODE_LIGHT );
+
for ( dimension = 0; dimension < 2; dimension++ )
{
/* load outline coordinates into glyph */
diff --git a/src/pshinter/pshalgo3.h b/src/pshinter/pshalgo3.h
index 18f53741c..7b69bb0ce 100644
--- a/src/pshinter/pshalgo3.h
+++ b/src/pshinter/pshalgo3.h
@@ -221,6 +221,7 @@ FT_BEGIN_HEADER
FT_Bool do_vert_hints;
FT_Bool do_horz_snapping;
FT_Bool do_vert_snapping;
+ FT_Bool do_stem_adjust;
} PSH3_GlyphRec, *PSH3_Glyph;