環境
- macOS Catalina(10.15.5)
日本語対応フォント一覧
851MkPOP AhahaMojimoji Arial Unicode MS Hannotate SC HanziPen SC Hiragino Maru Gothic ProN Hiragino Mincho ProN Hiragino Sans Hiragino Sans GB Osaka PingFang HK PingFang SC PingFang TC Ricty Diminished Ricty Diminished Discord ShigotoMemogaki Toppan Bunkyu Gothic Toppan Bunkyu Mincho Tsukushi A Round Gothic Tsukushi B Round Gothic Wawati SC Yuppy SC Yuppy TC
たぶんOsaka
とかはMacユーザーならデフォルトで入ってるんじゃないでしょうか。
利用できるフォントは環境によって違うので、下記のコマンドで実際に出力してみてください。
日本語対応フォント一覧を抜き出すコマンド
ワンライナーでサクッと探せる。
silicon --list-fonts | while read font; do [ -z "$(silicon test.md --to-clipboard -f "$font" 2>&1)" ] && echo $font; done
テスト用のソースコードtest.md
は下記。
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. あのイーハトーヴォのすきとおった風、夏でも底に冷たさをもつ青いそら、うつくしい森で飾られたモリーオ市、郊外のぎらぎらひかる草の波。 またそのなかでいっしょになったたくさんのひとたち、ファゼーロとロザーロ、羊飼のミーロや、顔の赤いこどもたち、地主のテーモ、 山猫博士のボーガント・デストゥパーゴなど、いまこの暗い巨きな石の建物のなかで考えていると、みんなむかし風のなつかしい青い幻燈のように思われます。 では、わたくしはいつかの小さなみだしをつけながら、しずかにあの年のイーハトーヴォの五月から十月までを書きつけましょう。
siliconって何?
ソースコードを画像化するRust製のコマンドラインツール。 github.com
brewでインストールできる。
brew install silicon
シンプルなコマンドで良い感じのソースコード画像が生成できる。
silicon test.vim -o test.png -f "Ricty Diminished"
指定したフォントで対応していない文字があったらエラーになる
例えばデフォルトの”Hack”フォントで日本語を含むソースで画像生成をすると、warningが出た上で日本語部分がすっぽ抜けた画像が生成する。
silicon test.vim -o test.png -f "Hack"
日本語対応しているフォントを探し出す
ということで冒頭のワンライナーが必要になった。
silicon --list-fonts | while read font; do [ -z "$(silicon test.md --to-clipboard -f "$font" 2>&1)" ] && echo $font; done
silicon
で利用可能なフォント一覧はオプションで--list-fonts
をつければ表示できる。
silicon --list-fonts
ただこれだけだと日本語対応していないものを出てくるので、実行した際にwarning
が出るか否かで日本語対応しているかどうかを判断する。
[ -z "$(silicon test.md --to-clipboard -f "$font" 2>&1)" ] && echo $font;
silicon --list-fontsはどこを読み込んでいるのか
siliconではフォント読み込みライブラリにservo/font-kitを使用している。
silicon/src/bin/silicon/main.rs
} else if config.list_fonts { let source = font_kit::source::SystemSource::new(); for font in source.all_families().unwrap_or_default() { println!("{}", font); } return Ok(()); } else if config.config_file {
servo/font-kitではsrc/sources/fs.rs
でフォントディレクトリを指定していた。
#[cfg(target_os = "macos")] fn default_font_directories() -> Vec<PathBuf> { let mut directories = vec![ PathBuf::from("/System/Library/Fonts"), PathBuf::from("/Library/Fonts"), PathBuf::from("/Network/Library/Fonts"), ]; if let Some(mut path) = dirs_next::home_dir() { path.push("Library"); path.push("Fonts"); directories.push(path); } directories }
つまりMacの場合
- /System/Library/Fonts
- /Library/Fonts
- /Network/Library/Fonts
- ~/Library/Fonts
からフォントが読み込まれるみたい。