Неправильный текст на немецком языке в PDF, созданном Libharu Stack Overflow

Я должен написать немецкий текст в 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.

2

Решение

«ä» не является символом ASCII. Он может быть сохранен как один символ (в каком случае, какой?), Или он может быть сохранен как несколько символов (в каком случае, какие?).

Вы сказали функциям HPDF, что вы будете передавать текст как UTF-8 (что является вполне разумным выбором). Это означает, что «ä» представлен 0xC3 0xA4.

Исходный файл почти наверняка закодирован в 8-битном тексте с использованием (вероятно) кодовой страницы 1252. Таким образом, «ä» будет одним символом 0xE4. Вы должны либо указать компилятору хранить строки как UTF-8, либо может быть возможность перекодировать исходные файлы в UTF-8.

Последний вариант — сохранить текст в файле (UTF-8) и прочитать его оттуда.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector