2016-12-26 92 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的元素在屏幕上或印刷時實際上具有該尺寸。

相關問題