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
Ошибка серьезная так как из-за неё при создании новых документов форма его кривая получается. Ошибка не воспроизводится если поставить виндовые шрифты. Очевидно, 1С определяет разрешение экрана по метрикам или другим параметрам шрифтов. 1С проверяет параметры шрифта Microsoft Sans Serif (файл micross.ttf). Сейчас он представляет собой модификацию Tahoma и его метрики не соответствуют оригинальным. Если использовать оригинальный micross.ttf ошибка не проявляется. На самом деле, 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 может заменять любой шрифт. Created attachment 1673 [details]
Скриншот в windows
Ошибка воспроизводится в Windows если в реестре подменять MS Shell Dlg не на Microsoft Sans Serif, а на Tahoma.
Выложил патч. Алгоритм для проверки разрешения в 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. (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. > Извините я не понял откуда можно скачать патч. (In reply to comment #3) > 1С проверяет параметры шрифта Microsoft Sans Serif > (файл micross.ttf). Сейчас он представляет собой > модификацию Tahoma и его метрики не > соответствуют оригинальным. > > Если использовать оригинальный micross.ttf > ошибка не проявляется. > Из винды выдернул этот шрифт и закинул его в wibe_c/windows/fonts/ конфигуратор ошибку больше не выдает и созданная обработка нормально отображается в винде. Большое спасибо за помощь :) > Извините я не понял откуда можно скачать
> патч.
Патч приложен к сборке wine 1.0.12 eter5.4.
Должна быть доступна на странице скачивания продукта - testing.
Подтверждаю. Метод
>Из винды выдернул этот шрифт и закинул его
>в wibe_c/windows/fonts/
>конфигуратор ошибку больше не выдает и
>созданная обработка нормально
>отображается в винде. Большое спасибо за
>помощь :)
реально помогает. Только папка Fonts а не fonts ) Неплохо было бы закинуть этот шрифт сразу в сборку.
(In reply to comment #10) > реально помогает. Только папка Fonts а не fonts ) > Неплохо было бы закинуть этот шрифт сразу в > сборку. > Какие пакеты WINE@Etersoft у вас установлены? 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, никак не установлю.. WINE@Etersoft 1.0.12 eter7/eter12 В папке windows/fonts нет шрифтов, разрешение 96dpi. (In reply to comment #12) ... > Скачал eter7/eter12, никак не установлю.. Пишите в support@etersoft.ru (In reply to comment #14) > (In reply to comment #12) > ... > > Скачал eter7/eter12, никак не установлю.. > Пишите в support@etersoft.ru > зачем? ) я имел ввиду время нет в "то время как сервак свободен от бухов" Баг опять воспроизводится на последней сборке, некорректно масштабируются окна, заявка номер 16293 (параметры входа по нх на клиент в заявке). Протестировал на текущей сборке wine (1.0.12-eter7.19/14) в новой бутылке. Бага не воспроизводится. Клиенту можно посоветовать удалить ~/.wine и установить 1c заново. Также проблема может быть связана с установкой сторонних шрифтов - их ставить не надо. wine (1.0.12-eter7.23/14) бутылка bugs/5932 в 1С шрифты 96dpi отстутсвуют Бага не воспроизводиться Принята Багу перепроверил. На 1.0.12-eter7.23/14 не воспроизводится. Закрываю |