Ändern Sie die Schriftart nur für bestimmte Unicode Zeichen beim Speichern in PDF
Einige Unicode-Zeichen können von der benutzerdefinierten Schriftart nicht angezeigt werden. Ein solches Unicode-Zeichen ist Trennstrich (U+2011) und seine Unicode-Nummer ist 8209. Dieses Zeichen kann nicht mit Times New Roman angezeigt werden, aber es kann mit anderen Schriften wie Arial Unicode MS angezeigt werden.
Wenn ein solches Zeichen in einem Wort oder Satz auftritt, das in einer bestimmten Schriftart wie Times New Roman steht, ändert Aspose.Cells die Schriftart des gesamten Wortes oder Satzes in eine Schriftart, die dieses Zeichen wie Arial Unicode MS anzeigen kann.
Dies ist jedoch ein unerwünschtes Verhalten für einige Benutzer, und sie wollen nur, dass die Schriftart des spezifischen Zeichens geändert wird, anstatt die Schriftart des gesamten Wortes oder Satzes zu ändern.
Um dieses Problem zu behandeln, bietet Aspose.Cells die PdfSaveOptions.setFontSubstitutionCharGranularity()-Eigenschaft, die auf true gesetzt werden sollte, damit nur die Schriftart des spezifischen Zeichens, das nicht angezeigt werden kann, geändert wird und die Schriftart für den Rest des Wortes oder Satzes gleich bleibt.
Beispiel
Der folgende Screenshot vergleicht die beiden Ausgabe-PDFs, die vom untenstehenden Beispielcode generiert wurden. Eines wurde ohne Einstellung der PdfSaveOptions.setFontSubstitutionCharGranularity()-Eigenschaft generiert und das andere wurde nach Einstellung der PdfSaveOptions.setFontSubstitutionCharGranularity()-Eigenschaft auf true generiert. Wie Sie im ersten PDF sehen können, wurde die Schriftart des gesamten Satzes von Times New Roman auf Arial Unicode MS geändert aufgrund des Trennstrichs. Im zweiten PDF wurde jedoch nur die Schriftart des Trennstrichs geändert.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getDataDir(ChangeFontonspecificUnicodecharacters.class); | |
// Create workbook object | |
Workbook workbook = new Workbook(); | |
// Access the first worksheet | |
Worksheet worksheet = workbook.getWorksheets().get(0); | |
// Access cells | |
Cell cell1 = worksheet.getCells().get("A1"); | |
Cell cell2 = worksheet.getCells().get("B1"); | |
// Set the styles of both cells to Times New Roman | |
Style style = cell1.getStyle(); | |
style.getFont().setName("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" + (char) (8209) + " with Non-Breaking Hyphen"); | |
// Autofit the columns | |
worksheet.autoFitColumns(); | |
// Save to Pdf without setting PdfSaveOptions.IsFontSubstitutionCharGranularity | |
workbook.save(dataDir + "output.pdf"); | |
// Save to Pdf after setting PdfSaveOptions.IsFontSubstitutionCharGranularity to true | |
PdfSaveOptions opts = new PdfSaveOptions(); | |
opts.setFontSubstitutionCharGranularity(true); | |
workbook.save(dataDir + "output2.pdf", opts); |