Inconsistent "New York" font returned between devices

I'm seeing a discrepancy in the metrics of the "New York" system font returned from various Macs. Here's a sample (works well in Playgrounds):

import Cocoa

let font = NSFont(descriptor: .preferredFontDescriptor(forTextStyle: .body).withDesign(.serif)!, size: NSFont.systemFontSize)!

print("\(font.fontName) \(font.pointSize)")
print("ascender: \(font.ascender)")

let layoutManager = NSLayoutManager()
print("lineHeight: \(layoutManager.defaultLineHeight(for: font))")

When I run this on multiple Macs, I get two types of different results. Some – most Macs – report this:

.NewYork-Regular 13.0
ascender: 12.3779296875
lineHeight: 16.0

However, when I run on my own Mac (and also on the one of a colleague), I get this instead:

.NewYork-Regular 13.0
ascender: 14.034145955454255
lineHeight: 19.0

It's clearly the same font in the same point size. Yet the font has different metrics, causing a layout manager to also compute a significantly different line height.

So far I've found out that neither CPU generation/architecture nor macOS version seem to play a role. This issue has been reproducible since at least macOS 14. Having just migrated to a new Mac, the issue is still present.

This does not affect any other system or commonly installed font. It's only New York (aka the serif design).

So I assume this must be something with my setup. Yet I have been unable to find anything that may cause this. Anybody have some ideas? Happy to file a bug report but wanted to check here first.

Answered by max1 in 816294022

To put the solution here for the future: this is intended behavior and caused by the systems Preferred Languages list. In my case, I had Thai in there (for testing). Apparently the system increases line height to avoid line jumping when mixing scripts. Thanks to Jiang Jiang for helping me out: https://mastodon.social/@jjgod/113571613240597707.

I also learned this affects all system fonts when querying them through .preferredFontDescriptor(forTextStyle:). However it does not affect .systemFont(ofSize:) and friends. Which is what led me into thinking it was just New York – but it’s every font.

I've been able to confirm this is not linked to my user account, as new users show the same behavior. I've reported this as FB15887762. Should somebody be reading this: thanks!

Accepted Answer

To put the solution here for the future: this is intended behavior and caused by the systems Preferred Languages list. In my case, I had Thai in there (for testing). Apparently the system increases line height to avoid line jumping when mixing scripts. Thanks to Jiang Jiang for helping me out: https://mastodon.social/@jjgod/113571613240597707.

I also learned this affects all system fonts when querying them through .preferredFontDescriptor(forTextStyle:). However it does not affect .systemFont(ofSize:) and friends. Which is what led me into thinking it was just New York – but it’s every font.

Inconsistent "New York" font returned between devices
 
 
Q