Slide 1

Slide 1 text

textAlignVertical Best Practice @mrtry 2025/11/04 - React Native Meetup #23

Slide 2

Slide 2 text

⾃⼰紹介 ● JMDC, Inc / ventus, Inc ○ Mobile App Engineer ○ Scrum Master ● React Native Meetup Organizer ● 卒: ⾼専(情報⼯学) / 現: ⼤学⽣(認知科学) 2

Slide 3

Slide 3 text

上下中央揃えしたいが、OSで揃わないので調べた ● テキストの垂直中央揃えが Android / iOS でずれる問題があった ○ iOSは垂直中央揃えされるが、Androidはされてくれないことがほとんど ● 原因は、フォントの描画⽅式の差分だった ● その違いと対処⽅法についてまとめた なんか上に寄ってる こうなってほしい 3

Slide 4

Slide 4 text

フォントには2つの⾼さ基準があった

Slide 5

Slide 5 text

フォントには2つの⾼さ基準があった ● フォントには2種類の⾼さ基準がある ○ ascent / descent ○ top / bottom 5

Slide 6

Slide 6 text

iOSは ascent / descent を基準にする ● iOSはascent / descentを基準にする 6

Slide 7

Slide 7 text

Androidは top / bottom を基準にする ● includeFontPadding で基準が変わる ○ true: top / bottom ○ false: ascent / descent ● default: true のため、iOSとフォントの⾼さに差分が出る 7

Slide 8

Slide 8 text

プラットフォーム別の調整⽅法

Slide 9

Slide 9 text

Androidでの対処法 ● includeFontPadding: false でiOSと⾼さをそろえる ● lineHeightをfont sizeの1.2-1.5倍にする ○ includeFontPadding: false すると、⾒切れることがある ○ Material Design Guidelineに⽬安が書いてある ● textAlignVertical: 'center'で 垂直中央揃え 9

Slide 10

Slide 10 text

iOSでの対処法 ● 何もしなくて良さそうだが、調整必要なら以下を試みる ● lineHeight を fontSize と同じ値にする ○ textAlignVertical がiOSにはない ○ fontに対しての上下の余⽩をタイトにして整える 10

Slide 11

Slide 11 text

実例 11

Slide 12

Slide 12 text

まとめ ● プラットフォームごとにテキストの取扱に差分があった ● 垂直⽅向の中央揃えをするには、それぞれに適した対応が必要 ○ 共通 ■ フォントの⾼さをそろえる ○ iOS ■ lineHeight で垂直の余⽩を無くす (必要に応じて) ○ Android ■ textAlignVertical で中央揃え ■ lineHeight で⾒切れを防ぐ 12