Add and fix pdfkit_compressed.pdf
This commit is contained in:
parent
83860bf281
commit
38e3f32557
30
src/fonts.js
30
src/fonts.js
@ -1881,6 +1881,7 @@ var Font = (function FontClosure() {
|
|||||||
var unusedUnicode = kCmapGlyphOffset;
|
var unusedUnicode = kCmapGlyphOffset;
|
||||||
var glyphNames = properties.glyphNames || [];
|
var glyphNames = properties.glyphNames || [];
|
||||||
var encoding = properties.baseEncoding;
|
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;
|
||||||
@ -1945,35 +1946,51 @@ var Font = (function FontClosure() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.useToFontChar = true;
|
this.useToFontChar = true;
|
||||||
} else if (!this.isSymbolicFont &&
|
} else if (!this.isSymbolicFont && (this.hasEncoding ||
|
||||||
(this.hasEncoding || properties.glyphNames)) {
|
properties.glyphNames || differences.length > 0)) {
|
||||||
// Re-encode cmap encoding to unicode, based on the 'post' table data
|
// Re-encode cmap encoding to unicode, based on the 'post' table data
|
||||||
// or base encoding
|
// diffrence array or base encoding
|
||||||
var reverseMap = [];
|
var reverseMap = [];
|
||||||
for (var i = 0, ii = glyphs.length; i < ii; i++)
|
for (var i = 0, ii = glyphs.length; i < ii; i++)
|
||||||
reverseMap[glyphs[i].unicode] = i;
|
reverseMap[glyphs[i].unicode] = i;
|
||||||
|
|
||||||
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 changeCode = false;
|
||||||
var gid = ids[i];
|
var gid = ids[i];
|
||||||
|
|
||||||
var glyphName = glyphNames[gid] || encoding[code];
|
var glyphName = glyphNames[gid];
|
||||||
|
if (!glyphName) {
|
||||||
|
glyphName = differences[code] || encoding[code];
|
||||||
|
changeCode = true;
|
||||||
|
}
|
||||||
if (glyphName in GlyphsUnicode) {
|
if (glyphName in GlyphsUnicode) {
|
||||||
var unicode = GlyphsUnicode[glyphName];
|
var unicode = GlyphsUnicode[glyphName];
|
||||||
if (!unicode || reverseMap[unicode] === i)
|
if (!unicode || reverseMap[unicode] === i)
|
||||||
continue; // unknown glyph name or in its own place
|
continue; // unknown glyph name or in its own place
|
||||||
|
|
||||||
var destination = reverseMap[unicode];
|
var destination = reverseMap[unicode];
|
||||||
|
if (typeof destination === 'number' && destination > i)
|
||||||
|
continue;
|
||||||
|
|
||||||
var j = i;
|
var j = i;
|
||||||
// Flipping unicodes while next destination unicode has assigned
|
// Flipping unicodes while next destination unicode has assigned
|
||||||
// glyph and future glyph can be assigned to unicode.
|
// glyph and future glyph can be assigned to unicode.
|
||||||
while (typeof destination === 'number') {
|
while (typeof destination === 'number') {
|
||||||
glyphs[j].unicode = unicode;
|
glyphs[j].unicode = unicode;
|
||||||
reverseMap[unicode] = j;
|
reverseMap[unicode] = j;
|
||||||
|
if (changeCode) {
|
||||||
|
toFontChar[code] = unicode;
|
||||||
|
changeCode = false;
|
||||||
|
}
|
||||||
|
|
||||||
code = glyphs[destination].unicode;
|
code = glyphs[destination].unicode;
|
||||||
gid = ids[destination];
|
gid = ids[destination];
|
||||||
glyphName = glyphNames[gid] || encoding[code];
|
glyphName = glyphNames[gid];
|
||||||
|
if (!glyphName) {
|
||||||
|
glyphName = differences[code] || encoding[code];
|
||||||
|
changeCode = true;
|
||||||
|
}
|
||||||
|
|
||||||
unicode = GlyphsUnicode[glyphName];
|
unicode = GlyphsUnicode[glyphName];
|
||||||
if (!unicode || reverseMap[unicode] === j) {
|
if (!unicode || reverseMap[unicode] === j) {
|
||||||
@ -1994,7 +2011,10 @@ var Font = (function FontClosure() {
|
|||||||
|
|
||||||
glyphs[j].unicode = unicode;
|
glyphs[j].unicode = unicode;
|
||||||
reverseMap[unicode] = j;
|
reverseMap[unicode] = j;
|
||||||
|
if (changeCode)
|
||||||
|
toFontChar[code] = unicode;
|
||||||
}
|
}
|
||||||
|
this.useToFontChar = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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…
Reference in New Issue
Block a user