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

Отработанное время:
Продуктивное время:
Bug 3685 - Невозможно вернуть шрифты Arial и MS Sans Serif при их замене в 1с77   Make a simular bug
Summary: Невозможно вернуть шрифты Arial и MS Sans Serif при их замене в 1с77
Status: CLOSED FIXED
Alias: None
Product: WINE@Etersoft
Classification: Продукты (Products)
Component: Обработка текста и локали; Буфер (show other bugs)
Version: 1.0.12
Hardware: PC All
: P1 critical
Target Milestone: ---
Assignee: Илья Шпигорь
QA Contact: Vitaly Lipatov
URL:
Whiteboard:
Keywords:
Depends on: 4259
Blocks: 4284 4906
  Show dependency treegraph
 
In work:
Reported: 2009-03-18 21:25 MSK by Andrey Vusik
Modified: 2010-03-13 00:08 MSK (History)
4 users (show)

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


Attachments
нормальные шрифты (137.63 KB, image/jpeg)
2010-11-18 03:58 MSK, Alexandr
Details
не нормальные шрифты (148.68 KB, image/jpeg)
2010-11-18 03:58 MSK, Alexandr
Details
Изменения в реестре (1.27 KB, text/x-ms-regedit)
2010-11-18 03:58 MSK, Илья Шпигорь
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Andrey Vusik 2009-03-18 21:25:35 MSK
Их просто нет в списке возможных шрифтов в 1с.
Comment 1 Andrey Vusik 2010-02-14 20:27:04 MSK
В 1.0.12 проблема осталась.
Comment 2 Vitaly Lipatov 2010-02-17 12:59:27 MSK
Ещё одно описание проблемы:
> Во многих документах 1С 7.7 не отображается шрифт ms sans serif и выбрать его нет возможности.... 
>wine-etersoft-1.0.12-eter1.3suse.i586.rpm
>wine-etersoft-gl-1.0.12-eter1.3suse.i586.rpm
>wine-etersoft-network-1.0.12-eter1suse.i586.rpm
Comment 3 Vitaly Lipatov 2010-02-17 13:38:22 MSK
Тестировали в 4906 изменения после обновления. Возможно, при обновлении не проявляется? Хотя мне кажется, проявляется всегда.
Comment 4 Vitaly Lipatov 2010-02-23 20:59:00 MSK
Нужно посмотреть, что случилось.
Comment 5 Илья Шпигорь 2010-02-24 13:19:44 MSK
Протестировал ошибку.

Создал новую бутылку с текущей версией wine. 
Установил туда 1с7.
Установил конфигурацию - Бухгалтерия предприятия.
Сформировал отчет.
Открыл Сервис -> Параметры -> вкладка Интерфейс -> Табличные документы.

В списке выбора шрифтов есть Arial, но там нет MS Sans Serif. В этом списке вообще нет не TrueType шрифтов.
Comment 6 Илья Шпигорь 2010-02-24 13:20:32 MSK
> В списке выбора шрифтов есть Arial, но там нет
> MS Sans Serif. В этом списке вообще нет не TrueType
> шрифтов.

В Windows шрифт MS Sans Serif есть.

Comment 7 Илья Шпигорь 2010-02-24 15:18:04 MSK
Выложил патч.

Проблема связана с функцией ChooseFont, которая создает диалог выбора шрифта. В результате ее работы вызывается AddFontFamily, где проверяется флаг CF_ANSIONLY (он устанавливается самой 1С) структуры CHOOSEFONT. Эта структура - входной параметр для ChooseFont.

В MSDN сказано, что этот флаг устарел и вместо него следует использовать CF_SELECTSCRIPT:

CF_ANSIONLY
This flag is obsolete. To limit font selections to all scripts except those that use the OEM or Symbol character sets, use CF_SCRIPTSONLY. To get the original CF_ANSIONLY behavior, use CF_SELECTSCRIPT and specify ANSI_CHARSET in the lfCharSet member of the LOGFONT structure pointed to by lpLogFont.

Написал тест и проверил на win2k3 - флаг CF_ANSIONLY там действительно не обрабатывается. Но если указать CF_SELECTSCRIPT и ANSI_CHARSET в поле lfCharSet структуры LOGFONT, то в диалоге выбора будут отображаться только ANSI шрифты (т.е. возникнет ситуация, описанная в баге).

Внес необходимые изменения в функцию AddFontFamily. Теперь вместо флага CF_ANSIONLY она обрабатывает CF_SELECTSCRIPT.
Comment 8 Alexandr 2010-03-01 14:45:32 MSK
(In reply to comment #7)
> Выложил патч.
> 
> Проблема связана с функцией ChooseFont, которая
> создает диалог выбора шрифта. В результате
> ее работы вызывается AddFontFamily, где
> проверяется флаг CF_ANSIONLY (он
> устанавливается самой 1С) структуры CHOOSEFONT.
> Эта структура - входной параметр для ChooseFont.
> 
> В MSDN сказано, что этот флаг устарел и вместо
> него следует использовать CF_SELECTSCRIPT:
> 
> CF_ANSIONLY
> This flag is obsolete. To limit font selections to all scripts except those
> that use the OEM or Symbol character sets, use CF_SCRIPTSONLY. To get the
> original CF_ANSIONLY behavior, use CF_SELECTSCRIPT and specify ANSI_CHARSET in
> the lfCharSet member of the LOGFONT structure pointed to by lpLogFont.
> 
> Написал тест и проверил на win2k3 - флаг CF_ANSIONLY
> там действительно не обрабатывается. Но
> если указать CF_SELECTSCRIPT и ANSI_CHARSET в поле lfCharSet
> структуры LOGFONT, то в диалоге выбора будут
> отображаться только ANSI шрифты (т.е.
> возникнет ситуация, описанная в баге).
> 
> Внес необходимые изменения в функцию
> AddFontFamily. Теперь вместо флага CF_ANSIONLY она
> обрабатывает CF_SELECTSCRIPT.
> 
когда и где можно взять патч?
Comment 9 Илья Шпигорь 2010-03-01 15:07:24 MSK
> когда и где можно взять патч?

На нашем сайте, на странице продукта должна быть доступна сборка 1.0.12-eter3/1. В ней этот патч приложен.

Comment 10 Alexandr 2010-03-01 15:24:57 MSK
(In reply to comment #9)
> > когда и где можно взять патч?
> 
> На нашем сайте, на странице продукта должна
> быть доступна сборка 1.0.12-eter3/1. В ней этот
> патч приложен.
> 

Извините, но я его не вижу. Можете ссылку на него дать?
Comment 11 Vitaly Lipatov 2010-03-01 15:27:36 MSK
(In reply to comment #10)
> (In reply to comment #9)
> > > когда и где можно взять патч?
> > 
> > На нашем сайте, на странице продукта должна
> > быть доступна сборка 1.0.12-eter3/1. В ней этот
> > патч приложен.
> > 
> 
> Извините, но я его не вижу. Можете ссылку на
> него дать?
Патч видеть не нужно, нужно просто поставить пакет wine-etersoft-1.0.12-eter3


Comment 12 Alexandr 2010-03-01 15:31:18 MSK
(In reply to comment #9)
> > когда и где можно взять патч?
> 
> На нашем сайте, на странице продукта должна
> быть доступна сборка 1.0.12-eter3/1. В ней этот
> патч приложен.
> 

Извините, но я его не вижу. Можете ссылку на него дать?(In reply to comment #11)
> (In reply to comment #10)
> > (In reply to comment #9)
> > > > когда и где можно взять патч?
> > > 
> > > На нашем сайте, на странице продукта должна
> > > быть доступна сборка 1.0.12-eter3/1. В ней этот
> > > патч приложен.
> > > 
> > 
> > Извините, но я его не вижу. Можете ссылку на
> > него дать?
> Патч видеть не нужно, нужно просто
> поставить пакет wine-etersoft-1.0.12-eter3
> 

скажите, а пакет fonts-ttf-ms ставить обязательно?
Comment 13 Alexandr 2010-03-01 15:49:37 MSK
(In reply to comment #9)
> > когда и где можно взять патч?
> 
> На нашем сайте, на странице продукта должна
> быть доступна сборка 1.0.12-eter3/1. В ней этот
> патч приложен.
> 

Извините, но я его не вижу. Можете ссылку на него дать?(In reply to comment #11)
> (In reply to comment #10)
> > (In reply to comment #9)
> > > > когда и где можно взять патч?
> > > 
> > > На нашем сайте, на странице продукта должна
> > > быть доступна сборка 1.0.12-eter3/1. В ней этот
> > > патч приложен.
> > > 
> > 
> > Извините, но я его не вижу. Можете ссылку на
> > него дать?
> Патч видеть не нужно, нужно просто
> поставить пакет wine-etersoft-1.0.12-eter3
> 

скажите, а пакет fonts-ttf-ms ставить обязательно?(In reply to comment #12)
> (In reply to comment #9)
> > > когда и где можно взять патч?
> > 
> > На нашем сайте, на странице продукта должна
> > быть доступна сборка 1.0.12-eter3/1. В ней этот
> > патч приложен.
> > 
> 
> Извините, но я его не вижу. Можете ссылку на
> него дать?(In reply to comment #11)
> > (In reply to comment #10)
> > > (In reply to comment #9)
> > > > > когда и где можно взять патч?
> > > > 
> > > > На нашем сайте, на странице продукта должна
> > > > быть доступна сборка 1.0.12-eter3/1. В ней этот
> > > > патч приложен.
> > > > 
> > > 
> > > Извините, но я его не вижу. Можете ссылку на
> > > него дать?
> > Патч видеть не нужно, нужно просто
> > поставить пакет wine-etersoft-1.0.12-eter3
> > 
> 
> скажите, а пакет fonts-ttf-ms ставить
> обязательно?
> 
Значит сейчас мы имеем следующую картину: шрифт действительно видится, но он все-равно не такой какой должен быть. на старой версии он нормальный не скачут регистры(например буква А или Б или вообще любая может по середине слова быть большой) или например слова не пишутся слитно и где надо выделяет жирным или наоборот если не надо не выделяет. Я считаю что проблема решена на половину! поставьте на openSuSE 11.1 верси. 1.0.9 и посмотрите шрифты, потом поставьте на другую такую же систему верси. 1.0.12 и посмотрите. разницу не заметить просто нельзя! исправьте пожалуйста. 
Comment 14 Alexandr 2010-03-01 15:55:02 MSK
(In reply to comment #9)
> > когда и где можно взять патч?
> 
> На нашем сайте, на странице продукта должна
> быть доступна сборка 1.0.12-eter3/1. В ней этот
> патч приложен.
> 

Извините, но я его не вижу. Можете ссылку на него дать?(In reply to comment #11)
> (In reply to comment #10)
> > (In reply to comment #9)
> > > > когда и где можно взять патч?
> > > 
> > > На нашем сайте, на странице продукта должна
> > > быть доступна сборка 1.0.12-eter3/1. В ней этот
> > > патч приложен.
> > > 
> > 
> > Извините, но я его не вижу. Можете ссылку на
> > него дать?
> Патч видеть не нужно, нужно просто
> поставить пакет wine-etersoft-1.0.12-eter3
> 

скажите, а пакет fonts-ttf-ms ставить обязательно?(In reply to comment #12)
> (In reply to comment #9)
> > > когда и где можно взять патч?
> > 
> > На нашем сайте, на странице продукта должна
> > быть доступна сборка 1.0.12-eter3/1. В ней этот
> > патч приложен.
> > 
> 
> Извините, но я его не вижу. Можете ссылку на
> него дать?(In reply to comment #11)
> > (In reply to comment #10)
> > > (In reply to comment #9)
> > > > > когда и где можно взять патч?
> > > > 
> > > > На нашем сайте, на странице продукта должна
> > > > быть доступна сборка 1.0.12-eter3/1. В ней этот
> > > > патч приложен.
> > > > 
> > > 
> > > Извините, но я его не вижу. Можете ссылку на
> > > него дать?
> > Патч видеть не нужно, нужно просто
> > поставить пакет wine-etersoft-1.0.12-eter3
> > 
> 
> скажите, а пакет fonts-ttf-ms ставить
> обязательно?
> 
Значит сейчас мы имеем следующую картину: шрифт действительно видится, но он все-равно не такой какой должен быть. на старой версии он нормальный не скачут регистры(например буква А или Б или вообще любая может по середине слова быть большой) или например слова не пишутся слитно и где надо выделяет жирным или наоборот если не надо не выделяет. Я считаю что проблема решена на половину! поставьте на openSuSE 11.1 верси. 1.0.9 и посмотрите шрифты, потом поставьте на другую такую же систему верси. 1.0.12 и посмотрите. разницу не заметить просто нельзя! исправьте пожалуйста. 
(In reply to comment #13)
> (In reply to comment #9)
> > > когда и где можно взять патч?
> > 
> > На нашем сайте, на странице продукта должна
> > быть доступна сборка 1.0.12-eter3/1. В ней этот
> > патч приложен.
> > 
> 
> Извините, но я его не вижу. Можете ссылку на
> него дать?(In reply to comment #11)
> > (In reply to comment #10)
> > > (In reply to comment #9)
> > > > > когда и где можно взять патч?
> > > > 
> > > > На нашем сайте, на странице продукта должна
> > > > быть доступна сборка 1.0.12-eter3/1. В ней этот
> > > > патч приложен.
> > > > 
> > > 
> > > Извините, но я его не вижу. Можете ссылку на
> > > него дать?
> > Патч видеть не нужно, нужно просто
> > поставить пакет wine-etersoft-1.0.12-eter3
> > 
> 
> скажите, а пакет fonts-ttf-ms ставить
> обязательно?(In reply to comment #12)
> > (In reply to comment #9)
> > > > когда и где можно взять патч?
> > > 
> > > На нашем сайте, на странице продукта должна
> > > быть доступна сборка 1.0.12-eter3/1. В ней этот
> > > патч приложен.
> > > 
> > 
> > Извините, но я его не вижу. Можете ссылку на
> > него дать?(In reply to comment #11)
> > > (In reply to comment #10)
> > > > (In reply to comment #9)
> > > > > > когда и где можно взять патч?
> > > > > 
> > > > > На нашем сайте, на странице продукта должна
> > > > > быть доступна сборка 1.0.12-eter3/1. В ней этот
> > > > > патч приложен.
> > > > > 
> > > > 
> > > > Извините, но я его не вижу. Можете ссылку на
> > > > него дать?
> > > Патч видеть не нужно, нужно просто
> > > поставить пакет wine-etersoft-1.0.12-eter3
> > > 
> > 
> > скажите, а пакет fonts-ttf-ms ставить
> > обязательно?
> > 
> Значит сейчас мы имеем следующую картину:
> шрифт действительно видится, но он
> все-равно не такой какой должен быть. на
> старой версии он нормальный не скачут
> регистры(например буква А или Б или вообще
> любая может по середине слова быть большой)
> или например слова не пишутся слитно и где
> надо выделяет жирным или наоборот если не
> надо не выделяет. Я считаю что проблема
> решена на половину! поставьте на openSuSE 11.1
> верси. 1.0.9 и посмотрите шрифты, потом
> поставьте на другую такую же систему верси.
> 1.0.12 и посмотрите. разницу не заметить
> просто нельзя! исправьте пожалуйста. 
> 

Comment 15 Илья Шпигорь 2010-03-01 16:38:15 MSK
> Значит сейчас мы имеем следующую картину:
> шрифт действительно видится, но он
> все-равно не такой какой должен быть. 

Правильно Вас понял, речь идет о шрифте MS Sans Serif? Или об Arial?
Comment 16 Alexandr 2010-03-01 16:44:35 MSK
(In reply to comment #15)
> > Значит сейчас мы имеем следующую картину:
> > шрифт действительно видится, но он
> > все-равно не такой какой должен быть. 
> 
> Правильно Вас понял, речь идет о шрифте MS Sans
> Serif? Или об Arial?
> 

У нас в настройках 1с стоит MS Sans Serif, но отображается не так как на другом сервере, с версие 1.0.9
Comment 17 Alexandr 2010-03-01 16:56:50 MSK
Created attachment 1540 [details]
нормальные шрифты

нормальные шрифты
Comment 18 Alexandr 2010-03-01 16:57:15 MSK
Created attachment 1541 [details]
не нормальные шрифты

не нормальные шрифты
Comment 19 Илья Шпигорь 2010-03-01 17:28:15 MSK
Created attachment 1542 [details]
Изменения в реестре

Временное решение.
Comment 20 Илья Шпигорь 2010-03-02 11:23:08 MSK
Если откатиться к использованию растрового шрифта MS Sans Serif (sserifer.fon) то его нельзя будет делать жирным и курсивом. Более того диапазон размеров будет ограничен - только 8, 10 ,12 px.

Сейчас он замещается на векторный Microsoft Sans Serif (см. багу 4259). Можно замещать его на Tahoma или Arial. Дело в том, что этот Microsoft Sans Serif не доработан и был введен для решения ошибки 2168.
Comment 21 Илья Шпигорь 2010-03-02 11:35:12 MSK
Чтобы не сломать шрифт в Самотуре надо сделать динамическую подмену шрифта. Т.е. если приложение хочет MS Sans Serif жирный или наклонный - подменять его на Tahoma. Если нет - использовать растровый sserifer.fon. 

Хорошо бы, чтобы это работало для всех растровых шрифтов.
Comment 22 Alexandr 2010-03-02 12:11:31 MSK
> Хорошо бы, чтобы это работало для всех
> растровых шрифтов.
> 
Было бы очень хорошо! Когда можно ожидать официальное решение проблемы(новую сборку)?
Comment 23 Илья Шпигорь 2010-03-02 15:05:17 MSK
Проблема в том, как наверняка определить, что шрифт растровый.
Comment 24 Илья Шпигорь 2010-03-02 15:44:50 MSK
Проверка поля lfHeight структуры LOGFONT, передаваемой в CreateFontIndirect не помогает. В данном случае 1с пытается создать шрифт MS Sans Serif с отрицательным размером. Самотур поступает также. Т.е. в обоих слуаях будет происходить замещение на Tahom'у.

Тестировал поведение CreateFontIndirect в windows. Если из возвращаемого функцией HFONT'а получить LOGFONT с помощью GetObject - он будет точно таким же, как и переданный в CreateFontIndirect. Т.е. отрицательный lfHeight сохранится, lfWeight и lfItalic тоже.
Comment 25 Илья Шпигорь 2010-03-02 15:56:45 MSK
Предлагаю в качестве временного решения остановится на проверке lfPitchAndFamily. С ней эта бага решается и 4259 не ломается.
Comment 26 Alexandr 2010-03-03 17:52:01 MSK
Кстати хотел напомнить, что данная первый раз была замечена в версии 1.0.10
Comment 27 Vitaly Lipatov 2010-03-03 18:08:40 MSK
Илья, ты перевесил багу, а резюме не написал.
Comment 28 Vitaly Lipatov 2010-03-03 18:09:05 MSK
(In reply to comment #26)
> Кстати хотел напомнить, что данная первый
> раз была замечена в версии 1.0.10
Да, это очень плохо... 

Comment 29 Илья Шпигорь 2010-03-04 10:53:01 MSK
> Илья, ты перевесил багу, а резюме не
> написал.

Для корректного решения проблемы надо написать тесты и разобраться как организован механизм подстановки шрифтов в windows.

Есть временное решение в виде патча для реестра, но мы не можем внести эти изменения в закрытую часть, т.к. сломается Самотур (бага 4259).
Comment 30 Andrey Vusik 2010-03-07 17:24:36 MSK
В 1.0.12-eter3.1/2 MS Sans Serif в списке есть.
Comment 31 Alexandr 2010-03-10 18:23:28 MSK
(In reply to comment #30)
> В 1.0.12-eter3.1/2 MS Sans Serif в списке есть.
> 

Тоесть проблему решили и можно не пользоваться патчиком?
Comment 32 Илья Шпигорь 2010-03-10 18:29:20 MSK
> Тоесть проблему решили и можно не
> пользоваться патчиком?
> 

Нет, речь идет только о том, что MS Sans Serif есть в списке. Пока заменяется на Tahoma.

Comment 33 Vitaly Lipatov 2010-03-10 18:52:56 MSK
Я закрываю багу, которая изначально была в отсутствии в списке шрифтов некоторых.
Comment 34 Alexandr 2010-03-12 12:06:16 MSK
Будет ли в дальнейшем полностью исправлена проблема?