Dodanie obsługi czcionek TTF do AGE tak aby utrzymać wieloplatformowość małym kosztem wydawało się początkowo trudne. Jednak dzięki bibliotece FreeType2 i Google okazało się to znacznie prostsze niż myślałem.
W tej chwili AGE posiada możliwość wyświetlania tekstu z automatycznym dzieleniem na linie przy pomocy znaku ‘\n’ oraz potrafi obliczyć prostokąt, w którym podany tekst zostałby wyświetlony. Możliwe, że w przyszłości dodam funkcje wyświetlające tekst w danym obszarze z wyrównaniem lub podobne. Przy obecnej implementacji tego wszystkiego dodanie takich funkcji jest dość prostą rzeczą.
Całą zabawę z czcionkami TTF postanowiłem podjąć dlatego, że planuję dodać konsolę, a ciężko byłoby to uczynić bez wyświetlania tekstu, prawda?
Niestety po tym jak nauczyłem AGE wyświetlać tekst zdałem sobie sprawę, że trzeba mieć jakąś czcionkę aby wyświetlać tekst konsoli i musi to być czcionka, która bedzie dostępna niezależnie od systemu operacyjnego. Rozważałem instalowanie jakiejś czcionki wraz z biblioteką jednak ten pomysł niezbyt mi się podobał. Postanowiłem więc zrobić najbardziej bezczelną rzecz jaka przyszła mi do głowy – wrzuciłem czcionkę wprost do kodu jako tablicę bajtów. Będzie to niestety kilkadziesiąt kilobajtów więcej dla biblioteki, ale z drugiej strony będę miał pewność, że czcionka będzie zawsze dostępna.
Dzięki tym kilku prostym i czasem spartańskim zabiegom mogę wreszcie rozpocząć kodowanie obsługi konsoli dla AGE
Jeśli zależało ci na przenośności mogłeś użyć SDL_ttf. Jest wieloplatwormowe, a juz kiedyś pisałeś, że używasz SDLa.
SDLa używam tylko do stworzenia okna, obsługi myszy i klawiatury oraz odtwarzania dźwięku. Całą grafiką zajmuje się tylko i wyłącznie OpenGL ze względu na wydajność więc nie używam SDL_Surface a co za tym idzie nie mogę też użyć SDL_ttf.
A nie można założyć, że na platformie windows zawsze jest dostępny font arial a na linuxie inny standardowy(nie znam się na linuxach)..
@Zene: jeśli chodzi o Windowsa to sprawa jest prosta. Linux jednak sprawia trochę więcej problemów ponieważ na różnych dystrybucjach potencjalnie mogą być zupełnie inne czcionki i nie wiem czy jest jakaś czcionka która występuje zawsze.
Z drugiej strony jeśli znalazłbym jakiś serwer fontów to w Linuxie możnaby ściągać czcionki z tego serwera.
Ostatecznie zastosowane przeze mnie rozwiązania ma wiele zalet i tylko jedną – mało znaczącą – wadę. Pozostałe sprawiają więcej problemu niż jest z nich pożytku
Zamiast wrzucać czcionkę do kodu mogłeś chyba wrzucić po prostu ją jak każde inne dane? Obrazki, pliki konfiguracyjne i mapki też wrzucisz do kodu?
@Queight: AGE to nie gra – to biblioteka. Jedną standardową czcionkę po prostu potrzebuję, a takie rozwiązanie jest najlepsze z najprostszych.