становится ..

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

Возможно, вы видели аккорды, даже если вы не играете на каком-либо инструменте. Чтобы дать вам представление, это выглядит так:

E                 E6
I know I stand in line until you
E                  E6               F#m            B F#m B
think you have the time to spend an evening with me

Но вместо этого уродливого моноширинного шрифта я хочу иметьTimes New Roman шрифт с кернингом для текста и аккордов (аккорды жирным шрифтом). И я хочу, чтобы пользователь мог редактировать это.

Этот сценарий не поддерживаетсяRichTextBox, Вот некоторые из проблем, которые я не знаю, как решить:

Аккорды фиксируют свои позиции над каким-либо символом в тексте песни (или в более общем смыслеTextPointer лирика). Когда пользователь редактирует текст, я хочу, чтобы аккорд оставался над нужным символом. Пример:

.

E                                       E6
I know !!!SOME TEXT REPLACED HERE!!! in line until you
Перенос строки: 2 строки (1-я с аккордами и 2-я с лирикой) - это логически одна строка, когда речь идет о переносе строк. Когда слово переносится на следующую строку, все аккорды, находящиеся над ним, также должны переноситься. Кроме того, когда аккорд обернет слово, что это над ним, также обернуть. Пример:

.

E                  E6
think you have the time to spend an
F#m            B F#m B
evening with me
Аккорды должны оставаться над правильным символом, даже если аккорды расположены слишком близко друг к другу. В этом случае некоторое дополнительное пространство автоматически вставляется в строку текста. Пример:

.

                  F#m E6
  ...you have the ti  me to spend... 
Скажи, у меня есть лирикаTa VA и аккордA, Я хочу, чтобы текст был похож