O modo normal "80x25 caracteres" é, na verdade, 720x350 pixels (o que significa que cada célula de caractere tem 9 pixels de largura por 14 pixels de altura). Os modos de caracteres de largura dupla ("40x25") podem simplesmente interpolar isso para a largura maior dobrando cada coluna para economizar na memória de conteúdo de vídeo (reduzindo a quantidade necessária de memória de conteúdo de vídeo pela metade), ou usar memória de glifos adicional e um idêntico quantidade de memória de conteúdo de vídeo para aumentar as células de caracteres para 18 * 14 pixels.
Logo no início (acho que foi feito quando o EGA foi introduzido), o suporte para glifos de caracteres definidos pelo usuário era adicionado ao modo de exibição de texto do IBM PC.
O modo de texto normal do IBM PC é simplesmente um 4000 bytes sequenciais de RAM de conteúdo de vídeo em um determinado endereço. Estes são lidos como um byte de atributos de caracteres (originalmente piscando, negrito, sublinhado etc .; posteriormente reutilizados para cores de primeiro e segundo plano e piscando / realce, daí a limitação para 16 cores no modo de texto) e um byte descrevendo o caractere para Ser exibido. O glifo real a ser exibido para cada valor de byte de caractere é armazenado em outro lugar.
Isso significa que, contanto que você possa se contentar com 256 glifos distintos na tela a qualquer momento, e cada glifo puder ser representado como um bitmap de um bit 9x14, você pode simplesmente substituir os glifos na memória para tornar caracteres aparecem de forma diferente. Em parte, essa foi uma parte do que mode con codepage select
fez no DOS. Isso é relativamente trivial.
Se você precisa de mais de 256 glifos distintos, mas pode viver com o número reduzido de glifos na tela, você pode usar um esquema de 40x25 com glifos de largura dupla (18 pixels de largura). Supondo que a quantidade total de RAM de conteúdo de vídeo seja fixa e supondo que você possa aumentar a memória de bitmap de glifo, você pode passar a usar dois bytes de cada quatro bytes para representar um glifo na tela, dando acesso a 2 ^ 16 65.536 glifos diferentes (incluindo o glifo em branco). Se você se sentir ousado, poderá até ignorar o segundo byte de atributo, que lhe dá acesso a 2 ^ 24 ~ 16,7M diferentes glifos. Ambas as abordagens dependem de suporte especial de software, mas a parte de hardware e firmware deve ser bem fácil de fazer. 65.536 glifos em pixels de um bit de 18x14 funcionam com cerca de 2 MiB, uma quantidade considerável de memória, mas não intransponível, no momento. 256 glifos em 18x14 pixels de um bit são cerca de 8 KiB, o que foi absolutamente razoável, mesmo na primeira metade da década de 80, quando o EGA foi desenvolvido e introduzido.
O inglês básico dos EUA precisa de pelo menos 62 glifos dedicados (números de 0 a 9, letras AZ em letras maiúsculas e minúsculas) para que você tenha algo como 180 a 190 glifos para brincar se também quiser exibir texto em inglês dos EUA ao mesmo tempo e vai com 8 bits por glifo. Se você puder viver sem suporte simultâneo a inglês dos EUA, o que pode ser feito em um ambiente com recursos limitados, como a arquitetura anterior do IBM PC, você terá acesso ao número total de glifos.
Com alguns truques, você provavelmente poderia misturar e combinar os dois esquemas também.
Eu não sei como foi realmente feito mas ambos são esquemas viáveis de como obter alfabetos "sofisticados" de contagem de caracteres particularmente limitados em uma tela simples do IBM PC em modo texto que eu possa vir apenas sentado na frente do Stack Exchange por um momento. É perfeitamente possível que existam modos gráficos adicionais que facilitam isso na prática.
Além disso, tenha em mente a distinção entre modo de texto e modo gráfico exibindo texto . Se você está no modo gráfico, talvez por meio do VESA, que é bastante universalmente suportado, você está sozinho no que diz respeito a desenhar glifos de caracteres, mas também tem muito mais liberdade de como desenhá-los. Por exemplo, tenho certeza de que as partes baseadas em texto do Windows NT (que é a família de produtos do qual o Windows XP pertence) usam um modo gráfico para exibir texto, incluindo a tela de inicialização do Windows NT 4.0 e BSODs.