Дизайн
ManManage Live
1957

Оптимизация и защита: img → SVG → Fonts

Приём не новый, но актуальный.

В закладки

Поисковые системы остро рассматривают производительность сайта (экран загрузки, время перехода в интерактив и другие метрики) при разных условиях: скорости соединения, устройства просмотра и так далее.

Один из критериев нагрузки на трафик — это загружаемые изображения, используемые на сайте. Приемов по их оптимизации множество:

  • Брейкпоинты и медиазапросы в CSS (загрузка заранее подготовленного контента в зависимости от разрешения устройства).
  • JavaScript по оптимизации изображений (дополнительная нагрузка на сайт в виде исполнения скрипта).
  • «Ленивая» загрузка (с Chrome 76) при использовании в HTML атрибута loading="lazy".
  • «Дедовское» сжатие и размещение на хостинге других изображений.

Также стоит отметить, что сейчас развита тенденция использовать SVG (векторные изображения) вместо тех же PNG, JPG.

Например, иконки соцсетей и другие графические элементы, так как с векторной графикой удобнее работать в верстке, она значительно уменьшает нагрузку на трафик и устройство просмотра за счет своих физических свойств и размеров.

Все преимущества можно почитать в других статьях.

Перенос всего, что можно, в вектор — довольно востребовано на рынке «фриланса». Другое дело, когда векторная графика не берется из открытых источников, а рисуется на заказ. Существуют способы защиты таких изображений от копирования. Самый надежный — это использование шрифтов, то есть конвертирование ваших SVG в файл шрифтов и стилей.

Рассмотрим на примере:

Есть исходная картинка в формате PNG и SVG.

Домик no name

Создадим из нее файл шрифтов. Сервисов для этого существует множество, они бесплатные. Опишу на примере одного из них (не реклама). Загружаем наше SVG на сервис:

1. Импортируем. 2. Выбираем. 3. Генерируем​

Далее дополнительная кастомизация (информация об авторстве, метод подключения и так далее). Скачиваем готовый архив. В нем для работы нужны только папка Fonts и файл стилей:

По умолчанию генерируется файл style.css. В данном случая я его переименовал.

Верстаем три блока. Подключаем файлы скаченных шрифтов.

​Верстка первой странички

В первом блоке загружен обычный PNG, во втором — SVG, в третьем символ через тег <i>. Размеры изображения для первых двух блоков идет через img, для третьего — через font-size (размер шрифта).

Кстати, классы генерируются на моменте создания шрифта. Сгенерированный вами класс можно посмотреть в файле demo.html через инструмент разработчика:

Размеры нашего домика в этих форматах:

Размер PNG
Размер SVG
Размер в шрифте​

Разница в размере между ними существенная. При этом в виде файла шрифтов он выше, чем у SVG, так как увеличивается само количество файлов. Попытаемся сохранить наш домик со страницы.

Домик в .png и .svg сохраняется в своем формате
​При клике на домик в виде символа →
​Сохранение возможно только в формате всего HTML
Через инспектор видим, что это класс​

Если даже попытаться полностью скопировать весь файл шрифтов, то обратной генерации в графический элемент будет невозможно. Таким образом, ваше изображение легким «копипастом» забрать нельзя.

Напоследок — аудит на реальном хостинге. Указывается лишь только формат PNG, оказывающий какую-никакую нагрузку:

Понимаю, что качество подготовки скринов и текста оставляет желать лучшего, но я хотел донести информацию, которая, возможно, будет полезна кому-нибудь.

Заранее благодарен за прочтение и ваше время!

Материал опубликован пользователем.
Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "ManManage Live", "author_type": "self", "tags": [], "comments": 21, "likes": 15, "favorites": 71, "is_advertisement": false, "subsite_label": "design", "id": 89674, "is_wide": false, "is_ugc": true, "date": "Fri, 25 Oct 2019 16:26:02 +0300", "is_special": false }
0
{ "id": 89674, "author_id": 283442, "diff_limit": 1000, "urls": {"diff":"\/comments\/89674\/get","add":"\/comments\/89674\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/89674"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199114, "last_count_and_date": null }
21 комментарий
Популярные
По порядку
Написать комментарий...
7

если вы всю свою эксклюзивную графику в woff или otf "спрячете", да я вам только спасибо скажу, збс, теперь можно всю ее выкачать за пару кликов

Ответить
4

Если даже попытаться полностью скопировать весь файл шрифтов, то обратной генерации в графический элемент будет невозможно. Таким образом, ваше изображение легким "копипастом" забрать нельзя.

Лёгким нет. Но просто скачивается сам файл шрифта. Устанавливаем его в систему. Потом в Corel Draw/Illustrator (кому что больше нравится) через диспетчер символов вставляем интересующий нас и переводим его в кривые.

Ответить
0

Если это попробовать через панель разработчика, файл шрифтов выгрузится только в формате woff2, из которого извлечь не получится.
Хотя, я попробую ваш способ.

Ответить
1

Есть даже онлайн конвертеры woff2 в ttf/otf.

Ответить
0

ээй, это же мой излюбленный способ 

Ответить
0

Woff2 без проблем перегоняется в OTF. 

Ответить
1

Если кто-то хочет по-быстрому «тиснуть» ваш логотип или иконку, то можно просто «принт-скином». Нужен размер больше - увеличиваем масштаб в браузере и скриним. От воровства - так себе способ.

Ответить
1

Меня бесит, когда люди прячут графику. Я ведь всё равно выкорчую - просто потрачу чуть больше времени. А если не смогу - всегда есть принтскрин, фотошоп, перо, или еще проще - гугл, в котором всё уже сделано))

Ответить
0

Подскажите пожалуйста, что за программа на 4-м скриншоте, в которой Вы работаете?
Хочу так же править html-страницы, а то я в хостинговском редакторе это делаю.

Ответить
1

Это Visual Studio Code. Она бесплатная, продукт Microsoft.
Также установите разные плагины, обязательно Emmet и другие. Много статей об этом написано.

Ответить
0

Я могу ошибаться, но роде бы эммет из коробки идет)

Ответить
0

 обратной генерации в графический элемент будет невозможно

В теории это вполне реализуемо:

1. Преобразовать в картинки все символы;
2. Шрифт это набор инструкций по канвасу, что в целом можно имитировать печатью на том же канвасе PostScript или PDF.

А на практике никто за такую хрень не готов платить.

Кстати основная идея с шрифтами подкрашивать элементы и делать их отключенными (шейдить).

В целом за сервис спасибо. Попробую поиграть с сервисом. Даже интересно.

А нет ли статьи со списоком всех инструментов для преобразования.

Ответить
0

1. Это бесплатно. Сервис по генерации бесплатный. Там есть просто уже готовые изображения по всяческим подпискам. А свою графику генерить - хоть сколько и как угодно. 
2. Шрифт - это кодирование в разных форматах. Обратных генераций нет. Попробуйте.
3. Имитацией печатью - возможно, но это дополнительная работа в редакторах.
4. Шрифт - он будет выглядеть в любом размере на любых дисплеях одинаково качественно, в отличии от .png/.svg.

Ответить
1

Шрифт - он будет выглядеть в любом размере на любых дисплеях одинаково качественно, в отличии от .png/.svg.

SVG - это кривые. Это не растр. Качество от размера не зависит НИКАК

Ответить
1

Не всегда. Внутри svg можно использовать растр. И тогда качество будет зависеть от размера.

Ответить
1

Ну это уже извращения

Ответить
1

Есть люди, которые топят за то, чтобы svg заменил html+css. Вот это действительно извращение. )

Ответить
0

Только вот запихивание такого SVG  в шрифт явно не изменит ситуацию в лучшую сторону :)

Ответить
0

Я бы сказал, что такие шрифты в 2019 году, это в принципе ошибка. Но тут уж на любителя.

Ответить
1

Совершенно согласен. Поспешил. SVG в моем комментарии лишний.

Ответить
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovx", "p2": "glug" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Баннер в ленте на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "disable": true, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } }, { "id": 20, "label": "Кнопка в сайдбаре", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cgxmr", "p2": "gnwc" } } } ] { "page_type": "default" }