Pergunta

Como você faz suas próprias fontes? Eu não quero um algoritmo pesado (freetype, TrueType, Adobe, etc) e seria bem com fontes bitmap pré-renderizados.

Eu quero anti-aliasing, e gostaria fontes proporcionais, se possível.

Eu ouvi que eu posso usar Gimp para fazer a renderização (com algum processamento pós?)

Estou desenvolvendo para um dispositivo incorporado com um LCD. Ele tem um processador de 32 bits, mas eu não quero correr Linux (um exagero - demasiado espaço de código / dados por muito pouco funcionalidade que eu usaria)

C. C ++, se necessário, mas C é o preferido. Algoritmos e ideias / conceitos são muito bem em qualquer idioma ...

-Adam

Foi útil?

Solução

Em meus velhos tempos de demonstração da cena muitas vezes eu desenhei todos os caracteres na fonte em uma imagem bitmap grande. No código, que armazenada (x, y) as coordenadas de cada caracter na fonte, bem como a largura de cada carácter. A altura foi geralmente constante em toda a fonte. Se o espaço não é um problema, você pode colocar todos os caracteres em uma grade, que é -. Tem uma distância constante entre o canto superior esquerdo de cada personagem

Renderização o texto torna-se então uma questão de copiar uma letra de cada vez para a posição de destino. Naquela época, eu geralmente reservada uma cor como sendo a cor "transparente", mas você poderia definitivamente utilizar um canal alfa para esta hoje.

Uma abordagem mais simples, que pode ser usado para pequenas b / w fontes, é definir os personagens diretamente em código:

LetterA  db 01111100b
         db 11000110b
         db 11000110b
         db 11111110b
         db 11000110b
         db 11000110b

O formato de ficheiro XPM é, na verdade, um formato de arquivo com sintaxe C que pode ser usado como uma solução de híbrido para armazenar os caracteres.

Outras dicas

fontes bitmap pré-renderizados são provavelmente o caminho a percorrer. Tornar o seu fonte usando qualquer que seja, organizar os personagens em uma grade, e salvar a imagem em um formato não comprimido simples como PPM, BMP ou TGA. Se você quer antialiasing, certifique-se de usar um formato que suporta transparência. (BMP e TGA fazer; PPM não)

A fim de apoiar larguras proporcionais, você vai precisar para extrair as larguras de cada personagem da rede. Não há nenhuma maneira simples de fazer isso, isso depende de como você gerar o grid. Você provavelmente poderia escrever algum programa pouco curto para analisar cada personagem e encontrar a caixa delimitadora mínima. Depois de ter os dados de largura, você colocá-lo em um arquivo auxiliar que contém as coordenadas e tamanhos de cada personagem.

Finalmente, para tornar uma string, você olhar para cima cada personagem e bitblit seu retângulo do bitmap fonte para o seu buffer de quadros, avançando a posição raster pela largura do personagem.

Nós temos utilizado com sucesso o pacote SRGP para fontes. Fizemos usar fontes de passo fixo, então eu não tenho certeza se ele pode fontes proporcionais.

Estamos usando fontes bitmap gerados pelo gerador de fontes bitmap anglecode # s:

http://www.angelcode.com/products/bmfont/

Isto é muito útil, pois tem saída XML que será fácil converter para qualquer formato de dados que você precisa.

bmfont do Código Anjo também adiciona kerning e melhor embalagem para o velho alternativa que foi MudFont.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top