Portabla XFA-lösenordsappearances
Unit: HPDFXFAHeadless
HPDFXFAWriteHeadlessPDF konsumerar XFA-fält av typen passwordEdit som nativa textwidgetar med PDF-lösenordsflaggan och en maskad appearance med inbäddat typsnitt på Windows och Linux
Appearancen innehåller en asterisk per Unicode-skalär: ett tilläggstecken som representeras av ett UTF-16-surrogatpar ger en asterisk, medan kombinerande tecken och ZWJ var och en bidrar med sin egen asterisk
Det nativa /V behåller det kompletta ursprungliga Unicode-värdet; maskering av appearancen ger ingen kryptering och tar inte bort det värdet ur PDF:en
Till exempel ger A😀B tre asterisker, och é ger två, eftersom den kombinerande accenten är en egen skalär
Gränser och avbrott
Adaptern kontrollerar avbrott medan skalärer räknas, och kontrollerar den återstående aggregerade glyph-budgeten innan masksträngen allokeras
TXFAHeadlessPDFResult.GlyphUnits räknar de faktiskt genererade asteriskerna för lösenordsappearances; den befintliga UTF-16-redovisningen för vanlig text och övriga appearance-konsumenter är oförändrad
Två tilläggstecken ryms i en återstående MaxGlyphs-budget på två; en budget på ett misslyckas innan masken allokeras
Originalvärdet omfattas fortfarande av gränser för indata och objektbytes, och alla fält delar den aggregerade appearance-budgeten
Fel i förberedelse, budget och avbrott lämnar anroparens destinationsposition, längd och befintliga bytes oändrade; skrivfel i destinationen följer strömmens eget beteende vid partiella skrivningar
Verifiering
Tests/Linux/XFAHeadlessPasswordTests.pas och lösenordskörarna för Windows och Linux verifierar exakta budgetar, avbrottsgränser, strömbevarande och beteende vid nya försök
Den oberoende verifieraren kontrollerar nativa värden, flaggor, faktiska AP CID-sekvenser, ToUnicode och inbäddade glyph-ID, och renderar och extraherar sedan de sparade PDF:erna med MuPDF
Automatisk XFA-skapning beskriver övriga konsumenter av nativa fält och ritningar