HPDFPrepareHeadlessRichTextLineBoxes
function HPDFPrepareHeadlessRichTextLineBoxes(
const Runs: THPDFHeadlessRichTextRuns; MaximumRuns: Integer;
CancellationToken: THPDFCancellationToken = nil): THPDFHeadlessRichTextRuns;
Devuelve una secuencia de runs aparte con los struts de párrafo de solo métricas que necesitan las alturas de línea rich explícitas; no modifica los registros de runs del autor del llamador
MaximumRuns debe estar entre uno y 4096 e incluye los struts insertados; superar esa capacidad lanza EHPDFHeadlessAppearanceError con haLimitExceeded
Un párrafo con altura explícita recibe un strut copiado de su primer run del autor cuando no existe un strut explícito; una primera altura legacy se vuelve normal, y las demás alturas hijas legacy permanecen normales en lugar de heredar el factor de un hermano
Un run con IsParagraphStrut existente debe ser el primer run vacío de su párrafo y debe llevar una altura no legacy; una colocación mal formada de runs de métricas lanza haInvalidOptions
ParagraphBreakBefore se mueve al strut insertado para que el texto plano retenga exactamente sus límites de párrafo originales; los párrafos todo-legacy preservan su secuencia de runs y valores existentes
Los planificadores de fuentes deben incluir cada run no vacío y cada run IsParagraphStrut de la secuencia preparada, porque los struts vacíos exigen sus métricas reales de face y estilo suministradas
El token de cancelación opcional se consulta durante la preparación y propaga EHPDFOperationCancelled; la función no accede a archivos, no carga fuentes, no publica PDF ni confirma callbacks
La preparación valida su estructura de párrafos acotada; la validación ordinaria de Unicode, color, tamaño, programas de fuente y presupuesto de objetos queda en el serializador rich y en el builder de appearances