我正在开发一个简单的 Web 应用程序,它提供用于渲染 SVG 图像的 URL。我使用 Apache Batik 库进行 SVG 渲染,但在设置 font-family
时遇到问题。我希望从任何浏览器(主要是 Chrome、FF 和 Edge)和任何操作系统(主要是 Linux 和 Windows)查看时生成的 SVG 看起来都相同(尽可能)。问题是,正如我所见,Batik 使用一些内部逻辑从本地系统加载字体,这会阻止跨平台行为。
更准确地说:我的 Web 应用程序在 Ubuntu Linux 上运行,并且我将 font-family:'DejaVu Sans'
设置为我的图形。当客户端使用Linux时,这非常有效,但在Windows上,显然这种字体不存在。我尝试根据请求中的 User-Agent
header 设置 font-family
,但是当我设置 font-family:'Verdana'
对于 Windows 客户端,Batik 尝试加载“Verdana”字体,但显然失败了。
我尝试设置如下属性:font-family:'DejaVu Sans',Verdana
但 Batik 无法处理以逗号分隔的有效字体系列列表。除了在服务器上安装 Verdana 字体之外,还有什么方法可以解决这个问题吗?
最佳答案
最后,我通过在应用程序中包含字体并使用 GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(font); 注册它来实现这一目标。这样 Batik 就可以正确地将 'Verdana'
字符串保留在 font-family
属性中。感谢mike-pomax-kamermans寻求有用的建议!
关于java - 使用 Apache Batik 在 SVG 中的 Linux 上设置 Windows 字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35018826/