mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-26 01:58:06 +02:00
XFA - Fix font scale factors (bug 1720888)
- All the scale factors in for the substitution font were wrong because of different glyph positions between Liberation and the other ones: - regenerate all the factors - Text may have polish chars for example and in this case the glyph widths were wrong: - treat substitution font as a composite one - add a map glyphIndex to unicode for Liberation in order to generate width array for cid font
This commit is contained in:
parent
ac5c4b7fd0
commit
4a4591bd2c
17 changed files with 1614 additions and 1248 deletions
|
@ -3200,6 +3200,11 @@ class Font {
|
|||
// and currentBuf contains non-encoded chars.
|
||||
const hasCurrentBufErrors = () => buffers.length % 2 === 1;
|
||||
|
||||
const getCharCode =
|
||||
this.toUnicode instanceof IdentityToUnicodeMap
|
||||
? unicode => this.toUnicode.charCodeOf(unicode)
|
||||
: unicode => this.toUnicode.charCodeOf(String.fromCodePoint(unicode));
|
||||
|
||||
for (let i = 0, ii = str.length; i < ii; i++) {
|
||||
const unicode = str.codePointAt(i);
|
||||
if (unicode > 0xd7ff && (unicode < 0xe000 || unicode > 0xfffd)) {
|
||||
|
@ -3207,8 +3212,7 @@ class Font {
|
|||
i++;
|
||||
}
|
||||
if (this.toUnicode) {
|
||||
const char = String.fromCodePoint(unicode);
|
||||
const charCode = this.toUnicode.charCodeOf(char);
|
||||
const charCode = getCharCode(unicode);
|
||||
if (charCode !== -1) {
|
||||
if (hasCurrentBufErrors()) {
|
||||
buffers.push(currentBuf.join(""));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue