关于 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” 是相对坐标)。

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

  • 该文档是使用在线服务从 JPG 创建的。我也更喜欢像素而不是点。关于如何在概念上转换它的任何想法?规范说 1pt 是 1.25px,因此我可以简单地进行转换而没有问题吗?
  • 此外,为了确定,三次贝塞尔曲线的语法是 C c1x c1y c2x c2y x y,其中 (c1x, c1y) 和 (c2x, c2y) 分别是初始点和结束点的控制点的绝对坐标,并且 ( x, y) 是曲线的终点?
  • SVG 规范说 1.25px,但它是一个旧规范。 CSS 2.1 将 pt 定义为 1.3333px – 或更详细地说 – 一个像素为 1/96 英寸,一个点为 1/72 英寸。你的旅费可能会改变? (在三次贝塞尔定义上是的)请记住,”像素”是”CSS 像素”,这是假设您拥有 96dpi 显示器的标准化像素大小。也就是在视网膜显示器上,一个 CSS 像素对应于一组设备像素。
  • 感谢一百万的帮助。我现在对此感到舒服多了。


来源:https://www.codenong.com/12788422/

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?