SVG и DPI, абсолютные единицы и пользовательские единицы: Inkscape по сравнению с Firefox по сравнению с ImageMagick

Я пытаюсь автоматически сгенерировать файл SVG, предназначенный, чтобы быть распечатанным на определенном размере (A4). Я хочу использовать путь в нем, который только позволяет 'пользовательские единицы', не 'абсолютные единицы'.

Мне кажется, что невозможно 'опубликовать' файл SVG, который имеет абсолютные единицы (например, размер документа) и путь где угодно, потому что я не могу заставить это работать правильно через средства просмотра.

Существует ли способ получить некоторую непротиворечивость в рендеринге, как определение 'DPI по умолчанию'?

Или помещенный по-другому: я могу заставить свой пример ниже представлять то же во всех средствах просмотра, не отказываясь от абсолютных единиц вообще?

Похожие страницы: Существует ли способ вынудить какое-либо из приложений ниже представить изображение таким же образом как одного из других? (Например, Я попробовал -density опция 'преобразования', но я не мог заставить вывод соответствовать Inkscape или Firefox' вывод.)


Пример:

Я создал один файл SVG, с тремя черными квадратами (реагируют) с красной диагональю (путь):

  • Оставленный: квадрат и диагональ в пользовательских единицах
  • Середина: квадрат и диагональ в дюйме (казался мне наиболее логическим выбором, но не позволяется),
  • Правильно: квадрат в мм, диагональ в пользовательских единицах

Который представляет по-другому в различных средствах просмотра:

  • Inkscape: 90 DPI, все квадраты тот же размер, красные диагональные соответствия
  • Firefox: 96 DPI?, последние квадраты к большому (или диагональ к короткому)
  • Преобразуйте: 72 DPI, последние квадраты к маленькому (или диагональ к длинному)

Код:



  
    
    
  
  
    
    
  
  
    
    
  

Inkscape (мое 'средство просмотра' по умолчанию):

Alt text

Firefox (отмечают, что красная строка не достигает правого нижнего угла. Я сделал снимок экрана и обрезал вид произвольно):

Firefox

ImageMagick (преобразовывают, никакие опции помимо данных имен файлов):

Alt text

32
задан Peter Mortensen 7 January 2017 в 10:25
поделиться

1 ответ

Все размеры в теге path указаны в пользовательских единицах измерения.

Вы не можете указать абсолютные единицы в теге path , поэтому путь в среднем квадрате не отображается.

Самый простой способ, который я нашел, - это установить единицы измерения с помощью окна просмотра :

  • Установите ширину и высоту в дюймах.
  • Затем установите такое же окно просмотра.
  • Устанавливает пользовательскую единицу измерения в один дюйм.
  • Все размеры затем указываются в дюймах (примечание: я использовал нижний регистр l в теге пути, чтобы указать относительное перемещение)

Это правильно отображается в Inkscape и Firefox.

<svg
    xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
    version="1.1"
    width="8in"
    height="4in"
    viewBox="0 0 8 4">

    <g transform="translate(4,0.5)">
        <rect
            width="1.111"
            height="1.111"
            x="0.1111"
            y="0.1111" />
        <path d="M 0.1111,0.1111 l 1.111 1.111" style="stroke: #ff0000;stroke-width:0.01"  />
    </g>
</svg>
29
ответ дан 27 November 2019 в 21:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: