При использовании текста с подчеркиванием в печатной форме, черта под текстом может оказаться на соседней ячейке. Это происходит в том случае, когда текст не помещается в ячейку и печатается в 2 строки. При этом содержимое соседней ячейки (под текущей) перекрывает текст текущей ячейки (как и должно быть), но черта под текстом текущей ячейки прорисовывается поверх соседней снизу ячейки, как бы перечеркивая её содержимое.
Created attachment 1674 [details] форма
Created attachment 1675 [details] Вывод на печать в Linux
Created attachment 1676 [details] Вывод на печать в Windows XP SP3
Created attachment 1678 [details] Скриншот графики Как видно на скриншоте, ошибка воспроизводиться и в X-ах (wine снизу). Поэтому, скорее всего, проблема не в печати, а в алгоритме вывода текста.
Согласен, но я как-то не сообразил, в какой раздел лучше положить баг. Решил, что лучше уже по традиции положу в печать, а вы сами разберётесь.
Выложил патч. Проблема в том, что если в функции ExtTextOutW текст не помещается в переданный прямоугольник и установлен флаг ETO_CLIPPED, то текст обрезается. При этом подчеркивание и зачеркивание текста отрисовывается так, как если бы текст поместился. Решение заключается в проверке - выходит ли за пределы прямоугольника, переданного в ExtTextOutW, координата y начала линий зачеркивания и подчеркивания. Если да, то эти линии не рисуются. Проверял на этом же mxl файле, только зачеркнутый текст. Проблема не воспроизводится. При исправлении ExtTextOutW в gdi32 печать также починилась.
В оригинальном wine 1.1.43 проблема с подчеркиванием решена, но с зачеркиванием текста - нет.
(In reply to comment #7) > В оригинальном wine 1.1.43 проблема с > подчеркиванием решена, но с зачеркиванием > текста - нет. Ошибся. Проблема воспроизводиться на оригинальном wine.
Для Кея исправления сделаны. Внедрение прошло успешно.