Как программно получить информацию о выборе шрифта в Mathematica

Если я оцениваю, например, SystemDialogInput ["Color"] и выберите цвет, скажем красный, в выходной ячейке отображается RGBColor [1,0,0] .

Чтобы просмотреть панель шрифтов, я могу оценить FrontEndTokenExecute ["FontPanel"] . Если у меня где-то выделен текст, я могу изменить стиль шрифта выделенного текста (или ячейки) на системной панели, которая появляется из FrontEndTokenExecute . Мне интересно, есть ли способ программно вернуть выбранные настройки шрифта, аналогичный тому, как SystemDialogInput ["Color"] возвращает выбранный цвет. Например, оцените некоторый код, который включает выбор настроек шрифта на системной панели шрифтов, скажем, вручную выберите полужирный шрифт Arial 12pt на панели шрифтов,

enter image description here

и верните, например,

{FontFamily->"Arial",FontSize->12,FontWeight->Bold}

Просто для ясности, я говорю о том, чтобы делать это без какого-либо выделенного текста или ячеек в записной книжке. Кажется, одна из проблем - по крайней мере, на Mac - шрифт выбирается только в том случае, если вы что-то выделили в блокноте.В документации есть несколько подобных примеров ( ref / CurrentValue ):

Style["xxxx", FontFamily :> CurrentValue["ControlsFontFamily"], 
 FontSize :> CurrentValue["ControlsFontSize"]]

Это говорит о том, что ответ возможен, если существует соответствующий аргумент для CurrentValue , но «ControlsFontFamily» и « PanelFontFamily "не являются правильными аргументами в этом случае.

Также можно программно перечислить все шрифты, доступные на определенном компьютере?

Edit

@kguler предоставил ответ на последнее предложение и вторую часть моего вопроса - это может быть использовано для создания моего собственная панель шрифтов. Я запустил код @ Heike и получил это (снимок экрана) на Mac OS X 10.6.8 с Mma 8.0.4. Обратите внимание на затенение PropertyValue с помощью ref / PropertyValue .

enter image description here enter image description here

16
задан Mike Honeychurch 14 January 2012 в 23:42
поделиться