Интервал Между Строками В Формате 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 не зависит от размера шрифта текста в параграф.)