Вы не можете использовать 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 может вообще не отображать текст, он может (например) извлекать текст, и в этом случае ему не нужно интерпретировать шрифт, если эта информация доступна.