SVG坐标系 - 点数与像素数

Why*_*rrh 9 xml svg

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

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

当坐标或长度值是没有单位标识符的数字(例如,"25")时,则假定给定坐标或长度是用户单位(即,当前用户坐标系中的值).

有问题的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).

这是否正确?

Mic*_*any 11

你是对的.如果初始宽度/高度以点为单位定义,并且与视图框声明(建立用户单位和实际大小之间的比率)匹配,那么文档其余部分的默认单位将为1pt.

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

(但是,我应该指出你对三次贝塞尔曲线的解释是不正确的 - 目标点是52.75,18.97(也就是前两组坐标指定控制点,而不是目标点.还要注意首都"C")表示绝对坐标(相对于小"c"是相对的)).

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

  • 那么SVG规格说1.25px,但这是一个旧的规范.CSS 2.1将pt定义为1.3333px - 或更详细地 - 将像素定义为1/96英寸,将点定义为1/72英寸.你的旅费可能会改变?(并且在立方贝塞尔定义上是的)并且记住"像素"是"CSS像素",这是标准化像素大小,假设您有96dpi监视器.视网膜上的Aka显示CSS像素对应于一组设备像素. (5认同)