Изменение шрифта только для определенных символов Unicode при сохранении в PDF
Некоторые символы Unicode не могут быть отображены выбранным пользователем шрифтом. Один из таких символов Unicode - Неразрывной дефис (U+2011), его код Unicode - 8209. Этот символ нельзя отобразить шрифтом Times New Roman, но его можно отобразить другими шрифтами, например, Arial Unicode MS.
Если такой символ встречается внутри какого-либо слова или предложения, которое использует определенный шрифт, например, Times New Roman, то Aspose.Cells изменяет шрифт всего слова или предложения на шрифт, который может отобразить этот символ, например, Arial Unicode MS.
Однако это нежелательное поведение для некоторых пользователей, и они хотят, чтобы поменялся только шрифт этого конкретного символа, а не всего слова или предложения.
Для решения этой проблемы Aspose.Cells предоставляет свойство PdfSaveOptions.IsFontSubstitutionCharGranularity, которое должно быть установлено в true, чтобы только шрифт конкретного символа, который не может отобразиться, был изменен на отображаемый шрифт, а остальное слово или предложение должно оставаться в оригинальном шрифте.
Пример
На следующем скриншоте сравниваются два выходных PDF-файла, сгенерированных примерным кодом ниже.
Один сгенерирован без установки свойства PdfSaveOptions.IsFontSubstitutionCharGranularity, а другой - с установкой свойства PdfSaveOptions.IsFontSubstitutionCharGranularity в true.
Как видно на первом PDF, шрифт всего предложения изменился с Times New Roman на Arial Unicode MS из-за Non-Breaking Hyphen. В то время как на втором PDF, изменился только шрифт Non-Breaking Hyphen.
Первый файл PDF |
---|
Второй файл PDF |
---|