|
CFF and OpenType Font Subsetting Functions
|
Top EnableFontSubsetting 목차 |
|
이 유닛 수준 함수들은 HotPDF의 임베드 글꼴 파이프라인이 사용하는 CFF, OpenType-CFF, sfnt 글꼴 검사용 공개 인터페이스입니다. 또한 HotPDF는 더 낮은 수준의 글꼴 검사가 필요한 호출자를 위해 재사용 가능한 Type 1 PFB 및 CFF 파서 유닛도 제공합니다
Delphi syntax function HPDFSubsetCFF(const CFFBytes: TBytes; const KeepGlyph: array of Boolean): TBytes; function HPDFIsCFF2Font(const FontBytes: TBytes): Boolean; function HPDFInstantiateCFF2Font(const FontBytes: TBytes; const AxisValues: THPDFVariableFontAxisValueArray): TBytes; function HPDFSubsetCFF2Font(const FontBytes: TBytes; const KeepGlyph: array of Boolean): TBytes; function HPDFIsTrueTypeVariableFont(const FontBytes: TBytes): Boolean; function HPDFInstantiateTrueTypeVariableFont(const FontBytes: TBytes; const AxisValues: THPDFVariableFontAxisValueArray): TBytes; function HPDFSfntIsOTF(const Data: TBytes): Boolean; function HPDFOTFFindCFFTable(const Data: TBytes; out TableOff: Cardinal; out TableLen: Cardinal): Boolean; function HPDFSubsetOTFContainer(const OTFBytes: TBytes; const KeepGlyph: array of Boolean): TBytes; function HPDFExtractTTFPostScriptName(const Data: TBytes): AnsiString;
Description HPDFSubsetCFF는 글리프 ID를 그대로 유지하면서, 사용하지 않는 CharString과 서브루틴을 최소 스텁으로 교체하여 CFF 글꼴 페이로드를 제자리에서 다시 씁니다. 글꼴 컨테이너에서 CFF 테이블을 이미 추출한 호출자를 위한 헬퍼입니다
HPDFIsCFF2Font는
HPDFSubsetCFF2Font는 같은 기본 좌표 인스턴싱을 수행하면서 사용하지 않는 글리프 프로그램을 빈 CharString으로 교체합니다. 글리프 ID, multi-FD 사전, private 힌트 데이터, 글꼴 행렬은 그대로 유지됩니다
HPDFIsTrueTypeVariableFont는
HPDFSfntIsOTF는 버전이 OTTO인 sfnt 컨테이너를 감지합니다. HPDFOTFFindCFFTable은 임베드된 'CFF ' 테이블의 위치를 찾습니다. HPDFSubsetOTFContainer는 임베드된 CFF 또는 CFF2 데이터를 서브셋화하고 sfnt 체크섬이 유효한 OTF 컨테이너를 반환합니다. HPDFExtractTTFPostScriptName은 sfnt
서브셋터는 name-keyed CFF(Private DICT 하나, Local Subr INDEX 하나)와 CID-keyed CFF(Top DICT ROS 연산자, 여러 하위 글꼴 Private DICT로 이루어진 FDArray, 글리프-FD 맵인 FDSelect, FD별 Local Subr INDEX)를 모두 인식합니다. CID 지원은 CJK / Indic / Arabic OpenType-CFF 글꼴을 포괄하며, closure 스캔이 유지되는 각 CharString의 FD 컨텍스트를 추적하므로 FD별 Local Subr INDEX가 각각 독립적으로 서브셋화됩니다
더 낮은 수준의 CFF 정수 디코더, FDArray / FDSelect 파서, 서브루틴 스캐너는 이 공개 헬퍼 인터페이스 뒤에 있는 구현 세부 사항입니다
Type 1 and CFF parser units
See also: EnableFontSubsetting, FontEmbedding, PDF Filter Support |
네이티브 glyph 렌더러는 표준 Type 2 Boolean, 산술, 조건, transient-array, 스택 연산을 구현합니다. put, get, ifelse, random, dup, exch, index, roll이 포함됩니다
transient 값은 glyph마다 초기화되고 random 값은 재현 가능합니다. operand, transient-array, 재귀, 실행 한도는 malformed 프로그램을 부분 윤곽선 없이 거부합니다
subset 스캐너는 로컬 및 전역 subroutine 호출이 쓰는 산술·transient-array 표현식을 해석합니다. Type 2 16.16 고정소수점 operand도 포함됩니다
random 값, 알 수 없는 transient 상태, 프로시저 간 스택 효과 때문에 호출 대상이 불확실하면 subsetting은 잠재적으로 도달 가능한 윤곽선 의존을 버리는 대신 후보 subroutine을 전부 유지합니다
예약되고 폐기된 Multiple Master 연산은 여전히 지원되지 않으며 명시적으로 실패합니다