Linux Portable Core
De portable core compileert het bestaande objectmodel, de simple-object-parser, de Direct File-I/O-helpers, de content-stream-interpreter, de PDF-waardehelpers, de xref- en trailerwriter, de Flate-backend en de AES-primitieven naar native Linux-programma's met Free Pascal
HPDFPlatform levert echte POSIX mapped files en positionele reads, het aanmaken van tijdelijke bestanden, workersynchronisatie en willekeurige bytes van het besturingssysteem; de Windows-adapter behoudt het bestaande native file- en mappinggedrag
Acceptatieomvang
Tests/Linux/Run-PortableCoreTests.sh bouwt een native x86_64 ELF-consoleexecutable, wist desktop-displayvariabelen, controleert op GUI-bibliotheekafhankelijkheden en draait acht groepen regressies met een timeout
De controles dekken parser-escapes en indirecte referenties, invariante PDF-waarden en streamfilters, gemapte windows en sparse-file-offsets boven 4 GiB, gecomprimeerde asynchrone spill-streams, Flate- en AES-known answers, MD5-bestandshashes, willekeurige IV's van het besturingssysteem, geldige klassieke xref-serialisatie, Direct File-pagina-aantallen en objectlookup, en content-stream-tekst en glyphposities
De gegenereerde one-page-fixture wordt door de bestaande writer geschreven en onafhankelijk via de gedeelde Direct File-helpers gelezen; inhoudscontroles gebruiken zowel de bestaande Latin-1 identity resolver als de page font resolver met encoding-verschillen en expliciete widths
Fontdata en tekstdecoding
HPDFFontData scheidt de bestaande decoding van glyphnamen, encodings en sfnt CMaps van GDI; Windows embedded glyph rendering en de bestaande HPDFTextExtraction-decoder gebruiken dezelfde implementatie
THPDFTrueTypeData biedt ondersteunde CMap-lookup, omgekeerde glyph-naar-Unicode-mapping en hmtx-horizontale advances voor een single-font sfnt-image
HPDFBaseFontMetrics gebruikt canonieke standard-font-advances voor twaalf exacte Helvetica/Times/Courier-namen en ondersteunde gedecodeerde tekens, behoudt de Windows GDI- en Linux Fontconfig-fallback voor andere fonts en behoudt expliciete PDF-widths
Platform- en fonthelpercontracten
THPDFPlatformHandle is een signed handle met native breedte en HPDFInvalidFileHandle is -1; HPDFOpenReadOnlyFile en HPDFCloseFile beheren read-handles, terwijl HPDFFileSize en HPDFReadFileAt Int64-posities gebruiken en aanroepers short reads moeten afhandelen
HPDFMappingGranularity levert de vereiste offset-uitlijning; HPDFCreateReadOnlyMapping geeft nul terug bij falen, HPDFMapReadOnly mapt het gevraagde bereik en HPDFUnmapReadOnly / HPDFCloseMapping geven de view en de mapping vrij
HPDFCreateTemporaryFile maakt exclusief een bestand aan waarvan het pad en de opruiming bij de aanroeper horen; HPDFInitializeLock / HPDFDeleteLock beheren native critical sections
THPDFPlatformEvent is een alias voor TEvent; HPDFCreateEvent, HPDFWaitEvent, HPDFSignalEvent en HPDFResetEvent beheren synchronisatie, en de aanroeper geeft events vrij nadat de worker is gestopt
HPDFSecureRandomBytes vult de gevraagde buffer vanuit het besturingssysteem of gooit een exception
HPDFGlyphNameToUnicode, HPDFUnicodeToGlyphName, HPDFStdEncGlyphName, HPDFMacExpertEncGlyphName en HPDFBaseEncToUnicode behouden het bestaande naam- en encodinggedrag; HPDFBaseFontFamilyToken verwijdert subset- en style-suffixen, terwijl HPDFIsStandardTextFont Helvetica-, Times- en Courier-aliassen herkent
HPDFMeasureBaseFontWidths gebruikt de Windows GDI-provider of Linux Fontconfig en gedeelde sfnt-horizontale metrics; THPDFTrueTypeData en THPDFUnicodeByGID leveren de gedeelde fontdata-API
Gedeelde Direct File-types
HPDFDirectFileTypes is eigenaar van de bestaande definities THPDFKeyType, THPDFProtection, THPDFProtectOptions, THPDFDirectXrefEntry, THPDFDirectObjectSource en THPDFDirectFileState
Door deze scheiding kan HPDFDirectFileIO dezelfde records en permissietypes gebruiken zonder de component- en GUI-implementatie te importeren
HPDFDoc behoudt aliassen en enum-waardeconstanten onder de oorspronkelijke namen; enum-ordinalen en recordlayouts zijn ongewijzigd
Initialisatie van Linux-programma's
Native Free Pascal-programma's moeten cthreads vooraan in de uses-lijst zetten voordat ze worker threads gebruiken; de portable-core-test laadt ook cwstring om de Unicode conversion manager te leveren
Gebruik FPC 3.2.2 of nieuwer met diens FCL- en paszlib-units, een C-runtime, Fontconfig met geïnstalleerde TrueType-fonts en de tools file, ldd en timeout; FPC_EXE en HPDF_LINUX_OUTPUT kiezen de compiler en de geïsoleerde uitvoermap
Resterende migratie
Deze fase legt THotPDF op Linux nog niet bloot: de native headless document-API laadt tegenwoordig klassieke, xref-stream-, hybride en compressed-object-grafen, lost pagina- en Form-resources op, extraheert Unicode-tekst en bewerkt AcroForm-tekstwaarden; het profiel omvat tegenwoordig Standard AES-256, streaming OpenSSL CMS/CAdES en incrementele handtekeningpublicatie, plus native Cairo/FreeType PNG-rendering en bestaande normale appearances; transactionele Unicode single-line TrueType-appearance-synthese is ook geverifieerd; legacy-versleutelingshandlers, OCR en de Linux C ABI vereisen aparte integratie
Zie Tests/Linux/Readme.en-us.md voor de platformadaptercontracten, het eigenaarschap van de Direct File-types, de exacte regressiegrenzen, de Windows smoke runner en de resterende acceptatiefasen
Het headless document accepteert tegenwoordig het begrensde Standard AES-256 R5/R6-profiel dat THPDFHeadlessAES256Security beschrijft, inclusief owner/user-rechten, gecomprimeerde objecten en versleutelde incrementele formulier-saves
Zie native Cairo rendering en atomische native handtekeningpublicatie voor runtime-afhankelijkheden, ondersteunde inhoud, budgetten, rechten, bronidentiteit en uitvoercontracten
Unicode-formulier-appearance-generatie behoudt originele revisies en AES-security, rendert in het geheugen en na herladen en wijst niet-ondersteunde veld- of shaping-policies expliciet af