等幅フォント

Date: 2021/02/23 (initial publish), 2021/12/04 (last update)

Source: jp/note-00035.md

Previous Post Top Next Post

TOC

ターミナル環境での等幅フォントをプログラミング入力と日本語入力の両面から 見つめてみました。以下は自分なりの備忘録メモです。

特定ソフトでフォントが汚い

最近のセキュリティーにうるさいソフトは、サンドボックス環境からうまくフォント が拾えなくなり、超低解像度のドットマトリクスフォントが拡大表示されてドン引き することがあります。 https://bugs.debian.org/987948

こんな時には、xdg-desktop-portal-gtkの類のパッケージを導入すると 問題が解決します。

文字の大きさのポイントとは?

印刷・DTPで細かいことを言わなければ、1ポイントは(約)1/72インチ (0.354mm)の 単位で、フォントセットの中の小文字の"m"の幅をポイントで計ることでフォントの 高さ、つまりフォントのの大きさを示すのに使われます。

スクリーンや印字サイズ

PC最初の表示装置のMDAは、白黒文字を文字幅x高さ9x14ピクセルのフォントで 80文字x25行の表示を、720x350の解像度に表示します。文字自体は7x11ピクセル の大きさでした。アナログカラーテレビは、720x480の解像度に表示します。 9x14ピクセルのフォントで最大80文字x34行の表示が出きると言えます。

初期のMacのディスプレーや初期のドットマトリクスプリンターのピクセル間隔は 72 DPIで、初期のFAXは100 DPI、初期のレーザープリンターは300 DPIです。

米国のレター紙(A4に近い)の幅は8.5"なので、余白をとって8"に印字すると すると、パイカサイズのタイプライター風の等幅で10 CPI で印字すると 80文字/行はいります。また詰めた12 CPI で印字すると96文字/行はいります。 そういえば当時の72 DPIのドットマトリクスプリンターでのソースコードの 印刷は8x8 dotsのフォントデーターを、縦横同じすすめかたで10 CPI、 横を詰めた印字で12 CPIとしていました。

私現在のPCの14インチディスプレーはFHDで1920x1080ピクセルです。 どうも160 DPIあります。昔の72 DPI比較で2.2倍の解像度があります

ターミナル環境と等幅フォント

標準のターミナルのサイズは、80文字x24行です。

Xtermだと72mmx48mmで、Gnome-terminalとDejaVu系英文14ポイントの 等幅フォントの組み合わせだと 140mmx86mm位の大きさです。

DejaVu系の英文14ポイントと同じ大きさのスクリーンサイズの ターミナルが、Terminus系の英文16ポイントで得られます。

DejaVu系の等幅フォントに、DejaVuとHackとNotoとMonospaceがあります。 これらに同じフォントサイズの日本語全角文字が入ると、日本語文字が 英文と同じ大きさで行間が余裕ある感じになります。

Terminus系の等幅フォントには、TerminusとUbuntuがあります。これらに 同じフォントサイズの日本語全角文字が入ると、日本語文字が大きくなり 行間が詰まった感じになります。

これを見ると、英語のみならHackでもUbuntuでもフォントサイズ選定 を調整すれば良いようです。ただ、日本語まじりだと、Hackが魅力的 です。HackにはVim用の特殊フォントも入っています。

Font Point 0O区別 1lI区別 Programing Japanese Overall
Monospace 14 Good Good Good Good Good
DejaVu 14 Good Good Good Good Good
Hack 14 Good Good Excellent Good Excellent
Noto 14 Poor Poor Poor Good Poor
Terminus 16 Good Poor Poor fair Poor
Ubuntu 16 Good Good Excellent fair fair

英文+プログラムのためにFacebook由来のHackをインストールしターミナル環境で 指定し、UIやターミナル環境内の日本語環境文字はGoogle由来のNoto-CJK系導入で 補うのが良さそうです。

印字サイズ

1パイカ(pica)で 12 ポイント = 1/6"です。これは高さベースの 文字サイズで、パイカはタイプライターでは水平方向の1インチに 10文字を印字できます。つまり10 CPIです。

米国のレターサイズ紙(8½in×11in = 215.9mm×279.4mm)は、余白をとると 8x10インチ印刷でき10 CPIで80文字/行、12ポイントで1/6" の行送りなら 60行/ページ印字できます。

日欧のA4紙(210×297 mm)はレターサイズ紙より少し長く幅狭ですが、 ほぼ同じ大きさです。

日本語印刷文書は5号なので、10.5ポイントが標準の文字サイズです。

Fontconfig 入門

まずは、以下を読むところから始めています。

ちなみに、フォントのキャッシュ更新は以下でしています。

$ sudo fc-cache -f -v

フォント多すぎへの対策

今時はハードは安くて充分DISKにキャパがあるので、フォントがありすぎてDISKの 肥やしとしてスペースをとることは我慢できますが、アプリのフォント選定が面倒 になるのはこまります。

正直、依存関係で色んなフォントが導入されるのは諦めます。ただデスクトップ環境 からアクセスするフォントはfontconfig経由でコントロールできます。

実際にfontconfig経由でコントロールをマニュアルでしようとすると疲れますが、 Bullseye環境だとfontmanagerという良いGUIツールがあります。

日本語だと、GOOGLEのNOTOの日本語を優先するようにすると、画面の簡体字化を避け つつ、英文も程々綺麗です。ターミナルフォントはHACKですが、NOTO系との相性は 良いです。

絵文字巨大化問題

2021年5月ごろ、どういうわけか、/etc/fonts/10-scale-bitmap-fonts.confに /usr/share/fontconfig/conf.avail/10-scale-bitmap-fonts.confへのsymlinkが ありました。/etc/fonts/conf.d /10-scale-bitmap-fonts.confに強制移動しました。

確かこれで絵文字巨大化がなくなったと思います。

Previous Post Top Next Post