Верхний индекс / преобразовывает в нижний индекс в гиперссылке в WPF

Я пытаюсь сделать Гиперссылку, которая содержит текст с супер - и/или нижние индексы. Я нашел два способа сделать это, и они оба сосут.

Решение № 1: используйте Типографию. Варианты. Это дает потрясающий верхний индекс... для некоторых шрифтов.


  
    R2
    (Palatino Linotype)
  
  
    R2
    (Segoe UI)
  


(источник: excastle.com)

Выглядит красивым в Palatino Linotype; но для шрифтов, которые не поддерживают варианты, это просто проигнорировано, не сделана никакая эмуляция, и текст является полноразмерным, в базовой линии, нормальных 100%. Я предпочел бы позволять моим конечным пользователям выбирать шрифт, они хотят использовать, и все еще иметь супер работу / работу нижних индексов.

Решение № 2: используйте BaselineAlignment. Это повышает или понижает текст соответственно, хотя в отличие от решения № 1, я должен уменьшить размер шрифта вручную. Однако, это эффективно для всех шрифтов. Проблемой является подчеркивание Гиперссылки.


  
    R2
  

Подчеркивание повышено и понижено наряду с текстом, который выглядит довольно несчастным. У меня было бы непрерывное, неповрежденное подчеркивание под целой Гиперссылкой. (И прежде чем любой предлагает Границу, я также хотел бы, чтобы Гиперссылка смогла к переходу на новую строку, со всеми подчеркнутыми словами, включая первую строку.)

Там какой-либо путь состоит в том, чтобы сделать верхний индекс и нижнюю работу в WPF, в каком-либо шрифте, не выглядя смехотворно плохо при подчеркивании?

15
задан Glorfindel 12 April 2019 в 19:59
поделиться

1 ответ

Если гиперссылка не будет переноситься на более чем одну строку, то может сработать встраивание другого 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 в приведенном выше примере - и оставьте остальную часть текст, связанный с гиперссылкой, затем вы получите подчеркивание как обычно. Но иногда это непрактично, поэтому стоит остерегаться этого.

12
ответ дан 1 December 2019 в 04:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: