对于绘图应用程序,我正在探索使用SVG并且无法理解长度单位如何应用于样式 .
在此示例中,SVG元素的宽度和高度以英寸为单位,矩形和文本在这些用户单位中正确定位,但字体大小和笔触宽度样式属性不能像我期望的那样使用单位 .
text.labela {
fill: green;
font-family: sans-serif;
font-size: 0.1in;
stroke: none;
text-anchor: middle;
}
text.labelb {
fill: red;
font-family: sans-serif;
font-size: 0.1px;
stroke: none;
text-anchor: middle;
}
rect.box {
fill: none;
stroke: black;
stroke-width: 0.01in;
}
<svg width="4in" height="4in" viewBox="0 0 4 4" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<rect class="box" x="0" y="0" width="4" height="4" />
<text class="labela" x="2" y="3">a</text>
<text class="labelb" x="2" y="2">b</text>
</svg>
为了获得0.1英寸宽线和0.1英寸高度的文字,我该怎么办?
(在我的实际应用中,有嵌套的坐标系,所以我真的希望能够指定“0.1英寸”并且无论视口和坐标系统如何都能正常工作 . )
谢谢!
1 回答
您定义的每个尺寸都是局部坐标系中的尺寸 . 您 Build 的每个本地坐标系中px和英寸remains the same的相对大小,与设备相关的数字:
令人困惑的是,在CSS样式表中编写大小,有时你被迫使用一个单元,即使它是"px" . That is not a screen pixel,但您将在属性中使用没有单位标识符的本地坐标系的单位:
您可以 Build 的唯一明智的关系是以抽象单位在SVG中编写所有内容(如果需要,添加“px”以满足CSS规则),然后以英寸为单位设置SVG的宽度/高度 .
在那之后,你必须自己计算:下面例子中的1个视口单元被映射到0.01in,所以10px的字体大小相当于0.1in,在缩放组中它等于0.5in,所以你必须使用字体大小为2px,最终具有相同的真实世界大小 .
(不要使用非常小的viewBox大小 . 你会遇到bugs . )