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

Отработанное время:
Продуктивное время:
Bug 4409 - 1С 7.7: Маленький шрифт в окне поиска   Make a simular bug
Summary: 1С 7.7: Маленький шрифт в окне поиска
Status: CLOSED FIXED
Alias: None
Product: WINE@Etersoft
Classification: Продукты (Products)
Component: Шрифты (show other bugs)
Version: 1.0.11
Hardware: PC All
: P3 normal
Target Milestone: ---
Assignee: Dmitry Timoshkov
QA Contact: Станислав Коробейников
URL:
Whiteboard:
Keywords:
: 4456 8115 (view as bug list)
Depends on: 4259
Blocks: 42 5226 5346
  Show dependency treegraph
 
In work:
Reported: 2009-11-06 14:27 MSK by Константин Кондратюк
Modified: 2012-04-30 16:25 MSK (History)
9 users (show)

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


Attachments
Вид маленького текста в строке поиска (67.77 KB, image/png)
2011-06-29 19:04 MSK, Станислав Коробейников
Details
XP 96 dpi (38.51 KB, image/png)
2012-04-27 07:56 MSK, Dmitry Timoshkov
Details
XP 120 dpi (40.59 KB, image/png)
2012-04-27 07:57 MSK, Dmitry Timoshkov
Details
wine 96 dpi (23.73 KB, image/png)
2012-04-27 07:58 MSK, Dmitry Timoshkov
Details
wine 110 dpi (34.57 KB, image/png)
2012-04-27 07:58 MSK, Dmitry Timoshkov
Details
WINEDEBUG=+font wine 1cv7s.exe& >wine.log (286.28 KB, text/x-log)
2012-04-28 13:09 MSK, Svetlana Zhukova
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Константин Кондратюк 2009-11-06 14:27:41 MSK
В некоторых контролах 1С 7.7, например, в окне поиска на панели инструментов шрифт имеет очень маленький размер (4-5 по оценкам пользователей). Очень неудобно пользоваться.
Проявляется в нескольких местах, ещё:
> окно запроса "сохранить/отменить изменения" (rt #11729)
Comment 1 Vitaly Lipatov 2009-11-06 16:16:02 MSK
Только в этой панели такой размер и появляется... Я не смог найти багу, мы её исправляли не раз, возможно ещё до появления багзиллы.
Comment 2 Vitaly Lipatov 2009-11-06 19:34:22 MSK
Раньше у нас в CreateFontIndirectW (dlls/gdi32/font.c) был такого вида хак:
/* FIXME: due font overrides hack for 1C find text combobox */
if (plf->lfHeight==8)
{
        fontPtr->logfont.lfHeight=-10;
        //strcpyW(fontPtr->logfont.lfFaceName,ArialW);
}

Т.е. фиксированный шрифт 8 заменяли на масштабируемый 10.
Дополнительно можно подставлять другой шрифт, но это хуже.

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

Если проблема воспроизводится, надо подумать, что бы с ней сделать. По возможности решение лучше организовать в закрытой части.
Comment 3 Илья Шпигорь 2009-11-10 15:04:11 MSK
Не уверен, что удалось полностью разобраться в проблеме, но похоже дело в следующем.
Когда приложение пытается создать не масштабируемый логический шрифт с размером 8, wine на самом деле выбирает масштабируемый физический в функции WineEngCreateFontInstance.

MSDN об этом пишет:
The CreateFontIndirect function creates a logical font with the characteristics specified in the LOGFONT structure. When this font is selected by using the SelectObject function, GDI's font mapper attempts to match the logical font with an existing physical font. If it fails to find an exact match, it provides an alternative whose characteristics match as many of the requested characteristics as possible.

Т.е. должен подбираться шрифт с наиболее подходящими характеристиками. В wine выбирается первый попавшийся масштабируемый шрифт.

Проблема в том, что для масштабируемого шрифта используется положительный размер. Возможно, в этом не должно быть ошибки. Однако в wine в этой ситуации выбирается шрифт с минимальной высотой.

Решение заключается в том, чтобы преобразовывать положительный размер (point'ы) в отрицательный размер (логические координаты устройства), в случае когда используется масштабируемый шрифт с положительным размером.

По сути получился хак, но надеюсь, что ничего не сломается.
Comment 4 Vitaly Lipatov 2009-11-11 14:12:00 MSK
Так а возможно преобразовать только в том случае, когда точно совпадающий по размеру шрифт не найден?
Comment 5 Илья Шпигорь 2009-11-11 15:27:01 MSK
> Так а возможно преобразовать только в том
> случае, когда точно совпадающий по размеру
> шрифт не найден?

Не думаю. Проблема в том, что проверка на соответствие размеров осуществляется если нет масштабируемого шрифта и wine вынужден использовать не масштабируемый. Сейчас масштабируемый шрифт есть, поэтому размеры вообще не проверяются.
Comment 6 Константин Кондратюк 2009-11-13 16:55:33 MSK
*** Bug 4456 has been marked as a duplicate of this bug. ***
Comment 7 Andrey Vusik 2009-11-25 18:25:50 MSK
Принято.
wine-etersoft-1.0.12-alt1
Comment 8 Илья Шпигорь 2010-04-01 12:21:15 MSD
Переоткрываю ошибку для дальнейшего исследования. Т.к. патч привел к багам #5226, #5346
Comment 9 Илья Шпигорь 2010-04-01 12:24:04 MSD
Если убрать в реестре замену растрового MS Sans Serif на векторный Microsoft Sans Serif (замена нужна для баги #4259), то в окне поиска шрифт правильного размера.
Comment 10 Илья Шпигорь 2010-04-01 12:28:52 MSD
Проблема в #4259 заключается в том, что для растрового шрифта MS Sans Serif нет курсива и жирного в wine. Поэтому его пришлось заменить на векторный.
Comment 11 Илья Шпигорь 2010-04-01 12:54:06 MSD
Насколько понял из тестирования происходит следующее:

Для растрового шрифта положительный размер - это высота символа в point'ах
Для векторного шрифта положительный размер - это высота ячейки в point'ах
Для векторного шрифта отрицательный размер - это высота ячейки в логических координатах.

Тогда багу можно объяснить так - происходит подстановка растрового шрифта на векторный, но его размер уменьшается, т.к. теперь он означает высоту ячейки, а не высоту символа. Размер в данном случае положительный.
Comment 12 Илья Шпигорь 2010-04-01 13:07:06 MSD
(In reply to comment #11)
> Для растрового шрифта положительный
> размер - это высота символа в point'ах
> Для векторного шрифта положительный
> размер - это высота ячейки в point'ах
> Для векторного шрифта отрицательный
> размер - это высота ячейки в логических
> координатах.

Поправка:

Для векторного шрифта положительный размер - это высота ячейки в логических координатах

Для векторного шрифта отрицательный размер - это высота символа в логических координатах.

Comment 13 Илья Шпигорь 2010-04-01 13:09:13 MSD
Решение должно быть такое же как и было - пересчитывать размер символа растрового шрифта в point'ах в размер символа векторного шрифта в логических координатах. 

Осталось только понять как различить - была ли подмена растрового шрифта на векторный.
Comment 14 Илья Шпигорь 2010-04-06 15:59:10 MSD
Сейчас и для САМО-тура и для 1с7 срабатывает такая подстановка:

trace:font:WineEngCreateFontInstance substituting L"MS Sans Serif",1 -> L"Microsoft Sans Serif",1

т.е. charset в обоих случаях одинаковый.

Значит замену шрифта в реестре только для определенного charset не сделать.
Comment 15 Илья Шпигорь 2010-04-06 16:38:57 MSD
Выложил реверт текущего решения и новое исправление.

Решение заключается в пересчете размера шрифта из point в логические координаты если была подмена шрифта MS Sans Serif и приложение запросило положительную высоту этого шрифта. 

По сути получился хак. Для корректного решения надо реализовать наклонный и жирный шрифт MS Sans Serif, чтобы починить #4259 без подмены шрифтов.
Comment 16 Константин Кондратюк 2010-04-06 16:41:12 MSD
(In reply to comment #15)
> По сути получился хак. Для корректного
> решения надо реализовать наклонный и
> жирный шрифт MS Sans Serif, чтобы починить #4259 без
> подмены шрифтов.

А бага такая есть? Надо бы в блокирующие...
Comment 17 Денис Баранов 2010-04-11 16:43:55 MSD
Принято.
WINE@Etersoft 1.0.12 eter5/eter4
Comment 18 Станислав Коробейников 2011-06-29 19:03:23 MSK
Сейчас на server'е такая ситуация повторилась.
wine-etersoft-sql-1.0.12-alt21
wine-etersoft-1.0.12-alt11.13
Comment 19 Станислав Коробейников 2011-06-29 19:04:29 MSK
Created attachment 2234 [details]
Вид маленького текста в строке поиска
Comment 20 Виталий Перов 2011-08-03 18:02:29 MSK
Откатил патчи из eterhack:
commit bfba4c56123fba17f512b49694c8b1fa291211bf
Author: Ilya Shpigor <shpigor@etersoft.ru>
Date:   Wed Mar 31 14:35:58 2010 +0400

    gdi32: Fix patch for scalable text faces (eterbug #5226 #4409)

commit 35d4410359246de7a79dfa45bdb217a8681269d1
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)

Патчи приводят к проблеме, описанной в баге 4619
Требуется переделать решение.
После этого надо проверить на всех трёх инсталляторах, описанных в баге 4619,
Также нужно проверить багу 5226.
Comment 21 Виталий Перов 2011-08-03 18:09:20 MSK
откатил патчи и для school
Comment 22 Станислав Коробейников 2011-08-05 14:13:02 MSK
Тут странная ситуация. Маленький шрифт сейчас именно в .wine-buh. 
Если сделать .wine заново, или обновить другую существующую, проблема не воспроизводится.
Comment 23 Виталий Перов 2011-08-08 19:29:37 MSK
(В ответ на comment #22)
> Тут странная ситуация. Маленький шрифт сейчас именно в .wine-buh. 
> Если сделать .wine заново, или обновить другую существующую, проблема не
> воспроизводится.

А ты как проверяешь?
Если запускать через wine из пакета, то всё должно работать.
Воспроизводится только при запуске wine из git-репозитория
Comment 24 Станислав Коробейников 2011-08-08 20:20:11 MSK
(В ответ на comment #23)
> А ты как проверяешь?

Запускаю 1с7.7 в нашем .wine-buh на server -- воспроизводится. Создаю новую .wine на server, ставлю туда 1c, запускаю там же -- не воспроизводится.
Comment 25 Константин Кондратюк 2011-09-13 17:15:33 MSK
На текущем eterhack воспроизводится.

Интересно, нашёл комментарий Ильи к #4619:
"В текущем релизе оригинального wine 1.1.34 бага #4409 решена. Поэтому при merge
eterhack'а с оригинальным wine необходимо отктатить этот патч и на #4409."
Comment 26 Dmitry Trubin 2012-02-06 15:07:07 MSK
*** Bug 8115 has been marked as a duplicate of this bug. ***
Comment 30 Константин Кондратюк 2012-04-13 09:46:24 MSK
Может быть, имеет смысл убрать замену и избавиться от ряда проблем, возникающих из-за неё? А ошибку 1819, если она воспроизведётся, решать при необходимости.
Comment 31 Dmitry Timoshkov 2012-04-13 10:07:23 MSK
(В ответ на comment #30)
> Может быть, имеет смысл убрать замену и избавиться от ряда проблем, возникающих
> из-за неё? А ошибку 1819, если она воспроизведётся, решать при необходимости.

Я бы тоже предпочел удалить этот хак, так как он создает слишком много проблем.
Comment 38 Svetlana Zhukova 2012-04-26 15:29:35 MSK
wine@eter-2 bottle 1c/bug42
WINE@Etersoft SQL 2.0.1-eter1.2/2

Все еще воспроизводится.
Comment 40 Денис Баранов 2012-04-26 16:47:22 MSK
Давайте не будем просто кидаться фразами, а подтверждать свои слова скриншотами. Спасибо.
Comment 41 Dmitry Timoshkov 2012-04-27 07:56:39 MSK
Created attachment 2487 [details]
XP 96 dpi
Comment 42 Dmitry Timoshkov 2012-04-27 07:57:15 MSK
Created attachment 2488 [details]
XP 120 dpi
Comment 43 Dmitry Timoshkov 2012-04-27 07:58:00 MSK
Created attachment 2489 [details]
wine 96 dpi
Comment 44 Dmitry Timoshkov 2012-04-27 07:58:31 MSK
Created attachment 2490 [details]
wine 110 dpi
Comment 47 Vitaly Lipatov 2012-04-28 02:15:21 MSK
По-моему, просто отлично.
Comment 48 Svetlana Zhukova 2012-04-28 10:26:17 MSK
Сделала новую бутылку 
wine@eter-2 bottle bugs/4409>
WINE@Etersoft SQL 2.0.1-eter2.2/1

Все равно шрифт мелкий. Проверю на машине в vbox.
Comment 56 Svetlana Zhukova 2012-04-30 15:57:39 MSK
Удалила из реестра "Microsoft Sans Serif" 
Шрифт в строке поиска стал нормальным.