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

Отработанное время:
Продуктивное время:
Bug 2889 - Регресс отображения шрифтов в Йоксель (Yoksel)   Make a simular bug
Summary: Регресс отображения шрифтов в Йоксель (Yoksel)
Status: CLOSED FIXED
Alias: None
Product: WINE@Etersoft
Classification: Продукты (Products)
Component: Шрифты (show other bugs)
Version: 1.0.9
Hardware: PC Linux
: P4 minor
Target Milestone: ---
Deadline: 2010-09-20
Assignee: Marat Sharipov
QA Contact: Andrey Vusik
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 2000
  Show dependency treegraph
 
In work:
Reported: 2008-11-11 22:14 MSK by Антон Азанов (Djelf)
Modified: 2014-09-12 02:48 MSK (History)
3 users (show)

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


Attachments
Скрин в 1.0.8, 1.0.9 (155.12 KB, image/jpeg)
2010-11-18 03:58 MSK, Антон Азанов (Djelf)
Details
Минимальный проект для Visual C++ 6.0 вместе с собранным exe (21.90 KB, application/octet-stream)
2010-11-18 03:58 MSK, Ужас бухгалтера
Details
Скрин работы тестового приложения под WINE (3.39 KB, image/png)
2010-11-18 03:58 MSK, Ужас бухгалтера
Details
Вид программы при запуске на ALT Linux (4.43 KB, image/png)
2010-11-18 03:58 MSK, Vitaly Lipatov
Details
1.0.9 (6.09 KB, image/png)
2010-11-18 03:58 MSK, Денис Баранов
Details
eterhack (6.08 KB, application/octet-stream)
2010-11-18 03:58 MSK, Денис Баранов
Details
По ошибке не та картинка (97.12 KB, image/jpeg)
2010-11-18 03:58 MSK, Антон Азанов (Djelf)
Details
Тестовый файл с начертанием шрифтов (1.87 KB, application/octet-stream)
2010-11-18 03:58 MSK, Антон Азанов (Djelf)
Details
Скрин в WinXP, 1.0.8, 1.0.10-4 (112.17 KB, image/jpeg)
2010-11-18 03:58 MSK, Антон Азанов (Djelf)
Details
скрин из 1.3.27 от 30.09.2011 (15.16 KB, image/png)
2011-09-30 13:49 MSK, Marat Sharipov
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Антон Азанов (Djelf) 2008-11-11 22:14:45 MSK
Created attachment 883 [details]
Скрин в 1.0.8, 1.0.9

http://yoksel.net.ru/HomePage
Йоксель (Yoksel) – внешняя компонента к 1С для расширения функционала табличных документов с поддержкой открытия/сохранения файлов Excel и отдельное приложение (аналог 1С:Предприятие - Работа с файлами). 
Очень сильно помогает при обходе бага http://bugs.etersoft.ru/show_bug.cgi?id=86

Скачать как отдельное приложение можно отсюда: http://sourceforge.net/project/showfiles.php?group_id=198368&package_id=285212&release_id=635420

Проблема в отображении шрифтов. в wine 1.0.8 и WinXP отображение документов идеально соответствовало 1С 7.7 В wine 1.0.9(32,33,34) шрифты перестали корректно отображаться и в отдельном приложении и во внешней компоненте к 1С.
Comment 1 Ужас бухгалтера 2008-12-20 02:28:56 MSK
Created attachment 975 [details]
Минимальный проект для Visual C++ 6.0 вместе с собранным exe
Comment 2 Ужас бухгалтера 2008-12-20 02:29:40 MSK
Created attachment 976 [details]
Скрин работы тестового приложения под WINE
Comment 3 Ужас бухгалтера 2008-12-20 02:33:51 MSK
Являюсь автором Йокселя.
Подготовил минимальный код на C++, демонстрирующий проблему. Прилагаю небольшой тестовый проект для VC 6.0. При работе данного приложения обе выводимые строки должны быть идентичны. В WINE вторая строка искажается.

К сожалению, изменить алгоритм отрисовки для меня очень проблематично.

Готов предоставить дополнительные сведения, если потребуется. Могу переписать пример под голый C++, если требуется - сейчас там MFC.
Comment 4 Vitaly Lipatov 2008-12-20 12:46:53 MSK
Спасибо, обязательно постараемся что-то сделать.
Какой Linux вы используете?
Но первое предположение - такие шрифты могут появится либо потому, что они такие и есть, поэтому причину надо искать в вашей системе. Установлены ли у вас ms core fonts (наш пакет fonts-ttf-ms?)
Конечно, ещё есть вариант, что у вас система, на которой freetype собран без поддержки хинтинга.
Comment 5 Vitaly Lipatov 2008-12-20 12:47:42 MSK
Created attachment 977 [details]
Вид программы при запуске на ALT Linux
Comment 6 Антон Азанов (Djelf) 2008-12-20 14:49:15 MSK
Я проверял на Ubuntu 7.04 и Ubuntu 8.04 (одинаковые результаты).
wine 1.0.8 отрисовка совпадает попиксельно (при любом шрифте, размере и начертании).
wine 1.0.9 вся искажена.
ms core fonts установлены.
Comment 7 Ужас бухгалтера 2008-12-20 22:12:31 MSK
(In reply to comment #4)
> Какой Linux вы используете?

Ubuntu 8.10.
WINE 1.0.9 с апдейтом от 17 декабря.

> Но первое предположение - такие шрифты
> могут появится либо потому, что они такие и
> есть, поэтому причину надо искать в вашей
> системе. Установлены ли у вас ms core fonts (наш
> пакет fonts-ttf-ms?)

Установлен. Делал все по инструкции к Wine@Etersoft.

> Конечно, ещё есть вариант, что у вас
> система, на которой freetype собран без
> поддержки хинтинга.


В Ubuntu все ставил и настраивал по умолчанию. Может быть там что-то и не так. Но в любом случае при запуске тестового приложения первая строка отрисовывается так, как в MS. Значит, со шрифтами и хинтингом, мне кажется, все нормально. Ну и в приложениях, которые отрисовывают текст исключительно в режиме MM_TEXT все нормально.
Comment 8 Vitaly Lipatov 2008-12-21 04:15:15 MSK
А в чём принципиальное отличие в выводе этих строк?
Comment 9 Ужас бухгалтера 2008-12-21 07:00:20 MSK
(In reply to comment #8)
> А в чём принципиальное отличие в выводе
> этих строк?
> 

Принципиальное отличие, ИМХО, это другой map mode контекста устройства и система координат.

Первая строка выводится в исходном map mode DC - в MM_TEXT. Шрифтом Arial, 10 пунктов, нормальным.

	Font.CreateFont (-MulDiv (10, GetDeviceCaps (*pDC, LOGPIXELSY), 72), 0,
		0, 0, FW_NORMAL, FALSE, FALSE, FALSE, RUSSIAN_CHARSET,
		OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DRAFT_QUALITY, DEFAULT_PITCH, "Arial");


Перед выводом второй строки DC переключается в режим MM_ANISOTROPIC (SetMapMode) и через функции SetWindowExt и SetViewportExt устанавливается система координат, когда на дюйм приходится 1440 точек:

	pDC->SetMapMode (MM_ANISOTROPIC);

	int const UNITS_PER_INCH = 1440;

	pDC->SetWindowExt (UNITS_PER_INCH, UNITS_PER_INCH);
	pDC->SetViewportExt (pDC->GetDeviceCaps (LOGPIXELSX),
		pDC->GetDeviceCaps (LOGPIXELSY));

Т.е. единицей становится твип (1/20 пункта). Далее просто создается тот же шрифт, что для первой строки ("Arial", 10 пунктов, нормальный), но размер шрифта уже указывается с учетом того, что теперь в контексте устройства на дюйм приходится 1440 точек:

	Font.CreateFont (
		-(int)200 * UNITS_PER_INCH / 72 / 20,
		0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE,
		RUSSIAN_CHARSET,
		OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DRAFT_QUALITY, DEFAULT_PITCH,
		"Arial");

У меня немного замороченно написано - выдирал из проекта и заменял переменные на константы. Если проще, то выглядеть оно должно так:

	Font.CreateFont (
		-(10 * UNITS_PER_INCH / 72),
		0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE,
		RUSSIAN_CHARSET,
		OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DRAFT_QUALITY, DEFAULT_PITCH,
		"Arial");

Обе строки выводятся одной и той же функцией - TextOut:
pDC->TextOut (20, 20, "Тестовая строка");

Для второй просто координаты меняются на "800, 800".

У меня тут везде MFC, но это в данном случае здесь очень легкая обертка над WinAPI и на голом WinAPI выглядеть код должен практически так же. Но, если надо, могу и на WinAPI показать.
Comment 10 Денис Баранов 2009-01-03 17:31:12 MSK
Проверил на Ubuntu 8.10 с wine@etersoft 1.0.9 и со сборкой из eterhack.
В результате на 1.0.9 отрисовка идет не корректно, а со сборкой из eterhack все корректно.
См. скрины
Comment 11 Денис Баранов 2009-01-03 17:31:45 MSK
Created attachment 1002 [details]
1.0.9
Comment 12 Денис Баранов 2009-01-03 17:32:08 MSK
Created attachment 1003 [details]
eterhack
Comment 13 Денис Баранов 2009-01-03 17:34:30 MSK
Значит ждем выход версии 1.0.10, там исправлено.
Comment 14 Антон Азанов (Djelf) 2009-01-05 18:22:04 MSK
Created attachment 1009 [details]
По ошибке не та картинка

В 1.0.10-4 действительно значительно лучше, чем в 1.0.9, но не корректно отображаются шрифты 8го размера. Во первых они имеют по-виду 7й размер, во вторых жирное начертание не отображается (кстати если установить в 1С шрифт 7го размера то жирное начертание тоже не отображается).
Comment 15 Антон Азанов (Djelf) 2009-01-05 18:24:25 MSK
Created attachment 1010 [details]
Тестовый файл с начертанием шрифтов

Может быть открыт в 1С и yoksel-stand-alone (отдельное независимое приложение) отсюда: http://sourceforge.net/project/showfiles.php?group_id=198368
Comment 16 Денис Баранов 2009-01-05 18:27:23 MSK
(In reply to comment #15)
> Created an attachment (id=1010) [details]
> Тестовый файл с начертанием шрифтов
> 
> Может быть открыт в 1С и yoksel-stand-alone
> (отдельное независимое приложение) отсюда:
> http://sourceforge.net/project/showfiles.php?group_id=198368
> 

Проверю с новым тестовым файлом.
Comment 17 Антон Азанов (Djelf) 2009-01-05 18:27:53 MSK
Created attachment 1011 [details]
Скрин в WinXP, 1.0.8, 1.0.10-4 

Извиняюсь, не тот был скрин приложен.
Comment 18 Денис Баранов 2009-01-24 14:56:32 MSK
(In reply to comment #17)
> Created an attachment (id=1011) [details]
> Скрин в WinXP, 1.0.8, 1.0.10-4 
> 
> Извиняюсь, не тот был скрин приложен.
> 

В последней сборке eterhack снимок(ошибка) воспроизводится.
Comment 19 Marat Sharipov 2011-09-30 13:49:57 MSK
Created attachment 2293 [details]
скрин из 1.3.27 от 30.09.2011
Comment 20 Marat Sharipov 2011-09-30 13:50:45 MSK
WINE@Etersoft 1.0 SQL 1.3.27/1.7.1-eter1.15/3
Шрифты работают так как надо
багу закрываю
Comment 21 Marat Sharipov 2011-09-30 13:51:29 MSK
Закрываю
Comment 22 Andrey Vusik 2011-10-03 17:32:46 MSK
принято
Comment 23 Vitaly Lipatov 2014-09-12 02:48:31 MSK
Закрываем баги, принятые более года назад, и до сих пор не закрытые.