Hi Andreas.

I created a Jira ticket for this bug report, as you requested.  It is
https://issues.apache.org/jira/browse/PDFBOX-5191.
I am working on a patch to fix this bug now.

Thanks and Regards,
Larry Lynn

On Tue, May 11, 2021 at 12:13 AM Andreas Lehmkuehler <[email protected]>
wrote:

> Hi,
>
>
> thanks for your detailed report, it sounds valid and is very helpful!!
>
> Please create a JIRA ticket and attach a patch to it. If you prefer a PR
> we are
> able to handle that as well (add the URL of the PR to the JIRA ticket)
>
> Andreas
>
>
> Am 10.05.21 um 22:41 schrieb Larry Lynn:
> > Greetings pdfbox devs.  Longtime user, first time contributor here.
> >
> > First, I'd like to thank you all for your work on this awesome piece of
> > software.  pdfbox is one of the powertools in our toolbox.
> >
> > Second, I'd like to lodge a bug report.  As per your support policy
> posted
> > here:
> > https://pdfbox.apache.org/support.html
> > I'm contacting the mailing list first before going straight to Jira.
> >
> > I think there's a bug in isEmbeddingPermitted() that makes it too
> > restrictive about which fonts it will embed.
> >
> > The code is here:
> >
> https://github.com/apache/pdfbox/blob/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java#L139
> >
> > I believe the bug was introduced with this change
> >
> https://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java?r1=1878861&r2=1878860&pathrev=1878861
> >
> > For this ticket:
> > https://issues.apache.org/jira/browse/PDFBOX-4882
> >
> > So, it looks like there was an earlier bug in isEmbeddingPermitted() that
> > made it too permissive.  But I think that in fixing that one, a 2nd bug
> was
> > introduced that makes it too strict.  The reason that I think there is a
> > bug here is because there is no check in that code for
> > ttf.getOS2Windows().getVersion().
> >
> > In the documentation linked on PDFBOX-4882,
> > https://docs.microsoft.com/en-us/typography/opentype/spec/os2#fstype
> > Please note the section on Version Differences
> >
> > "The specification for versions 0 to 2 did not specify that bits 0 to 3
> > must be mutually exclusive. Rather, those specifications stated that, in
> > the event that more than one of bits 0 to 3 are set in a given font, then
> > the *least-restrictive permission indicated take precedence*."
> >
> > We have a font named ArialRoundedMTBold.ttf.  pdfbox versions 2.0.20 and
> > lower would embed this without complaint, but pdfbox version 2.0.21 and
> > higher throw an error when attempting to embed this font "This font does
> > not permit embedding".
> >
> > We opened this font up in FontForge and verified that its OS/2 table is
> > version 1.  We stepped through this code in a debugger and found that
> > fsType is set to 6, so 2 permission bits are set, one for
> FSTYPE_RESTRICTED
> > & one for FSTYPE_PREVIEW_AND_PRINT. This is a legal configuration for a
> > version 1 font, but not a version 3 font.  The code in
> > isEmbeddingPermitted() is respecting the most restrictive permission bit,
> > which contradicts the spec.  It should be respecting the least
> restrictive
> > permission bit.
> >
> > I think the code as-is is correct for version 3 fonts and above
> (presuming
> > there is no font corruption on the permission bits), but is too
> restrictive
> > on font versions 0 - 2.
> >
> > I can provide code that reproduces the problem.  If you accept pull
> > requests from external developers, I believe that I've looked at this
> code
> > long enough that I can provide a bugfix too.
> >
> > Thanks and Regards
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

-- 
*Larry Lynn*
*Senior Software Engineer*
*Workiva Inc*.



*448 E. Main St, Bozeman, MT, 59715*

Reply via email to