【问题标题】:Why does Illustrator mangle group/id names in generated SVG files?为什么 Illustrator 会在生成的 SVG 文件中破坏组/ID 名称?
【发布时间】:2017-12-22 21:58:54
【问题描述】:

我需要您对 svg 文件到 xml 转换的支持 例子

此图像是使用自动空调的组名创建的 SVG 文件

现在 xml 代码

<g id="With_auto_A_x2F_C">
        <text transform="matrix(0.9965 0 0 1 447.8486 12.79)" fill="#13110C" font-family="'Helvetica'" font-size="5.9999">With auto A/C</text>
    </g>
</g> 

为什么组名 g id 的创建类似于“With_auto_A_x2F_C” > 对于特殊字符(如“/”更改为 x2F 和“”字符更改为“_”)为什么 谁能帮我解决这个问题。

你也可以提供我所有的xml代码的特殊字符转换。

谢谢, Yogesh.v

【问题讨论】:

    标签: xml svg adobe-illustrator


    【解决方案1】:

    它正在转换名称,因为id 属性中不允许使用所有字符。

    id 属性can be found in the XML specification 的有效字符列表,但基本上包括:

    • ASCII 字母和数字
    • :_-.
    • 其他一些 unicode 字符

    至于 Illustrator 用于过滤文本字符串以生成 id 的确切算法 - 我不知道。你必须进行实验。但是看起来它将空格转换为下划线('_')。它通过将其他不兼容的字符转换为十六进制来转义它们。 2F 是斜线字符 ('/') 的 ASCII 码的十六进制值。所以看起来它是通过用_x_ 包围来逃脱的。

    例如,十六进制值为 2B 的加号 ('+') 可能会转义为 _x2B_

    【讨论】:

      【解决方案2】:

      如前所述,如果您以 SVG 格式保存文件,对象和图层名称必须符合 XML 命名约定。 illustrator 如何转换此名称,您可以立即在图层面板中看到,为此打开 Edit->Preferences->Units 并将 'Identify Objects' 设置为 'XML ID'

      【讨论】:

      • 在 javascript 中,您可以使用以下代码对其进行解码:input.replace(/_x([0-9A-Za-z]+)_/g, s =&gt; String.fromCodePoint(parseInt(s.substring(2, s.length - 1), 16))).replace(/_/g, " ");
      猜你喜欢
      • 2012-09-29
      • 2011-03-25
      • 2017-12-23
      • 2011-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      相关资源
      最近更新 更多