Skip to content

omonomo/Cyroit

 
 

Repository files navigation

全角英数や半角カナが判別しやすい、文字間隔調整機能付き等幅フォント「Cyroit」

Cyroit (しろいと) はプログラミングにもお使いいただける日本語等幅フォントです。
プログラミング向け合成フォントとして評価の高い ricty の生成スクリプトで遊んでいるうちに、フォント製作の沼にはまってしまったことで誕生しました。
全角英数記号や半角カナ等にアンダーラインが引いてあるため、全角・半角の組み合わせになっている括弧や、誤って使われている全角チルダなどをすぐに見つけることができます。
全角スペースや半角・ノーブレークスペースを可視化したバージョンも用意してあり、使い分けて使用できます。

Commit Mono に影響を受け、calt を利用したカーニング機能を実装しました (v1.1.0以降)。
mottainaiDTP さんの 3桁ごとにカンマが発生するフォント を応用して、桁区切り表示に対応したバージョンを追加しました (v1.6.0以降)。
スタイルセットに対応したことで、機能や見た目について柔軟にカスタマイズできるようになりました (v2.0.0以降)。
変体仮名と小書き仮名拡張の表示に対応しました (v2.1.0以降)。

フォントサンプル

CotEditor にて
ScreenShot

warp + Starship + lsd にて
ScreenShot

egword Universal2 にて
ScreenShot

カーニングサンプル
ScreenShot

桁区切り表示サンプル
ScreenShot

ダウンロード

最新版 (v2.2.6)

フォントやスクリプトの使用は自己責任にてお願いいたします。
各ファイルを使用することで生じた不具合・損害等について omonomo は責任を負いません。

その他の特徴

  • 主にラテン文字のグリフは Inconsolata を使用しています。
  • 主に仮名文字、ギリシア文字、キリル文字のグリフは Circle M+ 1m を使用しています。
  • 主に漢字のグリフは BIZ UDゴシック を使用しています。
  • 変体仮名のグリフは NINJAL 変体仮名フォント を使用しています。
  • Nerd Fonts Ver.3 を追加しています。
  • ricty_generator を Fork したスクリプトで自動生成させています。生成時にグリフの改変や調整を行っています。

ラテン文字について

  • 小文字の g をオープンテールに改変しています。
  • アスタリスクのスポークを6本に増やしています。
  • チルダの波が強調されています。
  • 数字の7の先端を折り曲げています。
  • その他のグリフについても、視認性向上や他の素材フォントとのバランスをとるための微調整をしています。

仮名文字について

  • 一部のひらがなを教科書体っぽく (跳ねたり突き抜けたり別れたり) しています。
  • 濁点、半濁点の大きさや位置を変更しています。
  • イコールと区別しやすいようにダブルハイフンの先端を少し折っています。
  • その他のグリフについても、他の素材フォントとのバランスをとるための微調整をしています。
  • 小書き仮名拡張に対応しています。また見た目に統一感はないですが、変体仮名の表示にも対応しています。

漢字について

  • カタカナや図形の○などと区別しやすいように一部の漢字にウロコを追加しています。
  • いわゆる土吉 (吉の異体字) を追加しています。
  • その他のグリフについても、他の素材フォントとのバランスをとるための微調整をしています。

記号類について

  • ダッシュや縦棒など、形状の似た記号と区別しやすいように実線を破線に改変している記号があります。
  • キーボードショートカットや製図の補助記号などを少し追加しています。
  • Nerd Fonts は他の素材フォントとのバランスをとるために、一部を除いてサイズを調整しています。

機能的なものについて

  • IVS を利用した漢字の異体字表示に対応しています。
  • ccmp によるアイヌ語カナ表記に対応しています。
  • vert のみですが、縦書き表示に対応しています。
  • calt を利用して、等幅のままでラテン文字 (一部除く) の文字間隔を調整するようにしています。
  • 同じく calt を利用して整数に桁区切りマークを表示させています。また桁区切り表示版は小数が少し小さく表示されます。
  • 桁区切りマークは、上の表示が4桁区切り (36桁まで)、下の表示が3桁区切り (39桁まで) です。4桁区切りは0と1が続いた時のみ表示されます。
  • 通常版に限りますが、各 ss を有効にすることで機能や見た目をカスタマイズすることができます。
  • 記号を置き換えるタイプのリガチャには対応していません。
  • 素材元のフォントにあった GSUB、GPOS のフィーチャは大幅に削ってあります。

収録フォントの違い

見た目が少し違うだけなのに種類を増やしたため、無駄にファイルサイズが大きくなってしまい大変申しわけございません。
それぞれにレギュラー、オブリーク、ボールド、ボールドオブリークの書体が含まれています。

名称 サンプル 説明
Cyroit Normal 通常版。スタイルセット対応。内容については後述。
CyroitBS BS 基本版。Ver.1.x.x までの通常版。全角スペースを可視化しています。
CyroitSP SP スペシャルスペース版。半角スペース、ノーブレークスペースも可視化したバージョン。
CyroitDG DG 桁区切り表示版。たくさん並んだ数字とにらめっこする時間を短縮できます。
CyroitFX TS 文字間隔固定版。calt と相性が悪いソフト用。また他のバージョンよりも軽快に動作します。
CyroitHB HB 平凡版。全てのスペースが不可視でグリフ改変も抑えたバージョン。プリントアウト用にどうぞ。

通常版のスタイルセットについて

スタイルセットの設定方法については、Fira Code説明が分かりやすいと思います。

タグ名 サンプル 内容
ss01 ss01 全角スペース可視化
ss02 ss02 半角スペース可視化
ss03 ss03 3桁区切りマーク表示
ss04 ss04 4桁区切りマーク表示
ss05 ss05 小数小文字化
ss06 ss06 全角・半角形の下線消去
ss07 ss07 識別性向上グリフ無効化
ss08 ss08 ストローク付き DVZ 有効化

ライセンス

素材元のフォントやスクリプトはライセンスが異なる場合があります。

生成スクリプトの使い方

ビルド環境

Cyroit は以下の環境でビルドできることを確認しています。

  • OS: macOS Sonoma (version 14.5)
  • Shell: zsh 5.9 (x86_64-apple-darwin23.0)
  • FontForge: 20230101
  • FontTools: 4.51.0

基本的な使い方

あらかじめパッケージマネージャ等を利用して FontForgeFontTools をインストールし、使える状態にしておいてください。

スクリプトのある場所をカレントディレクトリにして

./run_ff_ttx.sh -F

異常なく完了した場合、直下の build フォルダにフォントが保存されます。

各スクリプトの説明

Cyroit の生成には5つの Shell スクリプトを使用します。

run_ff_ttx.sh

 一連の処理を自動化します。全スクリプトの中のリーダーです。
 -F オプション以外は生成フォントの確認用になります。
 パラメータとして引数に font_generator のオプション (hVxfNn 以外) をハイフンなしで羅列することにより、生成フォントをカスタマイズすることができます。

(例) 接尾語に「NoNF」を付けて、Nerd Fonts 抜きの基本版を完成品として生成する場合

./run_ff_ttx.sh -F -n "NoNF" ztse
  • オプション
    -h ヘルプを表示します。
    -x スクリプトと同じフォルダにあるフォントと一時作成フォルダ、ファイルの削除のみ行って終了します。
    -l 一時作成ファイルを残したままにします。-d -C -p の場合、-l に関係なく一時作成ファイルを残します。
    -r cmap や calt 用のテーブルファイルがすでに存在していた場合、作り直さずにそのファイルを使用します。
    -N string フォントファミリー名を string にします。省略すると「Cyroit」になります。
    -n string フォントファミリー名の接尾語 (「BS」や「SP」の部分) を string にします。
    -d 下書きモード。時間のかかる処理を飛ばします。改変したグリフの確認用です。
      フィーチャテーブルを編集する前に終了します。パラメータなしの場合 ldoP を有効にしたフォントを生成します。
    -C calt を設定する直前で処理を終了します。パラメータなしの場合 lSeo を有効にしたフォントを生成します。
    -p -C オプションの続きから実行します。元のフォントを残すので、調整を繰り返す時に重宝します。
      カーニング設定は基本ラテン文字限定になります。フォントは合成済みのため、パラメータの内容は意味を成しません。
    -F 完成品を生成します。時間がかかりますので気長にお待ちください。完成したフォントは build フォルダに保存されます。
      カーニング設定はラテン文字拡張 A までになります。
      ・パラメータありの場合、パラメータに応じたフォントのみ生成します。
      ・パラメータなし、-n オプションありの場合、S を有効にしたフォントのみ生成します。
      ・パラメータなし、-n オプションなしの場合、デフォルトの全バージョンを生成します。
    オプションなし
      カーニング設定は基本ラテン文字限定になります。パラメータなしの場合 lo を有効にしたフォントを生成します。

font_generator.sh

 FontForge のスクリプト機能を利用してフォントの合成と改変を行います。
 オプションを指定することでフォントの見た目や機能を変更することができます。
 オプションの後に素材にするフォントのファイル名を指定する必要がありますが、基本的に auto で問題ありません。
 合成したフォントを完成させるには、table_modificator を実行してフォント情報を書き換える必要があります。

(例) 下書きモードで平凡版を生成する場合

./font_generator.sh -dZzubts auto
  • オプション
    -h ヘルプを表示します。
    -V 生成するフォントのバージョンナンバーを表示します。version.txt の内容を参照します。
    -x スクリプトと同じフォルダにある一時作成フォルダとファイルの削除のみ行って終了します。
    -f /path/to/fontforge FontForge コマンドのパスを /path/to/fontforge に指定します。
    -v 合成時の経過を詳しく表示します。
    -l 一時作成ファイルを残したままにします。
    -N string フォントファミリー名を string にします。省略すると「Cyroit」になります。
    -n string フォントファミリー名の接尾語 (「BS」や「SP」の部分) を string にします。
    -Z 全角スペースを可視化しません。
    -z 半角スペースを可視化しません。
    -u 全角・半角形に下線を付けません。
    -b 識別性を向上させるためのグリフ改変をしません。
    -t DVZ にストロークを付けません。
    -c calt に対応させません。文字間隔を調整しないフォントになります。-s も有効にしたことになります。
    -s 桁区切りマークを表示させません。
    -e Nerd Fonts を追加しません。
    -o オブリーク体を生成しません。
    -S ss 対応のフォントにします。自動的に -Zzts が有効、-ubc が無効になります。
    -d 下書きモードで合成します。時間のかかる処理を飛ばしますが、完成品と見た目が少し異なる文字があります。
      -o も有効になります。改変したグリフの確認用です。
    -P font_generator は一旦全ての機能を実装した後、オプションに従って機能を削っていきますが、その直前で処理を終了します。
      そのため一部のオプションは指定しても有効になりません。合成フォントの拡張子は .nopatch.ttf になります。
    -p -P オプションの続きから実行します。

table_modificator.sh

 font_generator で合成したフォントの情報を FontTools の ttx コマンドを使用して書き換えます。
 -r オプションを付けていない場合、スクリプト内で uvs_table_maker と calt_table_maker を実行します。

  • オプション
    -h ヘルプを表示します。
    -x スクリプトと同じフォルダにある一時作成ファイルの削除のみ行って終了します。
    -l 一時作成ファイルを残したままにします。
    -r テーブルファイルがすでに存在していた場合、作り直さずにそのファイルを使用して書き換えます。
    -N string ファミリー名が string のフォントを処理します。省略すると「Cyroit」になります。
    -m cmap を書き換えません。
    -g GSUB を書き換えません。
    -t その他のテーブルを書き換えません。
    -C calt を書き換える直前で処理を終了します。
    -p -C オプションの続きから実行します。
    -b calt 作成時のカーニング設定を基本ラテン文字に限定します。動作確認用です。

uvs_table_maker.sh

 フォント合成時に失われた IVS 関連の cmap テーブルを作り直します。
 作成したデータは table_modificator で使用します。

  • オプション
    -h ヘルプを表示します。
    -x スクリプトと同じフォルダにある一時作成ファイルの削除のみ行って終了します。
    -l 一時作成ファイルを残したままにします。
    -N string 名前が string-Regular のフォントに対するテーブルを作成します。
      省略すると「Cyroit-Regular」が対象になります。

calt_table_maker.sh

 calt テーブルを作成します。作成したデータは table_modificator で使用します。

  • オプション
    -h ヘルプを表示します。
    -x スクリプトと同じフォルダにある一時作成ファイルの削除のみ行って終了します。
    -l 一時作成ファイルを残したままにします。
    -n number calt で置換する先頭のグリフ (左に動いた A になります) を示す番号に number を指定します。
      先に uvs_table_maker を実行し、gsubList.txt が生成されていれば省略しても問題ありません。
    -b カーニング設定を基本ラテン文字に限定します。動作確認用です。
    -s カーニング以外の設定 (桁区切り、記号の移動) のみ作成します。動作確認用です。

メモ

  • 使用するソフトウェアによって、縦書きや異体字、桁区切りマークが正しく表示されない、また文字間隔が調整されないことがあります。
  • 「前後関係に依存する字形」や「リガチャ」などの設定項目がある場合、それを有効にすることで桁区切りマークや文字間隔調整機能が働く場合があります。
  • 一部グリフに不統一なところがありますが、複数のフォントを合成しているためであり、仕様となります。
  • 行間が広めにとってあります。ダイアクリティカルマークがたくさん付いた文字もきちんと表示させるためです。
  • Powerline グリフを使用する際はフォントサイズを 12pt か 14pt にするとよい感じに表示されるかもしれません。
  • 通常版等をメインのフォントに指定すると、動作がもっさりになってしまうソフトウェアがあります。その場合は文字間隔固定版をお試しください。
  • スクリプト実行時、ttx にて「Attempting to fix OTLOffsetOverflowError…」という警告が出る場合がありますが、生成フォントに影響は無いと認識しております。

リンク

About

全角英数や半角カナが判別しやすい、文字間隔調整機能付き等幅フォント

Topics

Resources

License

Stars

Watchers

Forks

Languages

  • HTML 76.1%
  • Shell 23.9%