德语文本在 Libharu C++ 创建的 PDF 上不正确

German text not proper on PDF created by Libharu C++

我必须在 Libharu 创建的 pdf 上写德语文本。我将德语文本分配给一个字符串变量(即 std::string TestString = "VariableGesamtlänge";),然后将该文本转换为 pdf。我的简单代码如下:

        //-----UTF8 Encoding
        HPDF_UseUTFEncodings(pdf);
        HPDF_SetCurrentEncoder(pdf, "UTF-8"); 
        const char *fontname = HPDF_LoadTTFontFromFile(pdf, "FreeSans.ttf", HPDF_TRUE);
        HPDF_Font font = HPDF_GetFont(pdf, fontname, "UTF-8");
        HPDF_Page_SetFontAndSize(page, font, 24);

        std::string TestString = "VariableGesamtlänge";
        DrawText(page, font, TestString.c_str(), y);

问题: 我得到两个方框而不是 ä。我正在使用 VS2010

'ä' 不是 ASCII 字符。它可以存储为单个字符(在这种情况下,哪个?),也可以存储为多个字符(在这种情况下,哪个?)。

您已告知 HPDF 函数您将以 UTF-8 格式传递文本(这是一个完全明智的选择)。这意味着 'ä' 由 0xC3 0xA4 表示。

源文件几乎可以肯定是用 8 位文本编码的,使用(可能)代码页 1252。所以 'ä' 将是单个字符 0xE4。您要么需要告诉编译器将字符串存储为 UTF-8,要么可以将源文件重新编码为 UTF-8。

您最后的选择是将文本存储在 (UTF-8) 文件中,然后从那里读取。