Linux 可移植核心
可移植核心用 Free Pascal 把既有的对象模型、简单对象解析器、Direct File I/O 辅助单元、content-stream 解释器、PDF 值辅助函数、xref 与 trailer 写出器、Flate 后端和 AES 原语编译进原生 Linux 程序
HPDFPlatform 提供真正的 POSIX 映射文件与定位读取、临时文件创建、worker 同步和操作系统随机字节;Windows 适配器保持既有的原生文件与映射行为
验收范围
Tests/Linux/Run-PortableCoreTests.sh 构建原生 x86_64 ELF 控制台可执行文件,清除桌面显示变量,检查 GUI 库依赖,然后带超时地运行八组回归
这些检查覆盖解析器转义与间接引用、不变的 PDF 值与流滤波器、4 GiB 以上的映射窗口与稀疏文件偏移、压缩的异步溢出流、Flate 与 AES 已知答案、MD5 文件哈希、操作系统随机 IV、合法的经典 xref 序列化、Direct File 页数与对象查找,以及 content-stream 文本与字形位置
生成的单页夹具由既有写入器写出,再通过共享的 Direct File 辅助单元独立读回;内容检查同时使用既有的 Latin-1 恒等解析器和带编码差异、显式宽度的页面字体解析器
字体数据与文本解码
HPDFFontData 把既有的字形名、编码和 sfnt CMap 解码从 GDI 中分离出来;Windows 的嵌入字形渲染和既有的 HPDFTextExtraction 解码器使用同一实现
THPDFTrueTypeData 为单字体 sfnt 镜像提供受支持的 CMap 查找、反向字形到 Unicode 映射以及 hmtx 水平 advance
HPDFBaseFontMetrics 保留 Windows GDI 提供者,在 Linux 上针对省略显式宽度的标准字体改用 Fontconfig 与已安装的 TrueType 字体;替换结果取决于已安装的字体和 Fontconfig 规则
平台与字体辅助契约
THPDFPlatformHandle 是带符号的原生宽度句柄,HPDFInvalidFileHandle 为 -1;HPDFOpenReadOnlyFile 和 HPDFCloseFile 管理读取句柄,HPDFFileSize 和 HPDFReadFileAt 使用 Int64 位置,调用方必须处理短读
HPDFMappingGranularity 给出所需的偏移对齐;HPDFCreateReadOnlyMapping 失败时返回零,HPDFMapReadOnly 映射请求的范围,HPDFUnmapReadOnly / HPDFCloseMapping 释放视图和映射
HPDFCreateTemporaryFile 以独占方式创建文件,路径和清理都归调用方负责;HPDFInitializeLock / HPDFDeleteLock 管理原生临界区
THPDFPlatformEvent 是 TEvent 的别名;HPDFCreateEvent、HPDFWaitEvent、HPDFSignalEvent 和 HPDFResetEvent 管理同步,worker 停止后由调用方释放事件对象
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 按原名保留别名和枚举值常量;枚举序数与记录布局不变
Linux 程序初始化
原生 Free Pascal 程序在使用 worker 线程之前,必须把 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 回调;THotPDF 仍是单独的 Windows 组件集成
原生文档工作流提供 HTML 导入、可见与不可见页面文本、真实的 Tesseract OCR 和 raster 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 留在该配置之外,不会退化成受支持但静默失败的路径
更广泛的注释渲染、通用富文本 CSS/排版、完整的 FDF action 与资源图以及通用动态 XFA 兼容性仍是独立工作