HackGen(白源)の導入とVS Code設定|更新停止後の選定基準

HackGen(白源)の導入とVS Code設定|更新停止後の選定基準

白源(はくげん/HackGen)を入れるとき、つまずくのは設定ファイルに書くフォント名です。READMEには「HackGen NF」というファミリーが載っていますが、v2.10.0の配布zipを展開して各ttfの内部名を読むと、その名前のフォントは入っていません。この記事では、実際に配布されている6つのフォントファミリー名、Windows・macOS・Linuxそれぞれの入れ方、settings.jsonへの書き方、開発コンテナへの同梱手順までをコマンド付きで扱います。あわせて、2024年12月から更新が止まっている現状を数値で示し、チームの標準フォントとして採るかどうかの線引きを最後に置きました。

まとめ:白源v2.10.0の到達点とチーム標準に採るかの判断

白源の現行版はv2.10.0で、公開日は2024年12月29日です。リポジトリの最終コミットも同じ日付で、それ以降の更新はありません。仕様そのものは完成しており、半角1対全角2の等幅、全角スペースの可視化、第一〜第四水準漢字の収録という骨格は変わりませんので、いま入れて困る場面は限られます。

設定に書けるファミリー名は6つだけです。通常版のzipにHackGenHackGen35HackGen ConsoleHackGen35 Console、NF版のzipにHackGen Console NFHackGen35 Console NF。この6つ以外の綴りを書いても、エディタは黙ってフォールバックします。

採否の結論を先に書きます。日本語コメントや日本語の仕様コメントが多いリポジトリで、ターミナルとエディタの字面を揃えたいなら採ってよい判断です。逆に、コメントを斜体で出す配色テーマを使っている現場と、Nerd Fontsの新しいアイコンを前提にしたプロンプト(Starshipのプリセットなど)を使っている現場では見送ります。

等幅フォント白源がHackと源柔ゴシックの合成で得た判読性改良

白源は2つのフォントを合成して作られています。英数字記号はプログラミング向け英文フォントのHack、かな文字と漢字は源柔ゴシックです。源柔ゴシックはAdobeの源ノ角ゴシックから派生した丸ゴシック系の書体で、この組み合わせが白源の見た目を決めています。

半角1対全角2の文字幅を守る合成と第一〜第四水準漢字までの収録範囲

公式リポジトリのREADMEは、白源を「文字幅 半角1:全角2 の正統派な等幅フォント」と説明しています。日本語混じりのコードで桁がずれないのはこの比率のおかげです。表組みをコメントで書いたり、ASCIIアートで構成図を残したりする場面では、この1対2が崩れないことが実用上の分かれ目になります。

収録範囲は第一水準から第四水準漢字までです。人名や地名で出てくる外字に近い漢字も、豆腐にならずに表示されます。業務システムの顧客マスタを扱う画面で氏名データをターミナルに流すとき、この範囲が効いてきます。

全角スペース可視化とパイプ記号破断線というRicty由来の改変

単なる合成にとどまらず、独自の改変も加えたフォントです。READMEが挙げているのは全角スペースの可視化とパイプ記号の破断線化で、後者は「Ricty Discord インスパイア」と明記されています。全角スペースが見えるのは、YAMLやPythonのように空白が構文に効く言語を書くときに直接効きます。

文字を判別しやすくする細かな改変も特徴です。濁点と半濁点を通常より大きくして小さい表示サイズでも区別できるようにし、長音記号の「ー」と漢数字の「一」にアクセントを付けて見分けられるようにしています。カタカナの「ヘ」にもひらがなと区別するためのアクセントが付きます。

配布zipに実在する6つのフォントファミリー名と使い分けの基準

ここが実務で一番間違えやすい箇所です。READMEのファミリー表と、実際に配布されているttfの内部名がずれています。

通常版zipが収録する4ファミリーとRegular・Boldの2ウェイト

HackGen_v2.10.0.zipに入っているttfは8ファイルです。ファイル名ではなくフォント内部のファミリー名(nameテーブルのnameID 1)を読むと、次の4種類に分かれます。

ファミリー名 文字幅比率 記号の扱い 向いている場面
HackGen 半角1:全角2 矢印など一部の記号が全角 日本語コメントが多いソースの編集
HackGen Console 半角1:全角2 記号類をできる限り半角で表示 ターミナル、ログ閲覧
HackGen35 半角3:全角5 矢印など一部の記号が全角 日本語が少ないコードの編集
HackGen35 Console 半角3:全角5 記号類をできる限り半角で表示 英字主体のターミナル

35系は英数字が相対的に大きく表示されます。日本語の比率が2割を切るリポジトリなら35系、仕様コメントが日本語で厚いリポジトリなら通常系、という分け方で迷いません。ウェイトはRegularとBoldの2つだけで、Italicのttfは配布物に含まれていません。

NF版zipに入るのはConsole系2つだけという配布物の実態

READMEは「追加で提供している HackGen NF HackGen35 NF フォントファミリー」と書いています。ところがHackGen_NF_v2.10.0.zipに入っているttfは4ファイルで、内部のファミリー名はHackGen Console NFHackGen35 Console NFの2つしかありません。Console抜きのHackGen NFは配布物に存在しない名前です。

そのため、設定に"HackGen NF"と書くと一致するフォントが無く、指定は素通りしてフォールバック先が描画されます。アイコンが出ないという不具合報告の多くはこれです。Nerd Fonts合成版を使うなら、必ずHackGen Console NFと綴ってください。

もう一段古い落とし穴もあります。リリースノートによれば、v2.7.0でNerd Fonts合成版のファミリー名がHackGenNerd*からHackGen* NFへ変わりました。数年前の記事や社内Wikiから設定をコピーすると、旧名が残ったままになります。加えてv2.9.0で日本語文字優先版のNFJが同梱から外れているため、NFJを前提にした設定も現行版では効きません。

Windows・macOS・Linuxでの入手とインストールの実行手順

入手経路は3つあります。GitHubのリリースページから直接zipを取る方法、Homebrew、Chocolateyです。どれを選んでも現行バージョンは同じ2.10.0です。

HomebrewとChocolateyで入れる場合の現行バージョン2.10.0

macOSとWindowsはパッケージマネージャが使えます。Homebrewのcask情報で確認するとfont-hackgenfont-hackgen-nerdともバージョンは2.10.0、Chocolateyのパッケージも2.10.0で、GitHubのリリースと一致しています。

# macOS(Homebrew)
brew install --cask font-hackgen
brew install --cask font-hackgen-nerd

# Windows(Chocolatey・管理者権限のシェルで実行)
choco install font-hackgen
choco install font-hackgen-nerd

Homebrewのcask名はfont-hackgen-nerdで、caskの表示名には旧称の「HackGenNerd」が残っています。ここで入るフォントのファミリー名は前述のとおりHackGen Console NFですので、cask名をそのまま設定に書き写さないでください。Windowsでフォントを入れ替えるときは、リリースノートが案内しているとおり、既存のフォントファイルを削除してから新規インストールすると反映不良を避けられます。

Linuxでzipを展開しfc-cacheで反映するまでのコマンド列

Linuxはパッケージが用意されていないため、zipを展開してユーザーのフォントディレクトリへ置きます。展開するとバージョン名のディレクトリができ、その直下にttfが並ぶ構造です。

curl -fsSLO https://github.com/yuru7/HackGen/releases/download/v2.10.0/HackGen_v2.10.0.zip
unzip -q HackGen_v2.10.0.zip
mkdir -p ~/.local/share/fonts
cp HackGen_v2.10.0/*.ttf ~/.local/share/fonts/
fc-cache -f
fc-list : family | grep -i hackgen

最後のfc-listが効きます。ここで返ってくる文字列が、そのまま設定に書けるファミリー名です。手で綴りを推測する必要がなくなるので、フォント名の指定が効かないときは真っ先にこの1行を打ってください。ターミナル側の見た目をあわせて整えるなら、MacではiTerm2のプロファイル設定から同じファミリー名を指定します。

VS Codeとターミナルへ白源を設定するsettings.jsonの記述

エディタ本体とターミナルはフォント設定が別々です。片方だけ変えると、同じウィンドウの中で字面が食い違います。

editor.fontFamilyに書くファミリー名とフォールバックの順序

VS Codeのユーザー設定は、コマンドパレットの「Preferences: Open User Settings (JSON)」から開きます。公式ドキュメントによれば、実体はWindowsなら%APPDATA%\Code\User\settings.json、macOSなら$HOME/Library/Application Support/Code/User/settings.jsonです。

{
  "editor.fontFamily": "'HackGen Console NF', 'HackGen', Consolas, monospace",
  "editor.fontSize": 14,
  "terminal.integrated.fontFamily": "'HackGen Console NF', 'HackGen Console', monospace",
  "terminal.integrated.fontSize": 13
}

指定はCSSのfont-familyと同じ書式で、カンマ区切りの先頭から順に探されます。NF版を先頭に置き、NF版を入れていないメンバーの端末でも崩れないよう通常版とシステム等幅を後ろに並べておくのが実用的です。バージョンによる設定項目の差が気になる場合は、VS Codeの最新バージョンと確認方法を先に見て、手元の版を把握しておくと切り分けが早くなります。

ターミナル側でNF版を指定するときのNFサフィックスの書き方

VS Codeのターミナル外観のドキュメントは、Nerd Fonts版について「typically have a ” NF” suffix」と述べ、Hackの例として"terminal.integrated.fontFamily": "'Hack NF'"を挙げています。白源も同じ規則に従いますが、繰り返すとおり実在するのはConsoleが付いた名前だけです。

リガチャを使いたい場合はterminal.integrated.fontLigatures.enabledを有効にします。ただし白源のttfには、合字を担う機能そのものが入っていません。v2.10.0の各ファイルでGSUBテーブルのフィーチャー一覧を読むと、並ぶのはccmpjp78vertといった日本語向けの機能だけで、リガチャのligaも文脈依存合字のcligもありません。矢印や等号の合字を期待して設定を入れても表示は変わらないため、合字が要件なら別のフォントを選ぶ判断になります。なお同じ設定思想はほかのエディタにもあり、IntelliJ IDEAのColors and fontsVimの設定でも、指定するのは同じファミリー名です。

開発コンテナとCIイメージへ白源を同梱するDockerfileの書き方

フォントを各自の端末にだけ入れると、コンテナの中で開いたときに元の等幅へ戻ります。日本語を含む帳票をコンテナ内のツールで組む案件では、イメージ側にも入れておきます。

devcontainerのイメージへttfを配置しfc-cacheを走らせる

Dockerfileでの同梱は次の形です。バージョンをARGで外に出しておくと、更新時の差分が1行で済みます。

FROM mcr.microsoft.com/devcontainers/base:ubuntu-24.04
ARG HACKGEN_VERSION=2.10.0
RUN apt-get update \
 && apt-get install -y --no-install-recommends unzip fontconfig curl ca-certificates \
 && curl -fsSL -o /tmp/hackgen.zip \
      "https://github.com/yuru7/HackGen/releases/download/v${HACKGEN_VERSION}/HackGen_v${HACKGEN_VERSION}.zip" \
 && unzip -q /tmp/hackgen.zip -d /tmp/hackgen \
 && install -d /usr/share/fonts/truetype/hackgen \
 && find /tmp/hackgen -name '*.ttf' -exec install -m644 {} /usr/share/fonts/truetype/hackgen/ \; \
 && fc-cache -f \
 && rm -rf /tmp/hackgen.zip /tmp/hackgen /var/lib/apt/lists/*

ダウンロード先はバージョンを含む固定URLなので、ビルドの再現性が保たれます。devcontainer.json側ではcustomizations.vscode.settingsに前述のeditor.fontFamilyを書いておけば、リポジトリを開いた全員に同じ字面が配られます。コンテナ側の組み立て手順そのものを確認できるのはVS Codeで開発コンテナを作る手順です。

v2.10.0で更新が止まった白源の現状とNerd Fonts版の遅れ

導入手順だけを見ると穏当なフォントですが、プロジェクトの状態は数値で押さえておく必要があります。競合記事がほとんど触れていないのがこの点です。

最終コミットが2024年12月で止まっている開発状況の実測値

GitHub APIで確認した実測値を並べます。最新リリースはv2.10.0で公開は2024年12月29日、リポジトリのpushed_atも同日、最新コミットは同じ日付の「update to nerdfonts v3.3.0」です。2026年9月時点で、1年9か月ほど動きがありません。スターは2,443、未クローズのissueは5件です。

更新が止まっていること自体は、フォントでは即座に問題になりません。字形が完成していれば、OSが変わっても表示され続けます。問題になるのは合成元が動いたときで、その差分が取り込まれなくなります。

合成元Nerd Fontsがv3.3.0のままで本家と2世代離れた影響

白源が取り込んでいるNerd Fontsはv3.3.0です。本家の最新はv3.5.1で、公開は2026年8月21日。ここにメジャーではないものの2世代ぶんの開きがあります。新しく追加されたアイコングリフは白源のNF版には入りません。

英字側の合成元であるHackも、最新はv3.003で2018年3月の公開です。こちらはもともと動いていないため、白源が追随していないことによる欠落はありません。つまり、更新停止で実害が出るのはNerd Fonts合成版に限られ、通常版は影響を受けないという切り分けになります。

同じ作者が公開している後継フォントは動いています。PlemolJPは2026年8月10日のv3.1.0、UDEV Gothicは2026年2月23日のv2.2.0です。アイコンの新しさが要件なら、白源に留まる理由はありません。

SIL OFL 1.1での商用利用と改変時に名称変更が要る条件

受託開発で使うなら、ライセンスの確認は省けません。白源は配布物とソースコードでライセンスが分かれています。

予約フォント名の指定で社内改変版に白源の名前を使えない仕組み

リポジトリのLICENSEファイルは、フォント本体をSIL Open Font License 1.1、生成スクリプトなどのソースコードをMITと定めています。OFL 1.1は商用・非商用を問わず無償で使え、改変や派生フォントの開発、アプリやゲームへの組み込みも認められます。クライアントに納品する製品へフォントを同梱する場合も、この範囲で扱うことが可能です。

注意が要るのは予約フォント名の条項です。LICENSEにはwith Reserved Font Name "白源", "HackGen"と書かれています。OFL 1.1の第3条で禁止されているのは、予約された名前を改変版に使うことです。社内の要件に合わせてグリフを差し替えた独自ビルドを配るなら、「白源」でも「HackGen」でもない名前を付ける必要があります。字形をいじらず、そのまま配るだけなら名称変更は不要です。

もう1点、OFLは単体での販売を認めていません。フォントだけを商品として売ることはできず、ソフトウェアに同梱して配布する形を取ります。開発環境の設定一式をリポジトリに載せて引き渡す運用なら、この条件に触れません。引き渡し後の運用まで含めて任せたい場合は、保守運用・内製化支援で環境の更新まで引き取っています。

受託開発のチーム標準に白源を採用できる条件と導入を見送るべき場面

ここで判断を言い切ります。全員に配るフォントを1つ選ぶ、という前提での結論です。

日本語コメントが多い受託案件で採用する判断とフォント配布方法

採用してよいのは、日本語のコメントや仕様記述がソースに厚く入る案件です。業務システムの受託開発はたいていこれに当てはまります。半角1対全角2が守られているため、コメントで書いた表組みが誰の画面でも同じ形に見えます。第一〜第四水準漢字まで入っているので、顧客マスタの氏名を含むテストデータを流しても豆腐になりません。

配り方は、各自にインストールを指示する方式ではなく、リポジトリで揃える方式です。.vscode/settings.jsoneditor.fontFamilyを書いてコミットし、開発コンテナを使っている案件はDockerfileにも前述の6行を入れておきます。この2点が揃っていれば、参画メンバーが増えたときの初期設定の手間がなくなります。設定ファイルの管理を含めた環境の整え方は、エディタの外観設定をファイルで持つ考え方と同じ発想です。

斜体表示とアイコンの最新化を求める現場で見送るべき2つの理由

見送る条件は2つです。1つ目は、コメントやキーワードを斜体で表示する配色テーマを標準にしている現場。v2.10.0の配布zipに入るttfは8ファイルすべてがRegularかBoldで、Italicのファイルは1つもありません。斜体の字形を持たないフォントに斜体を指定すると、描画側が字形を傾けて合成した表示に置き換わります。丸ゴシック系のかな文字を傾けた見た目を許容できるか、テーマ側で斜体指定を外す合意が取れるか。どちらも成り立たないなら、採用しない判断になります。

2つ目は、Nerd Fontsの新しいアイコンに依存した環境です。プロンプトのプリセットやファイラのアイコン表示がv3.4以降で追加されたグリフを使っていると、白源のNF版では四角が並びます。合成元がv3.3.0で止まっている以上、待っても解決しません。この条件に当たるなら、同じ作者のPlemolJP v3.1.0かUDEV Gothic v2.2.0へ寄せるのが素直です。

迷う必要がないのは、「更新が止まっているから使わない」という理由だけで避ける場合です。通常版は合成元のHackが2018年から動いていないため、白源が追随しなくても欠けるものがありません。字形の完成度で選ぶなら、更新頻度は判断材料になりません。

よくある質問

白源の導入時に検索されやすい疑問を、実測した値をもとに整理しました。

HackGenの読み方と日本語表記の白源との関係はどうなっていますか

「はくげん」です。リポジトリのタイトルも「プログラミングフォント 白源 (はくげん/HackGen)」と表記されています。名前は合成元であるHackと源柔ゴシックの「源」から取られており、英語表記のHackGenと日本語表記の白源は同じフォントを指します。検索では両方の表記が使われるため、社内のドキュメントに書くときはどちらか一方に統一しておくと、後から探すときに迷いません。

HackGenとHackGen35は文字幅でどちらを選ぶべきですか

両者の違いは半角と全角の文字幅の比率です。HackGenは半角1対全角2、HackGen35は半角3対全角5で、35のほうが英数字が相対的に大きく表示されます。コメント内で表組みを書くなど桁を厳密に揃えたい用途なら、比率が単純な1対2のHackGenを選んでください。英字主体で日本語がたまに混ざる程度の案件ではHackGen35が読みやすく感じられます。

HackGen NFと設定してもエディタに反映されないのはなぜですか

その名前のフォントが配布されていないためです。v2.10.0のNF版zipに含まれるttfは4ファイルで、内部のファミリー名はHackGen Console NFHackGen35 Console NFの2つだけです。Consoleを省いた綴りは一致せず、指定はフォールバックされます。手元で使える名前を調べるなら、Linuxでfc-list : family | grep -i hackgen、Windowsなら設定アプリのフォント一覧で確認できます。

HackGenは商用のプロジェクトや納品する製品への同梱に使えますか

使えます。フォント本体はSIL Open Font License 1.1で、個人利用と商用利用を区別せず無償で使え、アプリやゲームへの組み込みも認められています。生成スクリプトなどのソースコードはMITです。制約は2つあり、フォント単体を販売できないことと、改変版に「白源」「HackGen」という予約フォント名を使えないことです。改変せずそのまま配る運用であれば、どちらにも抵触しません。

更新が止まっている白源から別のフォントに乗り換えるなら何が候補ですか

同じ作者が公開しているPlemolJPとUDEV Gothicが候補です。PlemolJPはIBM Plex MonoとIBM Plex Sans JPの合成で最新はv3.1.0(2026年8月10日)、UDEV GothicはBIZ UDゴシックとJetBrains Monoの合成で最新はv2.2.0(2026年2月23日)です。どちらもNerd Fonts合成版があり、白源より新しいアイコンセットが入っています。

関連記事

資料請求

RELATED POSTS 関連記事