フォントサイズ単位の比較と換算表【Windows・Android】
フォントサイズには、px・pt・dp・spなど複数の単位があります。しかも同じ「px」でも、WebのCSSピクセル、Windowsの論理ピクセル、ディスプレイ上の物理ピクセルは必ずしも1対1ではありません。
この記事では、WindowsとAndroidを中心に、フォントサイズ単位の違いと換算の考え方を整理します。デザインデータを別のプラットフォームへ移すときや、「12ptは何px?」「Androidでは何spにすればよい?」と迷ったときの参考にしてください。
1. フォントサイズ単位の違い
| 単位 | 主な使用環境 | 特徴 |
|---|---|---|
| px | Web、Windows、Android内部 | ピクセルを表す単位。ただしCSS pxやWindowsの論理ピクセルは、必ずしもディスプレイの物理ピクセルと1対1ではない |
| pt | 印刷、DTP、Windows | 1pt = 1/72インチを基準とする絶対長の単位 |
| dp / dip | Android | 画面密度の違いを吸収するための密度非依存単位。160dpiを基準に1dp = 1pxとなる |
| sp | Androidの文字 | 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換算表
| pt | 96dpi基準のpx |
|---|---|
| 8pt | 約10.67px |
| 9pt | 12px |
| 10pt | 約13.33px |
| 11pt | 約14.67px |
| 12pt | 16px |
| 14pt | 約18.67px |
| 16pt | 約21.33px |
| 18pt | 24px |
| 24pt | 32px |
4. Windowsの表示倍率と物理ピクセルの関係
Windowsでは、ディスプレイの高解像度化に合わせて100%、125%、150%、200%などの表示倍率を使います。
96dpiを100%と考えると、論理上の1pxが物理画素上でどの程度に相当するかの目安は次のとおりです。
| Windows表示倍率 | 代表的なDPI | 1論理pxあたりの物理pxの目安 |
|---|---|---|
| 100% | 96dpi | 1.0px |
| 125% | 120dpi | 1.25px |
| 150% | 144dpi | 1.5px |
| 200% | 192dpi | 2.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の違いを整理
| 単位 | 何を基準にするか | ユーザー設定の影響 | 主な用途 |
|---|---|---|---|
| pt | 1/72インチ | 通常は直接受けない | 印刷、DTP、デスクトップ文字サイズ |
| CSS px | CSSの基準ピクセル | ブラウザやOSの拡大の影響を受ける | Web |
| Windows DIP | 1/96論理インチ | DPIスケーリングの影響を受ける | Windows UI |
| Android dp | 160dpi基準 | 画面密度の影響を補正 | Androidレイアウト |
| Android sp | dp+フォント設定 | フォントサイズ設定を反映 | 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、表示倍率、アクセシビリティ設定、実際の画面での見え方まで確認することが重要です。
コメント
コメントを投稿