Re: CJKフォントのpalt(詰め組)とkernの関係

On Tue, Apr 18, 2023 at 1:07 AM Atsushi Shimono (W3C Team) <atsushi@w3.org>
wrote:

> shimonoです
>
> 「グリフ単位」というところと、ちっと別スレッドですが「CJKへの限定」というコメントで、幾
> つか門外漢から質問を提示したいのですが
>
> ・paltとkernが、たとえば「仕様書はこれです。」のような文章で、「す。」のペアのkernを有効に
> したいからこの2文字"だけ"にpaltも矯正するというのは実際の処理的には現実的ではない気もするの
> ですが(というか違和感出る表示になりますよね)。。あと、paltの規定であるGPOS type 1 (single
> adjustment)では
> > A SinglePos subtable will have one of two formats: one that applies the
> same adjustment
> > to a series of glyphs (Format 1), and one that applies a different
> adjustment for each
> > unique glyph (Format 2).
> とありますが、これはグリフ個別にon/offではなく、グリフ単位で指定できるけれども全体一括有効
> と思うのですが。。
>

良い質問ですね、仕様を詰めよう、となったら、これも聞かなければならないと思っていました。Type 1 Format
2だと、グリフとそれぞれのグリフに対する異なる値を指定できます。いずれにしても、Type
1限定であれば、対象の文字は一文字なので、これは誤解がありませんが、「Recommendation」がどこまで強制力があるか、というのが疑問としては上がります。

palt側は、このType 1限定ができればシンプルなのですが、kern
<https://learn.microsoft.com/en-us/typography/opentype/spec/features_ko#tag-kern>はType
2 or Type 8となっています。Type 2
<https://learn.microsoft.com/en-us/typography/opentype/spec/gpos#lookup-type-2-pair-adjustment-positioning-subtable>
はペアカーニングなので、二文字が対象、Type 8
<https://learn.microsoft.com/en-us/typography/opentype/spec/gpos#lookuptype-8-chained-contexts-positioning-subtable>
は、コンテキストを見るので、もっと長く、上限があったかどうか記憶が定かではないのですが、これが「この2文字、あるいは複数文字の一文字でも被ったらオフ」なのか、「全部がpaltを持っていたらオフ」なのかは、Adobeさんの実装を聞いて、仕様化する必要があるんだろうと思っていました。

・グリフに対して言語による分類がないという話が上がっていますが、GPOS/GSUBのScriptListとか
> LangSysRecordとかのデータってどういうデータを参照してグリフにアサインされているんでしょう
> か・・・?


グリフには、言語はありません。Featureにあります。この図
<https://learn.microsoft.com/en-us/typography/opentype/spec/gsub#table-organization>
がわかり易いかと思います。Script
<https://learn.microsoft.com/en-us/typography/opentype/spec/scripttags>の下に
Language
<https://learn.microsoft.com/en-us/typography/opentype/spec/languagetags>があるのですが、日本語はmulti-scriptなので、kana,
hani, latn,
grekなどのスクリプトを宣言し、その下にそれぞれJANを置き、同じテーブルへのリンクを貼る、というのが一般的になっています。言語によって異なるグリフを表示したい場合には、その言語の
locl
<https://learn.microsoft.com/en-us/typography/opentype/spec/features_ko#tag-locl>
 featureなどを作って、その中にGSUBを置いて、マッピングを行います。

Received on Monday, 17 April 2023 20:02:47 UTC