You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 09:32:02