J.R.R. Tolkien is well known for having invented his own language and its respective typography while writing Lord of the Rings (brilliant guy!), as seen from the Elvish language ring inscription (What package allows Elvish in TeX?). However, he obviously did not have LaTeX for professional typesetting, although he was probably very good at calligraphy (and linguistics). Nowadays I understand that we can typeset Elvish on LaTeX from inspecting his Lord of the Rings trilogy books and its inscriptions. But how do you actually go about typesetting your own original UNIQUE language in LaTeX (assuming you are creative enough to make one on pencil and paper and there are no LaTeX packages currently out there to get the job done)?


and if you mean to create you own font set then you are going to need Font Design programs. some are even for free like TeX is:

  • MetaFont (the original sister of TeX designed by Knuth)
  • MetaPost

but be aware: if you think TeX is difficult you will be surprised how difficult it is to design own font.

  • 6
    These days, I'd recommend FontForge. Definitely use something you can get at least type 1 from, preferably opentype or truetype. If you make opentype/truetype, you can use Xe/LuaTeX and not worry about TeX font metrics and such. If you use e.g. metafont, that's not an option. – cfr Dec 30 '14 at 2:39
  • @cfr, thanks for hint. did not know this one. seems very useful. – Daniel Dec 30 '14 at 4:32
  • 4
    Two answers? Why? – egreg Dec 30 '14 at 11:15
  • two different directions of view: a) for elvish only b) generating a new font set. now we can comment on both views without confusing each other what we mean. in summary: two different solutions. – Daniel Dec 31 '14 at 0:50
  • As someone who has tried it, font design is not for the faint of heart – there are many factors to consider if you want it to be for general use. If it's just for fun in a book or novel, there isn't too much to worry about, though. – Sean Allred Jan 29 '15 at 2:18



all you need to write Elvish and other Middle Earth languages...

  • 1
    Yes, but these already exist, I'm more interested to know how to actually go about creating these LaTeX packages assuming you already have your own unique language. – warship Dec 30 '14 at 1:03
  • This would be better as a comment (or a link to one of these questions). – Sean Allred Jan 29 '15 at 2:16

To expand on Daniel’s answer: while METAFONT and so on were historically very important to the development of TeX, you would today want to map your script to the Private Use Area of Unicode and create an OpenType font for your conlang. (Depending on whether anyone but you will ever use it, also check out the ConScript fictional-language registry and try not to clash with anybody else there. In particular, the most likely kind of document to use your script would be a compendium of obscure conlangs.)

In an OpenType font, you can pick a code for your language and/or script that isn’t already being used or likely to be, then define any features it needs, such as ligatures, combining characters and text direction.

If you want to be able to enter your script in a text editor, you ought to begin by extending a free monospace (that is, character-cell) font and saving it under a new name. This is what the Free Tengwar Font Project did with FteeMonoTengwar (based on FreeMono).

You would then need to be able to enter it somehow. One simple way is to not put any PUA characters in your source document, but to write a LaTeX package with macros for each symbol in your writing system. Preferably short. Depending on how complicated the transliteration is, you might also be able to auto-transliterate from ASCII.

On Linux, you might define compose-key shortcuts. An alternative would be to click on the glyphs in a character map (such as charmap.exe on Windows) or even to define your own keyboard layout.

When you have your OpenType font declared, you can load it as a font face or family using fontspec. At that point, you can switch to that font whenever you change language. (XeLaTeX currently has better support for non-Western scripts than LuaLaTeX.) If you’re really going the whole hog, you might write a configuration file to get Babel or Polyglossia to support your conlang.

If you really, truly need compatibility with pdftex, FontForge can generate a Type 1 font, for which you would then need to define a mapping and a LaTeX package.


The key factor is where the font mapping occurs. That will determine which packages/ini files need modifying.

Tengwar are meta-characters and the value they represent can vary according to the mode of use, like the x in alegbra can take on different values: the most simple case is if we use full tengwar in Modern English orthographic mode, and a font (meaning the font designer(s)) could do all the hard work.

An impression:

English orthographic mode full tengwar impression

I say 'impression' because I haven't checked the mode used by the font.


\setmainfont[Scale=1.5]{Tengwar 03}\usepackage{lipsum}
The cat sat on the mat and the quick brown fox jumps over the lazy dog.

AaBbCc, DdEeFfGg.


Pointed tengwar would require a sophisticated font, and/or macros and kerning; and Modern English phonemic mode (either full tengwar or pointed tengwar) would require a re-write of the underlying text - a translation, in effect - and matching changes in polyglossia .ldf files (including date and calendric calculations, if desired) and biblatex .lbx files.

Not an impossible task, in any of the cases.

Setting up an entirely new language (new to the packages, that is) is a slightly different lens and perspective. I'll see if I can organise an example. Perhaps something with a smaller number of letters, like Adlam. Or Balinese, which has a beautifully flowing script.

Scripts already in Unicode won't need to use the Private Use Area, but there will still be mapping, either logical or physical, to input the text.

A unicode font implies fontspec, and if syllable shaping is required according to the font, then xelatex to compile (because it uses font-shaping engine HarfBuzz).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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