Pracuję dla firmy, która rozpoczęła integrację wbudowanych systemów komputerowych z produkowanymi przez nas produktami. Mamy dość szeroką gamę produktów i są one dystrybuowane na całym świecie. Ponadto zaprojektowaliśmy kilka zintegrowanych kart, które mogą służyć do wielu celów, w zależności od oprogramowania wbudowanego w system. W ten sposób nie musimy przeprojektowywać sprzętu komputerowego pod kątem różnych produktów - wystarczy ponownie napisać warstwę oprogramowania układowego, aby spełnić potrzeby konkretnego produktu.
Z powodu tych ograniczeń sprzętowych zmiana naszego sprzętu wymaga kongresu, ale pisanie nowego oprogramowania jest znacznie prostsze.
Jeden z naszych produktów ma nowy wymóg, którego nie musieliśmy wcześniej wdrażać, a mianowicie potrzebę wprowadzania tekstu przez użytkownika.
Obecnie jesteśmy w stanie przechowywać tekst międzynarodowy w zasobach i tylko niezbędne znaki czcionek są kompilowane do obrazów z mapą bitową. Oznacza to, że byliśmy w stanie przechowywać wysoce ideograficzne języki, takie jak chiński i japoński tekst, w minimalnej ilości miejsca, ponieważ używamy tylko bardzo niewielkiego odsetka całego zestawu języków.
Ponieważ ten nowy produkt będzie wymagał od naszych użytkowników wprowadzania tekstu, będziemy musieli wdrożyć obszerny zestaw znaków. Jako przede wszystkim programista na PC, znam się na ASCII, Unicode, UTF-8 itp., Jednak implementacja pełnego zestawu znaków w każdym z tych języków nie jest możliwa, ponieważ mamy na pokładzie ograniczoną ilość FRAM do przechowywania danych czcionek.
Moje kierownictwo ma nadzieję, że istnieje minimalny zestaw znaków, którego można używać w przypadku języków o wysokim poziomie ideografii. Wierzę, że istnieje alfabet fonetyczny dla japońskiego (Hiragana?) Czy istnieją podobne alfabety fonetyczne dla języków chińskiego, koreańskiego, wietnamskiego itp., A jeśli tak, to czy osoby mówiące tymi językami mogłyby komunikować się z tak wąskim zestawem znaków? Jestem prawie pewien, że odpowiedź na to pytanie brzmi „absolutnie nie”, ale warto zadać to pytanie.
Kierownictwo ustanowiło „miękkie” wymaganie, abyśmy mogli mieć jedynie ograniczony zestaw znaków wynoszący około 8 000 znaków, obejmujący wszystkie popularne powszechnie używane języki. Jeśli nie jest to możliwe, musimy poszukać alternatywnej metody zaspokojenia naszych potrzeb w oparciu o ograniczone zasoby sprzętowe.
Jestem pewien, że ten problem musiał zostać wcześniej rozwiązany. Czy ktoś ma doświadczenie w pracy z takimi ograniczeniami, a jednocześnie potrzebuje rozbudowanego systemu kodowania czcionek i znaków? Jeśli tak, jakie samorodki mądrości możesz zaoferować?
Odpowiedzi:
To doskonałe pytanie.
Aby rozwiązać swoją odpowiedź w jednym języku na raz;
wietnamski
Wietnamski nie używa już znaków ideograficznych, ale jego zestaw łaciński jest dość szeroki: spójrz na przykład, aby zobaczyć, ile znaków diakrytycznych używa:
Powodem jest to, że każda sylaba Wietnamu ma jeden z sześciu znaków tonowych, które wpływają na wymawianie - oprócz posiadania jednego niestandardowego glifu spółgłoskowego i sześciu niestandardowych samogłosek.
Unicode tworzy znaki tonowe nad samogłoskami; jeśli masz umiejętność komponowania glifów, potrzebujesz tylko 13 dodatkowych glifów dla Wietnamczyków, ale jeśli nie, potrzebujesz 1 dodatkowej spółgłoski + 12 samogłosek * 6 tonów + 6 nowych samogłosek bez ton = 79 dodatkowych glifów , małymi literami i duże litery.
koreański
Koreański to złe wieści. Koreański jest pisany alfabetem zwanym Hangul , który technicznie jest alfabetem składającym się tylko z 68 liter (zwanych jamo), ale tak naprawdę jest pisany blokami wielkości sylaby, zbudowanymi z jamo.
Przykładowy wygląd koreańskiego tekstu:
Unicode ma 11 172 ukończone znaki blokowe - ale jeśli chcesz samodzielnie napisać logikę, by skomponować końcowe „bloki”, możesz znacznie zaoszczędzić na zestawie znaków.
Zasadniczo wszystkie sylaby można podzielić na dwie kategorie - spółgłoskę + samogłoskę i spółgłoskę + samogłoskę + końcowy, gdzie końcowy może być samogłoską, spółgłoską lub złożonym. Sylaby CV są zbudowane z C po lewej i V po prawej; Spółgłoski CVF składają się z bloku CV u góry (od lewej do prawej) i końcowego na dole.
Zasadniczo potrzebujesz:
w sumie 108 symboli . (Nie jestem absolutnie pewien, że w języku koreańskim nie ma „ligatur”, więc czasami skonstruowany blok wygląda inaczej niż kombinacja składników, ale to najlepsze, co na razie dostaniemy).
język japoński
Jak słusznie zauważyłeś, japoński ma alfabet fonetyczny - ale właściwie nie tylko jeden, ale dwa! Hiragana i Katakana są sylabariami, obie zawierające 48 takich samych sylab, ale używane w różnych kontekstach (katakana jest używana w przypadku obcych słów, hiragana jest używana w gramatyce).
Niestety (dla naszych celów) japoński jest prawie niemożliwy do pełnego pisania przy użyciu tylko tych dwóch alfabetów - chińskie znaki lub kanji , jak są one znane w tym kontekście, są niezbędne dla każdego japońskiego tekstu.
Przykład obowiązkowego pisania:
Oprócz kanji potrzebujesz 103 glifów, aby zmapować dwa alfabety fonetyczne + 7 wspólnych znaków kanji, które nie istnieją w języku chińskim.
Interpunkcja CKJ
Nie jest ekspertem w tej dziedzinie, ale zarówno Chińczycy, jak i Japończycy używają klasycznej interpunkcji wschodnioazjatyckiej. Unicode ma 64 symbole poświęcone interpunkcji i symbolom CJK.
chiński
Mamy więc 7631 znaków w naszym „budżecie”. Czy wystarczy pokryć chińskie znaki?
Ponieważ istnieje ponad 100 000 znaków, całkowite pokrycie chińskiego zestawu znaków jest zasadniczo niemożliwe , aktywnie używany podzbiór jest znacznie mniejszy. Mówi się, że 2000-3000 znaków wystarcza do ogólnej wiedzy (HSK, test podobny do TOEFL chińskiego mandaryńskiego, wymaga znajomości 2800 znaków dla jego najwyższego poziomu, HSK Advanced), 4000-5000 znaków wystarcza dla osoby wykształconej.
Pamiętając, że istnieją znaki uproszczone i tradycyjne (pierwsze są używane w ChRL, drugie - na Tajwanie), które różnią się dla wielu znaków, pozostałe 7600 symboli, powiedziałbym, wystarczyłoby na pokrycie większości przypadków użycia dla oba zestawy znaków.
Zapytaj, czy masz jakieś pytania!
źródło