我正在开发一个简单的web应用程序,它提供了一个用于呈现SVG图像的URL。我使用Apache Batik库进行SVG渲染,并且在设置font-family时遇到问题。我希望生成的SVG在从任何浏览器(主要是Chrome、FF和Edge)和任何操作系统(主要是Linux和Windows)查看时看起来都是一样的(因为它可以)。问题是,在我看来,Batik使用了一些从本地系统加载字体的内部逻辑,这阻止了跨平台行为。
更准确地说:我的webapp运行在Ubuntu Linux上,我将font-family:'DejaVu Sans'设置为我的图形。当客户端使用Linux时,这种字体工作得很好,但在Windows上,这种字体显然不存在。我尝试根据请求中的User-Agent头来设置font-family,但是当我为Windows客户端设置font-family:'Verdana'时,Batik尝试加载‘宋体’字体,显然失败了。
我尝试这样设置属性:font-family:'DejaVu Sans',Verdana,但Batik不能处理以逗号分隔的有效字体系列列表。
发布于 2016-01-29 19:39:46
最后,我在我的应用程序中包含了字体并将其注册到GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(font);,从而实现了这一点。这样,Batik就可以在font-family属性中正确地保留'Verdana'字符串。感谢mike-pomax-kamermans提供的有用的建议!
https://stackoverflow.com/questions/35018826
复制相似问题