Страница 1 из 1

Настройка текста ClearType

Добавлено: 31 авг 2015, 12:08
Леонид
Добрый день!

С переходом на версию 2015.1.12.0 на некоторых компьютерах пользователей стал возникать странный баг, - "слетают" настройки сглаживания cleartype.

Как это происходит. Пользователь печатает отчёт, в котором один DataBand, на нём один компонент Text с включённым флагом AllowHtmlTags = true и TextQuality = Wysiwyg. Далее, пользователь нажимаем кнопку редактирования отчёта, правит необходимый текст (причём это действие опционально и выполняется не всегда), потом просто печатает отчёт (несколько страниц).
Печать происходит на разные принтеры, с разных компьютеров. После печати через несколько минут флаг Clear Type меняется на сброшенный и сразу видно ухудшение качества шрифтов.

Нам это напомнило, проблему, которую мы так и смогли "отловить" много лет назад, описана она здесь http://forumru.stimulsoft.com/viewtopic ... othingType.

Понятно, что проблема "плавающая" и отловить её почти невозможно, однако есть определённая корреляция:

В отчёте есть компонент Text или RichText, с обязательно включёнными флагами AllowHtmlTags = true и TextQuality = Wysiwyg.

Пробовали мониторить софт procmon.exe от Sysinternals - не дало результатов, однако у пользователей тем не менее стали возникать такие ситуации довольно часто. Этот пост мы пишем потому, что жалоба уже от 5-го пользователя за период, примерно, в несколько месяцев.

В связи с этим просьба посмотреть в исходных кодах, не меняет ли (т.е. не записывает ли туда значение) Stimul ветку реестра [HKEY_CURRENT_USER\Control Panel\Desktop] и флаги в ней: FontSmoothing и FontSmoothingType.

Re: Настройка текста ClearType

Добавлено: 31 авг 2015, 14:31
HighAley
Здравствуйте, Леонид.

При использовании Rich Text или Allow HTML Tags возникают проблемы с печатью и экспортом из-за функции ClearType. Текст получается размазанным. Поэтому мы отключаем его на время экспорта, а потом включаем обратно. В данном алгоритме есть множество "если", которые могут вызывать данную проблему.

Уточните, пожалуйста, с какой версии вы перешли на версию 2015.1.12? Какая операционная система стоит на машинах, где возникает данная проблема?

Также вы можете попробовать отключить следующее статическое свойство. Но мы не гарантируем качество печати в данном случае.

Код: Выделить всё

StiOptions.Export.DisableClearTypeDuringExport = false;
Спасибо.

Re: Настройка текста ClearType

Добавлено: 31 авг 2015, 14:57
Леонид
Уточните, пожалуйста, с какой версии вы перешли на версию 2015.1.12?
С версии 2013.2.1700.0.
Какая операционная система стоит на машинах, где возникает данная проблема?
Windows 7 Pro x64, 4Gb RAM, в среднем такая конфигурация.

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

Re: Настройка текста ClearType

Добавлено: 01 сен 2015, 14:55
HighAley
Здравствуйте, Леонид.

Мы меняем значение ClearType с помощью функции SystemParametersInfo() из сборки user32.dll.

Уточните, пожалуйста, в каком дизайнере редактируются отчёты и используется ли HTML Preview?
Мы не можем воспроизвести проблему на данный момент. По коду везде, где мы отключаем ClearType, мы его включаем обратно. Можете ли вы написать последовательность действий, которые приводят к данной проблеме?

Пробовали ли вы отключать эту опцию с помощью DisableClearTypeDuringExport?

Спасибо.

Re: Настройка текста ClearType

Добавлено: 01 сен 2015, 16:56
Леонид
Алексей, добрый день!
Уточните, пожалуйста, в каком дизайнере редактируются отчёты?
Используем так, динамическое создание отчётов в виде:

Код: Выделить всё

StiReport stiReport = new StiReport();
StiViewerControl stiPreview = new StiViewerControl();
...
stiReport.Render(false); // показываем свой диалог
...
stiPreview.Report = stiReport;
this.Controls.Add(stiPreview); // обычная форма в форме MDI
То есть, пользователь нажимает "Печать такого-то отчёта...", дальше вызывается вышеуказанный код (с множеством дополнений и исправлений, для каждого отчёта своих). Пользователь, нажимает кнопку редактирования отчёта, что-то там исправляет, сохраняет отчёт, нажимает кнопку "Печать", печатает на принтер. Всё, после этого через 1-3 мин. можно лицезреть отсутствие cleartype.

Да, вы правы, мы тоже не смогли воспроизвести проблему, как ни старались. Однако, она имеет место быть. Скажем так, из сотни компьютеров, примерно у 5 пользователей она уже возникла. Мало того, там где она возникла, мы вручную в реестре правили значение обратно и проблема на том компьютере более не возникала, что странно.
Ещё не понятен момент смены флага, как это API Windows его меняет без прав администратора, ведь мы, чтобы потом в реестре этот флаг поменять, логинимся под админом.
Используется ли HTML Preview?
Нет. Пользуемся только отчётами, где есть Text или RichText компоненты с установленными флагами AllowHtmlTags = true и TextQuality = Wysiwyg, т.к. у нас есть сложные документы, где необходимо в текст вставлять различный размер шрифта, значения переменных из базы и т.д.
Пробовали ли вы отключать эту опцию с помощью DisableClearTypeDuringExport?
Да, мы поставили для всех отчётов эту опцию. Попробовали распечатать несколько документов, - выглядят хорошо, изменений не обнаружили пока.
Сегодня второй день эксперимента, пока из пользователей никто не жаловался, а так же, новых обращений по проблеме не было.
Необходимо подождать некоторое время, чтобы собрать статистику. Возможно установка этого флага в false действительно решит проблему, время покажет.

Re: Настройка текста ClearType

Добавлено: 01 сен 2015, 17:27
HighAley
Здравствуйте.

В реестр мы не лезем. Просто используем следующий код:

Код: Выделить всё

SystemParametersInfo(SPI_SETFONTSMOOTHING, 1, ref pv, SPI_UPDATEINIFILE | SPI_SENDCHANGE);
Установка флага в false данную проблему уберёт полностью, но могут возникнуть другие проблемы.
Вы их сразу увидите. Может сильно ухудшиться качество текста.

Пишите, если появится дополнительная информация по проблеме. Будем разбираться.

Спасибо.