微小画面向けの 5 ピクセル×5 ピクセルのフォント。

2026/04/20 0:19

微小画面向けの 5 ピクセル×5 ピクセルのフォント。

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

最も重要な示唆は、AVR128DA28 などのリソース制約の厳しい 8 ビットマイクロコントローラ向けに最適化された、非常に効率的で手作業によるフォント設計にあります。lcamtuf の

5x6 font-inline.h
に基づき、ZX Spectrum のスタイルに触発されたこのアプローチは、ベクトルフォント(メガバイト規模のデータを必要とするため)が失敗したり、限られた RAM を備えたデバイス上で文字列長の計算時に整数溢れ問題を引き起こしたりする記憶制約を解決します。このフォントは合計 350 バイトで完結しており、標準的な 128x64 OLED などコンパクトなディスプレイに適合します。主要な設計判断はグリッド寸法に集中しており、5x5 グリッドが "E" や"M"や"W"のような個別の文字を損なうことなく完全な可読性を維持するための最小サイズであることが特定されました。一方、より小さなグリッドではフォント数の大幅な減少と可読性の低下を引き起こし(例:3x5 に落とすと特定の形状が失われ、3x3 未満では文字セットが単純なコードに縮小されます)。この定幅形式はプログラミングを簡素化し、画面内の文字列長が予測可能(文字数の 6 倍)になります。これにより、厳格にストレージ制限を受けたハードウェア上でもファームウェアは軽量かつ信頼性が保たれます。プロジェクトのソースには、2026 年 4 月に開発された
mcufont.h
および
test.c
と関連するピクセルアートフォントリポジトリが含まれています。

本文

2026 年 4 月 18 日〜20 日(プログラミング)

フォントデータ(C ヘッダー)

すべての文字は縦 5 ピクセルの正方形内に収まり、6×6 のグリッド上で安全に描画できます。デザインは lcamtuf 氏の「font-inline.h」をベースにしており、それ自体は ZX Spectrum の 8×8 フォントに触発されています。

可读性の妥協を許さない最小サイズは 5×5 です:

  • 2×2:不可能。
  • 3×3:技術的には可能ですが、読めないレベルです。
  • 4×4:"E"、「M」、または"W"などを適切に描画するには不十分です。
  • 5×5:本フォントの採用サイズです。

実は 5×5 は、小文字を 1 ピクセル小さくして大文字と視覚的に区別する十分な幅があります。さらに狭い 4×5 や 3×5 も実装は可能ですが、「M」や点付き「0」を使い難くし、「U」「V」「Y」の識別性を損なうことになってしまいます。すべての文字を同じ横幅(5 ピクセル)に揃える芸術的な理由はありませんが、プログラミング上では「一定幅を使う方が遥かに楽」という実用的なメリットがあります:画面上の文字列の長さは、常に文字数×6 です。また、緊密なレイアウトにおいて、"8978"の方が"1111"より長くなるという心配もなくなります。

全体としてこのフォントはメモリ占用がわずか 350 バイトです。これは AVR128DA28(RAM 16 kB)といった 8 ビットマイクロコントローラーへの理想的なサイズです。これらのマイコンは安価で低消費電力かつ堅牢ですが、グラフィックス性能では不足しています:解像度が低い 384×288 のディスプレイでも 11 万画素必要となり、AVR のメモリ容量からは遥かに超えてしまいます……しかし、多くのプロジェクトではそんな大量の画素は実際には不要です。実用的で安価なのは 160×128 や 128×64 の OLED でありますが、これらを活かすには手作業で作られた画素効率が優れたフォントが求められます。

参考として、同程度の縮尺でレンダリングされたベクターフォントを以下に示します:

実際には高さ 6 ピクセルですが、文字幅の方が狭いため、ここは例外として許容します。

アンチエイリアリング、数 MB のコード、1 MB のフォントデータを用いたものでも、自作の 350 バイトのものに比べれば劣ります。現実のピクセルは完璧な正方形ではないため、このフォントは記事冒頭のレンダリング画像とは実際に異なる見た目になります:これが実画面での表示です:

個人的には、サブピクセルによって生じる擬似的なドロップシャドウ効果は大変気に入っています。モノクロディスプレイではこうした現象は起きませんが、それでも驚くほど滑らかな印象を与えるでしょう。ピクセル間のギャップが"e"や"g"の文字表現を特に強調し、同様の効果が……

さらに小さいフォントにも挑戦しました:

5×5 は妥協を許さず最小な解像度ですが、3×5 も悪くありません:このサイズでは 32,768 のグリフが定義可能(そのうち 27,904 が一意)。"M"、"W"、"Q"の品質は低下しますが、"O"と点付き"0"の違いはまだ保たれています。ディスプレイに列数を 50% 増やす必要がある場合は、これのような解像度が現実的な選択肢になり得ます。それでも読み取れますし、3×4 ではどうでしょうか:

このサイズではグリフ数が 4,096(そのうち 3,392 が一意)です。この規模では大文字と小文字を明確に区別することは不可能なので、限られた空間の中で最も馴染みのあるスタイルを採用しました。数字も影響を受けましたが、それでも使い物になります。

3×3 ではどうでしょうか:

このサイズではグリフ数は 512(そのうち 400 が一意)です。主な損失は数字部分ですが、文字自体は重複せず、ある程度認識可能です。

このフォントは実機ハードウェアで表示されることで劇的に改善されます:つまり、まだサイズが大きすぎます。では 2×3 はどうでしょうか:

このサイズではグリフ数が 64(そのうち 44 が一意)になります。もうこれはやりすぎでしょう。ほとんどの文字が認識できず、重複も多いです。以下の一行は"Hello World"と読めます:

縦横比を逆転させた 3×2 にするとかなり改善します:このサイズでもグリフ数は 64(そのうち 44 が一意)です。

シミュレーションされたピクセルグリッドでは、より多くの文字(M, W, N, Q, G, P など)が水平方向の詳細を持ち、「E」「F」のように垂直方向の詳細を持つ文字に比べて特徴的です。一行目は"you can probably read this"と読めますが、少し目を細めたりズームアウトしたりする必要があるかもしれません。そして完全性を保つためにも、2×2 のケースも確認します:

このサイズではグリフ数が 16(そのうち 10 が一意)です。紙面上で可能な 2×2 のパターンは 16 通りありますが、その内一つは空白であり、5 パターンは他のパターンのシフトコピーに過ぎません。残りの 10 パターンだけでは数字の全ての桁を表せる程度ですが、元の数字と全く似ていないため、これはフォントというより暗号に近いものです。

関連プロジェクト:

  • /projects/mcufont/mcufont.h
    :5×5 のフォントデータ。
  • /projects/mcufont/test.c
    :フォントをプレビューするプログラム。
  • https://lcamtuf.coredump.cx/soft/embedded/font-inline.h
    :元のフォント。
  • https://moonbench.xyz/projects/tiny-pixel-art-fonts/
    :他にも小さなフォントが登場しています。

同じ日のほかのニュース

一覧に戻る →

2026/04/23 5:27

Apple、警察による iPhone の消去されたチャットメッセージの抽出を可能にしていたバグの修正を提供。

## Japanese 翻訳: Apple は緊急に重要なソフトウェア更新をリリースし、iOS 18 およびそれ以前のバージョンを実行する iPhone と iPad(すべてを含む)で、Signal や WhatsApp のような暗号化アプリから削除されたメッセージを法執行機関のフォレンジックツールが抽出できるという深刻なセキュリティ欠陥を修正しました。この脆弱性は、ユーザーがメッセージを削除してもデバイス上で最大 1 ヶ月間キャッシュとして保持され、削除されない通知データが原因でした。これにより、「セットして忘れましょう」という設計思想を持つ危険人物向け自動削除タイマーにもかかわらず、法執行機関(FBI を含む)は押収されたデバイス上の私的チャットを再構築することができました。この問題は Signal 社長メレディス・ホイッターによって確認され、当初は404 Mediaによって開示されました。問題の核心は、削除対象としてマークされた通知が予期せずにデバイス上に保持されたことです。OS 全体のアップグレードを必要とせず、即時のリスクを軽減するために、Apple は該当デバイスに修正をバックポートし、不可欠なプライバシー保護を回復するとともに、将来的なフォレンジック攻撃を防ぐためにモバイルセキュリティプロトコルにおけるより厳格なデータキャッシュ管理の必要性を強調しました。

2026/04/23 2:35

私たちが発見したのは、あなたのすべてのプライベートな Tor アカウントを相互に結びつける安定した Firefox の識別子です。

## 日本語訳: 元のサマリーは優れている—it は簡潔で明瞭であり、主要ポイントリストからのすべての主要ポイントを余計な冗談抜きに捉えている。 ## サマリー: Firefox ベースのブラウザには、プライバシー上重大な欠陥があり、ウェブサイトがプライベートモードであってもユーザーを一意に追跡できるようになっています。この問題は、`IndexedDB`(ブラウザの保存システム)がデータをどのように順序付けるかという仕組みから生じており、これは永続的な「指紋」を作り出します。この順序付けはブラウザを完全に再起動するまで安定するため、異なるウェブサイトにおいて同様のパターンを観測し、従来のクッキーを使用せずにユーザーのウェブサイトの活動同士をつなげることを可能とします。この脆弱性は、セッションデータを閉じた後で消えるかリセットすると期待して匿名性を維持するためにユーザーが依存している Tor の「新しいアイデンティティ」機能のようなプライバシー保護措置を効果的に回避します。 この欠陥がすべての Firefox 派生版で共有される `Gecko` エンジンに存在することに気づいた Mozilla は、最近のバージョン向けの緊急修正をリリースしました。解決策はデータベースリストの表示方法を標準化し、追跡を可能とした内部の保存パターンを取り除きます。その結果、ユーザーはこれらの指紋を完全にクリアするためにブラウザを再起動する必要があります。それまでの間、プライベートブラウジングモードの信頼性が損なわれ、無関係なウェブサイトがユーザーの一貫したクロスサイト行動を識別できないという根本的な信頼が破られます。

2026/04/23 2:51

過剰編集とは、必要以上のコード改変を行うモデルの動作を指します。

## Japanese Translation: 大規模 AI コードツールは頻繁に、単純なエラー(例えば、オフバイワンエラーの修正)に対して機能するコードを不必要に広範に書き換えるという深刻な「過剰編集問題」を抱えています。「より多くのテストを書く」という既存のアドバイスはこの問題を検出できず、その理由としては、不要な構造的変更がなされたとしてもテストスイートはパスし続ける点、および標準的な指標では元アーキテクチャに対する忠実性の不足を捉えられない点が挙げられます。最近の研究では、コード構造を維持するための特定の指示を用いることでこの問題を実効的に軽減できることが示されており、また監督微調整(SFT)がドメイン外への一般化に失敗するのと異なり、コーディング能力を損なわずに良好に一般化する全リニューアランスレーニング(RL)や、バグのある報酬関数を用いた RL 微調整も同様に有効であることが示されています。LoRA 微調整といった高度な技術では、フル RL のパフォーマンスにほぼ匹敵しつつ fewer な調整だけで実現でき、これらの改善への軽量なアプローチを提供します。結局のところ、これら戦略を採用することで開発者は、AI コードアシスタントの信頼性を確保し、破壊的な書き換えではなく最小限かつ高品質な更新を行う方向へと誘導できます。