WPF Flowdocument - Предотвратить разрыв строки перед знаком% - PullRequest
2 голосов
/ 15 ноября 2010

У меня есть FlowDocument, генерирующий документ для клиента, и он получает разрыв строки, который им не нравится. Есть ли способ пометить часть текста, чтобы избежать разрывов строк? Примерно так:

<Paragraph>Here is a paragraph where there should be <span NoLineBreak=True>no line break</span> in a certain part.</Paragraph>

Очевидно, что Span не имеет свойства NoLineBreak, но мне интересно, есть ли какая-нибудь эквивалентная функциональность или кто-то может помочь мне начать реализацию класса SpanWithNoLineBreak или класса RunWithNoLineBreak?

UPDATE На самом деле, у меня проблема с знаком процента, где даже нет пробела:

<Paragraph>When I print and &#x00BD;% I want the one-half and '%' symbols to not line break between them.</Paragraph>

& # x00BD; Unicode для & # x00BD; условное обозначение. Я получаю перенос строки между 1/2 и%, даже если между ними нет пробела.

Ответы [ 2 ]

3 голосов
/ 16 ноября 2010

Символ Unicode "Word Joiner" ( U + 2060 ) предназначен именно для этой цели.Он "обычно не создает пробелов, но запрещает разрыв строки по обе стороны от него" ( Wikipedia ).Вы помещаете его между U + 00BD и '%', чтобы предотвратить разрыв строки между ними.

К сожалению, WPF (или, возможно, типичные шрифты, поставляемые с Windows) не поддерживают его должным образом, а вместо этого отображают какквадратная коробка.В качестве альтернативы вы можете использовать U + FEFF;использование этого символа в качестве неразрывного пробела нулевой ширины теперь не рекомендуется (оно зарезервировано для использования в качестве метки порядка байтов), но для меня это помогло предотвратить разрыв строки.

НаконецЕсть и другие символы, которые также могут быть использованы для этой цели: U + 202F (узкое пространство без перерывов) также предотвращает разрыв, но также визуализируется как очень тонкий пробел. U + 00A0 (пробел без перерывов) предотвращает разрыв и отображается как обычный пробел.

0 голосов
/ 15 ноября 2010

Попробуйте заменить пробелы на неразрывные пробелы .

РЕДАКТИРОВАТЬ : Ну, всегда есть план резервного копирования, просто вставляя TextBlocks в FlowDocument с TextWrapping =Нет, но я бы попробовал найти лучший способ ...

...