Quais são os requisitos mínimos e absolutos para conter os conjuntos de caracteres do Sudeste Asiático para um projeto de sistema incorporado?

14

Eu trabalho para uma empresa que começou a integrar sistemas de computadores embarcados em nossos produtos que fabricamos. Temos uma ampla variedade de produtos e eles são distribuídos em todo o mundo. Além disso, projetamos algumas placas integradas que podem servir a vários propósitos, dependendo do firmware que foi enviado ao sistema. Dessa forma, não precisamos reprojetar o hardware do computador para nossos vários produtos - tudo o que precisamos fazer é reescrever a camada de firmware para atender às necessidades específicas do produto.

Devido a essas limitações de hardware, alterar nosso hardware exige um ato do congresso, mas escrever um novo software é muito mais simples.

Um de nossos produtos tem um novo requisito que não tivemos que implementar anteriormente, que é a necessidade de texto inserido pelo usuário.

Atualmente, conseguimos armazenar texto internacional em recursos e apenas os caracteres de fonte necessários são compilados em imagens de bitmap. Isso significa que conseguimos armazenar idiomas altamente ideográficos, como texto em chinês e japonês, em uma quantidade mínima de espaço, porque usamos apenas uma porcentagem muito pequena de todo o conjunto de idiomas.

Como esse novo produto exigirá que nossos usuários insiram texto, teremos que implementar um extenso conjunto de caracteres. Como desenvolvedor de PC, estou familiarizado com ASCII, Unicode, UTF-8 etc., no entanto, a implementação de um conjunto completo de caracteres de qualquer um desses idiomas não é viável, porque temos uma quantidade limitada de FRAM na placa. para armazenar os dados da fonte.

Minha gerência espera que exista um conjunto mínimo de caracteres que possa ser usado para linguagens altamente ideográficas. Acredito que exista um alfabeto fonético para o japonês (o hiragana?). Existem alfabetos fonéticos semelhantes também para os idiomas chinês, coreano, vietnamita etc. etc. e, nesse caso, os falantes desses idiomas poderiam se comunicar com um conjunto de caracteres tão estreito? Tenho certeza de que a resposta a essa pergunta é "absolutamente, não", mas é uma pergunta que vale a pena fazer.

A gerência estabeleceu um requisito "flexível" de que só podemos ter um conjunto limitado de caracteres de cerca de 8.000 caracteres, cobrindo todos os principais idiomas de uso comum. Se isso não for possível, precisamos procurar algum tipo de método alternativo para atender às nossas necessidades com base em nossos recursos limitados de hardware.

Tenho certeza de que esse problema já havia sido resolvido antes. Alguém tem experiência trabalhando dentro de tais restrições enquanto precisa de um extenso sistema de fonte e codificação de caracteres? Se sim, que pepitas de sabedoria você pode oferecer?

RLH
fonte
Nem a Coréia nem o Japão fazem parte do Sudeste Asiático. Eles pertencem ao E Asia. É claro que se você quer dizer S, SE e E Asia, escreva-o.
Lalala

Respostas:

25

Esta é uma excelente pergunta.

Para responder à sua resposta um idioma por vez;

vietnamita

O vietnamita não está mais usando caracteres ideográficos, mas seu conjunto em latim é bastante amplo: veja o exemplo para ver quantos diacríticos usa:

Tiếng Việt, hay Việt ngữ, là ngôn cữai Việt (người Kinh) và là ngôn ngin chinh thức tại Việt Nam. Você está aqui para encontrar mais de 85% de Việt Nam, como với gần ba triệu người Việt hải ngoại, mà phần lớn là người Mỹ gốc Việt. Tiếng Việt càn là ngôn thữ hai caủ các dân tộc thiểu số tại Việt Nam.

O motivo é que todas as sílabas do Vietnã têm uma das seis marcas de tom que afetam a pronúncia - além de possuir um glifo consoante não padrão e seis vogais não padrão.

Unicode compõe marcas de tom sobre vogais; se você é capaz de compor glifos, precisará apenas de 13 glifos extras para vietnamita, mas, se não, precisará de 1 consoante extra + 12 vogais * 6 tons + 6 novas vogais sem tom = 79 glifos extras , em letras minúsculas e maiúsculas.

coreano

O coreano é uma má notícia. O coreano é escrito através de um alfabeto chamado Hangul , que, embora tecnicamente seja um alfabeto de apenas 68 letras (chamado jamo), é realmente escrito em blocos do tamanho de sílabas, construídos com jamo.

Um exemplo de como o texto em coreano se parece:

로서 또는 년 글 한국어 의 고유 문자 14, 1443 제 제 제 세종 4 대 세종 訓 이 訓 (訓 民 正音) 이라는 이름 으로 하여 46 1446 년 에 반포. 이후 한문 을 고수 사대부 하였으나, 하였으나 왕실 과 일부 과 서민층 을 중심 으로 지다가 지다가 1894 년 갑오 에서 한국 의 공식적인 나라 19 19, 1910 19 에 이르러 한글 학자 이 19 하였다 을 사용 하였다.

O Unicode possui 11.172 caracteres de bloco completos - mas se você deseja codificar a lógica para compor os "blocos" finais, você pode economizar bastante no conjunto de caracteres.

Basicamente, todas as sílabas podem ser divididas em duas categorias - consoante + vogal e consoante + vogal + final, onde final pode ser uma vogal, uma consoante ou um composto. As sílabas de CV são construídas com C à esquerda e V à direita; As consoantes CVF são compostas com bloco CV na parte superior (esquerda para a direita) e final na parte inferior.

Então, basicamente, você precisa:

  • 19 iniciais, em duas formas
  • 21 mediais, em duas formas
  • 28 finais

para um total de 108 símbolos . (Não tenho certeza absoluta de que não haja "ligaduras" em coreano, de modo que, às vezes, um bloco construído parece diferente da combinação de componentes, mas é o melhor que obteremos por enquanto).

japonês

Como você notou corretamente, o japonês tem um alfabeto fonético - mas, na verdade, não apenas um, mas dois! Hiragana e Katakana são silabários, ambos com 48 das mesmas sílabas, mas usados ​​em contextos diferentes (katakana é usado para palavras estrangeiras, hiragana é usado para gramática).

Infelizmente (para nossos propósitos), é quase impossível escrever em japonês usando somente esses dois alfabetos - caracteres chineses ou kanji , como são conhecidos neste contexto, são essenciais para qualquer texto em japonês.

Exemplo de escrita obrigatória:

1あ ら わ す 音節 る。 漢字 に し て 和 字 (わ じ) と も 言。。 た た し 和 は。 た た し は。 た し し。 た た し。

Além do kanji, você precisará de 103 glifos para mapear dois alfabetos fonéticos + 7 kanji comuns que não existem em chinês.

Pontuação CKJ

Não é um especialista nisso, mas chineses e japoneses usam pontuação clássica do leste asiático. O Unicode possui 64 símbolos dedicados à pontuação e símbolos do CJK.

chinês

Portanto, temos 7631 caracteres restantes em nosso "orçamento". Será o suficiente para cobrir caracteres chineses?

00 為 上古 時代 的 華夏族 人 所 發明 , 目前 确切 可 可 至 約 公元前 1300 年 年 的 甲骨文 、 籀文 金文。 秦朝 的 的 , 發展 至 , ,標準 唐代 楷 化為 今日 用 的 手寫 字體 — - 正楷。 汉字 是 迄今为止 连续 时间 时间 的 主要 文字 , 也是 时期 时期 各大 文字 体系 中 的 各大 ​​文字 体系 至今 的 各大 ​​文字 体系 的 的 各大 ​​的 的創製 漢字。

Com mais de 100.000 caracteres existentes, é essencialmente impossível cobrir totalmente o conjunto de caracteres chineses, o subconjunto usado ativamente é muito menor. Diz-se que 2000-3000 caracteres são suficientes para a alfabetização geral (HSK, teste do TOEFL do chinês mandarim, requer conhecimento de 2800 caracteres para seu nível mais alto, HSK Advanced), 4000-5000 caracteres são suficientes para uma pessoa educada.

Tendo em mente que existem caracteres simplificados e tradicionais (os primeiros são usados ​​na RPC e os últimos - em Taiwan), que diferem para muitos caracteres, os 7600 símbolos restantes, eu diria, seriam suficientes para cobrir a maioria dos casos de uso de ambos os caracteres.

Sinta-se livre para perguntar se você tiver alguma dúvida!

Ivan Cherevko
fonte
5
Uau. Essa é possivelmente a melhor resposta que já recebi para qualquer dúvida que tenha publicado no SO. Eu modifiquei esta pergunta hoje mais cedo, porque ficou pendente. Nossos requisitos mudaram um pouco, mas também sei a natureza de nossos produtos e prevejo que isso seja necessário no futuro em algum momento desconhecido. Você recebe o +1 e responde ao voto. Eu gostaria de poder lhe dar mais pontos do que isso também. Obrigado 1.000.000!
RLH 24/08/11
Não gosta de tailandês?
Lalala