Freetype2 i polskie znaki

0

Witam,
już prawie 8h siedzę nad tym problemem. Widzę, że nie został on podjęty na 4p.
Korzystając z kodu NeHe http://nehe.gamedev.net/tutorial/freetype_fonts_in_opengl/24001/
jestem w stanie narysować tekst w openGL, lecz problem pojawia się z polskimi znakami. Doszedłem do wniosku, żeby roszerzyć generowane znaki do 256, następnie do 512, użyć zamiast char - unsigned char lub unsigned short lub nawet wchar_t, jednak polskich znaków brak. Po kilku testach zauważyłem, że wyświetlają się wszystkie znaki, oprócz polskich (zaznaczone czerwoną ramką).
user image
Próbowałem już zmieniać kodowanie plików, projektu (pracuję w Code::Blocks), dodawanie L przed stringiem, podawanie kodu ASCII '\230', '\152'. Nic mi nie idzie. Nie mam pojęcia dlaczego tak się dzieje. Oczywiście testowałem wiele fontów TTF (m. in. arial, verdana, tachoma, times). Już jestem chory. Mógłby ktoś podsunąć rozwiązanie tego problemu? Może spotkaliście się z czymś takim.

0

Przyślij jakiś przykładowy kod (albo jeszcze lepiej - projekt) jeśli nie tajny, spróbujemy coś zrobić.

0

Ogólnie projekt jest bardzo tajny, za kod odpowiedzialny za obsluge tekstu identyczny jak w artykule na NeHe lekcja 43 - link podałem. U dołu mozna pobrac projekt. Przetestujcie u siebie, moze cos z moja zintegrowana karta w laptopie.

1

Zawziąłem się i doszedłem do konkretnej odpowiedzi.

http://pl.wikipedia.org/wiki/ISO_10646

Windows1250 -> USC

int translatePolishWindows1250(int ch)
{
    switch(ch)
    {
        case 165: return 260; break;
     	case 198: return  262; break;
     	case 202: return  280; break;
     	case 163: return  321; break;
     	case 209: return  323; break;
     	case 211: return  211; break;
     	case 140: return  346; break;
     	case 143: return  377; break;
     	case 175: return  379; break;
     	case 185: return  261; break;
     	case 230: return  263; break;
     	case 234: return  281; break;
     	case 179: return  322; break;
     	case 241: return  324; break;
     	case 243: return  243; break;
     	case 156: return  347; break;
     	case 159: return  378; break;
     	case 191: return  380; break;
     	default: return ch;
    }
}

Zupgreadowana wersja freetype.cpp
http://4programmers.net/Pastebin/1318

Dodatkowo przydatny link: http://pl.wikipedia.org/wiki/Kodowanie_polskich_znak%C3%B3w

Sorki za tyle postów pod rząd, ale to są po prostu ważne rzeczy, których długo szukałem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1