Linux 포터블 코어
포터블 코어는 기존 객체 모델, simple-object parser, Direct File I/O 헬퍼, content-stream 인터프리터, PDF 값 헬퍼, xref·trailer writer, Flate backend, AES 프리미티브를 Free Pascal로 native Linux 프로그램으로 컴파일합니다
HPDFPlatform은 실제 POSIX 매핑 파일과 positional read, 임시 파일 생성, 워커 동기화, OS 난수 바이트를 제공합니다. Windows 어댑터는 기존 native 파일·매핑 동작을 그대로 유지합니다
검수 범위
Tests/Linux/Run-PortableCoreTests.sh는 native x86_64 ELF 콘솔 실행 파일을 빌드하고, 데스크톱 디스플레이 변수를 지우고, GUI 라이브러리 의존성을 확인한 뒤 timeout과 함께 8개 그룹의 회귀를 실행합니다
검사는 parser escape와 indirect reference, 불변 PDF 값과 stream filter, 매핑 윈도우와 4 GiB를 넘는 스파스 파일 오프셋, 압축 비동기 spill 스트림, Flate·AES known answer, MD5 파일 해시, OS 난수 IV, 올바른 classic xref 직렬화, Direct File 페이지 수와 객체 조회, content-stream 텍스트와 glyph 위치를 다룹니다
생성된 한 페이지 픽스처는 기존 writer로 쓰고 공유 Direct File 헬퍼로 독립적으로 읽습니다. 콘텐츠 검사는 기존 Latin-1 identity resolver와, 인코딩 차이와 명시적 width를 가진 페이지 폰트 resolver를 모두 씁니다
폰트 데이터와 텍스트 디코딩
HPDFFontData는 기존 glyph-name, 인코딩, sfnt CMap 디코딩을 GDI에서 분리합니다. Windows embedded glyph 렌더링과 기존 HPDFTextExtraction decoder는 같은 구현을 씁니다
THPDFTrueTypeData는 단일 폰트 sfnt 이미지에 대해 지원되는 CMap lookup, 역방향 glyph-to-Unicode 매핑, hmtx horizontal advance를 노출합니다
HPDFBaseFontMetrics는 정규 표준 폰트 어드밴스를 열두 개 정확한 Helvetica/Times/Courier 이름과 지원되는 디코딩 문자에 쓰고, 다른 폰트에는 Windows GDI와 Linux Fontconfig 폴백을 유지하며, 명시적 PDF 폭을 보존합니다
플랫폼·폰트 헬퍼 계약
THPDFPlatformHandle은 signed native-width 핸들이고 HPDFInvalidFileHandle은 -1입니다. HPDFOpenReadOnlyFile과 HPDFCloseFile은 read 핸들을 관리하고, HPDFFileSize와 HPDFReadFileAt은 Int64 위치를 쓰며 short read는 호출자가 처리해야 합니다
HPDFMappingGranularity는 요구되는 offset 정렬을 알려 줍니다. HPDFCreateReadOnlyMapping은 실패 시 0을 반환하고, HPDFMapReadOnly는 요청한 범위를 매핑하며, HPDFUnmapReadOnly / HPDFCloseMapping은 view와 매핑을 해제합니다
HPDFCreateTemporaryFile은 배타적으로 파일을 만들며 경로와 정리는 호출자 몫입니다. HPDFInitializeLock / HPDFDeleteLock은 native critical section을 관리합니다
THPDFPlatformEvent는 TEvent의 별칭입니다. HPDFCreateEvent, HPDFWaitEvent, HPDFSignalEvent, HPDFResetEvent가 동기화를 관리하고, 워커가 멈춘 뒤 호출자가 event를 해제합니다
HPDFSecureRandomBytes는 OS에서 요청한 버퍼를 채우거나 예외를 던집니다
HPDFGlyphNameToUnicode, HPDFUnicodeToGlyphName, HPDFStdEncGlyphName, HPDFMacExpertEncGlyphName, HPDFBaseEncToUnicode는 기존 이름·인코딩 동작을 유지합니다. HPDFBaseFontFamilyToken은 subset·스타일 접미사를 떼고, HPDFIsStandardTextFont는 Helvetica·Times·Courier 별칭을 인식합니다
HPDFMeasureBaseFontWidths는 Windows GDI provider나 Linux Fontconfig와 공유 sfnt horizontal metrics를 씁니다. THPDFTrueTypeData와 THPDFUnicodeByGID가 공유 폰트 데이터 API를 제공합니다
공유 Direct File 타입
HPDFDirectFileTypes는 기존 THPDFKeyType, THPDFProtection, THPDFProtectOptions, THPDFDirectXrefEntry, THPDFDirectObjectSource, THPDFDirectFileState 정의를 소유합니다
이 분리 덕분에 HPDFDirectFileIO는 컴포넌트와 GUI 구현을 가져오지 않고도 같은 레코드와 permission 타입을 쓸 수 있습니다
HPDFDoc는 원래 이름 그대로 별칭과 enum 값 상수를 유지합니다. enum ordinal과 레코드 레이아웃은 바뀌지 않습니다
Linux 프로그램 초기화
native Free Pascal 프로그램은 워커 스레드를 쓰기 전에 uses 목록 맨 앞에 cthreads를 둬야 합니다. 포터블 코어 테스트는 Unicode 변환 매니저를 공급하려고 cwstring도 로드합니다
일치하는 FCL과 paszlib 유닛, C 런타임, 설치된 TrueType 폰트를 갖춘 Fontconfig, file, ldd, timeout 도구와 함께 FPC 3.3.1 이상을 쓰세요. FPC_EXE와 HPDF_LINUX_OUTPUT가 컴파일러와 격리된 출력 디렉터리를 고릅니다
모든 플랫폼에서 최소 지원 FPC 버전은 3.3.1입니다. 새 acceptance는 실제 컴파일러 빌드와 소스 identity를 기록하고, 오래된 컴파일러 결과는 역사적 증거로 남습니다
네이티브 문서 통합
네이티브 헤드리스 문서 API는 classic, xref-stream, hybrid, 압축 객체 그래프를 로드하고 페이지와 Form 리소스를 해석하며, Unicode 텍스트를 추출하고, 지원되는 AcroForm 필드를 편집하고, 페이지를 가져오고, 원본 소스 바이트를 보존한 채 증분 리비전을 게시합니다
버전 지정 Linux C ABI는 이 네이티브 연산의 실제 ELF 문서 핸들과 동기 C 콜백을 노출합니다. THotPDF는 별개의 Windows 컴포넌트 통합으로 남습니다
네이티브 문서 워크플로는 HTML 가져오기, 보이거나 숨긴 페이지 텍스트, 실제 Tesseract OCR, 래스터 PDF/A-4 변환을 제공합니다. 페이지 가져오기와 검증된 텍스트/벡터 아카이브 변환은 원본 리소스를 보존하고, 명시적 아카이브 폰트 복구는 유계 대체 임베딩을 더합니다
플랫폼 어댑터 계약, Direct File 타입 소유권, 회귀 경계, 네이티브 워크플로와 배포 증거 링크는 Tests/Linux/Readme.en-us.md를 참고하세요
헤드리스 문서는 이제 THPDFHeadlessAES256Security가 기술하는 유계 Standard AES-256 R5/R6 프로파일을 받습니다. owner/user 권한, 압축 객체, 암호화된 증분 폼 저장을 포함합니다
런타임 의존성, 지원 콘텐츠, 예산, 권한, 소스 identity, 출력 계약은 네이티브 Cairo 렌더링과 원자적 네이티브 서명 게시를 참고하세요
Unicode 폼 appearance는 여러 줄 텍스트, comb 셀, 회전, 암호 마스크, 선택적 HarfBuzz/FriBidi 셰이핑을 지원합니다. choice와 button 필드, 공급 폰트 패밀리, 타입화 리치 텍스트는 별개의 네이티브 API가 암호화 리비전을 보존한 채 처리합니다
네이티브 서명 워크플로는 PEM/PFX 아이덴티티, 새 서명 필드, 보이는 appearance, certification을 포함합니다. 명시적 timestamp 전송, 신뢰, 검증된 폐기 증거는 문서화된 암호학·게시 요구 사항을 유지합니다
남은 기능 경계
헤드리스 문서 보안 프로파일은 Standard AES-256 R5/R6를 지원합니다. 다른 보안 핸들러는 portable-core 어댑터를 통해 지원되는 형태가 아니라 그 프로파일 밖에 있습니다
더 넓은 주석 렌더링, 일반 리치 텍스트 CSS/레이아웃, 완전한 FDF action과 리소스 그래프, 일반 동적 XFA 호환성은 기능 완료 계획에서 활성입니다. 위에서 구현된 네이티브 통합은 그 남은 작업과 독립적으로 사용할 수 있습니다