ブログのタイポグラフィを整理した(DADS を参考に)

  • Astro
  • CSS
  • タイポグラフィ

このサイトはもともと Bear Blog 系の CSS をベースにしていて、本文を 18px20px としつつ見出しを em のモジュラースケールで切っていました。欧文向けのバランスはよくても、本文を日本語にしたときに見出しだけ物理ピクセルが大きくなりすぎる感じがあったので、デジタル庁デザインシステムのタイポグラフィ概要(以下 DADS)の 読み物向け(Standard 系) を参考に、global.css 中心に整理しました。

方針

  • 本文は 16〜17px 付近を基準にし、読み物の行間はこれまで通り 1.7(DADS が本文で挙げる目安と整合しやすい値)を維持。
  • 見出しbody に対する em 連鎖をやめhtmlfont-size: 100% を前提に rem と CSS 変数で段階を固定。
  • 記事タイトルだけは BlogPost.astro 側の h1.article-titleclamp(1.75rem, 2.5vw, 2rem) を当て、ヒーロー級の巨大さを避ける。
  • **記事プローズ内(Markdown)**の h1h6.prose 用に別段階(例: プローズ内 h11.5rem)を定義し、テンプレのタイトルと二重にスケールが爆発しないようにした。
  • リンクは色だけに頼らないよう 下線focus-visible のアウトラインを付与。ヘッダーナビは従来どおり HeaderLink 側で下線なし。
  • code / pre等幅スタックpreline-height: 1.5
  • 引用は本文より無理に大きくしないよう、blockquotefont-size1em に戻した。

フォントは引き続き Atkinson を載せつつ、和文向けに ヒラギノ・游ゴシック・メイリオなどをフォールバックに追加しているだけで、DADS が採用している Noto Sans JP を Web フォントで読み込むところまでは踏み込んでいません。

触ったファイル

場所内容
src/styles/global.cssタイポ用の :root 変数、本文・見出し・.proseacode/preblockquote
src/layouts/BlogPost.astrolang="ja"h1.article-title、タイトル周りの行間、タグの最小フォントなど
src/pages/blog/index.astro一覧の先頭タイトル・タグのサイズ(16px 未満を避ける方向)
src/components/ThemeToggle.astroボタンラベルのフォントサイズ
src/pages/colors.astro極小だったラベルを 14px 相当に

最終的なフォントサイズ(整理後)

基準は html { font-size: 100%; }(通常 16px)とみなしたときの rem → px の目安です。実装は src/styles/global.css と記事レイアウト周りの Astro です。

本文・行間

対象rem目安(px)備考
body(通常幅)1.0625rem17px--text-body
body(幅 720px 以下)1rem16px--text-body-narrow
段落・引用の行間line-height: 1.7--leading-body

サイト全体の見出し(記事タイトル・.prose 以外)

要素rem目安(px)
h12rem32px
h21.5rem24px
h31.25rem20px
h41.125rem18px
h51.0625rem17px
h61rem16px

見出し共通: line-height: 1.45--leading-heading)、letter-spacing: 0.02em--tracking-heading)。

記事ページ(BlogPost.astro + .prose

対象rem など目安(px)備考
記事タイトル h1.article-titleclamp(1.75rem, 2.5vw, 2rem)約 28〜32ビューポートに追従
タイトル周りのタグ .tag1rem16px日付は本文に追従
.prose h11.5rem24pxテンプレタイトルより一段小さく固定
.prose h21.375rem22px
.prose h31.25rem20px
.prose h41.125rem18px
.prose h51.0625rem17px
.prose h61rem16px

インライン/ブロック

対象指定目安
code0.925em親フォントに対して相対(本文 17px 時は約 15.7px)
pre0.9375rem + line-height: 1.515px 前後
blockquotefont-size: 1em本文と同じ段階

記事内のカスタム HTML(トークン名など)で .token-swatch__name を使っている場合は 0.875rem(14px)

ブログ一覧(参考)

対象rem など目安(px)
先頭記事のタイトルclamp(1.375rem, 3vw, 1.875rem)約 22〜30(狭い画面では 1.375rem = 22px に固定)
2件目以降のタイトル通常の h41.125rem → 18px
一覧のタグ1rem16px

ビルド

npm run build で Content Collections と静的生成が通ることを確認しています。


公開 URL: /blog/2026-04-09(本番の site に応じてドメインを付与)。