Bug 6750

Summary: 1С 7.7 Хронограф: Неверно отображается галочка в меню
Product: WINE@Etersoft Reporter: Денис Баранов <baraka>
Component: ШрифтыAssignee: Иван Загарский <grosso>
Status: CLOSED FIXED QA Contact: Svetlana Zhukova <svzhu>
Severity: normal    
Priority: P3 CC: grosso, kondratyuk, lav
Version: 2.0   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 7054    

Description Денис Баранов 2011-01-03 19:17:02 MSK
В меню Окна>Панель окон не верно отображаются галочки.
wine-etersoft-school-1.7.0-alt4
wine-etersoft-1.7.0-alt1
Comment 1 Vitaly Lipatov 2011-02-10 21:32:57 MSK
Когда я смотрел в eterhack, вместо галочки там «П».
Проблема в том, что вместо шрифта System берётся какой-то векторный, в котором на этом месте русская буква, вот трейс по +font:

trace:font:WineEngGetTextExtentExPoint 0x11d7b8, L"П", 1, 0, 0x32e290
trace:font:WineEngCreateFontInstance L"System", h=16, it=0, weight=400, PandF=22, charset=204 orient 0 escapement 0
...
trace:font:update_font_code_page charset 204 => cp 1251

Мне кажется, это вызвано нашими недавними патчами про кодировку cp1251 по умолчанию.
Comment 2 Александр Морозов 2011-02-10 21:43:57 MSK
> Мне кажется, это вызвано нашими недавними патчами про кодировку cp1251 по
> умолчанию.

commit 8185340b0551866a36bc02445d72b72af0c019f9
Author: Alexander Morozov <amorozov@etersoft.ru>
Date:   Sun Dec 26 19:43:39 2010 +0300

    gdi32: Hack for 1C 7.7 installer (eterbug #6685).

Если ты про этот коммит, то если его закомментировать, ничего не меняется.
Comment 3 Иван Загарский 2011-02-11 23:13:22 MSK
В оригинальном Wine таких проблем нет;
проверил ветку eterhack и 1.0.12 там проблема неверно отображающихся галочек сохраняется. 
trace:font:WineEngGetTextExtentExPoint 0x11d7b8, L"П", 1, 0, 0x32e290
в dlls/gdi32/freetype.c

последовательность вызова функций до появления "П"

trace:font:WineEngGetTextExtentExPoint 0x11c398, L"", 0, 0, 0x32e290, 0, -1
trace:font:WineEngGetTextExtentExPoint return 0, 13, 0
trace:font:GetTextExtentExPointW returning 0 0 x 13
trace:font:GetTextExtentPointW not bug compatible.
trace:font:GetTextExtentExPointW (0x4bd4, L"П", 0)
trace:font:GetTextMetricsW text metrics:
    Weight = 400	 FirstChar = 0	 AveCharWidth = 5
    Italic =   0	 LastChar = 64258		 MaxCharWidth = 17
    UnderLined = 0	 DefaultChar = 1	 Overhang = 0
    StruckOut = 0	 BreakChar = 2	 CharSet = 204
    PitchAndFamily = 27
    --------------------
    InternalLeading = 2
    Ascent = 11
    Descent = 2
    Height = 13
trace:font:WineEngGetTextExtentExPoint 0x11c398, L"П", 1, 0, 0x32e290, 1055, 0
trace:font:WineEngGetTextExtentExPoint
Comment 4 Vitaly Lipatov 2011-02-12 19:54:00 MSK
(В ответ на comment #3)
> проверил ветку eterhack и 1.0.12 там проблема неверно отображающихся галочек
Извините, в 1.0.12 всё хорошо вообще-то.
Comment 5 Иван Загарский 2011-02-17 20:46:11 MSK
Проблема не верно отображающихся галочек решена.Патч отправил в wine-patches@.
Comment 6 Иван Загарский 2011-02-18 18:29:46 MSK
Задача решена.
Comment 7 Vitaly Lipatov 2011-02-23 15:25:16 MSK
1. Нужно поднять патч, который внёс это изменение, возможно он для чего-то был нужен.
2. Изменения кода стоит сопровождать комментарием, иначе потом не ясно, зачем мы это изменили.
Comment 8 Иван Загарский 2011-03-27 21:00:26 MSK
Для поиска изменений постепенно откатывал коммиты. Выяснилось следующее:
Откатив до коммита :8185340b0551866a36bc02445d72b72af0c019f9
проблема неправильной отрисовки воспроизводилась.
Откатив до коммита :1b7cc1f25985623fc399068858cfbea7d3630d24
проблема неправильной отрисовки не воспроизводилась.
Просмотрев промежуточные состояния, изменений в dlls/gdi32/freetype.c не увидел.
Comment 9 Иван Загарский 2011-04-02 21:04:34 MSK
Используя git log freetype.c получили, что первое индексирование изменение связанное с этим файлом :

 commit b1f66cf449896725c489ab2d2398e0aa4326da7e
 Merge: 7613c11 30c3292
 Author: Vitaly Perov <vitperov@etersoft.ru>
 Date:   Fri Dec 24 18:34:07 2010 +0300

    Merge commit '30c3292932f0f02a6ec18fcddbb0fd6295ae5fa8' into eterhack

но выяснили , что после отката более раннего (произвольного):

 commit 1b7cc1f25985623fc399068858cfbea7d3630d24
 Author: Michael Stefaniuc <mstefani@redhat.de>
 Date:   Mon Dec 20 11:34:08 2010 +0100

    hnetcfg: Use an iface instead of an vtbl pointer in fw_manager.
бага не воспроизвелась.
Comment 10 Иван Загарский 2011-04-02 21:31:32 MSK
Патч который внес изменение:

commit 174c50c096edb916e4751d71eb4649387eddc6fb
Author: Alexander Morozov <amorozov@etersoft.ru>
Date:   Fri Jul 31 19:47:46 2009 +0400

    gdi32: Fix problems with "Symbol type A" font (eterbug #2609).
Comment 11 Денис Баранов 2011-04-26 19:56:57 MSK
Проверяем на eterschool
Comment 12 Svetlana Zhukova 2011-04-28 15:59:06 MSK
бутылка wine@eterschool bottle bugs/6750

WINE@Etersoft 1.0 School 1.7.1-eter1/1

Отображается всё правильно, но вместо галочки буква П