【发布时间】: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 字体,还有什么办法可以解决这个问题?
【问题讨论】:
-
捆绑实际字体,并使用@font-face 规则?
-
这适用于 SVG 元素吗? developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/SVG_fonts 另一个选择可能是将字体嵌入到 SVG 中,但我想我在某处读到 Batik 对此有问题。
-
可能很好,是的。值得一试。