기본적인 마크다운 변환기를 사용할 때 가장 흔히 겪는 문제는 다국어 문서를 변환할 때 글자가 네모 상자(이른바 ‘두부 현상, Tofu’)로 깨지는 현상입니다. 한글, 동아시아 문자(CJK), 키릴 자모, 악센트가 붙은 라틴 문자를 포함한 문서를 폰트 임베딩 없이 PDF로 변환하면 글꼴 렌더링에 실패합니다. md2pdf는 완전한 유니코드 폰트 임베딩을 지원하여 전 세계 모든 언어로 작성된 기술 문서를 선명하게 출력합니다.
이 글에서는 pdf-lib와 @pdf-lib/fontkit을 통한 브라우저 내 폰트 임베딩 원리, 파일 크기 최적화 기법, 폰트 폴백 구성을 통한 글자 깨짐 방지 대책을 소개합니다.
전자 문서에서 유니코드 타이포그래피가 겪는 기술적 한계
표준 PDF 규격이 기본 내장하는 14종의 표준 폰트(Helvetica, Times 등)는 영문 ASCII와 기본 서유럽 문자만 지원합니다.
- 두부(Tofu) 현상: 폰트에 정의되지 않은 유니코드 문자는 빈 사각형(□) 기호로 대체되어 가독성을 완전히 상실합니다.
- CJK 문자의 방대한 용량: 한글 음절, 한자, 가나 문자는 수만 개의 글리프를 포함하므로 비효율적으로 폰트 전체를 내장하면 파일이 비대해집니다.
- 변형 라틴 문자와 키릴 문자: 터키어의 점 있는/없는 i(
İ/i,I/ı)와 키릴 자모는 정확한 코드 페이지 지원이 필요합니다.
Multilingual Glyph Coverage in md2pdf:
- Latin & Extended Latin: English, Spanish, French, Portuguese, Turkish
- Cyrillic Alphabets: Russian, Ukrainian, Bulgarian
- East Asian Ideographs: Simplified Chinese (简体中文), Japanese (日本語)
- Hangul Syllables: Korean (한국어)
@pdf-lib/fontkit 기반의 고성능 클라이언트 폰트 임베딩
md2pdf는 @pdf-lib/fontkit 엔진을 통해 브라우저 내부에서 TrueType(TTF) 및 OpenType(OTF) 폰트 테이블을 직접 해석합니다:
- 클라이언트 폰트 동적 로딩: Noto Sans, Source Han Sans, Roboto Mono 등 신뢰할 수 있는 오픈소스 폰트를 문서 언어 감지에 맞춰 메모리로 내려받습니다.
- 글리프 벡터 매핑:
fontkit이 마크다운 본문의 각 유니코드 문자를 스캔하여 폰트 테이블 내 벡터 윤곽선과 정밀하게 일치시킵니다. - PDF 내부 벡터 삽입:
pdf-lib가 추출된 글리프 외곽선 정보를 생성 중인 PDF 문서의 구조체에 직접 기록하여 완전 자립형 문서를 만듭니다.
9개 공식 지원 언어를 위한 완벽한 글꼴 표현
md2pdf는 9개 언어권 전반에 걸쳐 네이티브 수준의 조판 품질을 제공합니다:
- 영어, 스페인어, 프랑스어, 포르투갈어: 악센트, 세디유, 틸드 등 발음 구별 부호가 결합된 라틴 문자를 단정하게 표현합니다.
- 터키어: 터키어 고유의 점 있는/없는 i 문자와 특수 자음들을 왜곡 없이 렌더링합니다.
- 러시아어 (키릴 자모): 라틴 제목 폰트와 위화감 없이 어우러지는 균형 잡힌 키릴 문자를 지원합니다.
- 한국어, 일본어, 중국어: 복잡한 한자 획과 한글 완성형 음절을 최적의 자간과 행간으로 시원하게 출력합니다.
독립적인 오프라인 열람 안정성 확보
글꼴 데이터가 PDF 파일 자체에 벡터 형태로 안전하게 임베드되기 때문에:
문서를 열람하는 상대방의 컴퓨터나 스마트폰에 해당 언어 폰트가 설치되어 있지 않더라도, 제작자가 의도한 선명한 글씨체가 기기 종류와 상관없이 100% 동일하게 유지됩니다.
md2pdf에서 다국어 기술 문서 제작하기
한글 개발 가이드, 일본어 API 규격서, 러시아어 시스템 아키텍처 문서 등 언어에 상관없이 md2pdf는 폰트 처리를 완벽하게 자동화합니다. 텍스트를 입력하거나 저장소를 불러와 글자 깨짐 없는 무결점 PDF 문서를 경험해 보세요.
나만의 README PDF 만들기
무료이고 로그인이 필요 없으며, 모든 처리가 클라이언트에서 이루어집니다.