在特定文本上方显示文本

时间:2015-10-07 15:14:08

标签: c# wpf xaml unicode ruby-characters

我想在特定文字上方显示文字,看起来就像这样 furigana above kanji
您可以在学校(称为汉字)下看到がっこう(称为假名)显示。
我确切地知道在它上面应该有一个假名的字符。

问题是我该怎么办?我以为我可以使用\nLabel,但有没有其他方法可以显示这样的内容?

我提到的

编辑文本是推文提要和分析器,我使用它解析为语素节点这就是为什么我要求如何在特定文本上方显示文本。

1 个答案:

答案 0 :(得分:2)

WPF支持许多OpenType Font Features但Ruby未正确呈现,即使 通过Typography.Variants属性可用:

<TextBlock>
<Span>
    学校<Run Typography.Variants="Ruby">がっこう</Run>
</Span>

这不会显示应该的ruby字符。我还没有找到任何(工作)示例来说明如何使用“Ruby”。

一种解决方法(实际上是黑客攻击)就是按照您的尝试使用换行符。这是通过使用<LineBreak/>标记来完成的:

    <TextBlock >
        <Span FontFamily="Meiryo">  
            <Run FontSize="8">えみこ</Run><LineBreak/>恵美子
        </Span>
    </TextBlock>

您可以将此TextBlock放入StackPanel以将其包含在段落中:

    <TextBlock>
        <Span FontFamily="Meiryo" >  This is my normal text
            <StackPanel >
                <TextBlock >
                    <Span>
                        <Run FontSize="8">えみこ</Run><LineBreak/>恵美子
                    </Span>
                </TextBlock>
            </StackPanel>
            and this is the rest of the text
        </Span>
    </TextBlock>

结果将类似于以下代码段:

 This is my normal text
<ruby>
<rb>恵美子</rb><rp>(</rp>
<rt>えみこ</rt><rp>)</rp>
</ruby>
and this is the rest of the text

标记不是很漂亮,你必须摆弄偏移才能使堆栈面板的底部正确对齐