Próbuję utworzyć hiperłącze zawierające tekst z super- i/lub indeksem dolnym. Znalazłem dwa sposoby, aby to zrobić, i obaj są do bani. Roztwór nr 1: użyj Typography.Variants. Daje to świetny indeks górny ... dla niektórych czcionek.Superscript/subscript w hiperłączu w WPF
<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>
http://www.excastle.com/misc/wpf-superscript-fontvariants.png
wygląda pięknie w Palatino Linotype; ale w przypadku czcionek, które nie obsługują wariantów, są po prostu ignorowane, emulacja nie jest wykonywana, a tekst jest pełnowymiarowy, na linii bazowej, w 100% normalny. Wolałbym, aby moi użytkownicy końcowi wybrali czcionkę, której chcą używać, i nadal działają super/indeksy dolne. Roztwór nr 2: użyj BaselineAlignment. Podnosi lub obniża tekst odpowiednio, choć w przeciwieństwie do rozwiązania nr 1 muszę ręcznie zmniejszyć rozmiar czcionki. Mimo to działa dla wszystkich czcionek. Problem polega na podkreśleniu hiperłącza.
<TextBlock FontSize="30" FontFamily="Palatino Linotype">
<Hyperlink>
R<Run BaselineAlignment="Superscript" FontSize="12pt">2</Run>
</Hyperlink>
</TextBlock>
http://www.excastle.com/misc/wpf-superscript-baselinealignment.png
podkreślenia jest podnoszony i opuszczany wraz z tekstem, który wygląda dość nędzny. Wolę ciągłe, nieprzerwane podkreślenie pod całym Hiperłączem. (I zanim ktokolwiek zasugeruje obramowanie, chciałbym również, aby Hiperłącze było w stanie zawijać słowa, z wszystkimi podkreślonymi słowami, w tym pierwszym wierszem.)
Czy istnieje sposób na tworzenie indeksu górnego i dolnego w WPF, w dowolnej czcionce, nie wyglądając śmiesznie źle, gdy podkreślono?