Чтобы сделать шрифт 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 мире будут выглядеть как круги . Недостатком является то, что квадратные шрифты обычно «уродливые» и труднее читать.
PIL отлично отображает шрифты с помощью ImageFont. – nneonneo
Спасибо за ответы! Я попробую это, когда у меня появится шанс. –