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?
Respostas:
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:
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:
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:
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:
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?
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!
fonte