Mathematica 12.1がImageDimensionsで異なる結果を返す理由
コンピュータモニタに表示されるコンテンツは,多くの場合,例えばテキストに12ポイントのフォントのように「ポイント」で指定されますが,オペレーティングシステムやモニタによって,与えられたポイントを構成する画素数の標準が異なります.
Mathematicaフロントエンドはバージョン12.0まで,どのモニタやオペレーティングシステムでも1ポイントが1画素に等しいと想定していました.このことで,他のソフトウェアと比べてMathematicaのフォントや画像の表示方法に一貫性がありませんでした.特に高画素密度(HiDPI)のモニタでは,Mathematicaの「12ポイント」のフォントが実際には12画素のフォントであるため,Mathematicaではずっと小さく見えてしまっていたのです.
Mathematicaは,バージョン12.1からポイントと画素を同じものとして扱わなくなったため,オペレーティングシステムやモニタの種類に関係なく,調整をしなくても一貫性がある表示をするようになりました.
例えば,オプションImageSize → 100
のグラフィックス式はすべてのモニタ上で常に100ポイントで表示されるようになっています.これはディスプレイによって200画素であったり100画素であったりします.
関数ImageDimensions
は画像の中のポイント数ではなく実際の画素数を返します.したがって,ImageDimensions
に依存するコードは,Mathematicaバージョン12.1ではこれまでのバージョンとは異なる結果を返すことがあるのです.
Wolfram言語には,ポイントと画素のどちらが使われているかにかかわらず,ユーザが画像の中の位置を指定することができる多様なツールが含まれています.例えば,関数Scaled
では画像に合わせてスケールされる座標系が使われます.Scaled[{1/2,1/2}]
は画像の中心を,Scaled[{1,1}]
は画像の右角を表します.
グラフィックスおよび画像で利用できる座標系についての詳細はこちらのドキュメントでご覧ください.
[English]