Skip to content

タイポグラフィ

文字サイズは H1H4(見出し)と Label1Label4(本文・補足・キャプション・極小)の8段階です。Discussion #63 で決めた抽象名スケール(xs4xl)への移行は今後の実装課題で、現行コードは意味ベースの名前(FontSizeVariant)を使っています。

行送り(line-height)はサイズごとに個別のpx値で固定しており、比率(tight / normal / relaxed)のトークン化はまだありません。フォントウェイトは Bold(700) から Light(300) までの5段階です。

src/styles/FontStyle.tsFontSizeVariant / FontWeightVariant / FontFamily / getTextStyle() から自動生成しています。

variant font-size line-height
FontSizeVariant.H1 48px 56px
FontSizeVariant.H2 32px 40px
FontSizeVariant.H3 24px 32px
FontSizeVariant.H4 20px 28px
FontSizeVariant.Label1 16px 24px
FontSizeVariant.Label2 14px 20px
FontSizeVariant.Label3 12px 18px
FontSizeVariant.Label4 10px 16px
weight
FontWeightVariant.Bold 700
FontWeightVariant.SemiBold 600
FontWeightVariant.Medium 500
FontWeightVariant.Regular 400
FontWeightVariant.Light 300
family font-family
FontFamily.default system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif
FontFamily.serif Georgia, serif
FontFamily.monospace 'Courier New', monospace

FontFamily.default を既定として使い、独自フォントの同梱は行いません(配布サイズと言語カバレッジのトレードオフのため)。serif / monospace は代替が必要な限定的な場面向けです。

  • 見出し(H1〜H4): ページ・セクション・カード・ダイアログのタイトルに使います。1画面内で使う段数は最大3段程度に抑え、視覚的な階層を壊さないようにします。
  • 本文(Label1): 16pxを本文の基準にします。フォームのラベルや説明文もここが既定です。
  • 補足・キャプション(Label2〜Label4): 注釈・カウンタ・タイムスタンプなど、本文より優先度の低い情報に使います。Label4(10px)はタップ領域を確保できる場面(Badge の数字など)に限定し、単体で読ませる長文には使いません。
  • ウェイト: 見出しは Bold/SemiBold、本文は Regular、強調したい語だけ Medium を使います。太字を本文全体に使うと可読性が落ちるため避けます。
  • font-size: 14px のように px を直接書かない。getTextStyle(FontSizeVariant.Label2) かテーマ経由の値を使います。
  • 見出しに Label 系、本文に H 系を流用しない(意味と見た目が分離すると、テーマ差し替え時に崩れます)。
  • 行送りをフォントサイズ側で個別に上書きしない。getTextStyle() が返すペアのまま使います。