03 Jun, 2010, Scandum wrote in the 1st comment:
Votes: 0
I've been working on a drawing font that ideally meets two criteria. 1) Display the traditional n e s w exits as well as ne nw se and sw exits. 2) Display overland maps as nicely as possible. The biggest problems I ran into is that designing true type fonts is difficult, that a decent bitmap font editor is hard to find, and that displaying up and down exits is tricky.

To display the n nw w sw s se e ne exits I decided to use two tiles which requires 64 characters. Using one tile would require 256 characters. Since designing true type fonts is difficult I decided to work on the courier 10 font, which has tiles with 8x13 pixels, and by using two tiles this creates a combined 16x13 tile.

The first 32 characters are for the first tile, the next 32 characters are for the second tile, and the characters are organized as a bitvector.

…….. …….# ##…… ##…..# …….. …….# ##…… ##…..# …….. …….# ##…… ##…..# …….. …….# ##…… ##…..#
…….. …….# .##….. .##….# …….. …….# .##….. .##….# …….. …….# .##….. .##….# …….. …….# .##….. .##….#
…….. …….# ..##…. ..##…# …….. …….# ..##…. ..##…# …….. …….# ..##…. ..##…# …….. …….# ..##…. ..##…#
…….. …….# …##… …##..# …….. …….# …##… …##..# …….. …….# …##… …##..# …….. …….# …##… …##..#
…….. …….# ….##.. ….##.# …….. …….# ….##.. ….##.# …….. …….# ….##.. ….##.# …….. …….# ….##.. ….##.#
…….# …….# …..### …..### ######## ######## ######## ######## ……## ……## …..### …..### ######## ######## ######## ########
…….# …….# ……## ……## ######## ######## ######## ######## …..### …..##. …..### …..### ######## ######## ######## ########
…….. …….. …….. …….. …….. …….. …….. …….. ….##.. ….##.. ….##.. ….##.. ….##.. ….##.. ….##.. ….##..
…….. …….. …….. …….. …….. …….. …….. …….. …##… …##… …##… …##… …##… …##… …##… …##…
…….. …….. …….. …….. …….. …….. …….. …….. ..##…. ..##…. ..##…. ..##…. ..##…. ..##…. ..##…. ..##….
…….. …….. …….. …….. …….. …….. …….. …….. .##….. .##….. .##….. .##….. .##….. .##….. .##….. .##…..
…….. …….. …….. …….. …….. …….. …….. …….. ##…… ##…… ##…… ##…… ##…… ##…… ##…… ##……
…….. …….. …….. …….. …….. …….. …….. …….. #……. #……. #……. #……. #……. #……. #……. #…….

…….. …….# ##…… ##…..# …….. …….# ##…… ##…..# …….. …….# ##…… ##…..# …….. …….# ##…… ##…..#
…….. …….# .##….. .##….# …….. …….# .##….. .##….# …….. …….# .##….. .##….# …….. …….# .##….. .##….#
…….. …….# ..##…. ..##…# …….. …….# ..##…. ..##…# …….. …….# ..##…. ..##…# …….. …….# ..##…. ..##…#
…….. …….# …##… …##..# …….. …….# …##… …##..# …….. …….# …##… …##..# …….. …….# …##… …##..#
…….. …….# ….##.. ….##.# …….. …….# ….##.. ….##.# …….. …….# ….##.. ….##.# …….. …….# ….##.. ….##.#
…….# …….# …..### …..### ######## ######## ######## ######## ……## ……## …..### …..### ######## ######## ######## ########
…….# …….# ……## ……## ######## ######## ######## ######## …..### …..##. …..### …..### ######## ######## ######## ########
…….# …….# …….# …….# …….# …….# …….# …….# ….##.# ….##.# ….##.# ….##.# ….##.# ….##.# ….##.# ….##.#
…….# …….# …….# …….# …….# …….# …….# …….# …##..# …##..# …##..# …##..# …##..# …##..# …##..# …##..#
…….# …….# …….# …….# …….# …….# …….# …….# ..##…# ..##…# ..##…# ..##…# ..##…# ..##…# ..##…# ..##…#
…….# …….# …….# …….# …….# …….# …….# …….# .##….# .##….# .##….# .##….# .##….# .##….# .##….# .##….#
…….# …….# …….# …….# …….# …….# …….# …….# ##…..# ##…..# ##…..# ##…..# ##…..# ##…..# ##…..# ##…..#
…….# …….# …….# …….# …….# …….# …….# …….# #……# #……# #……# #……# #……# #……# #……# #……#

…….. #……. ……## #…..## …….. #……. ……## #…..## …….. #……. ……## #…..## …….. #……. ……## #…..##
…….. #……. …..##. #….##. …….. #……. …..##. #….##. …….. #……. …..##. #….##. …….. #……. …..##. #….##.
…….. #……. ….##.. #…##.. …….. #……. ….##.. #…##.. …….. #……. ….##.. #…##.. …….. #……. ….##.. #…##..
…….. #……. …##… #..##… …….. #……. …##… #..##… …….. #……. …##… #..##… …….. #……. …##… #..##…
…….. #……. ..##…. #.##…. …….. #……. ..##…. #.##…. …….. #……. ..##…. #.##…. …….. #……. ..##…. #.##….
#……. #……. ###….. ###….. ######## ######## ######## ######## ##…… ##…… ###….. ###….. ######## ######## ######## ########
#……. #……. ##…… ##…… ######## ######## ######## ######## ###….. ###….. ###….. ###….. ######## ######## ######## ########
…….. …….. …….. …….. …….. …….. …….. …….. ..##…. ..##…. ..##…. ..##…. ..##…. ..##…. ..##…. ..##….
…….. …….. …….. …….. …….. …….. …….. …….. …##… …##… …##… …##… …##… …##… …##… …##…
…….. …….. …….. …….. …….. …….. …….. …….. ….##.. ….##.. ….##.. ….##.. ….##.. ….##.. ….##.. ….##..
…….. …….. …….. …….. …….. …….. …….. …….. …..##. …..##. …..##. …..##. …..##. …..##. …..##. …..##.
…….. …….. …….. …….. …….. …….. …….. …….. ……## ……## ……## ……## ……## ……## ……## ……##
…….. …….. …….. …….. …….. …….. …….. …….. …….# …….# …….# …….# …….# …….# …….# …….#

…….. #……. ……## #…..## …….. #……. ……## #…..## …….. #……. ……## #…..## …….. #……. ……## #…..##
…….. #……. …..##. #….##. …….. #……. …..##. #….##. …….. #……. …..##. #….##. …….. #……. …..##. #….##.
…….. #……. ….##.. #…##.. …….. #……. ….##.. #…##.. …….. #……. ….##.. #…##.. …….. #……. ….##.. #…##..
…….. #……. …##… #..##… …….. #……. …##… #..##… …….. #……. …##… #..##… …….. #……. …##… #..##…
…….. #……. ..##…. #.##…. …….. #……. ..##…. #.##…. …….. #……. ..##…. #.##…. …….. #……. ..##…. #.##….
#……. #……. ###….. ###….. ######## ######## ######## ######## ##…… ##…… ###….. ###….. ######## ######## ######## ########
#……. #……. ##…… ##…… ######## ######## ######## ######## ###….. ###….. ###….. ###….. ######## ######## ######## ########
#……. #……. #……. #……. #……. #……. #……. #……. #.##…. #.##…. #.##…. #.##…. #.##…. #.##…. #.##…. #.##….
#……. #……. #……. #……. #……. #……. #……. #……. #..##… #..##… #..##… #..##… #..##… #..##… #..##… #..##…
#……. #……. #……. #……. #……. #……. #……. #……. #…##.. #…##.. #…##.. #…##.. #…##.. #…##.. #…##.. #…##..
#……. #……. #……. #……. #……. #……. #……. #……. #….##. #….##. #….##. #….##. #….##. #….##. #….##. #….##.
#……. #……. #……. #……. #……. #……. #……. #……. #…..## #…..## #…..## #…..## #…..## #…..## #…..## #…..##
#……. #……. #……. #……. #……. #……. #……. #……. #……# #……# #……# #……# #……# #……# #……# #……#


To display a room you'd use the following algorithm, with n nw w sw s se e ne being booleans that are either 0 or 1 depending on if the room has said exit. The characters for the left tile are 128 to 160.

To display the left tile you'd use: 128 + n * 1 + nw * 2 + w * 4 + sw * 8 + s * 16
To display the right tile you'd use: 160 + n * 1 + ne * 2 + e * 4 + se * 8 + s * 16

I created a test font using Fony (which has displaying issues in Putty which is why I'm hesitant to release it) and made some screenshots:

The 64 8 exit drawing characters in a row:



8 exit drawing characters used for typical 4 exit map drawing:



8 exit drawing characters used for an 'hello aliens' 8 exit map drawing:



In addition I figured to add 16 characters (192 to 207) for 4 exit river drawing. It's not a complete range, so implementations need to mix and match with the 8 exit character set. I'm not entirely sure about this range yet, I'm thinking about getting rid of the no exit and 4 exit characters. The thought behind the no exit characters (first and ninth) was to draw ponds, and the 4 exit characters (eight and sixteenth) for drawing a plus to mark the player's location. Also not entirely sure if the ability to draw rivers and bending paths is more important than having more wilderness drawing characters.

…….. …….# …….# …….. …….# …….. …….# …….. …….. #……. #……. …….. #……. …….. #……. ……..
…….. …….# …….# …….. …….# …….. …….# …….. …….. #……. #……. …….. #……. …….. #……. ……..
…….. …….# …….# …….. …….# …….. …….# …….# …….. #……. #……. …….. #……. …….. #……. #…….
….##.. …….# …….# …….. …….# …….. …….# …….# …….. #……. #……. …….. #……. …….. #……. #…….
…####. …….. ……## …….. …….. …….. ……## …….# .##….. …….. ##…… …….. …….. …….. ##…… #…….
…##### …….. #######. …….. …….. ######.. #######. ….#### ####…. …….. .####### …….. …….. ..###### .####### ####….
….#### …….. ######.. …….. …….. #######. #######. ….#### #####… …….. ..###### …….. …….. .####### .####### ####….
…..##. …….. …….. …….. …….. ……## ……## …….# .####… …….. …….. …….. …….. ##…… ##…… #…….
…….. …….. …….. …….# …….# …….# …….# …….# ..##…. …….. …….. #……. #……. #……. #……. #…….
…….. …….. …….. …….# …….# …….# …….# …….# …….. …….. …….. #……. #……. #……. #……. #…….
…….. …….. …….. …….# …….# …….# …….# …….. …….. …….. …….. #……. #……. #……. #……. ……..
…….. …….. …….. …….# …….# …….# …….# …….. …….. …….. …….. #……. #……. #……. #……. ……..
…….. …….. …….. …….# …….# …….# …….# …….. …….. …….. …….. #……. #……. #……. #……. ……..


And of course a screenshot:



I also thought of some shape drawing characters. There are 7 of them (the 8th being the space character) with a total of 16 possible shapes by inversing the background and foreground colors.

…….. …….. …….. …….. …….. …….. …….. …….. ####…. ….#### ######## …….. ####…. ….#### ########
…….. …….. …….. …….. …….. …….. …….. …….. ####…. ….#### ######## …….. ####…. ….#### ########
…….. …….. …….. …….. …….. …….. …….. …….. ####…. ….#### ######## …….. ####…. ….#### ########
…….. …….. …….. …….. …….. …….. …….. …….. ####…. ….#### ######## …….. ####…. ….#### ########
…….. …….. …….. …….. …….. …….. …….. …….. ####…. ….#### ######## …….. ####…. ….#### ########
…….. …….. …….. …….. …….. …….. …….. …….. ####…. ….#### ######## …….. ####…. ….#### ########
…….. …….. …….. …….. …….. …….. …….. …….. …….. …….. …….. ####…. ####…. ####…. ####….
…….. …….. …….. …….. …….. …….. …….. …….. …….. …….. …….. ####…. ####…. ####…. ####….
…….. …….. …….. …….. …….. …….. …….. …….. …….. …….. …….. ####…. ####…. ####…. ####….
…….. …….. …….. …….. …….. …….. …….. …….. …….. …….. …….. ####…. ####…. ####…. ####….
…….. …….. …….. …….. …….. …….. …….. …….. …….. …….. …….. ####…. ####…. ####…. ####….
…….. …….. …….. …….. …….. …….. …….. …….. …….. …….. …….. ####…. ####…. ####…. ####….
…….. …….. …….. …….. …….. …….. …….. …….. …….. …….. …….. ####…. ####…. ####…. ####….


No screenshot as of yet, not entirely sure about the utility of it either, but I think it could be useful for displaying tile based wilderness maps.

Given it's difficult to create fonts, my general idea is to construct the best possible general purpose bitmap font standard, in the hopes of people with time on their hands creating various working fonts. So far I've implemented the 8 exit and river exit drawing in tt++, but I'm not sure how to go about designing the wilderness map drawing characters.
03 Jun, 2010, quixadhal wrote in the 2nd comment:
Votes: 0
You should probably check out the work done by the folks in the roguelike games community, as they've been doing custom fonts for many years.
03 Jun, 2010, Scandum wrote in the 3rd comment:
Votes: 0
I've checked, but haven't seen anything other than the usage of extended ascii line drawing characters.
04 Jun, 2010, Mudder wrote in the 4th comment:
Votes: 0
I like this.
0.0/4