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

Nat,

Do you agree on my (3), shown below?

(3) When a font specifies the 'kern'
feature as well as the 'palt' feature for
a given glyph, the abstract font engine
shall not use the 'kern' feature for
rendering this glyph without using the
'palt' feature as well.

Regards,
Makoto

2023年4月16日(日) 10:31 Nat McCully <nmccully@adobe.com>:

> Answers inline (on my phone anyway)
>
> —Nat
> ------------------------------
> *From:* Taro Yamamoto <tyamamot@adobe.com>
> *Sent:* Saturday, April 15, 2023 8:09 PM
> *To:* Nat McCully <nmccully@adobe.com>; Shinyu MURAKAMI <
> murakami@vivliostyle.org>; Makoto MURATA <eb2m-mrt@asahi-net.or.jp>
> *Cc:* Koji Ishii <kojii@chromium.org>; 木田泰夫 <kida@mac.com>; 敏 小林 <
> binn@k.email.ne.jp>; JLReq TF 日本語 <public-i18n-japanese@w3.org>
> *Subject:* RE: CJKフォントのpalt(詰め組)とkernの関係
>
>
> Nat,
>
>
>
> Thank you for your response, but your descriptions seemed to be a bit
> vague and incomplete.
>
> Does the following scheme that I made based on what you wrote matches your
> idea?
>
>
> *Given condition:* The user wants to apply pair-kerning to a text.
>
> *[BTW, I think it’s risky to automatically kern Japanese characters by
> default, even if the font used has both the ‘palt’ and ‘kern’ information
> sufficiently.]*
>
>
>
> *Nat: I agree. My description is not for any default behavior. It is
> intended for when the user chooses to turn kerning on for the text. For cjk
> the default should be "only kern Latin". *
>
>
> *On the font side:*
>
> If ‘palt’ information exists:
>
> Then:
>
> The ‘palt’ information is applied to the text, so that the text becomes
> pseudo-proportional.
>
> *                        It is assumed that the font is a Japanese font.*
>
> If ‘kern’ information exists:
>
> Then:
>
> The ‘kern’ information is applied, and the text is correctly set kerned.
>
>                         Else:
>
> The text is set pseudo-proportionally with the ‘palt’ information.
> But, because of the lack of the ‘kern’ information, kerning is not applied.
>
>             Else:
>
> If ‘kern’ information exists:
>
> Then:
>
> The ‘kern’ information is applied, and the text is correctly set kerned.
>
> *                                    It is assumed that the font is a
> Latin proportional font or a Japanese true-proportional font.*
>
>                         Else:
>
> Neither the ‘palt’ nor the ‘kern’ information is available in the font.
> No alternative metrics and pair-kerning adjustments are made to the
> characters.
>
> *                                    Any kind of fonts can reach this
> point unless alternative metrics and/or pair-kerning are/is supported.*
>
>
>
> *Nat: the above seems correct to me. *
>
>
>
> *Recommendation to the font maker:*
>
> *            Font makers should set kerning pair values based on
> proportional widths not monospaced widths. Japanese fonts including
> monospaced characters to which alternative proportional metrics or
> pair-kerning may be applied optionally with the user’s explicit instruction
> must have alternative metrics data for the ‘palt’ feature, and if
> pair-kerning also may be applied, such fonts must have pair-kerning data
> for the ‘kern’ feature.*
>
>
>
> *Nat: this is the key understanding all font makers should have about how
> much kern they set on pairs of Kana etc that are normally monospaced by
> default. I hope they understand the engines assume kern pair amounts are
> deltas off the proportional widths not the monospaced widths. The engines
> first apply palt so the kern amounts set in the kern pairs of Kana etc are
> correct. *
>
>
> *On the text engine side:*
>
>             It applies the ‘palt’ feature.
>
>             If ‘palt’ information does NOT exist in the font:
>
>             Then:
>
>                         The ‘palt’ feature applied does not work.
>
>                         (Okay, it’s not surprising . . . this font seems
> to be a proportional font.)
>
>             Else:
>
>                         The ‘palt’ feature applied works.
>
>                         (Hmm . . . this font seems to be a Japanese font.
> Now, the characters become proportional!)
>
>
>
>             It applies the ‘kern’ feature.
>
>             If ‘kern’ information does NOT exist in the font:
>
>             Then:
>
>                         The ‘kern’ feature applied does not work.
>
>                         (Unfortunately, I have to give up kerning. . . .)
>
>             Else:
>
>                         The ‘kern’ feature applied works.
>
>                         (Done!)
>
>
>  *Nat: the above seems correct to me. *
>
>
> *Recommendation to the text engine maker:*
>
> *Engines must apply proportional widths and kerning pairs no matter what
> font is applied.*
>
>
>
> *Nat: to be clear, this is in the case of auto kern everything and not the
> default behavior for cjk. *
>
>
> *Question 1:*
>
> I just want to confirm one point here. So, if *kerning* is applied to a
> text by using a Japanese font with ‘palt’ but without ‘kern’ information,
> only ‘palt’ is applied, and the affected characters become proportional. *I
> think this is reasonable*, but is this understanding correct
>
>
> *Nat: in Adobe apps "auto" or "metrics" kern means apply both palt and
> kern. "Latin-only kern" mode means apply palt and kern only to non-CJK
> (non-SJIS 由来の全角). With those features applied we ask the font engine for
> glyphs and positions. If the font lacks one of those features it is
> ignored. *
>
>
>
> *Question 2:*
>             All the assumptions and recommendations written above in*
> blue italicized lines *can be just *informative* for the standard, and
> also some of them are just what we are usually expecting or assuming, but
> all these are fine as they themselves are. But in this discussion, *the
> latest question is whether the following points written by Mr. Murakami
> based on Mr. Murata’s previous  explanations are all reasonable or not.*
> What do you think?
>
> Mr. Murakami wrote:
>
> 個々のグリフごとに、
>
> ・そのグリフにpaltがない場合、kernを有効にする
>
> ・そのグリフにpaltがある場合、paltを有効にしないかぎりkernを有効にしない
>
> なるほどこれであれば、CJK全角かどうかの判定は要りません。
>
>
>
> これをブラウザに実装するのは難しいでしょうか?
>
>
> *Nat: we generally do not check the font for the presence of a feature to
> make decisions about other features. So, the engine will apply palt if the
> user chooses "proportional widths". If the user chooses a kerning mode, the
> engine applies palt and kern both. Engines that do not apply palt whenever
> they apply kern are not correct according to the standard and to our
> understanding of kern amounts set in the kern feature for cjk glyph pairs. *
>
>
>
> Regards,
>
>
>
> --Taro
>
> 山本
>
> アドビ
>
>
>
> Normally the font determines the behavior and the text engine applies
> features according to text attributes or controls set by the user.
>
>
>
> User: I want all text kerned. Turn on Auto Kerning
>
> Engine: Auto Kerning UI results in turning on palt and kern (vpal and vkrn
> in vertical), so any font in the selection will be proportional and also
> kerned.
>
> Layout step: Font is queried for glyphs, positions according to having
> palt and kern selected.
>
>
>
> So, the advice for font makers is different from the advice for engine
> developers. Engines must apply proportional widths and kerning pairs no
> matter what font is applied. Font makers must set kerning pair values based
> on proportional widths not monospaced widths. If the font is already
> proportional there is no palt feature present so the palt set by the engine
> is ignored. But if the user switches fonts the palt feature is applied and
> the text will kern correctly.
>
>
>
> —Nat
>
>
>


-- 
Regards,
Makoto

Received on Sunday, 16 April 2023 02:16:02 UTC