Quebra de linhas Unicode
HPDFUnicodeLineBreaks implementa oportunidades de quebra de linhas por defeito do Unicode 17.0.0 com as propriedades Line_Break, General_Category, East_Asian_Width e Extended_Pictographic incluídas no repositório
A implementação portátil resolve sequências de combinação, contexto de pontuação, expressões numéricas, Hangul, sílabas ortográficas Brahmic, modificadores de emoji e indicadores regionais emparelhados sem uma DLL de segmentação
A função devolve a posição antes do primeiro scalar e depois de todos os scalars, expressa como offsets UTF-16 com base zero; cada posição é proibida, permitida ou obrigatória
O fim do texto é obrigatório, incluindo para entrada vazia; o início de texto não vazio é proibido, e surrogates emparelhados não têm posição interior
O tratamento por defeito do Sudeste Asiático resolve carateres SA ordinários para AL e marcas de combinação SA para CM; dicionários de linguagens e hifenização são serviços separados de tailoring
HPDFUnicodeLineBreakClass expõe a propriedade em bruto ou resolvida por LB1 para code points individuais; os nomes THPDFUnicodeLineBreakClass mantêm todas as abreviaturas de propriedades do Unicode 17
As APIs de documentos existentes HPDFComputeLineBreaks e HPDFLineBreakClassOf consomem as mesmas tabelas completas no Delphi 2009 e posteriores e nos alvos FPC suportados, preservando ordinais estabelecidos de enums e o comportamento de entradas vazias
UTF-16 malformado e orçamentos de unidades de código fora de um a 1048576 levantam EArgumentException; o cancelamento é verificado antes da alocação, durante a descodificação e ao avaliar fronteiras
Layout real de campos rich
Runs rich tipados com wrap consomem oportunidades legais por defeito, mantêm grupos de espaços não quebráveis e pontuação de abertura em conjunto, e honram CRLF, NEL, LINE SEPARATOR e PARAGRAPH SEPARATOR como quebras explícitas
Separadores originais permanecem em V e RV canónico; separadores de linhas são omitidos dos fragmentos pintados de glyphs, e grupos demasiado largos usam o wrap existente de emergência de graphemes completos
Fragmentos independentes na mesma linha real continuam com avanços medidos; quebras legais não exigem uma linha física separada a menos que o ajuste as selecione
As oportunidades completas de parágrafos preservam grupos legais através de mudanças de estilos e fundem CRLF dividido; os avanços reais com estilo decidem quando um grupo inteiro que caiba se move para uma linha fresca
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 linguagens continuam a ser alvos ativos de integração
Conformidade
HotPDFUnicodeLineBreakTests consome todos os 19338 casos oficiais de LineBreakTest do Unicode 17 e compara todas as posições publicadas; o fim obrigatório e o comportamento malformado, de orçamentos e de cancelamento têm verificações separadas
Build-UnicodeLineBreakTables.py --check verifica a reprodutibilidade e os pins SHA-256 das três entradas adicionais de propriedades UCD
Regras de quebra de linhas do Unicode 17 · Função de fronteiras · Posições devolvidas · Integração de campos rich