→Ligatury programistyczne
Angelfrost (dyskusja | edycje) |
Angelfrost (dyskusja | edycje) |
||
Linia 3: | Linia 3: | ||
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''". | 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: ⟨t<sup>s</sup> d<sup>z</sup>, t<sup>ʃ</sup> d<sup>ʒ</sup>, t<sup>ɕ</sup> d<sup>ʑ</sup>⟩. | Ligatury były również wcześniej używane w [[IPA|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: ⟨t<sup>s</sup> d<sup>z</sup>, t<sup>ʃ</sup> d<sup>ʒ</sup>, t<sup>ɕ</sup> d<sup>ʑ</sup>⟩. | ||
== Symbole wywodzące się z ligatur == | == Symbole wywodzące się z ligatur == | ||
Linia 23: | Linia 23: | ||
== Implementacja == | == 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 | 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 ''ff'', ''ffi'', ''ffl'', ''fi'', ''fl''<ref group="!">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.</ref>. 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. | Część najpopularniejszych ligatur oraz niektóre ligatury historyczne są zawarte w Unikodzie, na przykład ''ff'', ''ffi'', ''ffl'', ''fi'', ''fl''<ref group="!">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.</ref>. 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. | ||
Linia 31: | Linia 31: | ||
Współcześnie ligatury w fontach są implementowane jako następujące funkcje środowiska OpenType: | Współcześnie ligatury w fontach są implementowane jako następujące funkcje środowiska OpenType: | ||
* '''Ligatury standardowe''' ({{kod|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 standardowe''' ({{kod|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''' ({{kod|dlig}}) to zestaw ligatur służących do zdobienia tekstu, najczęściej wywodzących się z kaligrafii, | * '''Ligatury ozdobne''' ({{kod|dlig}}) to zestaw ligatur służących do zdobienia tekstu, najczęściej wywodzących się z kaligrafii, np. ''Th'', ''ck'', ''tt'', ''ct'', ''st'', ''sp''. [[Plik:Odmiany kontekstowe.png|thumb|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''' ({{kod|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. | * '''Ligatury historyczne''' ({{kod|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''' ({{kod|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 ''fi'' w niektórych fontach zdefiniowany jest wariant krótkiego ''f'', który jest podmieniany gdy ''f'' znajduje się przed ''i'', ''l'', '')'', | * '''Odmiany kontekstowe''' ({{kod|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 ''fi'' 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 {{kod|dlig}}), zaś wersja Timesa na macOS implementuje wspomniane ligatury jako standardowe {{kod|liga}}, przez co są domyślnie poprawnie zamieniane w tekście jedynie na macOS. | 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 {{kod|dlig}}), zaś wersja Timesa na macOS implementuje wspomniane ligatury jako standardowe {{kod|liga}}, przez co są domyślnie poprawnie zamieniane w tekście jedynie na macOS. | ||
Wiele fontów Adobe, | 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, {{abbr|np.|na przykład}} Minion 3 zazwyczaj umieszczają ''Th'' w zestawie ligatur ozdobnych ({{kod|dlig}}). | ||
=== Microsoft Word === | === Microsoft Word === | ||
Linia 63: | Linia 63: | ||
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''<ref group="!">W zapisie powyższych słów złożonych zastosowano interpunkt "·" w celu zaznaczenia, gdzie znajduje się granica morfemów.</ref> – 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 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''<ref group="!">W zapisie powyższych słów złożonych zastosowano interpunkt "·" w celu zaznaczenia, gdzie znajduje się granica morfemów.</ref> – 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 ({{kod|calt}}) – jest podmieniany gdy występuje przed ''i'', ''l'', | 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 ({{kod|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 {{Kod|++}}, {{Kod|<nowiki>!=</nowiki>}}, {{Kod|<nowiki>=></nowiki>}} czy {{Kod|<nowiki>:=</nowiki>}} 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. {{Kod|<nowiki>=></nowiki>}} 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 Pro#Source Code|Source Code]] o zestaw ligatur dla powszechnych w języku Haskell kombinacji znaków, takich jak {{Kod|->}}, {{Kod|<nowiki>==</nowiki>}} czy {{Kod|<nowiki>>>=</nowiki>}}. Bardziej współczesnym i uniwersalnym fontem jest Fira Code, będący rozszerzeniem kroju Fira Mono o zestaw ligatur programistycznych oraz odmian kontekstowych. | |||
[[Plik:Fira-code.svg|thumb|none|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 {{Kod|<nowiki>==</nowiki>}} oraz {{Kod|<nowiki>===</nowiki>}} 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ć {{Kod|<nowiki>==</nowiki>}} na {{Kod|<nowiki>!=</nowiki>}} – 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 == | == Ligatury w alfabetach innych niż łaciński == |