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