גופן חלופי וטקסט אנכי
HotPDF יכול לבחור פנים חלופיות לפי כתב Unicode, לדווח על נקודות-קוד שנותרות בלתי-פתורות, ולכתוב טקסט CJK דרך מצב כתיבת CID אנכית אמיתי
שרשראות חלופיות מבוססות-מסמך
THotPDF.SetFontFallbackChain מאחסן רשימת פנים מסודרת עבור קטגוריית THPDFFontScript אחת
THPDFPage.TextOutWithFallback פותר כל סקלר Unicode מול הפנים שנבחרה, שרשרת הכתב שלה והשרשרת המשותפת, ואז פולט סקלרים סמוכים עם אותה פנים כרצף טקסט אחד
- שרשראות חלופיות הן הגדרות מסמך ונשארות זמינות לאורך עמודים
- שמות פנים כפולים וריקים מוסרים בעוד סדר הקורא נשמר
- בדיקת פנים מותקנות דוחה החלפת GDI שקטה לפני קבלת כיסוי
- סקלרים של מישור-משלים מפוענחים מזוגות surrogate של UTF-16 לפני סיווג
- כל ריצה חלופית משתמשת בגופן Type0 המוטמע הקיים, תת-קבוצות,
ToUnicode, ונתיב הגופן המשותף חוצה-העמודים - פריסה חלופית בודקת משפחות גופנים מותקנות עם פני ה-bold וה-italic המבוקשים, משמרת את כל הגדרות סגנון הגופן, ה-charset, הגודל וכיוון הכתיבה לאורך הריצות, ומשחזרת את גופן הקורא לאחר מכן
אבחון שניתן לפעול לפיו
AnalyzeUnresolvedGlyphs מבצע ביקורת כיסוי לקריאה-בלבד, בעוד TextOutWithFallback רושם סקלרים בלתי-פתורים שנתקלו בהם במהלך הפלט
כל THPDFUnresolvedGlyphInfo כולל את נקודת-הקוד של הסקלר, הפנים העיקרית, הכתב המסווג ורשימת הצעות חלופיות מופרדת בנקודה-פסיק
GetUnresolvedGlyphs מחזיר את הדוח הנוכחי של המסמך ו-ClearUnresolvedGlyphs פותח מרווח דיווח חדש
עומסי היתר עם הסגנון המפורש של THotPDF.ResolveFontForCodePoint ושל THotPDF.AnalyzeUnresolvedGlyphs מקבלים TFontStyles כדי ש-preflight יוכל לבדוק את אותן פנים שבהן נעשה שימוש לפלט; עומסי היתר המקוריים שלהם ממשיכים לבדוק פנים רגילות
תיבות טקסט, טקסט SVG מוטמע ומראות טקסט טעונות שומרות על משפחות גופן בסגנון לאורך הפריסה החלופית, במקום להתייחס לשמות גופן פנימיים של PDF כאל משפחות מערכת או להחליף כל ריצה לפנים רגילה
כתיבת CJK אנכית
THPDFPage.TextOutVertical בוחר את הגרסה האנכית של הפנים הנוכחית ופולט רצף טקסט Identity-V אחד במקום למקם כל תו ידנית
- גופן הצאצא מסוג CID מכיל ברירות מחדל
/DW2ורשומות/W2ספציפיות-גליף - כאשר קיימות, טבלאות OpenType
vheaו-vmtxמספקות התקדמויות אנכיות ו-top side bearings; המוצאים של TrueType נגזרים מתיבת החסימה של כלglyf, בעודVORGמספק את ברירות המחדל והחריגות הסמכותיות של המוצא ב-CFF - גופנים ללא טבלאות אנכיות משתמשים בברירות מחדל ניתנות-להגדרה של התקדמות 1000 יחידות ומוצא 880 יחידות
- עם
sfVerticalAlternates, רצף ה-GSUB השומר-אורך המלא משתמש ב-vrt2כשהוא מוצהר ואחרת נופל בחזרה ל-vert, תוך שמירה על בחירת ה-script והשפה הפעילים - כשגופן משמיט החלפת פיסוק אבל ממפה צורות תצוגה אנכיות של Unicode, פסיקים, נקודות, סוגריים, קווים מפרידים, אליפסות ופיסוק קשור משתמשים בגליפים האלה בזמן ש-
ToUnicodeמשמר את טקסט המקור - תכונות ה-GPOS האנכיות
vkrnו-vpalנשארות זמינות דרךShapingFeatures GetVerticalTextAdvanceמחזיר את ההתקדמות במרחב המשתמש הדרושה למיקום הריצה האנכית הבאה
דוגמה
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;