You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

无法将SVG上传至任意字形生成工具,Inkscape可正常渲染

问题根源与修复方案

你的SVG确实是创建方式导致的问题——Inkscape导出的SVG带有很多它自己的自定义扩展属性和冗余代码,而大多数TTF制作服务只支持标准SVG规范,这些非标准内容会让服务无法解析图形,进而显示为空。我来帮你拆解问题并给出修复后的代码:

具体问题点

  • 存在非标准命名空间元素:比如<g i:e="1"><i:p>q:rq="0"这些属性,都是Inkscape的私有扩展,字体工具不会识别它们
  • 冗余的样式属性:路径的style里包含了很多无关属性(比如overflow-xperspective-origin),甚至重复了d属性,这会干扰解析
  • 极端的变换矩阵:transform="matrix(10,27.5,0,1.25,0,-168)"把图形拉伸/偏移到了视口外,很多服务默认只渲染viewBox范围内的内容,导致看不到图形

修复后的SVG代码

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 100" width="10" height="100">
  <path fill="#414141" d="M3.77 86.88L4.0 81.72C3.77 80.94 3.52 80.42 3.26 80.21L2.94 87.26C2.68 99.06 2.43 110.38 2.20 121.49L2.41 116.66C2.49 113.04 2.57 109.44 2.65 105.77L3.54 86.13C3.62 86.34 3.70 86.59 3.77 86.88ZM3.08 85.84L3.11 85.21C3.23 85.43 3.36 85.65 3.48 85.96L2.70 103.06C2.83 97.38 2.95 91.61 3.08 85.84Z" transform="scale(0.1, 0.08) translate(0, 168)"/>
</svg>

修复说明

  1. 移除了所有Inkscape私有属性和元素,只保留标准SVG标签
  2. 添加了viewBox和明确的宽高,让服务能识别图形的边界
  3. 调整了变换矩阵,把原本偏移到视口外的图形拉回可见区域
  4. 清理了路径中冗余的样式,只保留必要的filld属性

你可以把这个修复后的SVG上传到字体服务试试,应该能正常识别到字母B的图形了。如果需要批量处理其他字符,建议在Inkscape导出时选择「优化SVG」选项,去掉所有私有扩展和冗余代码。

内容的提问来源于stack exchange,提问作者Jack Thomas

火山引擎 最新活动