.[ ČeskéHry.cz ].
Fonty a velikosti napříč zařízeními

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 28. květen 2017, 18:21:43    Předmět: Fonty a velikosti napříč zařízeními Odpovědět s citátem

Mám aplikaci, která poběží všude možně (tablety, mobily, PC, ale klidně i TV obrazovka...). Problém mám s fonty. Jak mám nastavit velikost fontů?
- Zkoušel jsem nastavit velikost přímo v pixelech - problém je, že na mobilu kde je vysoké DPI je to hrozně "mrňavé" a nečitelné, zatímco na 24" monitoru je to OK
- Nastavit velikost v pt - písma jsou všude stejně veliká, bez ohledu na DPI. Nicméně na mobilu jsou zase tím pádem strašně obrovské texty, zatímco na 24" monitoru je to OK

Nějaký nápad, jak se tohle řeší? Můžu udělat nějakou např. lineární (či jinou) funkci v závislosti na rozlišení a DPI... ale nějak se mi zdá, že to asi není úplně ideální. Např. web-browsery mi fonty vykreslují korektně a odpovídající velikostí jak na PC tak na mobilech. Ale jak přesně fungují, nevím.

PS: Používám FreeType knihovnu, renderovací systém na fonty jsem si psal sám
_________________
Perry.cz
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Diskobolos



Založen: 14. 03. 2017
Příspěvky: 63
Bydliště: Praha

PříspěvekZaslal: 28. květen 2017, 19:59:11    Předmět: Odpovědět s citátem

V Unity tohle řeší plugin Text Mesh Pro, který pro jeho úspěch dali jako oficiální náhražku jejich text komponenty.
To používá něco, čemu říká Signed Distance Field a umožňuje to ostré renderování fontů v různých rozlišeních.
Více viz zde: https://forum.unity3d.com/threads/textmesh-pro-advanced-text-rendering-for-unity-beta-now-available-in-asset-store.227790/

Nevím, co kde a jak používáš, ale jsou tam přibalené SDF shadery a musíš si vygenerovat texturu s fonty, přes Unity je na to GUI klikátko, co texturu udělá z libovolného fontu. Takže by to teoreticky mohlo jít použít.
Nevýhoda je, že musíš specifikovat, které znaky z daného fontu to má do té textury přidat.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mar



Založen: 16. 06. 2012
Příspěvky: 602

PříspěvekZaslal: 28. květen 2017, 21:24:01    Předmět: Re: Fonty a velikosti napříč zařízeními Odpovědět s citátem

Nemůžeš to jednoduše udělat tak, řekněme, že víš, že jsi
v landscape režimu a budeš mít na výšku x řádků textu,
tak zvolit velikost fontu v pixelech, aby se to tam vešlo?
(případně do toho zakomponovat aspect ratio)
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
]semo[



Založen: 29. 07. 2007
Příspěvky: 1525
Bydliště: Telč

PříspěvekZaslal: 29. květen 2017, 08:02:45    Předmět: Odpovědět s citátem

Diskobolos: perry měl zřejmě na mysli problém s automatickou volbou velikosti písma, ne "jak vytvořit label v unity". :-)


Jak píše mar, co tak zvolit jako měrnou jednotku procenta? Pokud dokážeš nastavit velikost v pixelech, stačí ti pak jen znát šířku a výšku obrazu. Jinak, myslím, že se nevyhneš více layoutům podle typu zařízení. Přecejen na mobil ta aplikace možná bude lepší jinak rozvržená, než na PC.
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Diskobolos



Založen: 14. 03. 2017
Příspěvky: 63
Bydliště: Praha

PříspěvekZaslal: 29. květen 2017, 08:32:51    Předmět: Odpovědět s citátem

]semo[ napsal:
Diskobolos: perry měl zřejmě na mysli problém s automatickou volbou velikosti písma, ne "jak vytvořit label v unity". Smile

Neradil jsem, jak to udělat v Unity, jen upozorňoval na SDF, přečti si to, ale beru, že to asi bylo mimo mísu.

Jinak v Unity se velikost textu počítá automaticky podle rozlišení / aspect ratio. Děláš to tam tak, že si nejdřív definuješ "reference resolution" a na něm pak postavíš gui, např. při rozlišení 1920x1080 uděláš label o šířce 200px a fontu 20pt.
Když se pak změní rozlišení, šířka labelu a velikost textu se přepočítá.
Je tam krapet problém při změně aspect ratio - v Unity si můžeš vybrat z vícero možností, jak to řešit.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Radis



Založen: 29. 03. 2014
Příspěvky: 235

PříspěvekZaslal: 29. květen 2017, 09:09:08    Předmět: Odpovědět s citátem

To zalezi dost na aplikaci, nekdy muzes chtit, aby text mel na zarizenich fyzicky stejnou velikost, nekdy te zajima spis pomer velikost textu/velikost displeje. Pises, ze ti to ma jet na mobilech, PC, TV, takze roli hraje i viewing distance... Na HD telefonu je citelny mensi font nez na HD televizi, kterou sledujes z nekolika metru, takze vedet rozliseni a DPI ti samo o sobe v tomhle proste nepomuze. A jak pise Diskobolos, od Unity se da dost inspirovat, jak se resi design UI pro ruzna rozliseni. Velikost fontu je jen jeden z problemu...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
perry



Založen: 28. 07. 2009
Příspěvky: 879

PříspěvekZaslal: 29. květen 2017, 09:52:30    Předmět: Odpovědět s citátem

Nejde o layout / GUI. Ty fonty nejsou v GUI, ale v popiscích mapy Smile Mapu mám "upravenou" přes poměry stran a rozlišení, takže vidím větší / menší úseky. Jen ty fonty pak jsou třeba moc velké.

Nicméně asi jsem našel řešení přes základní velikosti fontů, podobně jako fungují browsery. Systém vrací základní velikost pro standardní font a tu pak násobím scale hodnotou (em, %). Wokna i iOS tuto informaci o základní velikosti vrací (nebo mi to alespoň přijde), jak je na tom Android zatím nevím Smile

Pro wokna např.:
kód:

HWND handle = win_utils_find_main_window(GetCurrentProcessId());

//The tmHeight value of the TEXTMETRIC structure thus actually refers to line spacing rather than the font point size.
//The point size can be derived from tmHeight minus tmInternalLeading.

TEXTMETRIC m;
GetTextMetrics(GetDC(handle), &m);


Jestli je to dobré řešení se ukáže, až to překlopím na mobily nebo testnu na jiných verzích Woken ... zatím mám build jen pro Win 10 verzi a tam mi to přijde funkční.
_________________
Perry.cz
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
]semo[



Založen: 29. 07. 2007
Příspěvky: 1525
Bydliště: Telč

PříspěvekZaslal: 29. květen 2017, 11:01:06    Předmět: Odpovědět s citátem

Zase je výhoda, že takhle si uživatel třeba nastaví v systému větší fonty (třeba blbě vidí) a bude mu to rovnou fungovat :-).

Diskobolos: vpohodě :)
_________________
Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Obecné Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna