THotPDF.SubsetLoadedFonts Method
포함된 TrueType, OpenType CFF, raw CFF, Type 1 프로그램을 다시 써서 로드된 문서 콘텐츠에서 도달하는 글리프만 남깁니다
선언
function SubsetLoadedFonts(
const Options: THPDFLoadedFontSubsetOptions;
out AInfo: THPDFLoadedFontSubsetInfo): Integer; overload;
function SubsetLoadedFonts(
out AInfo: THPDFLoadedFontSubsetInfo): Integer; overload;
도달 범위
페이지 콘텐츠는 text-showing operator와 리소스 로컬 font 선택을 포함해 항상 스캔합니다
IncludeFormXObjects는 상속된 리소스와 cycle 감지, 제한된 중첩 깊이를 적용해 호출된 Form XObject를 재귀적으로 포함합니다
IncludeAnnotationAppearances는 state dictionary와 함께 normal, rollover, down appearance를 포함하고, 활성화된 경우 해당 appearance가 쓰는 Form XObject도 따라갑니다
모든 문자 코드는 선언된 encoding을 따르고 이어서 Type0 CMap과 CIDToGIDMap을 거쳐 안정적인 embedded 글리프 ID에 도달합니다. 기존 CID map과 ToUnicode 데이터는 다시 번호를 매기지 않습니다
TrueType 복합 글리프는 재귀적인 component closure를 유지하고, COLR v0 layer와 COLR v1 글리프 paint 의존성은 참조된 모든 outline을 유지합니다
Type 1 simple font는 Standard, WinAnsi, MacRoman, MacExpert encoding과 Differences를 따른 뒤 사용하지 않는 CharStrings를 PFB, PDF 분할 binary, hex PFA 데이터로 embedded stream 레이아웃을 바꾸지 않고 다시 씁니다
옵션
| 필드 | 기본값 | 의미 |
|---|---|---|
MinimumSavingsBytes | 1 | 후보를 채택하기 위해 필요한 최소 encoded stream 절감량 |
EnforceSignaturePermissions | True | 문서에 signature field가 있으면 모든 재작성을 거부합니다 |
IncludeFormXObjects | True | 호출된 중첩 Form XObject를 추적합니다 |
IncludeAnnotationAppearances | True | annotation appearance stream과 state를 추적합니다 |
결과와 안전성
반환 값은 다시 쓴 embedded font 프로그램 수이며, AInfo는 스캔 커버리지, 매핑·디코딩 실패, 사용된 글리프, byte 절감량, 서명 영향을 보고합니다
도달 가능한 코드 중 매핑되지 않는 것이 있거나, 형식이 지원되지 않거나, subsetting에 실패하거나, 인코딩된 후보가 절감 기준에 못 미치면 해당 font 프로그램은 byte 단위로 그대로 유지됩니다
Type 1 재작성은 여러 binary PFB segment, 파싱 불가능한 명시적 simple-font encoding, 요청한 글리프 이름 누락, 지원되지 않는 CharString 레이아웃을 만나면 실패로 처리합니다. 알 수 없는 COLR 버전과 sparse outline table이 없는 sfnt 프로그램도 변경되지 않습니다
모든 후보를 변경 전에 분석하며, 기본 서명 정책에서는 RefusedBySignaturePolicy가 설정된 채 0을 반환합니다. 정책을 끄면 재작성이 허용되고 서명된 문서가 변경될 때 SignaturesInvalidated가 설정됩니다
예제
var
Info: THPDFLoadedFontSubsetInfo;
begin
PDF.LoadFromFile('input.pdf');
if PDF.SubsetLoadedFonts(Info) > 0 then
PDF.SaveToFile('subset.pdf');
end;