Cyroit (しろいと) はコーディングにもお使いいただける日本語等幅フォントです。
プログラミング向け合成フォントとして評価の高い Ricty の生成スクリプトで遊んでいるうちに、フォント製作の沼にはまってしまったことで誕生しました。
全角英数記号や半角カナ等にアンダーラインが引いてあるため、全角・半角の組み合わせになっている括弧や、誤って使われている全角チルダなどをすぐに見つけることができます。
全角スペースや半角・ノーブレークスペースを可視化したバージョンも用意してあり、使い分けて使用できます。
フォント生成用のスクリプトを利用すれば、必要な機能のみ実装したフォントを作っていただくこともできます。
- Commit Mono に影響を受け、calt を利用したカーニング機能を実装しました (v1.1.0以降)。
- mottainaiDTP さんの 3桁ごとにカンマが発生するフォント を応用し、桁区切りマークを表示するバージョンを追加しました (v1.6.0以降)。
- スタイルセットに対応したことで、機能や見た目について柔軟にカスタマイズできるようになりました (v2.0.0以降)。
- 変体仮名と小書き仮名拡張の表示に対応しました (v2.1.0以降)。
- 点字の表示に対応しました (v2.4.0以降)。
- 英数文字の間隔にゆとりを持たせるために、半角と全角の横幅の比率を9:16にしたバージョンを追加しました (v3.0.0以降)。
- カラー絵文字フォントとの併用を前提に、絵文字のグリフを減らしたバージョンを追加しました (v3.2.0以降)。
- Cyroit に Meslo LG と Hack を合成した姉妹フォント「Meroit」を作成しました (v3.2.6以降を使用)。
- Cyroit に JetBrains Mono NL を合成した姉妹フォント「Jeroit」を作成しました (v3.3.0以降を使用)。
- Cyroit に Ubuntu Mono を合成した姉妹フォント「Ubroit」を作成しました (v3.3.0以降を使用)。
- Cyroit に Source Code Pro を合成した姉妹フォント「Soroit」を作成しました (v3.4.2以降を使用)。
CotEditor にて
最新版 v3.4.2 (2024-12-15)
リンク | 説明 |
---|---|
フォント (Cyroit) | 通常版。半角幅が全角の1/2。 |
フォント (CyroitLoose) | 文字間隔ゆるい版。半角幅が全角の9/16。 |
ソースコード | 使用方法は下の方にあります。 |
フォントやスクリプトの使用は自己責任にてお願いいたします。
各ファイルを使用することで生じた不具合・損害等について omonomo は責任を負いません。
ライセンスに従ってのご使用をお願いいたします。
- 主にラテン文字のグリフは Inconsolata を使用しています。
- 主に仮名文字、ギリシア文字、キリル文字のグリフは Circle M+ 1m を使用しています。
- 主に漢字のグリフは BIZ UDゴシック を使用しています。
- 主に変体仮名のグリフは NINJAL 変体仮名フォント を使用しています。
- Nerd Fonts を追加しています。
- ricty_generator を Fork したスクリプトで自動生成させています。
- フォント生成時にグリフの改変や調整、追加を行っています。追加分も含め、全てのグリフは素材フォントの組み合わせだけで作られています。
- 小文字の g をオープンテールに改変しています。
- アスタリスクのスポークを6本に増やしています。
- チルダの波が強調されています。
- 数字の7の先端を折り曲げています。
- その他のグリフについても、視認性向上や他の素材フォントとのバランスをとるため等の微調整を施しています。
- 一部のひらがなを教科書体っぽく改変 (跳ねたり突き抜けたり別れたり) しています。
- 濁点、半濁点の大きさや位置を変更しています。
- イコールと区別しやすいようにダブルハイフンの先端を少し折っています。
- その他のグリフについても、他の素材フォントとのバランスをとるため等の微調整を施しています。
- 小書き仮名拡張に対応しています。また見た目に統一感はないですが、変体仮名の表示にも対応しています。
- カタカナや図形の○などと区別しやすいように一部の漢字にウロコを追加しています。
- いわゆる土吉 (吉の異体字) を追加しています。
- その他のグリフについても、他の素材フォントとのバランスをとるための微調整を施しています。
- ダッシュや縦棒など、形状の似た記号と区別しやすいように実線を破線に改変している記号があります。
- 点字や漢字構成記述文字、キーボードショートカット、製図記号などを少し追加しています。
- Nerd Fonts は他の素材フォントとのバランスをとるために、一部を除いてサイズを調整しています。
- また Nerd Fonts には、Ver.3.3.0 から Fira Code 由来のプログレスバーのグリフが加わっていますが、独自に製作したのグリフに置き換えています。
- IVS を利用した漢字の異体字表示に対応しています。
- ccmp によるアイヌ語カナ表記に対応しています。
- vert のみですが、縦書き表示に対応しています。
- calt を利用して、等幅のままでラテン文字 (一部除く) の文字間隔を調整するようにしています。
- 同じく calt を利用して整数に桁区切りマークを表示させています。また桁区切り表示版は小数が少し小さく表示されます。
- 桁区切りマークは、上の表示が4桁区切り (36桁まで)、下の表示が3桁区切り (39桁まで) です。4桁区切りは0と1が続いた時のみ表示されます。
- 一部のバージョンに限りますが、各 ss を有効にすることで機能や見た目をカスタマイズすることができます。
- 記号を置き換えるタイプのリガチャには対応していません。
- 素材元のフォントにあった GSUB、GPOS のフィーチャは大幅に削ってあります。
- Cyroit は全角幅の値を1024に設定してあります。Loose 版は半角幅を半分の512ではなく、576に設定しました。
- 全角幅と半角幅の最小公倍数は9216になるため、理論上は全角文字9文字と半角文字16文字でちょうど同じ幅になります。
- 実際は環境や文字の大きさ等の条件によって誤差が生じ、表示がずれることがあります。
- 拡がった文字間隔に合わせて半角英数文字の大きさや縦横比を調整しています。
見た目が少し違うだけなのに種類を増やしたため、無駄にファイルサイズが大きくなってしまい大変申しわけございません。
それぞれにレギュラー、オブリーク、ボールド、ボールドオブリークの書体が含まれています。
Loose 版は名称が 「CyroitLoose...」 になります。
設定方法については、Fira Code の説明が分かりやすいと思います。
- フォント : SIL Open Font License 1.1
- スクリプト : MIT
素材元のフォントやスクリプトはライセンスが異なる場合があります。
Cyroit は以下の環境でビルドできることを確認しています。
- OS: macOS Sequoia (version 15.2)
- Shell: GNU bash, version 5.2.37(1)-release (aarch64-apple-darwin23.4.0)
- FontForge: 20230101
- FontTools: 4.55.3
あらかじめパッケージマネージャ等を利用して FontForge と FontTools をインストールし、使える状態にしておいてください。
スクリプトのある場所をカレントディレクトリにして
./run_ff_ttx.sh -F
異常なく完了した場合、直下の build
フォルダにフォントが保存されます。
Cyroit の生成には、主に5つの Shell スクリプトと1つの設定ファイルを使用します。
一連の処理を自動化します。全スクリプトの中のリーダーです。
-F
オプションを付けずに生成したフォントは、表示確認用の未完成品になります。
パラメータとして引数に font_generator のオプション (hVxfNn
以外) をハイフン無しで羅列することにより、生成フォントをカスタマイズすることができます。
(例) 接尾語に「NoNF」を付けて、Nerd Fonts 抜きの基本版 (完成品) を生成する場合
./run_ff_ttx.sh -F -n "NoNF" ztse
- オプション
-h
ヘルプを表示します。
-x
スクリプトと同じフォルダにあるフォントと一時作成フォルダ、ファイルの削除のみ行って終了します。
-l
一時作成ファイルを残したままにします。-d
-C
-p
の場合、-l
に関係なく一時作成ファイルを残します。
-N string
フォントファミリー名を string にします。省略すると「Cyroit」になります。
-n string
フォントファミリー名の接尾語 (「BS」や「SP」の部分) を string にします。
-w
生成フォントを Loose 版にします。
-k
calt 作成時にカーニング以外の設定 (桁区切り、記号の移動) のみ作成します。
生成されるフォントは文字間隔を調整しませんが、動作が軽くなります。
-r
cmap や calt 用のテーブルファイルがすでに存在していた場合、作り直さずにそのファイルを使用します。
-d
下書きモード。時間のかかる処理を飛ばします。改変したグリフの確認用です。
フォント情報を書き換える前に終了します。パラメータ無しの場合ldoP
を有効にしたフォントを生成します。
-C
calt を設定する直前で処理を終了します。パラメータ無しの場合lSeo
を有効にしたフォントを生成します。
-p
-C
オプションの続きから実行します。元のフォントを残すので、調整を繰り返す時に重宝します。
カーニング設定は基本ラテン文字限定になります。フォントは合成済みのため、パラメータの内容は意味を成しません。
-F
完成品を生成します。時間がかかりますので気長にお待ちください。完成したフォントはbuild
フォルダに保存されます。
カーニング設定はラテン文字拡張 A までになります。
・パラメータ有りの場合、パラメータに応じたフォントのみ生成します。
・パラメータ無し、-n
有りの場合、スタイルセットに対応した (S
を有効にした) フォントのみ生成します。
・パラメータ無し、-n
無しの場合、デフォルトの全てのバージョンから、絵文字減らした版以外を生成します。
オプション無し
カーニング設定は基本ラテン文字限定になります。パラメータ無しの場合lo
を有効にしたフォントを生成します。
通常、直接実行する必要はありません。
FontForge のスクリプト機能を利用してフォントの合成とグリフの改変を行います。
オプションを指定することでフォントの見た目や機能を変更することができます。
オプションの最後に素材にするフォントのファイル名を指定する必要がありますが、基本的に auto
で問題ありません。
合成したフォントを完成させるには、table_modificator を実行してフォント情報を書き換える必要があります。
(例) 下書きモードで平凡版を生成する場合
./font_generator.sh -dZzubts auto
- オプション
-h
ヘルプを表示します。
-V
生成するフォントのバージョンナンバーを表示します。settings.txt
の内容を参照します。
-x
スクリプトと同じフォルダにある一時作成フォルダとファイルの削除のみ行って終了します。
-f /path/to/fontforge
/path/to/fontforge に存在する FontForge を使用します。
-v
合成時の経過を詳しく表示します。
-l
一時作成ファイルを残したままにします。
-N string
フォントファミリー名を string にします。省略すると「Cyroit」になります。
-n string
フォントファミリー名の接尾語 (「BS」や「SP」の部分) を string にします。
-w
合成フォントを Loose 版にします。
-Z
全角スペースを可視化しません。
-z
半角スペースを可視化しません。
-u
全角・半角形に下線を付けません。また点字に外枠を付けません。
-b
識別性を向上させるためのグリフ改変をしません。
-t
D Q V Z のグリフを変更 (ストローク等を追加) しません。
-O
数字の0にスラッシュを付けません。
-s
桁区切りマークを表示させません。
-c
calt に対応させません。文字間隔を調整しないフォントになります。-s
も有効にしたことになります。
-e
Nerd Fonts を追加しません。また Nerd Fonts を利用して作成・改変されたグリフも追加されません。
-o
オブリーク体を生成しません。
-j
絵文字のグリフを減らします。
-S
ss 対応のフォントにします。自動的に-Zzts
が有効、-ubOc
が無効になります。
-d
下書きモードで合成します。時間のかかる処理を飛ばしますが、完成品と見た目が少し異なる文字があります。
-o
も有効になります。改変したグリフの確認用です。
-P
font_generator は一旦全ての機能を実装した後、オプションに従って機能を削っていきますが、その直前で処理を終了します。
そのため一部のオプションは指定しても有効になりません。合成フォントの拡張子は.nopatch.ttf
になります。
-p
-P
オプションの続きから実行します。
通常、直接実行する必要はありません。
font_generator で合成したフォントの情報を FontTools の ttx コマンドを使用して書き換えます。
またカーニングや桁区切り表示等の設定ファイルを作成して登録します。
とりあえずオプション無し、もしくは -o
のみ付けて実行すれば必要な情報を書き換えてフォントを完成させてくれます。
-r
を付けていないか、必要なテーブルファイルが存在しない場合、スクリプト内で uvs_table_maker と calt_table_maker を実行します。
- オプション
-h
ヘルプを表示します。
-x
スクリプトと同じフォルダにある一時作成ファイルの削除のみ行って終了します。
-l
一時作成ファイルを残したままにします。
-N string
ファミリー名が string のフォントを処理します。省略すると「Cyroit」になります。
-w
Loose 版に合わせた情報に書き換えます。font_generator 実行時の-w
オプションの有無に合わせる必要があります。
-k
calt 作成時にカーニング以外の設定 (桁区切り、記号の移動) のみ作成します。
生成されるフォントは文字間隔を調整しませんが、動作が軽くなります。
-b
calt 作成時のカーニング設定を基本ラテン文字に限定します。表示確認用です。
-o
カーニング作成時になんちゃって最適化処理を実行します。重複している設定を削除することで生成フォントを心持ち軽量化させます。
-r
cmap や calt 用のテーブルファイルがすでに存在していた場合、作り直さずにそのファイルを使用します。
-m
cmap を書き換えません。
-g
GSUB (calt を含む) を書き換えません。
-t
その他のテーブル (head、OS/2、post、htmx) を書き換えません。
-C
calt を書き換える直前で処理を終了します。
-p
-C
オプションの続きから実行します。
通常、直接実行する必要はありません。
フォント合成時に失われた IVS 関連の cmap テーブルを作り直します。
作成したデータは table_modificator で使用します。
- オプション
-h
ヘルプを表示します。
-x
スクリプトと同じフォルダにある一時作成ファイルの削除のみ行って終了します。
-l
一時作成ファイルを残したままにします。
-N string
名前が string-Regular のフォントに対するテーブルを作成します。
省略すると「Cyroit-Regular」が対象になります。
通常、直接実行する必要はありません。
calt テーブル (前後の文字によってグリフ置換を行う設定) を作成します。作成したデータは table_modificator で使用します。
作成に時間がかかるため、通常はテーブルファイルが存在しないか calt_table_maker.sh を更新した場合、オプションやフォントのグリフ数を変更した時のみテーブルを作り直します。
- オプション
-h
ヘルプを表示します。
-x
スクリプトと同じフォルダにある一時作成ファイルの削除のみ行って終了します。
-X
スクリプトと同じフォルダにある一時作成ファイルと、カーニング設定 (保存してある設定も含む) の削除のみ行って終了します。
-l
一時作成ファイルを残したままにします。
-n number
calt で置換する先頭のグリフ (左に動いた A になります) を示す番号に number を指定します。
先に uvs_table_maker を実行し、gsubList.txt
が生成されていれば省略しても問題ありません。
-k
カーニング以外の設定 (桁区切り、記号の移動) のみ作成します。
-b
カーニング設定を基本ラテン文字に限定します。表示確認用です。
-O
カーニング設定作成時に、全ての設定についてなんちゃって最適化処理を実行します。
重複している設定を削除することで生成フォントを心持ち軽量化させます。
-o
カーニング設定作成時に、任意の設定 (ソースコードにて指定) に限りなんちゃって最適化処理を実行します。
最適化の効果がない設定をスキップするため、ビルド時間が若干短縮されます。
生成フォントのバージョン番号やラテン文字の拡大・縮小率、カーニングの移動量などが記述されています。
テキストを変更することで、スクリプトを直接編集せずに一部の設定を調整することができます。
- 使用するソフトウェアによって、縦書きや異体字、桁区切りマークが正しく表示されない、また文字間隔が調整されないことがあります。
- 「前後関係に依存する字形」や「リガチャ」などの設定項目がある場合、それを有効にすることで桁区切りマークや文字間隔調整機能が働く場合があります。
- 一部グリフに不統一なところがありますが、複数のフォントを合成しているためであり、仕様となります。
- 行間が広めにとってあります。ダイアクリティカルマークがたくさん付いた文字もきちんと表示させるためです。
- メイン表示に文字間隔調整機能付きのフォントを指定すると、動作がもっさりになってしまうソフトウェアがあります。その場合は文字間隔固定版をお試しください。
- Loose 版は半角幅が全角の1/2ではありませんが、属性は等幅フォントとしています。使用される方にとってはそのほうが分かりやすいと判断したためです。
- スクリプト実行時、ttx にて「Attempting to fix OTLOffsetOverflowError…」という警告が出る場合がありますが、生成フォントに影響は無いと認識しております。
- GitHubページ: 過去のバージョンや更新履歴はこちらをご参照ください。
- 全角英数や半角カナが判別しやすい、文字間隔調整機能付き等幅フォント「Meroit」: Cyroit の一つ下の妹さんフォントです。
- 全角英数や半角カナが判別しやすい、文字間隔調整機能付き等幅フォント「Jeroit」: 二つ下の妹さんフォントです。
- 全角英数や半角カナが判別しやすい、文字間隔調整機能付き等幅フォント「Ubroit」: 三つ下の妹さんフォントです。
- 全角英数や半角カナが判別しやすい、文字間隔調整機能付き等幅フォント「Soroit」: 末っ子の妹さんフォントです。
- 小指の移動量が少ない日本語かな入力配列 「水草配列」: オリジナル日本語かな入力配列を紹介しています。
- DefaultKeyBinding.dict サンプル: タイトル通りです。