Один размер шрифта в Windows- и Linux-программах

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Один размер шрифта в Windows- и Linux-программах

Сообщение RustemNur » 13.03.2011 13:10:27

Здравствуйте, уважаемые.

Начинающий, с простецкими вопросами. Поиском пользовался.
Под Вин и под Лин у Лазаря два разных шрифта для визуальных компоненов (упрощенно выражаясь).
Скомпоновав форму под одну ОС, в другой это выглядит совершенно неприемлемо.
Как задать шрифт для всех компонентов сразу? И чтобы одинаковый был и там, и там.

Спасибо.
RustemNur
новенький
 
Сообщения: 61
Зарегистрирован: 20.02.2011 11:21:14
Откуда: Уфа

Re: Один размер шрифта в Windows- и Linux-программах

Сообщение Odyssey » 13.03.2011 14:55:09

Эту проблему обычно решают по другому: делают так, чтобы форма выглядела абсолютно приемлемо при любом шрифте. Например, с помощью редактора привязок.

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

Для этого нужно:
* выбрать шрифт,
* носить файлы этого шрифта вместе с программой,
* устанавливать эти файлы в систему перед запуском программы, либо подгружать их динамически.
При этом возникает сразу куча проблем:
- проблема легальности распространения шрифта,
- проблема установки шрифта в систему без прав администратора, либо проблема динамической загрузки шрифта и отрисовки текста именно этим шрифтом.
- проблема непривычного для пользователя внешнего вида приложения (когда одно приложение среди остальных выглядит как белая ворона).
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: Один размер шрифта в Windows- и Linux-программах

Сообщение debi12345 » 13.03.2011 15:30:37

Нужно использовать (и установить в Линуксе) 1) общепринятые TrueType-шрифты (из поставки Выни) и 2) назначать эти шрифты комапонентам явно ("Times New Roman", "Verdana",..), а не через алиасы ("Serif", "Helvetica"..), которые (в случае Линукса) могут быть назначены совсем другим шрифтам.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Один размер шрифта в Windows- и Linux-программах

Сообщение RustemNur » 13.03.2011 19:56:33

Я вам обоим ужасно благодарен.
Про привязки - вообще не знал.
RustemNur
новенький
 
Сообщения: 61
Зарегистрирован: 20.02.2011 11:21:14
Откуда: Уфа

Re: Один размер шрифта в Windows- и Linux-программах

Сообщение hinst » 13.03.2011 19:59:47

так это ж fpGUI. там везде выглядит одинаково. Не только шрифты, а вообще всё до мелочей
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Один размер шрифта в Windows- и Linux-программах

Сообщение RustemNur » 13.03.2011 20:15:28

hinst писал(а):так это ж fpGUI. там везде выглядит одинаково. Не только шрифты, а вообще всё до мелочей

Прошу прощения, что-то я смысла фразы не уловил. Можно переформулировать?
RustemNur
новенький
 
Сообщения: 61
Зарегистрирован: 20.02.2011 11:21:14
Откуда: Уфа

Re: Один размер шрифта в Windows- и Linux-программах

Сообщение hinst » 13.03.2011 20:19:18

есть такая библиотека юзверьского интерфейса для freepascal, называется fpGUI. Вот, если пользуешься ею, получаешь гарантированный одинаковый внешний вид интерфейса на всех платформах. Потому, что она все элементы управления рисует сама. В этом есть свои плюсы. Ну и минусы, конечно, тоже
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Один размер шрифта в Windows- и Linux-программах

Сообщение Mr.Smart » 13.03.2011 20:20:42

RustemNur
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Один размер шрифта в Windows- и Linux-программах

Сообщение debi12345 » 13.03.2011 20:55:29

Про привязки - вообще не знал.

Весьма сложная тема - FONTCONFIG (с его конфигурационными файлами - в которых применено бессчетное число трюков). В последних дистрах дженерик-фонты Helv[etica]/Sans, Serif и Mono по дефолту привязаны как правило не к TrueType, a к PS (Type1) шрифтам. Последние теперь тоже юникодные (хранят больше чем 256 символов - то есть все основые алфавиты и кодировки) - то есть ни в чем не уступают TrueType. Но начертания могут отличаться от ближайших TrueType аналогов - иногда весьма значительно. Иногда в системе установлено мало шрифтов, и FONTCONFIGу приходится использовать самые крайние фоллбэки. FONTCONFIG кстати очень классный механизм, по сравнению с которым Font-механизм Выни - лишь жалкое мяуканье. Но для его нормальной работы ("что вижу на экранге, то получаю и на бумаге") в системе должны быть установлены для текущей локали следующие наборы шрифтов - type1-fonts-x11, freefont-ttf, microsoft-ttf и кажется dejavu-ttf.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Один размер шрифта в Windows- и Linux-программах

Сообщение RustemNur » 13.03.2011 22:09:19

Повозился с редактором привязок. Кажется это то, чего мне порой ужасно не хватало в Дельфи7. Правда должен оговориться, что это только первое осторожное впечатление.

FONTCONFIG - тут мне опять нужно пояснение. Что имеется в виду?

По поводу fpGUI: почитал по ссылкам, скачал, но так и не решился поставить. Правильно ли я понял, что там полностью своя палитра компонентов? И ничего уже не добавить?

ЗЫ: Опять-таки, очень благодарю за ответы.
RustemNur
новенький
 
Сообщения: 61
Зарегистрирован: 20.02.2011 11:21:14
Откуда: Уфа

Re: Один размер шрифта в Windows- и Linux-программах

Сообщение Odyssey » 13.03.2011 23:43:25

RustemNur писал(а):Правильно ли я понял, что там полностью своя палитра компонентов? И ничего уже не добавить?

Палитра - своя. Существующие компоненты для Lazarus без переписывания туда добавить не получится. Самому писать новые компоненты, разумеется, можно.
В целом, библиотека fpGUI сейчас на относительно ранней стадии развития (по сравнению с LCL). Имеет смысл к ней присмотреться, если:
* есть опыт, либо хочется его получить. Архитектура и исходный код библиотеки весьма хороши, а заглядывать в код в процессе работы с ней скорее всего придётся;
* пользовательский интерфейс приложения - относительно простой;
* важен малый размер исполняемого файла;
* хочется одинакового внешнего вида под всеми ОС;
* не хочется внешних зависимостей от GTK2 и QT под Linux.
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: Один размер шрифта в Windows- и Linux-программах

Сообщение debi12345 » 14.03.2011 08:25:14

FONTCONFIG - тут мне опять нужно пояснение. Что имеется в виду?

Система управления шрифтами в Линуксе.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Один размер шрифта в Windows- и Linux-программах

Сообщение dunin » 14.03.2011 12:46:37

RustemNur писал(а):Здравствуйте, уважаемые.

Начинающий, с простецкими вопросами. Поиском пользовался.
Под Вин и под Лин у Лазаря два разных шрифта для визуальных компоненов (упрощенно выражаясь).
Скомпоновав форму под одну ОС, в другой это выглядит совершенно неприемлемо.
Как задать шрифт для всех компонентов сразу? И чтобы одинаковый был и там, и там.

Спасибо.

Тоже крячился с этой проблемой. Решил так - как пользователяю надо - пусть так и настроит. Примерно так:
Код: Выделить всё
procedure SetApplicationFont(FontSize: byte; SetFont: boolean; OneForm: tForm = nil);
  var i, j, k: integer;
  ...
begin
...
for J:= 0 to Application.ComponentCount-1 do begin
  if Application.Components[j].ClassParent.ClassType = tForm then begin
  ...
    if SetFont
      then tForm(Application.Components[j]).Font.Size:= FontSize
      else tForm(Application.Components[j]).Font.Size:= 8;           
  ...

111.png


Добавлено спустя 49 секунд:
Под линукс не могу в данный момент скрина сделать, но там то же самое.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

Re: Один размер шрифта в Windows- и Linux-программах

Сообщение RustemNur » 14.03.2011 16:47:08

dunin писал(а):Под линукс не могу в данный момент скрина сделать, но там то же самое.

Ну да, понятно, спасибо.

Этот "редактор привязок", как я, собственно, и ожидал, работает в моих руках несколько своеобразно.

И у меня по ходу мелкий вопрос: как заставить кнопки в компоненте ButtonPanel разместиться по центру окна?
RustemNur
новенький
 
Сообщения: 61
Зарегистрирован: 20.02.2011 11:21:14
Откуда: Уфа

Re: Один размер шрифта в Windows- и Linux-программах

Сообщение Padre_Mortius » 14.03.2011 21:00:29

dunin
Спасибо за подсказку, а то я уже думал выкинуть из портируемого проекта этот кусок
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 44

Рейтинг@Mail.ru
cron