Запись Юникода в PDF - PullRequest
       4

Запись Юникода в PDF

0 голосов
/ 20 января 2019

У меня есть текст Unicode (последовательность кодов Unicode) и шрифт TTF (байты файла TTF).Я хотел бы написать этот текст в PDF-файл, используя этот шрифт.

Я прекрасно понимаю PDF.Я не против использовать два байта на символ.Я хотел бы прикрепить файл TTF как есть (карта charcode-to-glyf должна использоваться из файла TTF).

Какие значения шрифтов Subtype и Encoding следует использовать?Можно ли избежать записи ToUnicode?

Я пытался использовать Subtype = "/ TrueType", но для этого необходимо указать FirstChar, LastChar и Widths (которые уже находятся внутри TTF).

1 Ответ

0 голосов
/ 20 января 2019

Вы не можете использовать Unicode с Font , вообще (за исключением ограниченного случая латинского или почти латинского языков), потому что шрифты используют кодировку, а кодировка - это однобайтовый массив.Таким образом, вы не можете ссылаться более чем на 256 символов из шрифта, а код символа не может быть длиннее одного байта.

Первая проблема с использованием Юникода состоит в том, что Юникод не является простым 2-байтовое кодирование, это многобайтовый формат, с переменной длиной и иногда одним глифом, представленным несколькими кодовыми точками Юникода.

Итак, для решения этой проблемы вам нужно использовать CIDFont, а неШрифт.Вы не можете «использовать карту charcode-to-glyf», под которой я предполагаю, что вы имеете в виду подтаблицу CMAP шрифтом TTF.Вы должны составить CIDFont с CMap, чтобы отобразить несколько байтов в текстовой строке в коды символов для поиска в CMap, что дает вам CID для ссылки на точную символьную программу в шрифте.

Может быть возможно создать один CMap, который бы охватывал каждую кодовую точку Unicode, но у меня есть сомнения, это, безусловно, будет огромной задачей.Однако определенные CMaps уже существуют.Adobe публикует стандартный список на своем веб-сайте, который включает CMaps, такие как UniCNS-UCS2-H и UniCNS-UCS2-V или UniGB-UTF8-H и т. Д.

Возможно, вы можете использовать один из стандартных CMaps.

Обратите внимание, что не имеет значения, что FirstChar, LastChar и т. Д. Уже сохранены в шрифте TrueType, вам все равно необходимо указать их в объекте шрифта PDF.Это связано с тем, что потребитель PDF может вообще не отображать текст, он может (например) извлекать текст, и в этом случае ему не нужно интерпретировать шрифт, если эта информация доступна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...