Glaemscribe

A new tolkienian transcriptor

and a Glǽmscrafu piece of linguistic mineral

By Benjamin Babut (Talagan)

Motivations

Three Glǽmscrafu needs :

  • Scriptability : automatic website generation.
  • Versatility : large amount of very different types of writings and languages.
  • Precision : total control of the output.

Languages / Writings modes implemented

  • Adûnaic / Tengwar
  • Blackspeech / Tengwar (cursive)
  • Gothic
  • Khuzdul Cirth
  • Old English ("Mercian" mode)
  • Old English ("West Saxon" mode)
  • Sindarin / Tengwar Beleriand
  • Sindarin / Tengwar Classical
  • Quenya/Qenya / Tengwar
  • Quenya/Qenya / Sarati
  • Telerin / Tengwar
  • Valarin / Sarati
  • Old Norse / Runes ("Futhark" reconstruction)

Specifications (1/4)

Scriptability :

  • The current implementation is in Ruby.
  • A Javascript / Node.js should come too.
  • Modes are written in a custom programmation language.

Specifications (2/4)

A clean, modular architecture :

Specifications (3/4)

Gets rid of the charset/font dependency as much as possible, by splitting the modes into dedicated/factorized files.

Specifications (4/4)

A language for writing modes (Quenya mode sample):


            
  
  {A}             <=> (a,ä)
  {AA}            <=> (á,ā,â,aä,äa,ää,aa)
  {K}             <=> (c,k)
  
  ...
  
  
  {VOWELS}        <=> {A}           * {E}             * {I}           * {O}           * {U}
  {LVOWELS}       <=> {AA}          * {EE}            * {II}          * {OO}          * {UU}
  {TEHTA_XL}      <=> THSUP_TDOT_XL * THSUP_ACCENT_XL * THSUP_DOT_XL  * THSUP_CURL_XL * THSUP_CURL_INV_XL 
  
  ...
  
  
  {DIPHTONGS}     <=> {AI}                * {AU}                  * {EU}                    * {IU}                * {OI}                  * {UI}
  {DIPHTENGS}     <=> YANTA THSUP_TDOT_L  * URE THSUP_TDOT_L      * URE THSUP_ACCENT_L      * URE THSUP_DOT_L     * YANTA THSUP_CURL_L    * YANTA THSUP_CURL_INV_L
  {V_D_KER}       <=> [ {VOWELS}    * {DIPHTONGS} ]
  {V_D_IMG_XL}    <=> [ {TEHTA_XL}  * {DIPHTENGS} ]
      
  
  [{VOWELS}]      =>  TELCO[{TEHTA_XS}] 
  [{LVOWELS}]     =>  ARA[{TEHTA_XS}]   
  [{DIPHTONGS}]   =>  [{DIPHTENGS}]     
  
  ...
  
  
  {LINE_2ND_KER}  <=> nd      * {MB}      * ng      *  ngw
  {LINE_2ND_IMG}  <=> ANDO    * UMBAR     * ANGA    *  UNGWE
  
  [{LINE_2ND_KER}]{V_D_KER_WN}  => [{LINE_2ND_IMG}]{V_D_IMG_XL_WN}
  
  ndy{V_D_KER_WN}               => ANDO THINF_DDOT_XL {V_D_IMG_XL_WN}

        

The case of Sarati (1/5)

Example

Sarati text example : Oilima Markirya II

The case of Sarati (2/5)

Issues

  • Diacritics placement / stacking : diacritics placement is not handled by the Sarati Eldamar font.
  • Writing direction : not a pure transcription problem, but related. Sarati may use non-ltr writing directions.

The case of Sarati (3/5)

Diacritics : Sarati Eldamar instrumentation

Using OpenType features and FontForge, we added a GSUB table and diacritics anchors to all characters of the font.

The case of Sarati (4/5)

Diacritics : Sarati Eldamar instrumentation

The case of Sarati (5/5)

Writing direction : Javascript+CSS

Web-browsers handling of non-ltr writing directions is not yet sufficiently mature.

We have chosen a CSS transform + Javascript solution.

Long term wishes

  • Have a clean, complete and universal unicode font for Tolkienian writing systems that uses OpenType features instead of the old diacritics placement tricks.
  • Add a conditionnal system to the mode language to provide a choice of transcription options.
  • Integrate a phonetics engine for natural languages to provide a universal phonetic tengwar/sarati mode.

Thank you!