D2 LigaFix

by spark
5
4
3
2
1
Score: 50/100

Description

Obsidian plugin: enables D2Coding programming ligatures (->, =>, !=, <=, >=) in Hangul context including headings. CSS-only, font provided via GitHub Releases.

Reviews

No reviews yet.

Stats

0
stars
44
downloads
0
forks
40
days
40
days
40
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
0
total issues
0
open issues
0
closed issues
3
commits

Latest Version

a month ago

Changelog

README file from

Github

D2 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가 표시됩니다.

  1. NAVER D2Coding 1.3.3에서 공식 릴리스 ZIP을 다운로드합니다.
    • 파일: D2Coding-Ver1.3.3-*.zip
  2. 이 저장소의 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)이 원본과 동일함을 확인한 뒤에만 폰트를 내보냅니다.
  3. 생성한 TTF를 설치합니다. Windows: 더블클릭 → 설치. macOS: Font Book에서 추가.
  4. 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/dflt liga route를 추가해 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_LigaFix family name을 사용합니다.