Vai al contenuto
PLC Forum


Ricerca Font Creator per Display Grafico


pelle2005reg

Messaggi consigliati

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


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.asp

genera in uscita un file ".h" dove i caratteri sono espressi in questa forma:

0x00,0x7C,0x7E,0x11,0x11,0x7E,0x7C,0x00, //65/ --> A

0x00,0x7F,0x7F,0x49,0x49,0x4E,0x30,0x00, //66/ --> B

0x00,0x1C,0x3E,0x63,0x41,0x63,0x22,0x00, //67/ --> C

0x00,0x7F,0x7F,0x41,0x41,0x3E,0x1C,0x00, //68/ --> D

0x00,0x7F,0x7F,0x49,0x49,0x49,0x41,0x00, //69/ --> E

ecc.

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

00000000

colonna 1: 00000000 = 0x00

colonna 2: 00111110 = 0x7C

colonna 3: 01111110 = 0x7E

colonna 4: 10001000 = 0x11

colonna 5: 10001000 = 0x11

colunna 6: 01111110 = 0x7E

colonna 7: 00111110 = 0x7C

colonna 8: 00000000 = 0x00

Il resto della riga "//65/" rappresenta il codice ASCII del carattere in decimale (65="A").

Modificato: da mf2hd
Link al commento
Condividi su altri siti

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

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...