Я пытаюсь создать гиперссылку, содержащую текст с супер- и / или индексами. Я нашел два способа сделать это, и оба они отстой.
Решение № 1: использовать Типография. Варианты . Это дает потрясающий верхний индекс ... для некоторых шрифтов.
<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 )
Красиво выглядит в Палатино Линотипа; но для шрифтов, которые не поддерживают варианты, это просто игнорируется, эмуляция не выполняется, и текст является полноразмерным, на базовом уровне, на 100% нормальным. Я бы предпочел, чтобы мои конечные пользователи выбирали шрифт, который они хотели бы использовать, и при этом работали супер / подписчики.
Решение № 2: используйте BaselineAlignment . Это повышает или уменьшает текст соответствующим образом, хотя в отличие от решения № 1, мне приходится уменьшать размер шрифта вручную. Тем не менее, это эффективно для всех шрифтов. Проблема в подчеркивании Гиперссылки.
<TextBlock FontSize="30" FontFamily="Palatino Linotype">
<Hyperlink>
R<Run BaselineAlignment="Superscript" FontSize="12pt">2</Run>
</Hyperlink>
</TextBlock>
Подчеркивание поднимается и опускается вместе с текстом, который выглядит довольно убогим. Я предпочел бы иметь непрерывное, непрерывное подчеркивание под всей гиперссылкой. (И прежде чем кто-либо предложит Границу, я бы также хотел, чтобы Гиперссылка могла переносить слова, подчеркнув все слова, включая первый ряд.)
Есть ли способ заставить верхний и нижний индексы работать в WPF любым шрифтом, не выглядя смешно плохо при подчеркивании?