Bug 5534

Summary: Неверная прорисовка текста с подчеркиванием при переносе строки внутри ячейки
Product: WINE@Etersoft Reporter: Sergey Tuchkin <tuchkin>
Component: Печать ; Диалог печатиAssignee: Илья Шпигорь <shpigor>
Status: CLOSED FIXED QA Contact: Денис Баранов <baraka>
Severity: major    
Priority: P2 CC: lav
Version: 1.0.12   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 5395    
Attachments: форма
Вывод на печать в Linux
Вывод на печать в Windows XP SP3
Скриншот графики

Description Sergey Tuchkin 2010-04-29 12:41:22 MSD
При использовании текста с подчеркиванием в печатной форме, черта под текстом может оказаться на соседней ячейке. Это происходит в том случае, когда текст не помещается в ячейку и печатается в 2 строки. При этом содержимое соседней ячейки (под текущей) перекрывает текст текущей ячейки (как и должно быть), но черта под текстом текущей ячейки прорисовывается поверх соседней снизу ячейки, как бы перечеркивая её содержимое.
Comment 1 Sergey Tuchkin 2010-04-29 12:41:54 MSD
Created attachment 1674 [details]
форма
Comment 2 Sergey Tuchkin 2010-04-29 12:42:19 MSD
Created attachment 1675 [details]
Вывод на печать в Linux
Comment 3 Sergey Tuchkin 2010-04-29 12:42:40 MSD
Created attachment 1676 [details]
Вывод на печать в Windows XP SP3
Comment 4 Илья Шпигорь 2010-04-29 17:12:10 MSD
Created attachment 1678 [details]
Скриншот графики

Как видно на скриншоте, ошибка воспроизводиться и в X-ах (wine снизу).
Поэтому, скорее всего, проблема не в печати, а в алгоритме вывода текста.
Comment 5 Sergey Tuchkin 2010-04-29 17:33:48 MSD
Согласен, но я как-то не сообразил, в какой раздел лучше положить баг. Решил, что лучше уже по традиции положу в печать, а вы сами разберётесь.
Comment 6 Илья Шпигорь 2010-04-30 12:48:19 MSD
Выложил патч.

Проблема в том, что если в функции ExtTextOutW текст не помещается в переданный прямоугольник и установлен флаг ETO_CLIPPED, то текст обрезается. При этом подчеркивание и зачеркивание текста отрисовывается так, как если бы текст поместился.

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

Проверял на этом же mxl файле, только зачеркнутый текст. Проблема не воспроизводится.

При исправлении ExtTextOutW в gdi32 печать также починилась.
Comment 7 Илья Шпигорь 2010-04-30 12:52:22 MSD
В оригинальном wine 1.1.43 проблема с подчеркиванием решена, но с зачеркиванием текста - нет.
Comment 8 Илья Шпигорь 2010-04-30 14:41:04 MSD
(In reply to comment #7)
> В оригинальном wine 1.1.43 проблема с
> подчеркиванием решена, но с зачеркиванием
> текста - нет.

Ошибся. Проблема воспроизводиться на оригинальном wine.

Comment 9 Денис Баранов 2010-12-03 18:42:51 MSK
Для Кея исправления сделаны. Внедрение прошло успешно.