所有这些文本看起来都是一样的,但我想让它们看起来不同。我想要小型大写字母文本。我缺少什么来使小型大写字母排版效果生效?
要复制此问题,请打开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%。但不是SmallCaps。