Aparências portáteis de password no XFA

Unit: HPDFXFAHeadless

HPDFXFAWriteHeadlessPDF consome campos XFA passwordEdit como widgets nativos de texto com a flag de password do PDF e uma aparência mascarada com fonte embutida no Windows e no Linux

A aparência contém um asterisco por valor de Unicode scalar: um caractere suplementar representado por um surrogate pair UTF-16 produz um asterisco, enquanto combining marks e ZWJ contribuem cada um com seu próprio asterisco

O /V nativo retém o valor Unicode autorado completo; o mascaramento de aparências não fornece criptografia nem remove esse valor do PDF

Por exemplo, A😀B produz três asteriscos, e é produz dois porque o acento combinante é um scalar separado

Limites e cancelamento

O adapter checa o cancelamento enquanto conta os scalars e checa o orçamento agregado restante de glyphs antes de alocar a string da máscara

TXFAHeadlessPDFResult.GlyphUnits conta os asteriscos realmente gerados para aparências de password; a contabilidade UTF-16 existente para texto comum e outros consumers de aparências permanece inalterada

Dois caracteres suplementares cabem num orçamento restante de MaxGlyphs de dois; um orçamento de um falha antes da alocação da máscara

O valor original permanece sujeito aos limites de entrada e de object-bytes, e todos os campos compartilham o orçamento agregado de aparências

Falhas de preparação, orçamento e cancelamento deixam a posição, o comprimento e os bytes existentes do destino do chamador inalterados; erros de gravação no destino seguem o comportamento de partial-write do próprio stream

Verificação

Tests/Linux/XFAHeadlessPasswordTests.pas e os runners de password do Windows e do Linux verificam orçamentos exatos, fronteiras de cancelamento, preservação de streams e comportamento de retry

O verifier independente checa valores nativos, flags, sequências CID reais do AP, ToUnicode e glyph IDs embutidos, e depois renderiza e extrai os PDFs salvos com MuPDF

Criação automática de XFA descreve os demais consumers nativos de campos e desenhos