Tôi cố gắng tự động tạo tệp SVG nhằm in trên một kích thước nhất định (A4). Tôi muốn sử dụng một con đường trong nó, mà chỉ cho phép 'đơn vị người dùng', không phải 'đơn vị tuyệt đối'. Dường như với tôi rằng không thể 'xuất bản' tệp SVG có đơn vị tuyệt đối (ví dụ: kích thước tài liệu) và đường dẫn ở bất kỳ đâu, bởi vì tôi không thể làm cho nó hoạt động bình thường trên người xem.SVG và DPI, đơn vị tuyệt đối và đơn vị người dùng: Inkscape so với Firefox so với ImageMagick
Có cách nào để có được sự nhất quán trong hiển thị, như chỉ định 'DPI mặc định' không?
Hoặc đặt khác: Tôi có thể lấy ví dụ dưới đây để hiển thị giống nhau trong tất cả người xem mà không bỏ qua các đơn vị tuyệt đối không?
Liên quan: Có cách nào để buộc bất kỳ ứng dụng nào bên dưới hiển thị hình ảnh giống như một trong các ứng dụng khác không? (Ví dụ: Tôi đã thử các -density
tùy chọn 'biến đổi', nhưng tôi không thể nhận được đầu ra cho phù hợp với đầu ra của Inkscape hoặc Firefox.)
Ví dụ:
tôi đã tạo ra một tập tin SVG, với ba hình vuông màu đen (rect) với một đường chéo (đường dẫn) màu đỏ:
- Left: vuông và đường chéo trong các đơn vị sử dụng
- Trung: vuông và đường chéo trong inch (dường như tôi sự lựa chọn hợp lý nhất, nhưng là không được phép)
- Phải: vuông mm, đường chéo trong các đơn vị sử dụng
nào làm cho khác nhau trong khán giả khác nhau:
- Inkscape: 90 DPI, tất cả các hình vuông cùng kích thước, trận đường chéo đỏ
- Firefox: 96 DPI ?, các ô vuông sau lớn đến ngắn (hoặc đường chéo thành ngắn)
- Chuyển đổi: 72 DPI, hình vuông sau thành nhỏ (hoặc đường chéo thành dài)
Code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1"
width="200mm"
height="100mm"
>
<g transform="translate(50,50)">
<rect
width="100."
height="100."
x="10"
y="10" />
<path style="stroke: #ff0000" d="M 10 10 L 110 110" />
</g>
<g transform="translate(200,50)">
<rect
width="1.111in"
height="1.111in"
x="0.1111in"
y="0.1111in" />
<path style="stroke: #ff0000" d="M 0.1111in 0.1111in L 1.111in 1.111in" />
</g>
<g transform="translate(350,50)">
<rect
width="1.111in"
height="1.111in"
x="0.1111in"
y="0.1111in" />
<path style="stroke: #ff0000" d="M 10 10 L 110 110" />
</g>
</svg>
Inkscape (mặc định của tôi 'xem'):
Firefox (lưu ý đường đỏ không đạt góc dưới bên phải. Tôi đã thực hiện một ảnh chụp màn hình và cắt loại tùy tiện):
ImageMagick (chuyển đổi, không có tùy chọn bên cạnh tên tập tin nhất định):
Tôi tìm thấy http://stackoverflow.com/questions/1132269/can-i-use-mixed-units-with-path-element hữu ích để giải thích sự cố. – BlackShift
Inkscape [0.92] (http://wiki.inkscape.org/wiki/index.php/Release_notes/0.92#Important_changes): Độ phân giải mặc định đã được thay đổi từ 90dpi thành 96dpi, để phù hợp với tiêu chuẩn CSS. – qwert2003