Можно ли использовать системный шрифт в Allegro5?
Интересно, можно ли просто загрузить шрифт из системных ресурсов пользователя, например, Arial - сейчас я должен скопировать файл.ttf в каталог моей программы; в противном случае шрифт не загружается. Я пытался найти функции, позволяющие такое поведение, в официальной документации Allegro5, но безуспешно. Я что-то не понимаю, или я должен распространять свою программу вместе с файлом шрифта? Ниже я включаю строку кода, которую я использую для загрузки шрифта, если это поможет:
font=al_load_font("arial.ttf",24,0);
2 ответа
Помните, что Allegro - это кроссплатформенная библиотека, и нет кроссплатформенного способа доступа к системным шрифтам.
Опция, которую вы можете использовать, это #include окна allegro (может быть, его winalleg.h
), а затем получить доступ к этой функции (вызовы API Windows), чтобы предоставить системные шрифты для программы. Но это ограничит вашу мобильность.
Кроме того, вы можете получить доступ к шрифтам из жестко заданного пути, например: c:/windows/fonts/
системные шрифты, но есть некоторые проблемы с этим:
- Как вы знаете, пользователь установил Windows на C:/Windows?
- Что вы делаете, если там нет шрифта?
- Это даже правильный способ доступа к системным шрифтам?
TL: DR
Allegro не предназначен для загрузки шрифтов из общего репозитория шрифтов. Он ожидает, что все будет там, где вы говорите, и больше нигде. Иди и сделай это на основе кейса.
Начиная с версии 5.0.8 Allegro, вы можете использовать al_create_builtin_font для создания маленького системного шрифта 8x8 для ваших проектов. Этот шрифт обычно используется только в целях отладки из-за его ограниченного размера. Это портативный и работает на всех платформах. Однако его нельзя увеличить (если вы не используете ALLEGRO_TRANSFORM).
Для лучшей практики вы всегда должны включать шрифт вместе с вашим двоичным файлом проекта. Поиск подходящего шрифта на компьютере пользователя полон проблем, и в целом это не является хорошим решением. Точно так же, как вы можете включить растровые изображения в папку ресурсов или данных, в ваших интересах включить один или два пользовательских шрифта в папку font или ttf.