Font Fallback and Vertical Text
HotPDF có thể chọn các mặt font dự phòng theo script Unicode, báo cáo các code point vẫn chưa được giải quyết, và viết văn bản CJK thông qua một chế độ viết CID dọc thực sự
Các chuỗi fallback cấp tài liệu
THotPDF.SetFontFallbackChain lưu trữ một danh sách mặt có thứ tự cho một danh mục THPDFFontScript
THPDFPage.TextOutWithFallback giải từng scalar Unicode dựa vào mặt đã chọn, chuỗi script của nó và chuỗi chung, sau đó phát các scalar kề nhau có cùng mặt thành một run văn bản
- Các chuỗi fallback là cài đặt tài liệu và vẫn khả dụng trên các trang
- Tên mặt trùng lặp và rỗng được loại bỏ trong khi thứ tự của bên gọi được bảo toàn
- Thăm dò mặt đã cài đặt từ chối thay thế GDI thầm lặng trước khi chấp nhận vùng bao phủ
- Các scalar supplementary-plane được giải mã từ cặp surrogate UTF-16 trước khi phân loại
- Mỗi run fallback dùng đường dẫn font Type0 nhúng hiện có, subsetting,
ToUnicode, và đường dẫn font dùng chung trên nhiều trang - Bố cục fallback kiểm tra các họ font đã cài đặt với kiểu face đậm và nghiêng được yêu cầu, giữ nguyên mọi cài đặt font style, charset, kích thước, và hướng viết qua các run, rồi trả lại font của bên gọi sau đó
Chẩn đoán có thể hành động
AnalyzeUnresolvedGlyphs thực hiện một kiểm toán vùng bao phủ chỉ đọc, trong khi TextOutWithFallback ghi lại các scalar chưa giải quyết gặp phải trong lúc xuất
Mỗi THPDFUnresolvedGlyphInfo bao gồm code point scalar, mặt chính, script đã phân loại, và danh sách gợi ý fallback phân tách bằng dấu chấm phẩy
GetUnresolvedGlyphs trả về báo cáo tài liệu hiện tại và ClearUnresolvedGlyphs bắt đầu một khoảng báo cáo mới
Các overload chỉ định kiểu rõ ràng của THotPDF.ResolveFontForCodePoint và THotPDF.AnalyzeUnresolvedGlyphs nhận TFontStyles để preflight có thể soi đúng face dùng cho xuất; overload gốc của chúng tiếp tục soi các face regular
Text box, văn bản nhúng SVG, và text appearance đã nạp giữ nguyên họ font có style xuyên qua bố cục fallback, thay vì coi tên font nội bộ của PDF là họ hệ thống hoặc đổi mọi run sang face regular
Văn bản CJK dọc
THPDFPage.TextOutVertical chọn biến thể dọc của mặt hiện tại và phát ra một run văn bản Identity-V thay vì định vị từng ký tự thủ công
- Font hậu duệ CID chứa các mặc định
/DW2và các mục/W2riêng cho glyph - OpenType
vheavàvmtxcung cấp các advance dọc và side bearing trên; gốc TrueType được suy từ mỗi hộp baoglyf, cònVORGcung cấp các mặc định gốc CFF chính thống cùng các ngoại lệ - Font không có bảng dọc dùng các giá trị mặc định cấu hình được: advance 1000 đơn vị và gốc 880 đơn vị
- Với
sfVerticalAlternates, toàn bộ chuỗi GSUB giữ độ dài dùngvrt2khi được quảng bá và nếu không sẽ rơi vềvert, giữ lựa chọn script và ngôn ngữ đang hoạt động - Khi một font bỏ qua phép thay thế dấu câu nhưng ánh xạ các dạng trình bày dọc Unicode, dấu phẩy, dấu chấm, ngoặc, gạch ngang, dấu ba chấm và dấu câu liên quan dùng các glyph đó trong khi
ToUnicodebảo toàn văn bản nguồn - Các tính năng GPOS dọc
vkrnvàvpalvẫn sẵn quaShapingFeatures GetVerticalTextAdvancetrả về advance không gian người dùng cần để đặt run dọc tiếp theo
Ví dụ
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;