BFO releases Java PDF Library 2.22

The Version 2.22 release is mostly about text and signatures. The text layout engine has been reengineered to support some of the more obscure edge-cases arising from the Unicode Bidirectional algorithm, which is required to mix left-to-right and right-to-left languages on the same line. Previous releases had most, but not all, of this properly implemented. We've updated our internal Unicode model to version 10.0, which means a more complete definition of which characters are whitespace, breaking and so on.

Our OpenType font parser has been updated to 1.8 of that specification, which adds support for "variation selectors": while these are mainly going to be of interest to customers working in Chinese and Japanese (they're typically used to work around some of the mess caused by Han unification), they're also used to select Emoji variations - although mercifully uncommon in PDF, if you feel the urge to pepper your business reports with emoji, we are pleased to say you now have the tools to do this.

Continuing with text and fonts, we've put in quite a number of small fixes for the OpenType font layout engine, which will be mainly apparent when it comes to positioning vowel markers in Indic languages such as Hindi. All of these changes will result in a few microns differences to the position of most text laid out with the PDF API from previous versions - if you're rendering the PDF to bitmaps and comparing the pixels with previous releases (as we are to spot changes before release), you'll notice this. For everyone else, these large internal changes should cause no external changes at all.

We've also done some work on digital signatures. Perhaps most interesting is the new GlobalSignDSS class, to create signatures that work with GlobalSign's new digital signing service (there will be a blog post on this to follow, watch this space), but we've also added a general mechanism to manage the signing process externally, should you wish to create your own signing service. A few fixes relating to the addition of long-term validation information to existing signatures rounds, plus the usual number of small fixes for particular documents rounds out this release.

For more information please see the changelog.

You can download the latest version from our website.