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

 shimonoです

On 2023/04/18 05:02, Koji Ishii wrote:
> On Tue, Apr 18, 2023 at 1:07 AM Atsushi Shimono (W3C Team) <atsushi@w3.org <mailto: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さんの実装を聞いて、仕様化する必要があるんだろうと思っていました。

 コメントありがとうございます。
 "実装としては"フォントごとにon/offではなくグリフ単位で付随情報(という単語が正しいかはわかり
ませんが、palt/kernなどの他テーブルの意味のつもりです)を集約してグリフ(と前後の関係も見なが
ら)個別に適用条件を参照して整約している、という理解をいたしました。


>     ・グリフに対して言語による分類がないという話が上がっていますが、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を置いて、マッピングを行います。

 あ、、、言葉足らずでした。
 この図などで、すでにScript/Languageという概念があると思っていたのですが、村田さんのメールで
https://lists.w3.org/Archives/Public/public-i18n-japanese/2023AprJun/0043.html

> 入れると規定が一気に難しくなる(Unicodeのコードポイントやgrapheme clusterの話なのかOFF上にグ
> リフがCJK全角であるという概念を定義するのか)ので入れたくありません。
というのがあり、scriptという概念がすでにあるなら追加定義はそこまで大きいものでもないのではない
か?と疑問に思ってました。

Received on Tuesday, 18 April 2023 04:35:47 UTC