Pro 에디션
글꼴 도구
한눈에 보기
섹션 제목: “한눈에 보기”NextPDF Pro는 임베드된 글꼴 프로그램을 검사하고, 표준 명명 규칙으로 서브셋 글꼴을 식별하며, 예상 크기 영향이 담긴 구조화된 디서브셋화 계획을 생성합니다.
가용성 및 라이선싱
섹션 제목: “가용성 및 라이선싱”이 기능은 NextPDF Pro(nextpdf/pro)에서 제공되며 Pro 등급 라이선스 봉투로 활성화됩니다. 해당 엔타이틀먼트가 없는 배포는 이 기능의 클래스를 로드하지 않습니다. 에디션 비교 및 라이선스 받기.
이 모듈을 게이트하는 기능별 라이선스 플래그는 없습니다. 글꼴 도구 클래스는 nextpdf/pro가 설치되어 있을 때면 언제든 사용할 수 있습니다.
composer require nextpdf/pro:^3개념 개요
섹션 제목: “개념 개요”PDF의 서브셋 글꼴은 문서가 사용하는 글리프만 임베드합니다. 관례상 그 /BaseFont 이름은 여섯 글자 대문자 태그 뒤에 +를 담습니다. 예를 들어 ABCDEF+Arial입니다. NextPDF Pro는:
- 서브셋을 탐지합니다.
FontDesubsetter는 원시 PDF 데이터에서/BaseFont항목을 스캔하고, 서브셋 접두사 패턴을 인식하며, 각 항목을 원래 패밀리 이름, 서브셋 글리프 수, 전체 글리프 수, 인코딩이 담긴SubsetInfo값 객체로 보고합니다. - 디서브셋화를 계획합니다.
DesubsetPlan은 전체 글꼴 프로그램으로 교체할 대상인 서브셋 글꼴을 수집하고 예상 바이트 크기 증가를 보고하므로, 실행하기 전에 디서브셋화가 파일 크기 비용을 들일 가치가 있는지 결정할 수 있습니다.
글꼴 도구는 분석 및 계획 레이어입니다. 무엇이 존재하고 디서브셋화에 얼마의 비용이 드는지 설명합니다. 글꼴 프로그램 자체를 다시 작성하지는 않습니다.
이렇게 동작하는 이유
섹션 제목: “이렇게 동작하는 이유”임베드된 글꼴 프로그램을 다시 작성하는 것이 어렵고 위험한 부분입니다. 글리프 윤곽, 힌팅, cmap 테이블이 일관되게 유지되어야 하며, 하나의 실수가 렌더링을 손상시킵니다. 그래서 NextPDF Pro는 값싸고 안전한 작업(인벤토리와 비용 예측)을 그 값비싼 재작성과 분리합니다. 스캐너는 바이트만 읽습니다. 글꼴 프로그램을 파싱하거나 실행하지 않으므로 결정론적이고 부작용이 없습니다. 글리프 수와 크기 델타는 의도적으로 휴리스틱으로 표시되어, 용량 판단이 모듈이 측정할 수 없는 숫자를 신뢰하는 대신 정직하게 유지됩니다. 그렇게 하면 전체 글꼴 프로그램을 조달하기 전에 디서브셋화가 비용을 들일 가치가 있는지 저울질할 수 있습니다.
설계 배경: 글꼴: 어려운 부분.
API 표면
섹션 제목: “API 표면”| 클래스 | 책임 |
|---|---|
FontDesubsetter | PDF 데이터를 스캔하고 서브셋 글꼴 항목을 보고합니다. |
SubsetInfo | 탐지된 하나의 서브셋에 대한 불변 설명입니다. |
DesubsetPlan | 대상 서브셋과 예상 크기 증가입니다. |
코드 샘플 — 빠른 시작
섹션 제목: “코드 샘플 — 빠른 시작”use NextPDF\Pro\FontTools\FontDesubsetter;
$subsets = (new FontDesubsetter())->analyzeSubsets($pdfBytes);foreach ($subsets as $info) { echo $info->baseFont . ': ' . $info->subsetGlyphCount . " glyphs\n";}코드 샘플 — 프로덕션
섹션 제목: “코드 샘플 — 프로덕션”use NextPDF\Pro\FontTools\FontDesubsetter;
$desubsetter = new FontDesubsetter();$subsets = $desubsetter->analyzeSubsets($pdfBytes);$logger->info('fonttools.scan', ['subset_count' => count($subsets)]);엣지 케이스 및 함정
섹션 제목: “엣지 케이스 및 함정”- 스캐너는 여섯 글자 접두사가 없는
/BaseFont를 건너뛰는 대신 비서브셋 항목으로 보고합니다. - 예상 크기 증가는 측정값이 아니라 글리프당 평균 바이트에 기반한 휴리스틱입니다.
- 탐지는
/BaseFont항목의 바이트 표현에서 작동합니다. 암호화되거나 압축이 심한 객체 스트림은 먼저 디코딩이 필요할 수 있습니다.
서브셋 스캔은 PDF 바이트 길이에 선형적입니다. 계획은 탐지된 서브셋 수에 선형적입니다.
보안 참고
섹션 제목: “보안 참고”글꼴 도구는 구조 메타데이터만 읽습니다. 글꼴 프로그램을 실행하거나 외부 글꼴 참조를 해석하지 않습니다.
적합성
섹션 제목: “적합성”| 동작 | 참조 | 상태 |
|---|---|---|
| 서브셋 글꼴 명명 규칙 | ISO 32000-2 §9.9.2 | 부합 (의역됨) |
동작 계약
섹션 제목: “동작 계약”FontDesubsetter::analyzeSubsets()는 원시 PDF 데이터에서/BaseFont항목을 스캔하고, 여섯 글자 대문자와+서브셋 접두사를 인식하며, 각각을 원래 패밀리 이름, 서브셋 글리프 수, 전체 글리프 수, 인코딩이 담긴 불변SubsetInfo로 반환합니다.- 서브셋 접두사가 없는
/BaseFont는 건너뛰는 대신 비서브셋 항목으로 보고됩니다. DesubsetPlan은 교체 대상 서브셋을 수집하고 글리프당 평균 바이트에 기반한 예상 바이트 크기 증가를 보고합니다. 이는 측정값이 아니라 휴리스틱입니다.- 이는 분석 및 계획 레이어입니다. 무엇이 존재하고 디서브셋화에 얼마의 비용이 드는지 보고합니다. 글꼴 프로그램을 다시 작성하거나, 글꼴 프로그램을 실행하거나, 외부 글꼴 참조를 해석하지 않습니다.
Enterprise 경계 참고
섹션 제목: “Enterprise 경계 참고”Enterprise는 글꼴 도구 동작을 변경하지 않습니다. Enterprise는 별도로 문서화된 상위 등급 기능을 더합니다. 그것들은 서브셋 탐지나 디서브셋 계획에 필요하지 않습니다.
Core 폴백 / 대안
섹션 제목: “Core 폴백 / 대안”NextPDF Core의 오픈 소스 글꼴 파이프라인이 기본 글꼴 임베딩을 처리합니다. 서브셋 산정과 디서브셋 계획은 Pro 추가 기능입니다. /modules/font/를 참조하십시오.
발행 경계
섹션 제목: “발행 경계”이 페이지는 외부에서 관찰 가능한 동작과 지원되는 공개 API 표면만 문서화합니다. 내부 네임스페이스 경로, 헬퍼 클래스, 메커니즘 테이블, 런북 파일명, 티켓 접두사는 범위 밖입니다.
함께 보기
섹션 제목: “함께 보기”- 글꼴 도구 — 심층 참조 — API 계약, 동작, 실패 모드.
- 최적화기 — 파일 크기 최적화.
- Core 글꼴 모듈 — 오픈 소스 글꼴 처리.