Font Generator per Display Grafico

Nov 17, 2008 4 Replies

Ciao a tutti, volevo chiedere un consiglio a qualcuno piu esperto di me.. Ho a che fare con un display grafico, riesco a pilotarlo e usarlo, per=F2 quello che mi manca =E8 la possibilit=E0 di creare dei font. Mi servirebbe un programmino da PC che dandogli in pasto il codice ASCII, la dimensione in pixel dei caratteri che voglio in uscita, e il font con cui li voglio, mi dia una serie di parole binarie che rappresentano le mie lettere. Ogni lettera codificata in questo modo dovr=E0 anche avere un'informazione iniziale sulla sua dimensione (larghezza e altezza in pixel). Ho provato vari font generator, ma non sono ancora riuscito a trovare qualcosa di bello e facile da usare (devo dare la possibilit=E0 dei creare font a personale non esperto..) Qualcuno che ha avuto a che fare con display grafici sa aiutarmi??? Grazie


La butto l=EC come ispirazione: da un paint grafico, stampa il set di caratteri del font che ti interessa sullo schermo. Salva l'immagine senza compressione in formato TIFF 1 bit (bianco/ nero). Se ben ricordo, il TIFF salva il bitmap as-it-is, per cui dovresti avere una corrispondenza pixel-bit. Per comodit=E0 di conversione, puoi creare dei bordi intorno ad ogni chr e se usi colori diversi puoi anche dare indicazioni per la conversione. Ad esempio, un rettangolo di contorno rosso potrebbe delimitare la dimensione del chr. Naturalmente occorrer=E0 svilupparci intorno un softwarino di conversione, ma sempre meglio che ricomporre in Human-mode ogni chr.

Piccio.

Il giorno Mon, 17 Nov 2008 00:33:24 -0800 (PST), snipped-for-privacy@gmail.com ha scritto:

Iio mi sono fatto diverso tempo fa un programmino in VB che fa più o meno quello, cioè partendo da bitmaps selezionabili e incollabili con il drag&drop ricava una sequenza di Db 00001111b,00011100b che si possono dare in pasto ad un compilatore, assembler e linker. Mi è stato di estrema comodità con i linguggi orientali, per inserire ideogrammi o caratteri kanji.

La cosa non è banale, poi dipende dalla tue conoscenze della programmazione e dei linguaggi.

Una cosa che ti può essere utile e che fa qualcosa del genere è qui:

formatting link

-- ciao Stefano

Provo a spigarmi in maniera piu dettagliata..

Il font generator deve prendere in ingresso il font desiderato (tipo quelli di word) e la dimensione del font (per esempio "Arial 10", poi magari anche se grassetto, corsivo,..), l'altezza e la larghezza in pixel che saranno usati per la dimensione dell'immagine-carattere ( che sar=E0 quella dimensione in cui tutti i caratteri devono rientrare, tipicamente il carattere pi=F9 grande =E8 il "W" o il "@") (per esempio 15x16 pixel), la modalit=E0 di codifica (per esempio horizontal scan, big endian order, cio=E8 la relazione tra ordinamento dei byte in memoria e il loro posizionamento a video), e l'allineamento (per esempio orrizzontale a sinistra, verticale centrato(cio=E8 che tutti i caratteri stiano sulla stessa riga, come se fosse una riga di un folgio di carta) ). In output vorrei qualcosa come quello che segue per ogni carattere: ( legenda: \=3D commento, numeri in esadecimale, la"," separa i byte, i byte sono logicamente consecutivi in memoria, qui vado a capo per far vedere la logica dell horizontal scan, big endian order )

06 , 0E , 01 , \ Width pixels , Height pixels , Width bytes 00 , 00 , \ 0000 0000 0000 0000 78 , 00 , \ 0111 1000 0000 0000 84 , 00 , \ 1000 0100 0000 0000 04 , 00 , \ 0000 0100 0000 0000 04 , 00 , \ 0000 0100 0000 0000 04 , 00 , \ 0000 0100 0000 0000 08 , 00 , \ 0000 1000 0000 0000 10 , 00 , \ 0001 0000 0000 0000 20 , 00 , \ 0010 0000 0000 0000 40 , 00 , \ 0100 0000 0000 0000 FC , 00 , \ 1111 1100 0000 0000 00 , 00 , \ 0000 0000 0000 0000 00 , 00 , \ 0000 0000 0000 0000 00 , 00 , \ 0000 0000 0000 0000 ( questo =E8 un "2") Se guardi l immagine dall alto, vedi che alla terza riga c'=E8 il primo bit a 1 (se pensi che ogni riga sia una parola a 32bit, questo =E8 il bit pi=F9 significativo della parola) : io intendo questo per allinemaneto a sinistra, cio=E8 che tutti i caratteri inizino a sinistra (ovvero abbiano almeno una delle parole che compone il carattere con il bit piu significativo a 1).

I primi tre byte sono le effettive dimensioni del carattere, e non le massime fissate come ingresso al font generator. Il carattere in esempio =E8 largo 6 pixel, ma =E8 comunque composto da 15x2 bytes: tutti caratteri convertiti di questo font dovranno avere una dimensione totale di (total dimension) =3D 15 (height) x 2 (large) + 3 (informazioni sulla dimensione effettiva)

(in questo esempio l'altezza =E8 ancora quella massima per=F2, non ancora quella effettiva)

Questo perch=E8 poi il mio programma che usa il font cosi convertito per scrivere qualcosa a display, prender=E0 in ingresso il codice del carattere ASCII che voglio visualizzare (48 per esempio, cio=E8 lo "0") e cercher=E0 in memoria la locazione da cui inizia il mio "0" col calcolo: (first address of the first character) + (ASCII code) * (total dimension) Essendo tutti i caratteri grandi 33 byte, non posso sbagliarmi.

La dimensione effettiva del font per=F2, mi serve per minimizzare il tempo di scrittura (se il carattere =E8 largo 6 pixel, ci metto la meta del tempo rispetto a scriverlo largo 2 byte), e inoltre so gi=E0 qual'=E8 la prossima locazione utile per scrivere il prossimo carattere. Cos=EC, se devo scrivere "Vita" e voglio che ogni carattere sia spaziato uno, riesco ad avere un buon risultato, e non delle lettere molto spaziate tra loro. (se anche l'altezza fosse quella effettiva, risparmieri ancora di pi=F9)

SB:

Grandioso! Peccato abbia solo l'uscita in basic, ma è senz'altro più facile fare un programmino di "trascodifica" che fare un programma del genere ex-novo.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required