和文フォントでMarkdownスマートハイライトが利かないのはフォントが起因だった!+その対策
https://itunes.apple.com/jp/app/notebooks-write-documents/id862961526?mt=12&uo=4&at=10l8JW&ct=hatenablog
https://itunes.apple.com/jp/app/foldingtext/id540003654?mt=12&uo=4&at=10l8JW&ct=hatenablog
スマートハイライトとは?
Markdownエディタで、見出しを大きな文字にしたりしてくれる機能のこと。
参考:カッコイイMarkdownエディタの機能にいい感じの呼び名をつけよう - 豆腐メンタルは崩れない
非常に快適……なのだが、この機能を持つアプリであっても、日本語環境では正常に機能しないことが多い。というか多すぎる。
あまりに多すぎることに気付いて目眩がしてきたので、この問題で苦しんでいるかもしれない誰かのために調査結果をレポートする。
※2014-05-21 あまりに大いなる勘違いが明らかになったため全面改稿。
原因はなんなのか?
参考: ウエイトとファミリー | フォント製品 | 株式会社モリサワ
コンピュータ内のフォントは、いくつかの類似した書体がセットになって「ファミリー」を形成している。ソフトウェアの使用フォント指定においては、一般的に「フォントファミリー」が選択され、用途に応じて異なる書体を選択できるようになっている。
ここにおいて、欧文フォントファミリーでは一般に文字のスタイル、和文フォントファミリーでは文字の幅がセットされている。
例として、Macの標準フォントである「Helvetica」(欧文)および「ヒラギノ角ゴPro」の書体セットを挙げる。
このように、欧文フォントファミリーでは文字スタイルが異なる多数の書体が用意されているのに対し、和文フォントファミリーでは2種の文字幅が用意されているにすぎない。
この点が、テキストに対してスタイルを適用するテキストエディタ・ワードプロセッサ等のアプリケーションにおいて問題になる。これらのアプリケーションは、一般にフォントファミリーから適切な書体を選択することでスタイルを表現するが、和文フォントファミリーを指定した場合、選択すべき書体が存在しないのである。
そのため、Markdownエディタにおいても、フォントファミリーの指定によってはスマートハイライト(イタリックないしボールドのスタイル適用)が機能しない事象が発生する。これは、アプリケーションの問題でもOSの問題でもなく、フォントに起因する事象なのだ。
つまり、フォントファミリーを指定できるMarkdownエディタにおいては、イタリックおよびボールドの書体を持つフォントファミリーを選択することでこの事象を回避できる。
ただし、和文文字を保有しないフォントファミリーにおいては、和文入力時に同様の事象が発生することに注意せねばならない。このような場合も、一部のエディタは、プログラム的に文字幅を増加することでボールドを表現する機能を有するが、イタリックを表現できるエディタは極めて少ない。
これらのフォントに起因する事象を完全に解決するには、イタリック書体を有する和文フォントファミリーを使用すればよいわけだが、そもそも和文においてイタリックを使用する例が少ないため、このようなフォントファミリーは、簡単に入手できる範囲には存在しない。
以上を踏まえて、和文を含むMarkdownドキュメントの作成にあたり、適切にスマートハイライトを活用する方法を検討してゆく。
なお、以下の文章はMac OS Xを前提とする。
フォントファミリー指定にかかわらず、ボールド/イタリックの適用が可能なアプリ
神様。崇め奉るべき。
これらのアプリは、(恐らく)プログラム的な文字幅の増加/書体の傾けによってボールド/イタリックを表現する機能を有する。そのため、好みに応じて幅広いフォントファミリー指定が可能である。
ただし、ボールド/イタリック書体を有するフォントファミリーを指定した場合と比較すれば、見栄えの美しさは損なわれる。
フォントファミリー指定にかかわらず、イタリックの適用が可能なアプリ
- Mou
ボールド化は不可能、イタリック化は可能。そのため、多くの和文フォントファミリーが選択対象に入ってくる。
フォントファミリーの指定自体が不可能/面倒だが、デフォルトのフォントでボールド/イタリック指定が可能なアプリ
- HarooPad
ハイライトテーマの指定が可能なアプリ
- LightPapar
- Ulysses III
- TextMate2
- SublimeText
これらのアプリは、シンタックスハイライトのスタイル指定自体を変更することができる。そのため、MarkdownにおけるStrong/Emphasisマークアップに対して、書体変更ではなくカラーリングなどを適用することにより、適切なハイライトが可能である。
ただし、スマートハイライトに比較すれば視認性は落ちるため、このような観点からは次善の選択肢になるだろう。
欧文フォント指定時の問題
大半のアプリケーションでは、汎用的な欧文フォントファミリーを指定することで、和文イタリックを除くスタイル指定は表現できる。
ただし、一部のアプリケーションでは、和文文字を含まない欧文フォントファミリーを指定した際、半角英数と和文を混在させると、行の高さがおかしくなって、表示がカクつく。そのため、これらのアプリケーションでは和文フォントファミリーの指定が推奨される。
- Byword
- textmate2
まとめ
- スマートハイライトしたかったらATOMとかを使おう
- フォントファミリーの中身にも注意しよう
- 日本語つらい