Always choose a (3, 1) cmap table for TrueType fonts that have an encoding specified, regardless of the Symbolic font flag (bug 1337429)

This patch basically reverts one aspect of TrueType (3, 1) cmap parsing to the state prior to PR 4259. After that PR, a number of regressions occurred in this particular code-path, which necessitated a number of follow-ups such as PRs 5703, 5743, and 6425.
The empirical data suggests, at least to me, that we should always prefer a (3, 1) cmap for TrueType fonts when they have an encoding, regardless of the Symbolic font flag.

Obviously this patch passes all unit/font/reference tests locally, and I made sure that all the PRs mentioned above landed with test-cases included.
However, in my opinion, there's still a very real possibility that this patch could potentially cause new regressions.

Given that the PDF file in bug 1337429 has been broken for almost *three* years before anyone noticed, and considering that the code-path in question has been the source of numerous regressions, I do *not* intend to request uplift of this patch to previous Firefox versions (assuming that it's even accepted).

Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=1337429.
This commit is contained in:
Jonas Jenwald 2017-02-15 14:18:42 +01:00
parent b509a3f83c
commit ce072022c1
4 changed files with 112 additions and 1 deletions

View File

@ -1434,7 +1434,7 @@ var Font = (function FontClosure() {
// Continue the loop since there still may be a higher priority
// table.
} else if (platformId === 3 && encodingId === 1 &&
((!isSymbolicFont && hasEncoding) || !potentialTable)) {
(hasEncoding || !potentialTable)) {
useTable = true;
if (!isSymbolicFont) {
canBreak = true;

View File

@ -62,6 +62,7 @@
!bug1146106.pdf
!bug1252420.pdf
!bug1308536.pdf
!bug1337429.pdf
!issue5564_reduced.pdf
!canvas.pdf
!bug1132849.pdf

103
test/pdfs/bug1337429.pdf Normal file

File diff suppressed because one or more lines are too long

View File

@ -948,6 +948,13 @@
"rounds": 1,
"type": "eq"
},
{ "id": "bug1337429",
"file": "pdfs/bug1337429.pdf",
"md5": "4e6e4dfdab884e9465bdce657b590028",
"link": false,
"rounds": 1,
"type": "eq"
},
{ "id": "glyph_accent",
"file": "pdfs/glyph_accent.pdf",
"md5": "1526e4edaa3ec439ebf156d0a0b385aa",