フォントサイズ単位の比較と換算表【Windows・Android】

フォントサイズには、px・pt・dp・spなど複数の単位があります。しかも同じ「px」でも、WebのCSSピクセル、Windowsの論理ピクセル、ディスプレイ上の物理ピクセルは必ずしも1対1ではありません。

この記事では、WindowsとAndroidを中心に、フォントサイズ単位の違いと換算の考え方を整理します。デザインデータを別のプラットフォームへ移すときや、「12ptは何px?」「Androidでは何spにすればよい?」と迷ったときの参考にしてください。

1. フォントサイズ単位の違い

単位主な使用環境特徴
pxWeb、Windows、Android内部ピクセルを表す単位。ただしCSS pxやWindowsの論理ピクセルは、必ずしもディスプレイの物理ピクセルと1対1ではない
pt印刷、DTP、Windows1pt = 1/72インチを基準とする絶対長の単位
dp / dipAndroid画面密度の違いを吸収するための密度非依存単位。160dpiを基準に1dp = 1pxとなる
spAndroidの文字dpと同様に密度を考慮し、さらにユーザーのフォントサイズ設定を反映する文字用単位

2. 「px=物理ピクセル」ではない

フォントサイズを考えるうえで、最も混乱しやすいのがpxです。

ディスプレイには実際の画素である物理ピクセルがありますが、WindowsやWebでは、アプリやブラウザが扱う論理的な座標単位が別に存在します。

Windowsでは長年、1論理インチ = 96ピクセルを基準としてきました。Microsoftの説明では、この基準では72ptの文字が96論理ピクセル、12ptの文字が16論理ピクセルに相当します。

つまり、Windowsで「16px」と指定したからといって、常にディスプレイ上の16個の物理ピクセルだけで表示されるとは限りません。表示倍率やDPIによって、1つの論理ピクセルを複数の物理ピクセルで描画する場合があります。

3. Windowsでのptとpxの基本換算

Windowsの標準的な論理DPIである96dpiを基準にすると、次の関係になります。

  • 1インチ = 72pt
  • 1論理インチ = 96px
  • 1pt = 96 ÷ 72 = 約1.333px
  • 1px = 72 ÷ 96 = 0.75pt

したがって、たとえば12ptは16px、9ptは12pxに相当します。

Windows・Webで使いやすいpt→px換算表

pt96dpi基準のpx
8pt約10.67px
9pt12px
10pt約13.33px
11pt約14.67px
12pt16px
14pt約18.67px
16pt約21.33px
18pt24px
24pt32px

4. Windowsの表示倍率と物理ピクセルの関係

Windowsでは、ディスプレイの高解像度化に合わせて100%、125%、150%、200%などの表示倍率を使います。

96dpiを100%と考えると、論理上の1pxが物理画素上でどの程度に相当するかの目安は次のとおりです。

Windows表示倍率代表的なDPI1論理pxあたりの物理pxの目安
100%96dpi1.0px
125%120dpi1.25px
150%144dpi1.5px
200%192dpi2.0px

Microsoftが示す基本式は、物理ピクセル = DIP × DPI ÷ 96です。そのため、同じ論理サイズでも、高DPI環境ではより多くの物理ピクセルを使って描画されます。

5. WebのCSSでも1in = 96pxが基準

WebのCSSでも、絶対長の単位には基準となる関係があります。

  • 1in = 96px
  • 1in = 72pt
  • 1pt = 約1.333px

そのため、CSS上でも12ptは16pxに相当します。

ただし、CSSの「1インチ」が実際の定規で測った1インチと常に一致するわけではありません。画面上ではCSSピクセルを基準に表示されるため、ディスプレイの密度や表示倍率によって物理的な大きさは変わります。

6. Androidのdpとは?

Androidでは、レイアウトの大きさを指定するときにdp(density-independent pixel)を使うのが基本です。

dpは画面密度の違いを吸収するための単位で、160dpiのmdpi環境では1dp = 1pxです。

たとえば320dpiの画面では、同じ1dpを表現するために約2物理ピクセルが使われます。端末ごとの解像度が違っても、画面上の見た目の大きさを揃えやすくするための仕組みです。

7. Androidの文字サイズにはspを使う

Androidで文字サイズを指定するときは、原則としてsp(scaled pixel)を使います。

spはdpと同様に画面密度を考慮しますが、それに加えてユーザーがAndroidの設定で指定したフォントサイズも反映します。

そのため、レイアウト幅や余白にはdp、文字サイズにはspを使うのが基本です。

  • dp:ボタン、余白、幅、高さなど
  • sp:本文、見出し、ラベルなどの文字

8. Androidでは「1pt = 2.22sp」と固定換算しない

以前は、160dpiを基準に「1pt = 160 ÷ 72 = 約2.22px」と計算し、そのままdpやspへ換算する説明が見られました。

しかし、これは物理的な72分の1インチを160dpiの画面へ単純換算した数字にすぎません。

Androidのspは、ユーザーのフォントサイズ設定を反映するアクセシビリティ対応の単位です。そのため「12ptなら必ず26.7sp」といった固定換算は、Android UI設計では適切ではありません。

Windowsや印刷データのpt値をAndroidへ移す場合は、数式で機械的に変換するより、Androidのタイポグラフィ設計に合わせて14sp、16sp、18spなどの実用的な文字サイズへ調整する方が安全です。

9. Android 14以降はフォント拡大が非線形

Android 14以降では、アクセシビリティ向上のため、フォントサイズを最大200%まで拡大できるようになり、さらに非線形フォントスケーリングが採用されています。

これは、すべての文字サイズを単純に同じ倍率で拡大するのではなく、大きな見出しと小さな本文のバランスを保ちながら拡大する仕組みです。

そのため、Androidでは「fontScale × sp」のような単純な計算だけで最終表示サイズを求めるべきではありません。GoogleのAPIリファレンスでも、fontScaleを使ってフォントサイズの式をハードコードしないよう案内されています。

10. pt・px・dp・spの違いを整理

単位何を基準にするかユーザー設定の影響主な用途
pt1/72インチ通常は直接受けない印刷、DTP、デスクトップ文字サイズ
CSS pxCSSの基準ピクセルブラウザやOSの拡大の影響を受けるWeb
Windows DIP1/96論理インチDPIスケーリングの影響を受けるWindows UI
Android dp160dpi基準画面密度の影響を補正Androidレイアウト
Android spdp+フォント設定フォントサイズ設定を反映Android文字

11. WindowsからAndroidへフォントサイズを移すときの考え方

Windowsで使っているptやpxをAndroidへ移植するときは、数字を直接1対1で合わせるより、見た目の階層を合わせることが重要です。

たとえばWindowsで12ptの本文を使っているからといって、Androidで26.7spにする必要はありません。Androidでは本文、補助テキスト、見出しなど、それぞれの役割に合ったsp値を選びます。

つまり、単位換算は初期の目安、最終判断は各プラットフォーム上の実機表示と考えるのがおすすめです。

まとめ

  • ptは1/72インチを基準とする単位
  • Windowsの標準的な論理DPIでは1pt ≒ 1.333px
  • Windowsでは12pt = 16論理pxが基本的な換算
  • Windowsの論理pxと物理ピクセルは、表示倍率によって1対1にならない場合がある
  • Androidではレイアウトにdp、文字サイズにspを使う
  • Androidのspはユーザーのフォント設定を反映するため、ptから固定値へ単純換算しない
  • Android 14以降では非線形フォントスケーリングが採用されている

Windows・Web・Androidでは、似たような数値でも単位の意味が異なります。フォントサイズを他の環境へ移すときは、換算式だけでなく、DPI、表示倍率、アクセシビリティ設定、実際の画面での見え方まで確認することが重要です。

参考資料

コメント

このブログの人気の投稿

初心者でもわかるMFCとVC++の基本:Visual Studio開発入門

プロジェクト参画初日の効率的な情報整理と2週間でキャッチアップするための方法