0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CoreText でルビを付けたら謎の挙動をした

Last updated at Posted at 2019-11-17

ルビ付きのテキストをいい感じに表示させたくて色々試していたところ謎の挙動を発見したのでメモ

行をまたぐルビ付きのセグメントの処理が CoreText は該当するセグメント全体を次の行に送るように処理するようになっていて、その挙動自体自体は問題ないのですが後続する行の内容によって行を送る処理が発生したりしなかったりするようです

原因を探ろうと発生する/しないを切り分けてみたところ、以下のように後続する行に付くルビが短いと該当の処理が発生しないようでした

Simulator_Screen_Shot_-_iPhone_11_Pro_-_2019-11-17_at_15_11_06.png

(ちなみに該当の行と後続する行との間には別の行が挟まっても同様の挙動をします)

解決しようと、いくつか思いつく手法を試してみましたが、結局 straightforward に解決することは断念し、
文字と glyph の対応関係は CoreText から取得できるので、ルビ付きのセグメントが行をまたいでいる場合は手動で改行を挟むようにすることで対応しました。

再現用のミニマムなプロジェクトを 上げておきます

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?