【问题标题】:Set Windows font on Linux in SVG with Apache Batik使用 Apache Batik 在 SVG 中在 Linux 上设置 Windows 字体
【发布时间】:2016-01-26 16:29:20
【问题描述】:

我正在开发一个简单的 Web 应用程序,它提供了一个用于呈现 SVG 图像的 URL。我使用 Apache Batik 库进行 SVG 渲染,但在设置 font-family 时遇到问题。当从任何浏览器(主要是 Chrome、FF 和 Edge)和任何操作系统(主要是 Linux 和 Windows)查看时,我希望生成的 SVG 看起来相同(因为它可以)。问题是,正如我所见,Batik 使用了一些从本地系统加载字体的内部逻辑,这阻止了跨平台行为。

更准确地说:我的 webapp 在 Ubuntu Linux 上运行,我将 font-family:'DejaVu Sans' 设置为我的图形。这在客户端使用 Linux 时完美运行,但在 Windows 上,显然这种字体不存在。我尝试根据请求中的User-Agent 标头设置font-family,但是当我为Windows 客户端设置font-family:'Verdana' 时,Batik 尝试加载'Verdana' 字体,显然失败了。

我尝试像这样设置属性:font-family:'DejaVu Sans',Verdana 但 Batik 无法处理以逗号分隔的有效字体系列列表。除了在服务器上安装 Verdana 字体,还有什么办法可以解决这个问题?

【问题讨论】:

标签: java svg fonts batik


【解决方案1】:

最后我通过在我的应用程序中包含字体并使用GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(font); 注册它来实现它。通过这种方式,Batik 正确地将 'Verdana' 字符串保留在 font-family 属性中。感谢mike-pomax-kamermans 的有用建议!

【讨论】:

    猜你喜欢
    • 2018-06-17
    • 1970-01-01
    • 2016-11-09
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    • 2010-10-01
    相关资源
    最近更新 更多