.CFF2 파일이란?
CFF2 파일 형식은 CFF 파일 형식의 버전 2.0이며 CFF 파일 형식과 유사한 글리프 아웃라인 및 메타데이터를 효율적으로 저장할 수 있습니다. CFF2는 OpenType 글꼴의 컨텍스트에서 CFF2 태그가 있는 ‘sfnt’ 테이블로 사용된다는 점에서 CFF와 다릅니다. 독립 실행형 프로그램으로 사용할 수 없으며 다른 OpenType 테이블의 데이터에 종속됩니다.
CFF2 파일 형식
CFF2 파일 형식 사양에는 내부 데이터 레이아웃, 데이터 유형, 테이블 및 파일 형식에 대한 기타 내부 정보에 대한 세부 정보가 포함되어 있습니다. 개발자 참조용으로 참조할 수 있습니다. 이들에 대한 세부사항 중 일부는 다음과 같습니다.
데이터 레이아웃
CFF2 파일 형식의 이진 데이터는 여러 개의 개별 데이터 구조로 논리적으로 구성됩니다. 바이너리 데이터 내의 레이아웃은 다음 표와 같습니다.
엔트리 | 댓글 |
---|---|
헤더 | 고정 위치 |
상위 DICT | 고정 위치 |
글로벌 하위 인덱스 | 고정 위치 |
바리에이션 | 스토어 |
FDSelect | 글꼴 DICT INDEX에 둘 이상의 글꼴 DICT가 있는 경우에만 표시됩니다. |
글꼴 DICT 색인 | |
글꼴 DICT 배열 | 글꼴 DICT INDEX에 포함되어 있습니다. |
개인 DICT | 글꼴 DICT당 하나. |
처음 세 개의 구조만 고정된 위치를 기반으로 합니다. 나머지는 오프셋을 통해 도달하며 순서를 변경할 수 있습니다.
데이터 유형
CFF2 파일 형식은 다음 데이터 유형을 사용합니다.
이름 | 범위 | 설명 |
---|---|---|
uint8 | 0 ~ 255 | 8비트 부호 없는 숫자 |
uint16 | 0 ~ 65535 | 16비트 부호 없는 숫자 |
uint32 | 0 ~ 4294967295 | 32비트 부호 없는 숫자 |
오프셋 | 변함 | 1, 2, 3 또는 4바이트 오프셋(인덱스 테이블의 OffSize 필드로 지정) |
오프사이즈 | 1 ~ 4 | 1바이트 부호 없는 숫자는 오프셋 필드의 크기를 지정합니다. |
모든 멀티바이트 숫자 데이터와 오프셋 필드를 빅엔디안 바이트 순서로 저장합니다. CFF2 형식은 정렬 제한을 따르지 않으므로 패딩 바이트가 없습니다.
DICT 데이터
CFF2 파일에는 컴팩트 토큰 형식의 키-값 쌍으로 글꼴 사전 데이터가 포함되어 있습니다. 사전 키는 1 또는 2바이트 연산자로 인코딩되고 사전 값은 가변 크기 숫자 피연산자로 인코딩됩니다. DICT 데이터 형식을 사용하는 구조는 Top DICT
, Font DICT
및 Private DICT
의 세 가지입니다. 다양한 크기의 정수 피연산자 유형이 정의되고 다음 표와 같이 인코딩됩니다(피연산자의 첫 번째 바이트는 b0, 두 번째 바이트는 b1 등).
크기 | b0 범위 | 값 범위 | 값 계산 |
---|---|---|---|
1 | 32 ~ 246 | -107 ~ +107 | b0 - 139 |
2 | 247 ~ 250 | +108 ~ +1131 | (b0 - 247) * 256 + b1 + 108 |
2 | 251 ~ 254 | -1131 ~ -108 | -(b0 - 251) * 256 - b1 - 108 |
3 | 28 | -32768 ~ +32767 | b1 « 8 |
5 | 29 | -(2^31) ~ +(2^31 - 1) | b1 « 24 | b2 « 16 | b3 « 8 | b4 |
헤더
바이너리 데이터는 아래 표와 같은 형식의 헤더로 시작합니다.
유형 | 이름 | 설명 |
---|---|---|
uint8 | 메이저버전 | 메이저 버전을 포맷하십시오. 2로 설정합니다. |
uint8 | 마이너 버전 | 부 버전을 포맷하십시오. 0으로 설정합니다. |
uint8 | 헤더크기 | 헤더 크기(바이트). |
uint16 | topDict길이 | 최상위 DICT 구조의 길이(바이트). |