PT / PX / MM

pt
論理dpipxptmm
Mac(非Retina)72dpi---
Windows(拡大率100%)96dpi---
Windows(拡大率125%)120dpi---
Windows(拡大率150%)
Mac(Retina)
iPhone(4/5/SE/6/XR)
144dpi---
iPhone(X/XS/11)216dpi---
dpi000

DP / PX / MM

dp
論理dpipxdpmm
ldpi(低密度)120dpi---
mdpi(中密度)160dpi---
tvdpi(テレビ用)213dpi---
hdpi(高密度)240dpi---
xhdpi(超高密度)320dpi---
xxhdpi(超超高密度)480dpi---
xxxhdpi(超超超高密度)640dpi---
dpi000

サイズの変換(px・pt・dp・mm)

サイズの単位であるpx(ピクセル)、pt(ポイント)、dp / dip(密度非依存ピクセル)、mm(ミリメートル)を解像度(dpi)ごとに変換するツールと変換の計算式です。

  • px・pt・dp (dip)・mmをdpi別に変換するツールです。
  • 小数点第三位で四捨五入します。
  • mmは印刷時のサイズであり、ディスプレイ上のサイズではありません。

変換計算式

pt(ポイント)

px=pt×dpi72px={\dfrac {pt \times dpi}{72}} pt=px×72dpipt={\dfrac {px \times 72}{dpi}}

pt(ポイント)は主に出版物で使用されるサイズの単位で、「1pt = 1/72インチ」と定義されている。ptの定義は数種類あるが、本稿ではもっとも一般的なDTPポイントを指してptと呼んでいる。

dp(密度非依存ピクセル)

px=dp×dpi160px={\dfrac {dp \times dpi}{160}} dp=px×160dpidp={\dfrac {px \times 160}{dpi}}

dp(density-independent pixel / dip / 密度非依存ピクセル)はAndroid開発で使用するサイズの単位。Androidで使用する画面は密度が様々なので、どの密度でもだいたい同じくらいのサイズを表せるように作られた(1平方インチあたり160pxのデバイスもあれば、480pxのデバイスもある)。

1dpはmdpi(160dpi)での1pxとほぼ等しいものとして定義されている。なのでmdpiでは1dp=1pxとなり、2倍のxhdpi(320dpi)では1dp=2pxになる。

mm(ミリメートル)

px=mm×dpi25.4px={\dfrac {mm \times dpi}{25.4}} mm=px×25.4dpimm={\dfrac {px \times 25.4}{dpi}}

1インチ = 25.4mmと国際インチによって定められている。

おなじみの単位だがコンピューター上で使うことはあまりなく、せいぜい印刷時の目安にするくらいか。ディスプレイ上では解像度次第で物理的なサイズが変わるためmmでは表現できない。

解像度(dpi)とは?

解像度はややこしい。Wikipediaによれば「1インチ幅あたりのドット数」のことで単位は「dpi(dots per inch)」とある。例えば96dpiなら1インチに96ドット(px) ということになる。なるほど、1ドットの物理的な大きさはディスプレイによって違うというわけだ。

ところが日常で解像度の話になると、Full HD(1920×1080)とか4K(4000×2000前後)とかっていう表現が出てくる。これはディスプレイ全体で横に何ドット、縦に何ドットあるかを表しているのだが――おい、dpiはどこにいった? 私のdpiを返せ。

どうやら解像度は二つの意味が混同して使われているようだ。

ここでは区別のため、前者のdpiを「画素密度」、後者の1920×1080みたいなやつを「画素数」と呼ぶことにする。がんばって探したが正式な言葉は見つからなかった。

  • 画素密度:1インチ幅あたりのドット数で単位はdpi。この値が大きいほどドットがギチギチ、高画質。
  • 画素数:ディスプレイ全体のドット数。これだけでは物理的なサイズも画質もわからない。例えば同じ1920×1080でもスマホとテレビではdpiが全然ちがう。

ちなみにディスプレイのdpiは以下の式で計算できる。

dpi=w2+h2inchdpi={\dfrac {{\sqrt {w^2+h^2}}}{inch}}

ww = 横のドット数
hh = 縦のドット数
inchinch = ディスプレイの対角インチ

これで解像度を理解した――そう思ったのなら甘い、甘すぎるぜ。

一般的にWindowsは96dpi、Macは72dpiになっている。

なるほど、わけがわからん。ディスプレイの話でなぜOSが出てくる?

どうやら画素密度と画素数はそれぞれ二種類あるようだ。

  • 物理的な画素密度/画素数:上述のもの。ディスプレイの物理的なスペック。
  • 論理的な画素密度:OSが仮定しているディスプレイの画素密度。ディスプレイの画素密度を仮定しないとソフトは動けないらしい。ちなみにWindowsは96dpi、Mac(非Retina)は72dpiが基本設定になっており、Androidで混乱しがちなhdpiやらもOSの画素密度を指している。
  • 論理的な画素数:基本的にはディスプレイの画素数と同値だが、設定で実際のディスプレイより小さくすることもできる。その場合は変更後の画素数のつもりで描画する。

ptやdpの変換においては「論理的な画素密度」が必要になる。

例)pt(ポイント)の場合

  • ptは印刷目的の単位なので、1pt=1/72インチ(1インチ=25.4mm)という物理的な長さにもとづいた定義になっている。
  • しかしOSは上述の通り仮定のdpiで動いているので、1インチが何pxになるかはその仮定次第で変わる。同じディスプレイでもMacのように72dpiの場合は1pt=1px、Windowsのように96dpiの場合は1pt≒1.33pxとなる。
  • なので同じディスプレイで1ptを表示したらWindowsの方がすこし大きい。しかしこれはあくまでディスプレイ上の話なので、印刷すればどちらも同じ1pt=1/72インチになる。

ややこしいのう。