Трудности Favicon
Готовясь к студенческой олимпиаде по web-разработке, я понял, что надо уделить внимание мелочам. Вот, например, favicon. Что может быть проще? Положил favicon.ico в корень и радуешься жизни. А вот и не все так просто.
- Во-первых, в идеале favicon.ico должен содержать иконки следующих размеров: 16х16, 24x24, 32x32, 48x48, 64x64.
- Во-вторых, еще бы не помешали иконки в .png следующих размеров (для живых тайлов в IE11): 70x70, 150x150, 310x310.
- В-третих, еще бы нужна иконка в .png размеров 195x195 для Opera Speed Dial.
- Наконец, иконки для iOS и Android нужны следующих размеров (для поддрежки как и iOS ≤ 6, так и iOS ≥ 7): 57х57, 72x72, 76x76, 114x114, 120x120, 144x144, 152x152.
Конечно, это все необязательно, но уж точно хуже не будет. Но как генирировать такое кол-во иконок?
PSD шаблон?
Сначала я нашёл .psd шаблон, который автоматически генерит иконки нужных размеров. Но он не рассчитан под новые размеры, которые рекоммендует Apple после выхода iOS 7 (76x76, 120x120, 152x152). Не беда! Форкнул, отредактировал, закоммитил, запушил. Теперь с блекджеком поддержкой iOS 7. Но все же как то это не удобно: фотошоп, да и .ico файл сам не генерит. Слижком много движений руками.
Скрипт?
Нашёл скрипт webicon.sh, который генерит .png разного размера, затех из них делает .ico и показывает html код, который надо вставить в шапку страницы. Но меня он тоже не устроил. Форкнул, изменил. В отличиее от первоначального варианта, моя версия скрипта:
- Оптимизирует каждый сгенерированный .png коммандой
optipng
(новая зависимость) - Иконки для iOS (и Android) получают название в соответствии с шаблоном: apple-touch-icon-РАЗМЕРхРАЗМЕР-precomposed.png
- Иконки для iOS (и Android) делаются непрозрачными (прозрачный заменяется на белый)
- favicon.ico может быть прозрачной
- favicon.ico включает в себя следующие размеры: 16х16, 24x24, 32x32, 48x48, 64x64
- Те .png, которые необходимы только для генерации .ico, удаляются
- Добавлена генерация .png размеро 195х195 для поддержки Opera Speed Dial
- Отредактирован вывод html (улучшена поддрежка iOS, добавлена поддержка Opera Speed Dial)
- Добавлено изображение для теста
Теперь скрипт генерит следующие файлы:
- apple-touch-icon-57x57-precomposed.png
- apple-touch-icon-72x72-precomposed.png
- apple-touch-icon-76x76-precomposed.png
- apple-touch-icon-114x114-precomposed.png
- apple-touch-icon-120x120-precomposed.png
- apple-touch-icon-144x144-precomposed.png
- apple-touch-icon-152x152-precomposed.png
- favicon-70.png
- favicon-150.png
- favicon-195.png
- favicon-310.png
- favicon.ico
После генерации скрипт показывает следующий код, который нужно вставить в <head>
сайта:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
|
Скачать скрипт. Перед использованием необходимо установить imagemagick и optipng. На маке легче всего это сделать через homebrew. Сам скрипт лучше всего его положить в папку, которая включена в $PATH, чтобы с легкостью запускать его просто коммандой webicon.sh
.