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 Я убрал отмену патчей и проверил последние исходники (школьного и нашего) вайна тестом. |