Typography.Capitals不起作用

时间:2012-12-07 14:01:33

标签: silverlight silverlight-5.0

我已经应用了“SmallCaps”,它在浏览器或设计窗口中似乎没有任何影响。是否需要为此启用任何设置?

< TextBlock Text =“Text Here!” Typography.Capitals = “小型大写字母”/>

等你有价值的想法。 感谢

2 个答案:

答案 0 :(得分: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 附带的版本具有该支持。
END UPDATE

我肯定看到了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>

Typography Examples

答案 1 :(得分:1)

我不确定WPF和Silverlight之间存在多大差异,但显然对于WPF,字体必须是OpenType字体。根据{{​​3}}:

  

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

wpf.2000things.com

  

WPF支持TrueType和OpenType字体。 OpenType字体通常包含   许多人交替使用基本的字符形状集以支持高级   印刷功能。如果您使用的是低级文本处理功能,例如   GlyphRun,您可以直接使用这些替换,通过字形索引引用它们。但   如果您使用的是更高级别的元素,例如TextBlock或FlowDocument   观众,这些可以找到并使用适当的字形。你可以控制   哪个字符形状与附加属性一起使用   排版类。