دمج الخطوط في العروض التقديمية على Android

الخطوط المدمجة في PowerPoint مفيدة عندما تريد أن يظهر العرض التقديمي بشكل صحيح عند فتحه على أي نظام أو جهاز. إذا استخدمت خطًا من طرف ثالث أو غير قياسي لأنك أبدعت في عملك، فستكون لديك أسباب إضافية لدمج الخط. وإلا (بدون خطوط مدمجة)، قد يتغير النص أو الأرقام على الشرائح، أو التخطيط، أو الأنماط، إلخ، أو قد تتحول إلى مستطيلات مربكة.

تحتوي فئة FontsManager وفئة FontData وفئة Compress وواجهاتهم على معظم الخصائص والطرق التي تحتاجها للعمل مع الخطوط المدمجة في عروض PowerPoint.

الحصول على الخطوط المدمجة وإزالتها

توفر Aspose.Slides طريقة getEmbeddedFonts (المعروضة بواسطة فئة FontsManager) لتسمح لك بالحصول (أو معرفة) الخطوط المدمجة في عرض تقديمي. لإزالة الخطوط، تُستخدم طريقة removeEmbeddedFont (المعروضة بواسطة نفس الفئة).

هذا الكود بلغة Java يوضح لك كيفية الحصول على الخطوط المدمجة وإزالتها من عرض تقديمي:

// ينشئ كائن Presentation يمثل ملف عرض تقديمي
Presentation pres = new Presentation("EmbeddedFonts.pptx");
try {
    // يعرض شريحة تحتوي على إطار نصي يستخدم الخط المدمج "FunSized"
    IImage slideImage = pres.getSlides().get_Item(0).getImage(new Dimension(960, 720));

    //احفظ الصورة إلى القرص بتنسيق JPEG
    try {
        slideImage.save("picture1_out.jpg", ImageFormat.Jpeg);
    } finally {
        if (slideImage != null) slideImage.dispose();
    }

    IFontsManager fontsManager = pres.getFontsManager();

    // يحصل على جميع الخطوط المدمجة
    IFontData[] embeddedFonts = fontsManager.getEmbeddedFonts();

    // يبحث عن خط "Calibri"
    IFontData calibriEmbeddedFont = null;
    for (int i = 0; i < embeddedFonts.length; i++) {
        System.out.println(""+ embeddedFonts[i].getFontName());
        if ("Calibri".equals(embeddedFonts[i].getFontName())) {
            calibriEmbeddedFont = embeddedFonts[i];
            break;
        }
    }

    // يزيل خط "Calibri"
    fontsManager.removeEmbeddedFont(calibriEmbeddedFont);

    // يعرض العرض التقديمي؛ خط "Calibri" يتم استبداله بخط موجود
     slideImage = pres.getSlides().get_Item(0).getImage(new Dimension(960, 720));

     //احفظ الصورة إلى القرص بتنسيق JPEG
     try {
         slideImage.save("picture2_out.jpg", ImageFormat.Jpeg);
     } finally {
         if (slideImage != null) slideImage.dispose();
     }

    // يحفظ العرض التقديمي دون الخط المدمج "Calibri" إلى القرص
    pres.save("WithoutManageEmbeddedFonts_out.ppt", SaveFormat.Ppt);
} finally {
    if (pres != null) pres.dispose();
}

إضافة الخطوط المدمجة

باستخدام تعداد EmbedFontCharacters وطريقتين مفرطتين من طريقة addEmbeddedFont يمكنك اختيار القاعدة المفضلة (للدمج) لدمج الخطوط في عرض تقديمي. هذا الكود بلغة Java يوضح لك كيفية دمج وإضافة الخطوط إلى عرض تقديمي:

// يحمّل العرض التقديمي
Presentation pres = new Presentation("Fonts.pptx");
try {
    IFontData[] allFonts = pres.getFontsManager().getFonts();
    IFontData[] embeddedFonts = pres.getFontsManager().getEmbeddedFonts();

    for (IFontData font : allFonts)
    {
        boolean embeddedFontsContainsFont = false;
        for (int i = 0; i < embeddedFonts.length; i++)
        {
            if (embeddedFonts[i].equals(font))
            {
                embeddedFontsContainsFont = true;
                break;
            }
        }
        if (!embeddedFontsContainsFont)
        {
            pres.getFontsManager().addEmbeddedFont(font, EmbedFontCharacters.All);

            embeddedFonts = pres.getFontsManager().getEmbeddedFonts();
        }
    }

    // يحفظ العرض التقديمي إلى القرص
    pres.save("AddEmbeddedFont_out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

ضغط الخطوط المدمجة

لتتمكن من ضغط الخطوط المدمجة في عرض تقديمي وتقليل حجم الملف، توفر Aspose.Slides طريقة compressEmbeddedFonts (المعروضة بواسطة فئة Compress).

هذا الكود بلغة Java يوضح لك كيفية ضغط الخطوط المدمجة في PowerPoint:

Presentation pres = new Presentation("pres.pptx");
try {
    Compress.compressEmbeddedFonts(pres);
    pres.save("pres-out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

FAQ

كيف يمكنني معرفة أن خطًا محددًا في العرض التقديمي سيستبدل أثناء العرض رغم دمجه؟

تحقق من معلومات الاستبدال في مدير الخطوط وقواعد الفallback/الاستبدال: إذا كان الخط غير متوفر أو مقيد، سيتم استخدام بديل.

هل من المفيد دمج خطوط “النظام” مثل Arial/Calibri؟

عادةً لا—فهذه الخطوط متوفرة تقريبًا دائمًا. ولكن لتحقيق قابلية نقل كاملة في بيئات “رفيعة” (Docker، خادم Linux بدون خطوط مثبتة مسبقًا)، يمكن أن يزيل دمج خطوط النظام خطر الاستبدالات غير المتوقعة.