Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Исправление вывода шрифта Wingdings в современной версии Delphi и Rave Reports для Unicode-совместимости

Delphi , Графика и Игры , Шрифты

Вопрос пользователя заключается в проблеме вывода символов из шрифта Wingdings в современной версии Delphi и Rave Reports. При использовании Delphi 5 и Rave Reports 4.0 (которые не поддерживают Unicode) код работал корректно, но при переходе на Delphi 10.1 и Rave 11.0.12 возникли проблемы с выводом символов.

Проблема

Пользователь столкнулся с тем, что при печати символов шрифта Wingdings, которые в Microsoft Word отображаются в диалоге "Символы" как символы с кодами 129-138 (цифры в круге) и 140-149 (белые цифры на черном фоне), не все из них выводятся корректно. В частности, правильно отображаются только символы '1', '2' (белый), '4' (белый) и '5' (белый), остальные отображаются в виде прямоугольника.

Пример кода из контекста

with Sender as TBaseReport do
begin
     PushFont;
     SetFont('Wingdings', 10);
     FontCharSet := SYMBOL_CHARSET;
     if NoteNo < 11 then
        PrintTab(char(128 + NoteNo))
     else
         if NoteNo < 21 then
            PrintTab(char(128 + 1 + NoteNo))
     else
         // ... остальной код ...
end;

Решение проблемы

С переходом на Unicode-совместимость в новых версиях Delphi и Rave Reports, необходимо использовать AnsiChar вместо Char, чтобы обеспечить корректную работу с кодами символов, которые не поддерживают Unicode. Пример кода, который решает проблему:

var
  i: integer;
begin
  Canvas.Font.Name := 'Wingdings';
  Canvas.Font.Charset := SYMBOL_CHARSET;
  for i := 128 to 128 + 21 do
    Canvas.TextOut(0, 20 * (i - 128), AnsiChar(i));
end;

Этот код выводит символы шрифта Wingdings, начиная с кода 128, и должен работать корректно в современных версиях Delphi и Rave Reports.

Важные замечания

Приведенный код должен работать корректно в кодировке CP-1252, которая используется в западных странах, но может не работать в других кодировках, например, в CP-1251. Поэтому рекомендуется провести тестирование кода в различных кодировках.

Заключение

Переход на Unicode-совместимость в современных версиях Delphi и Rave Reports требует от разработчиков использования AnsiChar для корректной работы со старыми кодами символов. Приведенный пример кода демонстрирует, как исправить проблему вывода шрифта Wingdings в новых версиях среды разработки.

Создано по материалам из источника по ссылке.

Пользователь сталкивается с некорректным выводом символов шрифта Wingdings в современной версии Delphi и Rave Reports из-за отсутствия поддержки Unicode, что требует изменения типа данных при работе с кодами символов.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Шрифты ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 14:47:10/0.013695001602173/1