تغيير الخط فقط في الأحرف اليونيكود المحددة أثناء الحفظ إلى PDF
بعض الحروف اليونيكود لا يمكن عرضها بواسطة الخط المحدد من قبل المستخدم. إحدى هذه الرموز اليونيكودية هي بنطلون متقطع (U+2011) ورقمها اليونيكود هو 8209. لا يمكن عرض هذه الرمز بواسطة تايمز نيو رومان ، ولكن يمكن عرضها بخطوط أخرى مثل Arial Unicode MS.
عندما يحدث مثل هذا الحرف داخل بعض الكلمات أو الجمل التي تكون في خط معين مثل Times New Roman ، يقوم Aspose.Cells بتغيير الخط الخاص بالكلمة أو الجملة بأكملها إلى الخط الذي يمكن عرض هذا الحرف مثل Arial Unicode to MS.
ومع ذلك ، هذا السلوك غير مرغوب فيه بالنسبة لبعض المستخدمين ويريدون أن يتم تغيير خط الحرف المحدد فقط بدلاً من تغيير خط الكلمة أو الجملة بأكملها.
للتعامل مع هذه المشكلة ، يوفر Aspose.Cells خاصية PdfSaveOptions.IsFontSubstitutionCharGranularity يجب تعيينها كـ true بحيث يتم تغيير الخط الخاص بالحرف المحدد الذي لا يمكن عرضه إلى الخط الذي يمكن عرضه ويجب أن تظل بقية الكلمة أو الجملة في الخط الأصلي.
مثال
الصورة المرفقة تقارن بين ملفي PDF الناتجين من الشفرة النموذجية التالية.
أحدهما تم إنشاؤه دون ضبط خاصية PdfSaveOptions.IsFontSubstitutionCharGranularity والآخر تم إنشاؤه بعد ضبط الخاصية PdfSaveOptions.IsFontSubstitutionCharGranularity على قيمة صحيحة.
كما يمكن رؤيته في الملف الأول بصيغة PDF، تغيرت الخطوط لكامل الجملة من Times New Roman إلى Arial Unicode MS بسبب الواصلة غير المنقطة. في حين أن في الملف الثاني بصيغة PDF، تغيرت خطوط الواصلة غير المنقطة فقط.
ملف 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); |