ระบุตำแหน่งแบบอักษร TrueType
หัวข้อนี้จะอธิบายลักษณะการทำงานเริ่มต้นของ Aspose.Words เมื่อค้นหาแบบอักษร TrueType รวมถึงความแตกต่างเฉพาะของระบบปฏิบัติการ และสาธิตวิธีการระบุแหล่งที่มาของแบบอักษรของผู้ใช้
คลาส FontSourceBase ใช้เพื่อระบุแหล่งแบบอักษรต่างๆ มีการใช้งานคลาส FontSourceBase หลายประการ:
รายละเอียดการใช้งานสำหรับบางคลาสมีคำอธิบายอยู่ด้านล่าง
กำลังโหลดแบบอักษรจากระบบ
มีคลาส SystemFontSource พิเศษที่ใช้เป็นค่าเริ่มต้นเสมอ แสดงถึงฟอนต์ TrueType ทั้งหมดที่ติดตั้งบนระบบ ดังนั้นจึงสามารถสร้างรายการแหล่งที่มาด้วย SystemFontSource และแหล่งที่มาอื่นๆ ที่จำเป็นได้:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
aw.fonts.FontSettings.default_instance.set_fonts_sources([aw.fonts.SystemFontSource(), aw.fonts.FolderFontSource("C:\\MyFonts\\", True)]) | |
doc = aw.Document(docs_base.my_dir + "Rendering.docx") | |
doc.save(docs_base.artifacts_dir + "WorkingWithFonts.set_fonts_folders.pdf") |
อินสแตนซ์เดียวของคลาส SystemFontSource ถูกกำหนดโดยค่าเริ่มต้นใน FontSettings บนระบบปฏิบัติการที่แตกต่างกัน แบบอักษรอาจอยู่ในตำแหน่งที่ต่างกัน อย่างไรก็ตาม การใช้อินสแตนซ์ FontSettings สำหรับแต่ละเอกสารไม่ใช่วิธีแก้ปัญหาที่ดีที่สุด ในกรณีส่วนใหญ่ การใช้ default_instance ก็น่าจะเพียงพอแล้ว
จำเป็นต้องใช้อินสแตนซ์ต่อเอกสารเฉพาะในกรณีที่จำเป็นต้องใช้แหล่งแบบอักษรที่แตกต่างกันสำหรับเอกสารที่แตกต่างกัน ซึ่งเป็นกรณีที่ไม่ค่อยเกิดขึ้น การใช้อินสแตนซ์ FontSettings หลายรายการจะลดประสิทธิภาพเนื่องจากไม่แชร์แคช
โดยที่ Aspose.Words ค้นหาแบบอักษร TrueType บน Windows
ในกรณีส่วนใหญ่ ผู้ใช้ Windows จะไม่ประสบปัญหาสำคัญเกี่ยวกับแบบอักษรที่หายไปหรือรูปแบบที่ไม่ถูกต้อง โดยทั่วไปแล้ว Aspose.Words จะต้องผ่านเอกสาร และเมื่อพบลิงก์ของแบบอักษร ก็จะดึงข้อมูลแบบอักษรจากโฟลเดอร์ระบบได้สำเร็จ
ใน Windows นั้น Aspose.Words จะนำแบบอักษรที่มีอยู่ทั้งหมดจากโฟลเดอร์ _%windir%\Fonts ก่อน การตั้งค่านี้จะได้ผลสำหรับคุณเป็นส่วนใหญ่ คุณจะระบุโฟลเดอร์แบบอักษรของคุณเองเฉพาะเมื่อจำเป็นเท่านั้น Aspose.Words สำหรับ .NET ยังค้นหาแบบอักษรเพิ่มเติมที่ลงทะเบียนในคีย์รีจิสทรี HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts นอกจากนี้ Windows 10 ยังเปิดใช้งานการติดตั้งแบบอักษรสำหรับผู้ใช้ปัจจุบัน แบบอักษรจะถูกวางไว้ในโฟลเดอร์ %userprofile%\AppData\Local\Microsoft\Windows\Fonts และยังระบุไว้ในรีจิสทรี HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Fonts โดยที่ Aspose.Words จะค้นหาแบบอักษรเหล่านี้
หากเอกสารมีแบบอักษรที่ฝังอยู่ Aspose.Words จะสามารถอ่านข้อมูลแบบอักษรที่เกี่ยวข้องจากเอกสารและใช้ข้อมูลดังกล่าวเพื่อสร้างเค้าโครงของเอกสารได้ เอกสารอาจมีลิงก์ไปยังแบบอักษรที่ไม่ได้อยู่ในโฟลเดอร์ระบบ ซึ่งในกรณีนี้สถานการณ์ต่อไปนี้จะเกิดขึ้น:
- ผู้ใช้สามารถตั้งค่าแหล่งแบบอักษรใหม่ผ่านคลาส FontSettings
- Aspose.Words สามารถลองแทนที่แบบอักษรที่ไม่ได้รับด้วยแบบอักษรที่คล้ายกันได้
แบบอักษรบนระบบที่ไม่ใช่ Windows
Aspose.Words จะค้นหาแบบอักษรในโฟลเดอร์แบบอักษรของระบบ รายการโฟลเดอร์เหล่านี้อาจเห็นได้ด้วยวิธี SystemFontSource.get_system_font_folders หากไม่พบแบบอักษรที่รองรับ Aspose.Words จะใช้แบบอักษรเริ่มต้นในตัว Fanwood.ttf
เนื่องจากการวัดแบบอักษรของ Windows และระบบปฏิบัติการที่ไม่ใช่ Windows นั้นแตกต่างกัน Aspose.Words จึงทำทุกอย่างที่เป็นไปได้เพื่อค้นหาแบบอักษรที่คล้ายกันและสร้างเค้าโครงที่คล้ายกับต้นฉบับ อย่างไรก็ตาม สิ่งนี้ไม่สามารถทำได้เสมอไป ในกรณีเหล่านี้ ควรใช้คลาส FontSettings เพื่อเพิ่มแบบอักษรที่กำหนดเองหรือกฎการทดแทน
โดยที่ Aspose.Words ค้นหาแบบอักษร TrueType บน Linux
การกระจาย Linux ที่แตกต่างกันอาจจัดเก็บแบบอักษรในโฟลเดอร์ที่แตกต่างกัน Aspose.Words ค้นหาแบบอักษรในหลายตำแหน่ง ตามค่าเริ่มต้น Aspose.Words จะค้นหาแบบอักษรในตำแหน่งต่อไปนี้ทั้งหมด: /usr/share/fonts
/usr/local/share/fonts
/usr/X11R6/lib/X11/fonts
ลักษณะการทำงานเริ่มต้นนี้จะใช้ได้กับการกระจาย Linux ส่วนใหญ่ แต่ไม่รับประกันว่าจะใช้งานได้ตลอดเวลา ซึ่งในกรณีนี้คุณอาจต้องระบุตำแหน่งของแบบอักษรประเภท true อย่างชัดเจน ในการดำเนินการนี้ คุณจำเป็นต้องทราบว่าแบบอักษร TrueType ติดตั้งอยู่ที่ใดในการแจกจ่าย Linux ของคุณ
โดยที่ Aspose.Words ค้นหาแบบอักษร TrueType บน Mac OS X
Aspose.Words ค้นหาแบบอักษรในโฟลเดอร์ /Library/Fonts ซึ่งเป็นตำแหน่งมาตรฐานสำหรับแบบอักษร TrueType บน Mac OS X แม้ว่าการตั้งค่านี้จะได้ผลสำหรับคุณเป็นส่วนใหญ่ แต่คุณอาจต้องระบุโฟลเดอร์แบบอักษรของคุณเองใน กรณีที่คุณต้องการ
กำลังโหลดแบบอักษรจากโฟลเดอร์
หากเอกสารที่กำลังประมวลผลมีลิงก์ไปยังแบบอักษรที่ไม่ได้อยู่ในระบบ หรือคุณไม่ต้องการเพิ่มลงในโฟลเดอร์ระบบ หรือคุณไม่มีสิทธิ์ ทางออกที่ดีที่สุดคือการเพิ่มโฟลเดอร์ด้วยแบบอักษรของคุณเองโดยใช้ วิธีการ FontSettings.set_fonts_sources ซึ่งจะช่วยให้สามารถแทนที่แหล่งที่มาของระบบด้วยแหล่งที่มาของผู้ใช้ได้ Aspose.Words จะไม่ค้นหาแบบอักษรในรีจิสทรีหรือโฟลเดอร์ Windows\Font อีกต่อไป และจะสแกนเฉพาะแบบอักษรภายในโฟลเดอร์ที่ระบุแทน เมธอด FontSettings.get_font_sources จะส่งกลับค่าที่เกี่ยวข้อง
การระบุโฟลเดอร์แบบอักษรหนึ่งหรือหลายโฟลเดอร์
วิธีการ FontSettings.set_fonts_folder และ FontSettings.set_fonts_folders เป็นทางลัดไปยังวิธี FontSettings.set_font_sources ที่มีอินสแตนซ์ FolderFontSource หนึ่งรายการหรือหลายรายการ วิธีการเหล่านี้ใช้เพื่อระบุตำแหน่งที่ Aspose.Words ควรค้นหาแบบอักษร หากไม่มีโฟลเดอร์หรือไม่สามารถเข้าถึงได้ Aspose.Words จะละเว้นโฟลเดอร์นี้ หากโฟลเดอร์ทั้งหมด รวมถึงแหล่งที่มาสำหรับการทดแทนแบบอักษรถูกละเว้น Aspose.Words จะใช้แบบอักษร Fanwood เป็นค่าเริ่มต้น
ตัวอย่างต่อไปนี้สาธิตวิธีการตั้งค่าโฟลเดอร์หรือแหล่งที่มา ซึ่ง Aspose.Words จะใช้เพื่อค้นหาแบบอักษร TrueType ในภายหลังในระหว่างการเรนเดอร์หรือฝังแบบอักษร:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document(docs_base.my_dir + "Rendering.docx") | |
fontSettings = aw.fonts.FontSettings() | |
# Note that this setting will override any default font sources that are being searched by default. Now only these folders will be searched for | |
# Fonts when rendering or embedding fonts. To add an extra font source while keeping system font sources then use both FontSettings.get_font_sources and | |
# FontSettings.set_font_sources instead | |
fontSettings.set_fonts_folder("C:\\MyFonts\\", False) | |
# Set font settings | |
doc.font_settings = fontSettings | |
doc.save(docs_base.artifacts_dir + "WorkingWithFonts.set_true_type_fonts_folder.pdf") |
คุณสามารถดาวน์โหลดไฟล์เทมเพลตของตัวอย่างนี้ได้จาก Aspose.Words GitHub
พารามิเตอร์บูลีนพิเศษจะควบคุมว่าแบบอักษรจะถูกสแกนซ้ำผ่านโฟลเดอร์ทั้งหมดหรือไม่ ดังนั้นการสแกนโฟลเดอร์ย่อยทั้งหมดของโฟลเดอร์ที่ระบุ ตัวอย่างต่อไปนี้สาธิตวิธีตั้งค่า Aspose.Words ให้ค้นหาแบบอักษร TrueType ในหลายโฟลเดอร์เมื่อแสดงผลหรือฝังแบบอักษร:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
doc = aw.Document(docs_base.my_dir + "Rendering.docx") | |
fontSettings = aw.fonts.FontSettings() | |
# Note that this setting will override any default font sources that are being searched by default. Now only these folders will be searched for | |
# fonts when rendering or embedding fonts. To add an extra font source while keeping system font sources then use both FontSettings.get_font_sources and | |
# FontSettings.set_font_sources instead. | |
fontSettings.set_fonts_folders(["C:\\MyFonts\\", "D:\\Misc\\Fonts\\"], True) | |
doc.font_settings = fontSettings | |
doc.save(docs_base.artifacts_dir + "WorkingWithFonts.set_fonts_folders_multiple_folders.pdf") |
สังเกตลำดับความสำคัญ หากมีแบบอักษรที่มีชื่อตระกูลและสไตล์เดียวกันในแหล่งที่มาของแบบอักษรต่างกัน Aspose.Words จะเลือกแบบอักษรจากแหล่งที่มาที่มีลำดับความสำคัญสูงกว่า ดูคำอธิบายของช่อง “ลำดับความสำคัญ” ด้านล่าง
หากคุณไม่ต้องการใช้แบบอักษรของระบบเลย Aspose.Words จะอนุญาตให้คุณเพิกเฉยต่อแบบอักษรเหล่านั้นและใช้แบบอักษรของคุณเองเท่านั้น:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
aw.fonts.FontSettings.default_instance.set_fonts_folder("C:\\MyFonts\\", True) |
ทรัพย์สินที่มีลำดับความสำคัญ
คุณสมบัติ ลำดับความสำคัญ ใช้เมื่อมีแบบอักษรที่มีชื่อตระกูลและสไตล์เดียวกันในแหล่งแบบอักษรที่แตกต่างกัน ในกรณีนี้ Aspose.Words จะเลือกแบบอักษรจากแหล่งที่มาที่มีค่าลำดับความสำคัญสูงกว่า ตัวอย่างเช่น มีแบบอักษรเวอร์ชันเก่าในโฟลเดอร์ระบบ และลูกค้าได้เพิ่มแบบอักษรเดียวกันเวอร์ชันใหม่ในโฟลเดอร์ที่กำหนดเอง
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
aw.fonts.FontSettings.default_instance.set_fonts_sources([aw.fonts.SystemFontSource(), aw.fonts.FolderFontSource("C:\\MyFonts\\", True,1)]) |
รับรายการแบบอักษรที่มีอยู่
หากคุณต้องการรับรายการแบบอักษรที่พร้อมใช้งาน ซึ่ง เช่น สามารถใช้ในการแสดงเอกสาร PDF คุณสามารถใช้วิธี get_available_fonts ดังที่แสดงในตัวอย่างโค้ดต่อไปนี้ คลาส PhysicalFontInfo ระบุข้อมูลเกี่ยวกับแบบอักษรทางกายภาพที่มีให้กับกลไกแบบอักษร Aspose.Words:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
fontSettings = aw.fonts.FontSettings() | |
fontSources = fontSettings.get_fonts_sources() | |
# Add a new folder source which will instruct Aspose.words to search the following folder for fonts. | |
folderFontSource = aw.fonts.FolderFontSource(docs_base.my_dir, True) | |
# Add the custom folder which contains our fonts to the list of existing font sources. | |
updatedFontSources = [] | |
for fontSource in fontSources : | |
updatedFontSources.append(fontSource) | |
updatedFontSources.append(folderFontSource) | |
for fontInfo in updatedFontSources[0].get_available_fonts() : | |
print("FontFamilyName : " + fontInfo.font_family_name) | |
print("FullFontName : " + fontInfo.full_font_name) | |
print("Version : " + fontInfo.version) | |
print("FilePath : " + fontInfo.file_path) | |