# กำหนดค่าการแทนที่แบบอักษรในงานนำเสนอโดยใช้ С++

> เปิดใช้งานการแทนที่แบบอักษรที่เหมาะสมที่สุดใน Aspose.Slides สำหรับ С++ เมื่อแปลงงานนำเสนอ PowerPoint และ OpenDocument ไปเป็นรูปแบบไฟล์อื่น

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

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

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

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

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

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

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

โค้ด C++ นี้แสดงกระบวนการแทนที่แบบอักษร:

```c++
// เส้นทางไปยังไดเรกทอรีเอกสาร.
const String outPath = u"../out/RuleBasedFontsReplacement_out.pptx";
const String templatePath = u"../templates/DefaultFonts.pptx";


// Loads a presentation
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);

// กำหนดแบบอักษรที่จะแทนที่และแบบอักษรใหม่
SharedPtr<IFontData> sourceFont = MakeObject<FontData>(u"SomeRareFont");
SharedPtr<IFontData> destFont = MakeObject<FontData>(u"Arial");
	
// เพิ่มกฎแบบอักษรสำหรับการแทนที่แบบอักษร
SharedPtr<FontSubstRule> fontSubstRule = MakeObject<FontSubstRule>(sourceFont, destFont, FontSubstCondition::WhenInaccessible);

// เพิ่มกฎลงในคอลเลกชันกฎการแทนที่แบบอักษร
SharedPtr<FontSubstRuleCollection> fontSubstRuleCollection = MakeObject<FontSubstRuleCollection>();
fontSubstRuleCollection->Add(fontSubstRule);

// เพิ่มคอลเลกชันกฎแบบอักษรไปยังรายการกฎ
pres->get_FontsManager()->set_FontSubstRuleList ( fontSubstRuleCollection);


// Saves PPTX to disk
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);
```

{{%  alert title="NOTE"  color="warning"   %}} 
คุณอาจต้องการดู [**Font Replacement**](/slides/th/cpp/font-replacement/). 
{{% /alert %}}

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

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

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

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

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

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

**อะไรคือความแตกต่างระหว่างการแทนที่แบบอักษรและการแทนที่แบบอักษร (substitution)?**  

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

**เมื่อใดกฎการแทนที่จะถูกนำไปใช้อย่างแม่นยำ?**  

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

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

ไลบรารีจะพยายามเลือกแบบอักษรระบบที่ใกล้เคียงที่สุด ซึ่งคล้ายกับพฤติกรรมของ PowerPoint  

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

ได้ คุณสามารถ [add external fonts](/slides/th/cpp/custom-font/) ในเวลารันไทม์เพื่อให้ไลบรารีพิจารณาแบบอักษรเหล่านั้นสำหรับการเลือกและการเรนเดอร์ รวมถึงการแปลงต่อไป  

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

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

**มีความแตกต่างในพฤติกรรมการแทนที่ระหว่าง Windows, Linux และ macOS หรือไม่?**  

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

**ฉันควรเตรียมสภาพแวดล้อมอย่างไรเพื่อให้การแทนที่ที่ไม่คาดคิดน้อยที่สุดในการแปลงเป็นกลุ่ม?**  

ประสานชุดแบบอักษรระหว่างเครื่องหรือคอนเทนเนอร์, [add the external fonts](/slides/th/cpp/custom-font/) ที่จำเป็นสำหรับเอกสารผลลัพธ์, และ [embed fonts](/slides/th/cpp/embedded-font/) ในงานนำเสนอเมื่อเป็นไปได้เพื่อให้แบบอักษรที่เลือกพร้อมใช้ระหว่างการเรนเดอร์
