一部進行しているギリシア文字ですが、お手本を欧文フォントにおいているため、当然のようにそのグリフは欧文グリフに準じた横幅のプロポーショナルタイプとなっています。ところが一般的な和文フォントのギリシア・キリル文字などでは全角固定幅やイタリック体などが混在していて、何か複雑な歴史的事情がありそうです。M+ FONTS の欧文グリフは「欧文フォント」としても使ってもらいたいので、特別な問題がない限りは「複雑な事情」に束縛されたくないと思っています。
連休前に、(たぶん)日本在住のロシア人の方から英文のメールをいただきました。M+ を含めいろいろと和文フォントを試しているが、どれもキリル文字の横幅が二倍くらいあって困っている、との事。
M+ にはまだキリル文字が含まれていないので、何か別の和文フォントから自動補完されているのだと思います。でもアドバイスをありがとうございます、M+ のキリル文字は欧文フォントに準じて制作するつもりです。と返事をしたのですが、どうも M+ はキリル文字を他のフォントから取り込んでいると思われているらしく(キリル文字はデザインしていない、ということだけは伝わった様子)、fontforge に横幅を変更する機能があったよ、キリル文字をデザイン修正する必要はないよ、と返事がきた。自分の拙い英文メールのせいでしょう。長くなりそうだ。
ここで、coz さんをちょっと寄り道させる魔法の言葉を。 「coz さん、キリル文字にもラテン文字・ギリシア文字・国際音声記号からグリフを流用できるものがあるよ!」
なんと! 次の公開後にギリシア文字同様、できるところだけ先行して埋めておきます。
等幅フォントの場合はどうなるんでしょう。 和文用フォントを名乗るなら、キリル文字などは全角幅にしてもらわないと表示がおかしくなりますけど。
他の欧文グリフと同様に、半角幅ではいけないのでしょうか?
「和文フォントならキリル文字などは全角幅」の理由が分からないのです。
「和文フォントならキリル文字などは全角幅」という考え方は日本語対応エンコーディングとして Shift_JIS, Windows-31J, x-Mac-Japanese, EUC-JP, ISO-2022-JP(謂ゆる JIS コード)しか無かった時代の解釈であり,Unicode (ISO/IEC 10646) を文字集合とした UTF-8 や UTF-16 などのエンコーディングが普及している今ではかなり状況が異なってきます。
Shift_JIS が日本語用のエンコーディングとして NEC の PC-9800 シリーズなどに採用されたころの時代では,1バイト(1オクテット)で表せる ASCII 文字や JIS X 0201 のカタカナを半角に,2バイトで表せるひらがな・漢字・ギリシア文字・キリル文字などの文字を全角で表すのが日本語環境コンピュータの慣習となっていました(EUC-JP エンコーディングでは JIS X 0201 のカタカナは3バイトでしたが)。MS-DOS などの OS が 1 MiB ちょっとの容量のフロッピーディスクに詰め込まれていた時代でしたので,テキストファイルといえども(特にプログラミング言語のソースコードにおいては)そのファイルサイズに気を使わなくてはならず,視覚的にファイルのサイズがわかる半角・全角表示は広く受け入れられていました。
しかし時代が移り,Microsoft Windows や Mac OS が Unicode をサポートするようになってくると状況が変わってきました。UTF-8 では漢字の大部分が3バイトで表されますし,UTF-16 では逆に ASCII 文字も2バイトで表されます。インターネットが普及して様々な言語間で PC が繫がり,UTF-8 が Web 上での事実上の共通多言語エンコーディングとなっていくにつれて,日本語フォントの半角・全角表示とバイト数との関係は薄れ,日本語フォントファイルも Shift_JIS 配置から Unicode 配置へと変わっていきました。JIS C 6226-1978(今の JIS X 0208)が制定された頃には数学用の文字としてしか認識されてなく,例字形がイタリック体で収録されていたギリシア文字も,インターネットが普及して Web 上でギリシア語文化に容易に触れられるようになるとギリシア語用の文字として認識されるようになり,JIS X 0213 では例字形が立体に直されました。さらに欧文フォントではプロポーショナルフォント(可変幅フォント)が GUI 画面やブラウザ表示での主流となっていきました。それに倣って日本語環境でも GUI 画面やブラウザ表示用に日本語フォントのラテン文字部分を可変幅にするものが増え,ますます半角・全角表示の意味は薄れてきています。
このような時代の流れを経た現在では,「和文フォントならキリル文字などは全角幅」という考え方はもはや時代遅れだと感じます。ギリシア文字はギリシア語用の文字であり,キリル文字はロシア語・ウクライナ語・ベラルーシ語などの言語用の文字であって,日本語用のみの文字ではありません。ギリシア語圏やロシア語圏では等幅フォントにおいてギリシア文字やキリル文字を半角幅(ぐらいの幅)で用いるので,それに倣うことで,M+ FONTS が多言語フォントとして使われるようになると考えます。
具体的には等幅フォントにおいて,ASCII やラテン文字・ギリシア文字・ロシア文字・国際音声記号・数学用記号・欧文用約物などは半角幅で,漢字・ひらがな・カタカナ・ハングル(한글)などの謂ゆる CJK (= Chinese, Japanese, Korean) 文字は全角幅で,日本語用の約物は JIS X 4051 に倣った上で基本は全角幅で良いと考えます。「★」や「●」などの記号類は欧文文書でも日本語文書でも使われるので悩みどころですが,例えば「※」(U+203B) や「〒」(U+3012) は欧文文書では使われず日本語文章でのみ使われるので全角幅で良いでしょう。また「℡」(U+2121) も欧文文書では使われず,日本語環境のみなので全角幅で良いと考えます。(英語において telephone の略語としては “phone” が一般的です。“TEL” では telephone なのか,telegraph なのか,それとも tetraethyl lead や transporter-erector launcher なのかわかりません。三つ目以降は極端な例ですが[笑]。)
coz さん,是非 F+ FONTS を多言語にも対応する日本語フォントとして開発し続けてください。応援しております。
クヌギ林さん、詳細なご説明ありがとうございました。知識が伴わないまま手を動かしている自分にはとても助かります。
そういうことはUnicodeのUAX #11で決められていて、各コードポイントには"N", "A", "H", "W", "F", "Na"のいずれかの値がつけられています。 http://unicode.org/Public/UNIDATA/EastAsianWidth.txt 例えば"H"がつけられたコードポイントはHalf Widthで半角、"F"がつけられたコードポイントはFull Widthで全角といった具合に。 キリル文字などには"A"というのがつけられていて、これは文脈によって幅が変わるもの。 要はこれらの文字が和文の中に現れた場合は全角に、欧文の中に現われた場合は半角になります。
“East Asian Width Properties” は Unicode 範囲にある文字を従来のエンコーディング(例えば日本語環境では EUC-JP、ISO-2022-JP、Shift_JIS、Windows-31J など)で扱う場合の字幅の基準を Unicode Consortium が定めたものです。そのため、Unicode で扱うことを主としたフォントにとっては参考程度にしかなりません。
さらに A (ambiguous) の属性値が付けられている文字は従来のエンコーディングとの互換性を考慮しなければ本来 Na (narrow) の属性値となるものです。クヌギ林さんがおっしゃっているように、JIS X 0208 に基づいて半角・全角を判断する意味が薄れてしまい、JIS X 0208 との字幅の互換性をあまり気にしなくても良くなった現在では、A の属性値の文字は本来の Na の属性値の扱いにするのが妥当だと考えます。
加えて、この “East Asian Width Properties” は JIS X 0213 を考慮していないままの古いものです。その証拠に、JIS X 0213 に含まれているラテン文字や国際音声文字の大部分に N (neutral) の属性値が付けられたままとなっています。この古い判断に基づく属性値に M+ FONTS が縛られる必要はほとんど無いと思われます。
(「東アジアの文字幅 - Wikipedia」も参照)
クヌギ林さんのお話にあるようにインターネットを通して Unicode が事実上の共通多言語エンコーディング(文字コード)となっている現在では,キリル文字を日本語環境で使う頻度よりもロシア語などのキリル文字系言語環境で使う頻度の方が圧倒的に多いことは,誰の目にも明らかです。この場合,キリル文字のグリフはキリル文字系言語環境で一般的に扱われている字幅(プロポーショナルフォントでは可変幅,等幅フォントでは半角幅)にするのがごく自然なことでしょう。ギリシア文字に対しても,同じことが言えます。
もし「キリル文字を全角幅で扱うものこそが和文フォントである」と言うのならば,いっそのこと M+ FONTS が和文フォントであるという区切りを取り払って,「高品位なひらがな・カタカナ・漢字のグリフを含む多言語対応フォント」として M+ FONTS を扱えば良いと思います。その方が,日本語環境だけに留まらずに様々な言語環境を表すことができるフォントとして,M+ FONTS の価値をより高められるでしょう。