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