Показать полную графическую версию : Проблема шрифтов и кодировок в XP
kotompazb
25-01-2010, 01:41
Здравствуйте, все.
Имеет место быть следующая проблема:
Есть растровый шрифт, собственноручно переделанный из microsoft'овского, но выдернутого из состава Win98 (видимо заточен под кодировку 1251); программа на Delphi 6, использующая этот шрифт.
В Win98 все работает как часы,
А вот в XP имеются странности с отображением текста этим шрифтом в RichEdit (см. скриншоты).
Дело в том, что использование данного шрифта в этой программе, просто необходимо,
иначе теряется весь ее смысл.
Заранее спасибо за помощь.
P.S. Скриншоты и файл шрифта прилагаются.
P.P.S. Обратите внимание на поведение Memo (сверху справа).
kotompazb, Отключите стили в Windows. Свойства рабочего стола - Оформление - Классический стиль - ОК. Посмотрите, будет ли разница?
А также в полях Memo- Область переменных и Свойства файлов - указан один и тот же шрифт?
проблема в том, что винда уникодовская, шрифт не уникодовский, а делфи - нечто срденее и буржуйский. Варианты решения:
1) переделать шрифт под уникодовский
2) использовать ансишные контролы типа TMemo
3) написать контрол для отображения экрана спектрума вручную. Для этого понадобится чёрно-белый битмап разрешением 8 x 8*256, состоящий из букв. При отрисовки выбирается TextColor и BkColor, затем BitBlt копируем букву с картинки. И так для всех позиций экрана
kotompazb
26-01-2010, 04:58
Отключите стили в Windows. Свойства рабочего стола - Оформление - Классический стиль - ОК. Посмотрите, будет ли разница? »
Разницы никакой. Оформление к кодировкам насколько я знаю отношения не имеет.
А также в полях Memo- Область переменных и Свойства файлов - указан один и тот же шрифт? »
Шрифт один и тот же. Только Свойства файла - это Memo, а Область переменных - RichEdit.
1) переделать шрифт под уникодовский »
Заиметь бы еще редактор внятный. Да и еще мелкие проблемки есть.
2) использовать ансишные контролы типа TMemo »
Абсолютно не подходит. Не так просто Memo раскрасить, а большие BASIC-листинги для ZX без синтаксической подсветки читать практически невозможно (в целях экономии памяти в одну строку забивалась целая куча команд).
3) написать контрол для отображения экрана спектрума вручную. Для этого понадобится чёрно-белый битмап разрешением 8 x 8*256, состоящий из букв. При отрисовки выбирается TextColor и BkColor, затем BitBlt копируем букву с картинки. И так для всех позиций экрана »
Это вариант. Только, сдается мне, тормозить это жутко будет. Процесс анализа итак очень ощутим на больших программах.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.