È facile: i caratteri non devono necessariamente corrispondere alla risoluzione, ma devono corrispondere alla densità dei pixel .
La densità dei pixel viene misurata come pixel per pollice ( PPI ) o pixel per centimetro. C'è anche un'unità di misura chiamata pixel indipendenti dalla densità ( DP ) . È definito 1dpla dimensione di un pixel su uno 160 PPIschermo.
Ora tornando ai caratteri, prova a fare questo test: metti il tuo laptop su 720p. Dai un'occhiata alla dimensione del carattere. Ora collegalo al monitor 1080p da 42 "del desktop. Se il monitor emette le giuste informazioni sulla sua dimensione, il font dovrebbe avere ESATTAMENTE le stesse dimensioni che aveva sullo schermo a 720p. Immagina quanto sarebbe strano se il testo nel tuo il laptop aveva dimensioni diverse rispetto al testo sul monitor del desktop. Detto questo, risoluzioni più grandi dovrebbero fornire maggiori dettagli al carattere, schermi più grandi dovrebbero dare più contenuti da mostrare.
Lo stesso fatto può essere osservato sugli editor di testo. Un 72ptcarattere dovrebbe apparire sullo schermo come se fosse stampato su carta.
Tutto ciò significa che probabilmente dovresti desiderare la stessa dimensione in tutte le dimensioni del display (con alcune eccezioni). Se vuoi basarti da qualche parte, i siti Web di solito usano 12ptcaratteri, usi 11pte 12ptcaratteri di MS Windows .
Questo grafico (incluso anche nella parte inferiore della risposta) che ci dice 12ptin CSS è approssimativamente uguale a 16pxanche in CSS (Come se ciò non fosse abbastanza confuso, un px in CSS è uguale a dp ovunque), quindi diciamo che 16dpcreerò i tuoi caratteri su LibGDX.
Nel tuo gioco, usa il FreeTypeFontGeneratorper generare i caratteri in modo dinamico, in questo modo puoi considerare la densità dello schermo quando li crei:
BitmapFont createFont(FreeTypeFontGenerator ftfg, float dp)
{
return ftfg.generateFont((int)(dp * Gdx.graphics.getDensity()));
}
//On Init
BitmapFont buttonFont = createFont(arial, 16); //16dp == 12pt
Questo funziona perché Gdx.graphics.getDensity()è uguale a YourScreenDensity/160così, è un "fattore di scala" per portare le cose alle dimensioni che sarebbero su uno schermo di 160ppi.
A proposito delle eccezioni che ho menzionato prima: probabilmente vorrai ridimensionare i caratteri in base alle dimensioni dello schermo in caso di loghi, promozioni, ecc. Ma tieni presente che farai meglio a realizzarli su un editor grafico come Photoshop o Gimp , Comunque.
L'altra eccezione è il testo su piccoli schermi. Schermi telefonici da 4,5 "o più piccoli, indossabili. Di solito non avrai il tempo di creare contenuti scorrevoli o semplicemente non potrai permetterti di mettere così tanto contenuto su quello schermo. Puoi provare a ridimensionare il carattere 1dp, come il il lettore probabilmente avrà il telefono molto vicino al viso, probabilmente non avrà problemi a leggere. Tieni presente che potresti infastidire il lettore che legge un piccolo testo illeggibile.
TL; DR:
- Le dimensioni fisiche non cambieranno direttamente con le dimensioni dello schermo o la risoluzione, ma con una combinazione di entrambi (
screenSize/resolutionil famoso PPI)
- Pensa a pt e dp . Dimentica i pixel dello schermo fino a quando non devi disegnare il risultato finale.
- Crea il tuo carattere in fase di esecuzione con una dimensione ragionevole.
- Conversione di dp in pixel dello schermo:
pixels = dp * Gdx.graphics.getDensity();
- Se stai usando un motore che non ti dà un convertitore in dp come quello di LibGDX
Gdx.graphics.getDensity(), puoi provare :, densityFactor = Screen.getPixelsPerInch() / 160.0fallorapixels = dp * densityFactor
MODIFICARE:
2014, 25 giugno su Google IO, Matias ha annunciato nuove linee guida di stile per Android, che include un nuovo carattere Roboto e linee guida per la tipografia. Prendi questa tabella come guida:

EDIT2:
Tabella delle dimensioni dei caratteri CSS inclusa nel caso in cui il collegamento diventi marcio:
