Merge pull request #1290 from notmasteryet/tree-84
Re-encodes cmap based on post table or current encoding; ...
This commit is contained in:
commit
6c24a75340
38
src/fonts.js
38
src/fonts.js
@ -1878,6 +1878,10 @@ var Font = (function FontClosure() {
|
|||||||
ids[i] = i;
|
ids[i] = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var unusedUnicode = kCmapGlyphOffset;
|
||||||
|
var glyphNames = properties.glyphNames || [];
|
||||||
|
var encoding = properties.baseEncoding;
|
||||||
|
var differences = properties.differences;
|
||||||
if (toFontChar && toFontChar.length > 0) {
|
if (toFontChar && toFontChar.length > 0) {
|
||||||
// checking if cmap is just identity map
|
// checking if cmap is just identity map
|
||||||
var isIdentity = true;
|
var isIdentity = true;
|
||||||
@ -1900,7 +1904,6 @@ var Font = (function FontClosure() {
|
|||||||
glyphs[i].unicode = unicode;
|
glyphs[i].unicode = unicode;
|
||||||
usedUnicodes[unicode] = true;
|
usedUnicodes[unicode] = true;
|
||||||
}
|
}
|
||||||
var unusedUnicode = kCmapGlyphOffset;
|
|
||||||
for (var j = 0, jj = unassignedUnicodeItems.length; j < jj; j++) {
|
for (var j = 0, jj = unassignedUnicodeItems.length; j < jj; j++) {
|
||||||
var i = unassignedUnicodeItems[j];
|
var i = unassignedUnicodeItems[j];
|
||||||
while (unusedUnicode in usedUnicodes)
|
while (unusedUnicode in usedUnicodes)
|
||||||
@ -1921,14 +1924,13 @@ var Font = (function FontClosure() {
|
|||||||
// copying all characters to private use area, all mapping all known
|
// copying all characters to private use area, all mapping all known
|
||||||
// glyphs to the unicodes. The glyphs and ids arrays will grow.
|
// glyphs to the unicodes. The glyphs and ids arrays will grow.
|
||||||
var usedUnicodes = [];
|
var usedUnicodes = [];
|
||||||
var glyphNames = properties.glyphNames || [];
|
|
||||||
for (var i = 0, ii = glyphs.length; i < ii; i++) {
|
for (var i = 0, ii = glyphs.length; i < ii; i++) {
|
||||||
var code = glyphs[i].unicode;
|
var code = glyphs[i].unicode;
|
||||||
var gid = ids[i];
|
var gid = ids[i];
|
||||||
glyphs[i].unicode += kCmapGlyphOffset;
|
glyphs[i].unicode += kCmapGlyphOffset;
|
||||||
toFontChar[code] = glyphs[i].unicode;
|
toFontChar[code] = glyphs[i].unicode;
|
||||||
|
|
||||||
var glyphName = glyphNames[gid] || properties.baseEncoding[code];
|
var glyphName = glyphNames[gid] || encoding[code];
|
||||||
if (glyphName in GlyphsUnicode) {
|
if (glyphName in GlyphsUnicode) {
|
||||||
var unicode = GlyphsUnicode[glyphName];
|
var unicode = GlyphsUnicode[glyphName];
|
||||||
if (unicode in usedUnicodes)
|
if (unicode in usedUnicodes)
|
||||||
@ -1944,6 +1946,36 @@ var Font = (function FontClosure() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.useToFontChar = true;
|
this.useToFontChar = true;
|
||||||
|
} else if (!this.isSymbolicFont && (this.hasEncoding ||
|
||||||
|
properties.glyphNames || differences.length > 0)) {
|
||||||
|
// Re-encode cmap encoding to unicode, based on the 'post' table data
|
||||||
|
// diffrence array or base encoding
|
||||||
|
var reverseMap = [];
|
||||||
|
for (var i = 0, ii = glyphs.length; i < ii; i++)
|
||||||
|
reverseMap[glyphs[i].unicode] = i;
|
||||||
|
|
||||||
|
for (var i = 0, ii = glyphs.length; i < ii; i++) {
|
||||||
|
var code = glyphs[i].unicode;
|
||||||
|
var changeCode = false;
|
||||||
|
var gid = ids[i];
|
||||||
|
|
||||||
|
var glyphName = glyphNames[gid];
|
||||||
|
if (!glyphName) {
|
||||||
|
glyphName = differences[code] || encoding[code];
|
||||||
|
changeCode = true;
|
||||||
|
}
|
||||||
|
if (glyphName in GlyphsUnicode) {
|
||||||
|
var unicode = GlyphsUnicode[glyphName];
|
||||||
|
if (!unicode || (unicode in reverseMap))
|
||||||
|
continue; // unknown glyph name or its place is taken
|
||||||
|
|
||||||
|
glyphs[i].unicode = unicode;
|
||||||
|
reverseMap[unicode] = i;
|
||||||
|
if (changeCode)
|
||||||
|
toFontChar[code] = unicode;
|
||||||
|
}
|
||||||
|
this.useToFontChar = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Moving all symbolic font glyphs into 0xF000 - 0xF0FF range.
|
// Moving all symbolic font glyphs into 0xF000 - 0xF0FF range.
|
||||||
|
@ -1508,27 +1508,7 @@ var GlyphsUnicode = {
|
|||||||
dalet: 0x05D3,
|
dalet: 0x05D3,
|
||||||
daletdagesh: 0xFB33,
|
daletdagesh: 0xFB33,
|
||||||
daletdageshhebrew: 0xFB33,
|
daletdageshhebrew: 0xFB33,
|
||||||
dalethatafpatah: 0x05D305B2,
|
|
||||||
dalethatafpatahhebrew: 0x05D305B2,
|
|
||||||
dalethatafsegol: 0x05D305B1,
|
|
||||||
dalethatafsegolhebrew: 0x05D305B1,
|
|
||||||
dalethebrew: 0x05D3,
|
dalethebrew: 0x05D3,
|
||||||
dalethiriq: 0x05D305B4,
|
|
||||||
dalethiriqhebrew: 0x05D305B4,
|
|
||||||
daletholam: 0x05D305B9,
|
|
||||||
daletholamhebrew: 0x05D305B9,
|
|
||||||
daletpatah: 0x05D305B7,
|
|
||||||
daletpatahhebrew: 0x05D305B7,
|
|
||||||
daletqamats: 0x05D305B8,
|
|
||||||
daletqamatshebrew: 0x05D305B8,
|
|
||||||
daletqubuts: 0x05D305BB,
|
|
||||||
daletqubutshebrew: 0x05D305BB,
|
|
||||||
daletsegol: 0x05D305B6,
|
|
||||||
daletsegolhebrew: 0x05D305B6,
|
|
||||||
daletsheva: 0x05D305B0,
|
|
||||||
daletshevahebrew: 0x05D305B0,
|
|
||||||
dalettsere: 0x05D305B5,
|
|
||||||
dalettserehebrew: 0x05D305B5,
|
|
||||||
dalfinalarabic: 0xFEAA,
|
dalfinalarabic: 0xFEAA,
|
||||||
dammaarabic: 0x064F,
|
dammaarabic: 0x064F,
|
||||||
dammalowarabic: 0x064F,
|
dammalowarabic: 0x064F,
|
||||||
@ -1845,10 +1825,6 @@ var GlyphsUnicode = {
|
|||||||
finalkafdagesh: 0xFB3A,
|
finalkafdagesh: 0xFB3A,
|
||||||
finalkafdageshhebrew: 0xFB3A,
|
finalkafdageshhebrew: 0xFB3A,
|
||||||
finalkafhebrew: 0x05DA,
|
finalkafhebrew: 0x05DA,
|
||||||
finalkafqamats: 0x05DA05B8,
|
|
||||||
finalkafqamatshebrew: 0x05DA05B8,
|
|
||||||
finalkafsheva: 0x05DA05B0,
|
|
||||||
finalkafshevahebrew: 0x05DA05B0,
|
|
||||||
finalmem: 0x05DD,
|
finalmem: 0x05DD,
|
||||||
finalmemhebrew: 0x05DD,
|
finalmemhebrew: 0x05DD,
|
||||||
finalnun: 0x05DF,
|
finalnun: 0x05DF,
|
||||||
@ -2037,14 +2013,7 @@ var GlyphsUnicode = {
|
|||||||
hakatakanahalfwidth: 0xFF8A,
|
hakatakanahalfwidth: 0xFF8A,
|
||||||
halantgurmukhi: 0x0A4D,
|
halantgurmukhi: 0x0A4D,
|
||||||
hamzaarabic: 0x0621,
|
hamzaarabic: 0x0621,
|
||||||
hamzadammaarabic: 0x0621064F,
|
|
||||||
hamzadammatanarabic: 0x0621064C,
|
|
||||||
hamzafathaarabic: 0x0621064E,
|
|
||||||
hamzafathatanarabic: 0x0621064B,
|
|
||||||
hamzalowarabic: 0x0621,
|
hamzalowarabic: 0x0621,
|
||||||
hamzalowkasraarabic: 0x06210650,
|
|
||||||
hamzalowkasratanarabic: 0x0621064D,
|
|
||||||
hamzasukunarabic: 0x06210652,
|
|
||||||
hangulfiller: 0x3164,
|
hangulfiller: 0x3164,
|
||||||
hardsigncyrillic: 0x044A,
|
hardsigncyrillic: 0x044A,
|
||||||
harpoonleftbarbup: 0x21BC,
|
harpoonleftbarbup: 0x21BC,
|
||||||
@ -2476,10 +2445,6 @@ var GlyphsUnicode = {
|
|||||||
lameddagesh: 0xFB3C,
|
lameddagesh: 0xFB3C,
|
||||||
lameddageshhebrew: 0xFB3C,
|
lameddageshhebrew: 0xFB3C,
|
||||||
lamedhebrew: 0x05DC,
|
lamedhebrew: 0x05DC,
|
||||||
lamedholam: 0x05DC05B9,
|
|
||||||
lamedholamdagesh: '05DC 05B9 05BC',
|
|
||||||
lamedholamdageshhebrew: '05DC 05B9 05BC',
|
|
||||||
lamedholamhebrew: 0x05DC05B9,
|
|
||||||
lamfinalarabic: 0xFEDE,
|
lamfinalarabic: 0xFEDE,
|
||||||
lamhahinitialarabic: 0xFCCA,
|
lamhahinitialarabic: 0xFCCA,
|
||||||
laminitialarabic: 0xFEDF,
|
laminitialarabic: 0xFEDF,
|
||||||
@ -2489,8 +2454,6 @@ var GlyphsUnicode = {
|
|||||||
lammedialarabic: 0xFEE0,
|
lammedialarabic: 0xFEE0,
|
||||||
lammeemhahinitialarabic: 0xFD88,
|
lammeemhahinitialarabic: 0xFD88,
|
||||||
lammeeminitialarabic: 0xFCCC,
|
lammeeminitialarabic: 0xFCCC,
|
||||||
lammeemjeeminitialarabic: 'FEDF FEE4 FEA0',
|
|
||||||
lammeemkhahinitialarabic: 'FEDF FEE4 FEA8',
|
|
||||||
largecircle: 0x25EF,
|
largecircle: 0x25EF,
|
||||||
lbar: 0x019A,
|
lbar: 0x019A,
|
||||||
lbelt: 0x026C,
|
lbelt: 0x026C,
|
||||||
@ -2787,7 +2750,6 @@ var GlyphsUnicode = {
|
|||||||
noonfinalarabic: 0xFEE6,
|
noonfinalarabic: 0xFEE6,
|
||||||
noonghunnaarabic: 0x06BA,
|
noonghunnaarabic: 0x06BA,
|
||||||
noonghunnafinalarabic: 0xFB9F,
|
noonghunnafinalarabic: 0xFB9F,
|
||||||
noonhehinitialarabic: 0xFEE7FEEC,
|
|
||||||
nooninitialarabic: 0xFEE7,
|
nooninitialarabic: 0xFEE7,
|
||||||
noonjeeminitialarabic: 0xFCD2,
|
noonjeeminitialarabic: 0xFCD2,
|
||||||
noonjeemisolatedarabic: 0xFC4B,
|
noonjeemisolatedarabic: 0xFC4B,
|
||||||
@ -3159,27 +3121,7 @@ var GlyphsUnicode = {
|
|||||||
qof: 0x05E7,
|
qof: 0x05E7,
|
||||||
qofdagesh: 0xFB47,
|
qofdagesh: 0xFB47,
|
||||||
qofdageshhebrew: 0xFB47,
|
qofdageshhebrew: 0xFB47,
|
||||||
qofhatafpatah: 0x05E705B2,
|
|
||||||
qofhatafpatahhebrew: 0x05E705B2,
|
|
||||||
qofhatafsegol: 0x05E705B1,
|
|
||||||
qofhatafsegolhebrew: 0x05E705B1,
|
|
||||||
qofhebrew: 0x05E7,
|
qofhebrew: 0x05E7,
|
||||||
qofhiriq: 0x05E705B4,
|
|
||||||
qofhiriqhebrew: 0x05E705B4,
|
|
||||||
qofholam: 0x05E705B9,
|
|
||||||
qofholamhebrew: 0x05E705B9,
|
|
||||||
qofpatah: 0x05E705B7,
|
|
||||||
qofpatahhebrew: 0x05E705B7,
|
|
||||||
qofqamats: 0x05E705B8,
|
|
||||||
qofqamatshebrew: 0x05E705B8,
|
|
||||||
qofqubuts: 0x05E705BB,
|
|
||||||
qofqubutshebrew: 0x05E705BB,
|
|
||||||
qofsegol: 0x05E705B6,
|
|
||||||
qofsegolhebrew: 0x05E705B6,
|
|
||||||
qofsheva: 0x05E705B0,
|
|
||||||
qofshevahebrew: 0x05E705B0,
|
|
||||||
qoftsere: 0x05E705B5,
|
|
||||||
qoftserehebrew: 0x05E705B5,
|
|
||||||
qparen: 0x24AC,
|
qparen: 0x24AC,
|
||||||
quarternote: 0x2669,
|
quarternote: 0x2669,
|
||||||
qubuts: 0x05BB,
|
qubuts: 0x05BB,
|
||||||
@ -3253,32 +3195,11 @@ var GlyphsUnicode = {
|
|||||||
reharmenian: 0x0580,
|
reharmenian: 0x0580,
|
||||||
rehfinalarabic: 0xFEAE,
|
rehfinalarabic: 0xFEAE,
|
||||||
rehiragana: 0x308C,
|
rehiragana: 0x308C,
|
||||||
rehyehaleflamarabic: '0631 FEF3 FE8E 0644',
|
|
||||||
rekatakana: 0x30EC,
|
rekatakana: 0x30EC,
|
||||||
rekatakanahalfwidth: 0xFF9A,
|
rekatakanahalfwidth: 0xFF9A,
|
||||||
resh: 0x05E8,
|
resh: 0x05E8,
|
||||||
reshdageshhebrew: 0xFB48,
|
reshdageshhebrew: 0xFB48,
|
||||||
reshhatafpatah: 0x05E805B2,
|
|
||||||
reshhatafpatahhebrew: 0x05E805B2,
|
|
||||||
reshhatafsegol: 0x05E805B1,
|
|
||||||
reshhatafsegolhebrew: 0x05E805B1,
|
|
||||||
reshhebrew: 0x05E8,
|
reshhebrew: 0x05E8,
|
||||||
reshhiriq: 0x05E805B4,
|
|
||||||
reshhiriqhebrew: 0x05E805B4,
|
|
||||||
reshholam: 0x05E805B9,
|
|
||||||
reshholamhebrew: 0x05E805B9,
|
|
||||||
reshpatah: 0x05E805B7,
|
|
||||||
reshpatahhebrew: 0x05E805B7,
|
|
||||||
reshqamats: 0x05E805B8,
|
|
||||||
reshqamatshebrew: 0x05E805B8,
|
|
||||||
reshqubuts: 0x05E805BB,
|
|
||||||
reshqubutshebrew: 0x05E805BB,
|
|
||||||
reshsegol: 0x05E805B6,
|
|
||||||
reshsegolhebrew: 0x05E805B6,
|
|
||||||
reshsheva: 0x05E805B0,
|
|
||||||
reshshevahebrew: 0x05E805B0,
|
|
||||||
reshtsere: 0x05E805B5,
|
|
||||||
reshtserehebrew: 0x05E805B5,
|
|
||||||
reversedtilde: 0x223D,
|
reversedtilde: 0x223D,
|
||||||
reviahebrew: 0x0597,
|
reviahebrew: 0x0597,
|
||||||
reviamugrashhebrew: 0x0597,
|
reviamugrashhebrew: 0x0597,
|
||||||
@ -3477,7 +3398,6 @@ var GlyphsUnicode = {
|
|||||||
shaddadammaarabic: 0xFC61,
|
shaddadammaarabic: 0xFC61,
|
||||||
shaddadammatanarabic: 0xFC5E,
|
shaddadammatanarabic: 0xFC5E,
|
||||||
shaddafathaarabic: 0xFC60,
|
shaddafathaarabic: 0xFC60,
|
||||||
shaddafathatanarabic: 0x0651064B,
|
|
||||||
shaddakasraarabic: 0xFC62,
|
shaddakasraarabic: 0xFC62,
|
||||||
shaddakasratanarabic: 0xFC5F,
|
shaddakasratanarabic: 0xFC5F,
|
||||||
shade: 0x2592,
|
shade: 0x2592,
|
||||||
@ -3674,7 +3594,6 @@ var GlyphsUnicode = {
|
|||||||
tchehfinalarabic: 0xFB7B,
|
tchehfinalarabic: 0xFB7B,
|
||||||
tchehinitialarabic: 0xFB7C,
|
tchehinitialarabic: 0xFB7C,
|
||||||
tchehmedialarabic: 0xFB7D,
|
tchehmedialarabic: 0xFB7D,
|
||||||
tchehmeeminitialarabic: 0xFB7CFEE4,
|
|
||||||
tcircle: 0x24E3,
|
tcircle: 0x24E3,
|
||||||
tcircumflexbelow: 0x1E71,
|
tcircumflexbelow: 0x1E71,
|
||||||
tcommaaccent: 0x0163,
|
tcommaaccent: 0x0163,
|
||||||
|
1
test/pdfs/.gitignore
vendored
1
test/pdfs/.gitignore
vendored
@ -19,6 +19,7 @@
|
|||||||
!issue840.pdf
|
!issue840.pdf
|
||||||
!scan-bad.pdf
|
!scan-bad.pdf
|
||||||
!freeculture.pdf
|
!freeculture.pdf
|
||||||
|
!pdfkit_compressed.pdf
|
||||||
!issue918.pdf
|
!issue918.pdf
|
||||||
!issue1249.pdf
|
!issue1249.pdf
|
||||||
!smaskdim.pdf
|
!smaskdim.pdf
|
||||||
|
BIN
test/pdfs/pdfkit_compressed.pdf
Normal file
BIN
test/pdfs/pdfkit_compressed.pdf
Normal file
Binary file not shown.
@ -466,6 +466,12 @@
|
|||||||
"link": true,
|
"link": true,
|
||||||
"type": "eq"
|
"type": "eq"
|
||||||
},
|
},
|
||||||
|
{ "id": "pdfkit_compressed",
|
||||||
|
"file": "pdfs/pdfkit_compressed.pdf",
|
||||||
|
"md5": "ffe9c571d0a1572e234253e6c7cdee6c",
|
||||||
|
"rounds": 1,
|
||||||
|
"type": "eq"
|
||||||
|
},
|
||||||
{ "id": "issue925",
|
{ "id": "issue925",
|
||||||
"file": "pdfs/issue925.pdf",
|
"file": "pdfs/issue925.pdf",
|
||||||
"md5": "f58fe943090aff89dcc8e771bc0db4c2",
|
"md5": "f58fe943090aff89dcc8e771bc0db4c2",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user