From a6ca7c7896591b18671a7ae7cf7def19a164e478 Mon Sep 17 00:00:00 2001 From: Devon Govett Date: Wed, 20 Jul 2011 01:54:15 -0400 Subject: [PATCH] Unicode font support! --- demo/out.pdf | Bin 654819 -> 653194 bytes lib/font.coffee | 14 +-- lib/font/macroman.coffee | 227 ------------------------------------ lib/font/subset.coffee | 26 +++-- lib/font/tables/cmap.coffee | 95 +++++++++++++-- 5 files changed, 111 insertions(+), 251 deletions(-) delete mode 100644 lib/font/macroman.coffee diff --git a/demo/out.pdf b/demo/out.pdf index 40c9a91cb81cfdf7ef65d1b9396dc9ce5d52a4bc..1332abd08cbc8aa9980f7af23bcf4ae623bed0bf 100644 GIT binary patch delta 49622 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 diff --git a/lib/font.coffee b/lib/font.coffee index bfebc02..4e957fe 100644 --- a/lib/font.coffee +++ b/lib/font.coffee @@ -88,11 +88,7 @@ class PDFFont Filter: 'FlateDecode' @fontfile.add compressedData - - cmap = @subset.cmap - widths = @subset.charWidths - charWidths = (Math.round widths[gid] * @scaleFactor for gid, i in cmap when i >= 32) - + @descriptor = @document.ref Type: 'FontDescriptor' FontName: @subset.postscriptName @@ -105,14 +101,18 @@ class PDFFont Descent: @decender CapHeight: @capHeight XHeight: @xHeight + + firstChar = +Object.keys(@subset.cmap)[0] + charWidths = for code, glyph of @subset.cmap + Math.round @ttf.hmtx.forGlyph(glyph).advance * @scaleFactor ref = Type: 'Font' BaseFont: @subset.postscriptName Subtype: 'TrueType' FontDescriptor: @descriptor - FirstChar: 32 - LastChar: 255 + FirstChar: firstChar + LastChar: firstChar + charWidths.length - 1 Widths: @document.ref charWidths Encoding: 'MacRomanEncoding' diff --git a/lib/font/macroman.coffee b/lib/font/macroman.coffee deleted file mode 100644 index e78ed65..0000000 --- a/lib/font/macroman.coffee +++ /dev/null @@ -1,227 +0,0 @@ -exports.TO_UNICODE = - 0x20: 0x0020 # SPACE - 0x21: 0x0021 # EXCLAMATION MARK - 0x22: 0x0022 # QUOTATION MARK - 0x23: 0x0023 # NUMBER SIGN - 0x24: 0x0024 # DOLLAR SIGN - 0x25: 0x0025 # PERCENT SIGN - 0x26: 0x0026 # AMPERSAND - 0x27: 0x0027 # APOSTROPHE - 0x28: 0x0028 # LEFT PARENTHESIS - 0x29: 0x0029 # RIGHT PARENTHESIS - 0x2A: 0x002A # ASTERISK - 0x2B: 0x002B # PLUS SIGN - 0x2C: 0x002C # COMMA - 0x2D: 0x002D # HYPHEN-MINUS - 0x2E: 0x002E # FULL STOP - 0x2F: 0x002F # SOLIDUS - 0x30: 0x0030 # DIGIT ZERO - 0x31: 0x0031 # DIGIT ONE - 0x32: 0x0032 # DIGIT TWO - 0x33: 0x0033 # DIGIT THREE - 0x34: 0x0034 # DIGIT FOUR - 0x35: 0x0035 # DIGIT FIVE - 0x36: 0x0036 # DIGIT SIX - 0x37: 0x0037 # DIGIT SEVEN - 0x38: 0x0038 # DIGIT EIGHT - 0x39: 0x0039 # DIGIT NINE - 0x3A: 0x003A # COLON - 0x3B: 0x003B # SEMICOLON - 0x3C: 0x003C # LESS-THAN SIGN - 0x3D: 0x003D # EQUALS SIGN - 0x3E: 0x003E # GREATER-THAN SIGN - 0x3F: 0x003F # QUESTION MARK - 0x40: 0x0040 # COMMERCIAL AT - 0x41: 0x0041 # LATIN CAPITAL LETTER A - 0x42: 0x0042 # LATIN CAPITAL LETTER B - 0x43: 0x0043 # LATIN CAPITAL LETTER C - 0x44: 0x0044 # LATIN CAPITAL LETTER D - 0x45: 0x0045 # LATIN CAPITAL LETTER E - 0x46: 0x0046 # LATIN CAPITAL LETTER F - 0x47: 0x0047 # LATIN CAPITAL LETTER G - 0x48: 0x0048 # LATIN CAPITAL LETTER H - 0x49: 0x0049 # LATIN CAPITAL LETTER I - 0x4A: 0x004A # LATIN CAPITAL LETTER J - 0x4B: 0x004B # LATIN CAPITAL LETTER K - 0x4C: 0x004C # LATIN CAPITAL LETTER L - 0x4D: 0x004D # LATIN CAPITAL LETTER M - 0x4E: 0x004E # LATIN CAPITAL LETTER N - 0x4F: 0x004F # LATIN CAPITAL LETTER O - 0x50: 0x0050 # LATIN CAPITAL LETTER P - 0x51: 0x0051 # LATIN CAPITAL LETTER Q - 0x52: 0x0052 # LATIN CAPITAL LETTER R - 0x53: 0x0053 # LATIN CAPITAL LETTER S - 0x54: 0x0054 # LATIN CAPITAL LETTER T - 0x55: 0x0055 # LATIN CAPITAL LETTER U - 0x56: 0x0056 # LATIN CAPITAL LETTER V - 0x57: 0x0057 # LATIN CAPITAL LETTER W - 0x58: 0x0058 # LATIN CAPITAL LETTER X - 0x59: 0x0059 # LATIN CAPITAL LETTER Y - 0x5A: 0x005A # LATIN CAPITAL LETTER Z - 0x5B: 0x005B # LEFT SQUARE BRACKET - 0x5C: 0x005C # REVERSE SOLIDUS - 0x5D: 0x005D # RIGHT SQUARE BRACKET - 0x5E: 0x005E # CIRCUMFLEX ACCENT - 0x5F: 0x005F # LOW LINE - 0x60: 0x0060 # GRAVE ACCENT - 0x61: 0x0061 # LATIN SMALL LETTER A - 0x62: 0x0062 # LATIN SMALL LETTER B - 0x63: 0x0063 # LATIN SMALL LETTER C - 0x64: 0x0064 # LATIN SMALL LETTER D - 0x65: 0x0065 # LATIN SMALL LETTER E - 0x66: 0x0066 # LATIN SMALL LETTER F - 0x67: 0x0067 # LATIN SMALL LETTER G - 0x68: 0x0068 # LATIN SMALL LETTER H - 0x69: 0x0069 # LATIN SMALL LETTER I - 0x6A: 0x006A # LATIN SMALL LETTER J - 0x6B: 0x006B # LATIN SMALL LETTER K - 0x6C: 0x006C # LATIN SMALL LETTER L - 0x6D: 0x006D # LATIN SMALL LETTER M - 0x6E: 0x006E # LATIN SMALL LETTER N - 0x6F: 0x006F # LATIN SMALL LETTER O - 0x70: 0x0070 # LATIN SMALL LETTER P - 0x71: 0x0071 # LATIN SMALL LETTER Q - 0x72: 0x0072 # LATIN SMALL LETTER R - 0x73: 0x0073 # LATIN SMALL LETTER S - 0x74: 0x0074 # LATIN SMALL LETTER T - 0x75: 0x0075 # LATIN SMALL LETTER U - 0x76: 0x0076 # LATIN SMALL LETTER V - 0x77: 0x0077 # LATIN SMALL LETTER W - 0x78: 0x0078 # LATIN SMALL LETTER X - 0x79: 0x0079 # LATIN SMALL LETTER Y - 0x7A: 0x007A # LATIN SMALL LETTER Z - 0x7B: 0x007B # LEFT CURLY BRACKET - 0x7C: 0x007C # VERTICAL LINE - 0x7D: 0x007D # RIGHT CURLY BRACKET - 0x7E: 0x007E # TILDE - # - 0x80: 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS - 0x81: 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE - 0x82: 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA - 0x83: 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE - 0x84: 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE - 0x85: 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS - 0x86: 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS - 0x87: 0x00E1 # LATIN SMALL LETTER A WITH ACUTE - 0x88: 0x00E0 # LATIN SMALL LETTER A WITH GRAVE - 0x89: 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX - 0x8A: 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS - 0x8B: 0x00E3 # LATIN SMALL LETTER A WITH TILDE - 0x8C: 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE - 0x8D: 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA - 0x8E: 0x00E9 # LATIN SMALL LETTER E WITH ACUTE - 0x8F: 0x00E8 # LATIN SMALL LETTER E WITH GRAVE - 0x90: 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX - 0x91: 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS - 0x92: 0x00ED # LATIN SMALL LETTER I WITH ACUTE - 0x93: 0x00EC # LATIN SMALL LETTER I WITH GRAVE - 0x94: 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX - 0x95: 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS - 0x96: 0x00F1 # LATIN SMALL LETTER N WITH TILDE - 0x97: 0x00F3 # LATIN SMALL LETTER O WITH ACUTE - 0x98: 0x00F2 # LATIN SMALL LETTER O WITH GRAVE - 0x99: 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX - 0x9A: 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS - 0x9B: 0x00F5 # LATIN SMALL LETTER O WITH TILDE - 0x9C: 0x00FA # LATIN SMALL LETTER U WITH ACUTE - 0x9D: 0x00F9 # LATIN SMALL LETTER U WITH GRAVE - 0x9E: 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX - 0x9F: 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS - 0xA0: 0x2020 # DAGGER - 0xA1: 0x00B0 # DEGREE SIGN - 0xA2: 0x00A2 # CENT SIGN - 0xA3: 0x00A3 # POUND SIGN - 0xA4: 0x00A7 # SECTION SIGN - 0xA5: 0x2022 # BULLET - 0xA6: 0x00B6 # PILCROW SIGN - 0xA7: 0x00DF # LATIN SMALL LETTER SHARP S - 0xA8: 0x00AE # REGISTERED SIGN - 0xA9: 0x00A9 # COPYRIGHT SIGN - 0xAA: 0x2122 # TRADE MARK SIGN - 0xAB: 0x00B4 # ACUTE ACCENT - 0xAC: 0x00A8 # DIAERESIS - 0xAD: 0x2260 # NOT EQUAL TO - 0xAE: 0x00C6 # LATIN CAPITAL LETTER AE - 0xAF: 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE - 0xB0: 0x221E # INFINITY - 0xB1: 0x00B1 # PLUS-MINUS SIGN - 0xB2: 0x2264 # LESS-THAN OR EQUAL TO - 0xB3: 0x2265 # GREATER-THAN OR EQUAL TO - 0xB4: 0x00A5 # YEN SIGN - 0xB5: 0x00B5 # MICRO SIGN - 0xB6: 0x2202 # PARTIAL DIFFERENTIAL - 0xB7: 0x2211 # N-ARY SUMMATION - 0xB8: 0x220F # N-ARY PRODUCT - 0xB9: 0x03C0 # GREEK SMALL LETTER PI - 0xBA: 0x222B # INTEGRAL - 0xBB: 0x00AA # FEMININE ORDINAL INDICATOR - 0xBC: 0x00BA # MASCULINE ORDINAL INDICATOR - 0xBD: 0x03A9 # GREEK CAPITAL LETTER OMEGA - 0xBE: 0x00E6 # LATIN SMALL LETTER AE - 0xBF: 0x00F8 # LATIN SMALL LETTER O WITH STROKE - 0xC0: 0x00BF # INVERTED QUESTION MARK - 0xC1: 0x00A1 # INVERTED EXCLAMATION MARK - 0xC2: 0x00AC # NOT SIGN - 0xC3: 0x221A # SQUARE ROOT - 0xC4: 0x0192 # LATIN SMALL LETTER F WITH HOOK - 0xC5: 0x2248 # ALMOST EQUAL TO - 0xC6: 0x2206 # INCREMENT - 0xC7: 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK - 0xC8: 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - 0xC9: 0x2026 # HORIZONTAL ELLIPSIS - 0xCA: 0x00A0 # NO-BREAK SPACE - 0xCB: 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE - 0xCC: 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE - 0xCD: 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE - 0xCE: 0x0152 # LATIN CAPITAL LIGATURE OE - 0xCF: 0x0153 # LATIN SMALL LIGATURE OE - 0xD0: 0x2013 # EN DASH - 0xD1: 0x2014 # EM DASH - 0xD2: 0x201C # LEFT DOUBLE QUOTATION MARK - 0xD3: 0x201D # RIGHT DOUBLE QUOTATION MARK - 0xD4: 0x2018 # LEFT SINGLE QUOTATION MARK - 0xD5: 0x2019 # RIGHT SINGLE QUOTATION MARK - 0xD6: 0x00F7 # DIVISION SIGN - 0xD7: 0x25CA # LOZENGE - 0xD8: 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS - 0xD9: 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS - 0xDA: 0x2044 # FRACTION SLASH - 0xDB: 0x20AC # EURO SIGN - 0xDC: 0x2039 # SINGLE LEFT-POINTING ANGLE QUOTATION MARK - 0xDD: 0x203A # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK - 0xDE: 0xFB01 # LATIN SMALL LIGATURE FI - 0xDF: 0xFB02 # LATIN SMALL LIGATURE FL - 0xE0: 0x2021 # DOUBLE DAGGER - 0xE1: 0x00B7 # MIDDLE DOT - 0xE2: 0x201A # SINGLE LOW-9 QUOTATION MARK - 0xE3: 0x201E # DOUBLE LOW-9 QUOTATION MARK - 0xE4: 0x2030 # PER MILLE SIGN - 0xE5: 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX - 0xE6: 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX - 0xE7: 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE - 0xE8: 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS - 0xE9: 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE - 0xEA: 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE - 0xEB: 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX - 0xEC: 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS - 0xED: 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE - 0xEE: 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE - 0xEF: 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX - 0xF0: 0xF8FF # Apple logo - 0xF1: 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE - 0xF2: 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE - 0xF3: 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX - 0xF4: 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE - 0xF5: 0x0131 # LATIN SMALL LETTER DOTLESS I - 0xF6: 0x02C6 # MODIFIER LETTER CIRCUMFLEX ACCENT - 0xF7: 0x02DC # SMALL TILDE - 0xF8: 0x00AF # MACRON - 0xF9: 0x02D8 # BREVE - 0xFA: 0x02D9 # DOT ABOVE - 0xFB: 0x02DA # RING ABOVE - 0xFC: 0x00B8 # CEDILLA - 0xFD: 0x02DD # DOUBLE ACUTE ACCENT - 0xFE: 0x02DB # OGONEK - 0xFF: 0x02C7 # CARON - -exports.FROM_UNICODE = require('./utils').invert(exports.TO_UNICODE) \ No newline at end of file diff --git a/lib/font/subset.coffee b/lib/font/subset.coffee index cec4478..f3d3627 100644 --- a/lib/font/subset.coffee +++ b/lib/font/subset.coffee @@ -1,30 +1,37 @@ CmapTable = require './tables/cmap' -MacRoman = require './macroman' utils = require './utils' class Subset constructor: (@font) -> @subset = {} + @unicodes = {} + @next = 33 # PDFs don't like character codes between 0 and 32 use: (character) -> # if given a string, add each character if typeof character is 'string' for i in [0...character.length] @use character.charCodeAt(i) - else - @subset[MacRoman.FROM_UNICODE[character]] = character + + return + + if not @unicodes[character] + @subset[@next] = character + @unicodes[character] = @next++ encodeText: (text) -> + # encodes UTF-8 text for this subset. Returned + # text may not look correct, but it is. string = '' for i in [0...text.length] - char = MacRoman.FROM_UNICODE[text.charCodeAt(i)] + char = @unicodes[text.charCodeAt(i)] string += String.fromCharCode(char) return string cmap: -> # generate the cmap table for this subset - unicodeCmap = @font.cmap.unicode.codeMap + unicodeCmap = @font.cmap.tables[0].codeMap mapping = {} for roman, unicode of @subset mapping[roman] = unicodeCmap[unicode] @@ -33,7 +40,7 @@ class Subset glyphIDs: -> # collect glyph ids for this subset - unicodeCmap = @font.cmap.unicode.codeMap + unicodeCmap = @font.cmap.tables[0].codeMap ret = [0] for roman, unicode of @subset val = unicodeCmap[unicode] @@ -60,7 +67,7 @@ class Subset encode: -> # generate the Cmap for this subset - cmap = CmapTable.encode @cmap() + cmap = CmapTable.encode @cmap(), 'unicode' glyphs = @glyphsFor @glyphIDs() # compute old2new and new2old mapping tables @@ -82,9 +89,10 @@ class Subset name = @font.name.encode() # store for use later - @cmap = cmap.indexes @postscriptName = name.postscriptName - @charWidths = (@font.hmtx.forGlyph(id).advance for id in oldIDs) + @cmap = {} + for code, ids of cmap.charMap + @cmap[code] = ids.old tables = cmap: cmap.table diff --git a/lib/font/tables/cmap.coffee b/lib/font/tables/cmap.coffee index 06e401c..1d0aa12 100644 --- a/lib/font/tables/cmap.coffee +++ b/lib/font/tables/cmap.coffee @@ -17,7 +17,7 @@ class CmapTable extends Table return true - @encode: (charmap, encoding = 0) -> + @encode: (charmap, encoding = 'macroman') -> result = CmapEntry.encode(charmap, encoding) table = new Data @@ -73,16 +73,18 @@ class CmapEntry @codeMap[code] = glyphId & 0xFFFF - @encode: (charmap, format) -> + @encode: (charmap, encoding) -> subtable = new Data - switch format - when 0 # Mac Roman + codes = Object.keys(charmap).sort (a, b) -> a - b + + switch encoding + when 'macroman' id = 0 indexes = (0 for i in [0...256]) map = { 0: 0 } codeMap = {} - for code in Object.keys(charmap).sort() + for code in codes map[charmap[code]] ?= ++id codeMap[code] = old: charmap[code] @@ -100,11 +102,88 @@ class CmapEntry result = charMap: codeMap - indexes: indexes subtable: subtable.data maxGlyphID: id + 1 - when 4 # Unicode - TODO: implement - return + when 'unicode' + startCodes = [] + endCodes = [] + nextID = 0 + map = {} + charMap = {} + last = diff = null + + for code in codes + old = charmap[code] + map[old] ?= ++nextID + charMap[code] = + old: old + new: map[old] + + delta = map[old] - code + if not last? or delta isnt diff + endCodes.push last if last + startCodes.push code + diff = delta + + last = code + + endCodes.push last if last + endCodes.push 0xFFFF + startCodes.push 0xFFFF + + segCount = startCodes.length + segCountX2 = segCount * 2 + searchRange = 2 * Math.pow(Math.log(segCount) / Math.LN2, 2) + entrySelector = Math.log(searchRange / 2) / Math.LN2 + rangeShift = 2 * segCount - searchRange + + deltas = [] + rangeOffsets = [] + glyphIDs = [] + + for startCode, i in startCodes + endCode = endCodes[i] + + if startCode is 0xFFFF + deltas.push 0 + rangeOffsets.push 0 + break + + startGlyph = charMap[startCode].new + if startCode - startGlyph >= 0x8000 + deltas.push 0 + rangeOffsets.push 2 * (glyphIDs.length + segCount - i) + + for code in [startCode..endCode] + glyphIDs.push charMap[code].new + + else + deltas.push startGlyph - startCode + rangeOffsets.push 0 + + subtable.writeUInt16 3 # platformID + subtable.writeUInt16 1 # encodingID + subtable.writeUInt32 12 # offset + subtable.writeUInt16 4 # format + subtable.writeUInt16 16 + segCount * 8 + glyphIDs.length * 2 # length + subtable.writeUInt16 0 # language + subtable.writeUInt16 segCountX2 + subtable.writeUInt16 searchRange + subtable.writeUInt16 entrySelector + subtable.writeUInt16 rangeShift + + subtable.writeUInt16 code for code in endCodes + subtable.writeUInt16 0 # reserved value + subtable.writeUInt16 code for code in startCodes + + subtable.writeUInt16 delta for delta in deltas + subtable.writeUInt16 offset for offset in rangeOffsets + subtable.writeUInt16 id for id in glyphIDs + + result = + charMap: charMap + subtable: subtable.data + maxGlyphID: nextID + 1 module.exports = CmapTable \ No newline at end of file