Widziałem to pytanie w propozycji witryny Typografia i denerwowało mnie to, że nie znałem odpowiedzi. Zawsze traktowałem „glif” i „charakter” jako wymienne.
Po przeczytaniu objaśnienia na stronie Model kodowania znaków Unicode rozumiem mniej więcej to:
- Znaki są definiowane przez ich znaczenie w języku, glify, przez ich wygląd . Ligatura do estetycznego łączenia
fi
to jeden glif, ale dwie postacie.
Uważam więc (popraw mnie, jeśli się mylę), że praktyczną różnicą byłoby:
- Parsery tekstu, które nie są zainteresowane estetyką tekstu, będą odczytywać glify jako ich odpowiednie znaki. Więc:
- Jeśli skopiujesz i wkleisz tekst zawierający glify do zwykłego edytora tekstowego, glify zostaną przekonwertowane na odpowiadające im znaki (
fi
glif ligatury stałby sięf
ii
) - Każdy dobrze wykonany zautomatyzowany system oparty na analizie tekstu (np. Wyszukiwarki, czytniki ekranu, sprawdzanie pisowni) interpretowałby glify jako ich odpowiednie znaki.
- Jedna postać może mieć wiele glifów lub zestawów glifów. Chcę powiedzieć, że jeden glif może mieć tylko jedną postać, ale to wyraźnie nie jest słuszne, ponieważ istnieje przykład na linkowanym artykule 3 glifów i zestawów glifów, które wydają się odpowiadać każdemu znakowi i zestawowi znaków. Nie do końca rozumiem, jak to może działać: z pewnością oznacza to, że w interpretacji tych glifów będą występować niespójności lub dwuznaczności, które różnią się w zależności od tłumacza? (czy różni się w zależności od języka lub czcionki?)
- Podczas gdy przeglądarki glifów (np. Ta w programie Illustrator) zawierają pełny zestaw glifów czcionki, mapy znaków (np. Mapa znaków Windows) zawierają tylko znaki, a nie glify, które są wieloma znakami jak ligatury (czego wcześniej nie zauważyłem)
- Jeśli skopiujesz i wkleisz tekst zawierający glify do zwykłego edytora tekstowego, glify zostaną przekonwertowane na odpowiadające im znaki (
Czuję się, jakby już tam byłam, ale najwyraźniej coś źle zrozumiałem gdzieś wzdłuż linii: nie tylko „Jedna postać wielu glifów”, ale także kopiowanie i wklejanie zachowania przy użyciu ligatur nie jest tym, czego się spodziewałem:
- Skopiuj ligaturę
fi
z programu Illustrator do tego pola wprowadzania: wklej jakofi
(dwa znaki) zgodnie z oczekiwaniami. - Wklej dla niego kod HTML (
fi
) - wyświetla się jako ligatura, gdy nie znajduje się w bloku kodu (fi - która w tej czcionce nie przypomina ligatury, ale zobaczysz, że jest jedna, jeśli spróbujesz wybrać tylko połowę tego) oraz kod, gdy jest w bloku kodu (fi
), zgodnie z oczekiwaniami. - Skopiuj i wklej renderowaną ligaturę bez kodu z powrotem do pola wprowadzania: wkleja się jako znak ligatury i renderuje jako ligatura niezależnie od tego, czy jest w bloku kodu, czy nie (fi i
fi
). Podobnie zawierające je słowa: fi t mis fi ts (fit misfits
) wkleja się jak fi t mis fi ts (fit misfits
). Może zależy to od tego, czy miejsce, w którym jest wklejany, rozumie zastosowane kodowanie?
Jak bardzo błędne jest moje rozumienie tego? Czy ktoś może mnie poprawić: podając jasną definicję różnicy między glifami a postaciami (jeśli moja jest niepoprawna lub można ją poprawić) i podać jaśniejsze / dokładniejsze przykłady niż moje, co to oznacza w praktyce ?
źródło
Odpowiedzi:
Glify odnoszą się do sposobu renderowania tekstu, a znaki do jego interpretacji. Podczas kopiowania i wklejania aplikacja źródłowa zazwyczaj daje wybór kilku formatów. Zwykły tekst rozpadnie ligaturę na f i i, format HTML może przetłumaczyć ją na cytowaną przez ciebie postać char lub też rozłożyć na f i i.
Ogólnie relacja między znakami a glifami wynosi n: m. W językach indyjskich niektóre znaki dzielą się na dwa glify, które są umieszczone w różnych miejscach słowa. W języku łacińskim najbliżej tej sytuacji byłoby renderowanie é jako dwóch glifów (e i ´). W języku arabskim każda postać ma różne glify w zależności od pozycji w słowie: początkowa, środkowa, końcowa lub izolowana.
Tłumaczenie znaków na glify jest specyficzne dla każdej aplikacji i obsługiwanych przez nią funkcji typograficznych. W przypadku tekstu łacińskiego tłumaczenie było proste, ale czcionki OpenType wprowadziły dodatkowe funkcje, takie jak ligatury, kreski, formy alternatywne, małe litery itp.
Ze względów praktycznych zajmujesz się glifami tylko wtedy, gdy implementujesz sposób, w jaki aplikacja renderuje tekst, projektując czcionkę lub gdy chcesz zastosować funkcję OpenType, która zastępuje niektóre glify innymi (np. Ligatury). W przeciwnym razie punkty kodu Unicode są twoim przyjacielem.
źródło
Nie sądzę, że twoje zrozumienie jest niepoprawne, po prostu widzisz systemy, które próbują pomóc użytkownikowi, wklejając to, co według niego chce. Ponieważ niektóre ligatury („fi”, „fl”) są dość powszechne poza systemami składu, oprogramowanie rozpoznaje, że użytkownik prawdopodobnie nie wprowadził tego glifu, a raczej inna aplikacja przekształciła wpisane znaki.
W skrócie: Znak odnosi się do jednostki językowej. Glif odnosi się do zaprojektowanego wystąpienia tej jednostki, niezależnie od tego, czy jest to wielka, mała litera, mała czapka, wariant historyczny czy stylistyczny.
źródło
Jest tu kilka odpowiedzi, które dają dobre informacje o glifach w porównaniu z postaciami, ale tak naprawdę nie dotyczą źródła twojego pomieszania w odniesieniu do kopiowania i wklejania.
Po pierwsze, twoje zrozumienie jest zasadniczo poprawne:
Warto podkreślić, że lista znaków jest zdefiniowana przez standard Unicode, który jest publikowany przez konsorcjum Unicode, ponieważ mają one uprawnienia do kodowania tekstu w formacie odczytywalnym maszynowo. Powyższa definicja jest zasadniczo podstawową wytyczną, której członkowie konsorcjum Unicode używają do ustalenia, czy jakiś proponowany dodatek do Unicode jest postacią, a zatem wartym włączenia, lub glifem i powinien być obsługiwany przez renderery czcionek.
Wspominam o tym, ponieważ zamieszanie, którego doświadczyłeś powyżej, było spowodowane faktem, że w Unicode istnieje kilka znaków ligatur (nie glifów ). Na przykład
U+FB01
jest to znak dla fi latury: http://unicode.org/charts/PDF/UFB00.pdfPosiadanie ligatur znaków w Unicode nie jest tak naprawdę zgodne z powyższą definicją tego, jakie rzeczy powinny być zawarte w standardzie Unicode jako znaki, ponieważ ligatury tak naprawdę nie mają znaczenia niezależnego od składu dwóch innych znaków. Ludzie Unicode są tego świadomi, a FAQ Unicode na temat ligatur przyznaje:
Istnienie tej postaci jest ostatecznie źródłem twojego zamieszania.
W prawidłowo wdrożonego oprogramowania, kopiując tekst powinien zawsze skopiować znaki , które zostały określone, a nie znaki , i to jest dokładnie to, co dzieje się w swoich trzech przykładach.
1) W pierwszym przykładzie wpisałeś
f
ii
w programie Illustrator, który renderował pojedynczy glif ligatury . Po wybraniu i skopiowaniu renderowanego glifu program Illustrator poprawnie skopiował znakif
(U+0066
) ii
(U+0069
) do schowka.2) W drugim przykładzie wpisałeś kod HTML znaku ligatury (
fi
) w polu wejściowym i poprawnie otrzymałeś glif ligatury reprezentujący znak ligatury (. Ponieważ podstawowym znakiem jest właściwie niejasny i stosunkowo bezcelowy znak ligatury, o którym wspomniałem powyżej zaznaczenie tego glifu spowoduje skopiowanie pojedynczego znakuU+FB01
.3) W trzecim przykładzie kopiujesz renderowany znak ligatury,
U+FB01
który został renderowany w części 2, który zawsze będzie wklejany jako ten znak. Główne zamieszanie wydaje się dotyczyć różnicy między kodami encji HTML a znakami, szczególnie w odniesieniu do sposobu ich renderowania w blokach kodu i poza nimi.Kod encji HTML
fi
to ciąg 8 różnych znaków. Mechanizm renderujący HTML swojej przeglądarki zastępuje te 8 znakówU+0026 U+0023 U+0036 U+0032 U+0035 U+0037 U+0023
z pojedynczego znaku UnicodeU+FB01
, co czyni go następnie odpowiednio. Jednak<code>
znacznik w HTML wyłącza to zachowanie, pozostawiając te 8 znaków takimi, jakie są.Podczas kopiowania renderowanego HTML kopiowane są renderowane znaki (które różnią się od renderowanych glifów ). Dlatego podczas kopiowania renderowanej encji HTML pojedynczy
U+FB01
znak jest kopiowany do schowka.Po wklejeniu
fi
U+FB01
znaku z powrotem do HTML nie ma potrzeby zastępowania, co oznacza, że znak jest renderowany jako ligatura, niezależnie od tego, czy mieści się w<code>
bloku.źródło
Znaki są tym, co przechowywane w plikach tekstowych, przetwarzane przez aplikacje i przenoszone, podczas gdy glify są ich wizualną reprezentacją.
Aby uzyskać wyraźny obraz, zobaczmy, co się stanie, gdy aplikacja spróbuje wyrenderować ciąg tekstu na ekranie (w nieco uproszczony sposób):
f
ii
na glif ligaturyfi
) oraz pozycjonowanie (jak kerning).file
odpowiadają dwóm pierwszemu glifowi (fi
ligatura), trzeciemu znakowi do drugiego glifu i czwartemu znakowi do trzeciego glifu.źródło