Измените шрифт только на определенные символы Unicode при сохранении на PDF.
Некоторые символы Unicode не отображаются шрифтом, указанным пользователем. Одним из таких символов Unicode являетсяНеразрывный дефис (U+2011), а его номер Unicode – 8209. Этот символ нельзя отобразить сТаймс Нью Роман , но он может отображаться с другими шрифтами, такими какАриал Юникод МС.
Когда такой символ встречается внутри какого-либо слова или предложения, написанного определенным шрифтом, например 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 из-за неразрывного дефиса. В то время как во втором Pdf изменился только шрифт Non-Breaking Hyphen.
Первый PDF-файл |
---|
![]() |
Второй PDF-файл |
---|
![]() |
Образец кода
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Create workbook object | |
Workbook workbook = new Workbook(); | |
// Access the first worksheet | |
Worksheet worksheet = workbook.Worksheets[0]; | |
// Access cells | |
Cell cell1 = worksheet.Cells["A1"]; | |
Cell cell2 = worksheet.Cells["B1"]; | |
// Set the styles of both cells to Times New Roman | |
Style style = cell1.GetStyle(); | |
style.Font.Name = "Times New Roman"; | |
cell1.SetStyle(style); | |
cell2.SetStyle(style); | |
// Put the values inside the cell | |
cell1.PutValue("Hello without Non-Breaking Hyphen"); | |
cell2.PutValue("Hello" + Convert.ToChar(8209) + " with Non-Breaking Hyphen"); | |
// Autofit the columns | |
worksheet.AutoFitColumns(); | |
// Save to Pdf without setting PdfSaveOptions.IsFontSubstitutionCharGranularity | |
workbook.Save(dataDir + "SampleOutput_out.pdf"); | |
// Save to Pdf after setting PdfSaveOptions.IsFontSubstitutionCharGranularity to true | |
PdfSaveOptions opts = new PdfSaveOptions(); | |
opts.IsFontSubstitutionCharGranularity = true; | |
workbook.Save(dataDir + "SampleOutput2_out.pdf", opts); |