No difference between font size units 'pixels' and 'points'

I noticed when changing the font size of a figure it makes no difference if one chooses pixels or points as units. Is this a known issue or intended?
figure(1)
set(gcf,'Position',[10 10 800 800])
peaks;
fontsize(16,'pixels')
figure(2)
set(gcf,'Position',[10 10 800 800])
peaks;
fontsize(16,'points')
left: figure 1, font size = 16 px; right: figure 2, font size = 16 pt; created using MATLAB Desktop
Interestingly, creating the same figures using the code above in the New Desktop for MATLAB produces 33% bigger font sizes given in points compared to pixels (consistent with the points/pixels size conversion).
left: figure 1, font size = 16 px; right: figure 2, font size = 16 pt; created using New Desktop for MATLAB

5 件のコメント

Epsilon
Epsilon 2024 年 9 月 20 日
Hi Jakob,
I could not reproduce this issue in R2024b. I am getting distinct sizes.
Is there something I am missing ?
Bruno Luong
Bruno Luong 2024 年 9 月 20 日
編集済み: Bruno Luong 2024 年 9 月 20 日
Point is 1/72 inche and Pixels unit is OS dependent according to the documentation
"Pixels.
Starting in R2015b, distances in pixels are independent of your system resolution on Windows and Macintosh systems:
  • On Windows systems, a pixel is 1/96th of an inch.
  • On Macintosh systems, a pixel is 1/72nd of an inch.
On Linux systems, the size of a pixel is determined by your system resolution."
'points'Points. One point equals 1/72nd of an inch.
So On Windows 1 pixel = 72/96 = 0.75 point (test match on my PC), or 1 point = 1.333 pixel.
The code in the question has font larger on the second figure on my PC as well, as expected.
On Mac pixel = 72/72 = 1 point
Jakob Weis
Jakob Weis 2024 年 9 月 20 日
Thanks! That makes sense, I am indeed working on a Mac. Interesting, too, that the New Desktop seems to handle pt/px differently.
Bruno Luong
Bruno Luong 2024 年 9 月 22 日
Perhaps the New Desktop redefines the pixel unit differently. I don't know New Desktop myself.
Jakob Weis
Jakob Weis 2025 年 2 月 7 日
Just to clarify, as of R2025a (featuring the New Desktop by default) pixels seem to be redefined. Running on Mac and using the same screen:
get(0,'ScreenPixelsPerInch')
returns 72 in R2024b and 96 in R2025a prerelease.

サインインしてコメントする。

 採用された回答

DGM
DGM 2024 年 9 月 20 日
編集済み: DGM 2024 年 9 月 20 日

1 投票

I'm not sure how it's doing the scaling internally, but my guess would start here:
% units per em
sz = 16;
% units per inch
pxpin = get(0,'ScreenPixelsPerInch'); % px/in
ptpin = 72; % pt/in
% inches per em
szinpx = sz/pxpin
szinpx = 0.1600
szinpt = sz/ptpin
szinpt = 0.2222
That would tell us that on this system, the rendered sizes should differ, but measuring the exact height of 1 em is a bit of a chore unless you know what text features are 1 em high. Instead, we can just measure the ratio of character heights.
% expected ratio of on-screen sizes
ptpin/pxpin
ans = 0.7200
On my machine, the calculated ratio seems to be quite close to the size ratio I can measure from screenshots.
If your reported display resolution were 72, then the rendered sizes would be the same. It seems that would be expected on a Mac.

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeStartup and Shutdown についてさらに検索

製品

リリース

R2024b

質問済み:

2024 年 9 月 20 日

コメント済み:

2025 年 2 月 7 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by