フォントの話、Source Han Code JP と Ricty Diminished
最近本当に目が悪くなってきたため、モニターの小さな字を見るのがちょっと辛くなってきました。
その都度、エディタやターミナルのフォントを大きくしようかなと思い、フォント設定を変えてみたりしてたのですが、どーもしっくりこなくてすぐに、FixedSys に戻してしまうということを繰り返していました。
ちなみに、エディタは『秀丸エディタ』、ターミナルは『TeraTerm』です。
ですが、いよいよ文字が読みづらくなってきたため、やっぱり大きい文字にしようかなと思い立ち、グーグル先生に良いフォントが無いか聞いてみました。
そーすると、『xxxx年度版 コーディングフォント n 選』みたいなページがいくつも出てきまして、まぁそれらをみながら色々フォントをダウンロードして試してみました。
で、最初に選んだのが、『Source Han Code JP(源の角ゴシック)』です。
Source Han Code JP(源の角ゴシック)
ダウンロードしたフォントファイルに太さ別に7段階あり、ExtraLight, Light, Normal , Reguler, Middum, Bold, Heavy から選べます。このうち私 Light を選択しました。
これには理由があります。
過去に『どーもしっくりこなくて』戻した理由ですが、いずれも太すぎるためです。TTフォントって正直太すぎなのです。大きくすればするほどその太さが協調されてしまうわけです。大きくしたいだけで太くしたいわけでは無かったのです。 あまり太いと大げさかもしれませんが、ちょっとまぶしいんです。 乱視の為でしょうか...
ですから、このフォントの ExtraLight, Light です。大きくなっても太くならない。
よいでしょ。
でもダメでした。
しばらく使ってコーディングしていたのですが、なんか変です。
そう『秀丸エディタ』で文字のズレが発生し、TABルーラーと合ってないんです。
A<tab>B<tab>C<tab>D
と
A<sp3>B<sp3>C<sp3>D
とが ズレるのです。
これは痛い。特に保存時に TAB->SP 変換をしているため、保存してもう一度あけると、文字の位置が思ってたのと違ってたり、えぇぇぇ。なんで?となるわけです。
またズレ方も、フォントサイズが12ptだと SP幅が狭く、14ptだと微妙に合わず、16pt以上だと、SPが広くなり、ちょっとメンドクサイずれ方をするのです。
これはちょっとなと思い『秀丸エディタ』作者様の方へ相談してみたところ、 色々アドバイス頂いたり、対策を検討していただけるようなお返事をいただきました。(サイトー企画の斉藤秀夫様。ありがとうございます。)
しかーし。悪いのは『秀丸エディタ』ではない!このフォントがわるいのではないのか?っと思ってしまったら、もーなんか使いたくなくなってしまいました。
これが昨日までの話
ここからが半日苦労した話
Ricty Diminished
第二候補の Ricty Diminished です。
『Ricty DiminishedはInconsolataと日本語フォントであるCircle M+ 1mを組み合わせたフォントです。』とあります。
ですがこのフォント、当然先ほど説明した通り、太いんです。
どーしよーかねーと思ってたところ、このフォントは同じ作者の Ricty がベースとなっていることが分かりました。
Ricty
こちらのサイトをよく読むと、生成方法 というセクションに、 ricty_generator.sh というスクリプトで Inconsolata と M+ と IPA の合成フォント から 作る とあります。
えっ、自分で作れるの?
実は、最初にぐぐってるときに Inconsolata もちょっと調べてて、Inconsolata にも、太さ違いがあるのは分かってたのです。
ってことは、もしかして細い Inconsolata を使えばいいんじゃないか?
なんてことを思い至りました。
マイRicty
Ricty を動かしてみました
これが半日苦労した話の本題です。最初は1時間くらいでできるのだろーと思っていたのですよ。
例によって、うちの鯖である CentOS8 で、Ricty の生成方法にあるやり方を試してみました。
fontforge が入っていなかったので、インストールして実行します。
# sh ricty_generator.sh auto Ricty Generator 4.1.1 Copyright (c) 2011-2017 Yasunori Yusa All rights reserved. This script is to generate Ricty font from Inconsolata and Migu 1M. The generated fonts are licensed by both SIL Open Font License (OFL) Version 1.1 and IPA Font License Agreement v1.0. Due to OFL 1.1 Section 5, it is PROHIBITED to distribute the generated fonts. Generate modified Inconsolata Open ./Inconsolata-Regular.ttf Remove ambiguous glyphs Clear instructions Save Modified-Inconsolata-Regular.sfd Open ./Inconsolata-Bold.ttf Remove ambiguous glyphs Clear instructions Save Modified-Inconsolata-Bold.sfd Generate modified Migu 1M Open ./migu-1m-regular.ttf Scale down all glyphs (it may take a few minutes) Clear instructions Save Modified-migu-1m-regular.sfd Open ./migu-1m-bold.ttf Scale down all glyphs (it may take a few minutes) Clear instructions Save Modified-migu-1m-bold.sfd Generate Ricty ricty_generator.sh: 1100 行: 376309 中止 (コアダンプ) $fontforge_command -script ${tmpdir}/${ricty_generator} 2> $redirection_stderr Remove temporary files Abnormally terminated
えーーーー!!!コアダンプって、シェルスクリプトで....
いろいろ調べてみますと、ricty_generator.sh で、fontforge に食べさせるスクリプトを作っているのですが、どーも fontforge 特定のコマンドで落ちる みたいなのです。で、なんか SetFontNames ってコマンドがいかんらしいことに気が付き
# diff -u ricty_generator.sh.orig ricty_generator.sh --- ricty_generator.sh.orig 2020-07-04 17:36:54.642050953 +0900 +++ ricty_generator.sh 2020-07-04 18:11:08.462849488 +0900 @@ -606,19 +606,19 @@ Reencode("unicode") # Set configuration - if (fontfamilysuffix != "") - SetFontNames(fontfamily + fontfamilysuffix + "-" + fontstyle_list[i], \\ - fontfamily + " " + fontfamilysuffix, \\ - fontfamily + " " + fontfamilysuffix + " " + fontstyle_list[i], \\ - fontstyle_list[i], \\ - copyright, version) - else - SetFontNames(fontfamily + "-" + fontstyle_list[i], \\ - fontfamily, \\ - fontfamily + " " + fontstyle_list[i], \\ - fontstyle_list[i], \\ - copyright, version) - endif +# if (fontfamilysuffix != "") +# SetFontNames(fontfamily + fontfamilysuffix + "-" + fontstyle_list[i], \\ +# fontfamily + " " + fontfamilysuffix, \\ +# fontfamily + " " + fontfamilysuffix + " " + fontstyle_list[i], \\ +# fontstyle_list[i], \\ +# copyright, version) +# else +# SetFontNames(fontfamily + "-" + fontstyle_list[i], \\ +# fontfamily, \\ +# fontfamily + " " + fontstyle_list[i], \\ +# fontstyle_list[i], \\ +# copyright, version) +# endif SetTTFName(0x409, 2, fontstyle_list[i]) SetTTFName(0x409, 3, "FontForge 2.0 : " + \$fullname + " : " + Strftime("%d-%m-%Y", 0)) ScaleToEm(860, 140) @@ -864,10 +864,10 @@ # Open file and set configuration Open(filename) Reencode("unicode") -SetFontNames(inputfamily + familysuffix + "-" + inputstyle, \ - \$familyname + " " + familysuffix, \ - \$familyname + " " + familysuffix + " " + inputstyle, \ - inputstyle) +# SetFontNames(inputfamily + familysuffix + "-" + inputstyle, \ +# \$familyname + " " + familysuffix, \ +# \$familyname + " " + familysuffix + " " + inputstyle, \ +# inputstyle) SetTTFName(0x409, 3, "FontForge 2.0 : " + \$fullname + " : " + Strftime("%d-%m-%Y", 0)) # " -> magnified "
こんなパッチをあててみたところ、途中まで動いて ttf ファイルができるようになりました。
でも、このパッチをあてると作者の copyright を故意に消すようなことになってしまいます。せっかくステキなスクリプトを作ってくれてるのに悪いですよねぇ....
ricty_generator.sh をググってみる
コアダンプで落ちる件を検索してみたのですが、なかなか見つかりませんでした。 というより、他の皆さんはちゃんとできてる んです。
こちらの方のブログが一番参考になりました。しかもつい数か月前の話ではないですか!
ふむふむ、Windows, Docker, ubuntu か...
この手の自分でビルドする系では、たいてい ubuntu ですよね。RedHat / CentOS 系って、手作業ビルドにむいてないですもんね...
でも Docker っての使えば、私の CentOS8 上で ubuntu 動くよね。
CentOS8 に Docker 入れてみたが挫折
で、早速 Docker を入れてみました。 これもまた、他者さんのまとめ記事をみながら、CentOS8 に Docker を導入。 ubuntu の Image を導入して、まったくDocker無知なのに、えいっと起動。
ここまではすんなりいったんです。
yum update
でこけました。
ここから沼ってきました。以下の話はかなり端折ってます。
またまた色々やってみたのですが、どーやらDNS解決ができなくてホスト名が引けないよーです。 しかも Docker の ubuntuイメージには、本当に最小コマンドしか入ってなくって、ping すら入っていない。なにを試すにもコマンドがはいっていない....
しかたないので、centos8イメージをダウンロードしてきました。こちらは ping が入っていました。
で、ping IPアドレス
だとちゃんと ping が通るのに、ping ホスト名
だとダメです。
/etc/resolve.conf
を修正したり、ホストの firewall 触ったりしてみたのですが、すぐには解決しなさそうです。
うーん。そもそも Docker と格闘するって話ではなかったのですが、どんどん遠回りになってきました。
しかも ubuntu も centos も、中身なーんにもはいってなくて、apt-get も yum も動かないんじゃ、なーんもできない。イライラマックスです。
ここまでで晩御飯の時間になり、頭が沸騰してしまいましたので、いったん休憩しました。
Windows10 WSL の ubuntu で試す。
Docker とは、どっかでまた勝負します。(うまいこと言った!)
Docker 自体は本題ではないので、とりあえずなにがしか ubuntu を最短時間で動かしたい。でもVMとかでのインストールメンドクサイ。
っとちょっとググっていると、Windows10 WSL の ubuntu が簡単そーだと知りました。
早速やってみたところ、確かに短時間で ubuntu が起動しました。ダウンロード時間はちょっとありましたけど、設定とか何にもしなくてログイン状態まで行ったのですから驚きです。
またこの ubuntu ですが、/mnt
配下に、ホストの windows の c:
や d:
がマウント済みです。ubuntu 側から簡単にホストの windows ディレクトリが操作できます。こりゃいいや。
で、先の ricty_generator.sh を動かしてみると、あっさり完動! やったぜ
マイRictyの実際
先ほど紹介しました方のページにあるとおり、
というステップが必要となります。
また私としては、Inconsolata-ExtraLight.ttf または、Inconsolata-Light.ttf と、migmix-1m-regular, migmix-1m-bold の組み合わせが使ってみたかったので、以下のような感じで実行してみました。
sh ./ricty_generator.sh -d "07DZz\"\`" -n -zuntan-el_ Inconsolata-{ExtraLight,Regular}.ttf migmix-1m-{regular,bold}.ttf sh ./ricty_generator.sh -d "07DZz\"\`" -n -zuntan-l_ Inconsolata-{Light,Regular}.ttf migmix-1m-{regular,bold}.ttf sh ./ricty_generator.sh -d "07DZz\"\`" -n -zuntan-r_ Inconsolata-{Regular,Bold}.ttf migmix-1m-{regular,bold}.ttf for P in Ricty*.ttf; do ttx -t OS/2 "$P" sed -i.bak -e 's,xAvgCharWidth value="934",xAvgCharWidth value="505",' "${P%%.ttf}.ttx" mv "$P" "${P%%.ttf}.org.ttf" ttx -m "${P%%.ttf}.org.ttf" "${P%%.ttf}.ttx" done
ちょっとテコ入れしたところは、07DZz\"\` -n -zuntan-XX_ value="934" value="505"
です。
とくに、value="934"
は、使ったフォントが違ったため、参考にした先の値とは違います。また、value="505"
も Inconsolata のバージョンが違うためか、参考にした先の値とは違っています。それらを合わせるためには以下のコマンドを事前に実行しました。
for P in Inconsolata-*.ttf migmix-1m-*.ttf; do ttx -t OS/2 "$P" done grep xAvgCharWidth *ttx
これで目的のフォントが完成しました。
やったー。ここまででもう21時です。
fontforge のバージョン確認
一応 CentOS8 と ubuntu の fontforge を確認してみます。
- CentOS8
# cat /etc/redhat-release CentOS Linux release 8.2.2004 (Core) # fontforge --version Copyright (c) 2000-2014 by George Williams. See AUTHORS for Contributors. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> with many parts BSD <http://fontforge.org/license.html>. Please read LICENSE. Based on sources from 18:43 UTC 24-Apr-2020-ML-D. Based on source from git with hash: no xdefs_filename! TESTING: getPixmapDir:/usr/share/fontforge/pixmaps TESTING: getShareDir:/usr/share/fontforge TESTING: GResourceProgramDir:/usr/bin trying default theme:/usr/share/fontforge/pixmaps/resources fontforge 18:43 UTC 24-Apr-2020 libfontforge 20200424
$ cat /etc/os-release NAME="Ubuntu" VERSION="20.04 LTS (Focal Fossa)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 20.04 LTS" VERSION_ID="20.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME=focal UBUNTU_CODENAME=focal $ fontforge --version Copyright (c) 2000-2020. See AUTHORS for Contributors. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> with many parts BSD <http://fontforge.org/license.html>. Please read LICENSE. Version: 20190801 Based on sources from 03:10 UTC 6-Mar-2020-ML-D-GDK3. fontforge 20190801 build date: 03:10 UTC 6-Mar-2020
ふむふむ。ubuntu の方がちょっと古いもののように見受けられます。fontforge さーん。バグ入れちゃったみたいですよぉ~
訂正 : 確認方法がまずかったようです。
- CentOS8
$ dnf info fontforge メタデータの期限切れの最終確認: 0:03:56 時間前の 2020年07月05日 16時51分54秒 に実施しました。 インストール済みパッケージ 名前 : fontforge バージョン : 20170731 リリース : 14.el8 Arch : x86_64 サイズ : 18 M ソース : fontforge-20170731-14.el8.src.rpm リポジトリー : @System repo から : PowerTools 概要 : Outline and bitmap font editor URL : http://fontforge.github.io/ ライセンス : GPLv3+ 説明 : FontForge (former PfaEdit) is a font editor for outline and bitmap : fonts. It supports a range of font formats, including PostScript : (ASCII and binary Type 1, some Type 3 and Type 0), TrueType, OpenType : (Type2) and CID-keyed fonts.
$ apt-cache show fontforge Package: fontforge Architecture: amd64 Version: 1:20190801~dfsg-4 Multi-Arch: foreign Priority: optional Section: universe/x11 Origin: Ubuntu Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> Original-Maintainer: Debian Fonts Task Force <debian-fonts@lists.debian.org> Bugs: https://bugs.launchpad.net/ubuntu/+filebug Installed-Size: 129 Depends: fontforge-common (= 1:20190801~dfsg-4), libfontforge3 (= 1:20190801~dfsg-4), libgdraw6 (= 1:20190801~dfsg-4), libc6 (>= 2.2.5) Suggests: fontforge-doc, fontforge-extras, potrace, python3-fontforge Conflicts: fontforge-nox Filename: pool/universe/f/fontforge/fontforge_20190801~dfsg-4_amd64.deb Size: 25896 MD5sum: 06f29ed81385986dfaa2eca51d489a82 SHA1: ddb7360b5efa2e355670b6051c9669fc4f1f341c SHA256: e22a1f561183cf26372ba0ae01bed5c4615b77ad9ca361300837758d8cc448d8 Homepage: https://fontforge.github.io/en-US/ Description-en: font editor FontForge is a font editor. Use it to create, edit and convert fonts in OpenType, TrueType, UFO, CID-keyed, Multiple Master, and many other formats. . This package also provides these programs and utilities: fontimage - produce a font thumbnail image; fontlint - checks the font for certain common errors; sfddiff - compare two font files. Description-md5: 4ebffb1f6ab9a1d49bd81ce04ad8a0a7 Task: ubuntustudio-publishing
CentOS8 の方は 20170731 とあり、ubuntuの方は 20190801 とあります。CentOS8 の方は、かなり古いみたいです。
マイRictyの見栄え
最後に、どんな見栄えになったかです。
- Inconsolata-Regular (400) + migmix-1m-regular
- Inconsolata-Light (300) + migmix-1m-regular
- Inconsolata-ExtraLight (200) + migmix-1m-regular
私としましては、Inconsolata-Light がちょうどいい感じですね。比べると Inconsolata-Regular でもいい気がするのですが、ちょっと強いかなぁ。Inconsolata-ExtraLight はちょっと薄すぎですね。ははは。
で、『秀丸エディタ』では Inconsolata-Light、『TeraTerm』では Inconsolata-Regular にすることにしました。
ああ、半日以上かかってやっと満足した結果が出せました。よーし。ビール飲むぞ!
追記
Inconsolata と Circle M+ 2m の組み合わせに変更しました。