Значення SVG та viewBox


14

Мені просто цікаво, чи хтось знає, як визначаються viewBoxзначення (тобто viewBox="a b c d").

Я намагаюся зрозуміти функціональність SVG Inkscape, тому те, що я зробив, це створити документ у Inkscape, який є 100pxx 100px, намалював лінію з лівої сторони вікна перегляду (тобто 0горизонтальне значення) в праву сторону (тобто 100горизонтальне значення) .

Як не дивно, проте, коли я зберегти цей документ як файл Plain SVG, а потім відкрити файл в текстовому редакторі, то viewBoxзначення встановлюються viewBox="0 0 26.458333 26.458334"замість, скажімо, viewBox="0 0 100 100".

Хтось знає, як 0 0 26.458333 26.458334визначаються ці значення ( ), і чому, схоже, немає зв’язку між ними та розмірами вікна перегляду?

PS Я знаю, що ви можете редагувати viewBoxвластивість вручну в параметрах документа, але мені все ще цікаво, чому Inkscape встановлює їх на прискіпливі значення.

Відповіді:


19

Inkscape використовує mm як модуль відображення за замовчуванням або блок користувача для вашого документа. Блоки користувача використовуються для зберігання значень у файлі SVG.

<svg width="100" height="100" viewBox="0 0 26.458333 26.458333">

Цей тег описує розмір малюнка 100px x 100px. Атрибут viewBox визначає, що 100px x 100pxеквівалентно 26.458333 x 26.458333 user units.

Коефіцієнт масштабу SVG був би таким 1px / 0.2645 user-unit, який може використовуватись рендерінгом SVG для перетворення всіх значень, що зберігаються в одиницях користувача, у розміри малювання в реальному світі .


У цьому випадку Inkscape хоче зберегти значення у mm, тому він повинен знати, як це pxстосується mm. Специфікація CSS описує, що одиниці абсолютної довжини фіксуються відносно один одного:96px = 1in

Це означає 100px = 1.041666667in = 2.645833333cm = 26.45833333mm

Тож 26.45833333звідси походить.


Якщо ви хочете , Inkscape , щоб зберігати всі ваші цінності в px, ви можете змінити налаштування за замовчуванням для відображення одиниць або користувачів-одиниць , щоб pxу властивостях документа (Файл> Властивості документа> вкладка сторінка> Загальні> Display Units)

  1. За замовчуванням, мм:

Властивості документа, мм

  1. Змінено: px:

Властивості документа px

Експорт того ж документа призведе до наступного тегу SVG:

<svg width="100" height="100" viewBox="0 0 100 100">

Тепер коефіцієнт масштабу SVG є 1px / 1 user-unit.

Якщо ви хочете дізнатися більше про цю тему, у Inkscape Wiki є більш детальне пояснення

Зауваження:

  • Inkscape v0.92 використовує відношення 96px/inInkscape v0.91 і раніше використовує значення90px/in

Ого. Дуже цікаво. Тож була рима і причина до цього. Дуже дякую, що поділилися своїми знаннями!
oldboy

Я пам’ятаю техніку вибілювання, яку ви використовували. Я зазвичай розміщую червоні квадрати навколо важливих частин скріншотів, у вас так симпатичніше.
aaaaaa
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.