винде с англ локалью при использовании шрифта MS Sans Serif. Как выяснилось, причина в GetTextExtentPoint32W(PaintInfo.TargetCanvas.Handle, PWideChar(FText), Length(FText), TextSize)
Возвращает в TextSize.cx для кириллицы неверную ширину.... при использовании Tahoma - все ок. Кто нить может пояснить причину?
Почему не верную* Он возвращает то что в файле шрифта написано
потому что возвращает в 2..2,5 раза меньше
Судя по скрину не в 2 и более раза
А ты глянь ка там, оно случаем не делает такое что сайз берет через GetTextExtentPoint32W а отрисовку через DrawText?
MS Sans Serif случаем не растровый шрифт?
Winapi.Windows.DrawTextW
Ну вот те и ответ, значит для получения размеров надо использовать тоже DrawText + DT_CALCRECT. GetTextExtentPoint32W для другого типа отрисовки нужен
а почему именно на англ винде с англ локалью и на MS Sans serif ломается?
потому что тебе просто везло что в других случаях цифры совпадали
убедитесь что MS Sans Serif действительно используется. для ликбеза: https://habr.com/ru/articles/521740/
спасибо, почитаю
Обсуждают сегодня