Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 5226 - Неверный масштаб шрифта в банк-клиенте балтийского банка   Make a simular bug
Summary: Неверный масштаб шрифта в банк-клиенте балтийского банка
Status: CLOSED FIXED
Alias: None
Product: WINE@Etersoft
Classification: Продукты (Products)
Component: Шрифты (show other bugs)
Version: 1.0.12
Hardware: PC All
: P3 major
Target Milestone: ---
Assignee: Илья Шпигорь
QA Contact: Andrey Vusik
URL:
Whiteboard:
Keywords:
Depends on: 4409
Blocks: 5032 7505
  Show dependency treegraph
 
In work:
Reported: 2010-03-10 18:19 MSK by Vitaly Lipatov
Modified: 2011-08-03 18:05 MSK (History)
2 users (show)

See Also:
Заявки RT:
Связано с:
Дата напоминания:


Attachments
Скриншот (143.06 KB, image/jpeg)
2010-11-18 03:58 MSK, Илья Шпигорь
Details
Скриншот проблемы (32.64 KB, image/png)
2010-11-18 03:58 MSK, Andrey Vusik
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Vitaly Lipatov 2010-03-10 18:19:55 MSK
В бутылка bank/baltbank-new в Параметрах, Просмотр
есть возможность выбора шрифта для экрана и для принтера.
Для принтера получается гигантский размер букв.
Такой же эффект при предварительном просмотре.
Comment 1 Vitaly Lipatov 2010-03-10 19:34:40 MSK
В свежесозданной бутылке bank/baltbank-font то же самое.
Возможно, проблема давняя. Илья увидел её и на 1.0.9.
Comment 2 Денис Баранов 2010-03-14 16:07:33 MSK
Так же неверный масштаб шрифта в IE.
Comment 3 Andrey Vusik 2010-03-14 17:00:35 MSK
(In reply to comment #2)
> Так же неверный масштаб шрифта в IE.
> 

Замечено только в бутылке 1c81/1c81.
wine --update не помогает.
Comment 4 Andrey Vusik 2010-03-14 18:34:24 MSK
Плюс: бутылка office/mso/mso2003 -- excel.exe -- там внизу есть вкладки Лист1 Лист2 Лист3 -- у них шрифт великоват.
Comment 5 Vitaly Lipatov 2010-03-15 17:35:48 MSK
(In reply to comment #4)
> Плюс: бутылка office/mso/mso2003 -- excel.exe -- там внизу
> есть вкладки Лист1 Лист2 Лист3 -- у них шрифт
> великоват.
В советах (открываются при первом запуске) свежеустановленной 1С
шрифт больше в несколько раз.

Comment 6 Илья Шпигорь 2010-03-17 12:42:20 MSK
Предлагаю решать здесь только проблему выбора шрифта для печати в стандартном диалоге fontdlg. На все остальные проблемы в 1с и mso надо завести отдельные баги.
Comment 7 Илья Шпигорь 2010-03-17 13:56:45 MSK
Выложил патч.

Проблема в стандартном диалоге выбора шрифта. Размер шрифта пересчитывается исходя из LOGPIXELSY устройства, для которого выбирается шрифт. Для монитора это значение равно 96, для принтера 600.

Формула выглядит так:

lpxx->lfHeight = - MulDiv( lpcf->iPointSize, GetDeviceCaps(hdc, LOGPIXELSY), 720);

Судя по всему здесь считается logical size из point size. Очевидно что для принтера logical size считается неправльно (будет значительно больше).

Проверил под windows - при выборе в этом диалоге одинакового размера шрифта в результате пересчета logical size для принтера и экрана одинаковые.

Решение заключается в том, чтобы считать logical size для принтера по формуле:
lpxx->lfHeight = - MulDiv( lpcf->iPointSize, GetDeviceCaps(hdc, LOGPIXELSY), 4500);

Число 4500 подобрано из соображений, что 96/72 = 4/3 и 600/450=4/3. 
Лишний ноль в конце связан с тем, что выбранный размер зачем-то домножается на 10.
Comment 8 Andrey Vusik 2010-03-30 20:17:18 MSD
В 1.0.12-eter4.1/3 воспроизводится. Или там ещё нет?
Comment 9 Илья Шпигорь 2010-03-31 12:52:09 MSD
Created attachment 1606 [details]
Скриншот
Comment 10 Илья Шпигорь 2010-03-31 12:53:19 MSD
(In reply to comment #8)
> В 1.0.12-eter4.1/3 воспроизводится. Или там ещё
> нет?

На 1.0.12-eter4.1/3 не удалось воспроизвести.
См. скриншот. Бутылка bank/baltbank-new.

Comment 11 Andrey Vusik 2010-03-31 13:30:11 MSD
> Такой же эффект при предварительном
> просмотре.
> 
Проблема в этой бутылке осталась.

Отправляемые документы -> Список отправляемых -> Предварительный просмотр
Comment 12 Andrey Vusik 2010-03-31 13:30:37 MSD
Created attachment 1607 [details]
Скриншот проблемы
Comment 13 Andrey Vusik 2010-03-31 13:31:24 MSD
Или это уже друга проблема?
Comment 14 Илья Шпигорь 2010-03-31 13:34:48 MSD
(In reply to comment #13)
> Или это уже друга проблема?
> 

Немного другая, но решать ее надо здесь. Переоткрываю багу.
Comment 15 Илья Шпигорь 2010-03-31 14:42:43 MSD
Выложил патч.

Проблема связана с коммитом:

commit 77eb0e0097d153158a27decbbfb0f39b69c28bb7
Author: Ilya Shpigor <shpigor@etersoft.ru>
Date:   Tue Nov 10 14:25:52 2009 +0300
    gdi32: Use the logical device coordinates for scalable text faces (eterbug #4409)

Там используется пересчет в логические координаты. В случае с принтером LOGPIXELSY устройства значительно больше чем у монитора. Поэтому считается неправильно.

Решение заключается в добавлении проверки - является ли устройство монитором. Если нет - хак не работает.
Comment 16 Илья Шпигорь 2010-04-01 11:02:30 MSD
Плохое решение. Патч на багу #4409 сломал еще и #5346.

Думаю лучше пересмотреть именно патч на #4409, т.к. слишком много чего портит.
Comment 17 Илья Шпигорь 2010-04-06 16:40:25 MSD
Выложил новое решение для баги #4409. Проблема должна решиться.

См. http://bugs.etersoft.ru/show_bug.cgi?id=4409#c15
Comment 18 Денис Баранов 2010-04-11 17:23:00 MSD
Принято.
WINE@Etersoft 1.0.12 eter5/eter4