.OTF 파일이란?
확장자가 .otf인 파일은 OpenType 글꼴 형식을 나타냅니다. OTF 글꼴 형식은 디지털 타이포그래피를 위한 TTF 형식의 기존 기능을 확장하고 확장할 수 있습니다. Microsoft와 Adobe에서 개발한 OTF는 PostScript와 TrueType 글꼴 형식의 기능을 결합합니다. 이것은 OTF 형식이 대다수의 쓰기 시스템을 수용하도록 하고 이것이 주요 컴퓨터 플랫폼에서 균일하게 사용되는 이유입니다. OpenType 글꼴 형식은 Mac OS X 및 Windows 2000 이상에서 지원됩니다.
약력
OpenType 글꼴의 요구 사항은 미세한 타이포그래피를 처리할 수 있는 보다 표현적인 글꼴 형식에 대한 요구 사항에서 시작되었습니다. 또한 세계의 많은 쓰기 시스템의 복잡한 동작 요구 사항을 충족하는 것을 목표로 했습니다. 마이크로소프트는 1990년대 초 GX 타이포그래피로 알려진 애플의 고급 타이포그래피 기술에 대한 라이선스를 시도했습니다. 이것은 잘 되지 않았고 결과적으로 Microsoft는 1994년에 자체 TrueType 글꼴 기술을 향상시키기 시작했습니다. 또한 Adobe의 Type 1(PostScript) 글꼴 형식의 기능을 충족하는 보다 적합한 글꼴 형식을 도입하기 위한 수정 사항도 포함되었습니다.
Adobe는 1996년 Apple의 TrueType과 자체 Type 1 글꼴 형식을 모두 대체하려는 노력으로 Microsoft에 합류했습니다. 그 결과 두 가지 기본 글꼴 형식을 결합하여 한계를 극복하고 새로운 확장자를 추가했습니다. 이 새로운 기술은 같은 해 OpenType이라는 이름으로 도입되었습니다.
OTF 파일 형식 사양
OTF 사양은 Microsoft에서 공개적으로 사용할 수 있으며 개발자의 관점에서 참조할 수 있습니다. TTF와 마찬가지로 동일한 ‘fnt’ 컨테이너 구조를 사용하며 TrueType 사양과 호환됩니다. OpenType 글꼴 파일 내의 데이터는 텍스트 레이아웃 계산, TrueType 또는 CFF(Compact Font Format) 윤곽선으로 글리프 정의, 대체 글리프 설명으로 단색 또는 컬러 비트맵 또는 SVG 문서 제공, 메타데이터 정보와 같은 다양한 목적으로 사용됩니다.
OTF 데이터 유형
OTF 파일은 모두 Big Endian에 있는 다음 데이터 유형을 사용합니다.
데이터 유형 | 설명 |
---|---|
uint8 | 8비트 부호 없는 정수. |
int8 | 8비트 부호 있는 정수. |
uint16 | 16비트 부호 없는 정수. |
int16 | 16비트 부호 있는 정수. |
uint24 | 24비트 부호 없는 정수. |
uint32 | 32비트 부호 없는 정수. |
int32 | 32비트 부호 있는 정수. |
고정 | 32비트 부호 있는 고정 소수점 수(16.16) |
FWORD | 글꼴 디자인 단위로 수량을 설명하는 int16입니다. |
UFWORD | 글꼴 디자인 단위로 수량을 설명하는 uint16. |
F2DOT14 | 분수(2.14)의 하위 14비트가 있는 16비트 부호 있는 고정 숫자입니다. |
롱데이트시간 | 1904년 1월 1일 자정(UTC) 12:00 이후의 날짜 및 시간을 초 단위로 표시합니다. 값은 부호 있는 64비트 정수로 표시됩니다. |
태그 | 테이블, 디자인 변형 축, 스크립트, 언어 시스템, 기능 또는 기준선을 식별하는 데 사용되는 4개의 uint8 배열(길이 = 32비트) |
오프셋16 | 테이블에 대한 짧은 오프셋, uint16과 동일, NULL 오프셋 = 0x0000 |
오프셋32 | 테이블에 대한 긴 오프셋, uint32와 동일, NULL 오프셋 = 0x00000000 |
버전16Dot16 | 주 버전 및 부 버전 번호가 포함된 압축된 32비트 값입니다. (표 버전 번호를 참조하십시오.) |
OTF 테이블 디렉토리
OTF 파일은 테이블 디렉토리로 시작합니다. 이 디렉토리는 글꼴 파일에 있는 테이블의 최상위 컬렉션입니다. 파일의 글꼴 수에 따라 테이블 디렉토리는 파일의 다른 위치에 있을 수 있습니다. 예를 들어, 글꼴 파일에 하나의 글꼴만 있는 경우 테이블 디렉토리는 파일의 바이트 0에서 시작합니다. OpenType 글꼴 모음이 여러 개인 경우 테이블 디렉토리 시작은 TTCHeader에 표시됩니다.
유형 | 이름 | 설명 |
---|---|---|
uint32 | sfnt버전 | 0x00010000 또는 0x4F54544F(‘오토’) |
uint16 | numTables | 테이블 수. |
uint16 | searchRange | numTables보다 작거나 같은 2의 최대 거듭제곱, 곱하기 16 ((2**floor(log2(numTables))) * 16, 여기서 “**“는 지수 연산자입니다. |
uint16 | entrySelector Log2의 최대 거듭제곱은 numTables(log2(searchRange/16), floor(log2(numTables))와 동일)보다 작거나 같습니다. | |
uint16 | rangeShift | numTables 곱하기 16에서 searchRange를 뺀 값((numTables * 16) - searchRange). |
테이블 레코드 | tableRecords[numTables] | 테이블 레코드 배열 - 글꼴의 최상위 테이블마다 하나씩 |
테이블 레코드
글꼴의 각 최상위 테이블에 대해 다음 필드로 구성된 테이블 레코드가 있습니다.
유형 | 이름 | 설명 |
---|---|---|
태그 | 테이블태그 | 테이블 식별자. |
uint32 | 체크섬 | 이 테이블의 체크섬입니다. |
오프셋32 | 오프셋 | 글꼴 파일의 시작 부분에서 오프셋. |
uint32 | length 이 테이블의 길이입니다. |
OpenType 글꼴 파일의 각 테이블은 테이블 태그라는 이름으로 표시됩니다. 배열의 모든 레코드를 태그별로 오름차순으로 정렬하는 것은 필수입니다.