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

Решение проблемы отображения моноширинного шрифта в `TMemo` на Android в Delphi 10.2 Tokyo

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

Решение проблемы отображения моноширинного шрифта в TMemo на Android в Delphi 10.2 Tokyo

Вопрос, с которым сталкиваются разработчики, работающие с компонентом TMemo в приложениях FireMonkey, созданных с использованием Delphi 10.2 Tokyo, заключается в необходимости установки и использования моноширинного шрифта. Несмотря на попытки задать шрифт Courier New, Courier или Monospace, при запуске приложения на Android устройствах текст отображается не в моноширинном шрифте.

Причины проблемы

Проблема может быть связана с ограничениями операционной системы Android, которая не поддерживает некоторые шрифты по умолчанию, используемые в Delphi. Кроме того, Delphi 10.2 Tokyo имеет известные проблемы производительности, о чем упоминается в альтернативном ответе.

Список доступных шрифтов на Android

Для Android доступны следующие шрифты:

  • casual - ComingSoon.ttf
  • cursive - DancingScript-Regular.ttf
  • monospace - DroidSansMono.ttf
  • sans-serif - Roboto-Regular.ttf, Roboto-Bold.ttf и другие варианты
  • sans-serif-black - Roboto-Black.ttf
  • sans-serif-condensed - RobotoCondensed-Regular.ttf
  • sans-serif-condensed-light - RobotoCondensed-Light.ttf
  • sans-serif-light - Roboto-Light.ttf
  • sans-serif-medium - Roboto-Medium.ttf
  • sans-serif-smallcaps - CarroisGothicSC-Regular.ttf
  • sans-serif-thin - Roboto-Thin.ttf
  • serif - NotoSerif-Regular.ttf
  • serif-monospace - CutiveMono.ttf

Подтвержденное решение

Автор вопроса нашел решение проблемы, используя условную компиляцию для разных платформ:

{$IFDEF MSWINDOWS}
    Memo1.TextSettings.Font.Family := 'Courier New';
    Memo1.StyledSettings := Memo1.StyledSettings - [TStyledSetting.Family]
{$ENDIF}
{$IFDEF ANDROID}
    Memo1.TextSettings.Font.Family := 'monospace';
    Memo1.StyledSettings := Memo1.StyledSettings - [TStyledSetting.Family]
{$ENDIF}

В данном случае для Windows используется шрифт Courier New, а для Android - шрифт monospace, который должен корректно отображаться на устройствах. Удаление TStyledSetting.Family из StyledSettings компонента TMemo позволяет избежать конфликтов с другими стилями, которые могут переопределить заданный шрифт.

Комментарии к решению

Разработчики должны быть осторожны при использовании Delphi 10.2 Tokyo, так как есть мнение, что он работает медленнее по сравнению с Delphi 10.1 Berlin. Подтверждение этому можно найти в базе отчетов о проблемах: ссылка на багтрекер. Рекомендуется учитывать это при выборе инструментов для разработки.

Пример кода на Object Pascal

procedure TForm1.FormCreate(Sender: TObject);
begin
  // Установка моноширинного шрифта для TMemo в зависимости от платформы
  {$IFDEF MSWINDOWS}
    Memo1.TextSettings.Font.Name := 'Courier New';
  {$ELSEIF DEFINE ANDROID}
    Memo1.TextSettings.Font.Name := 'monospace';
  {$ENDIF}
  // Удаление стиля семейства шрифтов, чтобы избежать конфликтов
  Memo1.StyledSettings := Memo1.StyledSettings - [TStyledSetting.Family];
end;

Используя данный подход, разработчики могут гарантировать корректное отображение текста в моноширинном шрифте на различных платформах в приложениях FireMonkey.

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

Проблема заключается в том, что при попытке отобразить моноширинный шрифт в компоненте `TMemo` на Android с использованием Delphi 10.2 Tokyo, шрифт не отображается корректно, и это может быть решено с помощью условной компиляции для разных платформ.


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

Получайте свежие новости и обновления по 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:39:02/0.0036580562591553/0