Hi,
I'm trying to use the FOP API purely from java in order to generate PDFs, PS,
and EPS files. I'm trying to get font embedding to work in each of these
scenarios without using the auto-detect configuration option because it can
cause out of memory exceptions with my application. I'm trying to avoid
duplicating the FOP auto-detect work trying to find the location of the font's
on the system so I'd prefer a way to just convert my java fonts into FOP Fonts.
I can get the list of needed fonts but am struggling to figure out how to
convert the java fonts into the FOP Fonts with appropriate font metrics so that
I can set the FontInfo for my PDFDocumentGraphics2D or my PSDocumentGraphics2D
objects. I've created my own createFontInfo method below which doesn't work
because it somehow needs to create the font metrics as well.
Thanks,
--Felix
public FontInfo createFontInfo(List<Font> fontList) throws
FOPException, IOException {
FontInfo fontInfo = new org.apache.fop.fonts.FontInfo();
org.apache.fop.fonts.FontManager fontManager = new
org.apache.fop.fonts.FontManager();
List fontCollections = new java.util.ArrayList();
fontCollections.add(new
Base14FontCollection(fontManager.isBase14KerningEnabled()));
for (Font f:fontList) {
fontInfo.addFontProperties(f.getFontName(), new String[] {
FontUtil.stripWhiteSpace(f.getFamily()), f.getFamily(),
f.getPSName()},
(f.getStyle() & Font.ITALIC) != 0 ?
org.apache.fop.fonts.Font.STYLE_ITALIC :
org.apache.fop.fonts.Font.STYLE_NORMAL,
(f.getStyle() & Font.BOLD) != 0 ?
org.apache.fop.fonts.Font.WEIGHT_BOLD :
org.apache.fop.fonts.Font.WEIGHT_NORMAL);
}
fontManager.setup(fontInfo,
(FontCollection[])fontCollections.toArray(
new FontCollection[fontCollections.size()]));
return fontInfo;
}