Marks de rich text entre estilos
Rich text tipado retém o V lógico original e o RV canônico enquanto posiciona um combining mark inicial contra o glyph renderizado anterior real na mesma linha física
O base e o mark podem usar programas de fontes fornecidos diferentes, regular, bold, italic ou bold-italic, tamanhos em pontos diferentes e cores diferentes
O posicionamento lê anexações reais GPOS mark-to-base, mark-to-ligature e mark-to-mark, incluindo lookups de posicionamento por extensão; a âncora do base usa a fonte e a escala próprias dela, e a âncora do mark usa a fonte e a escala próprias dela
A junção contextual árabe permanece ativa através das fronteiras de estilos, e um mark anexado usa o glyph base unido resultante, em vez de um glyph nominal isolado
Marks iniciais recebem transforms filhas independentes, de modo que anexar um mark não move o texto comum seguinte nem muda o advance lógico de character spacing
Forms filhas rich retêm overhangs de glyphs, incluindo combining marks de origem negativa e contornos itálicos; a aparência dona fornece o clip do widget, a rotação e o alinhamento do parágrafo
A tinta anexada contribui para o ajuste das extensões de linhas, de modo que marks empilhados possam permanecer visíveis no topo de um campo; um cluster indivisível mais alto que o widget retém seu comportamento existente de clipping delimitado
Quando a cobertura de anexações correspondente está ausente, os limites reais dos headers de glyphs TrueType selecionados fornecem um fallback de placement com escalas independentes de tamanho em pontos e a combining class nativa Unicode
O placement de fallback distingue marks acima, abaixo, anexados, left/right e duplos; marks do mesmo lado empilham, enquanto marks de lados opostos voltam ao contorno do base, e âncoras GPOS correspondentes sempre têm prioridade
Combining marks duplos permanecem candidatos a anexação mesmo quando sua classe de line-break Unicode é nonbreaking; o texto lógico, os estilos originais e o advance seguinte de character spacing permanecem intactos
A borda de fallback de um mark duplo segue o level bidi real resolvido do seu item de texto, incluindo um item de direção oposta embutido no parágrafo
Os limites de fallback descrevem o header de contorno declarado da fonte real; a reconstrução automática de famílias de fontes arbitrárias fica fora deste contrato de fontes fornecidas
As leituras de tabelas de fontes permanecem delimitadas à tabela GPOS real delas, observam o cancelamento e compartilham um orçamento de traversal entre todas as fontes de estilo fornecidas; offsets de tabelas inválidos falham antes de o campo do documento ser mutado
Contornos PDF sem hinting usam âncoras em coordenadas de design, sem ajustes de pixels específicos de dispositivo
Aceitação
HotPDFHeadlessRichMarkTests.pas salva e recarrega aparências reais de marks em latim, árabe e hebraico, marks empilhados, uma ligadura árabe genuína, tamanhos e cores mistos, wrapping, spacing, alinhamento e rotação
Verify-HeadlessRichMarks.py lê os programas reais de fontes embutidas através do fontTools, computa de forma independente as âncoras GPOS, verifica os valores e estilos da origem e confirma que cada mark contribui com pixels visíveis de MuPDF renderizando a mesma aparência real com aquele mark omitido
HotPDFHeadlessRichMarkFallbackTests.pas e Verify-HeadlessRichMarkFallback.py checam fontes reais sem GPOS, aparências salvas visíveis, combining classes raw, limites de glyphs selecionados e cancelamento; âncoras correspondentes também são verificadas como retendo prioridade sobre o placement de fallback
Limites de glyphs TrueType selecionados · Combining classes canônicas raw
Builder de aparências · Campos nativos de rich text · Ajuste de graphemes entre estilos