Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.145.186.132] |
|
Сообщ.
#1
,
|
|
|
В Delphy7 написал код:
procedure reSetKern(RichEdit:TRichEdit; k:word); var Format: CHARFORMAT2; begin FillChar(Format, SizeOf(Format), 0); with Format do begin cbSize := SizeOf(Format); dwMask := CFM_KERNING; // dwMask := CFM_SPACING; // - как вариант wKerning := k; Richedit.Perform(EM_SETCHARFORMAT, SCF_SELECTION, Longint(@Format)); end; end; Он никак не работает. Аналогичный код для изменения цвета фона текста: procedure reSetBkColor(RichEdit:TRichEdit; AColor: TColor); var Format: CHARFORMAT2; begin FillChar(Format, SizeOf(Format), 0); with Format do begin cbSize := SizeOf(Format); dwMask := CFM_BACKCOLOR; crBackColor := AColor; Richedit.Perform(EM_SETCHARFORMAT, SCF_SELECTION, Longint(@Format)); end; end; отлично выполняет свою функцию. Может быть кернинг просто не поддерживается? Или я что-то делаю не так? |
Сообщ.
#2
,
|
|
|
Справку смотрел?
Цитата wKerning Type: WORD Value of the font size, above which to kern the character (yHeight). This value has no effect on the text displayed by a rich edit control; it is included for compatibility with TOM interfaces. To use this member, set the CFM_KERNING flag in the dwMask member. |
Сообщ.
#3
,
|
|
|
Справка справкой, но в программировании всегда существует много вариантов обходных путей - о них я и спрашиваю.
Я нашёл, что отправка команды с CFM_CERNING при выделенном куске текста вызывает вставку тегов /kerningXX и /kerning0 в начало и конец выделенного куска, где XX = (wKerning div 10). Визуально это никак не проявляется не только в элементе RichEdit, но даже и в MS WordPad, если туда этот кусок перенести копипастом. Существуют ли сторонние разработки, которые учитывают кернинг? Я пробовал работать с API-функциями вывода символов на Canvas и там нет проблемы учесть кернинг, но самому разрабатывать аналог RichEdit как-то не хочется. |
Сообщ.
#4
,
|
|
|
Я из сторонних использовал только SynEdit, но там по умолчанию идет работа с моноширинным шрифтом и на вскидку ничего связанного с кернингом не нашел поиском по коду.
|