如何更改 SpTextPresenter 中的字体?

How to change the font in the SpTextPresenter?

Pharo 9,Spec 2 -- 我有一个带有 text 小部件的 Spec 2 演示器:

initializePresenters
    text := self newText.
    super initializePresenters

据我了解其类型是 SpTextPresenter。这个text的字体怎么改?此小部件中所有显示文本的字体、大小...例如,“Courier New”,9.

编辑 1:

我也试过:

    text addStyle: { SpStyleSTONReader fromString:
'
Font {
#name: "Source Sans Pro",
#size: 12,
#bold: false,
#italic: true
}' }.

但是不行,错误是:Improper store into indexable object.

编辑 2:

我也找到了this documentation。看来场景一定是:

  1. 读取样式为 STON
  2. 为所有应用程序在某处(哪里?)设置样式。它们在 STON 中以其名称进行描述,因此可以在应用程序中以其名称引用它们。
  3. 调用 addStyle: 'the-name',因此名称为 the-name 的小部件将从加载的 STON 中引用自己的样式。

问题出在 2 中。- 我没有申请,只有一位用 openWithSpec 打开的演示者。

直到现在我才注意到这一点。
规范“样式”不能直接添加到组件中,但它们需要成为样式表的一部分。
样式表在您的应用程序中定义(特别是在您的应用程序配置中)。
您可以查看 StPharoApplication>>resetConfigurationStPharoMorphicConfiguration>>styleSheetStPharoMorphicConfiguration>>styleSheetCommon 作为示例(您还会在那里看到,使用 STON 声明您的样式只是一种方便的方式,而不是强制性的)。

此处是您将在此处找到的内容的简化版本:

StPharoApplication >> resetConfiguration

    self useBackend: #Morphic with: StPharoMorphicConfiguration new
StPharoMorphicConfiguration >> styleSheet

    ^ SpStyle defaultStyleSheet, self styleSheetCommon
StPharoMorphicConfiguration >> styleSheetCommon
    "Just an example on how to build styles programatically ;)"

    ^ SpStyleSTONReader fromString: '
.application [
    .searchInputField [
        Font { #size: 12 }
    ]
]
'

然后您可以将样式添加到您的组件中:

text addStyle: 'searchInputField'