[ https://issues.apache.org/jira/browse/PDFBOX-4106?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16367651#comment-16367651 ]
Tilman Hausherr commented on PDFBOX-4106: ----------------------------------------- {quote} If you have an idea for a better solution please let me know. {quote} No, I don't have a better solution. I've created a test that fails if somebody in the future isn't carefully enough. Can you explain the "Trying to un-substitute a never-before-seen gid" message one gets when using mode 3 in the example, i.e. disabling the two features? Why is this a "bad" thing / is it a bad thing? >From what I see, this comes up because in the getSubstitution() call nothing >is cached, because featureRecords.isEmpty(). The getUnsubstitution() method >depends on having a previous call of getSubstitution(). Here's some possible solutions (can be several) because I want to avoid tickets about this. - remove the message - make it debug instead of warning - add a comment like above, i.e. document this sequential dependency - keep all as is but make a comment in the sample code - cache even if langSysTables or featureRecords are empty - make it stateless (you probably didn't do that because you wanted to save memory) Any thoughts? > Vertical text creation > ---------------------- > > Key: PDFBOX-4106 > URL: https://issues.apache.org/jira/browse/PDFBOX-4106 > Project: PDFBox > Issue Type: New Feature > Components: FontBox, Parsing, Writing > Reporter: Aaron Madlon-Kay > Priority: Major > Labels: embed, gsub, parsing, vertical > Attachments: > 0001-Add-OpenTypeScript-class-to-get-OT-script-tags-for-c.patch, > 0002-Optimize-Unicode-script-storage-and-lookup.patch, > 0003-Parse-GSUB-table.patch, > 0004-Abstract-cmap-lookup-into-an-interface.patch, > 0005-Implement-GSUB-substitution-on-TrueTypeFont.patch, > 0006-Use-vhea-vmtx-to-fix-vertical-displacements-in-PCIDF.patch, > 0007-Add-factory-methods-for-loading-TTF-as-vertical-font.patch, > 0008-Implement-vertical-metrics-support-when-embedding-subsetting.patch, > sample_code.txt, vertical.pdf > > > I needed to output vertical Japanese text, but was stymied by several > limitations: > * No API to load a TTF as Identity-V encoding > * No support for 'vert' glyph substitution > * No support for vertical metrics ('vhea' and 'vmtx' tables are parsed but > not used at all) > I have attached a series of patches that implement the above features. > Highlights: > * The GSUB glyph substitution table is parsed (limitation: type 1 lookups > only; this is sufficient for many features including 'vert'/'vrt2' vertical > glyph substitution) > * Cmap lookup makes use of GSUB when features are enabled on a TTF > * 'vhea' and 'vmtx' metrics are applied to PDCIDFont when appropriate, and > are embedded/subsetted correctly through the DW2/W2 CIDFont dictionary > * An API has been added for loading a TTF as a vertical font, setting > Identity-V encoding and enabling 'vert'/'vrt2' substitution > Each patch could approximately be split out into a separate ticket, if > desired. > Also attached is some sample code that exercises these patches and > illustrates the effect of vertical glyph positioning. The sample output PDF > is also attached. -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@pdfbox.apache.org For additional commands, e-mail: dev-h...@pdfbox.apache.org