代码之家  ›  专栏  ›  技术社区  ›  Anthony

WPF/XAML:排版。资本似乎没有影响

  •  7
  • Anthony  · 技术社区  · 16 年前

    要重现此过程,请打开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">
    

    • 为什么默认字体(看起来很像Times New Roman)不支持这些?
    • 支持此功能的字体百分比是多少?是大多数、部分还是少数?
    • 你能在代码中确定字体支持什么吗?如果是这样的话,我可以伪造AllSmallCaps,例如将文本转换为所有大写字母并缩放80%。但不是SmallCaps。
    2 回复  |  直到 16 年前
        1
  •  9
  •   amaca    16 年前

    这仅适用于特定的OpenType字体——帮助中的示例使用了Open Type示例中的Pescadero。即便如此,也只支持SmallCaps和AllSmallCaps。

        2
  •  3
  •   gameweld    13 年前

    <StackPanel>
        <TextBlock Typography.Capitals="SmallCaps" FontFamily="Pescadero" Padding="2">2pm</TextBlock>
        <TextBlock Typography.Capitals="SmallCaps" FontWeight="Bold" Padding="2">2pm</TextBlock>
    </StackPanel>