Интервал Между Строками В Формате Rich Text

Я пытаюсь преобразовать обычный текст в RTF-формате. Поэтому я использую RichTextBox (WinForms).
Соответствующий метод RTF-разметка в виде строки.

теперь я хочу вставить межстрочный интервал в разметке. Я обнаружил, что есть 2 параметра:

 - slX (Space between lines in twips)
 - slmultX (either 0 or 1)

если я поставил slmult0, интервал между строками выше строка текста.
Когда я установил slmult1, интервал между строками ниже строка текста.

я вычисляю интервал следующим образом:

(lineSpacing + fontSize)*20

когда я переключился с slmult0 to slmult1, Я определил, что расстояние линии немного меньше, чем с slmult0.

кто-нибудь знает причину такого поведения? Должен ли я вычислять по другой формуле?

1 ответов


если я установил \slmult0, интервал между строками выше строки текста. Когда я устанавливаю \slmult1, интервал между строками ниже строки текста.

это не то, что я прочитал в технические характеристики.

как я понимаю, это означает, что \slmult0 говорит, что значение \slN должен использоваться непосредственно как расстояние в какой-то единице, тогда как \slmult1 говорит N на \slN это фактор, по которому регулярный интервал между строками умножается.

см. последний пост здесь для (некоторых) более подробной информации! (Но есть также примечание о том, что он вступает в силу на одну строку слишком поздно..)

также обратите внимание на важность знака N на \slN! (Это было причиной моего комментария выше: эффект, скажем \sl234, будет зависеть от размера высокий символ в строке..!)

здесь хорошее обсуждение некоторые вещи RTF; примечание о единицах:

измерения в RTF, как правило, в твипах. Твип-это двадцатая часть точка, то есть 1440-я часть дюйма. Это приводит к некоторым большим числам иногда (например, \li2160, чтобы установить левый отступ на полтора дюйма)

и четкое определение дополнительных интервалов до и после абзацев:

\sbN -- N поворотов дополнительного (вертикального) пространства перед этим абзацем (по умолчанию: 0)
\saN -- N твипы дополнительного (вертикального) пространства после этого абзаца (по умолчанию: 0)

здесь более прямые указания:

чтобы удвоить пробел абзаца, поместите код \sl480\slmult1 вправо после леопард. Чтобы утроить пространство, используйте \sl720\slmult1. Просто 1.5-интервал, используйте \sl360\slmult1. По умолчанию используется абзац с одним интервалом и не требует какого-либо определенного кода. (Магия чисел 480, 720 и 360 не зависит от размера шрифта текста в параграф.)