Unicode для мира нескольких устройств

Время назад, я работал на веб-сайте, который требует ряд иконок.”Нет проблем”, подумал я.”Я знаю, как с этим справиться.Я буду использовать @font-face набор иконок для экранов с высоким разрешением.Это будет один файл, чтобы уменьшить HTTP запросов, и я буду включать только те значки, которые мне нужно, чтобы уменьшить размер файла «

“Я даже использовать символ Unicode в качестве основы иконы, так что если @font-face не поддерживается, то пользователь будет видеть что-то вроде предполагаемого значок.” Я чувствовал себя довольно доволен собой .

То есть, пока я не столкнулся страницу в лаборатории устройства .

На некоторых устройствах, число икон не показывая.Тем не менее, на тех же устройствах, другие были, так ясно, что она не была @font-face Вопрос.Он должен был основной Unicode .

Что делать,

Я был счастлив с основными персонажами Unicode, потому что они дали хороший запасной вариант для пользователей на Windows Phone 7, Opera Mini и старые устройства BlackBerry, которые не поддерживают @font-face.Вместо этого, я хотел, чтобы определить, какие символы Unicode я мог спокойно использовать .

Таким образом, я начал делать некоторые испытания.И это привело к еще некоторое тестирование, а затем еще несколько .

Пока я смотрел на 107 символов Unicode на 78 устройств и 5 экранами читателей.Я буду честен — это не самое веселое я когда-либо имел.Итак, я спасу вас от неприятностей и поделиться некоторыми из проблем и потенциальных решений, которые я столкнулся .

Зачем беспокоиться

Но прежде чем мы перейдем к этому, давайте просто убедитесь, что это все стоит .

Why you should bother about unicode. 4
Слева направо: @font-face значок с помощью лигатуры в Chrome;@font-face значок с помощью лигатуры в Internet Explorer 9 (да-да, ничего там);@font-face значок с помощью запасной вариант Unicode в Opera Mini;@font-face значок с помощью PUA код точки в Opera Mini (да-да, ничего там).( Большая version 5 )
SVG and @fontface subpixel rendering. 6
Слева: SVG с оттенками серого сглаживанием.Справа: @font-face значок с субпиксельной рендеринга.(И в Firefox).( Большая version 7 )

(О, и если я слышу ропот “? Opera Mini Никто не использует, что,” то считайте, что есть 70 млн больше, Opera Mini пользователей, чем iPads 8 . В мире)

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

Как вы это сделать, то

Если вы не использовали символы Unicode с @font-face икон, не волнуйтесь.Такие инструменты, как IcoMoon __44 | 9 сделать его простым.Когда вы выбрали значки, которые вы хотите использовать, и нажал генерировать шрифт, вы увидите страницу, которая показывает все выбранные вами значки с их именем и код точки Unicode, что они будут отображаться на.Это, как правило, что-то вроде e600, и это число, что вам нужно, чтобы заменить шестнадцатеричное значение выбранного вами персонажа Unicode .

Tools like IcoMoon make it simple to generate icon fonts. 10
Инструменты, как IcoMoon сделать его простым для создания иконок шрифты.( Большая version 11 )

Итак, как вы знаете, что Unicode символ использовать?Вы можете пройти через один из многих ресурсов, которые перечисляют все символы 110000, но вы, вероятно, есть лучшие вещи, чтобы сделать. Shapecatcher 43 12 делает жизнь немного легче: Нарисуйте форму вы после, и он будет возвращать список похожие символы .

Shapecatcher will return a selection of similar looking icons for you. 13
Shapecatcher вернет выбор подобных ищут иконок для вас.( Большая version 14 )

Выберите тот, который вы больше всего нравится, скопируйте шестнадцатеричное значение Unicode, и вставьте его в IcoMoon.После того как вы сделали это для всех ваших иконок, скачать @font-face пакет как обычный .

Итак, какие символы вы должны использовать

Ну, я должен буду отложить до ответа Джереми Кейта за все о Сети: “. Это depends 15 ” В ходе тестирования, поддержка любого данного символа Unicode меняется чрезвычайно (ипо “поддержке”, я имею в виду, что либо @font-face появляется значок, который появляется или основной Unicode символ, а не пользователя, видя пустую прямоугольник или знак вопроса или вообще ничего).Даже Unicode символов в одном “ block __47 | 16 ” связанных символы часто имеют совершенно разные уровни поддержки .

Но я могу предоставить небольшую помощь.После того, как вы знаете, какой Unicode символ, который вы хотите использовать, запустить его через Unify __55 | 17 , которая даст вам счет поддержки на основе устройств, которые я проверил с тех пор .

Если ты счастлив ни с @font-face значок или символ Unicode отображается, вы должны увидеть очень высокие уровни поддержки.Некоторые иконы работать на все, что я испытывал до сих пор .

Большой Исключением является Emoji characters 18 ,которые я хотел бы держаться подальше от.Около половины из устройств, которые я проверил на не показывают @font-face значок, и многие не показывать ничего значимого вообще.Кроме того, IOS заменяет их фиксированного размера цветных графики, таким образом пытаясь масштабировать их с font-size не будет работать .

Variation in Emoji characters. 19
Изменение Emoji символов.Слева направо: Firefox (Windows 7), Chrome (Windows 7), Chrome (Android 4.2.1), Opera (Windows 7) и Safari (IOS).( Большая version 20 )

Кроме того, если устройство может оказывать характер Unicode, то, как правило, также быть в состоянии вынести @font-face значок, который использует этот символ.Таким образом, вы должны будете принять решение о компромиссе: Использование шрифта значок дает вам больше контроля над дизайном, но тогда вы бы добавляя к весу страницы и задержки рендеринга иконы до шрифта не загружается .

Если вы используете только символ Unicode напрямую, то будьте готовы к различным визуальных стилей.Даже на том же компьютере, браузеры могут оказать тот же характер, совершенно по-разному .

Unicode character 260E shown in Firefox, Chrome, Internet Explorer and Opera on the same Windows 7 machine, and on iOS. 21
Unicode символ 260E показано на Firefox, Chrome, Internet Explorer и Opera на той же машине Windows 7, а на IOS.( Большая version 22 )

Во многих проектах, последовательность и контроль вы получаете от использования @font-face значок стоит.Ввод только иконки, которые вам нужно в файле шрифта позволит свести к минимуму время загрузки .

Сказать что-либо более о @font-face икон бессмысленно, потому что Зак Leatherman написал такие отлично и хорошо проработанный article 23 .

Accessibility

Зак смотрит в глубину на доступности последствий с помощью значков на этом пути, и я хотел бы добавить несколькомысли .

Есть две основные проблемы здесь: чтения с экрана либо полностью игнорируют значок (который оставил бы пользователь не зная, что там что-то есть, чтобы взаимодействовать с) или объявить что-то, казалось бы, не имеет значения.Например, если вы использовали символ Unicode 2261 для значка “бургер”, это будет либо игнорироваться или будет объявлено как “Equal” или “идентичны”, в зависимости от программы чтения с экрана.Ни один из них поможет пользователю понять, что этот элемент делает .

Лучший подход зависит от того, что икона для.Если оно лишь добавляет визуальный процветать в текстовой метки или заголовка, то я рекомендую скрывая значок чтения с экрана.В этом случае, вместо добавления иконок шрифты непосредственно к элементу стандартным образом (т.е. с помощью :before 33 ~ или | CSS псевдо-элемент), добавить его в промежуток внутри элемента.Таким образом, вы можете добавить aria-hidden="true" размаху, что позволит предотвратить его от объявил в разумное количество экрана readers 24 .

<span aria-hidden="true">≡</span> Menu

Тем не менее, если значок будет использоваться самостоятельно, без ничего еще, чтобы обеспечить значение или контекст, то я рекомендую скрывая значок, как и раньше, но добавив текстовую метку, которая скрыта визуально.Это обеспечит реплику, что есть что-то взаимодействовать с .

<style>
    .visiblyHidden {
    /* http://css-tricks.com/places-its-tempting-to-use-display-none-but-dont/ */
        position: absolute;
        overflow: hidden;
        clip: rect(0 0 0 0);
        height: 1px; width: 1px;
        margin: -1px; padding: 0; border: 0;
    }
</style>

<span aria-hidden="true"> ≡ </span><span class="visiblyHidden">menu</span>

Ли font-family Помощь

Я слышал рекомендацию, что вы должны включать шрифты Arial, как MS Unicode в шрифте семью стек, который используется для отображения символов Unicode, но это не гарантирует, что появится символ для всех.Если браузер не может найти шрифт с требуемым характером Unicode из тех, кого вы перечислили в font-family декларации, то он будет пытаться найти любой шрифт в ОС, которая будет отображать его .

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

Всеми с …

Если вы хотите прочитать полностью статью, посетите сайт наших спонсоров

Comments are closed.