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

wpf/xaml:排版。大写字母似乎没有效果。

  •  5
  • Anthony Waqas Raja  · 技术社区  · 15 年前

    所有这些文本看起来都一样,但我试图让它们看起来不同。我要小的大写字母。为了让小字体的排版效果发挥作用,我这里遗漏了什么?

    若要复制此文件,请打开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)不支持这些字体?
    • 其他广泛使用的字体(例如本地的Courier新的等效字体)是否支持这些字体?
    • 有支持什么字体的列表吗?
    • 有多少百分比的字体可以支持这个——大多数、一些或很少?
    • 您能在代码中确定字体支持什么吗?如果是这种情况,我可以伪造所有大小写,例如,将文本转换为所有大写字母并缩放80%。但不是小帽子。
    2 回复  |  直到 12 年前
        1
  •  9
  •   amaca    15 年前

    这只适用于特定的OpenType字体-帮助中的示例使用OpenType示例中的Pescadero。即使这样,也只支持smallcaps和allsmallcaps。

        2
  •  3
  •   gameweld    12 年前

    我注意到带有“粗体”fontweight的默认字体确实正确地呈现了小大写字母:

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