2016-12-26 83 views

回答

2

在你的情况下,你的视框相匹配的文档尺寸:

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>

1

SVG文档中所使用的标准DPI是由CSS标准中规定的标准DPI。这是96dpi,或每英寸96个标准CSS像素。

每英寸有25.4毫米。因此,要px转换为mm,公式为:

mm = 25.4 * (px/96) 

因此,如果我们将您的原始31.420084px成公式,结果是8.31mm

请注意,CSS不会考虑您正在渲染的设备的真实词DPI。它使用固定的每英寸96像素的近似值。因此,您不能依靠尺寸为96px25.4mm的元素在屏幕上或印刷时实际上具有该尺寸。

相关问题