1

我已经应用SmallCaps如下所示,但它似乎对浏览器或设计窗口没有任何影响。

<TextBlock Text="Text Here !" Typography.Capitals="SmallCaps"/>

为什么Typography.Capitals忽略参数?是否需要为此启用任何设置?

4

2 回答 2

2

更新
似乎要使这些属性起作用,使用的字体必须支持它们。Silverlight 无法使用字体执行魔术,它只能使用字体本身内置的功能。而且似乎不同版本的 Windows 之间存在一些差异,这使得这更加令人困惑。我在 Windows 7 和 8 上使用以下字体进行了尝试:Gabriola、Georgia、Verdana、Arial、Comic Sans MS、Calibri、Segoe UI、便携式用户界面

在 Win7 和 8 上,唯一有效的属性是 SmallCaps 和 AllSmallCaps。在 Win7 或 Win8 上,其他设置都没有任何区别。在 Windows 8 上,这两个属性适用于上面列出的所有字体。在 Windows 7 上,它们工作的唯一字体Calibri 和 Gabriola。然后我开始研究安装在两台不同机器上的字体版本。事实证明它们是不同的。例如,在我的 Win7 机器上,Verdana 和 Segoe UI 的版本都是 5.05。在 Win8 机器上 Verdana 是 5.31 版,Segoe UI 是 5.28 版。

所以我认为这就是为什么我们在不同的机器上得到不同的结果。它与 Silverlight 无关,而是与客户端计算机上安装的字体版本有关。Win7 上安装的 Verdana 版本不支持 SmallCaps 和 AllSmallCaps,但 Win8 附带的版本确实支持。
结束更新

我肯定看到了 SmallCaps 和 AllSmallCaps 的不同之处。其余的值似乎没有做任何事情。我想这可能取决于使用的 FontFamily。无论如何,以下代码呈现如下屏幕截图。

<ContentControl FontSize="18"
                FontFamily="Segoe UI">
    <StackPanel>
        <TextBlock Text="Writing Some Text Here in the Text Block. AllPetiteCaps"
                    Typography.Capitals="AllPetiteCaps"></TextBlock>
        <TextBlock Text="Writing Some Text Here in the Text Block. AllSmallCaps"
                    Typography.Capitals="AllSmallCaps"></TextBlock>
        <TextBlock Text="Writing Some Text Here in the Text Block. Normal"
                    Typography.Capitals="Normal"></TextBlock>
        <TextBlock Text="Writing Some Text Here in the Text Block. PetiteCaps"
                    Typography.Capitals="PetiteCaps"></TextBlock>
        <TextBlock Text="Writing Some Text Here in the Text Block. SmallCaps"
                    Typography.Capitals="SmallCaps"></TextBlock>
        <TextBlock Text="Writing Some Text Here in the Text Block. Titling"
                    Typography.Capitals="Titling"></TextBlock>
        <TextBlock Text="Writing Some Text Here in the Text Block. Unicase"
                    Typography.Capitals="Unicase"></TextBlock>
    </StackPanel>
</ContentControl>

排版示例

于 2012-12-07T15:35:09.143 回答
1

我不确定 WPF 和 Silverlight 之间在这方面有多大区别,但显然对于 WPF,字体必须是 OpenType 字体。根据wpf.2000things.com

WPF 包含一个 Typography 类,它允许为文本元素设置各种附加属性。这些属性仅影响使用 OpenType 字体呈现的文本。

WPF 编程第 2 版中:

WPF 支持 TrueType 和 OpenType 字体。OpenType 字体通常包含许多基本字符形状集的替代品,以支持高级印刷功能。如果您正在使用 GlyphRun 等低级文本处理功能,则可以直接使用这些替代项,通过字形索引引用它们。但是,如果您使用的是更高级别的元素,例如 TextBlock 或 FlowDocument 查看器,它们可以为您定位和使用适当的字形。您可以通过 Typography 类定义的附加属性来控制使用哪些字符形状。

于 2017-05-24T12:18:55.550 回答