4 ポイント 投稿者 GN⁺ 2025-12-14 | 2件のコメント | WhatsAppで共有
  • 世界中のUnicode文字に対応する**グリフ(文字図形)**を収録した自由フォントで、GNUプロジェクトの一部として維持されている公開フォント
  • 15.1.01版からはイ・ミンソとイ・ホソクの貢献により、**新しい組み合わせエンコーディング(6/3/1方式)**が導入され、改良されたハングルグリフ体系が適用
  • 最新の17.0.03版では、中国語・日本語の漢字やアラビア文字・音楽記号など多数のグリフが修正・追加
  • **BMP(基本多言語面)**全体の65,536コードポイントをサポートし、**SMP(補助多言語面)およびCSUR(ConScript Unicode Registry)**領域も段階的に拡張中
  • GNU GPLv2+ フォント埋め込み例外SIL Open Font License 1.1デュアルライセンスで配布されており、商用ソフトウェアでも自由に利用可能
  • 世界中の文字体系の完全なカバレッジを目指す代表的なオープンソースUnicodeフォントプロジェクト

GNU Unifont 概要

  • GNU Unifontは、すべての印字可能なUnicodeコードポイントに対するグリフを含むフォントで、GNUプロジェクトの一部として維持されている
    • 基本多言語面(BMP, U+0000~U+FFFF)を完全サポート
    • 補助多言語面(SMP, U+010000~U+01FFFF)およびCSUR/Under-CSUR領域も継続的に拡張中
  • 商用ソフトウェアでも利用可能で、派生フォントは同一ライセンスで公開する必要がある
    • ライセンスはGNU GPLv2+(フォント埋め込み例外を含む)およびSIL Open Font License 1.1
    • 派生フォントの公開を通じて公共の利益を確保

著作権とライセンス

  • 数千に及ぶグリフは個々の貢献者による創作物であり、各国の著作権法によって保護される
    • 一部は既存の文字形、一部はアイコン・シンボルデザインであり、国際的な保護水準がより高い
  • ドイツ著作権法に関するメモランダムが公開されている
  • Unifont 13.0.04以降の版からGPL 2+ / SIL OFL 1.1のデュアルライセンスで配布
    • 文書にフォントを含める(embed)ことはGPL違反ではない

フォントのダウンロードと形式

  • 標準ビルドとCSUR/Under-CSUR PUAグリフを含む版を提供
    • OpenType(.otf)PCFBDFPSFHEXなど多様な形式をサポート
    • Windows、macOSでインストール可能で、macOSターミナルではAntialiasオプションを有効にすることで可読性を確保
  • 一部のレンダリングエンジンはグリフ間隔情報を無視するため、等幅専用エンジンでは表示エラーが起こる可能性がある

Unifontの限界

  • 各印字可能コードポイントごとに1つのグリフのみを保存
    • インド系文字(デーヴァナーガリー、ベンガル文字、タミル文字など)や**位置によって形が変化する文字(アラビア文字など)**は正確にレンダリングされない
    • 複雑なスクリプトには専門のOpenTypeフォントの使用が推奨される

新しいグリフへの貢献

  • 新しいグリフを追加するには事前のメール連絡が必要
    • 重複作業を防ぐため、相談後に参加できる
  • 中国政府が著作権を保有する**15×16ピクセル漢字グリフ(Plane 2, 3)**は自由フォントに含められない

最新リリース — Unifont 17.0

  • 2025年11月1日版 17.0.03
    • 中国語の「馬」・「鳥」部首を含む漢字100字以上を修正
    • 1935〜2013年の中国簡体字標準一覧を反映
    • 2009年公表の現代常用字部首規格を収録
  • 2025年10月18日版 17.0.02
    • Plane 0〜3全般でPaul Hardy, David Corbett, Xiao Xiao Akatsuki, Boris Zhangなど多数が貢献
    • アラビア文字、チェス記号、CJK拡張漢字などを多数修正
  • 2025年9月9日版 17.0.01
    • アラビア文字拡張-B、通貨記号、テルグ文字・カンナダ文字などを追加
    • Plane 1〜3で新しいアラビア文字拡張-C、Sidetic、Tolong Siki、Beria Erfe、Adlamなど多数のスクリプトを追加

以前の主要版

  • Unifont 16.0(2025年上半期)
    • アラビア文字、ギリシャ文字、ハングル、音楽記号などを多数修正
    • Sitelen PonaZbalermornaなどのCSURスクリプトを追加
  • Unifont 15.1(2024年)
    • イ・ホソク(Ho-seok Ee)による組み合わせ型ハングル 6/3/1 Johabエンコーディングを導入
    • TrueTypeからOpenTypeの標準ビルドへ移行
    • ハングル、CJK拡張漢字、Wen Quan Yiグリフを大幅改善

グリフカバレッジ

  • Plane 0〜3、Plane 14、Plane 15まで広範なUnicode面をサポート
    • Plane 0: 基本多言語面(すべての主要文字を完全カバー)
    • Plane 1: 補助多言語面(音楽記号、象形文字、古代文字など)
    • Plane 2〜3: CJK拡張漢字
    • Plane 14: タグおよび異体字セレクタ
    • Plane 15: CSUR/Under-CSUR私用領域

CSURおよびUCSURスクリプト

  • Tengwar, Cirth, Aurebesh, Klingon, Sitelen Pona, Sadalianなど
    • さまざまな人工文字(conlang script)を含む
    • 一部はまだ未完成として表示される

日本語および中国語バリアント

  • JIS X 0213標準を完全サポートするunifont_jp版を提供
    • 初期はJiskan16、その後Izumi16公開グリフに置き換え
  • 中国語版は通用規範漢字表を完全カバー
    • **Wen Quan Yi(文泉驛)**プロジェクトの公開グリフをベースとしている

技術的詳細

  • TrueType変換Luis Alejandro González Mirandaのスクリプトをベースとしている
    • .hex.sfd.ttf変換を自動化
  • 16×16ピクセルグリッドを基本とし、将来的には32×32ピクセルグリフをサポート予定

今後の計画

  • SMP面の16×16ピクセルグリフはすべて完成済み
  • Tangutなど複雑なスクリプトは、今後32×32ピクセルで制作予定
  • CSURスクリプト追加作業を継続中
  • すべての新規貢献はGPL 2+ / SIL OFL 1.1条件で公開する必要がある

プロジェクトの意義

  • GNU Unifontは世界中の文字体系へのデジタルアクセシビリティ確保を目指す代表的な自由フォント
  • オープンソース生態系、国際化(i18n)、フォントエンジニアリング分野で中核インフラの役割を果たす
  • 継続的なコミュニティ貢献を通じてUnicode標準の視覚的完成度を高めるプロジェクト

Unifontのハングルフォントページ - Hangul(Hangeul) Font

ハングルの起源と構造

  • ハングルは世宗大王が1443〜1446年の間に創製し、1446年に訓民正音解例本として頒布
    • 創製の目的は「民が容易に学び、日々便利に使えるようにすること」と明示されている
    • 解例本は字母の原理を説明した注釈書で、第二次世界大戦中に発見された唯一の写本が保存されている
  • ハングルは初声(子音)・中声(母音)・終声(パッチム)の3要素から成る音節ブロック構造
    • 例: 「ハングル」は「hieuh+a+nieun」、「gieuk+eu+rieul」の組み合わせで構成
    • 母音と半母音(y, w)は初声の右側または下側に配置される

子音の構成原理

  • 子音は発音器官の形をかたどった5つの基本子音(giyeok, nieun, mieum, siot, ieung)から出発
    • ここに画を加えて17個の本来の子音が作られる
    • 一部の子音は濃音を示す二重子音形を持つ
  • **互換用字母(Compatibility Jamo)**もUnicodeに含まれており、一部の古い字母は現在使われていない

母音の構成原理

  • 母音は**天(陽)、人(中)、地(陰)**の三才思想に由来
    • 基本要素: 点(arae-a)、水平線(eu)、垂直線(i)
  • もともと11個の母音があり、arae-aは現代標準語では消えたが、済州方言に残っている
  • 母音の結合によって**二重母音(diphthong)**が形成され、一部は現代ハングルでは使われていない
  • Unifont Hangul字母セットは古代と現代のすべての母音・二重母音をサポート

Unicodeにおけるハングル領域

  • ハングルは次のUnicode範囲に含まれる
    • U+1100–U+11FF: Hangul Jamo
    • U+3130–U+318F: Hangul Compatibility Jamo
    • U+A960–U+A97F: Hangul Jamo Extended–A
    • U+AC00–U+D7A3: Hangul Syllables
    • U+D7B0–U+D7FF: Hangul Jamo Extended–B
    • U+FFA0–U+FFDF: Half-width Compatibility Jamo
  • 初声・中声・終声の組み合わせ位置調整がフォント設計の核心であり、ビットマップフォントでも組み合わせ型音節を表現可能

X11組み合わせ型(Johab)フォントとUnifont

  • Johabエンコーディングフォントは初声・中声・終声を結合して音節グリフを生成
    • Unix X11環境のHantermターミナルで使用
  • Hanterm向け自由フォントはGPL互換ではなかったため、Unifontでは新しいハングル音節グリフを直接制作
    • 変換過程: Perlスクリプト johab2ucs2.pl → .hex → .bdf 変換
    • 既存フォント(iyagi16, johabg16など)はHanterm専用ライセンスで制限されていた
  • その後、新しいHangul Syllablesセットを数年かけて制作し、Unifontに収録

最近の貢献とエンコーディング改善

  • イ・ミンソ(Minseo Lee): 2023年、Hanterm順序ベースの現代グリフと古代グリフ修正版を提供
    • Perlスクリプトを改良し、Unicode範囲内の字母整合性を修正
  • イ・ホソク(Ho-Seok Ee): Johab 6/3/1エンコーディングを提案
    • 初声6、中声3、終声1の組み合わせ構造により、従来よりグリフ生成を単純化
    • **Private Use Area(U+E000–U+E8FF)**へのコードポイント移動を提案
    • Unifont 15.1.01版からこのエンコーディング方式を採用

Unicodeハングル音節ブロック(U+AC00–U+D7A3)

  • 合計11,172個の音節グリフで構成
    • 初声19個(または埋め字1個)、中声21個、終声27個(またはなし)
    • 組み合わせ式: (19×21)×28 = 11,172
  • 母音で始まる語は**初声「ieung」**を埋め字として使用
  • Unifont 5.1以降の版では、新しい音節ブロック生成過程が別文書 Generating Hangul Syllables に詳述されている

2件のコメント

 
joyfui 2025-12-14

マインクラフトの不格好な韓国語フォントの正体はこれですね…。

 
GN⁺ 2025-12-14
Hacker Newsのコメント
  • 私たちはSolveSpaceのテキストウィンドウとプロパティブラウザにGNU Unifontを使っている
    実行ファイルに直接埋め込めるのでとても便利だった。一部のユーザーは設計にCJK文字を含めるが、すべてのプラットフォームでそのまま問題なく動く
    CADの穴注記を見ていたとき、counter-borecounter-sink の記号がすでにUnifontに含まれていることに驚いた
    実験用のWeb版はここで見られる
    • Web版のシンプルさが本当に素晴らしい。SolveSpaceは私が最も好きなMCADプログラムで、PCBテスト用ジグを素早く作るときにいつも最初に手が伸びるツールだ
      幾何形状が単純なときは、使い心地が非常に快適だ
    • 単にフォントを選ぶだけでこんなに素敵な効果が出るのが不思議だ。もちろんUnifontとUnicode全体には膨大な人類の時間が注ぎ込まれているのだろうが、青銅器時代のCADエンジニアがLinear Aで名前を書いても問題ないという発想が気に入っている
    • Web版が本当にすっきりしている。SolveSpaceは機能こそ限られているが、制約条件を表現するときの柔軟さと楽しさが圧倒的だ
      いつかコードに入って、「制約を生成できません」というモーダルダイアログを置き換えてみたい
  • 他の人のために整理しておくと、GNU Unifontはビットマップフォント
    BMPのすべてのコードポイントに固定グリフを提供し、他のいくつかの面のコードポイントも含んでいる
    言語ごとのレンダリング知識なしにUnicodeテキストを編集できるエディタに便利だ
    ただしデーヴァナーガリーのような複雑なスクリプトでは、シェーピングがないため実際のテキストのようには見えない
    • ここでのBMPはBitMapではなく、Unicode Basic Multilingual Planeを意味する。つまり最初の65,536個のコードポイント領域だ
    • ではポイントサイズごとに別々のファイルがあるのだろうか。フォントについて自分がほとんど何も知らないことを改めて感じる
  • そのWebサイトの最初の文は、GNU Unifontが何なのか説明すべきではないかと思う。おそらくほぼすべてのUnicodeコードポイントを含む単一のcopyleftフォントなのだろう
    • 実際には2文目と3文目がすでに正確に説明している。BMPのすべての印字可能なコードポイントのグリフを含み、最後の手段のフォントとして適している
      他のフォントでグリフが見つからなかったときに文字を表示してくれる役割だ
    • 「ほぼすべて」は「すべて」ではない。私は珍しいCJK文字をレンダリングしなければならないプロジェクトがあるが、Unifontでは正しく表示されない
      代わりにJigmoフォントを使ったが、CJKグリフはそれが最も完全だった
    • 私も最初は混乱したが、「Home」を押してみて、そのリンクがランディングページではないことに気づいた
    • こういうふうに最初の文の説明が不十分なオープンソースプロジェクトは本当に多い
    • 「GNU UnifontはGNUプロジェクトの一部であり、BMPのすべての印字可能なコードポイントのグリフを含む」という文は、すでに十分明確だと思う
  • 印刷しても本当に美しい。私はそれを渦巻きポスターにして壁に掛けてある
    The Mostly Complete Unicode Spiral
    • すごい!どんなサイズで印刷したのか気になる。主な渦の周辺にあるまばらな漢字はUnicodeの自然な配置なのか、それとも演出なのか?
      全体が銀河のように見えて、絵文字が外側の縁に整列しているのが印象的だった。地球の絵文字を探すのも楽しかった
  • Unifontは各コードポイントごとに1つのグリフしか保存しない
    そのため複雑なスクリプト(Indic、Arabicなど)は正しくレンダリングされない
    こうした場合はOpenTypeフォントを使う必要があり、Unifontはあくまで
    フォールバック用フォント
    に適している
  • フォントサイトにはしばしば「Hello World」のようなタイプスペシメンのプレビュー画像がある。Unifontのページにもそういうものを追加するとよいと思う
  • GNUという名前を見ると、あらゆる面で最高ではないとしても、ユーザー尊重の面ではほぼ最高だと感じる
  • 私はUnifontをシステム全体に適用し、Firefoxでは唯一のフォントとして強制使用している
    Webフォントのダウンロードも無効化していて、CSUR(ConScript Unicode Registry)には自分が作った文字もある
    QtではDPI設定が厄介だが、QT_FONT_DPI=128で解決する。RimWorldのようなゲームでもUnifontだけを使わせたい
    • なぜそんな使い方をしているのか気になる
    • 私もインストールしてみたが、HNは200%拡大しないと読めなかった。XFCEではそこそこ大丈夫だった
  • 私はFirefoxで綺麗なCJKフォントを使うにはUnifontを削除しなければならなかった
    フォントフォールバックが妙にUnifontを優先して選んでいたからだ
    • 解決するにはFirefox設定のLanguage and Appearance → Fonts → Advancedに入り、スクリプトごとにフォントを指定すべきだ
      そうしないとどのフォントが選ばれるか予測できない
    • 私もFirefoxとChromeでUnifontグリフが表示されない問題を経験した。nixpkgsのIssue Trackerにも関連報告がある
      Noto Color Emojiでも似た現象があった。フォントは本当に微妙な世界だ
  • 私はUnifontをベースにPlaydate向けフォントを作った
    https://github.com/remysucre/cuniform