Fonts
Fonts
Panduan ini menunjukkan cara memeriksa font yang dirujuk dalam sebuah dokumen, mengekstrak data font yang tertanam, dan mengontrol TrueType penyematan font saat menyimpan dengan Aspose.Words FOSS untuk .NET. Aspose.Words FOSS untuk .NET melacak setiap font yang dirujuk oleh dokumen yang dimuat melalui FontInfoCollection, dan mengekspos metadata per-font, ekstraksi font tertanam, serta kontrol penyematan saat menyimpan melalui FontInfo. Document.FontSettings dan LoadOptions.FontSettings menyediakan titik masuk FontSettings (yang sengaja minimal, dalam edisi ini).
Memeriksa Font yang Digunakan dalam Dokumen
DocumentBase.FontInfos (diturunkan oleh Document) mengembalikan sebuah FontInfoCollection yang menjelaskan setiap font yang dirujuk di mana saja dalam dokumen. Indeks ke dalamnya dengan nama (mis. fontInfos["Arial"]), uji keberadaannya dengan Contains(name), hitung mereka dengan Count, atau daftarkan seluruh koleksi melalui GetEnumerator().
Properti Font dan Klasifikasi
Setiap FontInfo menggambarkan satu font: Name dan AltName mengidentifikasinya, Family mengklasifikasikannya melalui enum FontFamily (Auto, Roman, Swiss, Modern, Script, Decorative), Pitch melaporkan FontPitch-nya (Default, Fixed, Variable), dan IsTrueType, Charset, serta Panose mengekspos data pencocokan font tingkat rendah.
Ekstraksi Font Tertanam
Jika sebuah dokumen memiliki font yang disematkan, FontInfo.GetEmbeddedFont(format, style) mengembalikan byte font yang disematkan mentah untuk EmbeddedFontFormat tertentu (EmbeddedOpenType atau OpenType) dan EmbeddedFontStyle (Regular, Bold, Italic, BoldItalic). GetEmbeddedFontAsOpenType(style) mengembalikan font yang dikonversi ke format OpenType secara langsung, terlepas dari bagaimana font tersebut awalnya disematkan.
Hak Lisensi Penyematan Font
Sebelum mengekstrak atau menyematkan kembali sebuah font, periksa FontInfo.EmbeddingLicensingRights, sebuah objek FontEmbeddingLicensingRights. EmbeddingUsagePermissions melaporkan tingkat lisensi melalui enum FontEmbeddingUsagePermissions (Installable, RestrictedLicense, PrintAndPreview, Editable), sementara NoSubsetting dan BitmapEmbeddingOnly menandai pembatasan lebih lanjut yang ditetapkan oleh vendor font.
Mengendalikan Penyematan Font saat Menyimpan
FontInfoCollection juga membawa saklar penyematan tingkat dokumen: setel EmbedTrueTypeFonts ke true untuk menyematkan setiap font TrueType yang digunakan dalam dokumen saat disimpan, EmbedSystemFonts untuk menyertakan font yang biasanya diasumsikan ada di sistem mana pun, dan SaveSubsetFonts untuk menyematkan hanya glif yang benar-benar digunakan alih-alih seluruh font.
Lingkup FontSettings dalam Edisi Ini
Document.FontSettings dan LoadOptions.FontSettings keduanya mengembalikan objek FontSettings, dan FontSettings.DefaultInstance mengekspos sebuah instance default bersama. Dalam edisi FOSS ini, permukaan FontSettings’ API terbatas pada properti instance default tersebut — resolusi sumber font berbasis folder dan sistem, yang di tempat lain dalam Aspose.Words digunakan untuk mengganti atau menyelesaikan font bagi tata letak halaman dan rendering, tidak ada, karena tata letak halaman dan rendering berada di luar lingkup edisi ini. Penanganan font di sini berarti inspeksi metadata dan penyematan, bukan substitusi font untuk rendering.
Tips dan Praktik Terbaik
- Selalu periksa
FontInfo.EmbeddingLicensingRights.EmbeddingUsagePermissionssebelum mengekstrak atau mendistribusikan kembali font yang disematkan — beberapa font hanya dilisensikanRestrictedLicenseatauPrintAndPreviewsaja. - Gunakan
GetEmbeddedFontAsOpenType()ketika Anda memerlukan format output yang konsisten terlepas dari cara dokumen sumber menyematkan font (EmbeddedOpenTypevsOpenType). - Atur
FontInfoCollection.SaveSubsetFontsmenjaditrueuntuk mengurangi ukuran file output saat menyematkan font yang hanya menggunakan beberapa glyph. FontInfoCollection.Contains(name)lebih murah daripada mengindeks dan menangani pencarian yang gagal (misalnyafontInfos[name]) ketika Anda hanya perlu menguji keberadaan sebuah font.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
GetEmbeddedFont() tidak mengembalikan data yang dapat digunakan | Font yang dirujuk sebenarnya tidak tertanam dalam dokumen | Periksa pengaturan penyematan dokumen sebelum mengasumsikan data font ada |
Pengindeksan ke FontInfoCollection berdasarkan nama tidak menemukan apa-apa | Nama font tidak cocok secara tepat, termasuk huruf besar/kecil | Enumerasi FontInfoCollection dengan GetEnumerator() untuk mengonfirmasi string Name yang tepat |
| API substitusi/penyelesaian font yang diharapkan tidak ada | Resolusi sumber font berbasis folder dan sistem tidak diimplementasikan dalam edisi FOSS ini | Gunakan FontInfo/FontInfoCollection hanya untuk metadata dan penyematan; substitusi font untuk rendering tidak termasuk dalam ruang lingkup edisi ini |
FAQ
Bagaimana cara saya mendaftar semua font yang direferensikan oleh sebuah dokumen?
Enumerasikan Document.FontInfos (sebuah FontInfoCollection) melalui GetEnumerator(), atau indeks ke dalamnya dengan nama untuk mencari yang spesifik (misalnya fontInfos["Arial"]).
Bisakah saya mengambil byte mentah dari font yang disematkan keluar dari dokumen?
Ya, jika font disematkan — panggil FontInfo.GetEmbeddedFont(format, style) untuk format penyematan asli, atau GetEmbeddedFontAsOpenType(style) untuk menormalkan hasil ke OpenType.
Bagaimana cara memastikan font disematkan saat saya menyimpan dokumen?
Setel FontInfoCollection.EmbedTrueTypeFonts ke true sebelum menyimpan; tambahkan EmbedSystemFonts jika Anda juga memerlukan font yang diasumsikan ada di sistem mana pun, dan SaveSubsetFonts untuk menyematkan hanya glif yang digunakan.
Apakah edisi ini mendukung resolusi font dari folder khusus untuk rendering?
Tidak — resolusi sumber font berbasis folder dan sistem (FontSettings konfigurasi sumber) tidak diimplementasikan di sini, karena ada untuk melayani tata letak halaman dan rendering, yang berada di luar ruang lingkup edisi FOSS ini.
Apa arti FontEmbeddingLicensingRights.NoSubsetting?
Itu adalah flag lisensi yang dilaporkan oleh hak penyematan vendor font: ketika true, font tidak boleh dipotong menjadi hanya glif yang digunakan.
API Reference Ringkasan
| Kelas / Metode | Deskripsi |
|---|---|
FontInfoCollection | Font yang direferensikan dalam sebuah dokumen; pengindeks berdasarkan nama (fontInfos[name]), Contains(), Count, GetEnumerator(), plus EmbedTrueTypeFonts/EmbedSystemFonts/SaveSubsetFonts |
FontInfo | Metadata satu font: Name, AltName, Family, Pitch, IsTrueType, Charset, Panose, EmbeddingLicensingRights |
FontInfo.GetEmbeddedFont() / GetEmbeddedFontAsOpenType() | Ekstrak byte font yang disematkan |
EmbeddedFontFormat / EmbeddedFontStyle | Enum yang mengidentifikasi format dan varian gaya font yang disematkan |
FontEmbeddingLicensingRights / FontEmbeddingUsagePermissions | Pembatasan lisensi penyematan yang dilaporkan per font |
FontSettings | Titik masuk minimal pengaturan font (Document.FontSettings, LoadOptions.FontSettings); tidak ada resolusi sumber font dalam edisi ini |