我很难让飞碟使用字形/字符的辅助字体,这些字形/字符不在我的主字体中。
我用于此目的的Java代码或多或少是:
String result = getPrintHtmlContent(urlString);
result = CharacterConverter.replaceInvalidCharacters(result);
ITextRenderer renderer = new ITextRenderer();
renderer.getFontResolver();
renderer.getFontResolver().addFont(FONTS_DIR_PATH + "ARIALUNI.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
renderer.getFontResolver().addFont(FONTS_DIR_PATH + "droidsans/DroidSans.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
renderer.getFontResolver().addFont(FONTS_DIR_PATH + "droidsans/DroidSansBold.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
renderer.setDocumentFromString(result, "http://" + frontendHost + ":" + frontendPort + frontendContextRoot);
renderer.layout();
renderer.createPDF(os);
和css:
body {
font-family: "Droid Sans", "Arial Unicode MS";
}
我还使用@font-face
规则将字体包含在css中。
我能够让它单独使用两种字体,所以飞碟找到字体或css无法正确渲染似乎没有问题。
如果我在另一方面,如上所述,并尝试使用两种字体的输出PDF只使用Droid Sans…
有没有可能在飞碟中使用“后备字体”,就像在网站上一样?
我在飞碟开发者社区上问了同样的问题,得到了回复:
https://groups.google.com/forum/#!topic/flying-saucer-dev/5p00ISwnxiw
简而言之,答案是否定的,不可能使用二级字体。