pelle2005reg Inserito: 17 novembre 2008 Segnala Share Inserito: 17 novembre 2008 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ò quello che mi manca è la possibilità 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à 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à dei creare font a personale non esperto..)Qualcuno che ha avuto a che fare con display grafici sa aiutarmi???Grazie Link al commento Condividi su altri siti More sharing options...
mf2hd Inserita: 18 novembre 2008 Segnala Share Inserita: 18 novembre 2008 (modificato) Non sono un "esperto" di lcd.Recentemente mi sono imbattuto, cercando altro, in questo font editor, prova a darci un' occhiata :http://www.elvand.com/en/LFG.aspgenera in uscita un file ".h" dove i caratteri sono espressi in questa forma:0x00,0x7C,0x7E,0x11,0x11,0x7E,0x7C,0x00, //65/ --> A0x00,0x7F,0x7F,0x49,0x49,0x4E,0x30,0x00, //66/ --> B0x00,0x1C,0x3E,0x63,0x41,0x63,0x22,0x00, //67/ --> C0x00,0x7F,0x7F,0x41,0x41,0x3E,0x1C,0x00, //68/ --> D0x00,0x7F,0x7F,0x49,0x49,0x49,0x41,0x00, //69/ --> Eecc.L' esempio sopra e' per un carattere 8x8 pixels e vanno interpretati come bit 1/0 per ogni colonna di pixels acceso/spento che compone il carattere.Es. 0x00,0x7C,0x7E,0x11,0x11,0x7E,0x7C,0x00, //65/ --> A colonne 12345678 00011000 00100100 01100110 01100110 01111110 01100110 01100110 00000000colonna 1: 00000000 = 0x00colonna 2: 00111110 = 0x7Ccolonna 3: 01111110 = 0x7Ecolonna 4: 10001000 = 0x11colonna 5: 10001000 = 0x11colunna 6: 01111110 = 0x7Ecolonna 7: 00111110 = 0x7Ccolonna 8: 00000000 = 0x00Il resto della riga "//65/" rappresenta il codice ASCII del carattere in decimale (65="A"). Modificato: 18 novembre 2008 da mf2hd Link al commento Condividi su altri siti More sharing options...
pelle2005reg Inserita: 19 novembre 2008 Autore Segnala Share Inserita: 19 novembre 2008 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à quella dimensione in cui tutti i caratteri devono rientrare, tipicamente il carattere più grande è il "W" o il "[at]") (per esempio 15x16 pixel), la modalità di codifica (per esempio horizontal scan, big endian order, cioè 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è 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: \= 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 è un "2") Se guardi l immagine dall alto, vedi che alla terza riga c'è il primo bit a 1 (se pensi che ogni riga sia una parola a 32bit, questo è il bit più significativo della parola) : io intendo questo per allinemaneto a sinistra, cioè 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 è largo 6 pixel, ma è comunque composto da 15x2 bytes: tutti caratteri convertiti di questo font dovranno avere una dimensione totale di (total dimension) = 15 (height) x 2 (large) + 3 (informazioni sulla dimensione effettiva) (in questo esempio l'altezza è ancora quella massima però, non ancora quella effettiva) Questo perchè poi il mio programma che usa il font cosi convertito per scrivere qualcosa a display, prenderà in ingresso il codice del carattere ASCII che voglio visualizzare (48 per esempio, cioè lo "0") e cercherà 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ò, mi serve per minimizzare il tempo di scrittura (se il carattere è largo 6 pixel, ci metto la meta del tempo rispetto a scriverlo largo 2 byte), e inoltre so già qual'è la prossima locazione utile per scrivere il prossimo carattere. Così, 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ù) Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora