Source Code Pro에 합자 추가하기
즐겨 쓰는 글꼴인 Source Code Pro는 합자(ligature)를 지원하지 않는다. 요청하는 사용자가 있지만 진행하는 것 같지도 않다. 대안으로 Hasklig가 있어 써 봤는데 뭔가 손이 가지 않는다. 이름이 달라서인가…
찾아 보면서 Source Code Pro 글꼴에 Fira Code의 합자를 이식(?)하는 방법도 봤지만 역시 뭔가 해야 하는 건 귀찮아서 당시엔 넘겼는데 여전히 지지부진한 합자 지원 때문에 결국 글꼴을 수정하고 간단히 정리해 본다.
Ligaturizer
글꼴에 합자를 추가하는 파이썬 프로그램이다. 해당 저장소에 있는 설명이면 충분하지만 나중에 기억을 되살리며 다시 영어를 읽는 건 귀찮으니까. 참, 리눅스에서 하는 게 편한 듯하다. 아래 내용 역시 우분투에서 했다.
fontforge 설치
1 |
sudo apt install fontforge |
글꼴 변환하는 데 필요하다. 파이썬 바인딩이 필요하다는데 fontforge 설치하는 걸로 충분했다.
Ligaturizer 저장소 복제
1 |
git clone --recursive https://github.com/ToxicFrog/Ligaturizer.git |
설명 대로 하위 저장소까지 복제해도 fonts/fira
, fonts/plex
디렉터리 내용을 체크아웃하지 못한다. 얕은(shallow) 복제를 하는데 원 저장소 이력이 바뀌어 지정한 커밋이 없기 때문이다. git submodule update --init
으로 각 하위 모듈을 업데이트한다. 하위 모듈로 연결한 글꼴 버전이 낮을 수 있으므로 필요하면 각 글꼴을 최신 버전으로 바꾼다.
글꼴 만들기
make
를 실행하면 fonts/output
디렉터리에 합자를 추가한 폰트를 만든다. 필요한 것만 만들고 싶으면 build.py
파일에서 prefixed_fonts
나 renamed_fonts
내용을 수정하면 된다.prefixed_fonts
에 추가한 폰트는 원래 이름 앞에 Liga
를 추가하며 renamed_fonts
는 저작권 때문에 원래 폰트 이름을 쓰지 못할 때 지정한 이름으로 바꿀 수 있다.
난 혼자 쓸 거니까 Source Code Pro 글꼴을 fonts
디렉터리에 넣고 간단히 다음 내용만 고쳤다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
prefixed_fonts = [ # Apache 2.0 license #'fonts/codeface/fonts/cousine/*.ttf', #'fonts/codeface/fonts/droid-sans-mono/*.ttf', #'fonts/codeface/fonts/meslo/*.ttf', #'fonts/codeface/fonts/roboto-mono/*.ttf', # MIT license #'fonts/codeface/fonts/dejavu-sans-mono/*.ttf', #'fonts/codeface/fonts/hack/*.ttf', # SIL OFL with no Reserved Font Name #'fonts/codeface/fonts/edlo/*.ttf', #'fonts/codeface/fonts/fantasque-sans-mono/*.ttf', #'fonts/codeface/fonts/inconsolata/*.ttf', 'fonts/SourceCode*.ttf' ] renamed_fonts = { # This doesn't have a reserved name, but if we don't rename it it'll collide # with its sibling Fantasque Sans Mono Normal, listed above. #'fonts/FantasqueSansMono-NoLoopK/*.otf': 'Liga Fantasque Sans Mono NoLoopK', # SIL OFL with reserved name #'fonts/codeface/fonts/anonymous-pro/*.ttf': 'Liganymous', #'fonts/plex/IBM-Plex-Mono/fonts/complete/ttf/*.ttf': 'Ligalex Mono', #'fonts/codeface/fonts/oxygen-mono/*.otf': 'Liga O2 Mono', #'fonts/codeface/fonts/source-code-pro/*.ttf': 'LigaSrc Pro', #'fonts/SourceCodeVariable*': 'LigaSrc Variable', # UFL #'fonts/codeface/fonts/ubuntu-mono/*.ttf': 'Ubuntu Mono Ligaturized', } |
참고로 Ligaturizer 저장소에도 Source Code Pro 글꼴을 기본으로 포함하고 있는데 버전이 조금 낮다.
그 외
Source Code Variable 글꼴이 나왔길래 같이 변환해 봤는데 고정폭 글꼴도 아니고 무엇보다 모양이 이전과 다르다. 변환은 했지만 쓸 일은 없을 듯하다.
합자로 사용할 글자는 ligatures.py
파일에서 선택할 수 있는데 기본 그대로 사용하기로 했다.