RE: palt+kernを持つ和文フォントについて


Natのメールの「和欧」となっていたところは「和文」が正しいと思います。

“Re-spaces glyphs designed to be set on full-em widths”とあるように、’palt’は日本語の全角文字を、全角文字として動作できることとに追加して、プロポーショナルのグリフとして(つまりグリフごとに固有の字幅も持てる)ようにしたものです。’palt’は元の全角文字のメトリクスを完全に置き換えるのではなく、どちらも使えるようにするためのものです。だから、alternateと名付けられています。言い方を変えると、全角のグリフではなくて、欧文フォントやプロポーショナルのグリフは、’palt’を必要とせず、初めからそのプロポーショナルの字幅を使うだけで、用が足りるわけです。なので、そのようなグリフが’palt’の対象となることはありません。そして、’palt’の内容といえば、まさにプロポーショナルのボディの全角ボディの各辺からのオフセット値となっています。

‘kern’を’palt’を持っていない欧文フォントなどのプロポーショナルフォントに対して適用することは、まったく問題がありません。なぜなら、既にプロポーショナルとして扱えるグリフしか持っていないからです。’palt’と’kern’の両方を適用しても、ただ’palt’が存在しないだけです。

‘kern’を’palt’を持っている日本語フォントに適用する場合には、その対象グリフをプロポーショナルにするために、’palt’を適用してから’kern’を適用する必要があります。‘palt’を持たない日本語フォント中の全角日本語グリフに’kern’は適用しません(というか、日本語グリフに’kern’を適用することを想定している日本語フォントには必ず’palt’が含まれています)。

‘palt’がなく、または’palt’があっても適用していないために、日本語フォント中の全角字幅のグリフに’kern’を適用することは、単に想定していないから、やらないのではなく、そうすることに合理性がないので、行わないのです。

歴史的には、これは、写植の仮名ツメ文字盤に由来しています。例えば「何とか中明朝」という文字盤があるとすると、通常の文字盤以外にも、「何とか中明朝」の仮名ツメ文字盤も用意されて、それには主に仮名文字をプロポーショナル字幅で印字できるように、位置を調整したグリフのネガ像が配置されていて、欧文文字盤と同じ方法で、文字巾のクラスごとの送り量を写植機が検出して、グリフごとに適切な字幅で送れるようにしたものです(字幅の検出のメカニズムは写植機メーカーや機種によって異なりましたが)。

仮名をツメルのは、印刷書体の仮名文字のグリフが、全角正方形に合わせるようにデザインされているとはいえ、仮名文字の形が多様であるために、ベタで組んだ場合に、レタースペース(字間)が視覚的に不均等になる傾向があり、それを、大きな印字サイズで用いた場合や、見出しや広告・商業印刷物などにおいてタイトな組み上がりの効果が期待される場合に、(1)プロポーショナルで組むことで改善する、(2)それでも改善できない個別の文字の組み合わせごとのスペーシングを改善する、目的で行われます。前者に’palt’が、後者に’kern’が対応しています。

上記のような目的や用途でも、全角の等幅の書体デザインのままで、ツメたりする必要を感じないのであれば、このようなことはすべて不要になります。字面の大きな、ゴナやナールや新ゴといったフォントは、ツメる必要性ができる限りないように、初めからデザインされた書体です。それもまた一つの解決方法です。この方法は見出し用書体で少なからず採用されてきました。

その他のフォントで、用途によって、ツメたくなる状況というのは、欧文にたとえていうと、本来プロポーショナルのデザインのA, B, C . . . X, Y, Z, a, b, c . . . x, y, z のグリフを字幅だけ等幅で組むのと同じような状況だということです。本来の字幅でない、つまりプロポーショナルになっていない状況で、スペーシングを改善するためにできることは、プロポーショナルにすることです。それぞれのグリフのデザインに合った字幅で組むことです。これが、’palt’が日本語フォント内の全角グリフに対して行っていることです。それをしない段階で、’kern’を適用して、スペーシングを改善しようとしたら、膨大な数のペアを設定する必要が生じてしまいます。だから、’palt’によってプロポーショナルの字幅をもたせてから、必要であれば、’kern’を適用する、という手順を踏んでいるわけです。しかし、このことは上述のように、プロポーショナルでない、全角等幅のグリフについてだけに、あてはまります。

以上、補足まで。

山本

From: Nat McCully <nmccully@adobe.com>
Sent: Monday, October 11, 2021 3:05 AM
To: Koji Ishii <kojii@chromium.org>; Taro Yamamoto <tyamamot@adobe.com>; W3C JLReq TF <public-i18n-japanese@w3.org>
Subject: Re: palt+kernを持つ和文フォントについて

ご理解は合っています。うちの製品では、カーニング設定は3種類あります。そのうち、「自動」と「和文等幅」というのはフォント内の’kern’でペアカーニングをします。いずれも字形のプロポーショナル幅との差分がカーニング値になっており、仮名のカーニングをする(つまり、「自動」の)場合には先に’palt’をかけないといけないのです。「自動」に設定するとエンジンが裏で’kern’と’palt’をかけます。
「和文等幅」の場合は和文フォントの欧文文字の部分が既にプロポーショナルになっていることと、欧文フォントは’palt’がないことで’kern’を欧文文字にだけかけて済むと思います。
デフォルトでいつも’kern’だけかけたしまうと仮名カーニングできるフォントは正しくカーニングされませんし、CJKは標準等幅とは違う挙動になります。

—Nat
________________________________
From: Koji Ishii <kojii@chromium.org<mailto:kojii@chromium.org>>
Sent: Sunday, October 10, 2021 10:23:58 AM
To: Taro Yamamoto <tyamamot@adobe.com<mailto:tyamamot@adobe.com>>; W3C JLReq TF <public-i18n-japanese@w3.org<mailto:public-i18n-japanese@w3.org>>
Subject: palt+kernを持つ和文フォントについて

太郎さんかNatあてになるんだろうと思いますが、ほかの方の参考にもなると思うので質問させてください。少し技術的に細かい話になります、すみません。

先日のミーティングで、Adobeの和文フォントでは、kernとpaltは一緒にオンにしないと、フォントデザイナーが期待した結果にはならないというご指摘をいただきました。これは、kernテーブルが、paltの字幅に対して設計されているから、という理解でいいでしょうか?

技術的に言えば、現在、paltの推奨<https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Ftypography%2Fopentype%2Fspec%2Ffeatures_pt%23tag-palt&data=04%7C01%7Cnmccully%40adobe.com%7Ce1faf34ee9b64aee3b9308d98c12f61a%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637694835381381150%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=NQs9RKdmDxF%2Bh%2FHz4XD%2BtsDttebN1gcKveIb9AdHKzA%3D&reserved=0>はGPOS lookup type 1だけなので、paltを持つフォントに関しては、(1) paltありの字幅にカーニングをかけるか、(2) paltなしの字幅にカーニングをかけるかのいずれかしか選べない、ということになります。

そのような状況で、Adobeは、paltありの字幅にカーニングをかけることにした、というのが先日教えてくださったお話という理解で合っていますか?

このようなフォントをpaltなしで使い、かつ従属欧文にはkernをかけたい場合には、どのようにするのでしょうか? 和文と欧文を区別して、必要なOpenType機能を切り替えるのでしょうか?

Received on Monday, 11 October 2021 00:37:51 UTC