Prenosivo jezgro za Linux
Prenosivo jezgro kompajlira postojeći model objekata, parser jednostavnih objekata, Direct File I/O helper-e, interpretator tokova sadržaja, helper-e za PDF vrednosti, pisac xref i trailer struktura, Flate backend i AES primitiv u nativne Linux programe pomoću Free Pascala
HPDFPlatform obezbeđuje prave POSIX mapirane datoteke i pozicionirana čitanja, kreiranje privremenih datoteka, sinhronizaciju radnih niti i slučajne bajtove operativnog sistema; Windows adapter zadržava postojeće nativno ponašanje datoteka i mapiranja
Obuhvat prihvatanja
Tests/Linux/Run-PortableCoreTests.sh gradi nativni x86_64 ELF konzolni izvršni fajl, briše desktop promenljive prikaza, proverava zavisnosti od GUI biblioteka i pokreće osam grupa regresija sa timeout-om
Provere pokrivaju escape-ove parsera i indirektne reference, invarijantne PDF vrednosti i filtere tokova, mapirane prozore i ofsete sparse fajlova iznad 4 GiB, komprimovane asinhrone spill tokove, poznate ulazno-izlazne vrednosti za Flate i AES, MD5 hash-ove datoteka, slučajne IV-ove operativnog sistema, ispravnu klasičnu xref serializaciju, brojanje stranica i pretragu objekata kroz Direct File oraz tekst i pozicije glifova u toku sadržaja
Generisani fixture sa jednom stranicom zapisuje postojeći writer i nezavisno se čita kroz deljene Direct File helper-e; provere sadržaja koriste i postojeći Latin-1 identity resolver i razrešivač fontova stranice, sa razlikama u kodiranju i eksplicitnim širinama
Podaci fontova i dekodovanje teksta
HPDFFontData odvaja postojeće dekodovanje imena glifova, kodiranja i sfnt CMap mapa od GDI-ja; Windows rendering ugrađenih glifova i postojeći HPDFTextExtraction dekoder koriste istu implementaciju
THPDFTrueTypeData izlaže podržanu CMap pretragu, obrnuto glyph-to-Unicode mapiranje i hmtx horizontalna napredovanja za sfnt sliku sa jednim fontom
HPDFBaseFontMetrics zadržava Windows GDI provajder, a na Linuxu koristi Fontconfig sa instaliranim TrueType fontovima za standardne fontove bez eksplicitnih širina; zamena zavisi od instaliranih fontova i Fontconfig pravila
Ugovori platforme i helper-a za fontove
THPDFPlatformHandle je potpisani handle nativne širine, a HPDFInvalidFileHandle je -1; HPDFOpenReadOnlyFile i HPDFCloseFile upravljaju handle-ovima za čitanje, dok HPDFFileSize i HPDFReadFileAt koriste Int64 pozicije i pozivaoci moraju da opsluže kraća čitanja
HPDFMappingGranularity dostavlja zahtevano poravnanje ofseta; HPDFCreateReadOnlyMapping vraća nulu pri neuspehu, HPDFMapReadOnly mapira zahtevani raspon, a HPDFUnmapReadOnly / HPDFCloseMapping oslobađaju prikaz i mapiranje
HPDFCreateTemporaryFile ekskluzivno kreira datoteku čija putanja i čišćenje pripadaju pozivaocu; HPDFInitializeLock / HPDFDeleteLock upravljaju nativnim kritičnim sekcijama
THPDFPlatformEvent je alias za TEvent; HPDFCreateEvent, HPDFWaitEvent, HPDFSignalEvent i HPDFResetEvent upravljaju sinhronizacijom, a pozivalac oslobađa događaje nakon što se radna nit zaustavi
HPDFSecureRandomBytes puni zahtevani bafer iz operativnog sistema ili podiže izuzetak
HPDFGlyphNameToUnicode, HPDFUnicodeToGlyphName, HPDFStdEncGlyphName, HPDFMacExpertEncGlyphName i HPDFBaseEncToUnicode zadržavaju postojeće ponašanje imena i kodiranja; HPDFBaseFontFamilyToken uklanja sufikse podskupa i stila, a HPDFIsStandardTextFont prepoznaje Helvetica, Times i Courier alias-e
HPDFMeasureBaseFontWidths koristi Windows GDI provajder ili Linux Fontconfig i deljene sfnt horizontalne metrike; THPDFTrueTypeData i THPDFUnicodeByGID obezbeđuju deljeni API za podatke fontova
Deljeni Direct File tipovi
HPDFDirectFileTypes poseduje postojeće definicije THPDFKeyType, THPDFProtection, THPDFProtectOptions, THPDFDirectXrefEntry, THPDFDirectObjectSource i THPDFDirectFileState
Ova razdvojenost omogućava HPDFDirectFileIO da koristi iste record-e i tipove dozvola bez uvoza komponente i GUI implementacije
HPDFDoc zadržava alias-e i konstante enum vrednosti pod originalnim imenima; enum ordinali i rasporedi record-ova ostaju nepromenjeni
Inicijalizacija Linux programa
Nativni Free Pascal programi moraju da stave cthreads na prvo mesto u uses listi pre upotrebe radnih niti; test prenosivog jezgra takođe učitava cwstring da obezbedi menadžer Unicode konverzija
Koristite FPC 3.2.2 ili noviji sa njegovim FCL i paszlib jedinicama, C runtime, Fontconfig sa instaliranim TrueType fontovima i alate file, ldd i timeout; FPC_EXE i HPDF_LINUX_OUTPUT biraju kompajler i izolovani izlazni direktorijum
Preostala migracija
Ova faza ne izlaže THotPDF na Linuxu: proizvoljno učitavanje i čuvanje dokumenata, kompletno razrešavanje resursa stranica, AcroForm izmene i izgledi, potpisi, rendering, OCR i C ABI još zahtevaju dalju razdvojenost platformi i end-to-end prihvatanje
Pogledajte Tests/Linux/Readme.en-us.md za ugovore platformskih adaptera, vlasništvo nad Direct File tipovima, tačne granice regresije, Windows smoke runner i preostale faze prihvatanja