Когда iText вставляет полный шрифт, подмножество или нет шрифта?
В этом ответе, предполагается, что вы используете BaseFont
класс и Font
класс вроде этого:
BaseFont bf = BaseFont.createFont(pathToFont, encoding, embedded);
Font font = new Font(bf, 12);
В этом фрагменте:
pathToFont
путь к файлу шрифта (.ttf, .ttc, otf, .afm),
encoding
- это кодировка, такая как «winansi», BaseFont.IDENTITY_H, ...
embedded
является логическим: true
или false
.
Будет ли iText вставлять шрифт или нет?
Вот определяется параметром embedded
:
- Если
false
, шрифт не встроен.
- Если
true
, шрифт встроен, за исключением в случае Standard Type 1 шрифты или Type 1 шрифтов, для которых файл .pfb отсутствует или CJK шрифтов.
Что касается исключения:
- В Стандартного типа 1 шрифты 4 вкусов Helvetica (обычный, жирный, курсив, полужирный курсив), 4 вкуса Times Roman (...) , 4 аромата Courier (...), Symbol и Zapfdingbats. iText поставляется с 14 файлами Adobe Font Metrics (AFM). Эти файлы содержат метрики, необходимые для вычисления ширины глифов и слов. iText не имеет необходимых файлов шрифтов шрифтов принтера (PFB), которые необходимы для встраивания шрифта.
- Шрифты Type 1 хранятся в двух файлах: файле AFM и файле PFB. Если вы предоставите файл AFM, iText будет искать файл PFB в том же каталоге. Если iText не находит файл PFB, шрифт не может быть встроен.
- CJK - это серия китайских, японских и корейских шрифтов, которые доступны в загружаемых пакетах шрифтов. Это особый тип азиатских шрифтов; Могут быть встроены азиатские шрифты в
.ttf
, .otf
или .ttc
.
Будет ли iText подмножать шрифт или нет?
IText всегда будет пытаться вставлять подмножество шрифта, а не весь шрифт, кроме в случае, если вы предоставляете 1 шрифт Type (AFM и PFB файл). В случае, если предоставляется шрифт Type 1, встроен шрифт .
Может ли iText вставить полный шрифт?
Да, вы можете заставить IText встроить полный шрифт, добавив следующую строку:
bf.setSubset(false);
Однако это значение будет игнорироваться в случае, если вы используете кодировку Identity-H
, потому что это, как это описано в ISO- 32000-1. iText будет вставлять только полные шрифты, которые хранятся в PDF как простой шрифт (256 символов); iText никогда не будет вставлять шрифты, которые хранятся в виде составного шрифта (до 65535 символов).
Добро пожаловать в StackOverflow! Я не понимаю ни слова. Это хороший технический вопрос. Он заслуживает всеобъемлющего ответа, потому что это не тривиально: есть правила, а затем есть исключения (см. Мой ответ). –