Portable core για Linux
Το portable core μεταγλωττίζει το υπάρχον object model, τον parser απλών objects, τα helpers Direct File I/O, τον interpreter content-stream, τα helpers τιμών PDF, τον writer xref και trailer, το Flate backend και τις primitives AES σε native προγράμματα Linux με Free Pascal
Η HPDFPlatform παρέχει πραγματικά POSIX mapped files και positional reads, δημιουργία προσωρινών αρχείων, συγχρονισμό workers και τυχαία bytes του λειτουργικού συστήματος· ο Windows adapter διατηρεί την υπάρχουσα συμπεριφορά native αρχείων και mapping
Εύρος αποδοχής
Το Tests/Linux/Run-PortableCoreTests.sh χτίζει ένα native εκτελέσιμο console x86_64 ELF, καθαρίζει τις μεταβλητές εμφάνισης desktop, ελέγχει τις εξαρτήσεις GUI βιβλιοθηκών και εκτελεί οκτώ ομάδες regressions με timeout
Οι έλεγχοι καλύπτουν escapes parser και indirect references, αναλλοίωτες τιμές PDF και stream filters, mapped windows και offsets sparse αρχείων πάνω από 4 GiB, συμπιεσμένα asynchronous spill streams, known answers Flate και AES, MD5 hashes αρχείων, τυχαία IV του λειτουργικού συστήματος, έγκυρη serialization κλασικού xref, πλήθος σελίδων και αναζήτηση objects μέσω Direct File, και θέσεις κειμένου και glyphs σε content-stream
Το παραγόμενο fixture μίας σελίδας γράφεται από τον υπάρχοντα writer και διαβάζεται ανεξάρτητα μέσω των κοινών helpers Direct File· οι έλεγχοι περιεχομένου χρησιμοποιούν τόσο τον υπάρχοντα resolver ταυτότητας Latin-1 όσο και τον resolver γραμματοσειράς σελίδας με διαφορές κωδικοποίησης και ρητά widths
Δεδομένα γραμματοσειρών και decoding κειμένου
Η HPDFFontData διαχωρίζει το υπάρχον decoding glyph-names, κωδικοποιήσεων και sfnt CMap από το GDI· το rendering ενσωματωμένων glyphs στα Windows και ο υπάρχων decoder HPDFTextExtraction χρησιμοποιούν την ίδια υλοποίηση
Η THPDFTrueTypeData εκθέτει υποστηριζόμενη αναζήτηση CMap, αντίστροφη αντιστοίχιση glyph-to-Unicode και οριζόντια advances hmtx για μια sfnt εικόνα μονού γραμματοσειράς
Η HPDFBaseFontMetrics διατηρεί τον πάροχο Windows GDI και χρησιμοποιεί Fontconfig με εγκατεστημένες TrueType γραμματοσειρές σε Linux για τυπικές γραμματοσειρές που παραλείπουν ρητά widths· η υποκατάσταση εξαρτάται από τις εγκατεστημένες γραμματοσειρές και τους κανόνες Fontconfig
Συμβόλαια helpers πλατφόρμας και γραμματοσειρών
Η THPDFPlatformHandle είναι signed handle σε native πλάτος και η HPDFInvalidFileHandle είναι -1· τα HPDFOpenReadOnlyFile και HPDFCloseFile διαχειρίζονται read handles, ενώ τα HPDFFileSize και HPDFReadFileAt χρησιμοποιούν θέσεις Int64 και οι callers πρέπει να χειρίζονται short reads
Η HPDFMappingGranularity παρέχει την απαιτούμενη ευθυγράμμιση offsets· η HPDFCreateReadOnlyMapping επιστρέφει μηδέν σε αποτυχία, η HPDFMapReadOnly αντιστοιχίζει το ζητούμενο εύρος, και τα HPDFUnmapReadOnly / HPDFCloseMapping αποδεσμεύουν το view και το mapping
Η HPDFCreateTemporaryFile δημιουργεί αποκλειστικά ένα αρχείο του οποίου η διαδρομή και ο καθαρισμός ανήκουν στον caller· τα HPDFInitializeLock / HPDFDeleteLock διαχειρίζονται native critical sections
Η THPDFPlatformEvent είναι alias του TEvent· τα HPDFCreateEvent, HPDFWaitEvent, HPDFSignalEvent και HPDFResetEvent διαχειρίζονται τον συγχρονισμό, και ο caller απελευθερώνει τα events αφού σταματήσει ο worker
Η HPDFSecureRandomBytes γεμίζει το ζητούμενο buffer από το λειτουργικό σύστημα ή εγείρει εξαίρεση
Τα HPDFGlyphNameToUnicode, HPDFUnicodeToGlyphName, HPDFStdEncGlyphName, HPDFMacExpertEncGlyphName και HPDFBaseEncToUnicode διατηρούν την υπάρχουσα συμπεριφορά names και κωδικοποιήσεων· το HPDFBaseFontFamilyToken αφαιρεί επιθήματα subset και στυλ, ενώ το HPDFIsStandardTextFont αναγνωρίζει aliases των Helvetica, Times και Courier
Η HPDFMeasureBaseFontWidths χρησιμοποιεί τον πάροχο Windows GDI ή Fontconfig σε Linux και κοινές οριζόντιες μετρικές sfnt· οι THPDFTrueTypeData και THPDFUnicodeByGID παρέχουν το κοινό API δεδομένων γραμματοσειρών
Κοινοί τύποι Direct File
Η HPDFDirectFileTypes κατέχει τους υπάρχοντες ορισμούς THPDFKeyType, THPDFProtection, THPDFProtectOptions, THPDFDirectXrefEntry, THPDFDirectObjectSource και THPDFDirectFileState
Αυτός ο διαχωρισμός επιτρέπει στην HPDFDirectFileIO να χρησιμοποιεί τους ίδιους records και τύπους δικαιωμάτων χωρίς να εισάγει την υλοποίηση component και GUI
Η HPDFDoc διατηρεί aliases και σταθερές τιμών enum υπό τα αρχικά ονόματα· τα ordinals των enum και οι διατάξεις records παραμένουν αμετάβλητα
Αρχικοποίηση προγραμμάτων Linux
Τα native προγράμματα Free Pascal πρέπει να τοποθετούν το cthreads πρώτο στη λίστα uses πριν χρησιμοποιήσουν worker threads· το test του portable core φορτώνει επίσης cwstring για να παρέχει τον διαχειριστή μετατροπών Unicode
Χρησιμοποιήστε FPC 3.2.2 ή νεότερο με τις μονάδες FCL και paszlib, ένα C runtime, Fontconfig με εγκατεστημένες TrueType γραμματοσειρές, και τα εργαλεία file, ldd και timeout· τα FPC_EXE και HPDF_LINUX_OUTPUT επιλέγουν τον compiler και τον απομονωμένο κατάλογο εξόδου
Υπόλοιπη μετανάστευση
Αυτό το στάδιο δεν εκθέτει το THotPDF σε Linux: η αυθαίρετη φόρτωση και αποθήκευση εγγράφων, η πλήρης επίλυση page-resources, η επεξεργασία AcroForm και appearances, οι υπογραφές, το rendering, το OCR και το C ABI απαιτούν ακόμη περαιτέρω διαχωρισμό πλατφόρμας και αποδοχή end-to-end
Δείτε το Tests/Linux/Readme.en-us.md για τα συμβόλαια του platform adapter, την ιδιοκτησία των τύπων Direct File, τα ακριβή όρια regression, τον Windows smoke runner και τα υπόλοιπα στάδια αποδοχής