Line breaking Unicode
HPDFUnicodeLineBreaks implementa as oportunidades default de line breaking do Unicode 17.0.0 com as propriedades Line_Break, General_Category, East_Asian_Width e Extended_Pictographic embarcadas no repositório
A implementação portátil resolve sequências combinantes, contexto de pontuação, expressões numéricas, Hangul, sílabas ortográficas brâmicas, modificadores de emoji e regional indicators pareados sem uma DLL de segmentação
A função retorna a posição antes do primeiro scalar e depois de cada scalar, expressa como offsets UTF-16 com base zero; cada posição é proibida, permitida ou obrigatória
O fim do texto é obrigatório, inclusive para entrada vazia; o início de texto não vazio é proibido, e surrogates pareados não têm posição interior
O tratamento default do Sudeste Asiático resolve caracteres SA comuns para AL e combining marks SA para CM; dicionários de idiomas e hifenização são serviços separados de tailoring
HPDFUnicodeLineBreakClass expõe a propriedade raw ou resolvida por LB1 para code points individuais; os nomes de THPDFUnicodeLineBreakClass retêm todas as abreviações de propriedades do Unicode 17
As APIs existentes de documento HPDFComputeLineBreaks e HPDFLineBreakClassOf consomem as mesmas tabelas completas no Delphi 2009 e posteriores e em alvos FPC suportados, preservando os ordinais estabelecidos dos enums e o comportamento de entrada vazia
UTF-16 malformado e orçamentos de code units fora de um a 1048576 disparam EArgumentException; o cancelamento é checado antes da alocação, durante a decodificação e ao avaliar fronteiras
Layout real de campos rich
Runs rich tipados quebrados consomem as oportunidades legais default, mantêm grupos de non-breaking spaces e pontuação de abertura juntos, e honram CRLF, NEL, LINE SEPARATOR e PARAGRAPH SEPARATOR como quebras explícitas
Separadores originais permanecem em V e no RV canônico; separadores de linha são omitidos dos fragmentos pintados de glyphs, e grupos largos demais usam o wrapping de emergência existente de graphemes completos
Fragmentos independentes na mesma linha real continuam com advances medidos; quebras legais não exigem uma linha física separada, a menos que o ajuste as selecione
Oportunidades de parágrafos completos preservam grupos legais através de mudanças de estilo e coalescem CRLF dividido; os advances estilizados reais decidem quando um grupo inteiro que cabe se move para uma linha nova
Ajuste de emergência de graphemes entre estilos e shaping contextual, bidi de parágrafos com estilos mistos, XHTML arbitrário e tailoring específico de idiomas permanecem alvos ativos de integração
Conformidade
HotPDFUnicodeLineBreakTests consome todos os 19338 casos oficiais do LineBreakTest do Unicode 17 e compara cada posição publicada; o fim obrigatório e os comportamentos de malformado, orçamento e cancelamento têm checagens separadas
Build-UnicodeLineBreakTables.py --check verifica a reprodutibilidade e os pins SHA-256 das três entradas adicionais de propriedades UCD
Regras de line breaking do Unicode 17 · Função de fronteiras · Posições retornadas · Integração com campos rich