mirror of
https://github.com/zen-browser/pdf.js.git
synced 2025-07-08 09:20:06 +02:00
Use vertical variant of a char when it's in a missing vertical font (bug 1905623)
This commit is contained in:
parent
ccad2f889a
commit
832fc93aa4
4 changed files with 59 additions and 0 deletions
|
@ -26,6 +26,7 @@ import {
|
||||||
import { CFFCompiler, CFFParser } from "./cff_parser.js";
|
import { CFFCompiler, CFFParser } from "./cff_parser.js";
|
||||||
import {
|
import {
|
||||||
FontFlags,
|
FontFlags,
|
||||||
|
getVerticalPresentationForm,
|
||||||
MacStandardGlyphOrdering,
|
MacStandardGlyphOrdering,
|
||||||
normalizeFontName,
|
normalizeFontName,
|
||||||
recoverGlyphName,
|
recoverGlyphName,
|
||||||
|
@ -3366,6 +3367,13 @@ class Font {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.missingFile && this.vertical && fontChar.length === 1) {
|
||||||
|
const vertical = getVerticalPresentationForm()[fontChar.charCodeAt(0)];
|
||||||
|
if (vertical) {
|
||||||
|
fontChar = unicode = String.fromCharCode(vertical);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
glyph = new Glyph(
|
glyph = new Glyph(
|
||||||
charcode,
|
charcode,
|
||||||
fontChar,
|
fontChar,
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
|
|
||||||
import { getEncoding, StandardEncoding } from "./encodings.js";
|
import { getEncoding, StandardEncoding } from "./encodings.js";
|
||||||
import { getGlyphsUnicode } from "./glyphlist.js";
|
import { getGlyphsUnicode } from "./glyphlist.js";
|
||||||
|
import { getLookupTableFactory } from "./core_utils.js";
|
||||||
import { getUnicodeForGlyph } from "./unicode.js";
|
import { getUnicodeForGlyph } from "./unicode.js";
|
||||||
import { info } from "../shared/util.js";
|
import { info } from "../shared/util.js";
|
||||||
|
|
||||||
|
@ -168,8 +169,47 @@ function normalizeFontName(name) {
|
||||||
return name.replaceAll(/[,_]/g, "-").replaceAll(/\s/g, "");
|
return name.replaceAll(/[,_]/g, "-").replaceAll(/\s/g, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const getVerticalPresentationForm = getLookupTableFactory(t => {
|
||||||
|
// This table has been found at
|
||||||
|
// https://searchfox.org/mozilla-central/rev/cbdfa503a87597b20719aae5f6a1efccd6cb3b7b/gfx/thebes/gfxHarfBuzzShaper.cpp#251-294
|
||||||
|
t[0x2013] = 0xfe32; // EN DASH
|
||||||
|
t[0x2014] = 0xfe31; // EM DASH
|
||||||
|
t[0x2025] = 0xfe30; // TWO DOT LEADER
|
||||||
|
t[0x2026] = 0xfe19; // HORIZONTAL ELLIPSIS
|
||||||
|
t[0x3001] = 0xfe11; // IDEOGRAPHIC COMMA
|
||||||
|
t[0x3002] = 0xfe12; // IDEOGRAPHIC FULL STOP
|
||||||
|
t[0x3008] = 0xfe3f; // LEFT ANGLE BRACKET
|
||||||
|
t[0x3009] = 0xfe40; // RIGHT ANGLE BRACKET
|
||||||
|
t[0x300a] = 0xfe3d; // LEFT DOUBLE ANGLE BRACKET
|
||||||
|
t[0x300b] = 0xfe3e; // RIGHT DOUBLE ANGLE BRACKET
|
||||||
|
t[0x300c] = 0xfe41; // LEFT CORNER BRACKET
|
||||||
|
t[0x300d] = 0xfe42; // RIGHT CORNER BRACKET
|
||||||
|
t[0x300e] = 0xfe43; // LEFT WHITE CORNER BRACKET
|
||||||
|
t[0x300f] = 0xfe44; // RIGHT WHITE CORNER BRACKET
|
||||||
|
t[0x3010] = 0xfe3b; // LEFT BLACK LENTICULAR BRACKET
|
||||||
|
t[0x3011] = 0xfe3c; // RIGHT BLACK LENTICULAR BRACKET
|
||||||
|
t[0x3014] = 0xfe39; // LEFT TORTOISE SHELL BRACKET
|
||||||
|
t[0x3015] = 0xfe3a; // RIGHT TORTOISE SHELL BRACKET
|
||||||
|
t[0x3016] = 0xfe17; // LEFT WHITE LENTICULAR BRACKET
|
||||||
|
t[0x3017] = 0xfe18; // RIGHT WHITE LENTICULAR BRACKET
|
||||||
|
t[0xfe4f] = 0xfe34; // WAVY LOW LINE
|
||||||
|
t[0xff01] = 0xfe15; // FULLWIDTH EXCLAMATION MARK
|
||||||
|
t[0xff08] = 0xfe35; // FULLWIDTH LEFT PARENTHESIS
|
||||||
|
t[0xff09] = 0xfe36; // FULLWIDTH RIGHT PARENTHESIS
|
||||||
|
t[0xff0c] = 0xfe10; // FULLWIDTH COMMA
|
||||||
|
t[0xff1a] = 0xfe13; // FULLWIDTH COLON
|
||||||
|
t[0xff1b] = 0xfe14; // FULLWIDTH SEMICOLON
|
||||||
|
t[0xff1f] = 0xfe16; // FULLWIDTH QUESTION MARK
|
||||||
|
t[0xff3b] = 0xfe47; // FULLWIDTH LEFT SQUARE BRACKET
|
||||||
|
t[0xff3d] = 0xfe48; // FULLWIDTH RIGHT SQUARE BRACKET
|
||||||
|
t[0xff3f] = 0xfe33; // FULLWIDTH LOW LINE
|
||||||
|
t[0xff5b] = 0xfe37; // FULLWIDTH LEFT CURLY BRACKET
|
||||||
|
t[0xff5d] = 0xfe38; // FULLWIDTH RIGHT CURLY BRACKET
|
||||||
|
});
|
||||||
|
|
||||||
export {
|
export {
|
||||||
FontFlags,
|
FontFlags,
|
||||||
|
getVerticalPresentationForm,
|
||||||
MacStandardGlyphOrdering,
|
MacStandardGlyphOrdering,
|
||||||
normalizeFontName,
|
normalizeFontName,
|
||||||
recoverGlyphName,
|
recoverGlyphName,
|
||||||
|
|
1
test/pdfs/bug1905623.pdf.link
Normal file
1
test/pdfs/bug1905623.pdf.link
Normal file
|
@ -0,0 +1 @@
|
||||||
|
https://bugzilla.mozilla.org/attachment.cgi?id=9410429
|
|
@ -10113,5 +10113,15 @@
|
||||||
"rounds": 1,
|
"rounds": 1,
|
||||||
"link": true,
|
"link": true,
|
||||||
"type": "eq"
|
"type": "eq"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "bug1905623",
|
||||||
|
"file": "pdfs/bug1905623.pdf",
|
||||||
|
"md5": "6c180a4353bda6b3cb0c693c5e5b32c4",
|
||||||
|
"rounds": 1,
|
||||||
|
"link": true,
|
||||||
|
"firstPage": 2,
|
||||||
|
"lastPage": 2,
|
||||||
|
"type": "eq"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue