2016-01-11 17 views
23

Dokładnie tak, jak mówi tytuł. Renderowanie poprawnie wszystkich formatów unicode, co przy złożonych znakach i znakach, które wpływają na inne postacie i ligatury, jest naprawdę trudne. Rozumiem to. Mamy czcionki, które wydają się być zaprojektowane dla maksymalnej obsługi symboli Unicode (Symbola, Code2001, inne) i specjalnych czcionek dla pewnych płaszczyzn lub zakresów znaków (BabelStone Han, inne).Dlaczego nie ma czcionki zawierającej wszystkie glify Unicode?

Nie wiem zbyt wiele na temat technicznych szczegółów czcionek. Czy jest maksymalny rozmiar? Czy jest to problem związany z prawami autorskimi? Czy zasadniczo przerysowuje wszystkie ~ 110 000 istniejących glifów zbyt mocno? Rozumiem obawy dotyczące stylu, ale dlaczego nie powrócić do "domyślnej" czcionki, która zawierałaby glify dla wszystkiego? Są na unicode.org, przerysowanie ich wszystkich byłoby ciężką pracą, ale wtedy miałbyś gwarancję na wszystko. Jeśli masz prawa do niektórych wcześniej istniejących czcionek, możesz je złożyć, co powinno bardzo pomóc. Taka czcionka byłaby bardzo pomocna dla ludzkości i nie widzę dobrego technicznego powodu, dla którego jej nie ma, lub przynajmniej otwartego źródła, aby ją stworzyć, więc zakładam niewidzialny dla mnie powód, dla którego nie można tego zrobić.

Co to jest za przyczyna?

+0

Jeśli chcesz, aby krój czcionki nie wyglądał jak amatorski wysiłek, potrzebujesz specjalisty do każdego skryptu. A Unicode ma * dużo * skryptów. –

+4

Styl nie był czymś, o co się martwiłem. Pomyślałem: "cóż, dlaczego nie mieć czcionki zastępczej, która ma wszystko, abyś nigdy nie widział" glifu nieobecnego ", ponieważ to nie jest pomocne", a brzydki glif nie bije żadnego glifu. Jak podkreślono w odpowiedzi Mike'a, istnieją techniczne powody, dla których wymagana jest kolekcja czcionek i bardzo dobre kolekcjonowanie czcionek open-source. –

+0

Pomijając ograniczenia ciężaru, dopasowanie stylu jest powodem, dla którego preferowane są rodziny czcionek. Większość czcionek CJK ma dziwacznie wyglądające łacińskie litery, aby aktywnie uczynić te ostatnie spójnymi. Kiedy nie są aktywnie dopasowane do Ciebie, masz dziwne rzeczy: ⁰ ¹ ¹ ⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾ⁿ my to moje zirytowanie. Adobe Garamond Premier -Pricey- ma łacinę i grekę, ale nie zamierzali stosować chemikaliów jednocześnie - "α-ketoglutaran" wygląda dziwnie w wielu czcionkach. –

Odpowiedz

39

"Czy jesteś naprawdę poważny?" komentarze na bok, z perspektywy programowania jest bardzo prosty powód: specyfikacja OpenType zapewnia tylko przestrzeń adresową glifów jednego USHORT, więc jedna czcionka może obsługiwać jedynie 16 bitów glifów lub 65536 glifów max.

Obecna wersja Unicode, w wersji 8 jako tej odpowiedzi, zawiera 120737 przypisanych punktów kodowych lub prawie dwa razy więcej niż mieści się w nowoczesnej czcionce. W rzeczywistości Unicode nie pasuje do nowoczesnej czcionki OpenType od 2001 roku, wraz z wydaniem wersji Unicode 3.1, która podniosła liczbę punktów kodowych z 49259 do 94205.

"A co z kolekcjami czcionek?" Słyszę, że pytasz. Dlaczego nie korzystać z wielu czcionek i w ten sposób obsługiwać cały kod Unicode? Teraz właśnie opisałeś Adobe Pro Source i Noto Google (które są tą samą czcionką).

Co do "jak trudny może być": jednolity styl dla wszystkich glifów w Unicode, dla 129 ustalonych pisemnych skryptów na tej planecie, z których każda ma własne reguły składu? Niewiarygodnie trudne. Możesz myśleć, że czcionki są po prostu plikami z obrazkami na listy, a ktoś wpisuje literę, obrazek ukazuje się: to nie działa jak czcionki i nie działa w ten sposób od późnych lat 80-tych.

Współczesne czcionki są typograficznym odpowiednikiem ROMu gry: na pewno nie ma większego znaczenia bez sprzętu lub oprogramowania, aby uruchomić ROM, ale wszystkie rzeczy, które mają znaczenie, znajdują się w pamięci ROM. Similary, nowoczesne czcionki zawierają wszystkie informacje dotyczące składu. Nie tylko obrazy, zawierają metadane, metryki, reguły pozycjonowania i substytucji dla dowolnych sekwencji, z osobnymi zestawami reguł dla każdego napisanego skryptu obsługiwanego przez OpenType, możliwymi awariami bitmapowymi dla renderowania w małych punktach, wskazującymi instrukcje, jak prawidłowo rasteryzować grafikę wektorową które z natury nie są dostosowane do żadnej konkretnej siatki pikseli i więcej. Nowoczesna czcionka to śmiesznie skomplikowana aplikacja, którą silnik czcionek konsultuje, aby dowiedzieć się, jak tworzyć sekwencje punktów kodowych, a tworzenie (zestawu) czcionek (-ów) obejmujących Unicode to ogromny wysiłek zespołowy.

więc: „Dlaczego nie ma czcionki, która zawiera wszystkie glify Unicode”, bo to było technicznie niemożliwe od roku 2001. Możemy, i sprawiają, że rodzin czcionek że pokrycie wszystkich Unicode, ale z 129 różne skrypty z własnymi regułami składu, to duży wysiłek zespołu.

A jeśli chodzi o to:

Taka czcionka byłaby wielka pomoc dla ludzkości i nie widzę dobrego powodu technicznej, dlaczego nie istnieje lub przynajmniej open source wysiłku utwórz go, więc zakładam niewidzialny do mnie powód, dla którego nie można tego zrobić.

Tylko dlatego, że nie wiedzą o nich, nie znaczy, że nie istnieją, z milionami ludzi, którzy z nimi zapoznać. One istnieją, they're even open source, wychodzą i dziękują ludziom, którzy je wykonali =)

+1

Więc Adobe Blank/inne rzeczy pod podanym linkiem to "rodziny czcionek", ponieważ pojedyncza czcionka nie może być wystarczająco duża? To byłby motyw niewidzialny, o którym mówiłem. Dzięki, że mnie do nich wskazałeś! –

+2

Adobe Blank jest ekstremalnie specjalną czcionką, działa odwrotnie niż pełna implementacja Unicode: ma specjalny CMAP, który odwzorowuje każdy pojedynczy kod Unicode na ten sam, pojedynczy, glif ("puste"). Zamiast realizować wszystko, nic nie implementuje i nie reprezentuje niczego z pustym obrazem. Używa się go do debugowania czcionek jako zastępczego podczas testowania: jeśli zobaczysz "puste" Adobe Blank (które ma szerokość, aby można było zobaczyć to w tekście), wiesz, że w debugowanej czcionce czegoś brakuje. –

+0

Co za dziwna czcionka. Noto nie ma pełnego zasięgu (między innymi brakuje linii A), ale ma już 500 MB, więc nie mogę ich za to winić. –