Ligatury

Z MruczekWiki

Ligatura to glif bądź znak utworzony poprzez połączenie dwóch lub więcej grafemów w jeden. Przykładem ligatury jest , znak będący połączeniem liter f oraz i, dość często stosowany w kroju szeryfowym aby uniknąć kolidowania ze sobą kropki w i z górnym zakończeniem f.

Wiele znaków i liter powstało oryginalnie z ligatur, między innymi æ będące połączeniem a i e; ampersand & jako ligatura łacińskiego Et, oznaczającego "i" – stąd też użycie go w obecnie przestarzałym skrócie &c. "et cetera". Litera W istnieje oficjalnie zaledwie od XIV wieku – wcześniej była jedynie ligaturą jako dwa V lub U złączone w jeden znak – stąd też anglojęzyczna nazwa "double-u".

Ligatury były również wcześniej używane w międzynarodowym alfabecie fonetycznym IPA w celu znaczenia afrykat: ⟨ʦ ʣ, ʧ ʤ, ʨ ʥ⟩. Współcześnie stosuje się łuk nad dwoma osobnymi znakami w celu podkreślenia afrykacji: ⟨t͡s d͡z, t͡ʃ d͡ʒ, t͡ɕ d͡ʑ⟩, lub pod, jeżeli jest to czytelniejsze: ⟨t͜s d͜z, t͜ʃ d͜ʒ, t͜ɕ d͜ʑ⟩. Rzadszą, ale również współcześnie stosowaną notacją jest zapisanie końcowej fazy artykulacji w formie indeksu górnego: ⟨ts dz, tʃ dʒ, tɕ dʑ⟩.

Symbole wywodzące się z ligatur

Poniżej znajduje się tabela z symbolami bądź literami wywodzącymi się z ligatur:

Symbol Objaśnienie
@ Znak @ pierwotnie był ligaturą łacińskiego przyimka ad, co znaczy "ku", "do".
& Znak & pierwotnie był ligaturą łacińskiego spójnika et, co znaczy "i".
ß Litera ß wyewoluowała z ligatury dwuznaku sz, historycznie zapisywanego ſʒ (stąd też nazwa Eszett: Es + Zett).

Implementacja

Pierwotnie ligatury były implementowane jako osobne znaki w danym systemie kodowania tekstu, co było dość problematyczne, gdyż w efekcie podmieniało znak i sprawiało, że ligatura była traktowana jako osobny symbol zamiast np. połączenia f oraz i.

Część najpopularniejszych ligatur oraz niektóre ligatury historyczne są zawarte w Unikodzie, na przykład , , , , [! 1]. Standard jednak odradza stosowanie w taki sposób tych ligatur, argumentując, że ligatury służą do prezentacji tekstu, aniżeli jako osobne znaki. Oczywiście, nie tyczy się to znaków takich jak æ i œ które w niektórych językach są osobnymi grafemami.

Obecnie za sprawą technologii OpenType środowiska do składu i prezentacji tekstu potrafią automatycznie zamieniać dane ciągi znaków na odpowiadające im ligatury zdefiniowane przez twórców fontów. Sprawia to, że unika się problemów z kodowaniem tekstu co umożliwia poprawne parsowanie tekstu.

Współcześnie ligatury w fontach są implementowane jako następujące funkcje środowiska OpenType:

  • Ligatury standardowe (liga) to domyślny zestaw ligatur stosowanych w celu zwiększenia czytelności tekstu. Funkcja ta jest w większości systemów włączona automatycznie. Najczęściej są tam zaimplementowane popularne sekwencje fi, fl, ff, ffi, ffl, czasem również fj oraz ffj.
  • Ligatury ozdobne (dlig) to zestaw ligatur służących do zdobienia tekstu, najczęściej wywodzących się z kaligrafii, np. Th, ck, tt, ct, st, sp.
    Przykład odmiany kontekstowej krótkiego f (prawo), które jest podmienane gdy znajduje się przed znakiem zapytania ? w celu uniknięcia nieestetycznej kolizji.
  • Ligatury historyczne (hlig) to zestaw ligatur historycznych. Jest on stosunkowo rzadko implementowany w porównaniu do ligatur ozdobnych; jednak jeżeli dany font wspiera tą funkcję, można tam najczęściej znaleźć archaiczne specjalne ligatury przeznaczone dla badaczy okresu średniowiecza i specjalistów mediewistyki.
  • Odmiany kontekstowe (calt), pomimo że formalnie niekoniecznie są ligaturami to można je podobnie sklasyfikować, gdyż w zamyśle pełnią tą samą funkcję – na podstawie pewnych wytycznych podmieniają określony znak na inną jego wersję, zdefiniowaną przez autora fontu. Jednak jak sama nazwa wskazuje, to działanie zależy od kontekstu, a konkretnie od tego, w jakim sąsiedztwie znajduje się znak, który potencjalnie ma być podmieniony. Jako alternatywa do ligatury w niektórych fontach zdefiniowany jest wariant krótkiego f, który jest podmieniany gdy f znajduje się przed i, l, ), etc., w celu uniknięcia niekorzystnych kolizji kształtów. Część fontów również tutaj implementuje dekoracyjne Q z wydłużoną wstęgą, gdy znajduje się przed u.

W praktyce jednak powyższy podział nie jest zobowiązujący i jest wiele fontów, które wyłamują się powyższym schematom. W skrajnym przypadku zestawy ligatur mogą się różnić również w zależności od wersji i dystrybucji. Przykładowo, Times New Roman w wersji dla systemów Microsoft Windows zawiera wszystkie ligatury łacińskie zaimplementowane jako ozdobne (tag dlig), zaś wersja Timesa na macOS implementuje wspomniane ligatury jako standardowe liga, przez co są domyślnie poprawnie zamieniane w tekście jedynie na macOS.

Wiele fontów Adobe, między innymi Minion Pro czy Utopia ponadto dołącza do zestawu ligatur standardowych stosunkowo nową ligaturę Th, która zdaniem typografów jest zbędna i jedynie rozprasza – gdyż w porównaniu do pozostałych ciąg Th nie jest problematyczny i łączenie tych liter w ligaturę może jedynie zwracać na siebie przesadną uwagę. Późniejsze wydania, np. Minion 3 zazwyczaj umieszczają Th w zestawie ligatur ozdobnych (dlig).

Microsoft Word

Microsoft Word wyłącza domyślnie wszystkie ligatury, głównie ze względu na kompatybilność wsteczną podczas edycji dokumentu we wcześniejszych wersjach Worda. Istnieje możliwość włączenia ligatur w oknie Czcionka, w zakładce Zaawansowane w sekcji Funkcje OpenType. W celu włączenia odmian kontekstowych w tej samej sekcji znajduje się checkbox Użyj odmian kontekstowych.

CSS

W CSS-ie istnieje właściwość font-variant-ligatures, która może przyjmować następujące wartości: common-ligatures, discretionary-ligatures, historical-ligatures oraz ponadto contextual (dla odmian kontekstowych zdefiniowanych w calt).

Użycie

Ligatury są najczęściej stosowane podczas składania tekstu krojem szeryfowym. W przypadku krojów bezszeryfowych użycie ligatur może być przesadne, szczególnie gdy litery są tak zaprojektowane, że problematyczne sekwencje, jak na przykład fi, nie są kolidujące. Wówczas ligatury mogą jedynie zwracać na siebie niepotrzebnie uwagę swoją ekscentrycznością.

Przykładowo w kroju Lato znaki są tak zaprojektowane, że f oraz i nie kolidują ze sobą. Pomimo tego, autor fontu zaimplementował najpopularniejsze standardowe ligatury, wliczając w to . Są one jednak zbyt rzucające się w oczy i w efekcie rozpraszają. Mając to na uwadze, w stylu książkowym na MruczekWiki wykorzystującym krój Lato wyłączono stosowanie ligatur w CSS:

.bookpage {
    ...
    font-family: 'Lato','Noto Sans',sans-serif;
    font-variant: no-common-ligatures;
    ...
}

Inną dość ważną kwestią jest przystosowanie ligatur do ortografii poszczególnych języków. Przykładowo, w języku tureckim rozróżnia się między kropkowanym i oraz ı. Zastosowanie wówczas ligatury sprawiłoby, że te dwa znaki byłyby nierozróżnialne. Stąd też nie stosuje się ligatur w języku tureckim.

Przykład zastosowania ligatur (lewo) oraz odmian kontekstowych (prawo) w foncie EB Garamond.

W języku niemieckim ligatury również pełnią funkcję ortograficzną. Zastosowanie ligatury w słowie złożonym w miejscu, gdzie znajduje się granica dwóch morfemów – na przykład w słowie Schiff·fahrt; przykładem anglojęzycznym może być shelf·ful[! 2] – według niemieckich norm ortograficznych jest błędem. Stąd też wiele systemów składu tekstu wyłącza automatyczne stosowanie ligatur podczas składu w języku niemieckim.

W niektórych profesjonalnych fontach autorzy w zastępstwie bądź obok ligatur implementują również wariant krótkiego, niekolidującego f, który za sprawą OpenType – a konkretnie odmian kontekstowych (calt) – jest podmieniany gdy występuje przed i, l, etc. Takie rozwiązanie może być stosowane zamiast ligatur ze względów ortograficznych, między innymi w języku tureckim czy niemieckim, bądź w dowolnym języku jako wybór stylistyczny.

Ligatury programistyczne

Ligatury programistyczne to zestaw ligatur stosowanych w fontach o stałej szerokości przeznaczonych do programowania. Powszechnie używane sekwencje symboli w wielu językach programowania, jak chociażby ++, !=, => czy := stanowią najczęściej semantycznie jedną całość. Uwzględniając, że kod powinien być łatwy w odczytaniu i zrozumieniu, niektóre współczesne fonty programistyczne implementują zestaw ligatur i odmian kontekstowych, które podmieniają dwa glify, np. => w jeden symbol odpowiadający graficznie, jak ⇒. Ligatury programistyczne, podobnie jak zwykłe ligatury, nie modyfikują w żaden sposób tekstu (kodu), lecz jedynie zmieniają sposób, w jaki jest wyświetlany w danym środowisku.

Pierwszym przykładem był font Hasklig, który był rozszerzeniem Source Code o zestaw ligatur dla powszechnych w języku Haskell kombinacji znaków, takich jak ->, == czy >>=. Bardziej współczesnym i uniwersalnym fontem jest Fira Code, będący rozszerzeniem kroju Fira Mono o zestaw ligatur programistycznych oraz odmian kontekstowych.

Przykład ligatur programistycznych w foncie Fira Code.

Takie ligatury programistyczne pozwalają zwiększyć czytelność ze względu na grupowanie ze sobą symboli stanowiących semantycznie jedną całość, przez co stosunkowo łatwiej jest skupić się i wyodrębnić poszczególne elementy kodu. Wadą takiego rozwiązania jest rozpoznawalność i edytowalność. Ligatury programistyczne są stosunkowo świeżym zjawiskiem, przez co ze względu na przyzwyczajenia i konsensus dla większości osób są one rozpraszające i przesadnie zwracające dla siebie uwagę; sam design niektórych ligatur może prowadzić do wieloznaczności, np. odróżnienie == oraz === w języku JavaScript, które są sematycznie odrębnymi operatorami, zaś za sprawą ligatur mogą wyglądać bardzo podobnie. Z tego względu podczas prezentacji kodu najczęściej ligatury nie są stosowane, gdyż zamiast usprawnić czytelność jedynie by rozpraszały. Inną kwestią jest edytowalność – ze względu na to, że ligatury nie zmieniają bezpośrednio kodu, lecz jedynie to, jak on jest wyświetlany, edycja kodu staje się znacznie utrudniona gdy np. trzeba zamienić == na != – stosunkowo prosta operacja polegająca na podmianie jednego znaku, która staje się co najmniej trudna gdy powyższe symbole są łączone w ligaturę.

Ligatury w alfabetach innych niż łaciński

Alfabet grecki

Historycznie popularna była ligatura Ϗ oznaczająca spójnik και ("i", "a"). Spójnik ten był w grece najpopularniejszym słowem.

Cyrylica

Cerkiewnosłowiański

W cyrylicy cerkiewnosłowiańskiej występuje wiele liter będących ligaturami. Litera Ѹ to ligatura greckiego dwuznaku ου. Ponadto, w cyrylicy cerkiewnosłowiańskiej brak litery J – jej funkcję przejęły ligatury litery І i samogłosek – Ꙗꙗ (ja), Ѥѥ (je), Юю (ju), Ѩѩ (ję), Ѭѭ (ją). Ligatura Юю zawiera w sobie nie о, lecz wspomnianą wcześniej ligaturę ѹ. Ligaturą jest też litera Ѿ, ligatura ѠТ.

Alfabet arabski

Częste arabskie ligatury to ‏ﷲ ("Allah", czyli "Bóg") i ﻻ (złożenie liter lam i alif).

Devanagari

W devanagari jest bardzo wiele ligatur. Najbardziej znana z nich to ligatura ॐ (om).

Uwagi

  1. Powyższe znaki zostaną wyświetlone jedynie w przypadku, gdy użytkownik posiada odpowiednią przeglądarkę oraz fonty które obsługują powyższe znaki Unicode.
  2. W zapisie powyższych słów złożonych zastosowano interpunkt "·" w celu zaznaczenia, gdzie znajduje się granica morfemów.