Recupero di un glifo specificato da freetype (SHIFT JIS codificato)?
Domanda
Fino ad ora ho usato una texture (bitmapfont) per il rendering dei font, ma sto cercando di ottenere lavoro freetype2. Tutte le mie corde sono SHIFT_JIS codificato e il mio unico problema è ora quello di ottenere dal freetype il glifo diritto ad una corretta bitsequence SHIFT_JIS. Ma sembra più difficile di quanto mi aspettassi. Per esempio "?" ha il charcode "0x889F" (byte 1 è impostato a 136 e il byte 2 è 159) - che è secondo la codifica SHIFT_JIS. Così ho chiamato la funzione:
FT_Select_Charmap(face, FT_ENCODING_SJIS);
e cercare quindi di caricare un glifo con quella charcode:
FT_Load_Char(face, 0x889F, FT_LOAD_RENDER );
Ma ho ricevuto un po 'di glifo casuale. Non può essere un problema specifico del carattere, perché ho provato font già diverse con lo stesso risultato (e sì, forniscono un charmap shift-JIS). Per esempio "0" (zero) dovrebbe essere in posizione 0x0030 - ma è infatti alla 0x002D. Non tutti i personaggi hanno un offset di 3 costante, altrimenti non ci sarebbe nessun problema ... penso che la mia chiamata "FT_Load_Char", passare il parametro charcode in modo sbagliato - ma smussano indovinare come sarebbe giusto. Già provato:
FT_Load_Char(face, FT_Get_Char_Index(face, 0x889F), FT_LOAD_RENDER );
Ma poi ho ricevuto un altro glifo casuale. Così, come posso passare il charcode a FT_Load_Char se è selezionata non il charmap predefinita?
Tutto il consiglio sarebbe veramente utile. Grazie.
Soluzione
Se qualcuno troverà questo più tardi con un problema simile: Ho finito con la conversione dei codici di carattere al volo per unicode (utilizzando icu4c). Sembra che c`è problema con un sacco di giapponesi intestazioni caratteri SJIS (non possono selezionato tramite le enumerazioni FreeType - solo se si elencano tutti i set di caratteri disponibili di uno di questi tipi di carattere e quindi scegliere il giusto manualmente - piattaforma di ID & codificano Aren ID 't identico per tutti questi tipi di carattere troppo). Ma non era una soluzione adeguata per i miei needings (perché l'utilizzo di diversi tipi di carattere), così ho finalmente deciso di utilizzare Icu4c.
Speriamo che questo sarà utile a qualcuno.