font-feature-settings: каков правильный синтаксис?

я купил webfont, который поддерживает некоторые функции открытого типа, и, конечно, я хочу их использовать.
К сожалению, я не смог найти источник в интернете, который объясняет лучший способ использования синтаксиса-мне кажется, что font-feature-settings еще один пример префикса hell.

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

.element {
    -webkit-font-feature-settings: "kern" 1, "liga" 1, "case" 1;
       -moz-font-feature-settings: "kern=1", "liga=1", "case=1";
       -moz-font-feature-settings: "kern" on, "liga" on, "case" on;
        -ms-font-feature-settings: "kern" 1, "liga" 1, "case";
         -o-font-feature-settings: "kern", "liga", "case";
            font-feature-settings: "kern", "liga", "case";
}

более конкретно,-moz синтаксис кажется странный. Некоторые источники утверждают, что это синтаксис для использования:

-moz-font-feature-settings: "liga=1";  /* Firefox 14 and before */
-moz-font-feature-settings: "liga" on; /* Firefox 15 */

другие делают это просто так:

-moz-font-feature-settings: "cswh=1";
-moz-font-feature-settings: "cswh";

то же самое -webkit; некоторые пишут так:

-webkit-font-feature-settings: "liga" on, "dlig" on;

в то время как другие делают это так:

-webkit-font-feature-settings: "liga", "dlig";

или такой:

-webkit-font-feature-settings: "liga" 1, "dlig" 1;  

и на вершине, есть также text-rendering: optimizelegibility; что, кажется, то же самое, что "kern" и "liga" по крайней мере в браузерах webkit.

так, что правильный, пуленепробиваемый способ использования функций шрифта открытого типа в интернете в 2013 году?

2 ответов


Ну, лучшее место, чтобы посмотреть, как 2013 веб-функций должны работы В3 С помощью CSS3 спецификации:

, если присутствует, значение указывает индекс, используемый для выбора символа. Значение должно быть 0 или больше. Значение 0 указывает, что функция отключена. Для логических функций, значение 1 включает эту функцию. Для не-булевых объектов значение 1 или больше включает объект и указывает индекс выбора объекта. Ля значение " on "является синонимом 1, а" off " является синонимом 0. Если значение опущено, предполагается значение 1.

это означает, что "liga" 1, "liga" on и liga все делают то же самое.

как отметил BoltClock в своем комментарии к вопросу,"feature=value" недопустимый синтаксис и, похоже, что-то конкретное для Firefox.

Opera и IE (не поддерживают font-feature-settings на всех, так что -o-* и -ms-* атрибуты предположительно, бесполезно.

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

.element {
    -webkit-font-feature-settings: "kern", "liga", "case"; /* No variation */
       -moz-font-feature-settings: "kern=1", "liga=1", "case=1"; /* Firefox 4.0 to 14.0 */
       -moz-font-feature-settings: "kern", "liga" , "case"; /* Firefox 15.0 onwards */
       -moz-font-feature-settings: "kern" 1, "liga" 1, "case" 1; /* Firefox 15.0 onwards explicitly set feature values */
            font-feature-settings: "kern", "liga", "case"; /* No variation */
}

http://hacks.mozilla.org/2010/11/firefox-4-font-feature-support/ вероятно, было бы хорошим местом для начала, а также спецификация.

следует также отметить, что вы не получите полностью пуленепробиваемый способ использования функций шрифта в том смысле, что он будет работать во всем браузере. Согласно caniuse, font-features имеет своего рода отрывочную поддержку (ничего вообще в Opera, ничего до IE10, ничего в большинстве мобильные браузеры, частичные и префиксные в том, что осталось), частично из-за того, что он все еще находится в "рабочий проект" Статус что означает, что все еще есть шанс, что это изменится. Поэтому было бы неплохо пока не зависеть от этой функции и ожидать, что она просто не будет работать во всех браузерах.

на другой ноте, так как вы упомянули " префикс ада "(что на самом деле не так уж плохо-префиксы должны быть удалены с течением времени; знаете ли вы, что вам больше не нужно приставки вообще для border-radius Если вы не застряли, поддерживая действительно древние браузеры?)- вы можете посмотреть в один из препроцессоров CSS, таких как LESS или Sass. Эти инструменты могут помочь вам с передовым CSS, введя префиксы и правильный синтаксис для вас, в то время как вы держите свой источник чистым с объявлениями, которые следуют стандартам W3C.