Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Only choose a (3, 1) cmap table for TrueType fonts that have an encoding specified (issue 6410) #6425

Merged
merged 1 commit into from
Sep 9, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions src/core/fonts.js
Original file line number Diff line number Diff line change
Expand Up @@ -3222,7 +3222,7 @@ var Font = (function FontClosure() {
* Read the appropriate subtable from the cmap according to 9.6.6.4 from
* PDF spec
*/
function readCmapTable(cmap, font, isSymbolicFont) {
function readCmapTable(cmap, font, isSymbolicFont, hasEncoding) {
var segment;
var start = (font.start ? font.start : 0) + cmap.offset;
font.pos = start;
Expand Down Expand Up @@ -3253,7 +3253,7 @@ var Font = (function FontClosure() {
// Continue the loop since there still may be a higher priority
// table.
} else if (platformId === 3 && encodingId === 1 &&
(!isSymbolicFont || !potentialTable)) {
((!isSymbolicFont && hasEncoding) || !potentialTable)) {
useTable = true;
if (!isSymbolicFont) {
canBreak = true;
Expand Down Expand Up @@ -4202,13 +4202,14 @@ var Font = (function FontClosure() {
} else {
// Most of the following logic in this code branch is based on the
// 9.6.6.4 of the PDF spec.
var cmapTable = readCmapTable(tables.cmap, font, this.isSymbolicFont);
var hasEncoding =
properties.differences.length > 0 || !!properties.baseEncodingName;
var cmapTable =
readCmapTable(tables.cmap, font, this.isSymbolicFont, hasEncoding);
var cmapPlatformId = cmapTable.platformId;
var cmapEncodingId = cmapTable.encodingId;
var cmapMappings = cmapTable.mappings;
var cmapMappingsLength = cmapMappings.length;
var hasEncoding = properties.differences.length ||
!!properties.baseEncodingName;

// The spec seems to imply that if the font is symbolic the encoding
// should be ignored, this doesn't appear to work for 'preistabelle.pdf'
Expand Down
1 change: 1 addition & 0 deletions test/pdfs/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@
!issue5747.pdf
!issue6099.pdf
!issue6336.pdf
!issue6410.pdf
!gradientfill.pdf
!bug903856.pdf
!bug850854.pdf
Expand Down
Binary file added test/pdfs/issue6410.pdf
Binary file not shown.
7 changes: 7 additions & 0 deletions test/test_manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -1086,6 +1086,13 @@
"link": true,
"type": "eq"
},
{ "id": "issue6410",
"file": "pdfs/issue6410.pdf",
"md5": "fd5c5898d5b9754bb546724b7d31bf59",
"rounds": 1,
"link": false,
"type": "eq"
},
{ "id": "issue6413",
"file": "pdfs/issue6413.pdf",
"md5": "08926ac7a46e27a4abbb31256b3a7b29",
Expand Down