【发布时间】:2019-04-13 03:59:23
【问题描述】:
我正在尝试创建一个包含带有上标和/或下标的文本的超链接。我找到了两种方法来做到这一点,但它们都很糟糕。
解决方案#1:使用Typography.Variants。这给出了一个了不起的上标...对于某些字体。
<StackPanel>
<TextBlock FontFamily="Palatino Linotype" FontSize="30">
<Hyperlink>R<Run Typography.Variants="Superscript">2</Run></Hyperlink>
(Palatino Linotype)
</TextBlock>
<TextBlock FontFamily="Segoe UI" FontSize="30">
<Hyperlink>R<Run Typography.Variants="Superscript">2</Run></Hyperlink>
(Segoe UI)
</TextBlock>
</StackPanel>
(来源:excastle.com)
在 Palatino Linotype 中看起来很漂亮;但是对于不支持变体的字体,它会被简单地忽略,不进行模拟,并且文本是全尺寸的,在基线,100% 正常。我更愿意让我的最终用户选择他们想要使用的字体,并且仍然可以使用超级/下标。
解决方案 #2:使用 BaselineAlignment。这会适当地提高或降低文本,但与解决方案 #1 不同,我必须手动减小字体大小。不过,它对所有字体都有效。问题是超链接的下划线。
<TextBlock FontSize="30" FontFamily="Palatino Linotype">
<Hyperlink>
R<Run BaselineAlignment="Superscript" FontSize="12pt">2</Run>
</Hyperlink>
</TextBlock>
下划线随着文字的升高和降低,看起来很猥琐。我宁愿在整个超链接下有一个连续的、不间断的下划线。 (在有人建议边框之前,我还希望超链接能够自动换行,所有单词都加下划线,包括第一行。)
有没有什么方法可以使上标和下标在 WPF 中以任何字体工作,而在下划线时不会看起来很糟糕?
【问题讨论】: