Suppose somebody develops a new language, with totally new characters. And a font for the same has to be created. How does one do that?

  • 9
    They draw it. Then digitize it. Then lobby the computer industry to develop a new keyboard to use the new characters.
    – DA01
    May 13, 2012 at 23:14
  • 1
    This is an interesting question, and I think drawing the characters and being able to type them are only part of it. I think the answer largely depends on how widely supported you need the language to be (e.g. an academic project running in a single lab vs (for argument's sake) suddenly discovering a hitherto unknown major civilisation who need to be communicated with?)
    – e100
    May 16, 2012 at 11:44

3 Answers 3


Creating a customized language font is not at all different from creating a standard font, as long as a standard keyboard can be used to write it:

Ad DA01 mentions, you can start by drawing your font and digitizing it using a tablet or re-drawing your curves with a scanner and software of your choice. Then you can use a program to convert your characters into a font.

ILoveTypography has a nice article on this: http://ilovetypography.com/2007/10/22/so-you-want-to-create-a-font-part-1/ There you can find a list of alternatives, methods and suggestions (there is also a part 2).

If your font has nothing to do with the current alphabets, then you will have to either create a new input hardware / software or use your language in a different way.


The first thing, you need to know about are Unicode’s Private Use Areas (PUA). They provide code points whose usage is left at the discretion of the font creator. For example, it can be used to provide deco elements, provide fallback ways to access characters that are otherwise only accessible by OpenType features and similar or encode characters for existing languages that haven’t been encoded yet. In particular, it can also be used for characters for totally new languages (or more precisely scripts) until they become included in Unicode – which will likely take a while.

So the first thing you should do, is to develop some convention for the users of your language on which characters from the PUA should be used for which characters of your script. If your script has features such as diacritics or ligatures, you might read into Unicode’s current policies and adopt them¹. Unless your script has more characters than the first PUA (in the Basic Multilingual Plane), I recommend using it, as this ensures maximum software compatibility.

Creating a font for your script works like creating a font for existing script just that you create characters for the selected PUA code points instead of the code points reserved for existing scripts. And the best thing is: If you create other fonts for your script, you can easily switch a text between them and users of your language who want to render texts only need one font supporting it.

This leaves the problem of implementing a keyboard layout or other input methods for your script, but that’s a problem you would probably face anyway and that’s not so big an issue nowadays. The only way to avoid this is reusing code points for Latin (or whatever the standard script among the speakers of your language is), but I strongly advice against this, as it will create more problems than it solves on the long term.

¹ Which in case of the examples means: Use modifier characters instead of one character for each diacritical character and do not encode ligatures – let intelligent font features handle them.


Here's an article on a Klingon font (an artificial language) which covers this. http://www.klingonwiki.net/En/Fonts

Keeping in mind the actual design of the new language characters is trivial. It's just like a dingbats font. You design arbitrary characters and assign them to existing keyboard characters (unicode). Something like FontForge can help design the letters and create a font file out of them. http://fontforge.github.io/en-US/

As other people have pointed out, actually using the language appropriately is a whole other issue.

Not the answer you're looking for? Browse other questions tagged or ask your own question.