德语文本在 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) 文件中,然后从那里读取。
我必须在 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) 文件中,然后从那里读取。