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С.
Created attachment 975 [details] Минимальный проект для Visual C++ 6.0 вместе с собранным exe
Created attachment 976 [details] Скрин работы тестового приложения под WINE
Являюсь автором Йокселя. Подготовил минимальный код на C++, демонстрирующий проблему. Прилагаю небольшой тестовый проект для VC 6.0. При работе данного приложения обе выводимые строки должны быть идентичны. В WINE вторая строка искажается. К сожалению, изменить алгоритм отрисовки для меня очень проблематично. Готов предоставить дополнительные сведения, если потребуется. Могу переписать пример под голый C++, если требуется - сейчас там MFC.
Спасибо, обязательно постараемся что-то сделать. Какой Linux вы используете? Но первое предположение - такие шрифты могут появится либо потому, что они такие и есть, поэтому причину надо искать в вашей системе. Установлены ли у вас ms core fonts (наш пакет fonts-ttf-ms?) Конечно, ещё есть вариант, что у вас система, на которой freetype собран без поддержки хинтинга.
Created attachment 977 [details] Вид программы при запуске на ALT Linux
Я проверял на Ubuntu 7.04 и Ubuntu 8.04 (одинаковые результаты). wine 1.0.8 отрисовка совпадает попиксельно (при любом шрифте, размере и начертании). wine 1.0.9 вся искажена. ms core fonts установлены.
(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 все нормально.
А в чём принципиальное отличие в выводе этих строк?
(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 показать.
Проверил на Ubuntu 8.10 с wine@etersoft 1.0.9 и со сборкой из eterhack. В результате на 1.0.9 отрисовка идет не корректно, а со сборкой из eterhack все корректно. См. скрины
Created attachment 1002 [details] 1.0.9
Created attachment 1003 [details] eterhack
Значит ждем выход версии 1.0.10, там исправлено.
Created attachment 1009 [details] По ошибке не та картинка В 1.0.10-4 действительно значительно лучше, чем в 1.0.9, но не корректно отображаются шрифты 8го размера. Во первых они имеют по-виду 7й размер, во вторых жирное начертание не отображается (кстати если установить в 1С шрифт 7го размера то жирное начертание тоже не отображается).
Created attachment 1010 [details] Тестовый файл с начертанием шрифтов Может быть открыт в 1С и yoksel-stand-alone (отдельное независимое приложение) отсюда: http://sourceforge.net/project/showfiles.php?group_id=198368
(In reply to comment #15) > Created an attachment (id=1010) [details] > Тестовый файл с начертанием шрифтов > > Может быть открыт в 1С и yoksel-stand-alone > (отдельное независимое приложение) отсюда: > http://sourceforge.net/project/showfiles.php?group_id=198368 > Проверю с новым тестовым файлом.
Created attachment 1011 [details] Скрин в WinXP, 1.0.8, 1.0.10-4 Извиняюсь, не тот был скрин приложен.
(In reply to comment #17) > Created an attachment (id=1011) [details] > Скрин в WinXP, 1.0.8, 1.0.10-4 > > Извиняюсь, не тот был скрин приложен. > В последней сборке eterhack снимок(ошибка) воспроизводится.
Created attachment 2293 [details] скрин из 1.3.27 от 30.09.2011
WINE@Etersoft 1.0 SQL 1.3.27/1.7.1-eter1.15/3 Шрифты работают так как надо багу закрываю
Закрываю
принято
Закрываем баги, принятые более года назад, и до сих пор не закрытые.