From b9cd526a35c1e6fb0b3eb4497f6013a4abda7021 Mon Sep 17 00:00:00 2001 From: Brendan Dahl Date: Mon, 20 Feb 2012 15:49:45 -0800 Subject: [PATCH] Remove bad chars instead of replaces all. --- src/fonts.js | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/src/fonts.js b/src/fonts.js index 7b09aa8ca..2884dcb2e 100644 --- a/src/fonts.js +++ b/src/fonts.js @@ -3699,10 +3699,30 @@ var Type2CFF = (function Type2CFFClosure() { var length = data.length; if (length > 127) warn('Font had name longer than 127 chars, will be rejected.'); - // Only certain chars are permitted in the font name. Set them all to - // 'A' to avoid being rejected. - for (var j = 0; j < length; ++j) - data[j] = 65; + // Only certain chars are permitted in the font name. + for (var j = 0; j < length; ++j) { + var c = data[j]; + if (j === 0 && c === 0) + continue; + if (c < 33 || c > 126) { + data[j] = 95; + continue; + } + switch (c) { + case 91: // [ + case 93: // ] + case 40: // ( + case 41: // ) + case 123: // { + case 125: // } + case 60: // < + case 62: // > + case 47: // / + case 37: // % + data[j] = 95; + break; + } + } } }, getStrings: function cff_getStrings(stringIndex) {