Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Autor: Janusz Ganczarski
Biblioteki C++

Mapy bitowe

[lekcja] Rozdział 10. Mapy bitowe i fonty bitmapowe w OpenGL; dwa przykładowe programy; dwa polskie fonty.
Choć bibliotekę OpenGL postrzega się głównie jako bibliotekę obsługującą grafikę 3D, OpenGL posiada także wsparcie do klasycznej grafiki rastrowej. Do tej grupy można zaliczyć operacje na mapach bitowych (ang. bitmap), które często utożsamiane są z pokrewnym pojęciem map pikselowych (ang. pixmap) i określane jednym terminem „bitmapa”.
Zarówno mapy bitowe jak i mapy pikselowe są prostokątnymi tablicami liczb. Zasadnicza różnica pomiędzy nimi polega na ilości informacji zawatych w tablicach. Dane tablicy zawierającej mapą bitową przyjmują tylko dwie wartości: 0 lub 1, natomiast w mapie pikselowej dane pojedynczego elementu mogą być opisywane wieloma bajtami.

Pozycja rastra

Miejsce rysowania mapy bitowej, czyli tzw. pozycję rastra, określają funkcje z grupy glRasterPos. Co do zasady pozycję rastra opisują cztery współrzędne: (x, y, z, w). Ponieważ nie we wszystkich przypadkach konieczne jest stosowanie wszystkich współrzędnych, OpenGL zawiera funkcje definiujące tylko trzy pierwsze współrzędne (wtedy wartość współrzędnej w wynosi domyślnie 1) oraz funkcje definiujące dwie pierwsze współrzędne (wtedy wartość współrzędnej z wynosi domyślnie 0, a wartość współrzędnej w wynosi 1). Początkowa pozycja rastra określona jest współrzędnymi (0, 0, 0, 1).

Grupa glRastterPos obejmuje 24 funkcje, które można podzielić na 3 równoliczne podgrupy, każda wymagająca innej ilości współrzędnych. Parametrami funkcji z każdej podgrup są albo kolejne współrzędne pozycji rastra, albo wskaźniki na tablice zawierające te współrzędne. Współrzędne pozycji rastra podlegają przekształceniom z udziałem macierzy rzutowania i modelowania (tak samo jak współrzędne wierzchołków prymitywów definiowane przez funkcje z grupy glVertex), co należy uwzględnić przy wyświetlaniu mapy bitowej.
Warto w tym miejscu przypomnieć, że z funkcji glRasterPos2i korzystaliśmy już wcześniej przy rysowaniu numerów wierzchołków prymitywów graficznych.

Alternatywnym sposób określenia pozycji rastra wprowadzono w wersji 1.4 biblioteki OpenGL. Są to funkcje z grupy glWindowPos, które pozycję rastra określają we współrzędnych okna bez udziału macierzy rzutowania i modelowania. Wcześniej takie same możliwości udostępniało rozszerzenie ARB window pos, które z kolei bazowało na opracowanym w bibliotece MESA rozszerzeniu MESA window pos.
Grupa glWindowPos obejmuje 16 funkcji, które można podzielić na 2 równoliczne podgrupy, każda wymagająca innej ilości współrzędnych. Parametrami funkcji z każdej podgrup są albo kolejne współrzędne pozycji rastra, albo wskaźniki na tablice zawierające te współrzędne. W przypadku użycia funkcji definiującej dwie współrzędne, wartość współrzędnej z wynosi 1.
W przypadku użycia funkcji z grupy glWindowPos trzeba pamiętać, że współrzędne pozycji rastra (xw , yw , zw , wc) obliczane są wg poniższego algorytmu:
TODO: wzory
TODO: wzory
gdzie near i far są zakresami wartości bufora głębokości, określonymi przez funkcję glDepthRange.
Nieprawidłowe określenie pozycji rastra, tj uzyskanie pozycji znajdującej się poza obszarem renderingu powoduje pominięcie przez OpenGL wszelkich operacji korzystających z pozycji rastra.

Funkcje z grupy glRasterPos2

C/C++
void glRasterPos2d( GLdouble x, GLdouble y )
void glRasterPos2f( GLfloat x, GLfloat y )
void glRasterPos2i( GLint x, GLint y )
void glRasterPos2s( GLshort x, GLshort y )
void glRasterPos2dv( const GLdouble * v )
void glRasterPos2fv( const GLfloat * v )
void glRasterPos2iv( const GLint * v )
void glRasterPos2sv( const GLshort * v )

Funkcje z grupy glRasterPos3

C/C++
void glRasterPos3d( GLdouble x, GLdouble y, GLdouble z ) void glRasterPos3f( GLfloat x, GLfloat y, GLfloat z ) void glRasterPos3i( GLint x, GLint y, GLint z )
void glRasterPos3s( GLshort x, GLshort y, GLshort z )
void glRasterPos3dv( const GLdouble * v ) void glRasterPos3fv( const GLfloat * v ) void glRasterPos3iv( const GLint * v ) void glRasterPos3sv( const GLshort * v )

Funkcje z grupy glRasterPos4

C/C++
void glRasterPos4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w )
void glRasterPos4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w )
void glRasterPos4i( GLint x, GLint y, GLint z, GLint w )
void glRasterPos4s( GLshort x, GLshort y, GLshort z, GLshort w )
void glRasterPos4dv( const GLdouble * v )
void glRasterPos4fv( const GLfloat * v )
void glRasterPos4iv( const GLint * v )
void glRasterPos4sv( const GLshort * v )

Funkcje z grupy glWindowPos2

C/C++
void glWindowPos2d( GLdouble x, GLdouble y )
void glWindowPos2f( GLfloat x, GLfloat y )
void glWindowPos2i( GLint x, GLint y )
void glWindowPos2s( GLshort x, GLshort y )
void glWindowPos2dv( const GLdouble * v )
void glWindowPos2fv( const GLfloat * v )
void glWindowPos2iv( const GLint * v )
void glWindowPos2sv( const GLshort * v )

Funkcje z grupy glWindowPos3

C/C++
void glWindowPos3d( GLdouble x, GLdouble y, GLdouble z )
void glWindowPos3f( GLfloat x, GLfloat y, GLfloat z )
void glWindowPos3i( GLint x, GLint y, GLint z )
void glWindowPos3s( GLshort x, GLshort y, GLshort z )
void glWindowPos3dv( const GLdouble * v )
void glWindowPos3fv( const GLfloat * v )
void glWindowPos3iv( const GLint * v )
void glWindowPos3sv( const GLshort * v )

Rysowanie mapy bitowej

Rysowanie mapy bitowej w bieżącej pozycji rastra wykonuje funkcja:
C/C++
void glBitmap( GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte * bitmap )
której parametry oznaczają odpowiednio:
  • width - szerokość mapy bitowej w pikselach,
  • height - wysokość mapy bitowej w pikselach,
  • xorig, yorig - współrzędne początku układu współrzędnych mapy bitowej liczone względem jej lewego dolnego wierzchołka,
  • xmove, ymove - współrzędne wektora przesunięcia pozycji rastra wykonywanego po narysowaniu mapy bitowej,
  • bitmap - wskaźnik do danych bitmapy.
Jeżeli pozycja rastra jest nieprawidłowa (np. współrzędne znajdują się poza bryłą odcinania) mapa bitowa nie jest rysowana. Ważną cechą przy wyświetlaniu mapy bitowej jest, to że rysowane są jedynie piksele o wartości 1. Piksele o wartości 0 są pomijane i nie wpływają na zawartość bufora kolorów. Kolor mapy bitowej określany jest w momencie ustalenia współrzędnych pozycji rastra (będzie to oczywiście kolor określony przez funkcję z grupy glColor). Wywołanie funkcji z grupy glColor po ustaleniu pozycji rastra nie ma wpływu na kolor pikseli wyświetlanej mapy bitowej.

Dane mapy bitowej

Dane mapy bitowej zapisywane są wierszami w odwrotnej kolejności tj. od wiersza dolnego do górnego. Odrębnym zagadnieniem jest sposób rozmieszczenia danych w wierszach mapy bitowej. Standardowo każdy wiersz wyrównywany jest do granicy 4 bajtów, co oczywiście przyspiesza operacje na 32-bitowych procesorach. Niestety w wielu przypadkach zwiększa to jednocześnie ilość pamięci potrzebnej do przechowywania mapy bitowej.
Pełną kontrolę nad trybem pobierania i zapisywania danych z pamięci umożliwiają funkcje z grupy glPixelStore:
C/C++
void glPixelStoref( GLenum pname, GLfloat param )
void glPixelStorei( GLenum pname, GLint param )
pname określa który parametr opisujący tryb pobierania lub zapisywania danych z pamięci ma zostać zmodyfikowany, a nową wartość danego parametru zawiera param. Dopuszczalne są następujące wartości parametru pname:
  • GL_PACK_SWAP_BYTES - kolejność bajtów przy zapisie danych wielobajtowych jest domyślnie (GL FALSE) ustalana zgodnie z właściwościami maszyny, w przeciwnym wypadku (GL TRUE) bajty danych wielobajtowych są przy zapisie odwracane; przykładowo bajty czterobajtowej liczby b0b1b2b3 zostaną zapisane w kolejności: b3 b2 b1 b0,
  • GL_PACK_LSB_FIRST - kolejność zapisu bitów w bajcie danych; domyślna wartość (GL FALSE) oznacza, że bity uporządkowane są od najbardziej do najmniej znaczącego, w przeciwnym wypadku (GL TRUE) bity uporządkowane są od najmniej do najbardziej znaczącego; atrybut ten ma znaczenie tylko przy zapisie map bitowych,
  • GL_PACK_ROW_LENGTH - określenie szerokości zapisywanej mapy bitowej, gdy jest ona węższa niż cała mapa bitowa; domyślna wartość 0 oznacza, że zapisywana mapa bitowa ma szerokość określoną parametrem width funkcji glBitmap (patrz rysunek 1),
    Rysunek 1. Wybrane parametry funkcji glPixelStore
    Rysunek 1. Wybrane parametry funkcji glPixelStore
  • GL_PACK_IMAGE_HEIGHT - parametr używany przy zapisie tekstur trójwymiarowych, który określa wysokość każdego z obrazów wchodzących w skład tekstury,
  • GL_PACK_SKIP_PIXELS - określenie ilości początkowych pikseli w wierszu pomijanych podczas zapisu mapy bitowej (patrz rysunek 1); wartość domyślna wynosi 0,
  • GL_PACK_SKIP_ROWS - określenie ilości początkowych (dolnych) wierszy pomijanych podczas zapisu mapy bitowej (patrz rysunek 1); wartość domyślna wynosi 0,
  • GL_PACK_SKIP_IMAGES - parametr używany przy zapisie tekstur trójwymiarowych, określający ilość pomijanych początkowych obrazów,
  • GL_PACK_ALIGNMENT - wielokrotność (w bajtach) długości pojedynczego wiersza danych zapisywanych do pamięci; domyślnie wiersze wyrównywane są do 4 bajtów, inne dopuszczalne wartości wynoszą 1, 2 i 8,
  • GL_UNPACK_SWAP_BYTES - kolejność bajtów przy odczycie danych wielobajtowych jest domyślnie (GL FALSE) ustalana zgodnie z właściwościami maszyny, w przeciwnym wypadku (GL TRUE) bajty danych wielobajtowych są przy odczycie odwracane; przykładowo bajty czterobajtowej liczby b0b1b2b3 zostaną odczytane w kolejności: b3b2b1b0,
  • GL_UNPACK_LSB_FIRST - kolejność odczytu bitów w bajcie danych; domyślna wartość (GL FALSE) oznacza, że bity uporządkowane są od najbardziej do najmniej znaczącego, w przeciwnym wypadku (GL TRUE) bity uporządkowane są od najmniej do najbardziej znaczącego; atrybut ten ma znaczenie tylko przy odczycie map bitowych,
  • GL_UNPACK_ROW_LENGTH - określenie szerokości odczytywanej mapy bitowej, gdy jest ona węższa niż cała mapa bitowa; domyślna wartość 0 oznacza, że odczytywana mapa bitowa ma szerokość określoną parametrem width funkcji glBitmap (patrz rysunek 1),
  • GL_UNPACK_IMAGE_HEIGHT - parametr używany przy odczycie tekstur trójwymiarowych, który określa wysokość każdego z obrazów wchodzących w skład tekstury,
  • GL_UNPACK_SKIP_PIXELS - określenie ilości początkowych pikseli w wierszu pomijanych podczas odczytu mapy bitowej (patrz rysunek 1); wartość domyślna wynosi 0,
  • GL_UNPACK_SKIP_ROWS - określenie ilości początkowych (dolnych) wierszy pomijanych podczas odczytu mapy bitowej (patrz rysunek 1); wartość domyślna wynosi 0,
  • GL_UNPACK_SKIP_IMAGES - parametr używany przy odczycie tekstur trójwymiarowych, określający ilość pomijanych początkowych obrazów tekstury,
  • GL_UNPACK_ALIGNMENT - wielokrotność (w bajtach) długości pojedynczego wiersza danych odczytywanych z pamięci; domyślnie wiersze wyrównywane są do 4 bajtów, inne dopuszczalne wartości wynoszą 1, 2 i 8. Jak już Czytelnik zauważył zastosowanie funkcji z grupy glPixelStore nie ogranicza się wyłącznie do map bitowych. Nie przedstawione bliżej parametry używane przy obsłudze tekstur trójwymiarowych zostały włączone do specyfikacji biblioteki OpenGL w wersji 1.2. Wcześniej ich obsługę zdefiniowano w rozszerzeniu EXT texture3D.
Tabela 1 zawiera zbiorcze zestawienie wartości początkowych parametrów funkcji z grupy glPixelStore oraz dopuszczalne zakresy ich wartości. Przekroczenie dopuszczalnych zakresów parametru param spowoduje wygenerowanie błędu GL INVALID VALUE.

Tabela 1: Parametry funkcji z grupy glPixelStore

parametrtyp wartość początkowazakres wartości
GL_PACK_SWAP_BYTESGLbooleanGL_FALSEGL_TRUE, GL_FALSE
GL_PACK_LSB_FIRSTGLbooleanGL_FALSEGL_TRUE, GL_FALSE
GL_PACK_ROW_LENGTHGLint0[0, ∞)
GL_PACK_IMAGE_HEIGHTGLint0[0, ∞)
GL_PACK_SKIP_ROWSGLint0[0, ∞)
GL_PACK_SKIP_PIXELSGLint0[0, ∞)
GL_PACK_SKIP_IMAGESGLint0[0, ∞)
GL_PACK_ALIGNMENTGLint41, 2, 4, 8
GL_UNPACK_SWAP_BYTESGLbooleanGL_FALSEGL_TRUE, GL_FALSE
GL_UNPACK_LSB_FIRSTGLbooleanGL_FALSEGL_TRUE, GL_FALSE
GL_UNPACK_ROW_LENGTHGLint0[0, ∞)
GL_UNPACK_IMAGE_HEIGHTGLint0[0, ∞)
GL_UNPACK_SKIP_ROWSGLint0[0, ∞)
GL_UNPACK_SKIP_PIXELSGLint0[0, ∞)
GL_UNPACK_SKIP_IMAGESGLint0[0, ∞)
GL_UNPACK_ALIGNMENTGLint41, 2, 4, 8

Przykład

Pierwszy przykładowy program (plik mapy bitowe.cpp) prezentuje podstawowe techniki związane z wykorzystaniem map bitowych. Rysując literę F, zdefiniowaną jako mapę bitową o wymiarach 8 × 16 pikseli, program pozwala także na przetestowanie efektu zmiany kolejności bitów przy odczycie danych mapy bitowej, w wyniku czego otrzymujemy lustrzane odbicie litery (patrz rysunek 2). Użycie w programie litery jako danych mapy bitowej nie jest przypadkiem - konstrukcja i możliwości funkcji glBitmap predysponują mapy bitowe do tworzenia fontów bitmapowych, co przedstawi następny program.
Rysunek 2. Program Mapy bitowe - przykładowy efekt pracy
Rysunek 2. Program Mapy bitowe - przykładowy efekt pracy

Plik mapy bitowe.cpp

C/C++
/*
(c) Janusz Ganczarski
http://www.januszg.hg.pl
JanuszG@enter.net.pl
*/

#include <GL/glut.h>
#include <vector>

// mapa bitowa - litera F

GLubyte letterF[ 16 ] =
{
    0xC0, // 11000000
    0xC0, // 11000000
    0xC0, // 11000000
    0xC0, // 11000000
    0xC0, // 11000000
    0xC0, // 11000000
    0xC0, // 11000000
    0xFC, // 11111100
    0xFC, // 11111100
    0xC0, // 11000000
    0xC0, // 11000000
    0xC0, // 11000000
    0xC0, // 11000000
    0xC0, // 11000000
    0xFF, // 11111111
    0xFF // 11111111
};

// stałe do obsługi menu podręcznego

enum
{
    LSB_TRUE, // GL_PACK_LSB_FIRST = GL_TRUE
    LSB_FALSE, // GL_PACK_LSB_FIRST = GL_FALSE
    CLEAR_RASTER, // usuwanie współrzędnych rastra
    EXIT // wyjście
};

// współrzędne pozycji rastra map bitowych

std::vector < GLint > raster_x;
std::vector < GLint > raster_y;

// kolejność rysowania bitów mapy bitowej

std::vector < GLboolean > LSB;

// bieżąca kolejność rysowania bitów mapy bitowej

GLboolean currentLSB = GL_FALSE;

// funkcja generująca scenę 3D

void Display()
{
    // kolor tła - zawartość bufora koloru
    glClearColor( 1.0, 1.0, 1.0, 1.0 );
   
    // czyszczenie bufora koloru
    glClear( GL_COLOR_BUFFER_BIT );
   
    // wybór macierzy modelowania
    glMatrixMode( GL_MODELVIEW );
   
    // macierz modelowania = macierz jednostkowa
    glLoadIdentity();
   
    // kolor prostokąta
    glColor3f( 0.0, 1.0, 0.0 );
   
    // narysowanie prostokąta
    glRectf( 100, 100, glutGet( GLUT_WINDOW_WIDTH ) - 100, glutGet( GLUT_WINDOW_HEIGHT ) - 100 );
   
    // kolor mapy bitowej
    glColor3f( 1.0, 0.0, 0.0 );
   
    // format upakowania danych mapy bitowej
    glPixelStorei( GL_UNPACK_ALIGNMENT, 1 );
   
    // narysowane map bitowych
    for( unsigned int i = 0; i < raster_x.size(); i++ )
    {
        // format kolejności bitów danych
        glPixelStorei( GL_UNPACK_LSB_FIRST, LSB[ i ] );
       
        // położenie mapy bitowej
        glRasterPos2i( raster_x[ i ], raster_y[ i ] );
       
        // mapa bitowa
        glBitmap( 8, 16, 0, 0, 0, 0, letterF );
    }
   
    // skierowanie poleceń do wykonania
    glFlush();
   
    // zamiana buforów koloru
    glutSwapBuffers();
}

// zmiana wielkości okna

void Reshape( int width, int height )
{
    // obszar renderingu - całe okno
    glViewport( 0, 0, width, height );
   
    // wybór macierzy rzutowania
    glMatrixMode( GL_PROJECTION );
   
    // macierz rzutowania = macierz jednostkowa
    glLoadIdentity();
   
    // rzutowanie prostokątne
    gluOrtho2D( 0, width, 0, height );
   
    // generowanie sceny 3D
    Display();
}

// obsługa przycisków myszki

void MouseButton( int button, int state, int x, int y )
{
    if( button == GLUT_LEFT_BUTTON && state == GLUT_DOWN )
    {
        // zapamiętanie współrzędnych pozycji rastra
        raster_x.insert( raster_x.end(), x );
        raster_y.insert( raster_y.end(), glutGet( GLUT_WINDOW_HEIGHT ) - y );
        LSB.insert( LSB.end(), currentLSB );
        Display();
    }
}

// obsługa menu podręcznego

void Menu( int value )
{
    switch( value )
    {
        // GL_PACK_LSB_FIRST = GL_TRUE
    case LSB_TRUE:
        currentLSB = GL_TRUE;
        break;
       
        // GL_PACK_LSB_FIRST = GL_FALSE
    case LSB_FALSE:
        currentLSB = GL_FALSE;
        break;
       
        // usuwanie współrzędnych pozycji rastra
    case CLEAR_RASTER:
        raster_x.erase( raster_x.begin(), raster_x.end() );
        raster_y.erase( raster_y.begin(), raster_y.end() );
        LSB.erase( LSB.begin(), LSB.end() );
        Display();
        break;
       
        // wyjście
    case EXIT:
        exit( 0 );
    }
}

int main( int argc, char * argv[] )
{
    // inicjalizacja biblioteki GLUT
    glutInit( & argc, argv );
   
    // inicjalizacja bufora ramki
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGB );
   
    // rozmiary głównego okna programu
    glutInitWindowSize( 500, 500 );
   
    // utworzenie głównego okna programu
    glutCreateWindow( "Mapy bitowe" );
   
    // dołączenie funkcji generującej scenę 3D
    glutDisplayFunc( Display );
   
    // dołączenie funkcji wywoływanej przy zmianie rozmiaru okna
    glutReshapeFunc( Reshape );
   
    // obsługa przycisków myszki
    glutMouseFunc( MouseButton );
   
    // podmenu Kolejność bitów
    int MenuLSB = glutCreateMenu( Menu );
    glutAddMenuEntry( "GL_PACK_LSB_FIRST = GL_TURE", LSB_TRUE );
    glutAddMenuEntry( "GL_PACK_LSB_FIRST = GL_FALSE", LSB_FALSE );
   
    // utworzenie menu podręcznego
    glutCreateMenu( Menu );
   
    // pozycje menu podręcznego
    #ifdef WIN32
   
    glutAddSubMenu( "Kolejność bitów", MenuLSB );
    glutAddMenuEntry( "Usuń współrzędne rastra", CLEAR_RASTER );
    glutAddMenuEntry( "Wyjście", EXIT );
    #else
   
    glutAddSubMenu( "Kolejnosc bitow", MenuLSB );
    glutAddMenuEntry( "Usun wspolrzedne rastra", CLEAR_RASTER );
    glutAddMenuEntry( "Wyjscie", EXIT );
    #endif
   
    // określenie przycisku myszki obsługującego menu podręczne
    glutAttachMenu( GLUT_RIGHT_BUTTON );
   
    // wprowadzenie programu do obsługi pętli komunikatów
    glutMainLoop();
    return 0;
}

Fonty bitmapowe

Drugi program (plik fonty bitmapowe.cpp) przedstawia jeden ze sposobów utworzenia i korzystania w bibliotece OpenGL z fontów (czcionek) bitmapowych, niezależnych od udostępnianych przez bibliotekę GLUT. Podstawową sprawą jest posiadanie danych wybranej czcionki — w przykładowym programie wykorzystano fonty dostępne pod adresem: http://czyborra.com/. Są to czcionki zawierające znaki w kodowaniu CP1250 (rysunek 3) i ISO8859-2 (rysunek 4) uzupełnione o standardowe znaki US-ASCII (rysunek 5). Brakujące znaki uzupełniono spacjami. Definicje czcionek zawarte są w plikach cp1250.h i iso8859-2.h, a efekty działania programu przedstawiają rysunki 6 i 7.
Zastosowane w programie rozwiązanie przechowujące definicje poszczególnych znaków w dwuwymiarowej tablicy nie jest oczywiście jedynym możliwym rozwiązaniem. Alternatywnie można zbudować jedną tablicę z opisem znaków a przy ich wyświetlaniu korzystać np. z parametru GL UNPACK SKIP - ROWS funkcji z grupy glPixelStore bądź zwykłych operacji na wskaźnikach.
Rysunek 3. Tablica znaków CP1250 (WinLatin2)
Rysunek 3. Tablica znaków CP1250 (WinLatin2)
Rysunek 4. Tablica znaków ISO8859-2
Rysunek 4. Tablica znaków ISO8859-2

Plik cp1250.h

Rysunek 5. Tablica znaków US-ASCII (ISO 646-us)
Rysunek 5. Tablica znaków US-ASCII (ISO 646-us)
Rysunek 6. Program Fonty bitmapowe - znaki CP1250
Rysunek 6. Program Fonty bitmapowe - znaki CP1250
Rysunek 7. Program Fonty bitmapowe - znaki ISO8859-2
Rysunek 7. Program Fonty bitmapowe - znaki ISO8859-2
C/C++
/*
(c) Janusz Ganczarski
http://www.januszg.hg.pl
JanuszG@enter.net.pl
*/

#ifndef __CP1250_H__
#define __CP1250_H__

// microsoft-cp1250 charset font
// generated with /usr/bin/bdfassemble cp1250.txt
// on 1998-06-26 by czyborra@cs.tu-berlin.de
// http://czyborra.com/charsets/cp1250.bdf.gz
// FONT -misc-fixed-medium-r-normal--16-160-75-75-c-80-microsoft-cp1250

unsigned char cp1250_8x16_font[ 224 ][ 16 ] =
{
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x08,
        0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x22, 0x22, 0x22, 0x22, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x48, 0x48, 0x48, 0x7e, 0x24, 0x24,
        0x7e, 0x12, 0x12, 0x12, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x08, 0x3e, 0x49, 0x09, 0x0e, 0x38,
        0x48, 0x49, 0x3e, 0x08, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x46, 0x29, 0x29, 0x16, 0x08, 0x08,
        0x34, 0x4a, 0x4a, 0x31, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x39, 0x46, 0x42, 0x45, 0x39, 0x1c,
        0x22, 0x22, 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00
    },
    {
        0x00, 0x04, 0x08, 0x08, 0x10, 0x10, 0x10, 0x10,
        0x10, 0x10, 0x08, 0x08, 0x04, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x20, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x08, 0x10, 0x10, 0x20, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x08, 0x49, 0x2a, 0x1c, 0x2a,
        0x49, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x7f, 0x08,
        0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x10, 0x08, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x40, 0x40, 0x20, 0x10, 0x10, 0x08,
        0x08, 0x04, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x18, 0x24, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x28, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x40, 0x20, 0x10, 0x0c,
        0x02, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x02, 0x02, 0x1c,
        0x02, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x04, 0x04, 0x04, 0x7e, 0x44, 0x44,
        0x24, 0x14, 0x0c, 0x04, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x02, 0x02, 0x02, 0x7c,
        0x40, 0x40, 0x40, 0x7e, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x7c,
        0x40, 0x40, 0x20, 0x1c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04,
        0x04, 0x02, 0x02, 0x7e, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x3c,
        0x42, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x38, 0x04, 0x02, 0x02, 0x02, 0x3e,
        0x42, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00,
        0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x10, 0x08, 0x08, 0x18, 0x00, 0x00, 0x00,
        0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x10,
        0x08, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00,
        0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x40, 0x20, 0x10, 0x08, 0x04, 0x08,
        0x10, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x04,
        0x02, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x1e, 0x20, 0x4e, 0x52, 0x52, 0x52,
        0x56, 0x4a, 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x7e, 0x42,
        0x42, 0x24, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x7c, 0x42, 0x42, 0x42, 0x42, 0x7c,
        0x42, 0x42, 0x42, 0x7c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x40, 0x40, 0x40,
        0x40, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x78, 0x44, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x44, 0x78, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x40, 0x40, 0x40, 0x7c,
        0x40, 0x40, 0x40, 0x7e, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7c,
        0x40, 0x40, 0x40, 0x7e, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x4e, 0x40,
        0x40, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x7e,
        0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x08, 0x08, 0x3e, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x38, 0x44, 0x44, 0x04, 0x04, 0x04,
        0x04, 0x04, 0x04, 0x1f, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x44, 0x48, 0x50, 0x60, 0x60,
        0x50, 0x48, 0x44, 0x42, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x40, 0x40, 0x40, 0x40,
        0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x5a, 0x5a,
        0x66, 0x66, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x46, 0x46, 0x4a, 0x4a, 0x52,
        0x52, 0x62, 0x62, 0x42, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7c,
        0x42, 0x42, 0x42, 0x7c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x03, 0x3c, 0x66, 0x5a, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x44, 0x44, 0x48, 0x7c,
        0x42, 0x42, 0x42, 0x7c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x02, 0x0c, 0x30,
        0x40, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x08, 0x08, 0x7f, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x08, 0x08, 0x14, 0x14, 0x22, 0x22,
        0x22, 0x41, 0x41, 0x41, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x66, 0x66, 0x5a, 0x5a,
        0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x24, 0x24, 0x18, 0x18,
        0x24, 0x24, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x14,
        0x22, 0x22, 0x41, 0x41, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x40, 0x20, 0x10, 0x08,
        0x04, 0x02, 0x02, 0x7e, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x0e, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x08, 0x08, 0x08, 0x0e, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x02, 0x02, 0x04, 0x08, 0x08, 0x10,
        0x10, 0x20, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x70, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
        0x10, 0x10, 0x10, 0x10, 0x70, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x42, 0x24, 0x18, 0x00, 0x00
    },
    {
        0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x08, 0x10, 0x10, 0x18, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x3e, 0x02,
        0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x5c, 0x62, 0x42, 0x42, 0x42, 0x42,
        0x62, 0x5c, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x40, 0x40, 0x40, 0x40,
        0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x42, 0x42,
        0x46, 0x3a, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x40, 0x40, 0x7e, 0x42,
        0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
        0x7c, 0x10, 0x10, 0x10, 0x0c, 0x00, 0x00, 0x00
    },
    {
        0x3c, 0x42, 0x42, 0x3c, 0x20, 0x38, 0x44, 0x44,
        0x44, 0x3a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x62, 0x5c, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x18, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00
    },
    {
        0x30, 0x48, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
        0x04, 0x0c, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x44, 0x48, 0x50, 0x60, 0x50,
        0x48, 0x44, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x08, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
        0x49, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x62, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x40, 0x40, 0x5c, 0x62, 0x42, 0x42, 0x42, 0x42,
        0x62, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x02, 0x02, 0x3a, 0x46, 0x42, 0x42, 0x42, 0x42,
        0x46, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x42,
        0x62, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x02, 0x0c, 0x30, 0x40,
        0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x0c, 0x10, 0x10, 0x10, 0x10, 0x10,
        0x10, 0x7c, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x18, 0x18, 0x24, 0x24, 0x24, 0x42,
        0x42, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x36, 0x49, 0x49, 0x49, 0x49, 0x49,
        0x49, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x24, 0x18, 0x18, 0x24,
        0x42, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x3c, 0x02, 0x02, 0x1a, 0x26, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x20, 0x10, 0x08, 0x04,
        0x02, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x0c, 0x10, 0x10, 0x08, 0x08, 0x10, 0x10,
        0x08, 0x08, 0x10, 0x10, 0x0c, 0x00, 0x00, 0x00
    },
    {
        0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00
    },
    {
        0x00, 0x30, 0x08, 0x08, 0x10, 0x10, 0x08, 0x08,
        0x10, 0x10, 0x08, 0x08, 0x30, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x46, 0x49, 0x31, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x0c, 0x12, 0x20, 0x20, 0x7c, 0x20,
        0x7c, 0x20, 0x12, 0x0c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x10, 0x08, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x44, 0x22, 0x22, 0x66, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x49, 0x49, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x1c, 0x08,
        0x2a, 0x7f, 0x2a, 0x08, 0x1c, 0x08, 0x00, 0x00
    },
    {
        0x00, 0x08, 0x1c, 0x08, 0x2a, 0x7f, 0x2a, 0x08,
        0x08, 0x2a, 0x7f, 0x2a, 0x08, 0x1c, 0x08, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x8a, 0x55, 0x55, 0x2a, 0x10, 0x10,
        0x48, 0xa4, 0xa4, 0x42, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x02, 0x0c, 0x30,
        0x40, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x18, 0x24
    },
    {
        0x00, 0x00, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08,
        0x04, 0x04, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x02, 0x0c, 0x30,
        0x40, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x30, 0x0c
    },
    {
        0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x08, 0x08, 0x7f, 0x00, 0x00, 0x18, 0x24
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x40, 0x20, 0x10, 0x08,
        0x04, 0x02, 0x02, 0x7e, 0x00, 0x00, 0x18, 0x24
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x40, 0x20, 0x10, 0x08,
        0x04, 0x02, 0x02, 0x7e, 0x00, 0x00, 0x30, 0x0c
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x18, 0x10, 0x10, 0x08, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x10, 0x08, 0x08, 0x18, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x66, 0x44, 0x44, 0x22, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x44, 0x22, 0x22, 0x66, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x38, 0x7c, 0x7c, 0x7c,
        0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x29, 0x2b, 0x2f, 0x79, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x02, 0x0c, 0x30, 0x40,
        0x42, 0x3c, 0x00, 0x00, 0x18, 0x24, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10,
        0x20, 0x20, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x0c, 0x30, 0x40,
        0x42, 0x3c, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x0c, 0x10, 0x10, 0x10, 0x10, 0x10,
        0x10, 0x7c, 0x10, 0x10, 0x00, 0x00, 0x18, 0x24
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x20, 0x10, 0x08, 0x04,
        0x02, 0x7e, 0x00, 0x00, 0x18, 0x24, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x20, 0x10, 0x08, 0x04,
        0x02, 0x7e, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x24
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x42, 0x42
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x40, 0x40, 0xc0, 0x60,
        0x50, 0x48, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x42, 0x24, 0x3c, 0x24, 0x24,
        0x3c, 0x24, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x03, 0x04, 0x42, 0x42, 0x42, 0x42, 0x7e, 0x42,
        0x42, 0x24, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
        0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x02, 0x3c, 0x42, 0x42,
        0x3c, 0x40, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x24
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x99, 0xa5, 0xa1, 0xa1,
        0xa5, 0x99, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x30, 0x08, 0x3c, 0x42, 0x42, 0x02, 0x0c, 0x30,
        0x40, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x12, 0x12, 0x24, 0x24, 0x48, 0x24,
        0x24, 0x12, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0xa5, 0xa9, 0xb9, 0xa5,
        0xa5, 0xb9, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x40, 0x20, 0x10, 0x08,
        0x04, 0x02, 0x02, 0x7e, 0x00, 0x00, 0x10, 0x10
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x28, 0x10
    },
    {
        0x00, 0x00, 0x00, 0x7f, 0x00, 0x08, 0x08, 0x08,
        0x7f, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x06, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3e, 0x08, 0x08, 0x08, 0x28, 0x18,
        0x0c, 0x0a, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0c
    },
    {
        0x20, 0x20, 0x2a, 0x36, 0x22, 0x22, 0x22, 0x22,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x0e, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x3a,
        0x7a, 0x7a, 0x7a, 0x7a, 0x3e, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x30, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x03, 0x04, 0x3a, 0x46, 0x42, 0x42, 0x3e, 0x02,
        0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x30, 0x08, 0x3c, 0x42, 0x02, 0x0c, 0x30, 0x40,
        0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x48, 0x48, 0x24, 0x24, 0x12, 0x24,
        0x24, 0x48, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x40, 0x40, 0x40, 0x40,
        0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x18, 0x24
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x33
    },
    {
        0x00, 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x08, 0x08, 0x18, 0x00, 0x00, 0x18, 0x24
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x20, 0x10, 0x08, 0x04,
        0x02, 0x7e, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x44, 0x44, 0x48, 0x7c,
        0x42, 0x42, 0x42, 0x7c, 0x00, 0x00, 0x30, 0x0c
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x7e, 0x42,
        0x42, 0x24, 0x24, 0x18, 0x00, 0x00, 0x30, 0x0c
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x7e, 0x42,
        0x42, 0x24, 0x24, 0x18, 0x00, 0x00, 0x24, 0x18
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x7e, 0x42,
        0x42, 0x24, 0x24, 0x18, 0x00, 0x3c, 0x42, 0x42
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x7e, 0x42,
        0x42, 0x24, 0x24, 0x18, 0x00, 0x00, 0x24, 0x24
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x40, 0x40, 0x40, 0x40,
        0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x60, 0x18
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x40, 0x40, 0x40,
        0x40, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x30, 0x0c
    },
    {
        0x30, 0x08, 0x3c, 0x42, 0x42, 0x40, 0x40, 0x40,
        0x40, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x40, 0x40, 0x40,
        0x40, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x18, 0x24
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x40, 0x40, 0x40, 0x7c,
        0x40, 0x40, 0x40, 0x7e, 0x00, 0x00, 0x30, 0x0c
    },
    {
        0x06, 0x08, 0x7e, 0x40, 0x40, 0x40, 0x40, 0x7c,
        0x40, 0x40, 0x40, 0x7e, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x40, 0x40, 0x40, 0x7c,
        0x40, 0x40, 0x40, 0x7e, 0x00, 0x00, 0x24, 0x24
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x40, 0x40, 0x40, 0x7c,
        0x40, 0x40, 0x40, 0x7e, 0x00, 0x00, 0x18, 0x24
    },
    {
        0x00, 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x08, 0x08, 0x3e, 0x00, 0x00, 0x30, 0x0c
    },
    {
        0x00, 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x08, 0x08, 0x3e, 0x00, 0x00, 0x24, 0x18
    },
    {
        0x00, 0x00, 0x78, 0x44, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x44, 0x78, 0x00, 0x00, 0x30, 0x48
    },
    {
        0x00, 0x00, 0x78, 0x44, 0x42, 0x42, 0x42, 0xf2,
        0x42, 0x42, 0x44, 0x78, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x46, 0x46, 0x4a, 0x4a, 0x52,
        0x52, 0x62, 0x62, 0x42, 0x00, 0x00, 0x30, 0x0c
    },
    {
        0x00, 0x00, 0x42, 0x46, 0x46, 0x4a, 0x4a, 0x52,
        0x52, 0x62, 0x62, 0x42, 0x00, 0x00, 0x18, 0x24
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x30, 0x0c
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x24, 0x18
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x44, 0x33
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x24, 0x24
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x42, 0x24, 0x18, 0x24,
        0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x44, 0x44, 0x48, 0x7c,
        0x42, 0x42, 0x42, 0x7c, 0x00, 0x00, 0x18, 0x24
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x42, 0x42, 0x00, 0x18, 0x24, 0x18
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x30, 0x0c
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x44, 0x33
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x24, 0x24
    },
    {
        0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x14,
        0x22, 0x22, 0x41, 0x41, 0x00, 0x00, 0x30, 0x0c
    },
    {
        0x30, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x08, 0x08, 0x7f, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x5c, 0x62, 0x42, 0x42, 0x42, 0x7c,
        0x44, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x42,
        0x62, 0x5c, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x3e, 0x02,
        0x42, 0x3c, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x3e, 0x02,
        0x42, 0x3c, 0x00, 0x00, 0x24, 0x18, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x3e, 0x02,
        0x42, 0x3c, 0x00, 0x00, 0x3c, 0x42, 0x42, 0x00
    },
    {
        0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x3e, 0x02,
        0x42, 0x3c, 0x00, 0x00, 0x24, 0x24, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x08, 0x08, 0x18, 0x00, 0x00, 0x30, 0x0c
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x40, 0x40, 0x40, 0x40,
        0x42, 0x3c, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00
    },
    {
        0x30, 0x08, 0x3c, 0x42, 0x40, 0x40, 0x40, 0x40,
        0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x40, 0x40, 0x40, 0x40,
        0x42, 0x3c, 0x00, 0x00, 0x18, 0x24, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x40, 0x40, 0x7e, 0x42,
        0x42, 0x3c, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00
    },
    {
        0x0c, 0x10, 0x3c, 0x42, 0x40, 0x40, 0x7e, 0x42,
        0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x40, 0x40, 0x7e, 0x42,
        0x42, 0x3c, 0x00, 0x00, 0x24, 0x24, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x40, 0x40, 0x7e, 0x42,
        0x42, 0x3c, 0x00, 0x00, 0x18, 0x24, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x18, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x18, 0x00, 0x00, 0x24, 0x18, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x42, 0x42,
        0x46, 0x3a, 0x02, 0x02, 0x02, 0x00, 0x18, 0x24
    },
    {
        0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x42, 0x42,
        0x46, 0x3a, 0x02, 0x02, 0x0f, 0x02, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x62, 0x5c, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x62, 0x5c, 0x00, 0x00, 0x18, 0x24, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x3c, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x3c, 0x00, 0x00, 0x24, 0x18, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x3c, 0x00, 0x00, 0x44, 0x33, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x3c, 0x00, 0x00, 0x24, 0x24, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x7e, 0x00,
        0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x42,
        0x62, 0x5c, 0x00, 0x00, 0x18, 0x24, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x00, 0x18, 0x24, 0x18, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x00, 0x00, 0x44, 0x33, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x00, 0x00, 0x24, 0x24, 0x00, 0x00
    },
    {
        0x3c, 0x02, 0x02, 0x1a, 0x26, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00
    },
    {
        0x30, 0x08, 0x0c, 0x10, 0x10, 0x10, 0x10, 0x10,
        0x10, 0x7c, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10
    }
};

#endif // __CP1250_H__

Plik iso8859-2.h

C/C++
/*
(c) Janusz Ganczarski
http://www.januszg.hg.pl
JanuszG@enter.net.pl
*/

#ifndef __ISO8859_2_H__
#define __ISO8859_2_H__

// iso8859-2 charset font
// generated with /usr/bin/bdfassemble iso8859-2.txt
// on 1998-06-26 by czyborra@cs.tu-berlin.de
// http://czyborra.com/charsets/iso8859-2.bdf.gz
// FONT -misc-fixed-medium-r-normal--16-160-75-75-c-80-iso8859-2

unsigned char iso8859_2_8x16_font[ 224 ][ 16 ] =
{
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x08,
        0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x22, 0x22, 0x22, 0x22, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x48, 0x48, 0x48, 0x7e, 0x24, 0x24,
        0x7e, 0x12, 0x12, 0x12, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x08, 0x3e, 0x49, 0x09, 0x0e, 0x38,
        0x48, 0x49, 0x3e, 0x08, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x46, 0x29, 0x29, 0x16, 0x08, 0x08,
        0x34, 0x4a, 0x4a, 0x31, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x39, 0x46, 0x42, 0x45, 0x39, 0x1c,
        0x22, 0x22, 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00
    },
    {
        0x00, 0x04, 0x08, 0x08, 0x10, 0x10, 0x10, 0x10,
        0x10, 0x10, 0x08, 0x08, 0x04, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x20, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x08, 0x10, 0x10, 0x20, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x08, 0x49, 0x2a, 0x1c, 0x2a,
        0x49, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x7f, 0x08,
        0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x10, 0x08, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x40, 0x40, 0x20, 0x10, 0x10, 0x08,
        0x08, 0x04, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x18, 0x24, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x28, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x40, 0x20, 0x10, 0x0c,
        0x02, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x02, 0x02, 0x1c,
        0x02, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x04, 0x04, 0x04, 0x7e, 0x44, 0x44,
        0x24, 0x14, 0x0c, 0x04, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x02, 0x02, 0x02, 0x7c,
        0x40, 0x40, 0x40, 0x7e, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x7c,
        0x40, 0x40, 0x20, 0x1c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04,
        0x04, 0x02, 0x02, 0x7e, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x3c,
        0x42, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x38, 0x04, 0x02, 0x02, 0x02, 0x3e,
        0x42, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00,
        0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x10, 0x08, 0x08, 0x18, 0x00, 0x00, 0x00,
        0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x10,
        0x08, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00,
        0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x40, 0x20, 0x10, 0x08, 0x04, 0x08,
        0x10, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x08, 0x08, 0x00, 0x08, 0x08, 0x04,
        0x02, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x1e, 0x20, 0x4e, 0x52, 0x52, 0x52,
        0x56, 0x4a, 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x7e, 0x42,
        0x42, 0x24, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x7c, 0x42, 0x42, 0x42, 0x42, 0x7c,
        0x42, 0x42, 0x42, 0x7c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x40, 0x40, 0x40,
        0x40, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x78, 0x44, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x44, 0x78, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x40, 0x40, 0x40, 0x7c,
        0x40, 0x40, 0x40, 0x7e, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7c,
        0x40, 0x40, 0x40, 0x7e, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x4e, 0x40,
        0x40, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x7e,
        0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x08, 0x08, 0x3e, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x38, 0x44, 0x44, 0x04, 0x04, 0x04,
        0x04, 0x04, 0x04, 0x1f, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x44, 0x48, 0x50, 0x60, 0x60,
        0x50, 0x48, 0x44, 0x42, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x40, 0x40, 0x40, 0x40,
        0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x5a, 0x5a,
        0x66, 0x66, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x46, 0x46, 0x4a, 0x4a, 0x52,
        0x52, 0x62, 0x62, 0x42, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7c,
        0x42, 0x42, 0x42, 0x7c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x03, 0x3c, 0x66, 0x5a, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x44, 0x44, 0x48, 0x7c,
        0x42, 0x42, 0x42, 0x7c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x02, 0x0c, 0x30,
        0x40, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x08, 0x08, 0x7f, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x08, 0x08, 0x14, 0x14, 0x22, 0x22,
        0x22, 0x41, 0x41, 0x41, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x66, 0x66, 0x5a, 0x5a,
        0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x24, 0x24, 0x18, 0x18,
        0x24, 0x24, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x14,
        0x22, 0x22, 0x41, 0x41, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x40, 0x20, 0x10, 0x08,
        0x04, 0x02, 0x02, 0x7e, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x0e, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x08, 0x08, 0x08, 0x0e, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x02, 0x02, 0x04, 0x08, 0x08, 0x10,
        0x10, 0x20, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x70, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
        0x10, 0x10, 0x10, 0x10, 0x70, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x42, 0x24, 0x18, 0x00, 0x00
    },
    {
        0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x08, 0x10, 0x10, 0x18, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x3e, 0x02,
        0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x5c, 0x62, 0x42, 0x42, 0x42, 0x42,
        0x62, 0x5c, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x40, 0x40, 0x40, 0x40,
        0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x42, 0x42,
        0x46, 0x3a, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x40, 0x40, 0x7e, 0x42,
        0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
        0x7c, 0x10, 0x10, 0x10, 0x0c, 0x00, 0x00, 0x00
    },
    {
        0x3c, 0x42, 0x42, 0x3c, 0x20, 0x38, 0x44, 0x44,
        0x44, 0x3a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x62, 0x5c, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x18, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00
    },
    {
        0x30, 0x48, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
        0x04, 0x0c, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x44, 0x48, 0x50, 0x60, 0x50,
        0x48, 0x44, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x08, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
        0x49, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x62, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x40, 0x40, 0x5c, 0x62, 0x42, 0x42, 0x42, 0x42,
        0x62, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x02, 0x02, 0x3a, 0x46, 0x42, 0x42, 0x42, 0x42,
        0x46, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x42,
        0x62, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x02, 0x0c, 0x30, 0x40,
        0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x0c, 0x10, 0x10, 0x10, 0x10, 0x10,
        0x10, 0x7c, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x18, 0x18, 0x24, 0x24, 0x24, 0x42,
        0x42, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x36, 0x49, 0x49, 0x49, 0x49, 0x49,
        0x49, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x24, 0x18, 0x18, 0x24,
        0x42, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x3c, 0x02, 0x02, 0x1a, 0x26, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x20, 0x10, 0x08, 0x04,
        0x02, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x0c, 0x10, 0x10, 0x08, 0x08, 0x10, 0x10,
        0x08, 0x08, 0x10, 0x10, 0x0c, 0x00, 0x00, 0x00
    },
    {
        0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00
    },
    {
        0x00, 0x30, 0x08, 0x08, 0x10, 0x10, 0x08, 0x08,
        0x10, 0x10, 0x08, 0x08, 0x30, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x46, 0x49, 0x31, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x03, 0x04, 0x42, 0x42, 0x42, 0x42, 0x7e, 0x42,
        0x42, 0x24, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x42, 0x42
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x40, 0x40, 0xc0, 0x60,
        0x50, 0x48, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x42, 0x24, 0x3c, 0x24, 0x24,
        0x3c, 0x24, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x40, 0x40, 0x40, 0x40,
        0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x18, 0x24
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x02, 0x0c, 0x30,
        0x40, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x30, 0x0c
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x02, 0x3c, 0x42, 0x42,
        0x3c, 0x40, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x24
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x02, 0x0c, 0x30,
        0x40, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x18, 0x24
    },
    {
        0x30, 0x08, 0x3c, 0x42, 0x42, 0x02, 0x0c, 0x30,
        0x40, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x08, 0x08, 0x7f, 0x00, 0x00, 0x18, 0x24
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x40, 0x20, 0x10, 0x08,
        0x04, 0x02, 0x02, 0x7e, 0x00, 0x00, 0x30, 0x0c
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x40, 0x20, 0x10, 0x08,
        0x04, 0x02, 0x02, 0x7e, 0x00, 0x00, 0x18, 0x24
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x40, 0x20, 0x10, 0x08,
        0x04, 0x02, 0x02, 0x7e, 0x00, 0x00, 0x10, 0x10
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x28, 0x10
    },
    {
        0x03, 0x04, 0x3a, 0x46, 0x42, 0x42, 0x3e, 0x02,
        0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x06, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3e, 0x08, 0x08, 0x08, 0x28, 0x18,
        0x0c, 0x0a, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0c
    },
    {
        0x00, 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x08, 0x08, 0x18, 0x00, 0x00, 0x18, 0x24
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x0c, 0x30, 0x40,
        0x42, 0x3c, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x24
    },
    {
        0x30, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x02, 0x0c, 0x30, 0x40,
        0x42, 0x3c, 0x00, 0x00, 0x18, 0x24, 0x00, 0x00
    },
    {
        0x30, 0x08, 0x3c, 0x42, 0x02, 0x0c, 0x30, 0x40,
        0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x0c, 0x10, 0x10, 0x10, 0x10, 0x10,
        0x10, 0x7c, 0x10, 0x10, 0x00, 0x00, 0x18, 0x24
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x20, 0x10, 0x08, 0x04,
        0x02, 0x7e, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x33
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x20, 0x10, 0x08, 0x04,
        0x02, 0x7e, 0x00, 0x00, 0x18, 0x24, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x20, 0x10, 0x08, 0x04,
        0x02, 0x7e, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x44, 0x44, 0x48, 0x7c,
        0x42, 0x42, 0x42, 0x7c, 0x00, 0x00, 0x30, 0x0c
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x7e, 0x42,
        0x42, 0x24, 0x24, 0x18, 0x00, 0x00, 0x30, 0x0c
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x7e, 0x42,
        0x42, 0x24, 0x24, 0x18, 0x00, 0x00, 0x24, 0x18
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x7e, 0x42,
        0x42, 0x24, 0x24, 0x18, 0x00, 0x3c, 0x42, 0x42
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x7e, 0x42,
        0x42, 0x24, 0x24, 0x18, 0x00, 0x00, 0x24, 0x24
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x40, 0x40, 0x40, 0x40,
        0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x60, 0x18
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x40, 0x40, 0x40,
        0x40, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x30, 0x0c
    },
    {
        0x30, 0x08, 0x3c, 0x42, 0x42, 0x40, 0x40, 0x40,
        0x40, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x40, 0x40, 0x40,
        0x40, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x18, 0x24
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x40, 0x40, 0x40, 0x7c,
        0x40, 0x40, 0x40, 0x7e, 0x00, 0x00, 0x30, 0x0c
    },
    {
        0x06, 0x08, 0x7e, 0x40, 0x40, 0x40, 0x40, 0x7c,
        0x40, 0x40, 0x40, 0x7e, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x40, 0x40, 0x40, 0x7c,
        0x40, 0x40, 0x40, 0x7e, 0x00, 0x00, 0x24, 0x24
    },
    {
        0x00, 0x00, 0x7e, 0x40, 0x40, 0x40, 0x40, 0x7c,
        0x40, 0x40, 0x40, 0x7e, 0x00, 0x00, 0x18, 0x24
    },
    {
        0x00, 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x08, 0x08, 0x3e, 0x00, 0x00, 0x30, 0x0c
    },
    {
        0x00, 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x08, 0x08, 0x3e, 0x00, 0x00, 0x24, 0x18
    },
    {
        0x00, 0x00, 0x78, 0x44, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x44, 0x78, 0x00, 0x00, 0x30, 0x48
    },
    {
        0x00, 0x00, 0x78, 0x44, 0x42, 0x42, 0x42, 0xf2,
        0x42, 0x42, 0x44, 0x78, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x46, 0x46, 0x4a, 0x4a, 0x52,
        0x52, 0x62, 0x62, 0x42, 0x00, 0x00, 0x30, 0x0c
    },
    {
        0x00, 0x00, 0x42, 0x46, 0x46, 0x4a, 0x4a, 0x52,
        0x52, 0x62, 0x62, 0x42, 0x00, 0x00, 0x18, 0x24
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x30, 0x0c
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x24, 0x18
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x44, 0x33
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x24, 0x24
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x42, 0x24, 0x18, 0x24,
        0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x44, 0x44, 0x48, 0x7c,
        0x42, 0x42, 0x42, 0x7c, 0x00, 0x00, 0x18, 0x24
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x42, 0x42, 0x00, 0x18, 0x24, 0x18
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x30, 0x0c
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x44, 0x33
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x24, 0x24
    },
    {
        0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x14,
        0x22, 0x22, 0x41, 0x41, 0x00, 0x00, 0x30, 0x0c
    },
    {
        0x30, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x08, 0x08, 0x7f, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x5c, 0x62, 0x42, 0x42, 0x42, 0x7c,
        0x44, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x42,
        0x62, 0x5c, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x3e, 0x02,
        0x42, 0x3c, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x3e, 0x02,
        0x42, 0x3c, 0x00, 0x00, 0x24, 0x18, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x3e, 0x02,
        0x42, 0x3c, 0x00, 0x00, 0x3c, 0x42, 0x42, 0x00
    },
    {
        0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x3e, 0x02,
        0x42, 0x3c, 0x00, 0x00, 0x24, 0x24, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x08, 0x08, 0x18, 0x00, 0x00, 0x30, 0x0c
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x40, 0x40, 0x40, 0x40,
        0x42, 0x3c, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00
    },
    {
        0x30, 0x08, 0x3c, 0x42, 0x40, 0x40, 0x40, 0x40,
        0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x40, 0x40, 0x40, 0x40,
        0x42, 0x3c, 0x00, 0x00, 0x18, 0x24, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x40, 0x40, 0x7e, 0x42,
        0x42, 0x3c, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00
    },
    {
        0x0c, 0x10, 0x3c, 0x42, 0x40, 0x40, 0x7e, 0x42,
        0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x40, 0x40, 0x7e, 0x42,
        0x42, 0x3c, 0x00, 0x00, 0x24, 0x24, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x40, 0x40, 0x7e, 0x42,
        0x42, 0x3c, 0x00, 0x00, 0x18, 0x24, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x18, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x08,
        0x08, 0x18, 0x00, 0x00, 0x24, 0x18, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x42, 0x42,
        0x46, 0x3a, 0x02, 0x02, 0x02, 0x00, 0x18, 0x24
    },
    {
        0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x42, 0x42,
        0x46, 0x3a, 0x02, 0x02, 0x0f, 0x02, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x62, 0x5c, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x62, 0x5c, 0x00, 0x00, 0x18, 0x24, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x3c, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x3c, 0x00, 0x00, 0x24, 0x18, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x3c, 0x00, 0x00, 0x44, 0x33, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x3c, 0x00, 0x00, 0x24, 0x24, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x7e, 0x00,
        0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x42,
        0x62, 0x5c, 0x00, 0x00, 0x18, 0x24, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x00, 0x18, 0x24, 0x18, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x00, 0x00, 0x44, 0x33, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x00, 0x00, 0x24, 0x24, 0x00, 0x00
    },
    {
        0x3c, 0x02, 0x02, 0x1a, 0x26, 0x42, 0x42, 0x42,
        0x42, 0x42, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00
    },
    {
        0x30, 0x08, 0x0c, 0x10, 0x10, 0x10, 0x10, 0x10,
        0x10, 0x7c, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00
    },
    {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10
    },
};

#endif // __ISO8859_2_H__

Plik fonty bitmapowe.cpp

C/C++
/*
(c) Janusz Ganczarski
http://www.januszg.hg.pl
JanuszG@enter.net.pl
*/

#include <GL/glut.h>
#include <stdlib.h>
#include "cp1250.h"
#include "iso8859-2.h"

// stałe do obsługi menu podręcznego

enum
{
    CP_1250, // CP 1250
    ISO_8859_2, // ISO 8859-2
    EXIT // wyjście
};

// wyświetlany font

int font = CP_1250;

// wyświetlenie napisu w kodowaniu CP 1250

void DrawCP1250String( char * str )
{
    while( * str )
         glBitmap( 8, 16, 0, 0, 8, 0, cp1250_8x16_font[( int )( * str++ ) - 32 ] );
   
}

// wyświetlenie napisu w kodowaniu ISO8859-2

void DrawISO8859_2String( char * str )
{
    while( * str )
         glBitmap( 8, 16, 0, 0, 8, 0, iso8859_2_8x16_font[( int )( * str++ ) - 32 ] );
   
}

// funkcja generująca scenę 3D

void Display()
{
    // kolor tła - zawartość bufora koloru
    glClearColor( 1.0, 1.0, 1.0, 1.0 );
   
    // czyszczenie bufora koloru
    glClear( GL_COLOR_BUFFER_BIT );
   
    // wybór macierzy modelowania
    glMatrixMode( GL_MODELVIEW );
   
    // macierz modelowania = macierz jednostkowa
    glLoadIdentity();
   
    // kolor napisów
    glColor3f( 0.0, 0.0, 0.0 );
   
    // format upakowania danych map bitowych fontów
    glPixelStorei( GL_UNPACK_ALIGNMENT, 1 );
   
    // wyświetrlenie rodzaju kodowania
    glRasterPos2f( 30, 170 );
    if( font == CP_1250 )
         DrawCP1250String( "CP1250" );
    else
         DrawISO8859_2String( "ISO8859-2" );
   
    // numer wyświetlanego znaku ASCII
    int character = 0;
   
    // rysowanie poszczególnych wierszy ze znakami (po 32 znaki w wierszu)
    for( int row = 0; row < 7; row++ )
    {
        // położenie pierwszego znaku
        glRasterPos2f( 30, 150 - 20 * row );
       
        // wyświetlenie znaków w zależności od wybranego kodowania
        if( font == CP_1250 )
        for( int i = 0; i < 32; i++ )
             glBitmap( 8, 16, 0, 0, 10, 0, cp1250_8x16_font[ character++ ] );
        else
        for( int i = 0; i < 32; i++ )
             glBitmap( 8, 16, 0, 0, 10, 0, iso8859_2_8x16_font[ character++ ] );
       
    }
   
    // skierowanie poleceń do wykonania
    glFlush();
   
    // zamiana buforów koloru
    glutSwapBuffers();
}

// zmiana wielkości okna

void Reshape( int width, int height )
{
    // obszar renderingu - całe okno
    glViewport( 0, 0, width, height );
   
    // wybór macierzy rzutowania
    glMatrixMode( GL_PROJECTION );
   
    // macierz rzutowania = macierz jednostkowa
    glLoadIdentity();
   
    // rzutowanie prostokątne
    gluOrtho2D( 0, width, 0, height );
   
    // generowanie sceny 3D
    Display();
}

// obsługa menu podręcznego

void Menu( int value )
{
    switch( value )
    {
        // CP 1250
    case CP_1250:
        font = CP_1250;
        Display();
        break;
       
        // ISO 8859-2
    case ISO_8859_2:
        font = ISO_8859_2;
        Display();
        break;
       
        // wyjście
    case EXIT:
        exit( 0 );
    }
}

int main( int argc, char * argv[] )
{
    // inicjalizacja biblioteki GLUT
    glutInit( & argc, argv );
   
    // inicjalizacja bufora ramki
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGB );
   
    // rozmiary głównego okna programu
    glutInitWindowSize( 400, 200 );
   
    // utworzenie głównego okna programu
    glutCreateWindow( "Fonty bitmapowe" );
   
    // dołączenie funkcji generującej scenę 3D
    glutDisplayFunc( Display );
   
    // dołączenie funkcji wywoływanej przy zmianie rozmiaru okna
    glutReshapeFunc( Reshape );
   
    // utworzenie menu podręcznego
    glutCreateMenu( Menu );
   
    // pozycje menu podręcznego
    glutAddMenuEntry( "CP1250", CP_1250 );
    glutAddMenuEntry( "ISO8859-2", ISO_8859_2 );
    #ifdef WIN32
   
    glutAddMenuEntry( "Wyjście", EXIT );
    #else
   
    glutAddMenuEntry( "Wyjscie", EXIT );
    #endif
   
    // określenie przycisku myszki obsługującego menu podręczne
    glutAttachMenu( GLUT_RIGHT_BUTTON );
   
    // wprowadzenie programu do obsługi pętli komunikatów
    glutMainLoop();
    return 0;
}
Poprzedni dokument Następny dokument
Rozszerzenia Mapy pikselowe