世界を動かす技術を、日本語で。

フォント比較:Atkinson Hyperlegible Mono vs. JetBrains Mono と Fira Code

概要

  • Atkinson Hyperlegible Mono の実用評価と JetBrains MonoFira Code との比較レビュー
  • 文字判別性可読性 に焦点を当てた詳細な分析
  • 導入手順注意点 も解説
  • 視覚的特徴 や設計思想の解説
  • 開発者・プログラマ 向けフォント選定の参考情報

Atkinson Hyperlegible Mono 実用レビューと比較

  • Atkinson Hyperlegible Mono をターミナルやWebサイトで1か月間実用評価
  • JetBrains MonoFira Code など、定番プログラミングフォントとの比較
  • Google FontsGitHub などで配布されているダウンロードリンク案内

文字判別性と可読性

  • プログラミングフォントは 文字の見分けやすさ が最重要

  • 0(ゼロ)とO(オー)、1とlとIなどの ホモグリフ(類似字形) 問題

  • ミラーイメージ字形 (例:dとbなど反転で生じる混同)の課題

  • Monospace(等幅) フォントはマルチキャラクターホモグリフ(例:cl→d)を軽減

    • マルチキャラクターホモグリフ :複数文字が1文字に見える問題
    • シングルキャラクターホモグリフ :1文字が別の1文字に見える問題
    • ミラーイメージ字形 :反転で混同しやすい字形
  • 文字判別性 が重要なシーン

    • SQLクエリでIDを誤認
    • ハッシュ値やGPGフィンガープリントの転記
    • gitのコミットハッシュ比較
    • コマンドライン引数(-1と-lなど)の誤認防止

Atkinson Hyperlegible ファミリーの特徴

  • Braille InstituteApplied Design Works が開発
  • 視覚障害者向け に判別性と調和を両立した設計
  • Atkinson Hyperlegible Next :7ウェイト・150言語以上対応
  • Mono版 は開発者からの要望で誕生

独自のデザイン要素

  • 視覚的シルエット の差異強調(例:Bの上下のボウルの大きさ、8の上下形状)
  • 字形の強化 (例:jの尾、Iの上下バー、i/lのセリフ、!の点間隔)
  • 非対称スパー誇張されたディセンダー でミラー字形を識別
    • bとd:スパーの太さと出方で差別化
    • pとq:qの長い尾で区別

JetBrains Mono・Fira Codeとの比較

シングルホモグリフ比較

  • JetBrains Mono :7にセリフ追加、jIil1!グループで差別化
  • Fira Code :jのフック、lのセリフで識別
  • Atkinson Hyperlegible Mono :8/B/5/Sの判別が特に優秀、j/lの非対称セリフ、5の斜めストローク

ミラー字形比較

  • JetBrains Mono :d/b/q/pがほぼ鏡像、aとeも類似
  • Fira Code :微妙な差別化、gやpの方向性・装飾性
  • Atkinson Hyperlegible Mono :非対称設計でd/b/q/pを明確に区別、a/eも明瞭

プログラミング記号比較

  • JetBrains Mono :., :; ()[]{} などの識別性高
  • Fira Code :記号のバランス良好
  • Atkinson Hyperlegible Mono :[]{}はやや弱いが、-/+/_の長さや*のサイズ差で区別、<>も独立表示

インストール・設定方法

  • Unix系OS (Linux, BSDなど)向け手順
    • gitインストール 後、公式リポジトリをクローン
      • $ git clone https://github.com/googlefonts/atkinson-hyperlegible-next-mono
    • フォントディレクトリ作成
      • $ mkdir -p ~/.local/share/fonts
    • フォントファイルをコピー
      • $ cp ./atkinson-hyperlegible-next-mono/fonts/ttf/*.ttf ~/.local/share/fonts/
    • フォントキャッシュ再構築
      • $ fc-cache -fv
    • システム全体や各アプリで monospaceフォント として設定
      • 詳細は Arch Wiki などを参照

注意点・留意事項

  • 一部バージョンで バッククォート(`) 未収録
  • Applied Design Works はブランドデザイン専門で書体設計は本業外
  • 設計思想は主に 視覚障害者向け (ディスレクシア特化ではない)
  • 商業的背景やブランド意図が判別性主張に影響の可能性
  • プログラミングリガチャ (合字)未対応
  • 客観的な 読解性能の科学的検証 は未実施(ユーザー調査や内部テストのみ)

関連リソース

  • Pimp My Type :Atkinson Hyperlegible系のレビュー・組み合わせ例
  • Coding Font :フォント比較サイト、Atkinson Hyperlegible Monoの専用ページあり
  • ブックマーク集 :タイポグラフィ・可読性・フォント関連情報

Atkinson Hyperlegible Mono は、判別性重視の開発者向け等幅フォントとして有力な選択肢。 JetBrains MonoFira Code と比較して、特に ホモグリフ対策 に優れるが、用途や記号の識別性などで一長一短。 科学的裏付けリガチャ対応 の有無も考慮しつつ、用途に適したフォント選びを推奨。

Hackerたちの意見

ウェブサイトをAtkinson Hyperlegibleフォントにデザインし直した後、ターミナルとコードエディタをモノスペース版に切り替えて、ちゃんとテストしてみたんだ。1ヶ月のテストと良い体験を経て、さらに調べてみたくなって、Atkinson Hyperlegible MonoとJetBrains Mono、Fira Codeを比較する記事を書こうと思った。視覚的な比較には、ホモグリフやミラーグリフに関するアクセシビリティの論文からの例を使ってるよ。JetBrains MonoとFira Codeは多くの開発者が使っているし、馴染みがあるから基準に選んだんだ。Atkinson Hyperlegible Monoは文字の識別に優れてるけど、完璧なものはないよね。「注意点」セクションでトレードオフについて詳しく説明してるから、インストール手順の下にあるよ。他の人の体験や考えも聞いてみたいな。フォントの選択が可読性やアクセシビリティにどんな役割を果たすのかに興味があるけど、この分野の研究はまだまだ少ないんだよね。

最初の段落でダウンロードリンクを貼りたいな。私の印象では、可読性はあるけどちょっと太すぎるかな。Fira CodeとJetBrains Monoが似たように幅広で、Atkinson Hyperlegible Monoよりも狭いのに気づくと思うよ。

英語のテキストのブロックやプログラムコードのブロックを比較するのを見たかったな。文字単位じゃなくて、任意のブロックで読む感覚を理解するのに役立つし、特定のデザイン特性を評価するのにも良いと思う。

なんでコーディングにプロポーショナル(モノスペースじゃない)フォントをもっと使わないんだろう?個人的には、可読性の面で大きな進歩だと思う。サイドバー(通常はプロポーショナルフォント)での読みやすさに気づいてから、私も切り替えたんだ。もちろんターミナルでは使えないけど、時々モノスペースの整列に頼っているコメントもあるよね。それ以外はプロポーショナルフォントにデメリットは感じないな。Inputを使ってるけど、特殊文字にもっとスペースがあって全体的にかなり良いよ。: https://input.djr.com/

このプロポーショナルフォントはどのIDEやエディタで見てるの?Emacsでのプロポーショナルフォントは私の目には合わないな。ブラウザや書籍の出版社がテキストをレンダリングする時の文字間の微妙な違いをEmacsが知らないんじゃないかな。

プロポーショナルフォントについてのこのアイデアは前に聞いたことがあって、興味を持ってたんだ。でも、私はNeovimをAlacritty内で使ってるから、私に合うかどうかは分からないな。そのフォントをチェックしてみるよ、提案ありがとう! :)

Plan 9のAcmeエディタをチェックしてみて!: https://en.wikipedia.org/wiki/Acme_(text_editor)#/media/File...

プロポーショナルフォントはコードでも読みやすいっていうのに完全に同意だよ。使おうとしたとき、Goの自動フォーマットがスペースで整列させるから、プロポーショナルフォントだとすごく見栄えが悪くてイライラした。解決策はエラスティックタブストップ[1]なんだけど、実際にはどのエディタでもサポートされてないみたいだね。[1] https://nick-gravgaard.com/elastic-tabstops/

Commit Monoフォントにある「スマートカーニング」のモノスペースフォントもいいかもしれないよ。https://commitmono.com

何人かはIDEで比例フォントを使ってるし、何十年もそうしてきたんだ。ただ、あまり一般的な慣習ではないね。(90年代にMicrosoftがIDEで比例フォントを使ってたような気がする。もしくはVisual Basicのことを考えてるのかな?よくわからないけど。)コーディングのときに比例フォントを使いたいと思わなかった主な理由は、比例フォントは同形異義語を区別するのが非常に苦手だから。それは構文エラーや未定義の変数を探すときに一番避けたいことなんだ。ただ、実際にプログラミング用に作られた比例フォントを探していないのも認めるよ。もう一つの理由は、時々、誰かがコメントにASCIIダイアグラムを作ったり、縦の整列が重要な他の構造や空白があるコードを読むことがあるから。これってCでは非常に人気があったけど、「現代」では悪い慣習と見なされてるね。モノスペースのコードはすごく読みやすいから、結局のところ、比例フォントにはいくつかの欠点があって、実際の利点はないと思う。少なくとも私にとってはね。

もちろん、ターミナルには使えないよ それが問題なんだよね。俺はweztermの中でneovimを使ってる。コードに比例フォントが使われてるのを見たことが何回かあるけど、面白いと思ったけど、現実的にはvt100の世界に生きてるから、全体的にはそんなに悪くないよ。プログラミングフォントとしてAtkinson Hyperlegible Monoに興味がある。モノスペースはプログラミングフォントの特徴だと思う。基本的に、可読性はプログラミングとテキストで違うんだよね(ただ、俺は明らかにVerdanaを読みすぎてるけど)。

本当の比例フォントを使うと、基本的なインデント以外のコード要素を揃えるのを諦めることになる。ほとんどの人にとって、それは大きすぎる妥協だね。Iosevka Aileみたいな準比例フォントは好きだな。すごく幅の広い文字や狭い文字が自然な幅に近い感じで使えるから。たぶん、"Wl"(広い + 狭い)が"xx"(通常の2倍)と同じ長さになるように幅が調整されてると思う。EmacsでIosevka Aileを使った経験では、だいたいは揃うけど、必ずしもそうじゃないこともある。完全な比例フォントよりは、ずっと良い妥協だと思う。

ちょっとバカなアイデアかもしれないけど、フォントを瞬時に切り替えられるターミナルエミュレーターはどうかな?たとえば、vimみたいな「全画面」プログラムが他のバッファに切り替わるときに、モノスペースフォントに切り替えるとか。もしくは、行ごとに異なるフォントをレンダリングすることもできるかも。

比例フォントだとタイポが見つけにくい気がする。多分、読みやすいから脳が無意識に無視しちゃうのかも。タイポ、例えばカンマの位置がずれたり忘れたりすると、すごく厄介なバグを引き起こすことがあるしね。それに、ほとんどのエディタはまだ個々の文字で動いてるから、固定幅フォントだとカーソルを特定の位置に移動させるために、どれだけカーソルアップやカーソル左のコマンドを送る必要があるかすぐにわかるんだ。

今のお気に入りのコードフォントはBerkeley Monoだよ。https://usgraphics.com/products/berkeley-mono 無料じゃないけど、大好きなんだ。いくつかのバリエーションもカスタマイズできるし(ゼロの見た目とか;私は「見えないスラッシュ」スタイルを使ってる)、ターミナルシンボルやPowerlineみたいなターミナルの調整で使われるプログラミングリガチャにも対応してるよ。

このフォント大好き!値段に見合うだけの価値があるよ。

そうだね、Berkeley Monoがあるところには代替がないよ。あのフォント大好きで、どこでも使ってる。

うん!この前手に入れたばかりだよ。バリアントを手に入れるためにアップグレードしたけど、すぐに$75の開発ライセンスに含まれてるレギュラーに落ち着いた。Obsidianみたいな非コードでも使ってみたけど、すごくいいよ。

同じだね。読みやすさに関しては他のフォントは全然ダメ。各フォントがどんなに素晴らしいって主張しても、私に合わなければ意味がないんだ。

かなり前にこれらのフォントから移行して、今はどこでも https://github.com/be5invis/Iosevka を使ってるよ。C++みたいな「言葉が多い」言語には理想的で、典型的な行の長さが150文字を超えることも多いから、横にスクロールしなくて済むんだ。

「これを使ってるよ」リストに追加すると、ターミナルとコードエディタの両方をMaple Mono[1]に切り替えたよ。TFAを見てると、Atkinson Hyperlegibleに似た雰囲気があるみたいだけど、使ったことはないんだ。Mapleにはたくさんのリガチャがあって、個人的にはハイパービジブル[TODO]が好き。全体的に、小さいサイズでもとても読みやすいし、Markdownを書くときにも心地よいよ。[1] https://font.subf.dev/en/ / https://github.com/subframe7536/maple-font

Iosevkaは、現代のベクタープログラミングフォントの中で、Terminusを除けば最もターミナル向きだと思う。使いやすいフォントが見つからなかったから、Emacsをこれに設定したよ。

Fira Codeはゼロに空集合の記号(∅)を使ってるんだ。この間違いで12年生の数学のテストで正解を逃したことがある。間違ったスラッシュを入れちゃったんだ。それか、正しいスラッシュを入れたのに先生が誤解したのかも!

ノルウェー人やデンマーク人には不便だよね、だってØは私たちのアルファベットの一部だから。スウェーデンがÖって書くのがちょっと羨ましいな…どちらにしても、その理由で点付きゼロが大好きだよ。

うん、真ん中に点があるのが一番いい選択肢だし、直線のスラッシュラインよりもグリフの全体的な円形コンセプトに合ってるね。

恥ずかしいくらい長いコーディングの時間の中で、これらのフォントやもっと色々(VT100とか)を試して、最終的にはサンセリフの等幅フォントからセリフ付きのものに切り替えたんだ。長い日が終わった後に疲れにくいからね。ここ数年はMonaspace[1]のバリエーション、特にXenonを使ってて、すごく楽しんでるよ。1. https://monaspace.githubnext.com/

「Atkinson Hyperlegible」に移行してから、ノート取りやリーディング、Markdown編集などに使ってるんだ。最近は「Atkinson Hyperlegible Next」にアップグレードして、iA Writerのフォントよりも気に入ってる。選択肢が豊富で、どれも美しくて読みやすいし、快適だよ。ただ、「Atkinson Hyperlegible Mono」(IDE/ターミナル)はちょっと好みじゃなかったかな。眼鏡をかけてるけど、そこまでひどくないし、眼鏡なしでパソコンを使いたいんだ。個人的には「Monaco」の少し大きめのフォントが好き。もう一つの理由は、より一般的なフォントを使って、チームメンバーと話し合うときにどんなIDEでも使えるようにしたいから。お気に入りのフォントがなくても不快に感じたくないしね。これはあくまで個人的な意見だけど、「Atkinson Hyperlegible」をウェブサイトで約1ヶ月使ってみたけど、モダンでもプロフェッショナルでもヴィンテージ/クラシックでもなくて、どちらかというと「ウェブサイトが読者や訪問者に寄り添っている」感じだった。「大丈夫? 読みにくい? 科学的な修正をして、読みやすくするよ!」って。

同じく。Monaco以外は使えないな。

「Atkinson Hyperlegible Mono」はプログラミング用のリガチャサポートがない。いいね。それはバグじゃなくて機能だよ。→をダッシュと大なり記号として表示したい。矢印じゃなくてね。理由はうまく言えないけど、魔法に対する根深い不信感があるから。

weztermはリガチャを使うかどうか選べるよ。config.harfbuzz_features = { 'calt=0', 'clig=0', 'liga=0' }

そのフォント機能を無効にするのは自由だし、ユーザー設定もバグじゃないよ。

だから、0xProtoフォントが好きなんだ。きれいな見た目のためのリガチャがあって、文字の間に少しスペースが残ってるから、個々の文字もちゃんと読めるんだよね。全体的に読みやすくて、バランスもいいし。リガチャは必須で、いろんなフォントだと記号がうまく揃わなくてイライラすることが多いから。

多くのいわゆる読みやすいフォントに対する私の悩みは、実際にはあまり読みやすくないことなんだ。可読性は、個々の文字がどれだけ簡単に識別できるかを指すけど、良い読みやすさは脳が単語全体をどれだけ簡単に認識できるかに依存してる。文字の形状のパターン認識を通じてね。文字が形やサイズであまりにも似ていると、各単語の独特な形を区別するのが難しくなって、可読性が下がるんだ(これが高い可読性を謳うフォントでよく起こること)。たとえ各文字が技術的にはもっと明確でもね。

面白い違いだね。可読性と読みやすさの違いなんて知らなかった。もっと詳しく聞きたいな。バランスが良いフォントの経験とか、詳しくこのテーマを扱った資料知ってる?

いい観察だね、可読性と読みやすさは同じじゃない。ハイパーレジブルフォントは、読者が正しい文字や短い単語を識別できることが重要な場所で使われるんだ。たとえ読みやすさが少し犠牲になってもね。読みやすいフォントは、長文のテキストに使われて、個々の文字を正しく識別するよりも、読む流れが大事なんだ。どちらも有効な使い方があって、両方をうまくこなすフォントもあるよ。

この可読性と読みやすさの違いが、ProportionalやInput Sansみたいな可変幅プログラミングフォントが、文字のグリッド整列を犠牲にしても、長時間のコーディングセッション中に認知負荷を減らせる理由なんだ。

Atkinson Hyperlegibleが特に読みやすさを損なうと思う?コードのモノではなく、テキストのレギュラーについて考えてるんだけど。

何年もいろんなフォントを試してみたけど、これに近いものはなかったな。https://usgraphics.com/products/berkeley-mono

まだAndale Monoが好きだな。これについての面白い見解があるよ: https://neil.computer/notes/berkeley-mono-december-update/ なんでこれをリンクしたのか考えてみて。--- Andaleについてもっと知りたいなら: https://en.wikipedia.org/wiki/Andalé_Mono この話題は20年後も続いてるかもね: https://nedbatchelder.com/blog/200602/monospace_fonts_compar... 2006年のこのキャプチャ以来、選択肢が増えて嬉しいよね: https://www.donationcoder.com/forum/?topic=2499.0