웹 오픈 폰트 형식 (.woff)
W3C 표준WOFF (Web Open Font Format)는 W3C에서 승인한 역사적인 1세대 오픈 표준 웹 글꼴 형식으로, 표준 TrueType 또는 OpenType 글꼴을 zlib 압축 및 XML 라이선스 메타데이터로 감싸는 방식입니다.
검사 및 메타데이터
운영 체제와 파일 분석기는 파일 선두의 바이너리 바이트 시퀀스를 검사하여 WOFF 파일을 식별합니다:
바이트 단위 헤더 시그니처 (매직 바이트)
운영 체제와 파일 분석기는 파일 선두의 바이너리 바이트 시퀀스를 검사하여 WOFF 파일을 식별합니다:
16진수 시그니처 (오프셋 0):
77 4F 46 46ASCII 표현: wOFF
표준화: W3C Recommendation (2012)
기술 사양
| 컨테이너 아키텍처 | 44바이트 WOFF 헤더 뒤에 테이블 디렉터리, zlib 압축 테이블 데이터, 선택적 확장 메타데이터 및 개인 데이터가 이어짐 |
| 압축 | 각 개별 글꼴 테이블에 적용되는 Deflate(zlib) 압축 |
| 바이트 엔디안 | 빅 엔디언(SFNT 표준) |
| 색 공간 | 기반 글꼴 테이블에서 상속됨 |
| 채널 및 구조 | TrueType('glyf') 또는 PostScript('CFF ') 글리프 외곽선, 메트릭 및 타이포그래피 기능 |
| 최대 크기 | 글꼴 파일당 최대 65,535개 글리프 |
| 투명도 | 기반 글꼴 형식에서 상속됨 |
| 스트리밍 및 프로그레시브 | 테이블별 압축 해제로 글꼴을 스트리밍 방식으로 로드할 수 있음 |
기술 비교 매트릭스: WOFF 대 경쟁사
| 기술적 속성 | WOFF (현재) | WOFF2 | TTF | OTF |
|---|---|---|---|---|
| 압축 코덱 | 테이블당 Deflate (zlib) | 테이블 전처리가 포함된 Brotli | 비압축 SFNT | 비압축 SFNT |
| 매직 시그니처 | wOFF (0x77 0x4F 0x46 0x46) | wOF2 (0x77 0x4F 0x46 0x32) | 0x00 0x01 0x00 0x00 | OTTO (0x4F 0x54 0x54 0x4F) |
| 상대적 파일 크기 | TTF 대비 ~40% 더 작음 | TTF 대비 ~60% 더 작음 | 기준 표준 (100%) | 기준 표준 (100%) |
| 대상 환경 | 구형 웹 브라우저 (IE9+, 사파리 5+) | 지원 여부는 브라우저에 따라 다릅니다. | 데스크톱 운영 체제 | 전자출판 및 인쇄 |
일반적인 손상 모드 및 헥스 복구 가이드
브라우저 콘솔 경고 발생: 'Failed to decode downloaded font: OTS parsing error'.
근본 원인: 선언된 비압축 테이블 길이 불일치 또는 손상된 zlib 스트림.
복구: 폰트 테이블을 재압축하거나 File2File.app 폰트 변환기를 사용하여 WOFF2로 변환하십시오.
보안 분석 및 파서 공격 벡터
웹 브라우저는 공격 페이로드를 차단하기 위해 OpenType Sanitizer(OTS)를 사용하여 신뢰할 수 없는 웹 도메인에서 다운로드한 WOFF 파일을 구문 분석합니다.
알려진 공격 벡터
- 손상된 폰트 테이블 청크의 zlib 압축 해제 중 버퍼 오버리드.
- 폰트 렌더러에서 힙 버퍼 오버플로를 유발하는 일치하지 않는 테이블 길이 필드.
- 폰트 테이블 확장 중 메모리 고갈을 통한 서비스 거부.
방어적 모범 사례: 운영체제 글꼴 엔진에 전달하기 전에 항상 OTS로 다운로드한 WOFF 파일을 검사하고 정화하십시오.
역사적 배경 및 주요 이력
주요 장점
- 압축되지 않은 원본 TTF 또는 OTF 파일에 비해 웹 폰트 파일 크기를 30%에서 50%까지 줄여줍니다.
- 2011년 이후 출시된 모든 데스크톱 및 모바일 웹 브라우저에서 보편적인 하위 호환성을 제공합니다.
- 폰트 라이선스, 제작자 크레디트, 파운드리 저작권 정보를 위한 선택적 XML 메타데이터 블록을 포함합니다.
기술적 제한 사항 및 단점
- Brotli 알고리즘을 사용하여 약 30% 더 작게 압축하는 WOFF2로 대체되었습니다.
- TTF/OTF로 변환하지 않으면 데스크톱 운영 체제(Windows/Mac)에 직접 설치할 수 없습니다.
- 구형 zlib 압축 알고리즘은 현대적인 엔트로피 인코더에 비해 효율성이 떨어집니다.
흥미로운 기술적 상식
- WOFF 1.0의 매직 바이트는 'wOFF'(0x77 0x4F 0x46 0x46)인 반면, WOFF 2.0은 'wOF2'를 사용합니다.
- 활자 주조소들은 WOFF가 만들어진 후에야 웹 폰트가 불법 복제될 수 있는 데스크톱 폰트와 구별되는 특수 컨테이너를 갖게 되자 웹에서의 폰트 사용을 허용하기로 동의했습니다.
- WOFF는 공식 W3C 권고사항이 되기 전인 2010년에 파이어폭스 3.6에 처음 구현되었습니다.
자주 묻는 기술 질문
WOFF와 WOFF2는 어떻게 다릅니까?
WOFF는 zlib 압축을 사용하는 반면, WOFF2는 Google의 최신 Brotli 알고리즘과 테이블 변환을 사용하여 WOFF보다 약 30% 작은 파일을 생성합니다.
데스크톱에서 사용할 WOFF 글꼴을 TTF나 OTF로 어떻게 변환할 수 있습니까?
웹 브라우저에서 직접 File2File.app을 사용하여 몇 초 만에 WOFF 파일을 설치 가능한 데스크톱 TTF 또는 OTF 글꼴로 변환할 수 있습니다.
최신 웹사이트에서 WOFF 1.0이 여전히 필요합니까?
아니요. 모든 최신 브라우저는 WOFF2를 기본적으로 지원합니다. WOFF 1.0은 Internet Explorer와 같은 구형 레거시 브라우저를 지원해야 하는 경우에만 필요합니다.