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