如何在Typst中直接渲染SVG字符串?解决image.decode弃用问题
在Typst中直接渲染SVG字符串的正确方式
解决image.decode()弃用警告,同时无需保存文件直接渲染SVG字符串的方法很简单:把SVG字符串通过str.bytes()转换为字节数据,直接传给image()函数即可。
修改后的完整代码如下:
// a bootstrap icon #let svg = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-7-circle\" viewBox=\"0 0 16 16\"> <path d=\"M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.37 5.11V4.001h5.308V5.15L7.42 12H6.025l3.317-6.82v-.07H5.369Z\"/> </svg>" #image(svg.bytes()) // 无警告,正常渲染
原因说明
新版本Typst中,image()函数不再接受字符串形式的内容,而是要求直接传入字节数据。之前的image.decode()本质是内部帮你完成了字符串转字节的操作,现在这个步骤需要手动用str.bytes()实现,既符合新版本API规范,又不用将SVG字符串存为本地文件,完全适配批量渲染图标的场景。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

