【发布时间】:2015-02-20 15:28:03
【问题描述】:
当我在 Raphael js 上使用 print 方法将文本转换为路径时,它会生成每个字符的双路径(轮廓)。我在网上搜索并注意到有一些字体,例如:camBam 字体似乎是真正的类型字体,但实际上它们是在欺骗字体创建者将它们视为字符的轮廓,而他们将 2 条相同的行放在顶部彼此的。我想知道是否有任何方法可以以编程方式(使用 js)将这些行(路径)相互拆分并删除其中一个?
这是一个 svg 文件的 svg 代码,该文件包含彼此重叠的路径,并且对于字母 s 相同(例如):
更新:抱歉,我在这里更新了正确的 svg 代码:
<svg height="100%" version="1.1" width="100%" xmlns="http://www.w3.org/2000/svg" viewBox="0, 0, 600,600"><desc>Created with Snap</desc><defs></defs><path d="M79.5111111111111,59.87405972222222C79.89444444444443,66.13517083333333,70.94999999999999,63.32405972222222,65.45555555555555,63.96294861111111C70.94999999999999,63.451837499999996,79.89444444444443,66.00739305555555,79.5111111111111,59.87405972222222C79,52.84628194444444,66.09444444444443,56.67961527777778,65.58333333333333,49.77961527777778C65.19999999999999,44.15739305555556,73.24999999999999,46.457393055555556,78.48888888888888,45.94628194444444C73.24999999999999,46.329615277777776,65.19999999999999,44.15739305555556,65.58333333333333,49.77961527777778C66.09444444444443,56.67961527777778,79,52.84628194444444,79.5111111111111,59.87405972222222C79.5111111111111,59.87405972222222,79.5111111111111,59.87405972222222,79.5111111111111,59.87405972222222" fill="#ff0000" stroke="#0000ff"></path><rect x="0" y="30" width="330" height="51" fill="none" stroke="#000000"></rect></svg>
更新 2: 而here 是两种字体产生的路径
如果您在 inkscape 或 illustrator 中手动操作它,您会看到字母 s 有 2 行相互重叠构成该字母:
如何使用 js 删除 2 行(路径)之一?如果我有一个已转换为类似于 s 字符的路径的整个文本,我如何将该删除功能应用于所有文本以使其成为单路径文本?
更新3:
我有以下代码试图将 s 路径分成两半:
var sTotalpx = textpaths.getTotalLength();
var sSinglepath = Snap.path.getSubpath(textpaths, (sTotalpx/2), sTotalpx);
console.log(sSinglepath.toString());
并且路径结果显示的是 s 的一半和双行(路径),而不是整个 s 和单行(路径)。请问有什么解决办法吗?!
更新 4:
我在某处读到,当您使用 svg 编辑器时:“当使用重叠路径时,使用 'combine' 或 'union' 选项将形状融合在一起并消除重叠。”
请问这是如何以编程方式使用 js 实现的?
【问题讨论】:
-
我打开你在inkscape上面发布的svg文件,没有2条相互重叠的路径,只有一个概述的S字母。与将字体转换为路径的结果完全相同。
-
谢谢@crockz。好的,我有一个示例 html 文件,其中包含来自常规 Arial 字体和 cambam 字体的两个版本的路径:jsbin.com/pilonoyeqi/1/edit
-
@crockz。正如你所提到的,我很抱歉我第一次输入了错误的 svg 代码。我刚刚更新了。
-
问题是它们实际上并没有重叠,就像任何其他字体一样,它关闭了路径,但在这种情况下,沿着相反的方向遵循相同的路径。如果您只使用一种字体,我建议您编辑字体 js 文件。
-
谢谢@crockz。我在考虑你的建议。但是我怎么知道我需要为每个字符删除的额外路径是哪一部分?这是示例 font.js 文件:dl.dropboxusercontent.com/u/140225334/…
标签: javascript php svg raphael snap.svg