Byt typsnitt på specifika Unicode tecken vid sparande till PDF
Vissa unicode-tecken är inte visbara med det användarspecificerade teckensnittet. Ett sådant unicode-tecken är icke-brytande bindestreck (U+2011) och dess unicode-nummer är 8209. Detta tecken kan inte visas med Times New Roman, men det kan visas med andra teckensnitt som Arial Unicode MS.
När ett sådant tecken förekommer inuti ett ord eller en mening som är i något specifikt teckensnitt som Times New Roman, ändrar Aspose.Cells teckensnittet för hela ordet eller meningen till det teckensnitt som kan visa detta tecken som Arial Unicode till MS.
Emellertid är detta oönskat beteende för vissa användare och de vill att endast detta specifika teckens teckensnitt ska ändras istället för att ändra teckensnittet för hela ordet eller meningen.
För att hantera detta problem tillhandahåller Aspose.Cells egenskapen PdfSaveOptions.IsFontSubstitutionCharGranularity som bör ställas in till true så att endast teckensnittet för specifika tecken som inte kan visas ändras till ett visbart teckensnitt och resten av ordet eller meningen ska förbli i originalteckensnitt.
Exempel
Följande skärmbild jämför de två utdata-PDF:erna som genererats av koden nedan.
En är genererad utan att ställa in PdfSaveOptions.IsFontSubstitutionCharGranularity-egenskapen och den andra genererades efter att ha ställt in PdfSaveOptions.IsFontSubstitutionCharGranularity-egenskapen till true.
Som du kan se i den första PDF:en har teckensnittet för hela meningen ändrats från Times New Roman till Arial Unicode MS på grund av icke-brytande bindestreck. Medan i den andra PDF:en har endast teckensnittet för icke-brytande bindestreck ändrats.
Första PDF-filen |
---|
![]() |
Andra PDF-filen |
---|
![]() |
Exempelkod
// 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); |