Mam na myśli, czy czcionka musi obsługiwać każde kodowanie znaków? A może kodowanie znaków musi obsługiwać każdą czcionkę?
Co oznaczają czcionki Unicode? czy są to czcionki obsługujące tylko Unicode i nie obsługują, powiedzmy, Windows-1252?
fonts
character-encoding
DrStrangeLove
źródło
źródło
Odpowiedzi:
Na początek wszystko opiera się na US-ASCII, który jest 7-bitowym kodem ze 128 punktami kodowymi w zestawie, o numerach szesnastkowych od 00 do 7F lub dziesiętnych 0-127. Jest to mapowane na kody kontrolne, angielskie znaki alfanumeryczne i podstawowe znaki interpunkcyjne
Dodanie 1 bitu do 8-bitowego kodu (bajtu) daje nam kolejne 128 punktów kodowych lub Extended ASCII.
Zestawy znaków / strony kodowe były wymagane wcześnie, aby zmienić sposób, w jaki punkty kodu w górnych 128 bitach są mapowane na znaki, aby pokryć alfabet dla określonego języka, który chciałbyś reprezentować. Działa to dość dobrze w przypadku większości języków Europy Zachodniej. ISO 8859-1 / Latin-1 jest przykładem takiego zestawu znaków. Kolejnym jest Windows-1252, który ma zmiany w stosunku do ISO 8859-1, aby pomóc objąć więcej lub więcej znaków.
Języki z bardziej złożonymi zestawami znaków, takimi jak chiński, japoński i koreański, przekraczają możliwości zestawu 256 punktów kodowych i używają dwubajtowego kodu, aby umożliwić ich reprezentację.
Unicode UTF-8 to wielobajtowy schemat kodowania znaków (1-4 bajty) z kompatybilnością wsteczną do ISO 8859-1 / Latin-1, która jest jego pierwszymi 128 znakami. Ma miejsce na ponad 1 milion punktów kodowych, co oznacza, że każdy punkt kodowy może w rzeczywistości reprezentować znak, w przeciwieństwie do przesuwania się przy rozszerzonym ASCII, co oznacza, że punkt kodowy odwzorowuje inny znak, w zależności od zestawu znaków / strony kodowej / kodowanie.
Czcionki to glify odwzorowane na punkty kodowe i wizualnie przedstawiające znaki. Zawartość czcionki zależy od języków, w których pierwotnie miała ona obejmować. Możesz użyć mapy znaków, aby zobaczyć, jakie glify są zawarte w czcionce.
Czcionki Unicode niekoniecznie obejmują wszystkie punkty kodowe, musisz zobaczyć, gdzie były przeznaczone do użycia. Na przykład w systemie Windows 7 uruchom mapę znaków i wyświetl postacie w Calibri, a następnie porównaj je z Ebrimą, Meiryo i Raavim. Pamiętaj, że różnią się one znacznie, ponieważ każdy z nich jest dostosowany do innego regionu geograficznego.
Jeśli chodzi o czcionki Unicode i zestaw znaków Windows-1252, Windows używa tabeli mapowania do przetłumaczenia Windows-1252 na Unicode, gdzie nie jest zgodny z ISO 8859-1 w scenariuszu „Najlepsze dopasowanie”, w którym niektóre znaki w znaku Windows-1252 zestaw może się nie wyświetlać.
źródło
Zestaw znaków
Zestaw znaków to zbiór znaków, do których przypisany jest numer.
Dobrze znanym zestawem znaków jest ASCII. Jest to zestaw 128 znaków ponumerowanych od 0 do 127. Wszystkie te liczby mogą być wyrażone w 7 bitach (dlatego jest to 7-bitowy zestaw znaków)
Większość, ale nie wszystkie inne zestawy znaków obejmują zestaw ASCII o tej samej numeracji. Przykłady zestawów znaków, które nie są jak ASCII, obejmują EBCDIC. Były też europejskie warianty ASCII, które miały różne znaki na niektórych pozycjach (np. Aby zawierać £)
Kodowanie
Duże zestawy znaków, takie jak Unicode, zawierające ponad milion znaków, wymagałyby trzech lub czterech bajtów na znak, aby dostosować się do szerokiego zakresu liczb przypisanych do znaków. Zamiast tego używają systemu, który pozwala „zakodować” tę liczbę jako jeden, dwa, trzy lub więcej bajtów. W schemacie kodowania UTF-8 znaki, które są takie same jak znaki ASCII, są kodowane pojedynczymi bajtami o tej samej wartości bajtów, co w ASCII.
Powyższe kodowania są używane podczas przechowywania tekstu w plikach.
Kroje pisma
Krój czcionki to specyficzny projekt reprezentacji wizualnej (tj. Kształtu) dla zestawu znaków. Kształty nazywane są glifami. Krój czcionki może zawierać kilka glifów dla jednego znaku (rozważ „a”). Może zawierać glify dla par znaków zwanych ligaturami (np. „Ff” lub „fi”). W kroju pisma zestaw znaków, dla którego zaprojektowano glif, dlatego często różni się od zestawu znaków w dobrze znanych zestawach znaków (kroje zwykle nie zawierają glifów znaków sterujących ASCII).
Czcionki
W kontekście komputerów czcionka oznacza plik zawierający glify uporządkowane zgodnie z pewnym schematem numeracji (który często nie jest taki sam jak numeracja w jakimkolwiek znanym zestawie znaków). Historycznie istniały czcionki odwzorowane bitowo, które reprezentowały określony rozmiar czcionki (w pikselach lub punktach). Obecnie większość czcionek używa krzywych matematycznych do opisywania glifów, dzięki czemu można je skalować w celu reprezentowania dowolnego rozmiaru kroju pisma.
Kładąc wszystko razem
Podczas wyświetlania pliku tekstowego komputer musi zostać poinformowany (lub odgadnąć) kodowanie zastosowane w tym pliku. Następnie użyje innej numeracji (np. 16-bitowej wersji Unicode) do przedstawienia tekstu w pamięci, a następnie użyje informacji w pliku czcionek, aby odwzorować wewnętrzną reprezentację na numerację (kodowanie) zastosowaną w pliku czcionek.
źródło
Czy czcionka musi obsługiwać każde kodowanie znaków?
Nie. Nie wiem, czy ktoś w ogóle to robi.
Oznaczałoby to, że mieliby w sobie każdą możliwą do wyobrażenia postać. Najczęstsze czcionki, których używamy do obsługi kodowania kultur zachodnich (łaciński).
A może kodowanie znaków musi obsługiwać każdą czcionkę?
Kodowanie znaków w żaden sposób nie „wspiera” niczego, więc jest to naprawdę zły sposób patrzenia na to.
Co oznaczają czcionki Unicode? Czy są to czcionki obsługujące tylko Unicode i nie obsługują, powiedzmy, Windows-1252?
Unicode jest standardem (a przynajmniej stara się nim być), który obsługuje dużą liczbę znaków, dzięki czemu wiele kodowań stanowi jego podzbiór. Windows 1252 lub CP1252 to kodowanie zawierające znaki łacińskie i niektóre znaki środkowoeuropejskie. Większość z nich jest również „objęta” Unicode. Prawie wszystkie czcionki Unicode obejmują również CP1252.
źródło