Konfigurasi Substitusi Font dalam Presentasi Menggunakan PHP
Ikhtisar
Penggantian font memungkinkan Aspose.Slides menggunakan font yang tersedia sebagai pengganti font yang tidak dapat diakses saat presentasi dirender atau dikonversi. Penggantian memengaruhi output yang dirender; tidak mengubah font yang ditetapkan pada konten presentasi.
Anda dapat menentukan font yang akan digunakan ketika font tertentu tidak tersedia, dan Anda dapat memeriksa penggantian yang akan dilakukan Aspose.Slides selama rendering. Hal ini membantu menjaga konsistensi output di berbagai lingkungan dengan font yang terinstal berbeda.
Jika font tersedia tetapi tidak memiliki tipe huruf tebal khusus, lihat Menangani Font Tanpa Huruf Tebal Khusus. Bagian itu menjelaskan cara merasterkan teks yang terpengaruh selama ekspor PDF dan konsekuensinya untuk pilihan teks, pencarian, dan penskalaan.
Dapatkan Substitusi Font
Gunakan metode FontsManager::getSubstitutions untuk menentukan font mana yang akan digantikan saat presentasi dirender. Metode ini mengembalikan objek FontSubstitutionInfo yang mengidentifikasi nama font asli dan yang digantikan.
Contoh PHP berikut menampilkan semua substitusi font untuk sebuah presentasi:
use aspose\slides\Presentation;
$presentation = new Presentation("Presentation.pptx");
try {
$enumerator = $presentation->getFontsManager()->getSubstitutions()->iterator();
try {
while (java_values($enumerator->hasNext())) {
$substitution = $enumerator->next();
$originalFontName = java_values($substitution->getOriginalFontName());
$substitutedFontName = java_values($substitution->getSubstitutedFontName());
echo $originalFontName . " -> " . $substitutedFontName . PHP_EOL;
}
} finally {
$enumerator->dispose();
}
} finally {
$presentation->dispose();
}
Dapatkan Substitusi Font untuk Slide yang Dipilih
Gunakan overload FontsManager::getSubstitutions dengan argumen int[] slides untuk memeriksa hanya substitusi yang diperlukan untuk merender slide tertentu. Hal ini berguna ketika Anda merender atau mengekspor bagian dari presentasi, memeriksa presentasi besar secara bertahap, menemukan slide yang bergantung pada font yang tidak tersedia, menyiapkan paket font minimal untuk server atau kontainer, atau mendiagnosis perbedaan rendering tanpa memproses slide yang tidak relevan.
Array slides berisi indeks slide berbasis satu: 1 menunjukkan slide pertama. Sebaliknya, accessor koleksi Presentation::getSlides menggunakan indeks berbasis nol, sehingga slide yang sama diakses sebagai $presentation->getSlides()->get_Item(0). Ingat perbedaan ini saat membuat array untuk menghindari kesalahan satu indeks.
Panggil overload melalui metode Presentation::getFontsManager. Ini mengembalikan hanya substitusi yang ditentukan selama merender slide yang dipilih. Setiap hasil adalah objek FontSubstitutionInfo yang berisi nama font asli dan yang digantikan. Hasil tersebut mencerminkan lingkungan font saat ini, aturan fallback yang dikonfigurasi, aturan substitusi yang disimpan dalam sebuah FontSubstRuleCollection, dan external loaded fonts.
Substitusi yang sama dapat diperlukan oleh lebih dari satu slide yang dipilih. Hilangkan duplikasi hasil ketika Anda membuat inventaris font atau laporan pra‑penerbangan. Contoh berikut melaporkan setiap substitusi yang dikembalikan dan kemudian membuat daftar terurut dari pemetaan font unik:
use aspose\slides\Presentation;
$presentation = new Presentation("Presentation.pptx");
try {
$selectedSlides = [1, 3, 5];
$substitutions = [];
$enumerator = $presentation->getFontsManager()->getSubstitutions($selectedSlides)->iterator();
try {
while (java_values($enumerator->hasNext())) {
$substitutions[] = $enumerator->next();
}
} finally {
$enumerator->dispose();
}
echo "Substitutions for the selected slides:" . PHP_EOL;
foreach ($substitutions as $substitution) {
$originalFontName = java_values($substitution->getOriginalFontName());
$substitutedFontName = java_values($substitution->getSubstitutedFontName());
echo $originalFontName . " -> " . $substitutedFontName . PHP_EOL;
}
$sortedPreflightEntries = [];
foreach ($substitutions as $substitution) {
$originalFontName = java_values($substitution->getOriginalFontName());
$substitutedFontName = java_values($substitution->getSubstitutedFontName());
$entry = $originalFontName . " -> " . $substitutedFontName;
$sortedPreflightEntries[strtolower($entry)] = $entry;
}
ksort($sortedPreflightEntries, SORT_NATURAL | SORT_FLAG_CASE);
echo "Deduplicated font preflight report:" . PHP_EOL;
foreach ($sortedPreflightEntries as $entry) {
echo $entry . PHP_EOL;
}
} finally {
$presentation->dispose();
}
Kelas FontsManager menyediakan kedua overload. Pilih salah satu sesuai ruang lingkup operasi rendering:
| Overload | Gunakan ketika |
|---|---|
| getSubstitutions dengan tidak ada argumen | Anda memerlukan substitusi untuk seluruh presentasi. |
getSubstitutions dengan int[] slides |
Anda memerlukan substitusi untuk rentang yang dipilih, pemeriksaan inkremental, atau ekspor parsial. |
Atur Aturan Substitusi Font
- Muat presentasi.
- Buat definisi font untuk font sumber dan font substitusi.
- Buat sebuah FontSubstRule dengan kondisi WhenInaccessible.
- Tambahkan aturan ke sebuah FontSubstRuleCollection.
- Tetapkan koleksi dengan menggunakan metode FontsManager::setFontSubstRuleList.
- Render atau konversi presentasi.
Contoh PHP berikut menggantikan Arial untuk SomeRareFont ketika SomeRareFont tidak tersedia, dan kemudian merender slide pertama untuk memverifikasi hasilnya. Font substitusi harus tersedia untuk Aspose.Slides.
use aspose\slides\FontData;
use aspose\slides\FontSubstCondition;
use aspose\slides\FontSubstRule;
use aspose\slides\FontSubstRuleCollection;
use aspose\slides\ImageFormat;
use aspose\slides\Presentation;
$presentation = new Presentation("Fonts.pptx");
try {
$sourceFont = new FontData("SomeRareFont");
$substituteFont = new FontData("Arial");
$substitutionRule = new FontSubstRule($sourceFont, $substituteFont, FontSubstCondition::WhenInaccessible);
$substitutionRules = new FontSubstRuleCollection();
$substitutionRules->add($substitutionRule);
$presentation->getFontsManager()->setFontSubstRuleList($substitutionRules);
$image = $presentation->getSlides()->get_Item(0)->getImage(1.0, 1.0);
try {
$image->save("slide.jpg", ImageFormat::Jpeg);
} finally {
$image->dispose();
}
} finally {
$presentation->dispose();
}
Note
Untuk perubahan tanpa syarat pada font yang digunakan di seluruh presentasi, lihat Penggantian Font.Batasan untuk Font Persamaan Matematika
Aturan substitusi font adalah bagian dari proses pemilihan font standar yang digunakan selama rendering dan konversi. Mereka berfungsi untuk teks biasa ketika Aspose.Slides dapat menggantikan font yang tidak dapat diakses dengan font yang tersedia yang ditentukan oleh sebuah aturan.
Persamaan Office Math memiliki persyaratan tambahan. Jika sebuah persamaan menggunakan Cambria Math, Aspose.Slides mungkin memerlukan font tepat tersebut untuk menghitung dan merender tata letak persamaan. Aturan yang menggantikan font matematika lain, seperti STIX Two Math, tidak dapat menggantikan Cambria Math untuk tujuan ini, dan rendering masih dapat melaporkan bahwa Cambria Math diperlukan.
Untuk merender atau mengonversi presentasi semacam itu, pastikan Cambria Math tersedia untuk Aspose.Slides. Instal font tersebut di sistem operasi atau muat sebagai external font.
Batasan ini berlaku untuk tata letak persamaan. Aturan substitusi yang dijelaskan di atas tetap berlaku untuk teks presentasi biasa.
Pertanyaan yang Sering Diajukan
Apa perbedaan antara penggantian font dan substitusi font?
Penggantian Font secara sengaja mengubah satu font menjadi font lain di seluruh presentasi. Substitusi font memilih font untuk output yang dirender ketika kondisi yang dikonfigurasi terpenuhi, seperti ketika font asli tidak tersedia.
Kapan aturan substitusi diterapkan?
Aturan berpartisipasi dalam font selection sequence selama rendering dan konversi. Dengan WhenInaccessible, sebuah aturan digunakan hanya ketika Aspose.Slides tidak dapat mengakses font sumber.
Apa yang terjadi ketika sebuah font tidak ada dan tidak ada aturan substitusi yang dikonfigurasi?
Aspose.Slides memilih font tersedia terdekat menurut proses pemilihan fontnya. Hasilnya bergantung pada font yang tersedia di lingkungan runtime.
Apakah saya dapat memuat font eksternal untuk menghindari substitusi?
Ya. Anda dapat load external fonts sehingga Aspose.Slides dapat menggunakannya selama rendering dan konversi.
Apakah Aspose mendistribusikan font bersama pustaka?
Tidak. Anda bertanggung jawab menyediakan font dan mematuhi lisensi mereka.
Apakah hasil substitusi dapat berbeda antara Windows, Linux, dan macOS?
Ya. Font yang terinstal dan lokasi pencarian font berbeda menurut sistem operasi, sehingga sebuah font yang tersedia di satu mesin mungkin memerlukan substitusi di mesin lain.
Bagaimana saya dapat membuat pemilihan font konsisten dalam konversi batch?
Gunakan file dan versi font yang sama pada setiap mesin atau kontainer, load required external fonts, dan embed fonts bila lisensi mengizinkan. Anda juga dapat memanggil FontsManager::getSubstitutions sebelum ekspor untuk mengidentifikasi substitusi yang tidak terduga.