Я пытаюсь создать гиперссылку, содержащую текст с super- и/или подписками. Я нашел два способа сделать это, и оба они отстой.
Решение № 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 любым шрифтом, не выглядя смешно плохо при подчеркивании?