2015-10-07 3 views
2

Я хочу отобразить текст над определенным текстом, Он выглядит точно так.
furigana above kanji
Как вы можете видеть под 学校 (называемый кандзи), есть がっこう (называемый фуригана).
Я точно знаю, какой персонаж должен иметь фуригану над ним.Показать текст ниже определенного текста

Вопрос в том, как я могу? Я думал, что могу использовать \n с 2 Label, но есть ли способ показать что-то подобное?

Редактировать Текст, который я упоминаю, представляет собой чириканье и анализатор, которые я использую для его анализа на узле морфемы, поэтому я прошу, как отображать текст над определенным текстом.

+4

Это зависит от того, может ли WPF отображать [рубиновые символы в Юникоде] (https://en.wikipedia.org/wiki/Ruby_character # Unicode) WPF, возможно, не сможет отобразить текст. Это поможет, если вы можете включить соответствующий текст в вопрос, даже если он не отображается правильно. Если вы можете записать его в любом текстовом редакторе, используя символы Unicode, вы * можете * отобразить его в простом текстовом блоке. Если вы можете написать текст в RTF-редакторе, вы можете использовать RichTextBox. –

+1

Если вы не можете этого сделать, вы можете использовать элементы Span и Run внутри TextBlock, точно так же, как пробелы используются в HTML для отображения одного символа над другим –

+0

@PanagiotisKanavos Пример выше: こ の 学校 は た く さ ん の 生 生が い あ ま す. С が っ こ う и せ い と, я могу написать его с помощью юникода, и я подумал, что он тоже может писать в редакторе RTF. – witoong623

ответ

2

WPF поддерживает многие OpenType Font Features но Рубин не отображается должным образом, даже если он является доступны через атрибут Typography.Variants:

<TextBlock> 
<Span> 
    学校<Run Typography.Variants="Ruby">がっこう</Run> 
</Span> 

Это не будет отображать символы рубин, как это должно быть. Я не нашел ни одного (рабочего) примера, который показывает, как использовать «Ruby».

Один способ обхода (взломать на самом деле) - использовать разрыв строки, как вы пытались сделать. Это делается с помощью <LineBreak/> тег:

<TextBlock > 
     <Span FontFamily="Meiryo"> 
      <Run FontSize="8">えみこ</Run><LineBreak/>恵美子 
     </Span> 
    </TextBlock> 

Вы можете поместить этот TextBlock в StackPanel, чтобы включить его в пункте:

<TextBlock> 
     <Span FontFamily="Meiryo" > This is my normal text 
      <StackPanel > 
       <TextBlock > 
        <Span> 
         <Run FontSize="8">えみこ</Run><LineBreak/>恵美子 
        </Span> 
       </TextBlock> 
      </StackPanel> 
      and this is the rest of the text 
     </Span> 
    </TextBlock> 

Результат будет что-то вроде следующего фрагмента кода:

This is my normal text 
 
<ruby> 
 
<rb>恵美子</rb><rp>(</rp> 
 
<rt>えみこ</rt><rp>)</rp> 
 
</ruby> 
 
and this is the rest of the text

Разметка некрасивая, и вам придется поиграть со смещениями, чтобы правильно подобрать нижнюю панель панели.

+0

Работает! : D, хотя это не так, как в HTML. Я попытаюсь создать пользовательский UserControl и объединить все для его использования. Большое спасибо. – witoong623

+0

'FontVariants.Ruby' только указывает, что текст должен отображаться с использованием [* Ruby Notation Forms * в OpenType] (http://help.typekit.com/customer/en/portal/articles/1789736-syntax-for-opentype- features-in-css # ruby) вместо глифа. Он не обрабатывает размещение рубинового текста. – unarist

Смежные вопросы