В macOS Sierra JavaScript for Automation мы можем написать:
// helvetica12Width :: String -> Num
function helvetica12Width(str) {
return $.NSAttributedString.alloc.init.initWithString(
str
)
.size.width;
}
чтобы получить метрики для конкретной строки в Helvetica 12 по умолчанию. Чего мне еще не удалось сделать, так это передать атрибуты для других шрифтов и размеров шрифтов и получить для них соответствующие метрики.
Кто-нибудь обнаружил идиому/синтаксис, который работает здесь из JXA или AppleScript?
Обновление: это то, с чем я экспериментировал, но явно не по адресу, поскольку изменение значений размера/имени шрифта не влияет на возвращаемое значение:
(() => {
'use strict';
ObjC.import('AppKit');
return $.NSAttributedString.alloc.init.initWithStringAttributes(
"Substantiation", {
'NSFontAttributeName': $.NSFont.fontWithNameSize('Helvetica', 24)
}
)
.size.width
})();