Sparkle Design

Typography

Typography カバー
Typography Primitive Tokensを構成する「Font Family、Font sizes、Font weights、Line heights、Letterspacings」5つの要素と、それらが統合されてタイポグラフィスタイルを生成する関係を示しています。

Typography TokensはSparkle Design System全体で使用するタイポグラフィのための全ての要素を定義した物です。

Primitive Tokens

Primitive Tokens はタイポグラフィそのものではなく、タイポグラフィを構成する要素を扱うトークン階層です。

コンポーネントで使用するタイポグラフィは後述する Semantics Tokens で定義します。

現在はこの5つの要素から成り立っています。

  • fonts (フォントファミリー)
  • fontSizes (フォントサイズ)
  • fontWeights (フォントウェイト)
  • lineHeights (行間)
  • letterSpacings (文字間隔)

fonts

fonts はフォントファミリーを扱うための要素です。

テキストフォントには BIZ UD フォントを採用しており、トークンには等幅フォントと可変幅フォントの2種類のファミリーを用意しています。

アイコンフォントにはMaterial Symbols Roundedを採用しています。

TokenValueDescription
fonts.proportional“BIZ UDPGothic”可変幅フォント
fonts.monospace“BIZ UDGothic”等幅フォント
fonts.icon“Material Symbols Rounded”アイコンフォント
ProportionalフォントとMonospaceフォントの字幅の違いを示しています。
  • プロポーショナルフォント (proportional)
    • 文字の種類に応じて文字幅を調整して読みやすい文字組となるように設計されたフォント
    • 見出しや文章に適用させることに向いている
  • モノスペースフォント (monospace)
    • 文字幅が固定化されているフォント
    • 幅が均一なので数字や文字同士を比較してもらう目的で提示する場合に効果的
  • アイコンフォント(icon
    • アイコンだけで構成されているフォント

fontSizes

fontSizes はフォントサイズを扱うための要素です。

12px を起点に、54px までの12段階を用意しています。

フォントサイズは以下の公式で求めることができます。

X₀ = 12px
Xn = Xn-1 + {INT[(n-2)/4] + 1} * 2
def recurrence(x):
    if x == 1:
        return 12
    else:
        return recurrence(x - 1) + (int((x - 2) / 4) + 1) * 2


for i in range(1, 13):
    px = recurrence(i)
    rem = px / 16.00
    print("x{0}: {1}px ({2}rem)".format(i, px, rem))
TokenValueDescription
fontSizes.1“12px”0.75rem
fontSizes.2“14px”0.875rem
fontSizes.3“16px”1rem
fontSizes.4“18px”1.125rem
fontSizes.5"20px"1.25rem
fontSizes.6"24px"1.5rem
fontSizes.7"28px"1.75rem
fontSizes.8“32px”2rem
fontSizes.9“36px”2.25rem
fontSizes.10“42px”2.625rem
fontSizes.11“48px”3rem
fontSizes.12“54px”3.375rem

fontWeights

fontWeights はフォントウェイトを扱うための要素です。

フォントウエイトにはテキスト用とアイコン用の2種類があります。

TokenValueDescription
fontWeights.text.regular“Regular”400
fontWeights.text.bold“Bold”700
fontWeights.icon.fill0“Fill0”Fill: 0, Weight: 500
fontWeights.icon.fill1“Fill1”Fill: 1, Weight: 500

lineHeights

lineHeights は行高・行間を扱うための要素です。

line-heightに奇数や小数を含む値が適応されてしまうことを防ぐことを目的に、fontSizesを基準にバーティカルグリッドを適用した値を算出して定義します。

//計算式
verticalGridUnit: 4
baseLineHeight: none | small | medium | large
lineHeight: CEIL((fontSize * baseLineHeight) / verticalGridUnit ) * verticalGridUnit

baseLineHeight

none と small から large までの 計4段階を用意しています。

TokenValueDescription
lineHeights.none“1”100%
lineHeights.small“1.25”125%
lineHeights.medium“1.5”150%
lineHeights.large“1.75”175%

letterSpacings

letterSpacings は文字間隔を扱うための要素です。

通常状態の normal と small から large までの 3 段階を用意しています。

TokenValueDescription
letterSpacings.normal“0”0%
letterSpacings.small“0.025em”2.5%
letterSpacings.medium“0.05em”5%
letterSpacings.large“0.1em”10%

Semantics Tokens

Semantics Tokens は 実際にコンポーネントで使用するタイポグラフィを定義するためのトークン階層です。

Semantics Tokens は Primitive Tokens を継承して構築されています。

全てのタイポグラフィは Primitive Tokens で定義した5つの要素を組み合わせて構築されています。

実例

以下のトークンは Text コンポーネント用のタイポグラフィの定義を一部抜粋した物です。

Figma では深いネスト構造にすると目的のタイポグラフィスタイルを参照する際に時間がかかるため、text.3.regular.pro のように 4 階層で定義するのではなく text.3.regular-pro のようにウエイトとファミリーを混合させることで 3階層で定義しています。

TokenFont familyFont weightLine heightFont sizeLetter spacing
text.3.regular-pro"proportional""regular""medium""3"medium
text.3.regular-mono"monospace""regular""medium""3"medium
text.3.bold-pro"proportional""bold""medium""3"medium
text.3.bold-mono"monospace""bold""medium""3"medium

Headingコンポーネントの場合は同じフォントサイズであっても行高を広く取りたいのでLetter spacingを large に設定しています。
このように、目的に応じて参照するトークンだけを変更することでデザインの一貫性や実装時の保守性を保ちながらコンポーネントを定義することができます。

TokenFont familyFont weightLine heightFont sizeLetter spacing
heading.3.regular"proportional""regular""medium""3""large"
heading.3.bold"proportional""bold""medium""3""large"

各種リンク

UD書体 | モリサワのフォントモリサワのフォント UD書体「ユニバーサルデザインと文字」「どのような文字か」「モリサワUD書体について」「UD書体 収録製品」www.morisawa.co.jp
BIZ UDPGothic - Google FontsモリサワのBIZ UDゴシックは、教育やビジネス文書作成などに活用できるよう、より多くの方にとって読みやすく使いやすいように設計されたユニバーサルデザインフォントです。読みやすさとデザインバランスに優れた、すっきりとしたUDゴシック書体で、漢字の省略できるハネやゲタを取ることで、文字をクリアに見せています。大きめな字面fonts.google.com
BIZ UDGothic - Google FontsモリサワのBIZ UDゴシックは、教育やビジネス文書作成などに活用できるよう、より多くの方にとって読みやすく使いやすいように設計されたユニバーサルデザインフォントです。読みやすさとデザインバランスに優れた、すっきりとしたUDゴシック書体で、漢字の省略できるハネやゲタを取ることで、文字をクリアに見せています。大きめな字面fonts.google.com
小さな気づきや違和感があればお気軽に教えてください。
フィードバック
Chat illustration