[ 
https://issues.apache.org/jira/browse/PDFBOX-2923?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14663113#comment-14663113
 ] 

Petras commented on PDFBOX-2923:
--------------------------------

This patch has influence on Preflight, as it checks that width of the glyph set 
using the DW and W entries in the CIDFont dictionary be consistent with the 
actual widths given in the CIDFont program. Without this patch Preflight fails 
with errors:
{code}
ERROR_FONTS_METRICS: Invalid Font definition, Width of the character "469" in 
the font program "KTZXPY+MyriadPro-Regular"is inconsistent with the width in 
the PDF dictionary., 
ERROR_FONTS_GLYPH_MISSING: Glyph error, The character "508" in the font program 
"KTZXPY+MyriadPro-Regular"is missing from the Charater Encoding., 
ERROR_FONTS_METRICS: Invalid Font definition, Width of the character "469" in 
the font program "KOVSPY+MyriadPro-Regular"is inconsistent with the width in 
the PDF dictionary., 
ERROR_FONTS_GLYPH_MISSING: Glyph error, The character "508" in the font program 
"KOVSPY+MyriadPro-Regular"is missing from the Charater Encoding.]
{code}

> CFFParser parser treats CIDFont's charset data as SID
> -----------------------------------------------------
>
>                 Key: PDFBOX-2923
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-2923
>             Project: PDFBox
>          Issue Type: Bug
>          Components: FontBox
>    Affects Versions: 1.8.10
>            Reporter: Petras
>         Attachments: MyriadPro-Regular.cff, Patch_to_fix_PDFBOX-2923.patch
>
>
> As stated in Compact Font File specification:
> {quote}
> The charset data, although in the same format as non-CIDFonts, will represent 
> CIDs rather than SIDs, i.e. charstrings are “named” by CIDs in a CIDFont.
> {quote}
> Unfortunately, {{CFFParser}} does not consider this specific and always treat 
> charset data as SID: is looking for SID referenced text in _String INDEX_ 
> structure. Since such SID-indexed string does not exist there, it sets the 
> name of the glyph to "{{.ndef}}".
> Consequently, {{CFFParser}} fails to register correct charstrings, as it 
> associates glyph names to them using a map. As there can be several 
> charstrings, only the last charstring entry is retained.
> Then also {{CFFFont.getWidth()}} method fails to return correct width of the 
> given CID as correct link between CID and charstring is lost.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to