LoginSignup
4
2

More than 5 years have passed since last update.

Source Han Code JPをPowerlineで使いたかっただけ...

Last updated at Posted at 2018-11-04

Source Han Code JP + Powerline

エンジニアでフォントにこだわりがあるって人は多いと思います.(たぶんだけど)

例えばRictyとかMenloとかね...

自分は個人的にSource Han Code JP(Source Code Proの和文フォント組み込み)が好きなので全部それ使ってます.

そして何となく思い立ってZshでPowerlineのテーマを使いたいと思って入れたんですが、Powerlineをフォントに組み込むのに結構手間取ったのでシェアしようかなと思います.

Python2とFontForge使って色々こねくり回してます.(FontForgeはbrewとかで入れてください)

1. Source Han Code JPを手に入れる

Githubで配布されているのでダウンロードして来るだけ...ここからダウンロードできます.

解凍するとTTCとOTFの両方が入っていると思います.どっち使ってもいける思うけどただしTTCの場合は一回TTFにバラす作業がいります.こんな感じでいける.

#!/usr/bin/env python2
# -*- coding: utf-8 -*-

import sys
import fontforge


def main(font_collection):
    for font in fontforge.fontsInFile(font_collection):
        f = fontforge.open("%s(%s)" % (font_collection, font))
        f.cidFlatten()
        f.generate("%s.ttf" % font)


if __name__ == "__main__":
    main(sys.argv[1])

2. PowerlineをSource Han Code JPに組み込む

これはfontpatcherという便利なものがあるのでそれを使えば一発です.使い方はクローンしてきて下のコマンドを打てばok.

fontforge -lang=py -script ./fontpatcher/scripts/powerline-fontpatcher {Font Name}.{Font Type}

3. Powerlineのフォント調整

上の段階で終わるとPowerlineのフォントがずれてめちゃかっこ悪いので直します.GUIで直す方法もあるっぽいけど面倒くさいのでスクリプトで書きました.

#!/usr/bin/env python2
# -*- coding: utf-8 -*-

import sys
import fontforge
import psMat

GLYPH_UNICODES = [
    0xE0A0,
    0xE0A1,
    0xE0A2,
    0xE0B0,
    0xE0B1,
    0xE0B2,
    0xE0B3
]

def main(font):
    f = fontforge.open(font)

    x_ratio = 1.0
    y_ratio = 1.0
    x_diff = 0
    y_diff = 0

    scale = psMat.scale(x_ratio, y_ratio)
    translate = psMat.translate(x_diff, y_diff)
    transform = psMat.compose(scale, translate)
    for code in GLYPH_UNICODES:
        f[code].transform(transform)

    f.generate()


if __name__ == "__main__":
    main(sys.argv[1])

これを生成されたSource Han Code JP + Powelineのフォントに適用すれば完璧.(ただ,これでも多少ずれるので好みでx_diffとかy_diffを修正してください)

これでいけると思います.詳しくはGihubにコード置いてあるので参考にして下さい👍

Github: https://github.com/ty-edelweiss/source-han-code-jp-powerline

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2