Можно ли использовать системный шрифт в Allegro5?

Интересно, можно ли просто загрузить шрифт из системных ресурсов пользователя, например, Arial - сейчас я должен скопировать файл.ttf в каталог моей программы; в противном случае шрифт не загружается. Я пытался найти функции, позволяющие такое поведение, в официальной документации Allegro5, но безуспешно. Я что-то не понимаю, или я должен распространять свою программу вместе с файлом шрифта? Ниже я включаю строку кода, которую я использую для загрузки шрифта, если это поможет:

font=al_load_font("arial.ttf",24,0);

2 ответа

Решение

Помните, что Allegro - это кроссплатформенная библиотека, и нет кроссплатформенного способа доступа к системным шрифтам.

Опция, которую вы можете использовать, это #include окна allegro (может быть, его winalleg.h), а затем получить доступ к этой функции (вызовы API Windows), чтобы предоставить системные шрифты для программы. Но это ограничит вашу мобильность.

Кроме того, вы можете получить доступ к шрифтам из жестко заданного пути, например: c:/windows/fonts/ системные шрифты, но есть некоторые проблемы с этим:

  1. Как вы знаете, пользователь установил Windows на C:/Windows?
  2. Что вы делаете, если там нет шрифта?
  3. Это даже правильный способ доступа к системным шрифтам?

TL: DR

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

Начиная с версии 5.0.8 Allegro, вы можете использовать al_create_builtin_font для создания маленького системного шрифта 8x8 для ваших проектов. Этот шрифт обычно используется только в целях отладки из-за его ограниченного размера. Это портативный и работает на всех платформах. Однако его нельзя увеличить (если вы не используете ALLEGRO_TRANSFORM).

Для лучшей практики вы всегда должны включать шрифт вместе с вашим двоичным файлом проекта. Поиск подходящего шрифта на компьютере пользователя полон проблем, и в целом это не является хорошим решением. Точно так же, как вы можете включить растровые изображения в папку ресурсов или данных, в ваших интересах включить один или два пользовательских шрифта в папку font или ttf.

Другие вопросы по тегам