I agree, native libraries would be a pain. BTW, interested parties could take a look at Apache FontBox's CFF support. That's part of Apache PDFBox. Maybe that could be used or adapted.
On 19.01.2011 11:59:18 Craig Ringer wrote: > On 19/01/11 16:35, Simon Pepping wrote: > > I take this discussion to express my worries that FOP needs to create > > its own support for fonts, among which Open Type Fonts. FOP's core > > task is the layout and printing of FO files. If FOP could rely on good > > font libraries, that would make our code base so much smaller and our > > development tasks so much easier. > > > > If I am not mistaken, Firefox does a fairly good job at representing > > Indic scripts. Do they use a generally available library? > > There are several libraries for "complex" scripts, including the > commonly-used libbidi and pango libraries. All the widely used ones that > I know of are C- or C++ libraries. > > While Java can use C and C++ libraries, a Java Native Interface (JNI) > layer must be written. Further, JNI code and the libraries it uses must > be compiled separately for each supported platform and architecture, > making packaging and deployment of the Java code a ***PAIN*** unless all > the native code parts are shipped as part of the JDK/JRE. > > Even allowing for the issues with complex/bidi libraries, Apache FOP > must also handle the OpenType font format its self, including support > for font subsetting and embedding. That's way outside the scope of > complex script and bidi libraries. While library code exists to help > with OpenType handling, I'm not aware of any even C or C++ libraries > that provide useful, fairly abstracted facilities for subsetting and > embedding without tying them in to related PDF libraries. > > While Java its self can use OpenType fonts, it doesn't expose the > details of its OpenType parser etc to Java applications. In any case, it > may use the platform's font support rather than bundling its own. Java > apps need to provide their own OpenType format handling if they want to > do more than just use the fonts with Graphics2D and the other Java > rendering APIs, because there's no way to get to the "guts" of the fonts > loaded by the JVM. > > > Ideally, Apache FOP could be built on top of: > > - A low-level Java font format and parsing library that can identify > fonts, enumerate tables and glyphs, detect features, etc. > > - A low-level Java PDF library that handles the PDF document structure, > xref and indirect object management, PDF data structure representation, > direct-to-disk streaming of big images into PDF object streams, etc etc. > > - A Java library that uses both of the above to provide features for PDF > embedding of OpenType and TrueType fonts. > > > Unfortunately, AFAIK *NONE* of them exist, or at least are used, at > present. Fop seems to have its own PDF output code and own font handling > code. I don't see any obviously advantagous 3rd party replacements for > the font handling code, and most of the 3rd party PDF engines (like > iText) appear to be a bit limited when you want to insert your own > low-level PDF content stream data, objects, etc to implement features > not supported directly by the PDF library you're using. > > I was looking into this a little myself while checking to see how hard > it'd be to implement /DeviceCMYK and /ICCBased colour in FOP. Because of > the way FOP stores and manages colour internally, the answer appears to > be "very" at present, especially if you want to support PDF/X > requirements and handle CMYK passthrough. > > -- > System & Network Administrator > POST Newspapers Jeremias Maerki
