# กำหนดค่าการแทนที่ฟอนต์ในงานนำเสนอโดยใช้ Java

> เปิดใช้งานการแทนฟอนต์อย่างเหมาะสมใน Aspose.Slides สำหรับ Java เมื่อแปลงงานนำเสนอ PowerPoint และ OpenDocument ไปยังรูปแบบไฟล์อื่น

Source: https://docs.aspose.com/slides/th/java/font-substitution/
Updated: 2026-06-13

## **ภาพรวม**

การแทนที่ฟอนต์ช่วยให้ Aspose.Slides สามารถใช้ฟอนต์อื่นได้เมื่อฟอนต์ของงานนำเสนอเดิมไม่พร้อมใช้งานระหว่างการเรนเดอร์หรือการแปลง คุณสามารถตรวจสอบฟอนต์ที่ถูกแทนที่ได้โดยใช้เมธอด `getSubstitutions` จากอินเทอร์เฟซ `IFontsManager`  

Aspose.Slides ยังอนุญาตให้คุณกำหนดกฎการแทนที่ฟอนต์ได้ ตัวอย่างเช่น คุณสามารถระบุว่าฟอนต์ที่ไม่สามารถเข้าถึงได้ควรเปลี่ยนเป็นฟอนต์อื่นที่มีอยู่และจากนั้นใช้กฎเหล่านั้นผ่านตัวจัดการฟอนต์ของงานนำเสนอ  

## **ตั้งค่ากฎการแทนที่ฟอนต์**

Aspose.Slides อนุญาตให้คุณตั้งค่ากฎสำหรับฟอนต์ที่กำหนดว่าจะทำอย่างไรในสถานการณ์บางอย่าง (เช่น เมื่อฟอนต์ไม่สามารถเข้าถึงได้) ดังนี้:

1. โหลดงานนำเสนอที่เกี่ยวข้อง
2. โหลดฟอนต์ที่ต้องการจะแทนที่
3. โหลดฟอนต์ใหม่
4. เพิ่มกฎสำหรับการแทนที่
5. เพิ่มกฎลงในคอลเลกชันกฎการแทนที่ฟอนต์ของงานนำเสนอ
6. สร้างรูปภาพสไลด์เพื่อดูผลลัพธ์

โค้ด Java นี้แสดงกระบวนการแทนที่ฟอนต์:

```java
// โหลดงานนำเสนอ
Presentation pres = new Presentation("Fonts.pptx");
try {
    // โหลดฟอนต์ต้นฉบับที่ต้องการแทนที่
    IFontData sourceFont = new FontData("SomeRareFont");
    
    // โหลดฟอนต์ใหม่
    IFontData destFont = new FontData("Arial");
    
    // เพิ่มกฎฟอนต์สำหรับการแทนที่ฟอนต์
    IFontSubstRule fontSubstRule = new FontSubstRule(sourceFont, destFont, FontSubstCondition.WhenInaccessible);
    
    // เพิ่มกฎเข้าสู่คอลเลกชันกฎการแทนฟอนต์
    IFontSubstRuleCollection fontSubstRuleCollection = new FontSubstRuleCollection();
    fontSubstRuleCollection.add(fontSubstRule);
    
    // เพิ่มคอลเลกชันกฎฟอนต์ไปยังรายการกฎ
    pres.getFontsManager().setFontSubstRuleList(fontSubstRuleCollection);
    
    // ฟอนต์ Arial จะถูกใช้แทน SomeRareFont เมื่อฟอนต์หลังไม่สามารถเข้าถึงได้
    IImage slideImage = pres.getSlides().get_Item(0).getImage(1f, 1f);
    
    // บันทึกรูปภาพลงดิสก์ในรูปแบบ JPEG
    try {
          slideImage.save("Thumbnail_out.jpg", ImageFormat.Jpeg);
    } finally {
         if (slideImage != null) slideImage.dispose();
    }
} finally {
    if (pres != null) pres.dispose();
}
```

{{%  alert title="NOTE"  color="warning"   %}} 
คุณอาจต้องการดู [**การแทนที่ฟอนต์**](/slides/th/java/font-replacement/). 
{{% /alert %}}

## **ข้อจำกัดสำหรับฟอนต์สมการคณิตศาสตร์**

กฎการแทนที่ฟอนต์ทำงานร่วมกับกระบวนการเลือกฟอนต์มาตรฐานที่ใช้ระหว่างการเรนเดอร์และการแปลง พวกมันเหมาะสำหรับสถานการณ์ข้อความทั่วไปที่ Aspose.Slides สามารถแทนที่ฟอนต์ที่ไม่สามารถเข้าถึงได้ด้วยฟอนต์อื่นที่พร้อมใช้งานตามกฎที่กำหนด  

อย่างไรก็ตาม สมการคณิตศาสตร์ของ Office มีข้อจำกัดสำคัญ หากสมการถูกสร้างด้วย **Cambria Math** Aspose.Slides อาจยังต้องการฟอนต์ **Cambria Math** ดั้งเดิมเพื่อคำนวณและเรนเดอร์เลเอาต์ของสมการอย่างถูกต้อง เนื่องจากนั้น การแทนที่ **Cambria Math** ด้วยฟอนต์คณิตศาสตร์อื่น เช่น **STIX Two Math** ไม่ได้รับการสนับสนุนสำหรับการเรนเดอร์สมการและอาจยังทำให้เกิดข้อยกเว้นที่ระบุว่า **Cambria Math** จำเป็นต้องใช้  

เพื่อแปลงงานนำเสนอเหล่านี้สำเร็จ โปรดตรวจสอบให้แน่ใจว่า **Cambria Math** มีให้กับ Aspose.Slides ในขณะรันไทม์ คุณสามารถติดตั้งฟอนต์นี้ในระบบปฏิบัติการหรือให้เป็น [ฟอนต์ภายนอก](/slides/th/java/custom-font/) เพื่อให้มันเข้าร่วมในกระบวนการเลือกฟอนต์ปกติระหว่างการเรนเดอร์และการแปลง  

ข้อจำกัดนี้เฉพาะการเรนเดอร์สมการเท่านั้น กฎการแทนที่ฟอนต์มาตรฐานที่อธิบายไว้ข้างต้นยังคงใช้กับข้อความทั่วไปของงานนำเสนอเมื่อฟอนต์เดิมไม่สามารถเข้าถึงได้  

## **คำถามที่พบบ่อย**

**อะไรคือความแตกต่างระหว่างการแทนที่ฟอนต์และการแทนฟอนต์?**  

[Replacement](/slides/th/java/font-replacement/) คือการบังคับแทนที่ฟอนต์หนึ่งด้วยฟอนต์อื่นทั่วทั้งงานนำเสนอ ส่วนการแทนฟอนต์เป็นกฎที่ทำงานเมื่อเงื่อนไขเฉพาะเกิดขึ้น เช่น เมื่อฟอนต์เดิมไม่พร้อมใช้งาน แล้วฟอนต์สำรองที่กำหนดจะถูกใช้  

**กฎการแทนฟอนต์ถูกนำไปใช้เมื่อใด?**  

กฎเหล่านี้ทำงานร่วมกับกระบวนการ [การเลือกฟอนต์](/slides/th/java/font-selection-sequence/) มาตรฐานที่ประเมินระหว่างการโหลด, การเรนเดอร์ และการแปลง; หากฟอนต์ที่เลือกไม่พร้อมใช้งาน จะมีการแทนที่หรือแทนฟอนต์  

**พฤติกรรมเริ่มต้นคืออะไรหากไม่มีการกำหนดการแทนที่หรือการแทนฟอนต์และฟอนต์นั้นหายไปจากระบบ?**  

ไลบรารีจะพยายามเลือกฟอนต์ระบบที่ใกล้เคียงที่สุดที่มีอยู่ คล้ายกับพฤติกรรมของ PowerPoint  

**ฉันสามารถแนบฟอนต์ภายนอกที่กำหนดเองในขณะรันไทม์เพื่อหลีกเลี่ยงการแทนฟอนต์ได้หรือไม่?**  

ได้ คุณสามารถ [เพิ่มฟอนต์ภายนอก](/slides/th/java/custom-font/) ในขณะรันไทม์เพื่อให้ไลบรารีพิจารณาใช้ในการเลือกและการเรนเดอร์ รวมถึงการแปลงต่อไป  

**Aspose แจกจ่ายฟอนต์ใดกับไลบรารีหรือไม่?**  

ไม่มี Aspose ไม่ได้แจกจ่ายฟอนต์ที่เป็นแบบเสียค่าใช้จ่ายหรือฟรี; คุณต้องเพิ่มและใช้ฟอนต์ด้วยดุลยพินิจและความรับผิดชอบของคุณเอง  

**มีความแตกต่างในการทำงานของการแทนฟอนต์บน Windows, Linux, และ macOS หรือไม่?**  

มี การค้นหาฟอนต์เริ่มจากไดเรกทอรีฟอนต์ของระบบปฏิบัติการ ชุดฟอนต์ที่พร้อมใช้งานโดยค่าเริ่มต้นและเส้นทางการค้นหาจะแตกต่างกันในแต่ละแพลตฟอร์ม ซึ่งส่งผลต่อความพร้อมใช้งานและความจำเป็นในการแทนฟอนต์  

**ฉันควรเตรียมสภาพแวดล้อมอย่างไรเพื่อลดการแทนฟอนต์ที่ไม่คาดคิดระหว่างการแปลงแบบแบตช์?**  

ซิงค์ชุดฟอนต์ระหว่างเครื่องหรือคอนเทนเนอร์, [เพิ่มฟอนต์ภายนอก](/slides/th/java/custom-font/) ที่จำเป็นสำหรับเอกสารผลลัพธ์, และ [ฝังฟอนต์](/slides/th/java/embedded-font/) ในงานนำเสนอเมื่อเป็นไปได้เพื่อให้ฟอนต์ที่เลือกพร้อมใช้งานระหว่างการเรนเดอร์
