Při použití TrueType fontů mi vadilo, že jsou celé jednobarevné. Na strakatém pozadí se takové písmo špatně čte. Zkoumal jsem, jak obtáhnout kolem písma černý obrys a musel jsem si to nakonec napsat sám:
Kdyby nebyla zásadní rychlost renderingu, tak by to šlo udělat i tak, že by se vykreslil text dvakrát. V prvním průchodu obrys (pozadí) a v druhém průchodu ten samý text o něco menší a vycentrovaný nad tím prvním. Stejným způsobem se mimochodem dělají i stíny textů (vzdálenější šedou barvou a posunut o jeden, dva pixely vpravo dolů).
Nemuselo by to být ani dvakrát pomalejší, kdyby se často renderované "konstantní" řetězce uložily do surface pro příští použití (negenerovaly pokaždé znovu).
Hm, s tim ujížděním máš asi pravdu, to mě nenapadlo :(. Tak pak to udělat buď jenom tim stínem, nebo si vygenerovat znakovou sadu (jeden znak vycentrovat jde bez problémů) a skládat to po písmenkách...
Vyzkoušel jsem si teď, že když stejně velkým černým stínem uhnu na všechny čtyři rohy, tak to vypadá stejně jako obtáhnuté obrysem. Díky za inspiraci.
Jsou na to však potřebné čtyři "SDL_blity". Rychlostně to vyjde nastejno nebo možná trochu pomaleji než pomocí Outline. Takže zůstanu u obecnější Outline, ta funguje nejen na fonty.
Me taky vadi, ze jsou ttf fonty jednobarevne, tak jsem se poohledl po alternativach. Na strance http://bmf.wz.cz je hromada bitmapovych fontu ve formatu bmf, vykradenych z ruznych her, a je tam dokonce i editor (ktery ovsem funguje pouze pod win, nezkousel jsem ho). Napsal jsem jednoduchou ctecku techto fontu a sdl renderer, toto je ke stazeni na http://ava.wz.cz. Myslim, ze pro jednoduche aplikace nebo hry je to dobra alternativa, problem nastava pouze s diakritikou (maloktery z fontu na uvedene strance ma znaky s hacky a carkami). Dalsi alternativou muze byt knihovna SFont (viz google).
Knihovna SFont není alternativou, pokud je potřeba pracovat s více než 256 znaky. Při překladu hry do více jazyků jsou UTF-8 fonty opravdu nenahraditelné.
Tohle je trochu offtopic.
V Dev-C++ (v4.9.9.2) se mi nedaří v článku popsaným postupem vypsat správně text s českou interpunkcí. Problém je v tom, že Dev-C++ ukládá soubory v kódování win-1250 (myslím). Tím pádem je každý v něm zapsaný string ve win-1250 a pokus o jeho vytištění pomocí TTF_RenderUTF8_Solid() nebo TTF_RenderText_Solid() vede k výstupu s rozbitou interpunkcí.
Problém se vyřeší, když daný zdroják otevřu (pomocí třeba jEditu) ve win-1250 a uložím v utf-8. Pak ale při opětovném otevření v Dev-C++ jsou místo interpunkce nesmysly... :-(
Konkrétní dotaz zní - lze nějak Dev-C++ přinutit, aby otevíral a ukládal soubory v utf-8?
Ahoj, potreboval bych poradit, kdyz chci zkompilovat projekt pod VS .NET 2005? SDL.h a SDL_ttf.h normalne naincluduji, ale linker mi hazi takovehle chyby:
main.obj : error LNK2019: unresolved external symbol _TTF_Quit referenced in function _SDL_main
main.obj : error LNK2019: unresolved external symbol _TTF_Init referenced in function _SDL_main
asi mam podobny problem pod linuxom. Kdevelop mi vypise na vsetky funkcie kniznice SDL_ttf chybu: undefined reference to `nazov funkcie'
naincludovane to mam urcite v poriadku, pretoze v SDL_ttf je includovany SDL.h, ten som vyhodil z includu v hlavnom subore. Takze mi tam zostalo len SDL_ttf.h a ostatne funkcie SDL normalne funguju.