2013-03-01 14 views
16

Kupiłem webfont, który obsługuje niektóre funkcje typu otwartego i oczywiście chcę z nich korzystać.
Niestety, nie udało mi się znaleźć źródła online, które wyjaśnia najlepszy sposób użycia składni - wydaje mi się, że kolejny przykład piekła prefiksowego to font-feature-settings.ustawienia font-feature: Jaka jest prawidłowa składnia?

W tej chwili mam napisane tak, ale nie jestem pewien, czy obejmuje ona naprawdę wszystkie przeglądarki, które obsługują te funkcje.

.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"; 
} 

Dokładniej, składnia -moz wydaje się dziwna. Niektóre źródła twierdzą, że to jest składnia do wykorzystania:

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

Inni robią to po prostu tak:

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

To samo dotyczy -webkit; niektóre napisać to tak:

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

Podczas gdy inni robią to tak:

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

Albo tak:

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

A na górze, jest też text-rendering: optimizelegibility; który wydaje się być taki sam jak "kern" i "liga", przynajmniej w przeglądarkach webkit.

Jaki jest więc poprawny, kuloodporny sposób korzystania z funkcji czcionek Open Type w Internecie w 2013 roku?

+1

[Spec] (http://www.w3.org/TR/css3-fonts/#font-feature -settings-prop) nie zawiera żadnej wzmianki o składni "feature = value" w rzeczywistej wartości właściwości, więc domyślam się, że stara składnia Mozilli jest niestandardowa. Wszystkie trzy wspomniane przykłady WebKit są równoważne, jeśli chodzi o specyfikację roboczą. – BoltClock

Odpowiedz

11

Cóż, najlepszym miejscem do poszukiwania jak 2013 web wyposażony powinny praca byłaby W3 CSS3 Specification:

Jeśli obecna wartość wskazuje indeks używany do wyboru glifów. Wartość musi wynosić 0 lub więcej. Wartość 0 wskazuje, że funkcja jest wyłączona. W przypadku funkcji logicznych wartość 1 włącza tę funkcję.W przypadku funkcji innych niż boolowskie wartość 1 lub większa włącza tę funkcję i wskazuje indeks wyboru funkcji. Wartość "on" jest synonimem 1, a "off" jest synonimem 0. W przypadku pominięcia wartości przyjmowana jest wartość 1.

Oznacza to, że "liga" 1, "liga" on i liga wszystkim zrobić to samo.

Jak wspomniał BoltClock w swoim komentarzu do tego pytania, "feature=value" nie jest prawidłową składnią i wydaje się być specyficznym dla Firefoksa.

opera IE (< 10) do not support font-feature-settings at all, tak -o-* i -ms-* cechy przypuszczalnie bezużyteczne.

Ogólnie rzecz biorąc, składnia pracy dla wszystkich obecnie obsługiwanych przeglądarek wydaje się być:

.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 */ 
} 
+0

Jeśli wszystkie przeglądarki wymagają prefiksów, ale obsługują składnię równo zgodnie z gramatyką, może to działać, ale nie jesteśmy pewni, które wartości (z off/on, 0/1 i bez żadnej wartości) są obsługiwane przez które wersje tych przeglądarek. To może być problematyczne. – BoltClock

+0

Z tego, co mogę zebrać, Firefox 4.0 do 14.0 używa "kern = 1", ale od 15.0 użyj tylko '" kern "([1/on] [0/off])'. Nie wiem jednak, dlaczego po prostu nie podążali za specyfikacją. Notatka na dole http://caniuse.com/font-feature sugeruje, że '-webkit' używał tej samej składni przez cały czas. –

+1

Internet Explorer 10 [ma poprawną implementację 'font-feature-settings'] (http://msdn.microsoft.com/en-gb/library/ie/hh869409 (v = vs.85) .aspx). –

1

http://hacks.mozilla.org/2010/11/firefox-4-font-feature-support/ będzie prawdopodobnie dobrym miejscem do rozpoczęcia, a także specification itself.

Należy również zauważyć, że nie można uzyskać w pełni kuloodpornego sposobu korzystania z funkcji czcionek w tym sensie, że działa on we wszystkich przeglądarkach. Zgodnie z wersją caniuse, funkcje czcionek mają rodzaj szkicowej obsługi (nic w ogóle w Opera, nic przed IE10, nic w większości przeglądarek mobilnych, częściowe i prefiksowane w tym, co zostało), częściowo z powodu tego, że wciąż jest w "Working Draft" status,, co oznacza, że ​​wciąż jest szansa, że ​​się zmieni. Dlatego dobrze byłoby nie polegać na tej funkcji i oczekiwać, że po prostu nie będzie działać we wszystkich przeglądarkach.

Inna uwaga, ponieważ wspomniałeś "piekło prefiksowe" (co tak naprawdę nie jest takie złe - prefiksy mają zostać usunięte z czasem, czy wiesz, że nie potrzebujesz już żadnych prefiksów dla border-radius, chyba że utkniesz obsługa naprawdę starożytnych przeglądarek?) - możesz zajrzeć do jednego z preprocesorów CSS, takich jak LESS lub Sass. Narzędzia te mogą pomóc w tworzeniu najnowocześniejszych arkuszy stylów CSS poprzez wstawianie prefiksów i poprawianie składni, a jednocześnie zachować czystość źródła dzięki deklaracjom zgodnym ze standardami W3C.

+0

"Przedrostki mają zostać zrzucone z upływem czasu" W celu zniesienia "-moz-border-radius" potrzeba było ponad 10 wersji Firefoksa przez 6 lat. To zdumiewająco długi czas. – BoltClock

+0

@BoltClock - zgodnie z hasłem, Firefox zrezygnował z niego jako wymogu [w wersji 4] (http://caniuse.com/#search=border-radius). Możliwe, że przyszłe wersje nadal go obsługują, ale od jakiegoś czasu nie było to konieczne. – Shauna

+1

Tak, ale musieli oni nadal go wspierać przez kilka lat, ponieważ brakowało poprawionej wersji z niepokojącej liczby stron, nawet po wycofaniu. To wstyd, ale wydaje mi się, że sposób, w jaki rozwijany jest Internet, nie możemy winić żadnej ze stron za to, że nie używamy prefiksów, które właściwie przynoszą nam to, gdzie jesteśmy dzisiaj. – BoltClock

Powiązane problemy