我很久以前在 MathGroup 中找到了这个(但现在我在那儿找不到确切的链接)。
fontlist = FE`Evaluate[FEPrivate`GetPopupList["MenuListFonts"]]
fontlist /. Rule[x_, y_] -> Style[x, 20, FontFamily -> y]
编辑:来源是 Wolfram 的 John Fultz。这是 MathGroup 链接:V7 FrontEndTokens
编辑 2:在 Windows 上,如果您没有突出显示的选择,则默认值似乎是执行命令 FrontEndExecute[FrontEndToken["FontPanel"]] 后光标移动的任何位置。默认情况下,它是下一个单元格。您在对话框返回后键入的第一个键盘条目将使用您在字体对话框中选择的字体进行样式设置。所以,如果你执行
SelectionMove[InputNotebook[], After, Notebook];
FrontEndExecute[FrontEndToken["FontPanel"]]
并开始输入您的字体对话框设置将应用。但是,在键盘输入之前的任何鼠标移动都会破坏字体设置。
编辑 3:使用 Silvia 关于使用隐形笔记本的想法,而是写入当前笔记本中的新单元格也可以。步骤:将选择移动到一个新的已关闭的单元格,写一些东西,调用字体面板,捕获单元格的字体选项,删除单元格,并返回捕获的字体选项:
fontPanelReturn[] := {SelectionMove[EvaluationNotebook[], After, Notebook];
NotebookWrite[EvaluationNotebook[], Cell["text", ShowCellBracket -> False,
CellOpen -> False, Magnification -> 0]];
SelectionMove[EvaluationNotebook[], Before, CellContents];
SelectionMove[EvaluationNotebook[], All, Word];
FrontEndExecute[FrontEndToken["FontPanel"]];
fontops =
AbsoluteOptions[
NotebookSelection[EvaluationNotebook[]], {FontColor, FontFamily,
FontProperties, FontSize, FontSlant, FontTracking,
FontVariations, FontWeight, Background}];
NotebookDelete[EvaluationNotebook[]];
SelectionMove[EvaluationNotebook[], Next, Cell]; fontops}
用作
fontPanelReturn[]
给予,(例如)
{{Background -> None, FontColor -> Automatic,
FontFamily -> "Trebuchet MS",
FontProperties -> {"FontMonospaced" -> Automatic,
"FontSerifed" -> Automatic, "ScreenResolution" -> 72},
FontSize -> 24, FontSlant -> "Italic", FontTracking -> "Plain",
FontVariations -> {"CapsType" -> Normal,
"CompatibilityType" -> Normal, "Masked" -> False,
"Outline" -> False, "RotationAngle" -> 0, "Shadow" -> False,
"StrikeThrough" -> False, "Underline" -> False},
FontWeight -> "Bold"}}
编辑 4:如果更改 Silvia 的代码,以便在调用字体面板对话框之前选择单元格,然后捕获单元格的字体选项(而不是笔记本的),则会得到相同的结果:
inputFontSettings[] :=
Module[{doc, opt},
doc = CreateDocument[TextCell["text"], WindowSelected -> False, Visible -> False];
SelectionMove[doc, Next, Cell];
FrontEndTokenExecute[doc, "FontPanel"];
opt = AbsoluteOptions[
NotebookSelection[doc], {FontColor, FontFamily, FontProperties,
FontSize, FontSlant, FontTracking, FontVariations, FontWeight,
Background}]; NotebookClose[doc]; opt]