Movatterモバイル変換


[0]ホーム

URL:


いなにわうどんいなにわうどん
gushwell が参加
Closed4

Yu Gothic UIに text-spacing-trim を適用するとバグる

CSS
font
いなにわうどんいなにわうどん

以下のツイートを見て、自分の環境でも再現したので気になって調べてみた。
https://twitter.com/kyoto_inaniwa/status/1772134366921322502

現象

text-spacing-trim プロパティを Yu Gothic UI のテキストに適用すると、一部の括弧類が重なってしまう。これは値にspace-all を設定すると解消される。

5
gushwellgushwell

情報、ありがとうございます。同じ現象で悩んでいました。

いなにわうどんいなにわうどん

halt と hmtx を見る

Windows に標準搭載される Yu Gothic UI や游ゴシックには、GPOS テーブルにhalt 機能タグが含まれている。
halt 機能タグの正式名称は「字幅半角メトリクス」であり、全角の約物を半角として扱う際などに位置を補正する役割を持つ。text-spacing-trim プロパティの実装においても、この halt の値を見て文字詰めを決定している。

TTX(fontTools が提供する解析ツール)を用いて、Yu Gothic UI/游ゴシック の halt と hmtx(水平方向のレイアウト情報)を値をダンプしてみる。

ttx-t GPOS YuGothicUI-Regular.ttfttx-t GPOS YuGothic-Medium.ttfttx-t hmtx YuGothicUI-Regular.ttfttx-t hmtx YuGothic-Medium.ttf

結果は以下の通り。width はグリフの幅を、lsb は left side bearing(原点からグリフの左端までの距離)を表している。このあたりの説明はhhea, hmtx テーブル に詳しい記載がある。

Yu Gothic UI

文字UnicodeGlyphNameXAdvancewidthlsb重なるか
u+300duni300d-1024102472o
u+300funi300f-1024102468o
u+3011uni3011-1024102457o
u+3009angleright-1024102461o
u+ff09uniff09-1024204892x
u+ff3duniff3d-10242048103x

游ゴシック

文字UnicodeGlyphNameXAdvancewidthlsb重なるか
u+300duni300d-10242048102x
u+300funi300f-1024204892x
u+3011uni3011-1024204888x
u+3009angleright-1024204892x
u+ff09uniff09-10242048103x
u+ff3duniff3d-10242048103x

結果を見ると、以下のことが解る。

  • Yu Gothic UI と游ゴシックで、XAdvance は完全一致(この他に xPlacement の値も一致)
  • Yu Gothic UI の一部グリフでは、width が游ゴシック(2048)の半分(1024)に設定されている
    • これらのグリフは、text-spacing-trim を設定した際に重なったグリフと一致
いなにわうどんいなにわうどん

考察

Yu Gothic UI はUI 用フォントであることから鍵括弧等を半角に設定したものの、halt 機能タグの情報は游ゴシックからコピってきた *1 ため、今回のような現象が起こったのではないか?と推測。

なお、font-feature-settings: "halt" を設定した場合(下図)も同様に表示がバグっているため、これが原因とみて間違いなさそう。

*1 そもそも、Yu Gothic UI と游ゴシックは同一のフォントファイル(ttc)であり、一部のテーブルを共有している

このスクラップは2024/03/25にクローズされました
ポスト
いなにわうどん

回鍋肉と C# が好きです

2人がコメント
いなにわうどんgushwell

[8]ページ先頭

©2009-2025 Movatter.jp