次は序数つきリスト。…え、InlineTextContent でPlaceHolderに指定した領域にCanvasで描画する時ってCanvasからはみ出してもクリッピングされないのか。助かる
次は序数つきリスト。…え、InlineTextContent でPlaceHolderに指定した領域にCanvasで描画する時ってCanvasからはみ出してもクリッピングされないのか。助かる
グリフを追うコードはこんな感じ
https://gist.github.com/tateisu/99d6c9c567c252ff43e3cebe651ae656
一度notoで漢字とひらがな全部をチェックして、濁点以外で上下張り出しが最も多い数文字をサンプル文字列としている
TextViewのSpannedと違って、AnnotatedStringのParagraphStyleは入れ子にできない。 2023冬にissue が出てて、改善されるようなされないような感じ。過渡期だ… https://issuetracker.google.com/issues/315006870
ComposeのAnnotatedStringでリスト表示をやる。日本語テキストに対してドットの位置が上下中央になるよう工夫する。あらかじめ数文字のサンプル文字列のグリフを追ってベースラインからテキスト上下中央までの距離を計算しておく。InlineTextContentにheight 1.em でAboveBaseline なPlaceHolderを指定して、Canvasでドットを描く。
結果、日本語のグリフの上下(薄ピンク)の中央にドットが表示される。画像のグリーンがPlaceHolderで指定した領域で、その下端がベースライン。