2010-08-27 9 views
31

Zastanawiam się, że każdy znak w Unicode ma punkt kodowy; jaki jest analogiczny termin dla czcionki?W jaki sposób znak Unicode jest mapowany na glif w czcionce?

Nigdy nie rozumiałem części procesu, kiedy zdekodowany plik musi zostać zmapowany na czcionkę (lub czcionki, przez niektóre nowoczesne technologie zastępowania czcionek).

Na przykład, gdy edytor tekstu zdekodował plik z jego kodowania znaków, i przypuśćmy, że istnieje grecka alfa α (U + 03B1). Jaki jest dokładny proces, w którym ta aplikacja wybiera konkretny glif w czcionce? Większość aplikacji ma preferowaną czcionkę. Powiedzmy, że to Courier. (A co się dzieje w przypadku rzadkiego znaku Unicode, takiego jak serce ♥ (U + 2665), którego nie ma w domyślnej czcionce? Skąd aplikacja wie, że czcionka nie zawiera tego znaku?)

Czy czcionka zawierać meta informacje o tym, jakie symbole ma?

Jeśli dwie czcionki mają symbol alfa, czy muszą mieć ten sam "punkt kodowy"? Czy jest to zależne od rodzaju czcionki, np. Type1, Type3, TrueType, OpenType? ...

Dzięki za wszelkie wskazówki i referencje.

Odpowiedz

28

Czcionki TrueType składają się z kilku sekcji, a co najważniejsze dla tego pytania, tabela "glifów" i tabela ("cmap") do mapowania znaków na te glify.

Krótko mówiąc, system operacyjny używa tabeli "cmap" do zamiany znaków na indeksy glifów, zastępując domyślny glif dla każdego, który nie ma pasującego wpisu. Niestety istnieje wiele wersji specyfikacji plików czcionek (nie wspominając o różnych typach czcionek) i różne kodowania znaków tych samych odwzorowań w tych tabelach, więc faktyczny proces wykonywania mapowania i robienie tego sprawnie, tak aby szybkie rysowanie tekstu , w końcu jest niezwykle złożony.

"Punkt kodowy" jest całkowicie niezależny od znaków, kodowań i czcionek. Określony punkt kodowy jest uniwersalny, ale istnieje wiele kodowań dla niego (UTF-8, UTF-16, itp.) I będzie mapować do różnych indeksów glifów w różnych czcionkach.

dokumentacja deweloper Apple ma bardzo dobrą sekcję o szczegółach czcionek:

http://developer.apple.com/fonts/ttrefman/

szczególności:

stołowego Glyph: https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html

mapa znaków: https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6cmap.html

Polecam również aplikację o nazwie BabelMap, co daje wiele interesujących informacji o czcionkach. W szczególności spójrz na podsumowanie Narzędzia/Unicode, Narzędzie do analizy czcionek/czcionek oraz Czcionki/Informacje o czcionce, w którym można wyodrębnić cały stół mapowania glifów do schowka.

+0

Dzięki. Dobra odpowiedź! – SeniorLee

+0

są punkty kodowe znormalizowane dla znaków w danym języku? jak pewnego dnia spotkać się z komitetem w kraju X i zdecydować, użyjmy punktu a, b, c, d ... aby nasze postacie miały coś z rzeczy ...? a następnie jego przesłanie do niektórych ISO? –

+0

@ v.oddou Tak, dokładnie, http://unicode.org jest komisją, i możesz zobaczyć, jak rozmieszczone są różne zestawy znaków dla różnych języków: https://en.wikipedia.org/wiki/ Plane_% 28Unicode% 29 i relacja ISO tutaj: https://en.wikipedia.org/wiki/Universal_Coded_Character_Set –

Powiązane problemy