Skip to content

Songmu/OctoBiz

Repository files navigation

OctoBiz

OctoBiz は、主にGitHub関連のプレゼンや資料向けに作られた日本語合成フォントです。

  • 和文: BIZ UDPGothic — UD(ユニバーサルデザイン)系の高い可読性
  • 欧文: Mona Sans — GitHub が手がけた汎用書体(Web / プロダクト / 印刷向け)
  • 合成手法: BIZTER(BIZ UDPGothic × Inter)の FontForge ベース手法を流用

Important

OctoBiz は GitHub の公式プロダクトではありません。 個人プロジェクトとして、GitHub の OSS フォントである Mona Sans と BIZ UDPGothic を組み合わせた派生フォントを配布しているだけのものです。

インストール

Homebrew (macOS)

brew install Songmu/tap/octobiz

初回は third-party tap の信頼確認(The following taps are not trusted)が表示されます。y で続行するか、恒久的に信頼するなら次を実行してください。

brew tap --trust Songmu/tap

手動ダウンロード

Releases から最新版の 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_MonaSanssource_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 setup

Note

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 に生成されます。

配布用 zip の生成

make package

dist/OctoBiz_v<version>.zip を生成します。zip 内は単一ルートフォルダ OctoBiz_v<version>/.ttf 一式・LICENSE・配布用 README.md を同梱します(バージョンは fontproject.toml 由来)。package.py は標準ライブラリのみで動作し FontForge 非依存です。

Lint / フォーマット

make lint   # ruff (check + format --check) と mypy
make fmt    # ruff で自動整形・自動修正

プロジェクトメタデータ (fontproject.toml)

このフォント自身のバージョンと、依存フォント(ソースフォント)のバージョン・由来は、リポジトリ直下の fontproject.toml に集約しています。build.py はこのファイルを唯一の真実 (single source of truth) として読み込み、

  • [font].version を出力フォントのバージョン採番に使用
  • 各依存の version をフォントの Description (name ID 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.27head.fontRevision = 2.027)と同じ方式で、patch を主に回し minor は大きめの節目で上げる運用を想定しています。

リリース

リリースは tagpr で自動化しています。

  1. main に変更が積み上がると、tagpr が次バージョンのリリース PR を自動で作成・更新します(fontproject.tomlversion を更新)。
  2. そのリリース PR をマージすると、tagpr が タグを打ち、リリースノート付きの draft リリースを作成します。
  3. GitHub Actions(.github/actions/release)が フォントをビルドして zip を生成し、ghr でリリースに添付します。ghr は draft を検出してアセット追加後に 自動で publish します。

手動でタグ(v[0-9]+.[0-9]+.[0-9]+)を push した場合も、release ワークフローが同じ手順でリリースを作成します。

既知の検討ポイント

  1. Bold ウェイトマッチング: 現状は欧文側を MonaSans-SemiBold で合わせています。実プレゼン投影で太さ感を見ながら Bold / ExtraBold への切り替えを検討してください(build.pyEN_WEIGHT_FOR_JP_BOLD で変更可)。
  2. メトリクス: 行送り(typo / hhea)は em(2048)よりやや広めの約 1.11em(LINE_ASCENT / LINE_DESCENT)に設定し、USE_TYPO_METRICS を有効化して全プラットフォームで行送りを統一しています。usWin*(クリップ枠)は欧文を 1.06 倍に拡大した実グリフ範囲を build.pyink_extent() で実測し、はみ出しによる切れが起きないよう自動算出します。行間を変えたい場合は LINE_ASCENT / LINE_DESCENT を調整してください。
  3. ヒンティング: 最終工程で ttfautohint --dehint をかけています(BIZTER と同じ方針)。
  4. Variable Font 非対応: BIZ UDPGothic がスタティックフォントのため、Variable 合成は行わず Regular / Bold の 2 ウェイト固定です。

関連リンク

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors