Czcionki w AGE

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 🙂

Reklamy

6 myśli nt. „Czcionki w AGE

  1. 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.

  2. @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 🙂

  3. 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?

  4. @Queight: AGE to nie gra – to biblioteka. Jedną standardową czcionkę po prostu potrzebuję, a takie rozwiązanie jest najlepsze z najprostszych.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s