(2020/11/30) 表示環境によっては { と } の縦位置がずれて表示される問題に対処した v2.2.2 をリリースしました。
(2021/01/04) カタカナの ヘ (U+30D8-30DA)
のグリフを調整した v2.2.3 をリリースしました。
(2021/03/24) 全角の約物記号 ,
.
‘
’
“
”
が判別しやすいよう文字サイズを調整した v2.3.2 をリリースしました。
誰もが知る(?)プログラミングフォントこと Ricty にインスパイアされ、Ricty のように英文フォントと和文フォントを合成したプログラミングフォントを作りました。
その名も、プログラミングフォント「白源 (はくげん/HackGen)」です!
白源 (はくげん/HackGen) 通常版 |
---|
白源 (はくげん/HackGen) 半角3:全角5 版 |
---|
生成元にはプログラミング向け英文フォント Hack と、Adobe 製作の源ノ角ゴシックに丸みを付けた派生フォント 源柔ゴシック を使用させていただきました。
白源の生成元である Hack、及び源柔ゴシックには、いずれも SIL Open Font License Version 1.1 という大らかなライセンスが適用されているため、改変及び配布が自由となっています。したがって、白源の生成済みフォントファイル (ttf ファイル) は GitHub からダウンロードして、すぐにご利用いただけます。
「白源 (はくげん/HackGen)」の特徴
プログラミングフォント「白源 (はくげん/HackGen)」には以下のような特徴があります。
- 文字幅 半角1:全角2 の正統派な等幅フォント (文字幅 半角3:全角5 バージョンも同梱)
- Hack 由来の読みやすく、しっとりとした印象の英字
- 源柔ゴシック由来の引き締まりつつ、丸ゴシックの風合いのあるカナ文字・漢字 (第一~第四水準漢字まで対応)
- 全角スペースの可視化、パイプ記号
|
の破断線化 (Ricty Discord インスパイア) - 英字部分にはヒンティングを付与しているため、どのテキストエディター上でもしっかりとアンチエイリアスが掛かる
- Powerline 記号の表示
- その他、判読性の向上
- 濁点、半濁点を通常より大きくし、表示サイズが小さい場合でも区別しやすくした
- 長音記号
ー
と漢数字の1一
にアクセントを付け区別しやすくした - カタカナ
ヘ
にアクセントを付け、ひらがなと区別しやすくした
また、和文対応のプログラミングフォントは、テキストエディタで文章作成をする際にも違和感無く使えることが大事だと考えています。そのため、矢印 (←→↑↓) や■などの文章の修飾に使われる記号、その他諸々は源柔ゴシックベースの全角にしています。
フォントファミリーの種類
後述のダウンロードリンクから入手できるリリースファイルには、以下のフォントファミリーが含まれます。
※いずれのフォントにも Powerline 記号が含まれています。
フォントファミリー | 説明 |
---|---|
HackGen | 文字幅比率「半角1:全角2」の通常版の白源。主にASCIIコードに載っている英数字記号のみに Hack ベースの字体を使い、その他の記号類やかな文字・漢字を源柔ゴシックベースにしている |
HackGen Console | Hack ベースの字体を除外せずに全て適用したフォントファミリー。Hack には記号類も豊富に収録されているため、多くの記号が半角で表示される。コンソールでの利用や記号類は全て半角で表示したい人にオススメ |
HackGen35 | 通常版の白源の文字幅比率を「半角3:全角5」にしたフォントファミリー。英数字が通常版の白源よりも大きく表示される。オリジナルの Hack の字幅が好きな人にオススメ |
HackGen35 Console | HackGen Console の文字幅比率を 半角3:全角5 にしたフォントファミリー |
※以下のフォントファミリーには、Nerd Fonts を追加で合成しており、Font Awesome を初めとした多くのアイコンフォントが表示できるようになります。
フォントファミリー | 説明 |
---|---|
HackGenNerd | HackGen に Nerd Fonts を追加しているフォントファミリー |
HackGenNerd Console | HackGen Console に Nerd Fonts を追加しているフォントファミリー |
HackGen35Nerd | HackGen35 に Nerd Fonts を追加しているフォントファミリー |
HackGen35Nerd Console | HackGen35 Console に Nerd Fonts を追加しているフォントファミリー |
ダウンロード
この後の章は退屈だと思うので、ひとまずこのあたりでダウンロードリンクを貼っておきます。ぜひお試しください!
※ページ内の「HackGen_v<バージョン>.zip」という名称の ZIP ファイルをダウンロードしてご使用ください。
Chocolatey でのインストール (Windows)
Windows では Chocolatey を使用したインストールもできます。
(Thanks kai2nenobu)
> choco install font-hackgen
> choco install font-hackgen-nerd
Homebrew でのインストール (Mac)
Mac では Homebrew を使用したインストールもできます。
(Thanks tsukaby, takashyx, OskaMathis)
以下コマンドでインストールできます。
# Homebrew 2.6.0 未満の場合
$ brew tap homebrew/cask-fonts
$ brew cask install font-hackgen
$ brew cask install font-hackgen-nerd
# Homebrew 2.6.0 以降の場合
$ brew tap homebrew/cask-fonts
$ brew install font-hackgen
$ brew install font-hackgen-nerd
謝辞
Hack を提供してくださっている作者様、源柔ゴシックを提供してくださっている作者様、源柔ゴシックの生成元である源ノ角ゴシックと M+ OUTLINE FONTS の作者様、Nerd Fonts を提供してくださっている作者様へ、この場を借りて深くお礼申し上げます。
「白源」作成までの経緯
Ricty は美しい
プログラミングフォントについて調べると、必ずと言っていいほど出てくるのが 「Ricty」という和文対応のプログラミングフォントです。
和文対応のプログラミングフォントはいくつか公開されていますが、その中でも Ricty は抜きん出て視認性に優れ、さらに英文と和文の字体のバランスがとても良く、合成されたフォント同士が高度に調和されている印象を受けました。
それに魅了された僕は、いくつかのプログラミングフォントを試しては結局 Ricty に戻る…を繰り返していたのでした。
以下は普段使用している、Ricty の視認性向上版となる Ricty Discord です。
Ricty Discord |
---|
ちなみに Ricty は、英文のラテン文字には Consolas を意識して作られたという Inconsolata、和文の文字には視認性の良い Migu 1M というフォントが表示されるように合成されたフォントですが、Migu 1M のライセンスの影響で合成後のフォントファイルの配布は行われておらず、合成スクリプトのみを公開する形が取られています。 (合成スクリプトの使い方は割愛します)
Ricty のデメリット
とにかく美しい Ricty ですが、フォント比較系のブログ記事で否定的な意見を見かけることもあります。否定意見では以下が多い気がします。
- Inconsolata の字体が細すぎて見づらい、表示がかすれる
- Migu 1M (M+ OUTLINE FONTS) の丸みを帯びた字体が好みではない
- フォント生成がめんどくさい
そこで Ricty と同等の視認性を持ち、字体はもっと太く、そして和文は M+ 系のフォント以外で、さらにライセンス問題もクリアしてそのまま配布できるフォントは作れないだろうかと考えました。
M+ 系フォントはなぜか Electron 製エディターの DirectWrite との相性が悪い
もう一つ、Windows ユーザーの自分には許し難いデメリットがあったのでした。それは、Windows 上の Electron 製のテキストエディターではアンチエイリアスがうまく掛かってくれないことです。(きっと Mac なら綺麗なんだろうな…使ったことないですけど。)
Ricty Discord | 白源 (はくげん/HackGen) |
---|---|
普段僕は、VSCode や Inkdrop といった、エディター部が Electron 製のアプリを利用しています。
もちろんそれらのアプリ上での表示は、上記のようにガタガタなものになるのでした。悲しみ。
フォント選定
フォントの選定は、前述の通り Hack と源柔ゴシックにしました。以下、簡単にご紹介です。
しっかりとした太さを持った「Hack」
Hack は SIL ライセンスで提供されている素敵フォントです。太めで見やすい字体を見た瞬間、「これだ!!」と思って選定しました。
このフォントは、プログラミングフォント「Cica」の元になっているのを知っている方もいるのではないでしょうか。
フリーライセンスの和文フォントの定番「源ノ角ゴシック」の派生フォント「源柔ゴシック」
フリーライセンスで和文フォント、と考えた時点で源ノ角ゴシック系だと決めていました。
いくつか試した中で、丸ゴシック風の源柔ゴシックの L タイプ(丸みが少ない版)が Hack の雰囲気に合っていると感じたため、採用させていただきました。
ちなみに源ノ角ゴシックの派生フォントでは最も有名なのではなかろうかという源真ゴシックは、前述の DirectWrite 問題が発生していました。源柔ゴシックと同じ作者の方のフォントなので、ちょっと不思議です。
いざ、「白源」を生成
詳細な生成手順やノウハウは、また別の記事にまとめたいと思いますが、流れとしては以下のような感じです。
なお、合成に使ったツールはお馴染みの FontForge です。また、合成後のメタデータ編集には fonttools (ttx コマンド) を利用しました。
- Hack の高さを源柔ゴシックに合わせ、さらに幅を狭める (X 幅:90%, Y 幅:94%)
- 破断線 (brokenbar) をパイプ記号 (verticalbar) にコピーして Y 幅:114% に変形
- 源柔ゴシックの幅を Hack に合わせて広げる
- 編集した Hack と源柔ゴシックを合成
- フォントの高さ等のメタデータが保存されている OS/2 テーブル、post テーブルを修正 (これをしないと等幅フォントとして OS に認識されなかったり、斜体や太字としてフォント登録がされなかったりする)
(後記) ヒンティングを付与
英字の生成元である Hack と白源を見比べると、どうも白源の英数字は少しぼやけたような、滲んだような表示になっている気がしていました。
調べてみたところ、Hack では ttfautohint というツールでヒンティング情報を付与しているのですが、Hack を fontforge を使って白源へ合成する際にヒンティング情報が外れてしまうことが原因のようでした。
そのため、Hack とほぼ同等の ttfautohint パラメータを使い、ヒンティング情報を"Hack 由来の部分だけ"に付与しました。 日本語部分にも掛けると漢字の表示品質が著しく落ちるため、英字部分にだけ掛けるようにしました。(情報が無かったため大変でした……)
以下が、ヒンティングの有無の比較画像です。「=」記号が特に効果の出方が顕著で、ヒンティング無しだとぼやけて上下平行に並んだ線が触れそうになっているのが、ヒンティングが効いてしっかりと分離しているのが見て取れます。
ヒンティング無し | ヒンティング有り |
---|---|
開発状況の発信
改善の試行錯誤などを Twitter で発信することがあります。気になる方はチェックしてみてください。
https://twitter.com/tawara_san
(2019/08/09) 若年者ものづくり競技大会 (技能五輪ユース大会) の指定フォントになりました!
第14回 若年者ものづくり競技大会 (技能五輪ユース大会) 業務用ITソフトウェア・ソリューションズの部 の競技環境プログラミングフォントに指定されました!
(2021/06/14) HackGen の姉妹フォント "Firge (ファージ)" をリリース
HackGen の姉妹フォント "Firge (ファージ)" を試験的にリリースしました!
https://github.com/yuru7/Firge/releases
英数字部分に Mozilla 製 Fira Mono、日本語文字部分に HackGen と同じ源柔ゴシック(濁点等の修正も含む)、を適用しています。
HackGen の批判的な意見として多かった以下の点を満たすことを意識しました。
-
0
はドットゼロではなくスラッシュゼロに。 -
|
は破断線ではなく直線に。
参考
フォント作成にあたり、以下の記事が大いに参考になりました。
ありがとうございました。
コメント
@tawara_(編集済み) リンクをコピー このコメントを報告 2
@tsuyoshi_choリンクをコピー このコメントを報告 2
@tawara_リンクをコピー このコメントを報告 1
@PersonInKlingonリンクをコピー このコメントを報告 2
@PersonInKlingonリンクをコピー このコメントを報告 3
@nkayリンクをコピー このコメントを報告 0
@nakawankumaリンクをコピー このコメントを報告 3
@tawara_リンクをコピー このコメントを報告 1
@PersonInKlingonリンクをコピー このコメントを報告 0
@tsuyoshi_choリンクをコピー このコメントを報告 0
@tSU_RooTリンクをコピー このコメントを報告 0
@albireoリンクをコピー このコメントを報告 3
@tawara_リンクをコピー このコメントを報告 3
@tawara_リンクをコピー このコメントを報告 2
@peace098beatリンクをコピー このコメントを報告 1
@tawara_リンクをコピー このコメントを報告 1
@Atelier-Mirai(編集済み) リンクをコピー このコメントを報告 0
@s-showリンクをコピー このコメントを報告 

0
@tawara_リンクをコピー このコメントを報告 1
@tawara_リンクをコピー このコメントを報告 0
@sutohリンクをコピー このコメントを報告 0
@tawara_(編集済み) リンクをコピー このコメントを報告 2
@Fushiharaリンクをコピー このコメントを報告 2
@tawara_リンクをコピー このコメントを報告 0
@s-showリンクをコピー このコメントを報告 

0
@tawara_リンクをコピー このコメントを報告 1
@s-showリンクをコピー このコメントを報告 
2
@tawara_リンクをコピー このコメントを報告 1
@PersonInKlingonリンクをコピー このコメントを報告 0
@tawara_リンクをコピー このコメントを報告 3
@PersonInKlingonリンクをコピー このコメントを報告 2
@tawara_リンクをコピー このコメントを報告
1
@chirimenリンクをコピー このコメントを報告 0
@PersonInKlingonリンクをコピー このコメントを報告
0
@tawara_リンクをコピー このコメントを報告 1
@bundai223リンクをコピー このコメントを報告 1
@PersonInKlingonリンクをコピー このコメントを報告 0
@tawara_リンクをコピー このコメントを報告 0
@tawara_リンクをコピー このコメントを報告 1
@PersonInKlingonリンクをコピー このコメントを報告 0
@tawara_(編集済み) リンクをコピー このコメントを報告 0
@tawara_リンクをコピー このコメントを報告 0
@Atelier-Miraiリンクをコピー このコメントを報告 0
@PersonInKlingon(編集済み) リンクをコピー このコメントを報告 2
@PersonInKlingon(編集済み) リンクをコピー このコメントを報告 0
@albireoリンクをコピー このコメントを報告 2
@PersonInKlingonリンクをコピー このコメントを報告 0
@tawara_リンクをコピー このコメントを報告 1
@PersonInKlingonリンクをコピー このコメントを報告 1
@Atelier-Miraiリンクをコピー このコメントを報告 1
@tawara_(編集済み) リンクをコピー このコメントを報告 4
@PersonInKlingon(編集済み) リンクをコピー このコメントを報告 0
@tawara_リンクをコピー このコメントを報告 1
@PersonInKlingon(編集済み) リンクをコピー このコメントを報告 0
@PersonInKlingon(編集済み) リンクをコピー このコメントを報告 0
@tawara_リンクをコピー このコメントを報告 0
@PersonInKlingonリンクをコピー このコメントを報告 0
@tawara_(編集済み) リンクをコピー このコメントを報告 0
@vj_eaリンクをコピー このコメントを報告 0
@PersonInKlingonリンクをコピー このコメントを報告 
0
@PersonInKlingon(編集済み) リンクをコピー このコメントを報告 0
@tawara_(編集済み) リンクをコピー このコメントを報告 0
@PersonInKlingon(編集済み) リンクをコピー このコメントを報告 

0
@vj_eaリンクをコピー このコメントを報告 1
@tawara_リンクをコピー このコメントを報告 1
@PersonInKlingon(編集済み) リンクをコピー このコメントを報告 0
@tawara_リンクをコピー このコメントを報告 0
@tawara_リンクをコピー このコメントを報告 1
@tawara_リンクをコピー このコメントを報告 
https://github.com/yuru7/HackGen/tree/master/build https://github.com
1
@PersonInKlingonリンクをコピー このコメントを報告
0
@tawara_リンクをコピー このコメントを報告 0 サービス利用規約に基づき、このコメントは削除されました。
@PersonInKlingonリンクをコピー このコメントを報告
0
@tawara_リンクをコピー このコメントを報告 0
@nkayリンクをコピー このコメントを報告 1
@tawara_リンクをコピー このコメントを報告 0
@PersonInKlingonリンクをコピー このコメントを報告 0
@snozkw3リンクをコピー このコメントを報告 1
@tawara_リンクをコピー このコメントを報告 0
@nakawankumaリンクをコピー このコメントを報告 0
@PersonInKlingon(編集済み) リンクをコピー このコメントを報告 2
@nkayリンクをコピー このコメントを報告
0
@tawara_(編集済み) リンクをコピー このコメントを報告 0
@nkayリンクをコピー このコメントを報告 0
@miyabi417リンクをコピー このコメントを報告 0
@tawara_リンクをコピー このコメントを報告
3
@miyabi417リンクをコピー このコメントを報告 0
@x_xリンクをコピー このコメントを報告 1
@tawara_リンクをコピー このコメントを報告 1
@sanoaリンクをコピー このコメントを報告 0
@tawara_リンクをコピー このコメントを報告 0
@sanoaリンクをコピー このコメントを報告 0
@tawara_リンクをコピー このコメントを報告 0
@sanoaリンクをコピー このコメントを報告 0
@miyabi417リンクをコピー このコメントを報告 0
@chirimenリンクをコピー このコメントを報告

0
@albireoリンクをコピー このコメントを報告 0
@tawara_リンクをコピー このコメントを報告 0
@chirimenリンクをコピー このコメントを報告 1
@taketsリンクをコピー このコメントを報告 1
@tawara_リンクをコピー このコメントを報告 0
@takets(編集済み) リンクをコピー このコメントを報告 0
@tawara_リンクをコピー このコメントを報告 0
@taketsリンクをコピー このコメントを報告 1
@tawara_リンクをコピー このコメントを報告 - Powerline 系のシンボルの位置合わせ
- HackGenNerd Console では、Nerd Fonts の記号を全て半角幅にした (注1)(注2)
1
@taketsリンクをコピー このコメントを報告 1
@kunion(編集済み) リンクをコピー このコメントを報告 1
@tawara_(編集済み) リンクをコピー このコメントを報告 2
@kunionリンクをコピー このコメントを報告 0
@falaリンクをコピー このコメントを報告 0
@tawara_リンクをコピー このコメントを報告 0
@falaリンクをコピー このコメントを報告 1
@tawara_リンクをコピー このコメントを報告 4
@kunionリンクをコピー このコメントを報告 0
@chirimen(編集済み) リンクをコピー このコメントを報告 0
@tawara_リンクをコピー このコメントを報告 0
@chirimenリンクをコピー このコメントを報告 0
@tawara_リンクをコピー このコメントを報告 0
@hiro1116リンクをコピー このコメントを報告 0
@tawara_リンクをコピー このコメントを報告 0
@hiro1116リンクをコピー このコメントを報告 0
@mmngiリンクをコピー このコメントを報告 0
@_sei5リンクをコピー このコメントを報告 0
@tawara_リンクをコピー このコメントを報告 - 全角の
- フォントによっては半角表示になる
- 「フォントによって見た目が変わってしまうのだな」と割り切って、
0
@UtaMoriリンクをコピー このコメントを報告 1
@Frato(編集済み) リンクをコピー このコメントを報告 0
@tawara_リンクをコピー このコメントを報告 0
@querykumaリンクをコピー このコメントを報告 0
どうもフォントのメタ情報の1つ、kern テーブルが Mac 向けに最適化できていないらしく、インストールできないとのこと…
https://github.com/yuru7/HackGen/issues/1
手元に Mac を持っていないので再現取れずキツいのですが、調整してみます!すみません!
(2019/05/23 Updated)
当 issue を解消したバージョン v0.1.1 をリリースしました。ご協力いただいた皆様、大変ありがとうございました。
ライセンスフリー、ではないと思いますが...
via SIL Open Font License - Wikipedia
tsuyoshi_cho さん
生成元フォント作者からの許諾及び使用料不要、改変及び再配布可能という意味で、ライセンスフリーと記載しました。
ライセンスフリー
https://kotobank.jp/word/%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E3%83%95%E3%83%AA%E3%83%BC-9580
白源も SIL Open Font License が適用されますが、「許諾・使用料不要=ライセンスフリー」というのが一般的な認識ではないかと思うので、問題ないと考えています。
さて、プログラムといっても、コメントなどには半角英数や日本語以外の文字も書くことがあるので、
その部分で気になった点がありました。
少なくとも結合分音文字記号である、U+0310~U+35Fは半角アルファベットとの幅がよいのでは。
(結合分音文は、字記号アルファベットの後ろに書くと、直前のアルファベットの上につくアクセント記号のようなもの)
今の状態だと、アクセント記号を付けると直前のアルファベットの文字幅がかわってしまいそうな気がします。
(一応、固定幅を狙ったフォントだとまずい気がします。)
他では、ラテン拡張AとB(U+0100~U+24FF)
IPA拡張(U+0250~02AF)は半角英数字と同じ幅がよろしいかと。
キリル文字とかは意見が分かれるところです。
(そもそも、プロポーショナルフォントが当たり前の時代に、半角とか全角とかのような
文字幅由来の言葉を使うのはすごくいやですが、通じる言葉として他にないかな。)
エディタで半角スペース可視化の設定をしている場合に、可視化記号がなんかずれます。
僕と同じでプログラムのためにフォントを調整している人がいた。
僕は等幅嫌いなので、プロポーショナルなフォントを使ってます。
プロポーショナル派少なくて残念ですが
nkay さん
ご報告ありがとうございます。
合成のために源柔ゴシックを調整している箇所が悪さをしている気がします。なんとか調整してみます。
DirectWriteを意図したフォントとのことですが、試しに使用中のエディターのDirectWriteを無効にしても、それほど破綻した感じにはなりませんでした。
そのため、Powershell ISEのフォントとし使っても、結構見やすかったです。
@tawara_ なるほど了解です。
正直ライセンスフリーはあまり聞いたことがないので、一般的なのかはともかく定義的にはそうなる、ということですね。
(ライセンスそのものがないではなく、ライセンスが無料のほうのフリー、でいいのかな)
スモークフリーだと無煙、シュガーフリーだと無糖だと受け取りますので、
ライセンスフリーと書くとライセンスが無い(必要ない)、
つまりパブリックドメインであると受け取られてしまう可能性があると思います。
しかし実際にはライセンスフリーというよりは、
著作権があり、フリーなライセンス(SIL Open Font License)の元で改変・
再配布などが許諾されているので誤解を招きます。(著作権を誰かが保持しているなら
ライセンスによる許諾無しには再配布できません)
@tsuyoshi_cho
この場合は無料というより自由の方だと思います。
配布や改変についてもごくわずかな制約しかないので。
まあ「ライセンスフリー」だとパブリックドメイン的な意味に受け取られそうだから、「フリーライセンス」の方が妥当なのかもしれませんね。
@tSU_RooT
なるほど…勉強になりました。ありがとうございます。
@tsuyoshi_cho @albireo
ごもっともなご意見です。「フリーライセンス」の表記に修正しました。
皆さまご指摘ありがとうございます!
@PersonInKlingon
半角幅、全角幅の適用範囲は悩ましいところではありますが、ひとまず Ricty スクリプトベースそのままで全角化する記号は選定しています。
正直なところ、その辺りの精査はこれからですが、こういったご意見は参考になるので助かります。ありがとうございます。
良いフォントです。早速使わせてもらいます。情報提供ありがとうございます!
@nkay
可視化記号の幅がおかしい件、VSCode で再現できました。
VSCode で可視化記号に使われているビュレット記号を半角幅にすることで解消しましたので、v0.2.0 のリリースをお試しいただけますでしょうか。
フォント作成、ありがとうございます。
atom 1.37.0 / macOS 10.14.5 で使ってみました。
atom の既定値である Menlo から、hackgenに変更したところ、
文字の大きさが小さく、見づらく感じました。
一つ一つの文字の余白を少なくする / 文字の太さを大きくする
など、もう少し見やすければと思いました。
個人の好みや環境に因るところも、もちろんございますが、

ご参考にしていただければ幸いです。
Atom1.37.0 / macOS 10.14.5で使用したところ、日本語だけの文書だと、文字列折り返しのラインを超えて文字が表示されてしまうようです。
一方、ソースコードのように、半角アルファベットと日本語が混在する文章だと、文字列折り返しラインできちんと折り返しが行われています。
スッキリした印象でとても好印象なフォントですので、可能な範囲で対応を検討していただければと思います。
@Atelier-Mirai
ご報告ありがとうございます。
英文フォントよりも小さく見えるのは、等幅和文フォントの宿命とも言える事象です…。
というのも、和文フォントに含まれる漢字を全角なので幅2とすると、半角となる英字類は幅1に収めなければいけません。
そのため、違和感を感じない範囲で Hack を縮小しています。とはいえ、源柔ゴシックそのままの幅に合わせて縮小してしまうと Hack が小さくなり過ぎます。それを源柔ゴシック側の幅も少し広げることで、Hack の縮小率をできるだけ抑えています。
これ以上大きくしようと思うと、Hack を縦に引き伸ばすしかないわけですが、そうすると Hack の字体が縦に引き伸ばされた感が強くなるので、違和感が出てしまうのです…。
純粋な英文フォントは「全角幅の半分の幅に抑えなければいけない」という制約はないので、 Menlo のようにいい感じの文字幅にすることができるというわけです。
ちなみにこの制約を緩めて、英字の文字幅をできるだけ大きく取れるようにしたのが Source Han Code JP などの 半角2:全角3 幅のフォントですね。
同じ幅比率を採用すれば、もう少し英字を大きくもできると思いますが、個人的に 半角2:全角3 は好みではないので、今のところは作る予定はありません。
@s-show
ご報告ありがとうございます。
atom は使っていないので詳しく分かりませんが、折返しを判定するロジックとの相性が悪いのか、 DirectWrite で文字幅が少し広がって表示されるのでそれによるものなのか…。ちょっと調べてみますね。
ちなみに、同じ文章を他のフォントで表示するとどうなりますか?
可能なら Ricty などの 半角1:全角2 幅のフォントと、Source Han Code JP などの 半角2:全角3 幅のものの見え方を教えていただきたいです。
Powerline対応、期待してます。
@sutoh
Powerline パッチを当てた HackGen Console for Powerline をリリースしました。ぜひお試しください!
ゼロを斜め線にしたバージョンも欲しいです
@Fushihara
すみません、スラッシュゼロは今のところ対応する予定はありません!ぜひ、ドットゼロに慣れて可愛がってもらえると幸いです。
@tawara_ 様へ
ご回答していただきありがとうございます。
Rictyにした時の表示は次のとおりです。
Source Han Code JPの場合の表示は次のとおりです。
@s-show
今更気づいたのですが最初に頂いた折返し幅を通り過ぎてしまっているスクショ、白源がちゃんと適用できていなさそうですね。
「0」の字体が白源のドットゼロではなく、スラッシュゼロになっているので、別のフォントが適用されてしまっているのではないでしょうか?
@tawara_ 様へ
ご指摘を受けてあらためて設定したところ、以下のスクショのとおり問題なく表示されました。
こちらの不手際でご迷惑をおかけして申し訳ありませんでした。
@s-show
無事折返しできたとのことで、安心しました。
白源も公開から数回バージョンアップを重ね、英数字のバランスを調整したり、Atom の改行記号に使われている「¤」を半角にする等、少しずつブラッシュアップをしています。
また何かお気づきのことがあれば、ご報告いただければ助かります。
いろいろと対応おつかれさまです。新しい版をDLさせていただきます。
ところでMenloフォントの書き込みを見ていて思いましたが、Hackgenの3:2バージョンが欲しいです。
tawaraさんは使わなということですが、検討いただけないでしょうか。
3:2のSource Han Code JPは、そもそも英字が横長すぎて、どうしてもコードの見通しが利かないです。
できれば、Menlo2文字の幅に合わせて、日本語を合わせるくらいの文字があると、読みやすくなりそうだと思っています。
(スクリプトを自分でちょっと改修すれば簡単に出来るんでしょうか?
前にRictyのスクリプトを走らせた関係で、LinuxにFontforgeを載せた環境は、残っています。)
@PersonInKlingon
一通りの編集をスクリプトのみで完結できるようになってきたので、試しに作ってみました。以下から「HackGen53-*.ttf」のファイルをダウンロードして試してみてください。
https://github.com/yuru7/HackGen/tree/5_3_dev/build
ちなみに上記ページのフォントですが、実は 半角3:全角2 ではありません。
半角3:全角2 だとどうしても多少の不格好さが出てしまうので、異例の 半角5:全角3 という比率を編み出してみました。これなら Hack と源柔ゴシックの大きさをほぼ維持できるため、Hack 従来の大きさのまま、綺麗な日本語表示を得ることができます。
なかなかバランス良く出来たのですが、やっぱり私は 半角2:全角1 が好みなので、通常の白源を常用すると思います。そのため、HackGen53 は積極的にメンテナンスされないかもしれない点はご承知おきください。
ありがとうございます。
僕も書き込んでから、5:3(35:21)か、7:4(35:20)くらいだったかなと後悔していました。
お気遣いありがとうございます。
今、秀丸やMeryあたりで見てみたんですが、見やすいです!

もう目が楽で楽で仕方がない。思わず顔が笑ってしまいます。
もうフォントに見とれてしまって、コードなんか全然頭に入らないほどです!
あと、このフォントをインストールしちゃいけない現場に連れいかれたら転職しそうほど。
Menloとの比較画像を出しておられた、@Atelier-Miraiさんも満足いただけるのではないでしょうか。
承知しました。仕方ないと思っています。

また、年号が変わるころに対応していたけたら(笑
おお、Mery 使いでおられましたか。私も Mery 使っています。実は Mery のフォント描画がとても綺麗だったことが、フォントへの興味の始まりなのです。
最近の Win 10 は、フォントを一般ユーザー権限でインストールできるようになったので、転職は免れそうですねw
その令和記号は、おそらくフォントフォールバックで OS が持っているものを表示していますね。源柔ゴシックには令和記号のグリフが含まれていなかった気がします。
まぁ半分ネタとして、そのうち Cica フォントのように「令和対応!」としてアップデートするかもしれませんw
よいフォントですね
ところでキリル文字の表示幅が HackGen では全角幅で、HackGen Console では半角幅になってるのですが
両者のフォントの位置づけはどんな違いがあるんでしょうか(Notepad++ で表示させています)
キリル文字コメントが頻出するので後者を使うことになりそうです
そういえば源柔ゴシックの更新は長らく止まっていたんですね。
自家製フォント工房の製作者さんから引き継げないか聞いてみます。
(スクリプト生成ならともかく、手作り調整がたくさん入っていたら無理ですが)
Meryのフォントフォールバックは分かっていましたが、IMEパッドの文字コード表でも出てきたので、勘違いしてました。

こんなところもフォントフォールバックだか、フォントリンクだかが利いていたとは!
@chirimen
通常版 HackGen は、英字と一部記号のみを Hack ベースの文字 (半角) とし、その他記号 (キリル文字含む) は源柔ゴシックベースとしています。源柔ゴシックではキリル文字が全角で登録されているため、キリル文字の表示は全角になります。
これは、日本語文書とプログラムでハイブリッドに使うことを想定した組み合わせ (のつもり) です。
一方、HackGen Console は、Hack ベースの文字を一切除外せずに反映しています。Hack には多くの記号が含まれており、これによりキリル文字も半角で表示されるようになります。
コンソール画面では全角文字が表示されることによりカーソル位置がずれる等の不都合が多いため、Hack ベースの文字をフルに適用することで、可能な限りこの問題に対応した形です。コンソール向けの利用の他にも、仰っているような「キリル文字も半角がいい」といった要望も満たせるかと思います。
ただし、HackGen Console では矢印記号や三点リーダー「…」など、日本語文書でよく利用する記号も全て半角になるため、その辺りは好き嫌いが出てくると思います。
Awesome!
Powerlineの表示がRictyの時よりきれいに見えてよいです!
0が見慣れるまではちょっと違和感がありそうです
@tawara_ さん
さきほど自家製フォント工房の作者さんに、更新を停止されるのであれば、
フォントの作成を引き継がせてもらえないかと(もう少し丁寧に)メールしてみました。
作者さん曰く更新予定はあるそうです。
(令和対応と、等幅でカーニングがきいている問題への対処で)
後者の問題については、一部のソフトとフォントサイズの組み合わせで
2:1が維持できなかった問題と、何か関連はありますでしょうか?
無関係だとしても参考までに情報共有させていただきました。
@PersonInKlingon
おお、凄い行動力ですね。
源柔ゴシックさん更新予定なんですね。アップデートされ次第、白源も追従していきたいと思います。情報ありがとうございます。
源柔ゴシックを VSCode に設定すると、全角幅文字の方が若干広く表示されて文字ズレが起きるのが見てとれますが、それの対処かもしれませんね。
ちなみに白源で起きていた文字ズレは、カーニング云々というより私のビルドミスですね…(汗)なので、源柔ゴシックで修正予定というカーニング問題との関連はおそらく無いと思います。
@bundai223
お試しいただきありがとうございます!
Powerline は私自身が使わないので、ちゃんと使えるのかしらと心配していましたが、上手く表示されているようで安心しました。
0 の字体は使っていれば慣れると思いますが、字体を縮小しているせいで中のドットがちょっと潰れたようなボケた表示になるのがイマイチだなと感じます。
スラッシュゼロにするわけではありませんが、ドットゼロがもう少し見易くなるように工夫してみたいと思います。
秀丸で5:3を使うときには、以下の設定にすると、それなりにきれいになります。
・書式設定のフォントで、「プロポーショナルフォント扱い」にチェック。
・動作環境-文字の描画で「アウトライン方式」
プロポーショナルフォント扱いのチェックを外すと全角の横幅が意図したとおりに表示されません。
MeryやATOMの方が見た目がきれいでしたが。
(Mery, サクラ、VIM, ATOM, 秀丸、Powershell ISEなどで使っています)
@PersonInKlingon
動作確認にサクラエディタで見てみましたが、プロポーショナルフォント非対応バージョンだと上手く表示されませんね。半角2文字幅を強制的に全角文字に適用してしまうようです。非公式に公開されている自家製プロポーショナルフォント対応版だと、正常に表示されます。
半角3:全角2 幅もそうですが、半角1:全角2 幅以外の等幅フォントは、プロポーショナルフォント対応エディタでしか使えなさそうですね。まぁ、最近のエディタは大方使うことができると思いますが。
@PersonInKlingon
@Atelier-Mirai
v0.6.1 以降、半角5:全角3幅の HackGen53 をリリースファイルに同梱するようにしました!
当初は 半角2:全角1幅にこだわっていましたが、やはり英字が大きいことで見易くなる効果は高いと感じたため、正式にリリースに含めることとしました。
お二人の助言のおかげです。ありがとうございます!
HackGen53、リリースありがとうございます。

早速、入れて使っています。
記号(,:'"など)が、控え目なので、もう少し太いと視認性が良く、嬉しいですが、
Hackgenに比べて、とてもコードが見やすくなり、とっても助かります。
また、全角空白がきっちり分かるのもありがたいです。(不自然なコードですが、投稿用に空白を入れてみました)
素敵なフォントを作ってくださり、ありがとうございます(^.^)
@Atelier-Mirai さん
元の英字フォントは、Menloではなくて、Hackなので、それは無理というかコンセプト(というか好みの)違いかと。
加えて迂闊にMenloに似せすぎて特許問題が出ても面倒な感じが・・・
もしMenloに似せるなら、ご自身でフリー(apacheLicense)のMelsoで合成するという手もありますね。
どちらの元フォントも素晴らしいと思いますが、私は Menlo(およびMeslo)より、今のHackの方が好みです。
Mesloについてはこちら。
GitHub - andreberg-Meslo-Font Customized version of Apple's Menlo font. Great monospaced font for development work. Should als
https://github.com/andreberg/Meslo-Font
また、MesloとMenlo Hackとの比較は、以下を見てください。
コーディング(プログラミング)向け 欧文モノスペースフォント特集!! – Chienomi
https://chienomi.reasonset.net/archives/digi/cat-digi-prog/1419
プログラミング・コーディングの作業効率UP!ミスを激減させる見やすいフリーフォント18 co-jin
http://co-jin.net/web/free-monospaced-font
補足です。デザイン見てみましたが、MesloとHackの文字をうまいこと選びなおすと、Menloそっくりになりそう。
なので、どうしてもという場合は自作してみる方が良さそうです。
その場合は、名前もHackGenではなくて、HackGenlo(はくげんろう)とか。
MesloとHackのライセンスがOKでも、組み合わせの結果、デザインがMenloに寄りすぎると著作権で訴えられそうですが。
非公開でしたら、最初からMenloと合成しちゃう方がいいかもですね。源柔とMenloで「にゅう麺」?
もうそろそろ個別のリクエストに応えるより
「お気に入りフォントの寄せ集めとカスタマイズでオレオレフォントを作る方法」
みたいな記事を作った方がいいかもしれませんねw
@albireo さん たしかに「~の方法」とかは、Qiitaっぽいですね。
@Atelier-Mirai
割と満足いただけているようで良かったです。
記号の大きさの問題は、Hack を縮小して合成している通常版白源のダブルクォーテーションが特に顕著です。
その辺りは以前から改善したいと考えていたので、v0.6.3 で「,.;:'"`」の字体サイズを違和感の無い範囲で大きくしました。このサイズ調整は HackGen53 でも適用されています。微増ですが、いい感じになったと思います。
更に目が疲れなくなった気がします。
いろいろなフォントを紹介してくださり、また、記号も大きくしてくださり、ありがとうございます。
リクエストする側は見やすいといいですの一言ですが、作成はいろいろ奥が深く大変かと思います。
自分でも作成できるとよいのですが、なかなかそうもいかず、本当にいろいろご配慮下さり、感謝です!
@PersonInKlingon @Atelier-Mirai
v0.7.0 をリリースしました。
実は、Hack よりも英数字のボケ感が強く出てしまうことが気になっていたのですが、原因が分かったため対処しました。具体的には、フォントのヒンティング情報というものを Hack とほぼ同等の内容で付与しました。
これにより、白源の英数字部分の明瞭度が上がりました。Windows 上では、「=」記号なんかが効果の出方として顕著です。
ヒンティングがきちんと掛かっている日本語プログラミングフォントはほぼ皆無であるため、より差別化できたんじゃなかろうかと、一人で喜んでいます
よろしければお試しください。
使わせていただきました。
非DirectWrite系のツールでの表示が前バージョンに比べて改善しましたね。
-あえて1360×768の解像度で使用した画像を貼りました-
■ サクラエディタ(改善前のHackgen=0.63で表示)

■ サクラエディタ(改善後のHackgen=0.70で表示)

→ 小文字の[a]や[m]の下部の線が細くなっていたことや、全体的なかすれが改善しました。
■ Powershell ISE(改善前のHackgen=0.63で表示)

■ Powershell ISE(改善後のHackgen=0.70で表示)

→ mの下部、aの下部などにあったノイズが無くなりました。
※ソースは、ここのサンプルを参考に貼りました
https://dev.classmethod.jp/cloud/aws/powershell-script-sample-prepare-initial-environment-2017-summer/
@PersonInKlingon
ご報告ありがとうございます!
なかなか良好なようで、安心しました。今後とも愛用してやってください。
Italic体がイケてるという理由で、ときどき、Consolasに戻ったりします。

そんなとき、MeryのフォールバックフォントにHackGen53を指定すると、
5:3に調整された源柔のおかげでConsolasとの混植でもウェルバランスで表示してくれました。
こういうHackgenの使い方もありですね。
上記は、Meryの設定を以下で表示させました。
メインのフォント:Cosolas
フォールバック :Hackgen53
協調文字列(1):斜体
別PCに入れようとしたら、新バージョン0.81が!
ちょっとテストしてみて、結合分音文字記号である、U+0310~U+35Fはで不具合に見えた点があったので、ご報告します。
以下のサンプルは、最初のCの直後に、U+0031を挿入しています。
源の明朝*参考

源の角ゴシックCode JP N*参考

結合分音記号って

Hackgen53

アクセント記号が完全に消えてしまいました。 無印のHackgenでも同じ挙動。
Console版が出来てからは、Console版しか使っていなかったので、どのバージョンからかは分かりません。
Hackgen Console

アクセント記号が別位置に配置されます。
0.6当たりではアルファベットの真上に表示されていた気がします。
世の中でもKindleのフォントなどが一部、そうなるので、Console用としては、ありかもしれないです。
Hackgen53 Console

上記と同様
ちなみにですが,Console版と分ける前のHackgenでは、
アクセント記号を振ると、アルファベットが余白込みで全角幅に変化するような実装でした。
おそらく、源の角ゴシックCode JPになるか、Console版のようになるかが、正しい状態なんだと思います。
@PersonInKlingon
ご報告ありがとうございます。
ご報告の内容とは関係ないのですが、v0.8.1 で行幅が大きくなりすぎる不具合が発生しているため、再ビルドしています。一旦 v0.8.1 はリリースを取り下げているため、少しお待ちください。
@tawara_
もとでも全然使えるフォントだと思いますが、ご対応ありがとうございます。
@PersonInKlingon
v0.8.2 をリリースしました。
行幅の修正の他、ご申告の結合分音記号に暫定的に対処してみました。とりあえず表示されるようにはなったかと思います。試してみてください。
わたしはプログラマーではありませんが、テキストエディター「Mery」の更新報告記事のコメント欄でお見かけして、すばらしいフォントだったので、長らく愛用してきた「Migu」から乗り換えさせていただきました。
「バージョン 0.7.0」では、半角空白の字幅だけがほかの半角文字のそれよりも狭くて、気になっておりました。しかし今回の更新で、すべての半角文字が空白の幅に揃えられて、縦に伸びていた字形も修正されたようで、さらに美しくなっています。ただ、全角文字の幅はそのままであるために、半角2文字分の幅と全角1文字分の幅とが、キッカリと揃わなくなってしまっているようです。
ところで、リリースノートなどには書かれていないようですが、半濁点を句点(。)と同じくらいに拡大されたようですね。この変更も、大変気に入っております。「Migu」のそれほど大きくはないので、悪目立ちはせず、ますます読みやすいフォントになりました。
アクセント記号、表示されました!
ところで、@tawara_ さんが、Consoleは源柔ゴシック基準としているのはわかりますが、やはり色々比較すると結合文字が全角幅になる場合があるのは違和感が。
上の図は、半角のa, 全角のa ひらがなの「あ」の右にアクセント記号を置いています。
日本語やキリル文字は、そもそも結合強調文字(Combining Diacritical Marks)とのペアカーニング(で合ってましたっけ?)に対応しておらず(結合せず)、文字の右側にあふれてしまいます。
これは、Hackgenに限った話ではありません。
結合文字で横にはみ出ずに結合するのは、半角アルファベット,(一部の発音記号のような)IPA拡張,ギリシャ文字くらいです。
そこに全角は含まれないため、ConsoleのつかないHackgenやHackgen53において、DCMを全角幅にするメリットはないのではと思います。
いくつかのフォントを見た限り、DCMの標準的なパターンは以下のいずれかがなきがします。。
A.半角幅で、はみ出す仕様にするか。(MS系の一部のフォント)
B.結合させる前提で半角幅にするか。(多分TTFではよく見るパターン)
C.結合させる前提で幅をゼロにするか。(源ノ角ゴシックCodePros式?)
とは、言え、原則に沿って決めるのも、わかりやすいとは思います。白源のファンのあくまで一意見として。
ところで、もともとHackの特徴でもあり、言ってはいけないところとわかってはいますが、
「;,:;,」と並べてみたときに、セミコロンが、もう少しだけ上に配置されていると気持ちよくないですか?
(そこを合わせないフォントも結構あるとは知りつつも)
「いや、今のままの方が区別しやすいよ」というご意見もありますよね?
@vj_ea
ご利用ありがとうございます!
長く愛用していたフォントから別のものに変更すると始めは違和感がありますよね。私も Ricty から白源に変えたときには違和感がありました…(汗)
それでも乗り換えてくださったという声を頂けると、公開した甲斐があったなーと思います。
よく気付かれましたね!
そうなんです。元々私も Ricty を使っていたので日本語部分は Migu 1m を使っていて、半濁音の判読性は結構気に入っていたのです。その要素を、源ノ角ゴシックに調和するように組み込みました。
これはおそらく、テキストエディタによって起こりうる仕様ですね。詳しくは分からないのですが、フォントは1.5の倍数以外の大きさを指定すると文字幅が合わなくなると言われています。Ricty なんかも、テキストエディタによっては 11pt や 13pt を指定すると全角半角比が崩れます。(白源は逆に 11pt や 13pt で幅が合うので、その辺りの計算法はよく分からないですが…)
ただ、もし Windows 10 で Mery をお使いなら DirectWrite 設定を OFF にすると、どのサイズでも半角、全角比がかっちり揃うようになると思います。
@PersonInKlingon
結合分音記号の表示方法の是非については、その点に私があまりこだわりが無いこともあって、正直なところ判断できないですね。
今回の修正のように「記号が全く表示されない」といった状況はプログラミングフォントというポリシー上、できるだけ避けたいとは思いますが、それが合字になる・ならない、合字後の表示方法 (半角 or 全角) という点については、今の状態が良いとも悪いとも言えないのが正直なところです。
例えば、今の HackGen のようにアクセント記号が付くと「À」といった全角の合字に表示が変わるのも、「全角になるから通常の半角『A』と混じっても区別が付きやすい」という意見もあれば、 PersonInKlingon さんのように「半角記号に対する合字なんだから、半角の方がスッキリする」という意見もあると思います。
なので、その点に関して議論をするだけのこだわりやネタが私の中に無い以上、「全角がいいなら通常の白源を、半角がいいなら Console 版を使ってね」としか言えないのが現状です。
特にその点に違和感は感じないですね。個人的な好みの範疇だと思いますが、私は今のように整然と並んでいる方が美しいと感じます。
また Ricty Discord の「[]{}」記号のように、括弧によって上下にズラして判読性を高めるという手法もありますが、この手法はゴチャッとした感が出るのであまり好みではないですね。
決してそんなことはありませんよ!
反映されるかは分かりませんが、ご意見はまず吟味したいと思っているので気になった点があればお知らせいただければ嬉しいです。
あれ、なんだか伝わっていない気がしたので、図を付けます。
今の方が判別はしやすい気もしますが、この辺は整然としてない感じがしませんか。セミコロンが少し上に行くと、そろうのかなと。
ただ、このずらしがHackの狙いというか味のような気もしますが、と言いたかったんです。
DirectWriteを適用すると、普遍的に起こる現象だったとは! 初めて知りました。解決方法も含めて、丁寧に教えてくださり、ありがとうございました。
確かに、手元のいくつかの等幅フォントでも試してみたところ、ズレの多少こそ各フォントでさまざまでしたが、いずれでも同様の現象が起こりました。例外的に、「MS ゴシック/明朝」でビットマップフォントが収録されているサイズ帯なんかだと、起こらないようですね。
これまでサイズ「12」を使っていましたが、これからは「11」にすることで対応しようと思います。サイズ11だと、「□」(U+25A1)の底の線がかなり薄く表示されるのがほんの少しだけ気になりましたが、これはそもそも合成元の「源柔ゴシック」でも同じみたいなので、しょうがないですね。
@PersonInKlingon
なるほど、そういうことでしたか。てっきり : と ; を上下にズラして見分けを付けやすくしたい、といったお話なのかと勘違いをしていました。
ご指摘の件は、おそらく先日施した「'":;.,」のグリフを拡大したことが原因のような気がします。もっとも単純な、グリフの中心を基準にした拡大をしているため、上下のズレが起きているのだと思います。
Hack で上下ズレが起きていなければ、まず間違いなく白源での修正が原因のズレですね。調べてみます。
これがHack単体でも同じズレは起きているんで、Hackgenの問題ではないですよ。「もともとHackの特徴でもあり」、と書いたのはそのためです。
ただこれらの高さを意図的揃えているプログラミングフォントも沢山あります。
Hackがずらしたのか、製作者が大雑把なのかは解りません。(揃ってるのが少しだけ好きですが)
@tawara_さんは、カンマのサイズまで調整されていたので、気づいてて気にしてない(受け入れてるのか)、気づいたら揃えたいか、どっちかなーと思い、投稿した次第です。
すみません、長くて。
@PersonInKlingon
確認しました。確かに元からズレてますね。私は 11pt くらいのサイズで使っているので、全然気づきませんでした。
これの Hack 製作者の意図は分かりませんが、確かに気になるといえば気になりますね。
少しセミコロンの位置合わせをしたいと思います。
@vj_ea
実は、DirectWrite を ON にしてもこの問題を無理やり修正する隠しオプションが Mery にはあります。
Mery.ini を開いて
[Display]
という記述の直下にGdiCompatible=1
という設定を書き加えると、どのサイズでも半角全角比が揃うかと思います。ただ、このオプションを ON にしているとフォントに含まれていない文字 (絵文字「😃」など) の表示が一部が欠けたような見え方がする等の影響があるかもしれません。まぁ Mery に限らず、どのエディターでもこういった文字ズレは起こることがあるので、もう私はズレていても気にしないことにしています…^^;
@PersonInKlingon
「.,:;」の配置バランスを調整しました。もう1px分「,」を下にしたいところですが、小さい文字サイズで表示したときにヒンティングにより下にズレすぎてしまう懸念があるため、このあたりにしてみました。
少し私の方で常用して感触を確かめたいのでまだリリースには上げていませんが、以下から調整後の白源をダウンロードできます。よろしければお試しください。
そのお気持ちは分かりますが、これは、これで見分けがつきやすいと思います。
コロン、セミコロン、カンマの丸い部分がすっきりして、より集中しやすいフォントになったと思います。
ところで合成は、シェルスクリプトだったんですね。Pythonにすると書かれていたので、てっきり現状がPerlと何かかな?と思っていました。
@PersonInKlingon
最初は Ricty の合成スクリプト (これもシェルスクリプト) をほぼ流用したので、その流れでシェルスクリプトですね。実際のところ、シェルスクリプトで fontforge 用のスクリプト (*.pe) を生成し、その生成した *.pe ファイルを fontforge コマンドに読み込ませて実行させている感じですね。
この *.pe ファイルの中身は fontforge の独自スクリプト言語で書かれたものなのですが、実は fontforge はこの独自言語以外にも python で書かれたスクリプトも読み込むことができます。
fontforge の独自言語は非常に使い勝手が悪く、合成する際に気を遣わなければいけない場面が無用に多いため、スクリプトの修正等のメンテナンスがしづらいです。なので、独自言語を辞めて同じ動作を python 化したいなーという目論見です。
すみません。私の好みとか抜きで、客観的にいくつか比較してみたので、ご報告します。
半角セミコロンが,やや下がるもの。
0.82(およびHack)
半角セミコロンがコロンなどと同じ高さのもの。
0.83暫定
セミコロンの二角目の「はらい」の終端と、カンマを合わせるもの。
(結果的にセミコロンは少し上にいく)
Consolas, 源の角ゴシック系(Source Han Codeを含む)
遊明朝、遊ゴシック, IPAフォント系, Arial ,
3ほどでなくても、ややセミコロンが上がっているもの。
Hack、Hackgen 0.70、Myrica、
セミコロンは上下せず、なぜか半角コロンだけ上がるもの。
MSゴシック系
セミコロンの形状が、コロンやカンマと全然異なるもの
Ricty Diminished, Lucida Console
@PersonInKlingon
情報ありがとうございます。
セミコロンひとつにも、製作者のセンスが出ているのは面白いですね。
セミコロン一つ取ってもこれだけ色々な形がある上、字体の好みは十人十色なので、フォントジプシーに陥るわけですね…😅
今のところ、Hack の字体には大きな不満がないので、とりあえず大きな修正は一通り終えたかなーという感触です。
今は、v0.7.0 以降付与しているヒンティング情報により文字サイズによって
+
記号の横棒が中心よりも少し下にズレるといった、一部の文字が本来の字体と異なる形になる現象を確認しているので、それを修正しています。ところで「半角5:全角3」という表記はこれでただしいのでしょうか?
「半角3:全角5」なような気がします。
@nkay
うわぁ…これは地味に恥ずかしいミスですね。記事中の表記を修正しました。
HackGen53 としているフォント名も、そのうち HackGen35 に変えるかもです…^^;
全角5:半角3と考えれば、フォント名は元のままでもいいのではと思っている間に、すでにgitのフォント名は変更されたのですね・・・
tawara_さん、はじめまして。
素晴らしいフォントをありがとうございます!
これから使わせていただきます。
少しだけ気になるのがRictyと比較すると丸括弧'()'の丸みが少ない点です。


元にされているHackがこういった字体なので慣れれば問題ないのかもしれませんが、開きと閉じの視認性が落ちたことが気になってしまいます。
ただの私のワガママですので流していただいて構いませんが、一応報告までにコメントさせていただきました。
@snozkw3
ご愛用ありがとうございます。
はい、おっしゃる通り、Hack の括弧記号は Ricty (Inconsolata) よりも開きが大きいです。ただ私としては、この点は慣れの範疇だと感じています。
改善要望が多いようであれば改めて検討したいと思います。
記号とくに、まるかっこ、ちゅうかっこ、かくかっこ(){}[] は違いが分かりやすいほうが好みではあります。
(誤記があったので若干修正)
@nakawankuma さん
この投稿をみて、私もいくつか考えてみたので、ちょっと話に混ぜてください。
ちなみに判別に時間を要する、とかのレベルでしょうか?
分かりにくいというより、「やや落ち着かない」レベルだったりしませんか?
私も懐の深い括弧の方がカッコいいと思いましたが、Hack紹介サイトを見て、少し考えが変わりました。
https://sourcefoundry.org/hack/assets/img/mockup/srcmockup.png
見間違いそうになる程ではない上に、以下の2点は「浅い括弧」のメリットに見えます。
1.括弧内の最初や最後の単語(変数)が目立ち、中身の視認性はよくなる
(開き括弧の直後に、わざわざスペースを入れなくても)
2.カッコを複数、例えば3つ「)))」とか重ねたときに、数えやすい。
Ricity,Myrica(Inconsolata系)やMonacoは括弧が深くなりますが、
MonofurやHack, Menlo等の浅め括弧のプログラミングフォントが増えてたのも理由があるのかなと
仰る通りデザインなので、感じ方は人それぞれだと思いますけどね。
Sublime Textで使うと、コンソールに
と出力され、斜体の表示がうまくいかないようです。
@nkay
HackGen は初期バージョンでは斜体フォントも同梱していましたが、あまり利用する場面が無いだろうという判断から、途中で同梱を取りやめている経緯があります。
そのため、初期バージョンをインストールされている方の環境では古いバージョンの斜体フォントが残ってしまっていることがあり、それが悪さをしている場合があります。
その場合は以下のツイートにあるような手順で古い HackGen をクリーンアップし、再度最新バージョンをインストールしていただくと復旧するかもしれません。
https://twitter.com/mu2in/status/1135734250127253504?s=19
@tawara_ 解決しました、ありがとうございます。
こんにちは
便利に使わせていただいております。大変ありがとうございます。
ご要望なのですが、ハイフンと長音記号の区別がつきづらいのですが、なんとかならないでしょうか
@miyabi417
ハイフンと似たような記号は下記 (某ツイートより拝借) ですね。
これら全ての記号を判別できるようにするのは現実的ではありませんが、せめて長音記号だけでもヒゲを付けるなどすると、だいぶ良くなるかもしれませんね。検討しておきます。
返信ありがとうございます。
ハイフンマイナスと長音が混同しやすいみたいです。
検討のほどよろしくお願いします。
素晴らしいフォントです!
私もWindowsのVSCodeでMiguを使っていたのですが、アンチエイリアスが上手く掛からないのが悲しくて…
愛用させていただきます。
@miyabi417
長音記号
ー
と漢数字の1一
に特徴付けをしてみました。 v1.4.0 としてリリースしています。よかったら試してみてください。素晴らしいフォントの公開ありがとうございます。
v1.4.0を使用させていただいています。
1つ要望させてください。
~
(チルダ)を、^
のように、上方に配置できないでしょうか。好みの範囲だと思うので一人の要望では難しいかもしれませんが、
できましたらご検討よろしくお願い致します。
@sanoa
はい、そうですね。私もそれは好みの範囲のように思いますが、今後の改善の参考とさせていただきます。
参考までに教えていただきたいのですが、中央位置だと混同しやすい他の記号や、上方位置の方が優れていると感じている点はあるでしょうか?
@tawara_
完全に好みの問題といいますか、慣れの問題といいますか。なので、優れている点は難しいです。
プログラミングを始めた時に、上方表示のフォントだったので、それに慣れてしまっているだけなんだと思います。
混同しやすい記号は特にないのかなと思ってます。全角
〜
とチルダ~
は幅で区別つきますので。そのようなわけで、単にわがままな要望ということになってしまいます……。
@sanoa
なるほど。まぁ気になるというお気持ちは分かります。
私も今でこそゼロの字体は HackGen のような真ん中ドットのゼロが好きですが、プログラミングを始めた頃はスラッシュゼロのフォントを使っていたので、当時はかなり違和感がありましたねー。
使ってるうちに慣れてしまうところはあると思うので、よかったら気にしないように使ってみてください。
ご返信ありがとうございました。
まずは使い込んでみて、どうしても上方位置が必要になりましたら、また要望させていただこうと思います。
「どうしても」という状況は今のところ、想像しにくいですが。
遅ればせながら、長音記号と漢数字のバージョンアップありがとうございます。
大変見やすくなりました。コード書くのに使用させていただいております。
目が悪いので見やすくて大変ありがたいです。
愛用させてもらっています。
Hackgen Console 1.4.1 のキリル文字を mintty 3.1.0 (msys2同梱のやつ) で表示させると、左図のようにキリル文字が少し右にずれて表示されることに気が付きました。
画像の2行目までの英文と3行目以降の露文ですが、フォント幅の半分くらい右にずれているのがわかるでしょうか。
5行目の5文字目は 'у' ですが、次の '.' が重なって右半分が消されてしまっています。
右図のように、Courier New では正常に表示されます。
また、notepad++ だと Hackgen Console, Courier New ともにずれることなく正しく表示されます。
フォントそのものは素晴らしいので直るとうれしいです。
@chirimen さん
和文以外の文字はHackを利用しているので、Hackの場合にずれるかどうかが重要な情報になる気がします。
(Hackのサイトでキリル文字も収録していることは確認できました)
手元に Git for Windows に同梱されている mintty 3.1.0 があったので適当なキリル文字を入力してみましたが、再現できませんでした。
再現できるテキスト (画像ではなくコピペできる文字列で) を頂くことはできますか?
@tawara_ さま
念のため、別のPCで確認したところ、問題は再現できませんでした。
こちらの環境でどこかおかしいところがあったのかもしれません。
おさわがせしました。
@albireo さま
問題のPCに今はアクセスできないのですが、
次には Hack でも確認するようにしてみます。
使わせていただいております。
1点質問なのですが、HackGenはnerd-fonts(https://github.com/ryanoasis/nerd-fonts)に対応する予定は
ありますでしょうか。
@takets
ご愛用ありがとうございます。
nerd-fonts という絵文字フォントがあるのですね。
まず結論から言うと、対応する予定はありません。
が、少し調べてみたところ、ちょっと対応しても面白いかも、という気がしています。
これは、Powerline 向けの文字もカバーしているということでしょうか?
もしそうなら、今配布している HackGen Console for Powerline を代替する形で配付すると、より幅広い方にとって嬉しいフォントになるかもしれませんね。
検討してみます。
@tawara_
はい。nerd-fontにpowerlineも含まれます。
また、nerd-fontのなかに含まれるFont Awesomeは、絵文字の種類が多く、表現力が増えるため、
お時間あるときにご検討いただければと思います。
@takets
Nerd Fonts に対応した HackGen をビルドしてみました。以下のページにアップロードされています。
当ページの中で、ファイル名に "Nerd" と入っているものが、Nerd Fonts を含んだ HackGen です。
https://github.com/yuru7/HackGen/tree/dev_nerd/build
まだ正式にリリースするかは検討中ですが、よろしければ動作検証にご協力ください。
何か表示がおかしいところ等がありましたら、ご報告いただければ幸いです。
@tawara_
手元の環境でざっくり試してみましたが、いい感じに使えそうです。
vimのプラグインはNerd-Fontを使っているものが多いため、絵文字がちゃんと表示されます。
引き続き使ってみますので、気になる点がありましたら報告させていただきます。
@takets
HackGenNerd を改良したものをアップしました。場所は先述のところと一緒です。
https://github.com/yuru7/HackGen/tree/dev_nerd/build
主な修正点は以下の通りです。
注1: ターミナルでの利用を想定した対処
注2: 内部的な幅設定のみを半角サイズにし、見た目は全角幅にしています。そのため、半角スペースを隣に空けないと隣の文字と被ります。
こちらでは検証のため、zsh の powerlevel10k というテーマで試しているところですが、今のところ良好です。
@tawara_
ありがとうございます。
最新バージョンを使っていますが、今のところ問題なく使えています。
なにかありましたら、報告いたします。
年齢のせいか最近は少し太めのフォントが楽で、
サクラディタできれいに表示でき、0とOの判別も楽なので、
先日からWindows10付属の「BIZ UD ゴシック」と入れ替えて使わせて頂いています。
BIZ UD ゴシックでは全角幅で表示されるsjisの全角記号のいくつか(数学系の±≦≧∴∵など)が、
白源だと半角幅で表示されるのですが、これは仕様でしょうか。
工夫をすれば(例えば、FEPに同型の他の文字を登録して使えば)全角幅で表示可能でしょうか?
@Kunion
ご愛用ありがとうございます。
サクラエディタだと DirectWrite ではなく OS 標準の描画ですから、綺麗に表示できるフォントが限られるんですよね。そういったソフトウェア上でも綺麗に表示されることを目指したので、そう言っていただけて嬉しいです。
さてご報告の内容について確認してみました。
確かにそれらの記号は現状、合成元の Hack の記号が適用されているため、半角幅ですね。
現状でいえばこれは仕様なのですが、合成元の源柔ゴシック側を見てみると、これらの記号は全角幅で登録されていました。そういった記号は HackGen のポリシー的には本来、「HackGen」なら全角幅、「HackGen Console」なら半角幅とするのが正しい気がします。
そのため、±記号や下図あたりのグリフは、「HackGen/HackGen35」では全角幅で表示されるように調整したいと思います。

現在 Ver 2.0.0 を製作中ですので、そのリリースに合わせてこれらの修正も加えたいと思います。
@tawara_ 様
ご確認、ご検討頂いて、ありがとうございます。
次のリリースを楽しみにしています。
(どうかマイペースで進めて下さい)
Windows のコンソール版 Vim で Powerline フォントを表示したくて探していましたが、
期待以上に読みやすくて綺麗なフォントがあったことに感激しています。
ところで、 Windows 10 Pro 1909 + gVim 8.2 の環境で「■」(四角)や「①」(まるいち)の文字が次の文字で隠れてしまうのですが、これは修正可能でしょうか?

コンソール版の Vim や VSCode ではちゃんと表示されています。
HackGen, HackGen Console, HackGen 35 いずれでも発生します。
@fala
ご愛用、ご報告ありがとうございます。
Win 10 Pro 1909 + gVim (Ver 8.2.87 / 64bit) で確認してみましたが、再現しませんでした。

再現環境が間違っていたりするでしょうか?
@tawara_ 様
確認頂きありがとうございます。
こちらの gVim は Ver.8.2.796 / 64bit です。
あれから色々試してみたところ、どのフォントにしても起こるのでこちらの gVim の問題のようです。
原因はわかりませんが、白源フォントは問題なさそうなので取り急ぎご報告します。
お手数をおかけしてすみませんでした。
@Kunion
お待たせしました。v2.0.0 をリリースしました。
HackGen/HackGen35 (Console 版でない) では、数学記号周りが全角になったかと思います。
記事中のダウンロードページよりどうぞ。
ご報告ありがとうございました!
@tawara_ 私がよく使う記号が全角幅で出るのを確認しました。
ありがとうございました。
しばらくはBizUDゴ(私用改)でしのいでいたので、HackGenに戻します。
@tawara_
愛用させてもらっています。
最新の 2.0 でしか確認していませんが、HackGen Console + VSCode でベトナム文字を表示させたときに
一部のアクセント?付き文字が全角幅になっているようです。
添付画像は上段が HackGen Console、下段は参考までに Consolas の表示例です。
# おまえはベトナム文字使うんかといわれると実際使うことはないので

# 困ってるわけではありませんが一応報告させていただきます
Hack の表示例を追加しました

@chirimen
ご報告ありがとうございます。
おそらく源柔ゴシックに含まれているグリフが表示されているのだろうとは推察しておりますが、さすがにベトナム文字はサポート範囲外とさせていただくことになりそうです…。
@tawara_
了解しました。困ってはいなかったのですが、何が表示されているのかなと思ってました。
回答ありがとうございます。
@ttdoda 細かな間違いに気づいてくださってありがとうございます!取り込みいたします。
問題が発生していたバージョン情報の修正 by ttdoda 2020/09/09 22:43
素晴らしいフォントです。
私はプログラミングをしている訳では無いのですが、OCRでテキスト化した文書をエディタ上でチェックするのに、-(ハイフン)とー(長音)、l(小文字のエル)と1(数字のイチ)、濁点・半濁点などが識別しづらく困っていました。
「白源」を使い始めて以来、作業効率が上がって大変助かっています。
ところで、上記の目的には、「へ」「べ」「ぺ」など平仮名と片仮名の区別ができるようになると更にありがたいです。
@hiro1116
ご愛用、ありがとうございます。
なるほど、OCR の校正作業でお使いなんですね!
想像していない用途でしたが、それなら確かに白源はお役に立てそうですね。
実は、下記チケットにあるように、判読性を向上するためにひらがな「へ」とカタカナ「ヘ」の調整はしようと考えていました。(時期未定ですが…)
https://github.com/yuru7/HackGen/issues/9
特定の似ているカタカナと漢字では、漢字の方がやや大きく作られているのでまだマシですが、ひらがな「へ」とカタカナ「ヘ」は本当に見分けがつかないので、こちらは優先して取り組みたいと思います。
@tawara_ さま
早速のご回答ありがとうございます。
既に御対応を考えておられたのですね。
示して頂いたリンク先にある文字も含めて、識別しやすいデザインにして頂けると大変助かります。
使いやすいフォントを長年探していて、ようやく白源にたどり付きました。
今後にも期待しています。宜しくお願い致します。
愛用させていただいています!
「しっかりとした太さを持った「Hack」」ということだったので,
お門違いの要望かとは思いますが,
もう少し日本語が細めのフォント(Myrica Mくらい)もあると,個人的にはとても嬉しいです.
asciiが多いプログラムを書いている時はそうでもないのですが,
日本語の文章(mailとか)だと,
文字が太くてやや圧迫感がある場合も….
ご多忙でしょう, ご返信どうぞご放念ください.
初めまして。Ricty系の微妙な使いにくさを感じ(全半角混在で縦方向が若干ズレるなど)、
こちらにたどり着きました。視認性の改善と、縦の列がキレイに揃って満足しました。
良いフォントを開発して頂きまして、ありがとうございます。
視認性が良く、縦列が揃うフォントは、メールやメモ書きでも重要と感じています。
白源は、これが満足できるのではないかと、期待しております。
(読む相手次第ではありますが、自己満足と同時に、当方の誤記低減を期待)
1つ解決していない問題として、円マーク があると思います。
数値、特にゼニカネの話をすることが多々あり、
¥を半角で使いたいのですが、半角\と共存できない
ムズカシイ問題らしいようで、無理な要望かも知れませんが、
もし、解決のアイディアがございましたら、
ご検討のほど、よろしくお願いします。
@_sei5
ご愛用ありがとうございます。
残念ながら、当フォントでは解決できない問題かと考えます。
フォントでは「特定の番号に対してこの文字を表示する」という「文字コード」と呼ばれる組み合わせが定められています。「
U+0041
という番号ではA
を表示させる」といった具合です。MSゴシックや HackGen のような「フォント」というのは、これらの組合せを詰め込んだファイルです。
半角の円記号とおっしゃっているのは、
U+005C
という番号に割り当てられた記号なのですが、これは世界標準の規格 (これを「UNICODE」と言います) の中で「半角のバックスラッシュで表示すること」と定められています。しかし歴史的背景から、メイリオや MS ゴシックのような「日本語用フォント」では
U+005C
の番号で表示される文字を半角の円記号のカタチにしているのです。つまり、円記号で表示される方が標準外ということですね。HackGen はプログラミング用途を想定したフォントですから、半角のバックスラッシュの方がユーザーには受け入れられやすい、と考えます。
また、前述の通り「
U+005C
の番号の記号は、フォントによって円記号に見えるかバックスラッシュに見えるか異なる」ことになります。そのため、たとえ _sei5 さんの環境で円記号のカタチに見えていても、メールの送り先の方の PC 上ではバックスラッシュのカタチで表示されているかもしれません。これらのことから、HackGen フォント自体で解決することはできませんが、_sei5 さんの使用上の解決策として考えられるのは以下の3通りです。
¥
記号を使ってもらう¥
の記号を使う (HackGen Console ならこの記号は半角表示になります)\
記号を使ってもらう「全角の
¥
」であれば、前述で触れた「UNICODE」の中でも「全角の円記号で表示すること」と定められています。規格でそう定められているので、「表示する環境によってはバックスラッシュで見えてしまう」ということもほぼ起こりません。したがって、「メールやメモ等、他者の PC 上でも統一した表示をしてほしい」とお考えなら、上記 1 が最も手軽で確実です。
最新のHomebrewでbrew caskコマンドが非推奨になったので、修正リクエスト送らせてもらいました
v1.4.1の頃から使わせていただいている者です。
今までアップデートをしたことがなかったのですが
環境再設定の折にこちらのページを久しぶりに訪ねましたところ
精力的にアップデートを重ねておられたことを知りました。
さっそくv2.3.2を導入させていただいたのですが
使わせていただいてる身分で真に恐縮ではありますが
率直に気になったことがありまして今回コメントさせていただきました。
何かと申しますと、v2.2.3で
カタカナの ヘ (U+30D8-30DA) のグリフを調整されたとのことで
今回更新して実際に触れてみましたが
制作上の事情は全く存じ上げずに率直な感想を申しあげますと
初見でひらがなとカタカナが逆になっているように見えました(個人の感想です)。
カタカナは主に一定の線の動きで構成された固めの印象であるのに対して
ひらがなは微妙なニュアンスの曲線も含まれた柔らかな印象があります。
v2.2.3ではカタカナの「ヘ」の入りの部分に対して強いアクセントが付きましたが
HackGen で「はひふへほ」と「ハヒフヘホ」を入力してみて
正しい並びのものと「へ」を入れ替えたものを並べて比べると
ひらがなの場合はどちらの「へ」でも違和感がないのに対し、
カタカナの場合はひらがなの「へ」の方がよりカタカナ的に感じます。
とはいえ、単純に個人の感想として伝えてみたかっただけで、
熟慮を重ねられた上で判断されていることだと思いますので
どうして欲しいという話ではありません。
実のところ私はプログラミングではなく文章入力で使わせていただいています。
必然的に日本語での入力が多くそれ故に余計に目についたのかもしれません。
フォントファイルの制作は考えることが多岐に渡り、
作業力も多い大変なものであると想像いたします。
綺麗なフォント、面白いフォントは数ありますが
その中でもメインで使いたいと感じさせるフォントセットを作成していただき感謝の思いです。
これからも愛用させていただきます。ありがとうございます。
@Frato
ご意見ありがとうございます。
漢数字「一」のように、明朝体風なアクセントを付けるのが一定の違和感を付けつつ馴染みのよい方法かと思い、「ヘ」の区別の付け方も明朝体っぽい入りに変形してみました。
ひらがなとカタカナの「へ」の字形が逆の方が馴染みが良いのではとのご指摘ですが、どうも私にはそう思えませんでした。
これは、「ひらがなが通常形だとしたら、それに対しカタカナは変形した型」「このHackGenの字形に見慣れた」という私の心理的作用もあるのではないかと思います。
ひとまず、ご意見は今後の参考とさせていただきます。
https://github.com/yuru7/HackGen/blob/master/LICENSE.txt
を拝見したところHackGen generate scriptがMITライセンスとありますが
https://licenses.opensource.jp/OFL-1.1/OFL-1.1.html
を拝見したところ
とあり気になったのでお知らせします。