文字を読ませる

この場面の困り事と、そのまま使えるコード。全17件。 足りなければ、行末のページへ進む。

文字を読ませるの場面で、最初にどこを見るかの順と、避けること
図を大きく見る

このページの中だけを絞ります。ページは移りません。

文字が読みにくい、詰まって見える

行間を1.7〜1.9にする。字間は本文では触らない。詰めるのは見出しだけ。字間と行間

body { line-height: var(--leading-body); }
h1, h2, h3 { line-height: var(--leading-heading); letter-spacing: 0.02em; }

行間をいくつにすればいいか

和文本文は1.7〜1.9、見出しは1.3〜1.5。行が長いほど広げる。字間と行間

:root { --leading-body: 1.9; --leading-heading: 1.35; }
body { line-height: var(--leading-body); }
h1, h2, h3 { line-height: var(--leading-heading); }

1行を何文字にすればいいか

和文は全角35〜45字、欧文は45〜75字。ただし文字数で幅を指定せず、レイアウトで決める。版面と行長

版面幅を変えて1行の字数を確かめる。文字数で幅を指定せず、コンテナで決める。

HTML(見本の骨組み)

<div class="page">
  <p>中央に寄せた本文列。幅を変えると1行に入る字数が変わります。</p>
</div>

--page と --gutter は 出発点のCSS の :root にあります。

コピーする CSS

:root {
  --page: 80rem;
  --gutter: 32px;
}
.page {
  max-inline-size: var(--page);
  margin-inline: auto;
  padding-inline: var(--gutter);
}

本文を何ピクセルにすればいいか

16pxを下限にする。指定はpxではなくremで、利用者のブラウザ設定に追従させる。大きさの体系

html { font-size: 100%; }
body { font-size: var(--text-base); } /* 16px相当 */

見出しの大きさが決まらない

比1.2〜1.25の階段を作り、その中から選ぶ。1ページで使うのは4段まで。大きさの体系

h1 { font-size: var(--text-2xl); }
h2 { font-size: var(--text-lg); }
h3 { font-size: var(--text-base); }

見出しと本文の差がつかない

大きさだけで差をつけようとしている。太さと余白を併せて動かすと、大きさは控えめで足りる。視覚階層

h2 {
  font-size: var(--text-lg);
  font-weight: 700;
  margin-block: var(--space-8) var(--space-3);
  color: var(--color-text);
}

明朝とゴシックのどちらを使うか

長文を静かに読ませるなら明朝、画面のUIとして操作させるならゴシック。混ぜるなら役割で分ける。書体の選び方

body { font-family: "Noto Sans JP", system-ui, sans-serif; }
.prose { font-family: "Noto Serif JP", serif; }

和文と欧文が混ざると欧文だけ沈んで見える

欧文側のx-heightが低い。和文に合う書体に替えるか、欧文だけ級数を上げる。和文組版

欧文だけ級数を上げるか、和文に合う書体に替える。

HTML(見本の骨組み)

<p>和文の中に <span class="latin">Latin 2026</span> が混ざる見本</p>

.latin で欧文だけ包んで指定します。

コピーする CSS

.latin { font-family: Inter, system-ui, sans-serif; font-size: 1.05em; }

英数字が和文の中で窮屈に見える

和文と欧文のあいだに四分アキ(全角の1/4)を入れる。CSSだけでは自動で入らないので、原稿側で半角の空きを入れるか、欧文を要素で包んで margin を付ける。和文組版

和文と欧文のあいだに四分アキ。原稿に半角スペースを入れるか、要素で margin を付ける。

HTML(見本の骨組み)

<p>コード <span class="code">API</span> と数字 <span class="num">2026</span></p>

原稿に半角スペースを入れる方法も有効です。

コピーする CSS

.code, .num { margin-inline: 0.25em; } /* 原稿に半角スペースを入れる */

約物(括弧や句読点)のアキが気持ち悪い

全角の約物は前後に余白を持っている。連続する箇所と行頭の始め括弧だけを詰める。和文組版

palt で約物のアキを詰める。見出しは pkna も併用。

HTML(見本の骨組み)

<h2>約物(「括弧」、句読点。)</h2>
<p>本文でも「引用」と、句読点。</p>

本文は palt、見出しは palt + pkna。

コピーする CSS

body { font-feature-settings: "palt" 1; }
h1, h2 { font-feature-settings: "palt" 1, "pkna" 1; }

Webフォントを使うと表示が遅い

1書体に絞る。preload と font-display: swap を付け、数百KBを超えるならサブセット化する。Webフォントの実装

preload と font-face をセットで入れる。1書体に絞る。

HTML

<link rel="preload" href="/fonts/NotoSansJP.woff2" as="font" type="font/woff2" crossorigin>

CSS

@font-face {
  font-family: "Noto Sans JP";
  src: url("/fonts/NotoSansJP.woff2") format("woff2");
  font-display: swap;
}

読み込み中に文字が出ない時間がある

font-display が block になっている。swap にすると代替書体で先に出る。Webフォントの実装

font-display: swap で代替書体を先に出す。

HTML

<!-- HTML の変更は不要 -->

CSS

@font-face {
  font-family: "Noto Sans JP";
  src: url("/fonts/NotoSansJP.woff2") format("woff2");
  font-display: swap;
}

書体が入れ替わるときガタつく

size-adjust と ascent-override で代替書体の見た目を本番に寄せる。Webフォントの実装

size-adjust で代替書体の見た目を本番に寄せる。

HTML

<!-- HTML の変更は不要 -->

CSS

@font-face {
  font-family: "Noto Sans JP";
  src: url("/fonts/NotoSansJP.woff2") format("woff2");
  size-adjust: 100%;
  ascent-override: 90%;
  font-display: swap;
}

太字がぼやける、細字が読めない

合成太字になっている。太字のファイルを読み込み、font-weight で実在するウェイトを指定する。書体の選び方

合成太字に頼らず、太字ファイルを font-face で読み込む。

HTML

<p>通常 <strong>太字</strong></p>

CSS

@font-face {
  font-family: "Noto Sans JP";
  src: url("/fonts/NotoSansJP-Bold.woff2") format("woff2");
  font-weight: 700;
  font-display: swap;
}
strong, b {
  font-weight: 700;
}

同じ級数なのに、書体を変えたら大きさが変わって見える

x-heightが違う。字面の大きさは font-size と一致しない。書体を替えたら級数も測り直す。文字の骨格

/* 書体を替えたら実寸で測り直す */
body { font-size: var(--text-base); }
.serif { font-family: "Noto Serif JP", serif; font-size: 1.05em; }

文字の高さを揃えたのに揃って見えない

ボックスの上端で揃えている。ベースラインで揃える。文字の骨格

flex の align-items は baseline。box の上端では揃えない。

HTML(見本の骨組み)

<div class="row"><span>12px</span><span>本文</span><span>A</span></div>

align-items: baseline が要点です。

コピーする CSS

.row { display: flex; align-items: baseline; gap: var(--space-2); }

キャッチコピーの改行位置を決めたい

見出しは text-wrap: balance で行の長さが揃う。ここで折りたいと決まっているなら、折りたくない語を要素で包んで display: inline-block にする。和文組版

balance で行長を揃える。折りたくない語は inline-block で包む。

HTML(見本の骨組み)

<h1>今日の<span class="keep">特別な</span>お知らせ</h1>

幅を変えて balance の効きを確かめます。

コピーする CSS

h1 { text-wrap: balance; }
.keep { display: inline-block; } /* 折りたくない語を包む */

この場面の値をまとめて決めるなら作業台へ。和文の予約ページに載せて、幅と明暗を替えて確かめてから CSS を持ち帰る: 字と余白と幅

この場面で貼れるもの#

答えを読んだら、ここから完成形を持ち帰れます。

この資料は、Webサイトを作るときに引くためのものです。 何のために作ったか。作っているのは AK²Lab。