OctoBiz は、主にGitHub関連のプレゼンや資料向けに作られた日本語合成フォントです。
- 和文: BIZ UDPGothic — UD(ユニバーサルデザイン)系の高い可読性
- 欧文: Mona Sans — GitHub が手がけた汎用書体(Web / プロダクト / 印刷向け)
- 合成手法: BIZTER(BIZ UDPGothic × Inter)の FontForge ベース手法を流用
Important
OctoBiz は GitHub の公式プロダクトではありません。 個人プロジェクトとして、GitHub の OSS フォントである Mona Sans と BIZ UDPGothic を組み合わせた派生フォントを配布しているだけのものです。
brew install Songmu/tap/octobiz初回は third-party tap の信頼確認(The following taps are not trusted)が表示されます。y で続行するか、恒久的に信頼するなら次を実行してください。
brew tap --trust Songmu/tapReleases から最新版の zip を取得・展開し、.ttf を OS にインストールしてください。
提供ウェイト:
| ファイル | 用途 |
|---|---|
OctoBiz-Regular.ttf |
本文用 |
OctoBiz-Bold.ttf |
見出し・強調用 |
OctoBiz は以下の素晴らしいフォント/プロジェクトの上に成り立っています。
- 欧文フォント: Mona Sans — © 2022 The Mona Sans Project Authors, with Reserved Font Name
"Mona"(SIL OFL 1.1) - 和文フォント: BIZ UDPGothic — © 2022 The BIZ UDGothic Project Authors (SIL OFL 1.1)
- 合成スクリプト (
build.py) の派生元: yuru7/BIZTER — © 2022 Yuko OTAWARA, with Reserved Font Name"BIZTER"(SIL OFL 1.1)
両ソースフォントのライセンス全文は source_fonts/LICENSE_MonaSans と source_fonts/LICENSE_BIZUDPGothic を、BIZTER との関係を含む統合ライセンスは LICENSE を参照してください。
SIL Open Font License 1.1 で配布します。OFL は "source files, build scripts and documentation" を Font Software として扱うため、本リポジトリの フォント本体・ソースフォント・build.py のすべてが OFL 1.1 で配布されます。
- OFL に従い、再配布時はこの LICENSE ファイルおよびすべての著作権表示を保持してください。
- macOS / Linux
- FontForge (Python bindings 同梱)
- ttfautohint
- uv(開発ツール: ruff / mypy の管理用)
make setup が OS を判別して上記ツールを導入し、開発ツールを uv sync で同期します。
make setupNote
fontforge / psMat は FontForge 同梱の Python 専用モジュールで PyPI からは入りません。そのためフォントのビルドは uv の仮想環境ではなく システムの FontForge Python で実行します(macOS Homebrew では /opt/homebrew/bin/python3)。uv が管理するのは ruff / mypy などの開発ツールのみです。
source_fonts/ 配下に以下のファイル一式を配置します(OFL のもとで再配布が許可されているためリポジトリにも同梱済みなので、通常はこの手順をスキップして make build だけで OK です)。
source_fonts/
├── BIZUDPGothic-Regular.ttf
├── BIZUDPGothic-Bold.ttf
├── MonaSans-Regular.ttf
├── MonaSans-SemiBold.ttf # Bold ビルド時に欧文側として採用
├── MonaSans-Bold.ttf # 予備(ウェイト調整検証用)
├── LICENSE_BIZUDPGothic
└── LICENSE_MonaSans
ソースフォントを差し替え/更新したい場合の取得例:
# BIZ UDPGothic
gh release download -R googlefonts/morisawa-biz-ud-gothic --pattern 'morisawa-biz-ud-gothic-fonts.zip'
unzip morisawa-biz-ud-gothic-fonts.zip
cp morisawa-biz-ud-gothic-fonts/fonts/ttf/BIZUDPGothic-{Regular,Bold}.ttf source_fonts/
# Mona Sans (Static)
gh release download -R github/mona-sans --pattern 'mona-sans-static-*.zip'
unzip mona-sans-static-*.zip
cp fonts/static/ttf/MonaSans-{Regular,SemiBold,Bold}.ttf source_fonts/make build成果物は dist/OctoBiz-Regular.ttf および dist/OctoBiz-Bold.ttf に生成されます。
make packagedist/OctoBiz_v<version>.zip を生成します。zip 内は単一ルートフォルダ OctoBiz_v<version>/ に .ttf 一式・LICENSE・配布用 README.md を同梱します(バージョンは fontproject.toml 由来)。package.py は標準ライブラリのみで動作し FontForge 非依存です。
make lint # ruff (check + format --check) と mypy
make fmt # ruff で自動整形・自動修正このフォント自身のバージョンと、依存フォント(ソースフォント)のバージョン・由来は、リポジトリ直下の fontproject.toml に集約しています。build.py はこのファイルを唯一の真実 (single source of truth) として読み込み、
[font].versionを出力フォントのバージョン採番に使用- 各依存の
versionをフォントの Description (nameID 10) とコピーライトへ埋め込み - vendor 済みの
source_fonts/*.ttfの実バージョンが宣言値と一致するかビルド時に照合(不一致ならビルドを失敗させ、取り違えを防止)
します。バージョンや依存を更新する際は、まず fontproject.toml を編集してください。
Note
依存の厳密なピン留め(リリースタグ / コミットハッシュ単位の固定)は将来対応予定で、現状は人間が読むための version の記録と照合のみを行います。
バージョンは、fontproject.toml の [font].version にsemver形式で記載します。git tagは v prefix付きの値を使用します。
一方、OpenType の数値バージョン(name ID 5 / head.fontRevision)は仕様上 MAJOR.MINOR(小数部ちょうど3桁)しか持てず、semver をそのまま格納できません(OpenFV でも MINOR は3桁固定)。そこで小数部3桁を minor 1桁 + patch 2桁 に割り当てる方法を採用します(minor は 0–9、patch は 0–99)。これは Mona Sans(例: v2.0.27 → head.fontRevision = 2.027)と同じ方式で、patch を主に回し minor は大きめの節目で上げる運用を想定しています。
リリースは tagpr で自動化しています。
mainに変更が積み上がると、tagpr が次バージョンのリリース PR を自動で作成・更新します(fontproject.tomlのversionを更新)。- そのリリース PR をマージすると、tagpr が タグを打ち、リリースノート付きの draft リリースを作成します。
- GitHub Actions(
.github/actions/release)が フォントをビルドして zip を生成し、ghr でリリースに添付します。ghrは draft を検出してアセット追加後に 自動で publish します。
手動でタグ(v[0-9]+.[0-9]+.[0-9]+)を push した場合も、release ワークフローが同じ手順でリリースを作成します。
- Bold ウェイトマッチング: 現状は欧文側を
MonaSans-SemiBoldで合わせています。実プレゼン投影で太さ感を見ながらBold/ExtraBoldへの切り替えを検討してください(build.pyのEN_WEIGHT_FOR_JP_BOLDで変更可)。 - メトリクス: 行送り(typo / hhea)は em(2048)よりやや広めの約 1.11em(
LINE_ASCENT/LINE_DESCENT)に設定し、USE_TYPO_METRICSを有効化して全プラットフォームで行送りを統一しています。usWin*(クリップ枠)は欧文を 1.06 倍に拡大した実グリフ範囲をbuild.pyのink_extent()で実測し、はみ出しによる切れが起きないよう自動算出します。行間を変えたい場合はLINE_ASCENT/LINE_DESCENTを調整してください。 - ヒンティング: 最終工程で
ttfautohint --dehintをかけています(BIZTER と同じ方針)。 - Variable Font 非対応: BIZ UDPGothic がスタティックフォントのため、Variable 合成は行わず Regular / Bold の 2 ウェイト固定です。
- BIZTER — 合成手法のベース実装
- Mona Sans
- BIZ UDPGothic
- SIL Open Font License 1.1 FAQ