textAlignVertical Best Practice
by
Shinnosuke Yamamoto
×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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