이식 가능한 XFA 런타임

네이티브 TXFAWidgetRuntime 데이터·레이아웃·이벤트 모델은 Windows에서 Delphi 또는 FPC로, Linux x86-64에서 FPC로 실행됩니다

Linux 코어 실행에는 LCL, 데스크톱 세션, Windows 호환 레이어가 필요 없습니다. Windows FPC 빌드는 기존 Lazarus UTF-8 RTL 초기화를 유지합니다

네이티브 JavaScript 브리지

bash tools/Build-HotPDFQuickJSLinux.sh /var/tmp/hotpdf-native
export HOTPDF_QUICKJS_DLL=/var/tmp/hotpdf-native/libhpdfquickjs.so
export HOTPDF_SUPPRESS_AUTO_LAUNCH=1

Linux 브리지는 번들 QuickJS 소스를 GCC 호환 컴파일로 빌드하고 Windows DLL과 같은 버전화 HPDFQJS ABI를 씁니다

QuickJSDLLPath와 HOTPDF_QUICKJS_DLL은 Linux에서 명시적 공유 라이브러리 경로를 받습니다. 기존 API 이름은 소스 호환성을 위해 유지됩니다

기본 탐색은 실행 파일 옆의 libhpdfquickjs.so와 실행 파일 조상 디렉터리의 Lib/thirdparty/QuickJS/bin/Linux64를 검사합니다

세션마다 자신의 네이티브 엔진·컨텍스트·콜백이 해제될 때까지 로드된 모듈에 대한 참조를 소유합니다. 세션은 독립적인 스크립트 상태와 저널을 유지합니다

네이티브 단조 clock이 기존 이벤트·XML·레이아웃 예산을 강제합니다. 결정론적 epoch 값, 난수 응답, 외부 전송 응답은 계속 기록되고 트랜잭션으로 리플레이됩니다

Linux 로캘

네이티브 Linux 로캘 백엔드는 시스템 ICU 달력 이름, 소수·그룹 구분 기호, 통화 기호·코드, AM/PM 마커, 숫자·날짜·시간 패턴을 읽습니다

이름 있는 로캘은 완전히 파싱된 BCP47 식별자와 알려진 ICU 언어 데이터를 씁니다. 밑줄 구분자는 canonical 형태로 고쳐지고, 지원하지 않는 언어나 잘못된 식별자는 False를 반환합니다

빈 이름은 ICU의 구성된 기본 로캘을 선택합니다. 문서 localeSet 정의와 명시적 애플리케이션 로캘 프로바이더는 기존 우선순위를 유지합니다

libicuuc와 libicui18n 둘 다 필요합니다. 로더는 개발 심볼릭 링크가 없는 버전화 런타임 라이브러리를 포함해 일치하는 ICU 익스포트 버전을 찾습니다

ICU와 Windows는 설치된 로캘 데이터에 따라 다른 지역 패턴과 공백을 줄 수 있습니다. 명시적 문서 로캘 정의로 결정론적인 애플리케이션 포맷을 고를 수 있습니다

영속화와 PDF 소비자

SaveToBytes는 Data DOM 임포트, 인스턴스별 값, 네임스페이스 매핑, 주석, 처리 명령을 포함한 네이티브 XDP를 영속화하며 두 플랫폼에서 같은 롤백 동작을 보입니다

Linux 저장 XDP 소비자 픽스처는 TXFAWidgetRuntime을 재로드하고 THPDFHeadlessDocument 필드 세터와 네이티브 appearance 생성으로 실제 값을 적용합니다

그 소비자는 독립적으로 준비된 PDF 필드 템플릿을 씁니다. 자동 Linux XFA→PDF 필드 생성과 완전한 대화형 렌더링은 별도 통합 작업입니다