* src/cff/cffgload.c: added a comment regarding "cntrmask" operator * src/pshinter/pshrec.c: now ignores invalid "hintmask" and "cntrmask" operators (instead of returning an error). Glyph 2028 of the CFF font "MSung-Light-Acro" couldn't be rendered otherwise (it seems its charstring is buggy, though this requires more analysis)..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
diff --git a/ChangeLog b/ChangeLog
index 2aca5fb..261567c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2001-12-21 David Turner <david@freetype.org>
+ * src/cff/cffgload.c: added a comment regarding "cntrmask" operator
+
+ * src/pshinter/pshrec.c: now ignores invalid "hintmask" and "cntrmask"
+ operators (instead of returning an error). Glyph 2028 of the CFF font
+ "MSung-Light-Acro" couldn't be rendered otherwise (it seems its
+ charstring is buggy, though this requires more analysis)..
+
* src/cff/cffgload.c, src/psaux/t1decode.c, src/pshinter/pshrec.c,
src/pshinter/ahalgo2.c, src/pshinter/pshglob.h: fixed a bug where
the X and Y axis where inversed in the postscript hinter. this
diff --git a/README b/README
index 8f353ca..b032efc 100644
--- a/README
+++ b/README
@@ -11,7 +11,7 @@
ftp://ftp.freetype.org/pub/freetype2/ftdocs-2.0.6.tar.bz2
ftp://ftp.freetype.org/pub/freetype2/ftdocs-2.0.6.tar.gz
- ftp://ftp.freetype.org/pub/freetype2/ftdoc205.zip
+ ftp://ftp.freetype.org/pub/freetype2/ftdoc206.zip
Enjoy!
diff --git a/src/cff/cffgload.c b/src/cff/cffgload.c
index 9a1d45f..d4de397 100644
--- a/src/cff/cffgload.c
+++ b/src/cff/cffgload.c
@@ -1092,7 +1092,10 @@
case cff_op_cntrmask:
FT_TRACE4(( op == cff_op_hintmask ? " hintmask" : " cntrmask" ));
- /* implement vstem when needed */
+ /* implement vstem when needed */
+ /* the specification doesn't say it, but this also works */
+ /* with the 'cntrmask' operator !! */
+ /* */
if ( num_args > 0 )
{
if ( hinter )
@@ -1100,7 +1103,7 @@
0,
num_args / 2,
args );
-
+
decoder->num_hints += num_args / 2;
}
diff --git a/src/pshinter/pshrec.c b/src/pshinter/pshrec.c
index 140a952..f03e363 100644
--- a/src/pshinter/pshrec.c
+++ b/src/pshinter/pshrec.c
@@ -23,6 +23,7 @@
#include "pshrec.h"
#include "pshalgo.h"
+#define FT_COMPONENT trace_ttgload
#ifdef DEBUG_HINTER
extern PS_Hints ps_debug_hints = 0;
@@ -1003,10 +1004,12 @@
/* check bit count; must be equal to current total hint count */
if ( bit_count != count1 + count2 )
{
- error = FT_Err_Invalid_Argument;
FT_ERROR(( "%s: called with invalid bitcount %d (instead of %d)\n",
+ "ps.hinter.type2.hintmask",
bit_count, count1 + count2 ));
- goto Fail;
+
+ /* simply ignore the operator */
+ return;
}
/* set-up new horizontal and vertical hint mask now */
@@ -1046,10 +1049,12 @@
/* check bit count, must be equal to current total hint count */
if ( bit_count != count1 + count2 )
{
- error = FT_Err_Invalid_Argument;
FT_ERROR(( "%s: called with invalid bitcount %d (instead of %d)\n",
+ "ps.hinter.type2.counter",
bit_count, count1 + count2 ));
- goto Fail;
+
+ /* simply ignore the operator */
+ return;
}
/* set-up new horizontal and vertical hint mask now */