One point I'm still not sure about - who does the mapping between the character to display and the actual glyph that will be displayed? There is no evidence for the, say, UTF-8 encoding is the font format, so how does the firmware matches the right glyph to the right character?
In the truetype font, there are pair of informations about codepoint and glyph.
When you transform with fontgen.py the information pair also transform into pfo file.
I think pebble language pack use UTF-16 codepoints in its codetables.
You can check the pair of codepoints and characters, you can see with xndcn's extract_codepoints.py.
$ python extract_codepoints.py foo.pfo > characterlist.json
then, output the list of characters and its codepoints, decimal format of UTF-16, and character itself.
If you would limit or add characters for the new pfo file you would make, you would edit the codepoint list, and use with --list option of fontgen.py.