0

我看到 iText 支持基于单个字形的自动字体选择。这通过搜索包含在FontSelector特定字形中的字体库来工作,如果该字符不存在于列表上方定义的字体库中,则从不同的字体库中选择一个字符。

我已经能够在 Jasper 中配置字体扩展以支持亚洲和拉丁字符集,方法是选择一个大型 unicode 字体库,例如具有超级全面字符集的“Arial Unicode MS”。然而,像这样好看的图书馆需要昂贵的许可!!考虑到所涉及的工作量也就不足为奇了……任何支持中文和拉丁文的免费字体库通常都是为了迎合有效的中文字符渲染而创建的,结果拉丁字符的美感受到影响;)

所以最后一个问题:有没有一种机制可以在 jasper 中利用 iText 的自动字体选择功能?

4

1 回答 1

-1

据我了解;您想使用用户自己的字体,而不是在您的应用程序中提供“Arial Unicode MS”。

public class FontList extends ArrayList<String>
{
    public FontList()
    {
        for (final String fontName : GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames())
        {
            final Font f = new Font(fontName, Font.PLAIN, 10);
            //first character in CJK area
            if (f.canDisplay('\u4E00'))
            {
                add(fontName);
            }
        }
    }
}

一个新的 FontList 将为您提供一个包含中文、日文和韩文所有可用字体的列表。

您将需要更多逻辑来“自动”选择“最佳”字体;您可以在其名称中查找“Arial”,以赋予其更高的优先级。“Ume”和“WenQuanYi”,最后是“Dialog”

也许最好让用户选择使用哪一个。如果没有可用的字体,请提供有关如何安装字体的建议,例如.

于 2012-06-28T20:13:04.287 回答