- 端数は四捨五入しています。
- mm(ミリメートル)は印刷時のサイズです。ディスプレイ上でのサイズではありません。
変換計算式
pxとptの変換(ピクセル・ポイント)
pt(ポイント)は主に出版で使用されるサイズの単位。ポイントの定義は数種類あるが、本稿で扱っているのはもっとも一般的なDTPポイントというもの。これは「1pt = 1/72インチ」と定義されている。
pxとdpの変換(ピクセル・密度非依存ピクセル)
dp(density-independent pixel)はdip(dpiではない)とも呼ばれ、Android開発で使用するサイズの単位。Androidで使用する画面は密度が様々(1平方インチあたり160pxのデバイスもあれば、480pxのデバイスもある)なので、どの密度でもだいたい同じくらいのサイズを表せるように作られた。
1dpはmdpi(160dpi)での1pxとほぼ等しいものとして定義されている。なのでmdpiでは1dp=1pxとなり、2倍のxhdpi(320dpi)では1dp=2pxになる。
pxとmmの変換(ピクセル・ミリメートル)
1インチ = 25.4mm。国際インチによって正確に定められている。
解像度(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は以下の式で計算できる。
= 横のドット数
= 縦のドット数
= ディスプレイの対角インチ
これで解像度を理解した――そう思ったのなら甘い、甘すぎるぜ。
一般的に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インチになる。
めんどくさいのう。