Bug 4425

Summary: 1С 8.1: Разработку форм рекомендуется выполнять в разрешении 96 DPI
Product: WINE@Etersoft Reporter: Глеб Кордюков <sonner>
Component: ОбщееAssignee: Анатолий <anatoliylv>
Status: CLOSED WORKSFORME QA Contact: Денис Баранов <baraka>
Severity: critical    
Priority: P1 CC: anatoliylv, baraka, broyde1991, coust, lav, lordmatrix, regan, whoim
Version: 1.0.12   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: 11719, 16293 Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 437, 5395, 5634    
Attachments: Скриншот в windows

Description Глеб Кордюков 2009-11-09 19:04:35 MSK
eter 11\6
в winecfg 96 dpi
Конфигуратор при открытии форм выдает - «Разработку форм рекомендуется выполнять в разрешении 96 DPI»

Справка 1с говорит, что ошибка вызывается неправильным выставлением dpi, но она возникает и при 96 dpi.
Comment 1 lordmatrix 2010-04-02 08:53:27 MSD
Ошибка серьезная так как из-за неё при создании новых документов форма его кривая получается.
Comment 2 Илья Шпигорь 2010-04-28 15:03:59 MSD
Ошибка не воспроизводится если поставить виндовые шрифты.

Очевидно, 1С определяет разрешение экрана по метрикам или другим параметрам шрифтов.
Comment 3 Илья Шпигорь 2010-04-28 17:08:15 MSD
1С проверяет параметры шрифта Microsoft Sans Serif (файл micross.ttf). Сейчас он представляет собой модификацию Tahoma и его метрики не  соответствуют оригинальным.

Если использовать оригинальный micross.ttf ошибка не проявляется.
Comment 4 Илья Шпигорь 2010-04-29 12:04:01 MSD
На самом деле, 1С проверяет метрики шрифта DEFAULT_GUI_FONT, который получает через функцию GetStockObject. В windows и wine это растровый MS Shell Dlg, который в реестре подменяется на векторный Microsoft Sans Serif.

Если шрифт MS Shell Dlg вместо Microsoft Sans Serif заменять на Tahoma, то ошибка воспроизводиться и в windows. Очевидно это баг в 1С - привязываться к метрикам конкретного шрифта Microsoft Sans Serif. Ведь MS Shell Dlg может заменять любой шрифт.
Comment 5 Илья Шпигорь 2010-04-29 12:05:39 MSD
Created attachment 1673 [details]
Скриншот в windows

Ошибка воспроизводится в Windows если в реестре подменять MS Shell Dlg не на Microsoft Sans Serif, а на Tahoma.
Comment 6 Илья Шпигорь 2010-04-29 13:52:45 MSD
Выложил патч.

Алгоритм для проверки разрешения в 1с8 примерно такой:

1. через GetStockObject получить HFONT на DEFAULT_GUI_FONT 
2. SelectObject(DEFAULT_GUI_FONT) для временного DC
3. Отрисовать тестовую строку во временный DC
4. с помощью GetTextExtentPoint32 определить сколько места надо под тестовую строку

Тестовая строка выглядит так:
The BitBlt function performs a bit-block transfer of the color data iijijliijijliijijliijijliij

Для виндового Microsoft Sans Serif при 96 dpi ширина строки 357, для wine'овского 387. Скорее всего эту ширину и проверяет 1С.

Решение заключается в подстановке нужной ширины в функции GetTextExtentPoint32 для этой строки в 1с8.
Comment 7 lordmatrix 2010-05-04 18:06:14 MSD
(In reply to comment #6)
> Выложил патч.
> 
> Алгоритм для проверки разрешения в 1с8
> примерно такой:
> 
> 1. через GetStockObject получить HFONT на DEFAULT_GUI_FONT 
> 2. SelectObject(DEFAULT_GUI_FONT) для временного DC
> 3. Отрисовать тестовую строку во временный
> DC
> 4. с помощью GetTextExtentPoint32 определить сколько
> места надо под тестовую строку
> 
> Тестовая строка выглядит так:
> The BitBlt function performs a bit-block transfer of the color data
> iijijliijijliijijliijijliij
> 
> Для виндового Microsoft Sans Serif при 96 dpi ширина
> строки 357, для wine'овского 387. Скорее всего
> эту ширину и проверяет 1С.
> 
> Решение заключается в подстановке нужной
> ширины в функции GetTextExtentPoint32 для этой
> строки в 1с8.
> 
Извините я не понял откуда можно скачать патч.

Comment 8 lordmatrix 2010-05-05 08:30:40 MSD
(In reply to comment #3)
> 1С проверяет параметры шрифта Microsoft Sans Serif
> (файл micross.ttf). Сейчас он представляет собой
> модификацию Tahoma и его метрики не 
> соответствуют оригинальным.
> 
> Если использовать оригинальный micross.ttf
> ошибка не проявляется.
> 
Из винды выдернул этот шрифт и закинул его в wibe_c/windows/fonts/ 
конфигуратор ошибку больше не выдает и созданная обработка нормально отображается в винде. Большое спасибо за помощь :)
Comment 9 Илья Шпигорь 2010-05-05 11:09:58 MSD
> Извините я не понял откуда можно скачать
> патч.

Патч приложен к сборке wine 1.0.12 eter5.4.
Должна быть доступна на странице скачивания продукта - testing.

Comment 10 Alexander Burdin 2010-08-11 09:52:59 MSD
Подтверждаю. Метод
>Из винды выдернул этот шрифт и закинул его
>в wibe_c/windows/fonts/ 
>конфигуратор ошибку больше не выдает и
>созданная обработка нормально
>отображается в винде. Большое спасибо за
>помощь :)

реально помогает. Только папка Fonts а не fonts ) Неплохо было бы закинуть этот шрифт сразу в сборку.
Comment 11 Денис Баранов 2010-08-11 10:52:30 MSD
(In reply to comment #10)
> реально помогает. Только папка Fonts а не fonts )
> Неплохо было бы закинуть этот шрифт сразу в
> сборку.
> 

Какие пакеты WINE@Etersoft у вас установлены?
Comment 12 Alexander Burdin 2010-08-11 10:56:50 MSD
Name       : wine-etersoft
Arch       : i586
Version    : 1.0.12
Release    : eter6.16centos
Size       : 93 M

Name       : wine-etersoft-sql
Arch       : i586
Version    : 1.0.12
Release    : eter11centos
Size       : 29 M

Скачал eter7/eter12, никак не установлю.. 
Comment 13 Денис Баранов 2010-08-11 13:13:12 MSD
WINE@Etersoft 1.0.12 eter7/eter12
В папке windows/fonts нет шрифтов, разрешение 96dpi.
Comment 14 Vitaly Lipatov 2010-08-12 14:16:30 MSD
(In reply to comment #12)
...
> Скачал eter7/eter12, никак не установлю.. 
Пишите в support@etersoft.ru

Comment 15 Alexander Burdin 2010-08-12 15:06:50 MSD
(In reply to comment #14)
> (In reply to comment #12)
> ...
> > Скачал eter7/eter12, никак не установлю.. 
> Пишите в support@etersoft.ru
> 

зачем? ) я имел ввиду время нет в "то время как сервак свободен от бухов"
Comment 16 Максим Георгиевский 2010-10-20 14:16:24 MSD
Баг опять воспроизводится на последней сборке, некорректно масштабируются окна, заявка номер 16293 (параметры входа по нх на клиент в заявке).
Comment 17 Илья Шпигорь 2010-10-20 14:45:41 MSD
Протестировал на текущей сборке wine (1.0.12-eter7.19/14) в новой бутылке.

Бага не воспроизводится.

Клиенту можно посоветовать удалить ~/.wine и установить 1c заново. Также проблема может быть связана с установкой сторонних шрифтов - их ставить не надо.
Comment 18 Marat Sharipov 2010-10-30 16:15:26 MSD
wine (1.0.12-eter7.23/14)
бутылка bugs/5932 в 1С шрифты 96dpi отстутсвуют
Бага не воспроизводиться
Принята
Comment 19 Глеб Кордюков 2010-11-09 15:29:12 MSK
Багу перепроверил. На 1.0.12-eter7.23/14 не воспроизводится. Закрываю