การจัดการแบบอักษรและปัญหาประสิทธิภาพการทำงาน
กลไกการจัดการแบบอักษรที่มีอยู่ทั้งหมดอยู่ในชั้นเรียนFontSettings คลาสนี้รับผิดชอบในการดึงแบบอักษรภายในแหล่งที่มาแบบอักษรที่กำหนดไว้เช่นเดียวกับก.
การแยกแบบอักษรที่แก้ไขแล้ว
แบบอักษรจะถูกวิเคราะห์ในหลายขั้นตอน:
- การได้รับข้อมูลสำหรับแบบอักษร,การแก้ไขจากแบบอักษรที่มีอยู่ทั้งหมด.
- การแยกแบบอักษรที่ได้รับการแก้ไขเพื่อให้ได้สัญลักษณ์และตัวชี้วัดที่มีอยู่(แนวนอนและแนวตั้ง).
- การแยกแบบอักษรที่แก้ไขแล้วสำหรับการฝังและการตั้งค่าย่อย.
เมื่อAspose.Wordsพบแบบอักษรในเอกสารเป็นครั้งแรกจะพยายามขอรับข้อมูลแบบอักษรพื้นฐานเช่นชื่อเต็มแบบอักษรชื่อสกุลรุ่นสไตล์จากไฟล์แบบอักษรที่อยู่ในแหล่งข้อมูลแบบอักษรแต่ละตัว หลังจากดึงแบบอักษรทั้งหมดแล้วAspose.Wordsใช้รายละเอียดเหล่านี้เพื่อค้นหาข้อมูลแบบอักษรที่จำเป็นหรือการแทนที่ที่เหมาะสมสำหรับแบบอักษรที่ร้องขอ.
ปัญหาประสิทธิภาพเมื่อมีการเปลี่ยนแบบอักษร
เนื่องจากขั้นตอนที่อธิบายไว้ข้างต้นเป็นเวลานาน,มันอาจส่งผลกระทบต่อประสิทธิภาพกา อย่างไรก็ตามแต่ละอินสแตนซ์ของFontSettingsมีแคชของตัวเองซึ่งสามารถลดเวลาในการประมวลผล ตัวอย่างเช่น,คุณสามารถแบ่งปันอินสแตนซ์ของFontSettingsคลาสระหว่างเอกสารที่แตกต่างกัน,ซึ่งจะช่ ตัวอย่างต่อไปนี้แสดงให้เห็นถึงสิ่งนี้:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
System::SharedPtr<FontSettings> fontSettings = System::MakeObject<FontSettings>(); | |
System::SharedPtr<TableSubstitutionRule> substitutionRule = fontSettings->get_SubstitutionSettings()->get_TableSubstitution(); | |
// If "UnknownFont1" font family is not available then substitute it by "Comic Sans MS". | |
substitutionRule->AddSubstitutes(u"UnknownFont1", System::MakeArray<System::String>({ u"Comic Sans MS" })); | |
System::SharedPtr<LoadOptions> lo = System::MakeObject<LoadOptions>(); | |
lo->set_FontSettings(fontSettings); | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"MyDocument.docx", lo); |
ในกรณีที่FontSettingsไม่ได้กำหนดไว้อย่างชัดเจนAspose.Wordsใช้ค่าดีฟอลต์FontSettingsอินสแตนซ์ อินสแตนซ์นี้จะใช้ร่วมกันโดยอัตโนมัติระหว่างเอกสารและสามารถแยกได้ดังนี้:
C++
System::SharedPtr<FontSettings> fontSettings = System::MakeObject<FontSettings>()->get_DefaultInstance();
ใช้อินสแตนซ์ดีฟอลต์FontSettings
หากคุณแน่ใจว่าเอกสารการประมวลผลทั้งหมดต้องการการตั้งค่าแบบอักษรเดียวกันขอแนะนำให้ตั้งค่าและใช้อินสแตนซ์เริ่มต้นFontSettings สมมติว่าคุณจำเป็นต้องใช้แหล่งที่มาแบบอักษรเดียวกันสำหรับเอกสารทั้งหมดของคุณ ในกรณีนี้,คุณก็สามารถแก้ไขอินสแตนซ์เริ่มต้นดังต่อไปนี้:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
System::SharedPtr<FontSettings> fontSettings = System::MakeObject<FontSettings>()->get_DefaultInstance(); | |
fontSettings->SetFontsSources(System::MakeArray<System::SharedPtr<FontSourceBase>>( | |
{ | |
System::MakeObject<SystemFontSource>(), | |
System::MakeObject<FolderFontSource>(u"/home/user/MyFonts", true) | |
})); |