README file from
GithubD2 LigaFix
한글 문맥에서 프로그래밍 ligature(결합 문자)가 표시되지 않는 문제를 해결하는 Obsidian 플러그인입니다.
D2Coding에서는 ->, =>, !=, <=, >= 같은 programming ligature가 지원됩니다. 하지만 Obsidian 기본 설정에서는 일부 헤딩에서 이 ligature가 표시되지 않습니다. 그 원인은 테마가 헤딩에 적용하는 letter-spacing 때문입니다. Chromium 렌더러는 letter-spacing이 0이 아닌 요소에서 OpenType ligature(feature liga)를 비활성화하기 때문입니다.
이 플러그인은 헤딩의 letter-spacing을 normal로 되돌려 헤딩에서도 ligature가 정상 렌더링되도록 하는 CSS-only 플러그인입니다.
기능
- 헤딩(H1–H6)의
letter-spacing을normal로 보정하여 ligature가 비활성화되는 문제(LIGA-CSS-001)를 해결합니다. - 본문은 테마 설정대로 유지되므로 나머지 스타일에는 영향을 주지 않습니다.
- JavaScript 런타임 로직이 없는 CSS-only 플러그인입니다.
설치
1. 플러그인 설치
Obsidian → Settings → Community plugins → Browse → D2 LigaFix 검색 → Install → Enable.
수동 설치는
manifest.json,main.js,styles.css를.obsidian/plugins/dcoding-ligafix/폴더에 복사하고 플러그인을 활성화합니다.
2. 폰트 설치 (필수)
이 플러그인은 폰트 파일을 포함하지 않으며 파생 폰트를 직접 배포하지 않습니다. NAVER 원본(D2Coding)에서 다운로드한 뒤 converter로 D2_LigaFix 파생 폰트를 만들어 설치합니다. 폰트가 설치되어 있어야 ligature가 표시됩니다.
- NAVER D2Coding 1.3.3에서 공식 릴리스 ZIP을 다운로드합니다.
- 파일:
D2Coding-Ver1.3.3-*.zip
- 파일:
- 이 저장소의
converter/폴더에서 아래 명령을 실행해 파생 폰트를 생성합니다 (Python 3.10+ 필요).pip install fonttools python converter/build_d2_ligafix.py --archive <다운로드한 ZIP 경로>- 생성 파일:
out/D2_LigaFix-Regular.ttf,out/D2_LigaFix-Bold.ttf - converter는 공식 아카이브의 SHA-256과 업스트림 폰트의 Git blob 해시를 검증하고, 핵심 테이블(
glyf/loca/hmtx/cmap)이 원본과 동일함을 확인한 뒤에만 폰트를 내보냅니다.
- 생성 파일:
- 생성한 TTF를 설치합니다. Windows: 더블클릭 → 설치. macOS: Font Book에서 추가.
- Obsidian → Settings → Appearance → Fonts에서 Monospace 폰트를 D2_LigaFix로 지정합니다.
3. 동작 확인
아래를 그대로 입력해 보세요. 모든 줄이 ligature(결합된 화살표 등)로 보여야 합니다.
한 -> 한
한 1 -> 한
한 _ -> 한
a -> a
x => y
a != b
이 저장소와 converter
이 저장소는 Obsidian 플러그인과 함께 D2Coding ligature 폰트를 만드는 converter도 포함하고 있습니다.
- converter (
converter/): D2Coding ligature 폰트에DFLT/dfltligaroute를 추가해D2_LigaFix-*.ttf를 만드는 Python-only converter. - verify (
converter/verify_structure.py): 폰트 구조·해시를 검증하는 도구.
converter 사용 방법은 위 폰트 설치 가이드를 참고하세요. 플러그인 자체는 위의 설치 방법만으로 동작합니다.
라이선스
- 플러그인 코드: MIT — LICENSE
- 폰트(D2Coding 자체 및 D2_LigaFix 파생 폰트): SIL OFL 1.1 (D2Coding 원 저작자의 라이선스에 따름).
- Reserved Font Name(
D2Coding)과의 충돌을 피하기 위해 파생 폰트는D2_LigaFixfamily name을 사용합니다.