Illustrator里排好的文字,导出SVG之后字体变了、位置偏了,严重的时候直接变成乱码。这个问题的根源是SVG文件本身不携带字体信息,它只在代码里写一个font-family的名字,渲染SVG的浏览器或系统如果没装这个字体,就会用默认字体替代。
彻底的解决办法是导出时把文字转成轮廓。 在SVG导出对话框的“字体”选项里选“将字体转换为轮廓”,文字就变成了贝塞尔曲线路径,不再依赖任何字体文件,在任何设备上打开都是一模一样的。
但这里有一个容易踩的坑:导出方式选错了,转曲选项可能根本不生效。 用“文件 > 另存为 > SVG”和用“文件 > 导出 > 导出为 SVG”,两者的转曲逻辑不同。官方推荐用“导出为”这条路径,它的选项更细致,转曲指令执行得更彻底。用“另存为”的话,某些版本中即使勾了转曲,导出的SVG里仍然保留着 <text> 元素而不是路径。
如果导出后文字还是有问题,检查一下有没有把文字放在符号(Symbol)或者剪切蒙版里面。嵌套在这些结构里的文本可能会绕过全局的转曲指令,导出时保持为文本状态。把文字从符号里拿出来,或者直接在画布上完成转曲再放进符号,可以避免这个情况。
另外,变量字体(Variable Fonts) 在Illustrator里的SVG导出支持还不完善。如果你用的字体是带可变轴的,导出时转曲可能会失败。换成一个普通的静态字体文件,问题基本就消失了。
预览中的照片/图标/矢量图等通常并不包含,部分字体需要软件支持 OpenType。版权归原作者,仅供个人学习参考,请勿直接商用。详见协议。

