タイポグラフィ
フォントファミリー、フォントサイズ、行間など、タイポグラフィに関するデザイントークンについて解説します。
FF: font-family
font-family 用のトークンです。
| トークン | 変数 | クラス |
|---|---|---|
base | --ff--base | -ff:base |
accent | --ff--accent | -ff:accent |
mono | --ff--mono | -ff:mono |
base: English text, 漢字ひらがな
accent: English text, 漢字ひらがな
mono: English text, 漢字ひらがな
<p class="-ff:base -fz:xl">Lorem ipsum ...</p><p class="-ff:accent -fz:xl">Lorem ipsum ...</p><p class="-ff:mono -fz:xl">Lorem ipsum ...</p>このサイトでは本文の --ff--base を変更しているため、このプレビューは既定値そのままの表示ではありません。
FW : font-weight
font-weight 用のトークンです。
| トークン | 変数 | クラス | 初期値 |
|---|---|---|---|
light | --fw--light | -fw:light | 300 |
normal | --fw--normal | -fw:normal | 400 |
bold | --fw--bold | -fw:bold | 600 |
また、-fw:100 ~ -fw:900 の数値ユーティリティクラスも用意しており、細かいウェイト指定が可能です。
Lorem ipsum dolor sit amet. Consectetur adipiscing elit, sed do eiusmod tempor Incididunt ut.
Lorem ipsum dolor sit amet. Consectetur adipiscing elit, sed do eiusmod tempor Incididunt ut.
Lorem ipsum dolor sit amet. Consectetur adipiscing elit, sed do eiusmod tempor Incididunt ut.
<p class="-fw:light">Lorem ipsum ...</p><p class="-fw:normal">Lorem ipsum ...</p><p class="-fw:bold">Lorem ipsum ...</p><Text fw="light">Lorem ipsum ...</Text><Text fw="normal">Lorem ipsum ...</Text><Text fw="bold">Lorem ipsum ...</Text>FZ: font-size
font-size 用のトークンです。
| トークン | 変数 | クラス | 初期値 |
|---|---|---|---|
base | --fz--base | -fz:base | 1rem |
2xs | --fz--2xs | -fz:2xs | 1em * 8 / 11 |
xs | --fz--xs | -fz:xs | 1em * 8 / 10 |
s | --fz--s | -fz:s | 1em * 8 / 9 |
m | --fz--m | -fz:m | 1em |
l | --fz--l | -fz:l | 1em * 8 / 7 |
xl | --fz--xl | -fz:xl | 1em * 8 / 6 |
2xl | --fz--2xl | -fz:2xl | 1em * 8 / 5 |
3xl | --fz--3xl | -fz:3xl | 1em * 8 / 4 |
4xl | --fz--4xl | -fz:4xl | 1em * 8 / 3 |
5xl | --fz--5xl | -fz:5xl | 1em * 8 / 2 |
2xsロレム・イプサムの座り雨。目まぐるしい文章の流れの中で、それは静かに歩く仮の言葉です。
xsロレム・イプサムの座り雨。目まぐるしい文章の流れの中で、それは静かに歩く仮の言葉です。
sロレム・イプサムの座り雨。目まぐるしい文章の流れの中で、それは静かに歩く仮の言葉です。
baseロレム・イプサムの座り雨。目まぐるしい文章の流れの中で、それは静かに歩く仮の言葉です。
lロレム・イプサムの座り雨。目まぐるしい文章の流れの中で、それは静かに歩く仮の言葉です。
xlロレム・イプサムの座り雨。目まぐるしい文章の流れの中で、それは静かに歩く仮の言葉です。
2xlロレム・イプサムの座り雨。目まぐるしい文章の流れの中で、それは静かに歩く仮の言葉です。
3xlロレム・イプサムの座り雨。目まぐるしい文章の流れの中で、それは静かに歩く仮の言葉です。
4xlロレム・イプサムの座り雨。目まぐるしい文章の流れの中で、それは静かに歩く仮の言葉です。
5xlロレム・イプサムの座り雨。目まぐるしい文章の流れの中で、それは静かに歩く仮の言葉です。
<p class="-fz:2xs">Lorem ipsum ...</p><p class="-fz:xs">Lorem ipsum ...</p><p class="-fz:s">Lorem ipsum ...</p><p class="-fz:m">Lorem ipsum ...</p><p class="-fz:base">Lorem ipsum ...</p><p class="-fz:l">Lorem ipsum ...</p><p class="-fz:xl">Lorem ipsum ...</p><p class="-fz:2xl">Lorem ipsum ...</p><p class="-fz:3xl">Lorem ipsum ...</p><p class="-fz:4xl">Lorem ipsum ...</p>フォントサイズのスケーリング規則について
Lism では、フォントサイズのスケーリングには数学的・音楽的に美しいとされる調和数列に基づいて定義しています。
参考資料: タイポグラフィと余白のスケーリング設計について
いわゆるハーモニックモジュラースケーリングとか呼ばれるもので、Every Layoutなどでもこのスケーリング手法が紹介されています。
Lism CSS では、デフォルトでは、分子8の調和数列ベースに設定しています。
当サイトの英語ページでは --fz-mol を 7 に設定しています。
:root { --fz-mol: 8; --fz--5xl: calc(1em * var(--fz-mol) / (var(--fz-mol) - 6)); --fz--4xl: calc(1em * var(--fz-mol) / (var(--fz-mol) - 5)); --fz--3xl: calc(1em * var(--fz-mol) / (var(--fz-mol) - 4)); --fz--2xl: calc(1em * var(--fz-mol) / (var(--fz-mol) - 3)); --fz--xl: calc(1em * var(--fz-mol) / (var(--fz-mol) - 2)); --fz--l: calc(1em * var(--fz-mol) / (var(--fz-mol) - 1)); --fz--m: 1em; --fz--s: calc(1em * var(--fz-mol) / (var(--fz-mol) + 1)); --fz--xs: calc(1em * var(--fz-mol) / (var(--fz-mol) + 2)); --fz--2xs: calc(1em * var(--fz-mol) / (var(--fz-mol) + 3));}HL: half-leading
Lism CSSでは、全要素に対して line-height をハーフレディング(行の上下それぞれの余白)の値で管理する独自の仕組みを採用しており、--hl 変数にセットした値から line-height が算出されます。
--hl にセットする値として、次のトークンを用意しています。
| トークン | 変数 | クラス | 初期値 |
|---|---|---|---|
xs | --hl--xs | -hl:xs | var(--hl-unit) |
s | --hl--s | -hl:s | calc(var(--hl-unit) * 2) |
base | --hl--base | -hl:base | calc(var(--hl-unit) * 3) |
l | --hl--l | -hl:l | calc(var(--hl-unit) * 4) |
xl | --hl--xl | -hl:xl | calc(var(--hl-unit) * 5) |
--hl-unit はデフォルトで 0.125rem(≒ 2px)です。
0: Lorem ipsum dolor sit amet. Consectetur adipiscing elit, sed do eiusmod tempor Incididunt ut. Labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut.
xs: Lorem ipsum dolor sit amet. Consectetur adipiscing elit, sed do eiusmod tempor Incididunt ut. Labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut.
s: Lorem ipsum dolor sit amet. Consectetur adipiscing elit, sed do eiusmod tempor Incididunt ut. Labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut.
base: Lorem ipsum dolor sit amet. Consectetur adipiscing elit, sed do eiusmod tempor Incididunt ut. Labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut.
l: Lorem ipsum dolor sit amet. Consectetur adipiscing elit, sed do eiusmod tempor Incididunt ut. Labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut.
xl: Lorem ipsum dolor sit amet. Consectetur adipiscing elit, sed do eiusmod tempor Incididunt ut. Labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut.
<p class="-hl:xs">Lorem ipsum ...</p><p class="-hl:s">Lorem ipsum ...</p><p class="-hl:base">Lorem ipsum ...</p><p class="-hl:l">Lorem ipsum ...</p><p class="-hl:xl">Lorem ipsum ...</p><Text hl="xs">Lorem ipsum ...</Text><Text hl="s">Lorem ipsum ...</Text><Text hl="base">Lorem ipsum ...</Text><Text hl="l">Lorem ipsum ...</Text><Text hl="xl">Lorem ipsum ...</Text>この設計の背景は ハーフレディング(line-height) を参照してください。
Lism CSS が line-height をハーフレディングで管理する仕組みと、その設計のメリットについて解説します。
LH: line-height
line-height を倍率で指定する --lh 用のトークンです。フォントサイズに比例した行送りを保ちたい場合に使います。
| トークン | 変数 | クラス | 初期値 |
|---|---|---|---|
xs | --lh--xs | -lh:xs | 1.25 |
s | --lh--s | -lh:s | 1.5 |
m | --lh--m | -lh:m | 1.75 |
l | --lh--l | -lh:l | 2 |
xl | --lh--xl | -lh:xl | 2.25 |
各値は、基準フォントサイズ(1rem)におけるデフォルトの hl スケールと一致します。
1: Lorem ipsum dolor sit amet. Consectetur adipiscing elit, sed do eiusmod tempor Incididunt ut. Labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut.
xs: Lorem ipsum dolor sit amet. Consectetur adipiscing elit, sed do eiusmod tempor Incididunt ut. Labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut.
s: Lorem ipsum dolor sit amet. Consectetur adipiscing elit, sed do eiusmod tempor Incididunt ut. Labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut.
m: Lorem ipsum dolor sit amet. Consectetur adipiscing elit, sed do eiusmod tempor Incididunt ut. Labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut.
l: Lorem ipsum dolor sit amet. Consectetur adipiscing elit, sed do eiusmod tempor Incididunt ut. Labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut.
xl: Lorem ipsum dolor sit amet. Consectetur adipiscing elit, sed do eiusmod tempor Incididunt ut. Labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut.
<p class="-lh:xs">Lorem ipsum ...</p><p class="-lh:s">Lorem ipsum ...</p><p class="-lh:m">Lorem ipsum ...</p><p class="-lh:l">Lorem ipsum ...</p><p class="-lh:xl">Lorem ipsum ...</p><Text lh="xs">Lorem ipsum ...</Text><Text lh="s">Lorem ipsum ...</Text><Text lh="m">Lorem ipsum ...</Text><Text lh="l">Lorem ipsum ...</Text><Text lh="xl">Lorem ipsum ...</Text>hl との棲み分けは ハーフレディング(line-height) を参照してください。
LTS: letter-spacing
letter-spacing 用のトークンです。
| トークン | 変数 | クラス | 初期値 |
|---|---|---|---|
base | --lts--base | -lts:base | 0em |
xs | --lts--xs | -lts:xs | calc(var(--lts--base) - 0.05em) |
s | --lts--s | -lts:s | calc(var(--lts--base) - 0.025em) |
l | --lts--l | -lts:l | calc(var(--lts--base) + 0.05em) |
xl | --lts--xl | -lts:xl | calc(var(--lts--base) + 0.1em) |
--lts--base は長さで指定します(calc() で使うため normal は不可)。xs 〜 xl は --lts--base からの相対値なので、:root で --lts--base を変えると全体が連動します。子孫要素で --lts--base を上書きしても xs 〜 xl には反映されません。
xsロレム・イプサムの座り雨。目まぐるしい文章の流れの中で、それは静かに歩く仮の言葉です。
sロレム・イプサムの座り雨。目まぐるしい文章の流れの中で、それは静かに歩く仮の言葉です。
baseロレム・イプサムの座り雨。目まぐるしい文章の流れの中で、それは静かに歩く仮の言葉です。
lロレム・イプサムの座り雨。目まぐるしい文章の流れの中で、それは静かに歩く仮の言葉です。
xlロレム・イプサムの座り雨。目まぐるしい文章の流れの中で、それは静かに歩く仮の言葉です。
<p class="-lts:s">Lorem ipsum ...</p><p class="-lts:base">Lorem ipsum ...</p><p class="-lts:l">Lorem ipsum ...</p><Text lts="s">Lorem ipsum ...</Text><Text lts="base">Lorem ipsum ...</Text><Text lts="l">Lorem ipsum ...</Text>このサイトでは本文の --ff--base と --lts--base を少し調整しているため、このプレビューは既定値そのままの表示ではありません。