Unicodes can either be integers (“A” is 65
, “B” is 66
, etc) or hex (“A” is 0x41
, “B” is 0x42
, etc).
When scripting with RoboFont or FontTools, a hard thing at first is that different styles come up in different contexts. For example, integers will often be used in scripts, but hex values are shown in UIs and in the TTX output of cmap
(the table that maps unicode values to glyphs). So, it's helpful to know how to go between them to do different types of work.
To go from a string to an unicode integer, you can use ord(), like:
>>> ord("A")
65
To go from an integer to a hex, you can use hex(), like:
>>> hex(65)
'0x41'
To go from an integer or hex to a string, you can use chr(), like:
>>> chr(0x41)
'A'
>>> chr(65)
'A'
To go from a hex value to an integer, use int()
, like:
>>> int(0x0083)
131
>>> int(0x41)
65
I'm not sure you'll need it for what you do, but all Unicode code points have names, and Python can tell you what they are: