C语言 俄语中的Raylib绘图文本

w6lpcovy  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(115)

我尝试使用DrawTextEx函数显示俄语文本。我在最后得到的根本不是我想要的。Display unicode。我使用wchar_t,但编译器给出以下警告:raylib_unicode.c:27:warning:assignment from incompatible pointer type.下面是代码:

#include <stdio.h>
#include <wchar.h>
#include <locale.h>

#include "raylib.h"

#define WINDOW_WIDTH    800
#define WINDOW_HEIGHT   600
#define TARGET_FPS      60

int main(int argc, char const *argv[])
{
    // setlocale(LC_ALL, "Russian");

    InitWindow(WINDOW_WIDTH, WINDOW_HEIGHT, "unicode");

    wchar_t msg[] = L"Текст, Text.";
    Font font = LoadFontEx("resources/pt-mono_regular.ttf", 48, NULL, 0);

    SetTargetFPS(TARGET_FPS);

    while (!WindowShouldClose()) {
        BeginDrawing();

            ClearBackground(WHITE);

            DrawTextEx(font, msg, (Vector2) {(float) WINDOW_WIDTH / 2,
                        (float) WINDOW_HEIGHT / 2}, 48, 2, BLACK);

        EndDrawing();
    }

    UnloadFont(font);

    CloseWindow();

    return 0;
}

字符串
你能指出我的错误吗?控制台上一切正常。
我使用了wchar_t。我希望输出正确的文本。

ibrsph3r

ibrsph3r1#

我将wchar_t更改为char,并在程序的开头添加了以下代码:

int codepoints[512] = { 0 };
for (int i = 0; i < 95; i++) codepoints[i] = 32 + I;
for (int i = 0; i < 255; i++) codepoints[96 + i] = 0x400 + i;

字符串
还将LoadFontEx中的NULL更改为codepoints。工作完美。

相关问题