12. Szövegek megjelenítése¶
A szövegek megjelenítése esetében is van lehetőség vektorgrafikus és raszteres megjelenítésben gondolkozni.
Vektorgrafikus megjelenítés esetén ki tudjuk rajzoltatni a betűket OpenGL segítségével, mint szakaszokat, poligonokat vagy akár, mint 3 dimenziós modelleket.
Raszteres megjelenítés kapcsán főként textúrák megjelenítéséről van szó.
A szövegek megjelenítésénél számos problémát meg kell oldanunk, mint például az alábbiakat.
Milyen karakterkészletet használjunk/támogasson az alkalmazás?
Hogyan tároljuk le a betűk alakját?
Hogyan kezeljük a különböző méretű betűket?
Hova kerül az egyes betűk igazítási pontja?
Hogyan oldjuk meg az átméretezést, hogy kisebb és nagyobb felbontáson is tetszetős legyen a megjelenítés?
Az élsimítást, subpixel renderelést hogyan oldjuk meg?
Több soros szövegeknél hogyan tördeljük a sorokat? (Egyenletes sorkitöltés? Elválasztás?)
Hogyan használjunk színeket, félkövér és dőlt betűket?
Karakterkódolás¶
ASCII
Unicode, UTF-8
Fontok¶
A betűk alakjának kialakításával, megfelelő elrendezésükkel, térközök meghatározásával, a megfelelő betűtípusok kialakításával a tipográfia tudománya foglalkozik.
\(\rhd\) Honnan ered a lower case és az upper case kifejezés?
TTF: True Type Font
Raszterizálás¶
Ebben a lépésben rajzolhatjuk ki a megjelenítendő betűket textúrákra, amelyeket aztán különféle alakzatokon jeleníthetünk meg.
Számításigényes művelet, ezért érdemes gyorsítótárazni (font cache).
Kerning¶
A betűk közötti térközök kiszámításának problémája, módszere.
Szövegkirajzolás SDL2 segítségével¶
Az
SDL2_ttf
függvénykönyvtárat használhatjuk hozzá.
\(\rhd\) Tekintsük át a examples/text
példát!
GUI felületek kialakítása¶
Vezérlők, widget-ek
\(\rhd\) Milyen widget-eket ismerünk/szoktunk használni?
Számos elterjedt widget toolkit, GUI library van.
HTML5
Windows API
GTK: https://www.gtk.org/
Dear ImGui: https://github.com/ocornut/imgui