Skip to content


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Glǽmscribe (also written Glaemscribe) is a software dedicated to the transcription of texts between writing systems, and more specifically dedicated to the transcription of J.R.R. Tolkien's invented languages to some of his devised writing systems (Tengwar, Sarati, Cirth, ...).

The current stable version is 1.2.0 (August 2019).

Official integration

Here is the official integration of Glǽmscribe's engine.

Glaemscribe's UI Screenshot


  • Handles a large variety of writings (Tengwar, Cirth, Sarati, Runes and more).
  • Offers modes for a large variety of fictional languages (Quenya, Sindarin, Khuzdul, Black Speech, Adûnaic, Telerin, Noldorin, Valarin, Westron), and non-fictional languages (Old English, Old Norse, Japanese).
  • Extensible through a custom programming language dedicated to the writing of modes.
  • Allow modes to be designed and programmed to have conditional behaviors depending on independent, custom options.
  • Separates the handling of modes and charsets, making the mode files purely 'logical' and compliant with all fonts, and pushing back font issues to charset files.
  • Compliant with opentype and non-opentype fonts, so that we can handle old-gen (Parmaite, Eldamar, Annatar...) fonts as well as new-gen ones (FreeMono, Telcontar, Eldamar Sarati - glaemscribe version with opentype features, ...), so that have a smooth transition between technologies.
  • Offers a mechanism to compensate diacritic and ligature issues for non-opentype fonts through 'virtual characters', allowing mode files to be generic and far more simple to write.
  • Has support for inlined, spelled tengwar (or any other writing, respectively) for complete control on the output.
  • Has an official graphical, friendly integration (see above).
  • Has a graphical IDE for helping users to write mode files.
  • Has a command-line tool implementation (in ruby).


Glaemscribe has two separate implementations : a javascript library and a ruby library.

Mode development

If you're interested in developing a mode for Glǽmscribe, please read the mode development documentation.

Installation and integration

Here is the installation and integration documentation, for advanced users.


Version Date Comment
1.2.1 Unreleased [Japanese] Corrected 億 to 10^8, added support for セィ and ゼィ. Thanks to Roman Rausch for his feedback!
Refactored JS array functions to prevent interactions with other libraries. Thanks to Troy Alford for the fix!
Refactored charset virtual chars in a more git friendly format.
[Lang Belta] Added Tengwar mode by Da Def (exotic experiment!)
1.2.0 08/04/2019 Added support for hybrid unicode 'GlaemUnicode' fonts (see the font directory for details).
Added support for the Free Tengwar Font project fonts (experimental).
Added support for {UNI_XXX} unicode entry variables in rule source member.
Added "sequence" type for virtual chars.
Added "pointer" (dynamic) variable type using the '<=>' syntax.
Added macro/deploy directives for declaring and using macros and avoid code repetition.
Cross rules can now use a variable as cross schema.
[Khuzdul] : Added missing long o.
[Sindarin][All Modes] Reworked and uniformized phonology disambiguation (median dot, hyphen, ng, ngw).
[Japanese] Added japanese tengwar mode.
Bug fixes.
1.1.14 12/17/2017 Minor bug fix on 1.1.13
1.1.13 12/17/2017 [Quenya] Adding support for palatalized geminates (requested exotic feature)
1.1.12 11/28/2017 Minor bug fix on 1.1.11
1.1.11 11/28/2017 Minor bug fix on 1.1.10
1.1.10 11/28/2017 Adding small toolbar in the editor. Rewrote the glaeml arg parser to handle escaped unicode chars such as '\u00a0'
1.1.9 11/26/2017 Bug fix targeting handling of NBSP.
1.1.8 11/25/2017 Bug fixes and charset enhancings.
1.1.7 07/21/2017 Merged handling of /aw/ & /au/ in the Beleriand mode for Sindarin.
1.1.6 07/17/2017 Enhanced handling of /aw/ in the Beleriand mode for Sindarin. Thanks a lot to Dmitry Kourmyshov for noticing!
1.1.5 06/14/2017 Fixing Quenya/Sarati issues (hl/hr/qui). Adding Quenya/Sarati punctuation basic handling. Thanks a lot to Roman Rausch for noticing these bugs & missing features !
1.1.4 06/11/2017 Fixing font problems and adding font features, enhancing charsets : adding some missing pustar punctuation, adding consonant modification signs for narrow bearer tengwar, refactoring the virtual charset tool, creating font repo for better tracking (thanks @Laicasaane for reporting all these issues!).
1.1.3 05/27/2017 [Tengwar] Added support for inlined, raw, spelled tengwar through the raw tengwar mode and the {{ ... }} syntax within any tengwar mode (thanks @Shihali for the discussion leading to that feature).
Major bug fix on crossrules (thanks @Laicasaane for noticing that bug!)
Reworked charsets and moved the reversed a tehta that was mapped on U+00AD (soft hyphen) (thanks @Laicasaane for noticing that bug too!)
1.1.2 05/04/2017 Npm repackaging.
1.1.1 05/04/2017 [Quenya] Added Vanyarin ldy, rdy, lg, rg, ff.
Added npm packaging.
Minor bug fixes.
1.1.0 03/24/2017 [Quenya] Added double tehtar option.
Added reversed virtual chars (for ligatures).
Added charset for Annatar.
Added LAMBE ligature for Annatar charset.
Enhanced existing charsets for better diacritic placement.
Merged Blackspeech modes.
Added support for FreeMonoTengwar.
Added custom, independent charset for Tengwar Parmaite.
Added charset for Tengwar Elfica.
New runic modes for Old Norse and Old English.
Lots of minor fixes.
Added small options in tengwar modes (consonant modification diacritic style, o/u curl direction, etc.)
1.0.19 09/06/2016 [Quenya] Removed unutixe under óre for coherency in implicit a submode.
[Sindarin Angerthas Daeron] Fixed h,ch,hw.
1.0.18 09/02/2016 Fixed 'implicit a' option for quenya mode broken in 1.0.17. Thanks to Dmitry Kourmyshov for noticing.
1.0.17 08/26/2016 Ported modes to virtual chars, added a dedicated charset for tengwar eldamar for better rendering of tehtar and diacritics.
1.0.16 08/16/2016 Introduces virtual chars in charsets for easier tehtar and diacritic variant uses.
1.0.15 ... Unlogged (see mode changelogs)

Prior todos

  • Deeper integration/design of full-featured OpenType Tengwar fonts.
  • Rewrite the charset editor which is now obsolete since the introduction of virtual chars (will probably be dropped : to much hassle for something which can be done easily and once with a text editor).


Glǽmscribe is released under the terms of the GNU Affero General Public License :

Glǽmscribe (also written Glaemscribe) is a software dedicated to
the transcription of texts between writing systems, and more 
specifically dedicated to the transcription of J.R.R. Tolkien's 
invented languages to some of his devised writing systems.

Copyright (C) 2015 Benjamin Babut (Talagan).

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <>.

Contributions, acknowledgments and thanks

  • Glǽmscribe would never have been possible without the invaluable and unconditional help and wisdom of Bertrand Bellet.
  • Special thanks to Måns Björkman author of the outstanding website Amanyë Tenceli and its typefaces, a precious resource for Glǽmscribe's development, and Didier Willis for having ignited the inspiration of this project.
  • Many thanks to Paul Strack for all his suggestions and careful examinations on the Tengwar modes during his integration of Glǽmscribe's engine into his eldamo project!
  • Many thanks to J. Mach Wust and Roman Rausch for their clever thoughts and advice on the Tengwar & Sarati modes and fonts.
  • Many thanks to Dan Smith, Johan Winge and Enrique Mombello for their incredible work on tengwar fonts ; this project would not have been possible without them
  • Many thanks to Da Def from the Expanse TV series community for sharing his exotic Tengwar mode for Lang Belta (a conlang invented by Nick Farmer).
  • Many thanks to Laicasaane for his very precise remarks on the charsets and modes, and the Visual Studio syntax highlighting plugin.
  • Many thanks to Troy Alford* for his react integration, fixes and comments on the js src.
  • Many thanks to Dmitry Kourmyshov for his very clever remarks and glances at the elvish modes.
  • Many thanks to Leonard Wickmark for his suggestions during his integration of Glǽmscribe's engine into the elfdict project!.
  • Glǽmscribe would never have come to be without the ceaseless and continuously renewed work of the great family of Internet Tolkienists, both on technologies (with several generations of transcribers and typefaces) and on knowledge shared and gathered on websites and forums. Neither would it exist without the devoted labour of all those that make the publication of Tolkien's linguistic works possible. A very big thank you to them all!

Third party components acknowledgements

  • Glǽmscribe's IDE uses CodeMirror for its code writing widgets.
  • Glǽmscribe's IDE uses d3.js for the whole SVG behaviour of its debugger UI. Thanks to Mike Bostock for D3 (truly awesome)!
  • Glǽmscribe's IDE uses tipsy for tooltips in its debugger UI. Thanks to Jason Frame!
  • Glǽmscribe's IDE uses alertify.js. Thanks to Fabien Doiron!
  • Glǽmscribe's IDE uses Font Awesome. Thanks to Dave Gandy!


Glǽmscribe is written and maintained by Benjamin Talagan Babut.