| Summary: | Wine не может поворачивать растровые шрифты | ||
|---|---|---|---|
| Product: | WINE@Etersoft | Reporter: | Анатолий Лютин <vostok> | 
| Component: | Шрифты | Assignee: | Александр Морозов <amorozov> | 
| Status: | CLOSED FIXED | QA Contact: | |
| Severity: | minor | ||
| Priority: | P5 | CC: | amorozov, lav | 
| Version: | 1.0.10 | ||
| Target Milestone: | --- | ||
| Hardware: | PC | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Заявки RT: | Связано с: | ||
| Дата напоминания: | |||
| Bug Depends on: | 1636 | ||
| Bug Blocks: | 620, 777, 1988 | ||
| Attachments: | Поддержка флага OUT_TT_ONLY_PRECIS Нормальный вид теста Сломанный новыеми патчами на gdi32/freetype | ||
| 
        
          Description
        
        
          Анатолий Лютин
        
        
        
        
          2008-05-15 19:40:47 MSD
        
       Саша, предлагаю когда будет пауза в других задачах, посмотреть на libfreetype, и выяснить в чём проблема с поворотом растровых (.fon) шрифтов. Насколько я понял из документации, fon-шрифты нельзя повернуть с помощью FT_Set_Transform. Если нет какой-нибудь другой функции, поворачивающей немасштабируемые шрифты, то остаётся разве что поворачивать руками. Написал тестовую программу, которая выводит с помощью freetype изображение одного символа. С ttf-шрифтами она работает нормально, а с fon выводит какую-то ерунду. Разобрался, почему тестовая программа неправильно показывала fon-шрифты. Для них создавалась картинка в другом формате (1 бит на пиксел), а программа пыталась её показывать как будто там 8 бит на пиксел. FT_Set_Transform немасштабируемые шрифты не поворачивает. Каких-то функций для преобразования немасштабируемых шрифтов во freetype вроде как не предусмотрено. Оказывается, растровые шрифты не поворачиваются в Windows. В Windows CreateFontIndirect при использовании флага OUT_TT_ONLY_PRECIS делает выбор только из TrueType-шрифтов. Данный флаг используется в KMSchool, поэтому текст там поворачивается. В Wine данный флаг, видимо, правильно не обрабатывается и загружается растровый шрифт. Created attachment 457 [details]
Поддержка флага OUT_TT_ONLY_PRECIS
Надписи в KMSchool теперь поворачиваются.
Вайновские тесты у меня не работают и без патча, поэтому определить, ломает ли мой  патч их или нет, не получается.Патчи Дмитрия от 24.06.08 ломают масштаб повёрнутых шрифтов, поэтому для школьного вайна 0.9 я их отменил. Старый хак убрал commit 742759aa892db62c91cf2f637142dbd2758233c6 Author: Vitaly Lipatov <lav@etersoft.ru> Date: Wed Jun 25 21:30:32 2008 +0400 Revert "Replace MS Sans Serif with Tahoma, because freetype can not rotate bimap fonts (bug #1819)" This reverts commit 75f0e38d17d9959c927676767c804c79ab471427. Created attachment 518 [details]
Нормальный вид теста
Исходники теста в 
wine-etersoft-devel/fonts/rotlet/Created attachment 519 [details]
Сломанный новыеми патчами на gdi32/freetypeНужно создать тест, проверяющий неизменность размера региона, вмещающего текст, при повороте. > Проблема с вращением битмап шрифтов та же, что и с вращением битмап
> изображений (DIB/DDB) - gdi32 в Wine не поддерживает World Transforms
> в полном объеме, а делает только масштабирование (и то не всегда верно).Для строк, повёрнутых на 900 и 2700 градусов, GetTextExtentPoint32 возвращает ширину 0. Чем ближе наклон строки к этим углам, тем меньше её ширина. Написал тест Проверено, что исправлено к 1.1.2 Я убрал отмену патчей и проверил последние исходники (школьного и нашего) вайна тестом. |