Fuente de respaldo y texto vertical
HotPDF puede seleccionar tipografías de respaldo por script Unicode, reportar los puntos de código que siguen sin resolverse y escribir texto CJK mediante un modo de escritura CID vertical real
Cadenas de respaldo a nivel de documento
THotPDF.SetFontFallbackChain almacena una lista ordenada de tipografías para una categoría de THPDFFontScript
THPDFPage.TextOutWithFallback resuelve cada escalar Unicode contra la tipografía seleccionada, su cadena de script y la cadena común, y luego emite los escalares adyacentes con la misma tipografía como una sola ejecución de texto
- Las cadenas de respaldo son ajustes del documento y siguen disponibles a lo largo de las páginas
- Los nombres de tipografía duplicados y vacíos se eliminan mientras se conserva el orden de quien llama
- El sondeo de tipografías instaladas rechaza la sustitución silenciosa de GDI antes de aceptar la cobertura
- Los escalares del plan suplementario se decodifican a partir de pares sustitutos UTF-16 antes de la clasificación
- Cada ejecución de respaldo usa la fuente Type0 embebida existente, el subsetting,
ToUnicodey la ruta de fuente compartida entre páginas - El layout de respaldo verifica las familias de fuentes instaladas con la variante bold e italic solicitada, preserva todos los ajustes de estilo, charset, tamaño y dirección de escritura de la fuente entre ejecuciones y restaura la fuente de quien llama al finalizar
Diagnósticos procesables
AnalyzeUnresolvedGlyphs realiza una auditoría de cobertura de solo lectura, mientras que TextOutWithFallback registra los escalares no resueltos que se encontraron durante la salida
Cada THPDFUnresolvedGlyphInfo incluye el punto de código escalar, la tipografía primaria, el script clasificado y una lista de sugerencias de respaldo separada por punto y coma
GetUnresolvedGlyphs devuelve el informe actual del documento y ClearUnresolvedGlyphs inicia un nuevo intervalo de reporte
Las sobrecargas con estilo explícito de THotPDF.ResolveFontForCodePoint y THotPDF.AnalyzeUnresolvedGlyphs aceptan TFontStyles, de modo que el preflight puede inspeccionar la misma variante usada para la salida; sus sobrecargas originales siguen inspeccionando las variantes regular
Los cuadros de texto, el texto embebido SVG y las apariencias de texto cargadas conservan las familias de fuentes con estilo a través del layout de respaldo, en lugar de tratar los nombres internos de fuentes PDF como familias del sistema o cambiar cada ejecución a una variante regular
Escritura CJK vertical
THPDFPage.TextOutVertical selecciona la variante vertical de la tipografía actual y emite una ejecución de texto Identity-V en lugar de posicionar cada carácter manualmente
- La fuente CID descendente contiene los valores predeterminados
/DW2y entradas/W2específicas por glifo - Las tablas OpenType
vheayvmtxproporcionan los avances verticales y los side bearings superiores; los orígenes TrueType se derivan del bounding box de cadaglyf, mientras queVORGproporciona los valores por defecto autoritativos del origen CFF y sus excepciones - Las fuentes sin tablas verticales usan un avance configurable por defecto de 1000 unidades y un origen por defecto de 880 unidades
- Con
sfVerticalAlternates, la ejecución GSUB completa que preserva la longitud usavrt2cuando la fuente la anuncia y en caso contrario recurre avert, preservando la selección activa de script y lenguaje - Cuando una fuente omite una sustitución de puntuación pero mapea las formas de presentación vertical de Unicode, las comas, los puntos, los corchetes, los guiones, los puntos suspensivos y la puntuación relacionada usan esos glifos mientras
ToUnicodepreserva el texto fuente - Las características GPOS verticales
vkrnyvpalsiguen disponibles a través deShapingFeatures GetVerticalTextAdvancedevuelve el avance en el espacio de usuario necesario para posicionar la siguiente ejecución vertical
Ejemplo
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;