我在inkscape here中创建了svg。如何将字体大小(以px为单位)转换为文档中使用的单位(mm)以获取svg
文档大小为mm
。对于两个文本字段,字体大小,给出这样的:
style="...;font-size:31.420084px;..."
所以它在px
给出。现在我想要与文档大小相关的字体的大小。
但是,我应该如何将px
的字体大小转换为mm
?我需要类似dpi
,但该文件没有指定任何东西。
我在inkscape here中创建了svg。如何将字体大小(以px为单位)转换为文档中使用的单位(mm)以获取svg
文档大小为mm
。对于两个文本字段,字体大小,给出这样的:
style="...;font-size:31.420084px;..."
所以它在px
给出。现在我想要与文档大小相关的字体的大小。
但是,我应该如何将px
的字体大小转换为mm
?我需要类似dpi
,但该文件没有指定任何东西。
在你的情况下,你的视框相匹配的文档尺寸:
width="164.28572mm"
height="78.10714mm"
viewBox="0 0 164.28572 78.10714"
这意味着所有单元以下的值的单位为mm。只需指定您的字体大小(不带单位)(或在您使用css时只保留文档不变,并使用px)。
混乱的部分,在SVG是PX始终是用户单位,而不是设备的像素,因为这个原因,你的字体大小以mm已经给...所以font-size:31.420084px
文档中等于font-size:31.420084mm
在视框少文件(其中,用户单位等于设备像素)
<svg viewBox="0 0 100 20" width="100mm" height="20mm">
<text x="0" y="12" font-size="12px">12px</text>
</svg>
<svg >
<text x="0" y="12mm" font-size="12mm">12mm</text>
</svg>
那它得到混乱。在下一个例子中“1毫米”等于3.6用户单位,但由于1个用户单元在真实世界中等于1mm时,一个SVG毫米等于3.6毫米真实...
<svg viewBox="0 0 50 50" width="50mm" height="50mm">
<text x="0" y="5" font-size="1mm">font-size: 1mm</text>
<text x="0" y="10" font-size="3.6">font-size: 3.6</text>
</svg>
Units在SVG有点有线,但很好定义...
该SVGLength Interface有一个方法convertToSpecifiedUnits
。 您可以使用它在SVG中的不同单位之间进行转换。
var l = svg.createSVGLength()
l.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX, 12)
l.convertToSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_MM)
out1.innerHTML = l.valueAsString
svg {
width: 0;
height: 0
}
<svg id="svg">
</svg>
12px = <span id="out1"></span>
SVG文档中所使用的标准DPI是由CSS标准中规定的标准DPI。这是96dpi,或每英寸96个标准CSS像素。
每英寸有25.4毫米。因此,要px
转换为mm
,公式为:
mm = 25.4 * (px/96)
因此,如果我们将您的原始31.420084px
成公式,结果是8.31mm
。
请注意,CSS不会考虑您正在渲染的设备的真实词DPI。它使用固定的每英寸96像素的近似值。因此,您不能依靠尺寸为96px
或25.4mm
的元素在屏幕上或印刷时实际上具有该尺寸。