【发布时间】:2010-10-12 19:05:23
【问题描述】:
所有这些文本看起来都一样,但我试图让它们看起来不同。我想要小型大写字母。为了使小型大写字体效果起作用,我在这里缺少什么?
要重现这一点,请打开 Visual Studio 2008,执行文件|新建项目,创建一个新的 Windows|WPF 应用程序,将下面的标记粘贴到 Window1.xaml 中,然后运行它。
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<FlowDocumentReader>
<FlowDocument>
<Paragraph>
<Run>Some text</Run> <LineBreak />
<Run Typography.Capitals="SmallCaps">Some text</Run> <LineBreak />
<Run Typography.Capitals="AllSmallCaps">Some text</Run> <LineBreak />
<Run Typography.Capitals="PetiteCaps">Some text</Run> <LineBreak />
<Run Typography.Capitals="AllPetiteCaps">Some text</Run> <LineBreak />
</Paragraph>
</FlowDocument>
</FlowDocumentReader>
</Grid>
</Window>
根据第一个答案,如果您指定特定字体,您似乎可以到达某个地方。将 FlowDocument 开始标记更改为:
<FlowDocument FontFamily="Palatino Linotype">
.. 你会得到 SmallCaps 和 AllSmallCaps,但不会得到 PetiteCaps 或 AllPetiteCaps。所以这取决于字体。但这引发了其他问题:
- 为什么默认字体(看起来很像 Times New Roman)不支持这些?
- 其他广泛使用的字体(例如本地 Courier New 等效字体)是否支持这些字体?
- 是否有支持哪些字体的列表?
- 多少百分比的字体会支持这一点 - 大部分、部分还是少数?
- 您能否在代码中确定字体支持的内容 - 如果是这种情况,我可以伪造 AllSmallCaps - 例如通过将文本转换为全部大写并按 80% 缩放。但不是小型股。
【问题讨论】:
-
好问题。这几乎是帮助中最基本的示例,但它不起作用。
标签: wpf xaml flowdocument smallcaps