mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-29 07:37:57 +02:00
Improve handling of mismatching /BaseFont and /FontName entries for non-embedded fonts (issue 7454)
This patch is the result of me going through some old issues regarding non-embedded Wingdings support. There's a few different things wrong in the referenced PDF document: - The /BaseFont and /FontName entries don't agree on the name of the fonts, with one font using `/BaseFont /Wingdings-Regular` and `/FontName /wg09np` which obviously makes no sense. To address this we'll compare the font-names against our lists of known ones and ignore /FontName entries that don't make sense iff the /BaseFont entry is a known font-name. - The non-embedded Wingdings font also set an incorrect /Encoding, in this case /MacRomanEncoding, which should have been fixed by PR 16465. However this doesn't work since the font has *bogus* font-flags, that fail to categorize the font as Symbolic. To address this we'll also compare the font-name against the list of known symbol fonts.
This commit is contained in:
parent
0023c4a511
commit
459d26edec
5 changed files with 45 additions and 20 deletions
|
@ -309,6 +309,9 @@ const getSymbolsFonts = getLookupTableFactory(function (t) {
|
|||
t.Dingbats = true;
|
||||
t.Symbol = true;
|
||||
t.ZapfDingbats = true;
|
||||
t.Wingdings = true;
|
||||
t["Wingdings-Bold"] = true;
|
||||
t["Wingdings-Regular"] = true;
|
||||
});
|
||||
|
||||
// Glyph map for well-known standard fonts. Sometimes Ghostscript uses CID
|
||||
|
@ -888,6 +891,16 @@ function getStandardFontName(name) {
|
|||
return stdFontMap[fontName];
|
||||
}
|
||||
|
||||
function isKnownFontName(name) {
|
||||
const fontName = normalizeFontName(name);
|
||||
return !!(
|
||||
getStdFontMap()[fontName] ||
|
||||
getNonStdFontMap()[fontName] ||
|
||||
getSerifFonts()[fontName] ||
|
||||
getSymbolsFonts()[fontName]
|
||||
);
|
||||
}
|
||||
|
||||
export {
|
||||
getFontNameToFileMap,
|
||||
getGlyphMapForStandardFonts,
|
||||
|
@ -898,4 +911,5 @@ export {
|
|||
getSupplementalGlyphMapForArialBlack,
|
||||
getSupplementalGlyphMapForCalibri,
|
||||
getSymbolsFonts,
|
||||
isKnownFontName,
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue