Skip to content
/ Cyroit Public
forked from kudryavka/Ricty

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

License

Notifications You must be signed in to change notification settings

omonomo/Cyroit

 
 

Repository files navigation

Title

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

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 LGHack を合成した姉妹フォント「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 にて
ScreenShot

warp + Starship + lsd にて
ScreenShot

egword Universal2 にて
ScreenShot

カーニングサンプル
ScreenShot

桁区切り表示サンプル
ScreenShot

半角幅の違いサンプル (上: 1/2、下: 9/16)
ScreenShot
ScreenShot

追加した記号等のコードポイント
ScreenShot

ダウンロード

最新版 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 のフィーチャは大幅に削ってあります。

Loose (文字間隔ゆるい) 版について

  • Cyroit は全角幅の値を1024に設定してあります。Loose 版は半角幅を半分の512ではなく、576に設定しました。
  • 全角幅と半角幅の最小公倍数は9216になるため、理論上は全角文字9文字と半角文字16文字でちょうど同じ幅になります。
  • 実際は環境や文字の大きさ等の条件によって誤差が生じ、表示がずれることがあります。
  • 拡がった文字間隔に合わせて半角英数文字の大きさや縦横比を調整しています。

収録フォントの違い

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

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

通常版、絵文字減らした版のスタイルセットについて

設定方法については、Fira Code の説明が分かりやすいと思います。

タグ名 サンプル 内容
ss01 ss01 全角スペース可視化
ss02 ss02 半角スペース可視化
ss03 ss03 3桁区切りマーク表示
ss04 ss04 4桁区切りマーク表示
ss05 ss05 小数小文字化
ss06 ss06 全角・半角形の下線、点字の外枠消去
ss07 ss07 識別性向上グリフ無効
ss08 ss08 DQVZ のグリフ変更
ss09 ss09 JIS に含まれる罫線を全角化、矢印を細線化
(環境によって全角にならないことがあります)
ss10 ss10 0のスラッシュ消去

ライセンス

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

生成スクリプトの使い方

ビルド環境

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

基本的な使い方

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

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

./run_ff_ttx.sh -F

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

各スクリプトの説明

Cyroit の生成には、主に5つの Shell スクリプトと1つの設定ファイルを使用します。

1. 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 に関係なく一時作成ファイルを残します。
    -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 を有効にしたフォントを生成します。

2. font_generator.sh

通常、直接実行する必要はありません。
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 オプションの続きから実行します。

3. table_modificator.sh

通常、直接実行する必要はありません。
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 オプションの続きから実行します。

4. uvs_table_maker.sh

通常、直接実行する必要はありません。
フォント合成時に失われた IVS 関連の cmap テーブルを作り直します。
作成したデータは table_modificator で使用します。

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

5. calt_table_maker.sh

通常、直接実行する必要はありません。
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 カーニング設定作成時に、任意の設定 (ソースコードにて指定) に限りなんちゃって最適化処理を実行します。
       最適化の効果がない設定をスキップするため、ビルド時間が若干短縮されます。

6. settings.txt

生成フォントのバージョン番号やラテン文字の拡大・縮小率、カーニングの移動量などが記述されています。
テキストを変更することで、スクリプトを直接編集せずに一部の設定を調整することができます。

メモ

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

リンク

About

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

Topics

Resources

License

Stars

Watchers

Forks

Languages

  • HTML 69.0%
  • Shell 31.0%