使用IwGxFontDrawText显示西里尔字体

时间:2014-09-04 08:10:13

标签: c++ character-encoding true-type-fonts marmalade

我试图在我的Marmalade项目中使用IwGxFontDrawText函数显示西里尔字符串。我已经添加了TimesNewRoman ttf文件和我的代码:

int main()
{
    // Initialise Iw2D
    Iw2DInit();

    // Create the font that is used to display the score
    CIwGxFont *Font = IwGxFontCreateTTFont("TNR_B.ttf", 14);
    IwGxLightingOn();
    IwGxFontSetFont(Font);
    IwGxFontSetRect(CIwRect((int16)10, (int16)10, (int16)IwGxGetScreenWidth(), (int16)IwGxGetScreenHeight()));

    int scores = 0;

    while (!s3eDeviceCheckQuitRequest())
    {
        // Clear background to blue
        Iw2DSurfaceClear(0xff8080);

        IwGxFontDrawText("Привет: ");
        // Convert the score number to text
        char str[32];
        snprintf(str, 32, "             %d", scores);

        IwGxFontDrawText(str);
        scores++;

        // Flip the surface buffer to screen
        Iw2DSurfaceShow();

        s3eDeviceYield(0);  // Yield to OS
    }

    Iw2DTerminate();

    return 0;
}

当我显示拉丁文本时 - 一切正常,但当我显示西里尔文本时 - 我收到错误 enter image description here

如何显示西里尔文字?

1 个答案:

答案 0 :(得分:1)

消息显示您的字符串不是UTF-8编码的。由于您的字符串直接来自源代码,这意味着您的源代码不是UTF-8编码的。您可以使用UTF-8作为源代码编码(无论如何,这都是一个坏主意,因为它使您的源代码可移植)或者您应该转换字符串文字的编码。我更喜欢第一个。

许多编辑器和IDE使用特定于平台的编码。这不是Windows上的UTF-8。但是,大多数编辑器和IDE都支持UTF-8编码。在编辑器的设置中搜索。