Font Fallback and Vertical Text
HotPDF dapat memilih face fallback berdasarkan skrip Unicode, melaporkan titik kode yang tetap belum terpecahkan, dan menulis teks CJK melalui mode penulisan CID vertikal yang nyata
Rantai fallback tingkat dokumen
THotPDF.SetFontFallbackChain menyimpan daftar face terurut untuk satu kategori THPDFFontScript
THPDFPage.TextOutWithFallback menyelesaikan setiap skalar Unicode terhadap face yang dipilih, rantai skripnya, dan rantai umum, lalu memancarkan skalar yang berdekatan dengan face yang sama sebagai satu run teks
- Rantai fallback adalah pengaturan dokumen dan tetap tersedia di seluruh halaman
- Nama face duplikat dan kosong dihapus sementara urutan pemanggil dipertahankan
- Pemeriksaan face terpasang menolak substitusi GDI senyap sebelum menerima cakupan
- Skalar bidang suplementer didekodekan dari pasangan surrogate UTF-16 sebelum klasifikasi
- Setiap run fallback menggunakan font Type0 yang tertanam yang ada, subsetting,
ToUnicode, dan jalur font lintas-halaman bersama - Pemeriksaan tata letak fallback memeriksa family font terinstal dengan face bold dan italic yang diminta, mempertahankan semua pengaturan gaya font, charset, ukuran, dan arah penulisan di seluruh run, lalu mengembalikan font milik pemanggil setelahnya
Diagnostik yang dapat ditindaklanjuti
AnalyzeUnresolvedGlyphs melakukan audit cakupan hanya-baca, sementara TextOutWithFallback mencatat skalar yang belum terpecahkan yang ditemui selama keluaran
Setiap THPDFUnresolvedGlyphInfo menyertakan titik kode skalar, face utama, skrip yang diklasifikasikan, dan daftar saran fallback yang dipisahkan titik koma
GetUnresolvedGlyphs mengembalikan laporan dokumen saat ini dan ClearUnresolvedGlyphs memulai interval pelaporan baru
Overload gaya eksplisit milik THotPDF.ResolveFontForCodePoint dan THotPDF.AnalyzeUnresolvedGlyphs menerima TFontStyles sehingga preflight dapat memeriksa face yang sama dengan yang dipakai saat output; overload aslinya tetap memeriksa face regular
Text box, teks yang di-embed SVG, dan appearance teks yang dimuat mempertahankan family font bergaya melalui tata letak fallback, alih-alih memperlakukan nama font internal PDF sebagai family sistem atau mengubah setiap run ke face regular
Penulisan CJK vertikal
THPDFPage.TextOutVertical memilih varian vertikal face saat ini dan memancarkan satu run teks Identity-V alih-alih memosisikan setiap karakter secara manual
- Font keturunan CID berisi default
/DW2dan entri/W2khusus glyph - OpenType
vheadanvmtxmenyediakan advance vertikal dan top side bearing; origin TrueType diturunkan dari bounding box tiapglyf, sedangkanVORGmenyediakan default origin CFF yang otoritatif beserta pengecualiannya - Font tanpa tabel vertikal menggunakan default advance 1000-unit dan asal 880-unit yang dapat dikonfigurasi
- Dengan
sfVerticalAlternates, rangkaian GSUB lengkap yang mempertahankan panjang memakaivrt2bila diiklankan dan mundur kevertbila tidak, dengan tetap menjaga pilihan script dan bahasa yang aktif - Ketika sebuah font tidak menyediakan substitusi tanda baca tetapi memetakan bentuk presentasi vertikal Unicode, koma, titik, kurung, garis putus, elipsis, dan tanda baca terkait memakai glyph tersebut sementara
ToUnicodetetap menjaga teks sumbernya - Fitur
vert,vrt2, dan GPOS vertikal yang ada tetap tersedia melaluiShapingFeatures GetVerticalTextAdvancemengembalikan advance ruang-pengguna yang diperlukan untuk memosisikan run vertikal berikutnya
Contoh
PDF.SetFontFallbackChain(hfsCJK,
['Microsoft YaHei UI', 'Yu Gothic UI', 'Malgun Gothic']);
PDF.SetFontFallbackChain(hfsEmoji, ['Segoe UI Emoji']);
PDF.CurrentPage.SetFont('Arial', [], 12);
PDF.CurrentPage.TextOutWithFallback(72, 72, 0, Text);
PDF.CurrentPage.SetFont('Yu Gothic UI', [], 14);
PDF.CurrentPage.TextOutVertical(420, 72, VerticalText);
Missing := PDF.GetUnresolvedGlyphs;