Hochgestellten / tiefgestellten Text in hyperlinks in WPF
Ich versuche, um einen Hyperlink, der text enthält, der mit super - und/oder tiefgestellte Zeichen. Ich habe festgestellt, zwei Möglichkeiten, dies zu tun, und Sie beide saugen.
Lösung #1: verwenden Sie Typografie.Varianten. Dies gibt einen tollen Hochgestellt... für einige Schriftarten.
<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>
(Quelle: excastle.com)
Sieht schön aus in Palatino Linotype; aber für Schriften, die keine Unterstützung für Varianten, es wird einfach ignoriert, wird keine emulation durchgeführt, und der text ist full-size, at-baseline 100% normal. Ich würde es bevorzugen, dass meine end-Benutzer die schriftart auswählen, die Sie verwenden möchten, und haben immer noch eine super - /tiefgestellte Zeichen arbeiten.
Lösung #2: verwenden Sie BaselineAlignment. Dies erhöht oder verringert den text angemessen, aber im Gegensatz zu Lösung #1 habe ich verringern Sie die Schriftgröße manuell eingeben. Dennoch ist es wirksam für alle Schriftarten. Das problem ist der Link ist Unterstrichen.
<TextBlock FontSize="30" FontFamily="Palatino Linotype">
<Hyperlink>
R<Run BaselineAlignment="Superscript" FontSize="12pt">2</Run>
</Hyperlink>
</TextBlock>
Unterstreichen-ist angehoben und abgesenkt zusammen mit dem text, das sieht ziemlich erbärmlich. Ich würde eher über eine kontinuierliche, ununterbrochene unterstreichen, unter der der ganze Hyperlink. (Und bevor jemand schlägt vor, eine Grenze, ich möchte auch den Hyperlink, um der Lage sein, word-wrap, alle Worte Unterstrichen, einschließlich der ersten Zeile.)
Gibt es eine Möglichkeit, um hoch-und Tiefstellen von Arbeit in WPF, in jeder schriftart, ohne sich lächerlich schlecht, wenn Unterstrichen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn der hyperlink ist nicht zu wickeln, um mehr als eine Zeile, dann-Einbettung ein weiterer TextBlock arbeiten können:
Dies wird eine solide hyperlink unter Hyperlink Kind, das bedeutet eine ununterbrochene hyperlink:
Aber, wenn die embedded-TextBlock-muss auf mehrere Zeilen umgebrochen, Sie bekommen nur eine Unterstreichung unter dem gesamten umbrochenen Absatzes, eher als Unterstreichung jeder Zeile des Textes:
Wenn Sie einen TextBlock nur um eine kurze bisschen Inhalt muss hoch -- z.B., um nur das R^2 in der obigen Beispiel-und lassen Sie den rest von dem text übergeordnet auf den hyperlink, dann bekommen Sie unterstreichen als normal. Aber manchmal, das ist nicht praktisch, es ist also etwas aufpassen.
Können Sie die hochgestellten unicode-Zeichen (z.B. http://www.fileformat.info/info/unicode/char/b2/index.htm)
Wie diese:
Ergebnis:
Offensichtlich, das wird nicht funktionieren, es sei denn, das, was Sie sind super-scripting hat tatsächlich eine unicode-hochgestellte Zeichen.