Summary: | CFF OpenType fonts using Identity-H encoding not displayed | ||
---|---|---|---|
Product: | poppler | Reporter: | Brecht Machiels <brecht> |
Component: | cairo backend | Assignee: | poppler-bugs <poppler-bugs> |
Status: | RESOLVED FIXED | QA Contact: | |
Severity: | normal | ||
Priority: | medium | CC: | frolvlad, pierupoika |
Version: | unspecified | ||
Hardware: | Other | ||
OS: | All | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Attachments: |
Incorrectly rendered PDF
Evince screenshot add OT font types add OT font types v2 |
Description
Brecht Machiels
2016-01-02 11:00:08 UTC
Created attachment 120765 [details]
Evince screenshot
Works fine with Okular so cairo backend bug it'd seem. Created attachment 120772 [details] [review] add OT font types Add support for the two missing font types in cairo font: - fontCIDType0COT for this bug - fontTrueTypeOT (test case in bug 20605) *** Bug 93780 has been marked as a duplicate of this bug. *** Comment on attachment 120772 [details] [review] add OT font types Review of attachment 120772 [details] [review]: ----------------------------------------------------------------- Thanks for the patch, I have a couple of comments/questions, though. ::: poppler/CairoFontEngine.cc @@ +550,5 @@ > + codeToGID = NULL; > + n = 0; > + if (((GfxCIDFont *)gfxFont)->getCIDToGID()) { > + n = ((GfxCIDFont *)gfxFont)->getCIDToGIDLen(); > + codeToGID = (int *)gmallocn(n, sizeof(int)); I think we should check n here just in case, because GfxFont allocates the array and then tries to fill it, so we could have codeToGID != NULL && codeToGIDLen == 0 @@ +553,5 @@ > + n = ((GfxCIDFont *)gfxFont)->getCIDToGIDLen(); > + codeToGID = (int *)gmallocn(n, sizeof(int)); > + memcpy(codeToGID, ((GfxCIDFont *)gfxFont)->getCIDToGID(), > + n * sizeof(int)); > + } Don't we need to handle here the case of not having a CIDtoGID and !useCIDs? Created attachment 121439 [details] [review] add OT font types v2 Updated patch. Pushed |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.