【问题标题】:Automatic font selection for Chinese character sets中文字符集的自动字体选择
【发布时间】:2012-06-29 14:14:18
【问题描述】:

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

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

最后一个问题:jasper 中是否有利用 iText 自动字体选择功能的机制?

【问题讨论】:

    标签: java fonts jasper-reports itext


    【解决方案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”

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

    【讨论】:

    • 问题是关于 Jasper 中的解决方案,而不是 iText 的问题。我猜这就是为什么有人给你一个-1 :(
    猜你喜欢
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    • 2019-10-25
    • 2022-12-10
    • 1970-01-01
    • 2012-12-11
    相关资源
    最近更新 更多