首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么忽略Typography.Capitals参数?

为什么忽略Typography.Capitals参数?
EN

Stack Overflow用户
提问于 2012-12-07 22:01:33
回答 2查看 472关注 0票数 1

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

代码语言:javascript
复制
<TextBlock Text="Text Here !" Typography.Capitals="SmallCaps"/>

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

EN

回答 2

Stack Overflow用户

发布于 2012-12-07 23:35:09

更新

似乎要使这些属性工作,所使用的字体必须支持它们。Silverlight不能对字体执行魔法,它只能使用字体本身内置的功能。而且似乎不同版本的Windows之间存在一些差异,这使得这一点更加令人困惑。我使用以下字体在Windows 7和8上试用过: Gabriola、乔治亚、Verdana、Arial、Comic Sans MS、Calibri、Segoe UI、Portable User Interface

在Win7和8上,唯一有效的属性是SmallCaps和AllSmallCaps。无论是在Win7上还是在Win8上,其他设置都没有起到任何作用。在Windows 8上,这两个属性适用于上面列出的所有字体。在Windows7上,它们唯一可以使用的字体是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。无论如何,下面的代码呈现的就像下面的屏幕截图。

代码语言:javascript
复制
<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>

票数 2
EN

Stack Overflow用户

发布于 2017-05-24 20:18:56

我不确定WPF和Silverlight在这方面有多大的不同,但显然WPF的字体必须是OpenType字体。根据wpf.2000things.com的说法

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

Programming WPF, 2nd Edition

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13764590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档