타입화된 리치 텍스트 run 간격 JSON
Windows 파일 잡과 버전 지정 콜백 연산, 그리고 네이티브 Linux 버전 지정 콜백 연산은 forms.fill richTextRuns 항목의 간격을 원본 타입화 run으로 바인딩합니다
{"type":"forms.fill","fields":[{"name":"Input","richTextRuns":[
{"text":"A spaced line","fontSize":12,
"letterSpacingKind":"em","letterSpacing":0.125,
"wordSpacingKind":"points","wordSpacing":-0.5}
]}]}
letterSpacingKind와 wordSpacingKind는 legacy, normal, points, em을 받습니다. 종류를 생략하고 숫자 값이 있으면 points이고, 종류와 값을 모두 생략하면 legacy입니다
points와 em은 유한한 숫자 값이 필요합니다. legacy와 normal은 값 부재나 0만 허용합니다. 작성 값과 계산된 포인트 길이의 절대 최댓값은 1000000입니다
Windows JSON 파서는 원본 타입화 run이 레이아웃에 도달하기 전에 유한한 10진 값을 가장 가까운 Double로 유지합니다. 과학적 표기법은 기존 JSON 문법과 숫자 범위를 따르고, 기존 요청 바이트 한도가 긴 숫자 토큰도 제한합니다
알 수 없는 모드, 잘못된 JSON 타입, 넘치는 계산 값, 텍스트가 아닌 필드의 리치 run은 폰트 로딩이나 발행 전에 실패합니다. 기존 집계 폰트, 객체, 입력, 출력 예산과 취소 검사는 계속 활성입니다
스칼라와 리치 혼합 필드는 기존 트랜잭션 후보를 씁니다. 현재 로드된 그래프, 인증된 AES 리비전 키, 서명 제약, 2단계 PDF/결과 콜백 동작을 보존합니다
이 제한 프로파일 안에서 명시적 normal과 명시적 0은 같은 포인트 간격과 정규 RV로 계산되므로, 실제로 동등한 읽기 전용 갱신은 의미적 no-op입니다. 버전 지정 JSON 연산은 원본 소스 바이트를 유지하고, 생략된 레거시 모드는 전역 appearance 옵션을 상속하므로 계속 구별됩니다
읽기 전용 필드는 실제 의미적 no-op를 받아들이고 변경된 간격은 거부합니다. 성공한 JSON no-op는 정확한 PDF 바이트를 유지하고, 실패한 출력이나 결과 콜백은 현재 컨텍스트를 바꾸지 않습니다
Capability 메타데이터는 기존 C ABI 구조나 심볼을 바꾸지 않고 typedRichFill.spacing를 노출합니다. 간격은 실제 셰이핑된 글리프 좌표와 RV 값에 적용되며, 네이티브 run 간격의 제한 규칙을 따릅니다