mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-22 16:18:08 +02:00
For Type1 fonts, replace missing font dictionary /Widths entries with ones from the font data (issue 11150)
Hopefully this patch makes sense, and in order to reduce the regression risk the implementation ensures that only completely missing widths are being replaced.
This commit is contained in:
parent
d7c7f15551
commit
af22dc9b0c
6 changed files with 21 additions and 3 deletions
|
@ -3200,7 +3200,7 @@ var Type1Font = (function Type1FontClosure() {
|
|||
var eexecBlock = getEexecBlock(file, eexecBlockLength);
|
||||
var eexecBlockParser = new Type1Parser(eexecBlock.stream, true,
|
||||
SEAC_ANALYSIS_ENABLED);
|
||||
var data = eexecBlockParser.extractFontProgram();
|
||||
var data = eexecBlockParser.extractFontProgram(properties);
|
||||
for (var info in data.properties) {
|
||||
properties[info] = data.properties[info];
|
||||
}
|
||||
|
|
|
@ -520,7 +520,7 @@ var Type1Parser = (function Type1ParserClosure() {
|
|||
* Returns an object containing a Subrs array and a CharStrings
|
||||
* array extracted from and eexec encrypted block of data
|
||||
*/
|
||||
extractFontProgram: function Type1Parser_extractFontProgram() {
|
||||
extractFontProgram: function Type1Parser_extractFontProgram(properties) {
|
||||
var stream = this.stream;
|
||||
|
||||
var subrs = [], charstrings = [];
|
||||
|
@ -646,6 +646,16 @@ var Type1Parser = (function Type1ParserClosure() {
|
|||
lsb: charString.lsb,
|
||||
seac: charString.seac,
|
||||
});
|
||||
|
||||
// Attempt to replace missing widths, from the font dictionary /Widths
|
||||
// entry, with ones from the font data (fixes issue11150_reduced.pdf).
|
||||
if (properties.builtInEncoding) {
|
||||
const index = properties.builtInEncoding.indexOf(glyph);
|
||||
if (index > -1 && properties.widths[index] === undefined &&
|
||||
index >= properties.firstChar && index <= properties.lastChar) {
|
||||
properties.widths[index] = charString.width;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return program;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue