关于 xml:SVG 坐标系 – 点与像素

SVG Coordinate System - points vs. pixels

通过阅读 SVG 1.1 规范,我试图了解用于定义初始视口的单位与文档其余部分中使用的单位之间的关系。

如果视口最初是使用点定义的
<svg width="800pt" height="1002pt" viewBox="0 0 800 1002" version="1.1">
并且文档的其余部分没有单位标识符,它是否也假定了点,或者它是否默认为某些东西?根据规范的这一部分:

When a coordinate or length value is a number without a unit identifier (e.g.,"25"), then the given coordinate or length is assumed to be in user units (i.e., a value in the current user coordinate system).

有问题的 SVG 文档有一个 d 值为 M 50.91 9.82 L 51.98 10.04 C 53.51 12.71 52.60 16.03 52.75 18.97 的路径。我读到移动到(50.91pt,9.82pt),画一条线到(51.98pt,10.04pt),然后画一条三次贝塞尔曲线到(52.60pt,16.03pt)。

这些正确吗?


你是对的。如果初始宽度/高度以磅为单位定义,并且与视图框声明(确定用户单位和实际尺寸之间的比率)匹配,则文档其余部分的默认单位将为 1pt。

cf: http://www.w3.org/TR/SVG/coords.html#SVGInitialUserCoordinateSystem

(但是,我应该指出,您对三次贝塞尔曲线的解释是不正确的 - 目标点是 52.75、18.97(又名前两组坐标指定控制点,而不是目标点。另请注意,大写"C" 表示绝对坐标(而小的 "c" 是相对坐标)。

(另外,只是好奇——但你为什么选择点而不是像素?这似乎有点不寻常,除非你打算用文本做有趣的事情。)