我使用SVG-Net从SVG创建PNG,JPG文件。
我面临的问题是,字体不是呈现在PNG,JPG从SVG,虽然当我查看我的SVG,字体显示。下面是我的代码:
var svgContent = svgDocument.ToString();
var mySvg = SvgDocument.FromSvg<SvgDocument>(svgContent);
mySvg.Height = new SvgUnit(SvgUnitType.Pixel, pixelHeight);
mySvg.Width = new SvgUnit(SvgUnitType.Pixel, pixelWidth);
mySvg.ViewBox = new SvgViewBox(0, 0, viewBoxWidth, viewBoxHeight);
Bitmap bmpSquare = mySvg.Draw(pixelWidth, pixelHeight);
bmpSquare.Save(FilePathJPG, jgpEncoder,myEncoderParameters);
bmpSquare.Save(FilePathPNG, pngEncoder,myEncoderParameters);
我有ttf文件,当我在C:/Windows/Fonts中本地安装字体时,它在我的本地工作。但是当我的Azure Function应用程序部署时,这是不可行的。有没有一种方法可以在Azure上的PaaS上安装字体?
对于SVG在添加字体,并添加base64格式的ttf文件。或者有没有一种方法可以渲染我正在使用的SVG-Net库中的字体。下面是我在SVG中使用的代码:
<defs>
<style>
@font-face {
font-family:Segoe Pro Bold;
src: url("data:font/truetype;charset=utf-8;base64, bas64 conversion of my font TTF file") format('truetype');
}
</style>
</defs>
使用上面的代码显示了我的SVG上的字体,但是当我将Bitmap &保存转换为PNG & JPG时,它会呈现默认字体。
我离最后期限很近了,我已经完成了最困难的事情,但仍然坚持这个关键问题。先谢谢你了。
1条答案
按热度按时间bhmjp9jg1#
svg-net不支持嵌入字体,据我所知,svg-net完全依赖于基于操作系统的字体解析。但是,您可以利用Azure VM或基于容器的Azure App Service Web Apps来安装自定义字体。此外,还有Azure Container Apps hosting of Azure Functions的预览。
对于基于容器的函数设置,docker文件应类似于以下示例
在添加了安装字体的行之后,azure函数中带有svg-net的示例svg renderd从x1c 0d1x更改为
。
使用的示例svg: