【发布时间】:2014-10-25 19:33:26
【问题描述】:
我正在尝试创建 SVG 字体,所以我需要创建一些路径。其中一个字母由以下路径定义:
我用svgwrite创建的,通过创建两个circles和一个rect,然后用inkscape取两个圆的差和与直线的交点,像这样:
我的问题是我是否可以直接使用 SVG 或 svgwrite 做到这一点?要么进行布尔运算,要么创建一个与上述行为相同的路径。
我尝试创建一个黑白圆圈,其路径如下:
d="M0,128 A128,128,1,1,0 0 127.9 Z\
M 32 128 A 96 96 1 1 0 32 127.9 Z"
fill="#000000", stroke = "none", fill-rule="evenodd"
但是,SVG 字体编辑器无法识别此环(它只是创建一个黑色圆盘)。
我也尝试创建路径组合(外圆、内圆、水平线)
d="M0,128 A128,128,1,1,0 0 127.9 Z\
M 32 128 A 96 96 1 1 0 32 127.9 Z \
M 38 128 l 0 15 l 180 0 l 0 -30 l -180 0 z"
虽然我在打开 SVG 时可以看到正确的结果,但字体编辑器将无法识别创建的路径,如下所示:
有没有办法以编程方式生成上面第一张图片的路径?
【问题讨论】:
-
似乎您可以在 SVG 中将其作为由三个单独的子路径组成的显式复合路径 - 外圆加上上半圆和下半圆(通过椭圆弧曲线) - 以及适当的填充规则。您的字体编辑器可能能够处理此问题,因为它不必通过形状差异计算任何路径本身。
-
@martineau,这正是我的问题。你如何创建一个 >?我的尝试(见 d 和 fill-rule="evenodd")在我的描述中,但我不知道如何改进它们。
-
我并不是在建议相同的 3 个子路径。第一个是外部的,一个完整的圆(就像你一样),但另外两个都是封闭的椭圆弧曲线(上部和下部的部分圆)。很遗憾,我的评论中无法包含图片。
-
这是一个image,显示了我认为您需要的子路径。
标签: python svg svg-filters svg-font