Я использую .NET и приложение Windows.Forms.
В поле RTF я установил (с .Rtf =
) эту разметку RTF:
{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033{\fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;}}
{\colortbl ;\red0\green0\blue255;\red255\green0\blue0;}
{\*\generator Riched20 10.0.14393}\viewkind4\uc1
\pard\f0\fs17
{\pntext\f0 'B7\tab}{\*\pn\pnlvlblt\pnf0\pnindent0{\pntxta\'B7}}\fi-180\li260\f0 The first line in bullet list.
\par{\pntext\f0\'B7\tab}Second line.
\par{\pntext\f0\'B7\tab}Third line.
Видимый результат выглядит так:
⦁ The first line in bullet list.
⦁ Second line.
⦁ Third line.
Перед первой строкой текста перед строкой вставлено несколько пробелов. Я этого не хочу.
Когда я считывал RTF из элемента управления, он теперь:
{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033{\fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;}{\f1\fnil\fcharset2 Symbol;}}
{\*\generator Riched20 10.0.14393}\viewkind4\uc1
\pard{\pntext\f1\'B7\tab}{\*\pn\pnlvlblt\pnf1\pnindent0{\pntxtb\'B7}}\fi-180\li260\f0\fs24 \fs17 The first line in bullet list.\par
{\pntext\f1\'B7\tab}Second line.\par
{\pntext\f1\'B7\tab}Third line.\par
}
Я прочитал такие ресурсы, как http://www.biblioscape.com/rtf15_spec.htm и другие подобные, и получил общие идеи о RTF:
Предполагается, что формат изящно ухудшается, поэтому при выполнении новых операций, не поддерживаемых более старыми читателями, существует дополнительное форматирование старого типа, которое может отображать более старый читатель, чтобы получить несколько приличное визуальное представление нового форматирования, в то время как старый читатель игнорирует теги, о которых он не знает.
Для списков первая строка устанавливает некоторый стиль, которому следуют следующие строки. Я попытался поработать со всеми числовыми константами в приведенном выше форматировании, и я вижу, как рендеринг смещается влево или вправо в зависимости от того, что я изменяю, но остаются лишние пробелы.
Также странно, я думаю, что когда я читаю RTF из текстового элемента управления, появляется дополнительный \fs24
, казалось бы, совершенно неожиданный.
Было бы также полезно, если бы любая помощь или решение сохраняли аспект list , а не только визуально отображали список. Причина в том, что позже программа преобразует RTF в HTML, и было бы полезно, если бы она знала, что она создала теги <ul>
или <ol>
напрямую, а не только, например, маркеры и новые абзацы.