C# 如何使用分层Segoe MDL2资产字体/图标创建通知计数

C# 如何使用分层Segoe MDL2资产字体/图标创建通知计数,c#,xaml,fonts,layer,C#,Xaml,Fonts,Layer,我正在尝试使用“Segoe MDL2资产”图标制作工具栏。 MS建议不要使用较旧的Segoe UI符号字体,因为它现在是传统字体。我想要的是XAML或C#,它将这种字体的单个字符置于另一个字符之上,或者将一个字符置于图标之上。居中是可以的,但我真的想相对定位它们 提到了过去支持的图标/字符的分层/堆叠,但没有说明现在应该如何进行 它对于显示诸如VS2015的通知、此处的收件箱消息或在心形、星形、圆形或方形内带有数字的带编号的收藏夹列表非常有用 我目前的解决方案是使用带有两个文本块的网格,或者一

我正在尝试使用“Segoe MDL2资产”图标制作工具栏。

MS建议不要使用较旧的Segoe UI符号字体,因为它现在是传统字体。我想要的是XAML或C#,它将这种字体的单个字符置于另一个字符之上,或者将一个字符置于图标之上。居中是可以的,但我真的想相对定位它们

提到了过去支持的图标/字符的分层/堆叠,但没有说明现在应该如何进行

它对于显示诸如VS2015的通知、此处的收件箱消息或在心形、星形、圆形或方形内带有数字的带编号的收藏夹列表非常有用

我目前的解决方案是使用带有两个文本块的网格,或者一个文本块和一个矩形。很接近,但不是我想要的。是否有人有更好的方法堆叠或覆盖它们

<ToolBarTray>
    <ToolBar x:Name="WindowsTools" OverflowMode="Never" ToolBarTray.IsLocked="True" Loaded="ToolBar_Loaded">
        <Button x:Name="Favorite_1" ToolTip="Favorite 1" FontFamily="Segoe MDL2 Assets" FontSize="20" Click="Favorite_Click" Tag="1">
            <Grid>
            <TextBlock FontSize="20" VerticalAlignment="Center" TextAlignment="Center">
                    <Run FontFamily="Segoe MDL2 Assets">&#xE006;</Run>
            </TextBlock>
            <TextBlock FontSize="20" VerticalAlignment="Center" TextAlignment="Center" Foreground="Red">
                    <Run FontSize="8" FontFamily="Segoe WP" Typography.Variants="Superscript">&#x277A;</Run>
            </TextBlock>
            </Grid>
        </Button>
        <Button x:Name="Favorite_2" ToolTip="Favorite 2" FontFamily="Segoe MDL2 Assets" FontSize="20" Click="Favorite_Click" Tag="2">
            <Grid>
            <TextBlock FontSize="20" VerticalAlignment="Center" TextAlignment="Center">
                    <Run FontFamily="Segoe MDL2 Assets">&#xE7C1;</Run>
                </TextBlock>
                <TextBlock HorizontalAlignment="Right" VerticalAlignment="Bottom" Foreground="Blue">
                    <Run FontSize="8" FontFamily="Segoe WP" Typography.Variants="Superscript">&#x2778;</Run>
                </TextBlock>
            </Grid>
        </Button>
        <Button x:Name="Notifications" ToolTip="Notifications" Click="Notification_Click" Tag="Users">
            <Grid>
                <TextBlock FontSize="20" VerticalAlignment="Center" TextAlignment="Center">
                    <Run FontFamily="Segoe MDL2 Assets">&#xE716;</Run>
                </TextBlock>
                <TextBlock HorizontalAlignment="Right" VerticalAlignment="Bottom" Foreground="Purple">
                    <Run FontSize="8" FontFamily="Segoe WP" Typography.Variants="Superscript">&#x2779;</Run>
                </TextBlock>
            </Grid>
        </Button>
        <Button x:Name="Alerts" ToolTip="Alerts" Click="Alerts_Click" Tag="Users">
            <Grid>
                <TextBlock FontSize="20" VerticalAlignment="Center" TextAlignment="Center">
                    <Run FontFamily="Segoe MDL2 Assets">&#xE715;</Run>
                </TextBlock>
                <Rectangle Width="12" Height="8" Fill="Green" HorizontalAlignment="Right" VerticalAlignment="Top"/>
                <TextBlock HorizontalAlignment="Right" VerticalAlignment="Top" Foreground="White">
                    <Run FontSize="7" FontFamily="Courier New" FontWeight="Bold" Text=" 2 "></Run>
                </TextBlock>
            </Grid>
        </Button>
    </ToolBar>
</ToolBarTray>

;
❺;
;
❸;
;
❹;
;

为了澄清,您所指的文档描述了字体中已经存在的用于着色图示符的分层。客户端/用户通常不定义分层,并且通常(在支持彩色字体渲染的系统下)不需要做任何特殊的操作来使用它们

一些额外的背景:除了正常的字形数据(在“glyf”表格中),字体包含调色板(“CPAL”)和分层(“COLR”)表格,它们是彩色字形的有效“配方”。“COLR”表通过引用“glyf”表中的GlyphID和“CPAL”表中的RGBA颜色来定义图层。理解“COLR”和“CPAL”表格的系统将使用配方在定义的层之外构建彩色图示符。在不支持使用COLR/CPAL进行颜色渲染的系统上,将显示标准的“后退”单色图示符

因此,如果你只是在应用程序、网页等中使用字体,你实际上不需要做任何特殊的事情。如果在不支持颜色化的系统上使用字体,并且希望获得颜色支持,则需要解析和表,并使用它们以颜色呈现文本