2013-03-10 2 views
2

Я продолжал продвигаться по моему rogouelike python и нырнул дальше в этот учебник: http://roguebasin.roguelikedevelopment.org/index.php?title=Complete_Roguelike_Tutorial,_using_python%2Blibtcod. Я также сделал свой собственный шрифт для использования в этой игре, но я не уверен, как это сделать. Это ссылка на образ шрифта, который я использую сейчас: http://i.imgur.com/j6FdNky.png. В коде python он устанавливает собственный шрифт в 'arial10x10.png', который является этим шрифтом. Я попытался сделать изображение с моего собственного шрифта, но он действительно исказился.Как сделать лист шрифта (для использования в python roguelike)

Кто-нибудь знает, как я могу реализовать свой собственный шрифт? Кроме того, я использую libtcod, и у меня есть только собственный шрифт в формате .ttf. Спасибо.

ответ

4

Чтобы сделать шрифт TrueType растровым в том виде, который ожидает libtcod, вы должны использовать отдельную библиотеку - рендеринг шрифтов - это удивительно сложная задача. FreeType - очень популярная библиотека с открытым исходным кодом для визуализации шрифтов. Здесь вы можете найти интерфейс Python: http://code.google.com/p/freetype-py/. Вам нужно будет использовать FreeType только в том инструменте, который вы будете использовать при разработке своего roguelike, а не в вашей реальной игре.

Сначала определите, какие персонажи вы будете использовать в своем roguelike. Определите, как разместить эти символы на листе шрифта. Вы также можете просто выбрать тот же макет, что и тот, который вы разместили, - это лист с 32 столбцами, начиная с символа пробела (символ 32).

Используя вашу библиотеку рендеринга шрифтов, визуализируйте каждый символ самостоятельно по желаемому размеру. Обратите внимание на размер, сгенерированный для каждого - например, '.' будет небольшим, а «w» будет большим, даже при том же размере шрифта. Вы не должны просто вычислять высоту, но высоту над базовой линией и высоту ниже базовой линии. (Пример: если «A» и «g» имеют высоту в 16 пикселей, возможно, вам понадобится прямоугольник выше 16 пикселей для выравнивания как правильно внутри него, так и от базовой линии к базовой линии.) Найдите самый маленький прямоугольник размер, который будет соответствовать всем этим размерам - это то, насколько велика каждая ячейка в вашем списке шрифтов.

Как только вы знаете, насколько велика ваша листка, сделайте еще один проход через все нужные буквы, чтобы построить растровое изображение, помещая каждую букву в свою ячейку. Поскольку y-позиционирование идет, все базовые линии должны быть выровнены. Если некоторые символы более широкие, чем другие, вы можете выбрать центрирование или выравнивание по левому краю каждого символа в своей ячейке. (Каждый из них придет со своими weirdnesses - вы действительно будете хотеть равноширинный для рогалик.)

Дополнительные советы:

  • антиалиасинг. Это сделает ваш шрифт проще на глазах, чем чистый монохромный.
  • Не используйте цвет, визуализируйте шрифт в оттенках серого. libtcod имеет функциональность для создания цветного текста из оттенков серого fontsheet.
  • Рассмотрите, хотите ли вы квадратный шрифт или нет. Преимущество квадратного шрифта заключается в том, что «круги» в вашем roguelike мире будут выглядеть как круги . Недостатком является то, что квадратные шрифты обычно «уродливые» и труднее читать.
+0

PIL отлично отображает шрифты с помощью ImageFont. – nneonneo

+0

Спасибо за ответы! Я попробую это, когда у меня появится шанс. –

Смежные вопросы