Я пытаюсь поддерживать как можно больше Unicode в файлах PDF, которые я пишу.Я хочу иметь возможность выводить строки utf8 и правильно отображать их в PDF.
Я вижу в документации по кодировкам libharu (https://github.com/libharu/libharu/wiki/Encodings), что есть много однобайтовых кодовых страниц, к которым я могу получить доступи специальные функции для доступа к многобайтовым кодовым страницам, если я хочу китайский, японский и корейский языки. Но я понимаю, что если бы я хотел использовать все эти страницы и функции для написания произвольных строк utf8, мне пришлось бы написатькуча кода, чтобы разбить мои строки utf8 на сегменты, каждый из которых использует определенную кодовую страницу, и затем выполнить любую замену кодовой страницы, с обратным отображением каждого из моих сегментов с utf8 на заданную кодовую страницу перед ее выводом.много работы, склонной к ошибкам, по сравнению с тем, чтобы просто сказать «напишите эту строку utf8».
Чтобы иметь возможность писать строки utf8, я использую этот код:
myPdf = HPDF_New( PdfErrorHandler, NULL );
HPDF_UseUTFEncodings( myPdf );
HPDF_SetCurrentEncoder( myPdf, "UTF-8" );
const char *f = HPDF_LoadTTFontFromFile( myPdf, "path/to/verdana.ttf", HPDF_TRUE );
HPDF_Font myFont = HPDF_GetFont( myPdf, f, "UTF-8" );
... go on to use myFont to write various text strings
Это работает, и я могу написать строки utf8 с акцентированными латинскими символами, а также кириллическими и греческими символами, и они показывают совместноепрямо в PDF.
Однако, поскольку я использовал этот HPDF_TRUE
для встраивания шрифта в мой файл, он значительно увеличивает размер моего файла.На самом деле я использую четыре шрифта (verdana.ttf, verdanab.ttf, verdanai.ttf и verdanaz.ttf), и они добавляют к моему размеру файла более 600 КБ по сравнению с тем, когда я использовал «встроенный» libharu.шрифты (которые оставляют файл крошечным, всего несколько килобайт).
(я пытался использовать HPDF_FALSE
, чтобы не вставлять шрифты, но затем мои файлы открывались со случайными латинскими символами.)
Я пытаюсь концептуально понять, почему необходимо встраивать шрифты в мой PDF, если я использую шрифт вроде verdana, который все равно будет в системе конечного пользователя.(Мне даже не важно, вердана ли это - подойдет любой стандартный шрифт без засечек.) Я, конечно, создал множество PDF-файлов другими способами (например, экспорт из Word), содержащих греческие, кириллические, китайские и другие символы.и все же они маленькие.Так является ли это требование встраивания в использование-utf8 просто причудой libharu? * 1018 *
Кроме того, даже при том объеме в 600 КБ мои файлы, созданные с помощью libharu, показывают китайские символы в виде блоков.Я прочитал на странице документации по libharu, что libharu поддерживает только одно- и двухбайтовые последовательности utf8, которые включают в себя почти все, кроме китайского, японского и корейского.Значит ли это, что я встраиваю verdana.ttf, большинство из которых составляют глифы китайцев, японцев и корейцев, и я даже не могу получить к ним доступ?
В любом случае, китайцы, японцы и корейцыне важны для моего текущего приложения, но только для двухбайтовых последовательностей utf8, которые я пытаюсь понять, есть ли способ использовать их в libharu без необходимости вставлять большие шрифты в мой файл.