PDF に保存するときに、特定の Unicode 文字だけのフォントを変更します
一部の Unicode 文字は、ユーザー指定のフォントでは表示できません。そのような Unicode 文字の 1 つが非改行ハイフン(U+2011) であり、その Unicode 番号は 8209 です。この文字は、タイムズ ニュー ローマン 、しかし、それはのような他のフォントで表示することができますArial ユニコード MS.
そのような文字が、Times New Roman のような特定のフォントの単語または文の中にある場合、Aspose.Cells は単語または文全体のフォントを、Arial Unicode のようなこの文字を MS に表示できるフォントに変更します。
ただし、これは一部のユーザーにとって望ましくない動作であり、単語または文全体のフォントを変更するのではなく、特定の文字のフォントのみを変更する必要があることを望んでいます。
この問題に対処するために、Aspose.Cells が提供します。PdfSaveOptions.setFontSubstitutionCharGranularity()設定するプロパティ真実これにより、表示できない特定の文字のフォントのみが変更され、残りの単語または文のフォントは同じままになります。
例
次のスクリーンショットは、以下のサンプル コードによって生成された 2 つの出力 PDF を比較しています。 1つは設定せずに生成されましたPdfSaveOptions.setFontSubstitutionCharGranularity()プロパティと、もう一方は を設定した後に生成されたものですPdfSaveOptions.setFontSubstitutionCharGranularity()プロパティへ真実.最初の PDF でわかるように、Non-Breaking Hyphen により、文全体のフォントが Times New Roman から Arial Unicode MS に変更されています。 2 番目の PDF では、Non-Breaking Hyphen のフォントのみが変更されています。
// 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); | |