Ketersediaan dan Penggantian Font
Contents
[
Hide
]
Teks dalam dokumen dapat diformat dengan berbagai font, seperti Arial, Times New Roman, Verdana, dan lainnya. Saat Aspose.Words merender dokumen, ia mencoba memilih font yang ditentukan dalam dokumen.
Namun, ada situasi ketika font yang tepat tidak dapat ditemukan dan Aspose.Words harus menggantinya dengan font yang serupa. Aspose.Words memilih font sesuai dengan proses berikut:
- Aspose.Words mencoba menemukan font di antara sumber font yang tersedia dengan nama font yang tepat.
- Aspose.Words mencoba menemukan font yang diperlukan di antara font yang disematkan di dokumen asli. Beberapa format dokumen seperti DOCX dapat berisi font yang disematkan.
- Jika Aspose.Words tidak dapat menemukan font yang diperlukan dengan nama yang sama persis, dan properti AltName ditentukan untuk font ini, maka Aspose.Words akan menemukan font yang ditentukan dengan AltName dari kelas FontInfo, yang menentukan informasi font.
- Jika Aspose.Words tidak dapat menemukan font yang ditentukan, dan AltName juga tidak ditentukan, maka aturan penggantian font diterapkan satu per satu, seperti yang dijelaskan di bawah ini (saat penggantian yang sesuai ditemukan, Proses Penggantian Font berhenti dan langkah selanjutnya tidak dijalankan):
- Aspose.Words akan mencoba menerapkan pengaturan font OS, jika tersedia, dengan menggunakan utilitas
FontConfig
. Fitur Non - Windows ini harus digunakan dengan FontConfig yang kompatibel dengan OS. Hampir semua OS berbasis Unix sudah memiliki pustakaFontConfig
yang dirancang untuk menyediakan konfigurasi font di seluruh sistem, penyesuaian, dan akses ke aplikasi. Jika tidak, pustaka ini dapat dengan mudah diinstal oleh pengguna.
Aspose.Words tahu cara menanyakan data dan menafsirkan hasil FontConfig untuk tujuannya sendiri. Secara default, utilitasFontConfig
dinonaktifkan. Anda dapat mengaktifkannya sebagai berikut:
C++fontSettings->get_SubstitutionSettings()->get_FontConfigSubstitution()->set_Enabled(true);
- Langkah selanjutnya adalah mekanisme sederhana namun sangat kuat yang disebut TableSubstitutionRule. Secara default, fitur ini aktif dan tersedia untuk OS apa pun. Aspose.Words menggunakan tabel XML yang menentukan aturan substitusi dasar untuk OS yang berbeda. Menurut aturan substitusi tabel, daftar nama font pengganti akan digunakan.
XMLOriginalFont - font yang akan diganti, SubstituteFonts - daftar varian substitusi, dipisahkan dengan koma. Font pertama yang tersedia digunakan untuk penggantian.<TableSubstitutionSettings xmlns="Aspose.Words"> <SubstitutesTable> <Item OriginalFont="Arabic Transparent" SubstituteFonts="Arial" /> … </SubstitutesTable> </TableSubstitutionSettings>
Fitur utama dari aturan ini adalah kemampuan untuk memuat tabel substitusi Anda sendiri, seperti yang ditunjukkan pada contoh berikut:
C++Anda dapat mengambil sebagai dasar tabel yang ada dari toples atau menyimpannya secara terprogram dengan cara berikut:fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->Load(u"Table.xml");
C++Terlepas dari fleksibilitas mekanisme ini, ada beberapa kasus di mana lebih baik menonaktifkannya, seperti yang ditunjukkan di bawah ini:fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->Save(u"MyTable.xml");
C++fontSettings->get_SubstitutionSettings()->get_TableSubstitution()->set_Enabled(false);
- Aturan substitusi FontInfo akan diterapkan jika aturan substitusi tabel tidak dapat menemukan font. Mekanisme ini diaktifkan secara default. Aspose.Words menemukan font yang paling sesuai dengan informasi font yang terdapat dalam dokumen tertentu. Informasi ini dapat diperoleh dari kelas FontInfo seperti yang ditunjukkan di bawah ini:
C++Pengguna tidak dapat ikut campur dalam alur kerja fitur ini kecuali mereka memutuskan untuk menonaktifkannya jika hasilnya tidak memuaskan:System::SharedPtr<FontInfoCollection> fontInfos = doc->get_FontInfos();
C++Jika FontInfo tidak tersedia untuk font yang hilang, maka proses akan berhenti.fontSettings->get_SubstitutionSettings()->get_FontInfoSubstitution()->set_Enabled(false);
- aturan substitusi DefaultFont akan diterapkan jika substitusi
FontInfo
juga gagal. Aturan ini juga diaktifkan secara default. Menurut aturan ini, Aspose.Words akan mencoba menggunakan font default yang ditentukan dalam properti DefaultFontName. Jika pengguna belum memilih font defaultnya sendiri, maka “Times New Roman” akan digunakan sebagai font default. Aturan ini dapat dinonaktifkan seperti yang ditunjukkan di bawah ini:
C++Untuk memeriksa font default saat ini, gunakan:fontSettings->get_SubstitutionSettings()->get_DefaultFontSubstitution()->set_Enabled(false);
C++Untuk menyiapkan opsi penggantian Anda sendiri, terapkan:fontSettings->get_SubstitutionSettings()->get_DefaultFontSubstitution()->get_DefaultFontName();
C++fontSettings->get_SubstitutionSettings()->get_DefaultFontSubstitution()->set_DefaultFontName(u"Arial");
- Aspose.Words akan mencoba menerapkan pengaturan font OS, jika tersedia, dengan menggunakan utilitas
- Jika Aspose.Words tidak dapat melakukan penggantian font, ia mencoba mendapatkan font pertama yang tersedia dari sumber font yang tersedia.
- Terakhir, jika Aspose.Words tidak dapat menemukan font apa pun di antara sumber font yang tersedia, dokumen akan dirender menggunakan font Fanwood gratis yang disematkan ke dalam rakitan Aspose.Words.
Jika FontInfo tersedia, FontInfo substitution rule akan selalu menyelesaikan font dan mengganti aturan font default. Jika Anda ingin menggunakan aturan font default, Anda harus menonaktifkan FontInfo substitution rule. Perhatikan bahwa FontConfig substitution rule akan menyelesaikan font dalam banyak kasus, dan dengan demikian mengesampingkan semua aturan lainnya.