我目前使用 Batik 的 SVGGraphics2D 有以下代码:
...
final SVGGraphics2D svgGraphics2D = new SVGGraphics2D(svgGeneratorContext, false);
svgGraphics2D.setSVGCanvasSize(new Dimension(width, height));
svgGraphics2D.setFont(font);
...
Run Code Online (Sandbox Code Playgroud)
因此,如果在执行代码的系统上font可用Font,则将正确的属性添加到生成的 SVG 文件中。
但是,如果缺少字体(例如 Linux 机器上的“Verdana”),则会使用(font-family:'Dialog'添加)默认字体。
因此,我想传递一个字体系列而不是指定字体,以便font-family="DejaVu Sans,Verdana,Geneva,sans-serif"在生成的 SVG 中使用。知道如果我没有错,API 只接受Font参数,我怎么能做到这一点?
我希望有比使用 xslt 转换 xml 输出更简单的方法。
先感谢您。
如果您有(许可的)字体文件(例如资源),您可以这样做:
InputStream is = SomeClass.getResourceAsStream("/fonts/DejaVu Sans.ttf");
Font font = Font.createFont(Font.TRUETYPE_FONT, is);
GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(font);
Run Code Online (Sandbox Code Playgroud)
这是使用自己的字体交付应用程序的通用方法。
然后,您可以在 SVG 中嵌入独立 svg 文件的确切字体。
我想知道这是不可能的:
font-family="'DejaVu Sans',Verdana,Geneva,sans-serif"
Run Code Online (Sandbox Code Playgroud)
因为这就是 CSS 的方式。
| 归档时间: |
|
| 查看次数: |
1042 次 |
| 最近记录: |