powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DrawText и табуляция
26 сообщений из 26, показаны все 2 страниц
DrawText и табуляция
    #39543586
Ghost Writer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cтрока с символами табуляции:
Код: pascal
1.
S := := 'Съешь'+#9+'еще этих мягких'+#9+'французских'+#9+'булок,'+#9+'да выпей чаю.';


Рисую её с помощью DrawText:
Код: pascal
1.
DrawText(Canvas.Handle, PAnsiChar(S), Length(S), Rect, DT_EXPANDTABS or DT_WORDBREAK or DT_LEFT);


С моноширинными шрифтами, такими как Lucida Console, Courier New, рисуется одинаково и в соответсвии с википедией:
https://ru.wikipedia.org/wiki/Табуляция Встретив этот символ, терминал перемещает каретку (или курсор) вправо на ближайшую позицию табуляции. Традиционно эти позиции располагаются каждые 8 знакомест, в колонках 1, 9, 17, 25…

Для прочих шрифтов, таких как Arial, Segoe UI, Calibri, MS Sans Serif, длина табуляции тоже вроде выглядит сопоставимо.

Но для некоторых шрифтов, таких как Tahoma, Times New Roman, Arial Black, местами табуляция сильно отличается.

Хотелось бы понять как работает DrawText, как это зависит от шрифта, используется ли какой-то специальный пробельный символ и т.п.

Delphi 7, Win 7 x64
...
Рейтинг: 0 / 0
DrawText и табуляция
    #39543602
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ghost Writerкак это зависит от шрифта, используется ли какой-то специальный пробельный символ и т.п.

Раз уж пошёл на википедию, погугли заодно и "пропорциональные и моноширинные шрифты".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
DrawText и табуляция
    #39543603
Ghost Writer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovпропорциональные и моноширинные шрифтыгуглил. можете конкретнее ?
...
Рейтинг: 0 / 0
DrawText и табуляция
    #39543619
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А задача-то в чем состоит? Случаем не разбить текст на строки и корректно их отрисовать, чтобы поместились? :D Так для этого совсем другие инструменты используются.
...
Рейтинг: 0 / 0
DrawText и табуляция
    #39543620
Ghost Writer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDi,

разбить РАЗНОЦВЕТНЫЙ текст на строки и отрисовать идентично DrawText.
Используя только методы TCanvas, в частности Canvas.TextOut.
Не решен вопрос только с табуляцией.

JaDiдругие инструментыи какие ?
...
Рейтинг: 0 / 0
DrawText и табуляция
    #39543621
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По разному. Например, у канваса есть TextWidth(текст) -- можно узнать требуемую ширину для отрисовки конкретного куска текста конкретным шрифтом-настройками. Или у того же DrawText есть флаг dt_calcrect и dt_wordbreak -- которые не рисуют текст, а выдают новый размер канваса, который нужен для полной отрисовки текста.
...
Рейтинг: 0 / 0
DrawText и табуляция
    #39543628
Aniskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ghost Writer,

Думается мне, что табуляция происходит не относительно последнего символа, а по фиксированным позициям. И в ситуациях, когда в слове "мягких" последние символы чуть выходят за очередную фиксированную позицию, и возникает большое расстояние до следующего слова.
...
Рейтинг: 0 / 0
DrawText и табуляция
    #39543640
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давно доступны исходники Windows 2000, среди которых, в том числе и DrawText.
...
Рейтинг: 0 / 0
DrawText и табуляция
    #39543641
Ghost Writer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schi,

вроде не 1 апреля не поделитесь ссылкой ?
...
Рейтинг: 0 / 0
DrawText и табуляция
    #39543645
Aniskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Эти утекшие исходники я качал в свое время с thepiratebay. Есть два разных архива - windows_nt_4_source_code.zip (229 MB) и windows_2000_source_code.zip (203 MB).
...
Рейтинг: 0 / 0
DrawText и табуляция
    #39543650
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ghost Writerможете конкретнее ?

Конкретно: у пропорциональных шрифтов символы имею разную ширину. В том числе и пробел, в
которые и расширяется табуляция (в соответствии с документацией на DT_EXPANDTABS).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
DrawText и табуляция
    #39543681
Ghost Writer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

это не новость.
...
Рейтинг: 0 / 0
DrawText и табуляция
    #39543683
Ghost Writer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schi, Aniskin, спасибо, исходники помогли.

Я тоже их нагуглил, но µTorrent никак не хотел их скачивать и я прошел мимо.
Затем поставил галку "Вкл. DHT для новых торрентов" и пошло )

В общем, сначала надо было получить метрику шрифта
потом
Код: pascal
1.
TabLength := TxtMetric.tmAveCharWidth * 8;


и отступ будет по формуле
Код: pascal
1.
xLeft := (((xLeft - ATextRect.Left) div TabLength) + 1) * TabLength + ATextRect.Left
...
Рейтинг: 0 / 0
DrawText и табуляция
    #39543697
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
философски...
Много неочевидного сокрыто в отрисовке текста... Например одно и то же слово может отличаться при отрисовке длиной и начертанием в зависимости от того выводится ли оно через ExtTextOut или DrawText
...
Рейтинг: 0 / 0
DrawText и табуляция
    #39543701
asviridenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerфилософски...
Много неочевидного сокрыто в отрисовке текста... Например одно и то же слово может отличаться при отрисовке длиной и начертанием в зависимости от того выводится ли оно через ExtTextOut или DrawText

Это все фигня по сравнению с отрисовкой арабского текста, особенно когда нужно модификатор другим цветом нарисовать.
...
Рейтинг: 0 / 0
DrawText и табуляция
    #39543724
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asviridenkovЭто все фигня по сравнению с отрисовкой арабского текста, особенно когда нужно модификатор другим цветом нарисовать.Как минимум юнискрайб тебе в руки
...
Рейтинг: 0 / 0
DrawText и табуляция
    #39543728
asviridenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerasviridenkovЭто все фигня по сравнению с отрисовкой арабского текста, особенно когда нужно модификатор другим цветом нарисовать.Как минимум юнискрайб тебе в руки

При чем тут юнискрайб? Юнискрайб на раны разобьет, так это я и без него могу. А вопрос то поставлен четко - нарисуй модификатор другим цветом.
...
Рейтинг: 0 / 0
DrawText и табуляция
    #39543772
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asviridenkovПри чем тут юнискрайб? Юнискрайб на раны разобьет, так это я и без него могу. А вопрос то поставлен четко - нарисуй модификатор другим цветом.Так им отрисуй. Или я не совсем понимаю твою задачу. Рисунок того что нужно можешь прикрепить?
...
Рейтинг: 0 / 0
DrawText и табуляция
    #39543779
asviridenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerasviridenkovПри чем тут юнискрайб? Юнискрайб на раны разобьет, так это я и без него могу. А вопрос то поставлен четко - нарисуй модификатор другим цветом.Так им отрисуй. Или я не совсем понимаю твою задачу. Рисунок того что нужно можешь прикрепить?

Хром, и IE кстати, неправильно рисуют, только FF справился.
...
Рейтинг: 0 / 0
DrawText и табуляция
    #39543788
asviridenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_nigger,

Сам текст

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
<style>
body{
    font-family:tahoma;
    background-color: #F3F5F6;
    font-size: 300%;
}
</style>

 <div class="SubHr"><span>&#1576;</span><span style="color: #CC0000">&#1616;</span><span>&#1587;</span></div> 



У вас же ричэдитор есть, отобрази в нем так же.
...
Рейтинг: 0 / 0
DrawText и табуляция
    #39544043
Ghost Writer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerодно и то же слово может отличаться при отрисовке длиной и начертанием в зависимости от того выводится ли оно через ExtTextOut или DrawTextможете пример привести такого слова ?
...
Рейтинг: 0 / 0
DrawText и табуляция
    #39544060
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ghost Writerможете пример привести такого слова ?Завтра на работе постараюсь найти пример
...
Рейтинг: 0 / 0
DrawText и табуляция
    #39544062
asviridenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_nigger,

Посмотрел вашу демку, права не последнюю. Насколько понял, у вас поддержки RTL языков вообще нет. Это так?
...
Рейтинг: 0 / 0
DrawText и табуляция
    #39544073
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asviridenkovПосмотрел вашу демку, права не последнюю. Насколько понял, у вас поддержки RTL языков вообще нет. Это так?Мы не заявляли поддержку RTL в своих продуктах. Более того даже в .NET она далеко не вся реализована
...
Рейтинг: 0 / 0
DrawText и табуляция
    #39544221
NetObserver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AniskinЭти утекшие исходники я качал в свое время с thepiratebay. Есть два разных архива - windows_nt_4_source_code.zip (229 MB) и windows_2000_source_code.zip (203 MB).
Ага, помню тоже скачал исходники NT4, а через неделю ко мне приходит админ конторы где я работал и показывает грозное письмо от мелкософт! Как то вычислили по IP, самки собаки. Пришлось потереть и ответить, что не специально, а по глупости.
...
Рейтинг: 0 / 0
DrawText и табуляция
    #39544804
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И всё равно они расползлись :)

Первый закон создания динамики систем Зимерги

Если уж Вы открыли банку с червями, то единственный способ снова их
запечатать - это воспользоваться банкой большего размера.

(с) Мерфи.
...
Рейтинг: 0 / 0
26 сообщений из 26, показаны все 2 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DrawText и табуляция
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]