Linux 可攜式核心
可攜式核心以 Free Pascal 把既有的物件模型、簡單物件剖析器、Direct File I/O 輔助函式、內容串流直譯器、PDF 值輔助函式、xref 與 trailer 寫入器、Flate 後端以及 AES 基礎元件,編譯成原生 Linux 程式
HPDFPlatform 提供真正的 POSIX 映射檔案與定位讀取、暫存檔建立、工作執行緒同步,以及作業系統隨機位元組;Windows 轉接層保留既有的原生檔案與映射行為
驗收範圍
Tests/Linux/Run-PortableCoreTests.sh 會建置原生 x86_64 ELF 主控台執行檔、清除桌面顯示變數、檢查 GUI 程式庫相依性,然後在逾時限制內執行八組迴歸
檢查項目涵蓋剖析器跳脫與間接參照、不變的 PDF 值與串流篩選器、映射視窗與超過 4 GiB 的稀疏檔案位移、壓縮的非同步溢寫串流、Flate 與 AES 已知答案、MD5 檔案雜湊、作業系統隨機 IV、合法的傳統 xref 序列化、Direct File 頁數與物件查詢,以及內容串流文字與字形位置
產生的單頁測試檔由既有寫入器寫出,再透過共用的 Direct File 輔助函式獨立讀回;內容檢查同時使用既有的 Latin-1 恒等解析器,以及處理編碼差異與明確寬度的頁面字型解析器
字型資料與文字解碼
HPDFFontData 把既有的字形名稱、編碼與 sfnt CMap 解碼從 GDI 分離出來;Windows 內嵌字形轉譯與既有的 HPDFTextExtraction 解碼器使用同一份實作
THPDFTrueTypeData 針對單一字型的 sfnt 影像,提供支援的 CMap 查詢、反向的字形對 Unicode 映射,以及 hmtx 水平前進量
HPDFBaseFontMetrics 保留 Windows GDI 提供者,在 Linux 上則以 Fontconfig 搭配已安裝的 TrueType 字型,處理省略明確寬度的標準字型;替代結果取決於已安裝的字型與 Fontconfig 規則
平台與字型輔助函式合約
THPDFPlatformHandle 是帶正負號的原生寬度控制代碼,HPDFInvalidFileHandle 為 -1;HPDFOpenReadOnlyFile 與 HPDFCloseFile 管理讀取控制代碼,HPDFFileSize 與 HPDFReadFileAt 使用 Int64 位置,呼叫端必須處理讀取不足(short read)的情況
HPDFMappingGranularity 提供所需的位移對齊;HPDFCreateReadOnlyMapping 失敗時傳回零,HPDFMapReadOnly 映射要求的範圍,HPDFUnmapReadOnly / HPDFCloseMapping 釋放視圖與映射
HPDFCreateTemporaryFile 以獨佔方式建立檔案,路徑與清理都由呼叫端負責;HPDFInitializeLock / HPDFDeleteLock 管理原生重要區段
THPDFPlatformEvent 是 TEvent 的別名;HPDFCreateEvent、HPDFWaitEvent、HPDFSignalEvent 與 HPDFResetEvent 負責同步,工作者停止後由呼叫端釋放事件
HPDFSecureRandomBytes 從作業系統填滿要求的緩衝區,否則拋出例外
HPDFGlyphNameToUnicode、HPDFUnicodeToGlyphName、HPDFStdEncGlyphName、HPDFMacExpertEncGlyphName 與 HPDFBaseEncToUnicode 保留既有的名稱與編碼行為;HPDFBaseFontFamilyToken 移除子集與樣式字尾,HPDFIsStandardTextFont 則辨識 Helvetica、Times 與 Courier 的別名
HPDFMeasureBaseFontWidths 使用 Windows GDI 提供者或 Linux Fontconfig 與共用的 sfnt 水平度量;THPDFTrueTypeData 與 THPDFUnicodeByGID 提供共用的字型資料 API
共用的 Direct File 型別
HPDFDirectFileTypes 擁有既有的 THPDFKeyType、THPDFProtection、THPDFProtectOptions、THPDFDirectXrefEntry、THPDFDirectObjectSource 與 THPDFDirectFileState 定義
這層分離讓 HPDFDirectFileIO 不必匯入元件與 GUI 實作,就能使用相同的記錄與權限型別
HPDFDoc 以原始名稱保留別名與 enum 值常數;enum 序數與記錄版面配置都不變
Linux 程式初始化
原生 Free Pascal 程式要在使用工作執行緒之前,把 cthreads 放在 uses 清單首位;可攜式核心測試還會載入 cwstring 以提供 Unicode 轉換管理器
請使用 FPC 3.3.1 或更新版本,搭配其相符的 FCL 與 paszlib 單元、C 執行階段、已安裝 TrueType 字型的 Fontconfig,以及 file、ldd 與 timeout 工具;FPC_EXE 與 HPDF_LINUX_OUTPUT 用來選擇編譯器與隔離團隊的輸出目錄
每個平台支援的最低 FPC 版本都是 3.3.1;新驗收記錄實際的編譯器建置與來源身分,較舊編譯器的結果保留為歷史證據
原生文件整合
原生 headless 文件 API載入 classic、xref-stream、hybrid 與壓縮物件圖,解析頁面與 Form 資源,擷取 Unicode 文字,編輯受支援的 AcroForm 欄位,匯入頁面並以保留來源位元組的方式發佈增量修訂版
版本化 Linux C ABI為這些原生操作暴露真實的 ELF 文件控制代碼與同步 C callback;THotPDF 仍是分開的 Windows 元件整合
原生文件工作流程提供 HTML 匯入、可見與不可見的頁面文字、真實的 Tesseract OCR 和點陣 PDF/A-4 轉換;頁面匯入與經驗證的文字/向量歸檔轉換保留原始資源,明確的歸檔字型修復加入設有上限的替代字型內嵌
平台轉接層合約、Direct File 型別擁有權、確切的回歸邊界、Windows smoke 執行器以及剩餘的驗收階段,見 Tests/Linux/Readme.en-us.md
headless 文件如今接受 THPDFHeadlessAES256Security 所描述、設有上限的 Standard AES-256 R5/R6 設定
執行期相依、受支援的內容與執行期限制見原生 Cairo 渲染與原子式原生簽章發佈
Unicode 表單外觀支援多行文字、comb 儲存格、旋轉、密碼遮罩與選用的 HarfBuzz/FriBidi 整形
原生簽章工作流程包含 PEM/PFX 身分、新簽章欄位、可見外觀與認證約束
剩餘能力邊界
headless 文件安全性設定支援 Standard AES-256 R5/R6;其他 security handler 留在該設定之外,不會退化成受支援卻默默失敗的路徑
更廣的註解渲染、一般 rich text CSS/排版、完整的 FDF action 與資源圖,以及一般動態 XFA 相容性仍是獨立工作