Почему некоторые зрители / редакторы не открывают этот SVG-файл должным образом?

Рассмотрите этот файл SVG (ссылка box.com; я не могу загрузить его здесь.)

Имеет символ "отмечено" или "отмечено-v", черный на прозрачном. Странно то, что некоторые зрители показывают это правильно, в то время как другие показывают, что он абсолютно пустой, то есть полностью прозрачный. Что касается редакторов, то и LibreOffice Draw, и Inkscape показывают пустой холст при загрузке, в то время как gimp показывает фактическую галочку (она растеризует ее, конечно).

Действительно ли что-то не так с SVG, или это вина приложений? Независимо от того, могу ли я изменить SVG так, чтобы он с большей вероятностью читался правильно?

2 ответа

Решение

Одним из ключей к пониманию файлов SVG является осознание того, что они не похожи на другие, распространенные форматы файлов изображений. Это язык разметки, более похожий на HTML и XML. Это источник вашего SVG-файла:

<!-- This Source Code Form is subject to the terms of the Mozilla Public
   - License, v. 2.0. If a copy of the MPL was not distributed with this
   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
    <path fill="context-fill" fill-opacity="context-fill-opacity" d="M6 14a1 1 0 0 1-.707-.293l-3-3a1 1 0 0 1 1.414-1.414l2.157 2.157 6.316-9.023a1 1 0 0 1 1.639 1.146l-7 10a1 1 0 0 1-.732.427A.863.863 0 0 1 6 14z"/>
</svg>

Тот path заявление ваша галочка. d= Атрибут - это инструкции, которые определяют форму галочки. Думайте об этом как о совершенно прозрачном (невидимом) куске стекла. Стекло существует... но ты его не видишь. Вы можете почувствовать это и его форму... но вы должны сделать больше, чтобы сделать это, чтобы вы могли видеть эту форму.

Здесь у вас нет атрибута инсульта. Штрих определит линию вокруг внешнего края фигуры. Мы можем определить ширину обводки (насколько толстая линия), ее цвет и другие свойства. Не сделав этого... однако... нет никакой линии вокруг нашей невидимой стеклянной формы... поэтому она остается невидимой.

У нас есть свойства заполнения (fill= а также fill-opacity=). Заливка определяет цвет и содержание поверхности вашей фигуры. Однако для свойств заполнения установлено значение context-fill а также context-fill-opacity , Контекстное заполнение является нестандартной функцией. Вероятно, он будет поддерживаться более новой версией основных браузеров (я лично тестировал ее с новейшими версиями Edge, Firefox и Chrome)... однако нет гарантии, что она будет поддерживаться программами просмотра и редактирования изображений, которые с большей вероятностью оставаться ближе к стандартам. Любое приложение, которое не поддерживает эту функцию, может просто полностью ее игнорировать.

И это твоя проблема. У вас нет удара... и в приложениях, которые не поддерживают заполнение контекстом, у вас нет заполнения. Это оставляет вас с этими невидимыми кусочками стекла. Это там... ты просто не видишь этого.

Когда я загрузил файл в Inkscape, он оказался пустым, но Control-A выбрал "все". Используя функцию обводки и заливки в Inkscape, я оставил заливку пустой и добавил цвет обводки.

/images/814853fe18af4a 0e1217824b3c01ed2764b698e8.png

Верхнее изображение имеет ширину обводки 0,265 мм, а нижнее имеет гораздо меньшее значение.

Другие вопросы по тегам