Kindle supports custom fonts

I am pleasantly surprised to see that Amazon Kindle now supports installing custom fonts. A big step towards supporting non-latin content in their devices. I can now read Malayalam ebooks in my kindle with my favorite fonts.

Content rendered in Manjari font. Note that I installed Bold, Regular, Thin variants so that Kindle can pick up the right one

This feature is introduced in Kindle 5.9.6.1 version released in June 2018. Once updated to that version, all you need is to connect the device using the USB cable to your computer. Copy your fonts to the fonts folder there. Remove the usb cable. You will see the fonts listed in font selector.

Kindle had added Malayalam rendering support back in 2016, but the default font provided was one of the worst Malayalam fonts. It had wrong glyphs for certain conjuncts and font had minimal glyphs.

I tried some of the SMC Malayalam fonts in the new version of Kindle. Screenshots given below

Custom fonts selection screen. These fonts were copied to the device
Select a font other than the default one
Content in Rachana.
Make sure to check the version. 5.9.6.1 is the latest version and it supports custom fonts

Talk on ‘Malayalam orthographic reforms’ at Grafematik 2018

Santhosh and I presented a paper on ‘Malayalam orthographic reforms: impact on language and popular culture’ at Graphematik conference held at IMT Atlantique, Brest, France. Our session was chaired by Dr. Christa Dürscheid.

The paper we presented is available here. The video of our presentation is available in youtube.

Grafematik is a conference, first of its kind, bringing together disciplines concerned with writing systems and their representation in written communication. There were lot of interesting talks on various scripts around the world, their digital representation, role of Unicode, typeface design and so on. All the talk videos are available in the conference website.

u and uː vowel signs of Malayalam

The reformed or simplified orthographic script style of Malayalam was introduced in 1971 by this government order. This is what is taught in schools. The text book content is also in reformed style. The prevailing academic situation does not facilitate the students to learn the exhaustive and rich orthographic set of Malayalam script. At the same time  they observe a lot of wall writings, graffiti, bill-boards and handwriting sticking to the exhaustive orthographic set.

The sign marks for the vowels ഉ and ഊ (u and ) have many diverse forms in the exhaustive orthographic set when joined with different consonants. But in the reformed style they are always detached from the base consonant with a unique form as ു and ൂ respectively for the vowel sounds u and . Everyone learns to read both of these orthographic variants either from the school or from everyday observations. But while writing the styles, they often gets mixed up as seen below.

u sign forms on wall writings
The green mark indicates the usage of reformed orthography to write പു (pu), blue indicates the usage of exhaustive set orthography to write ക്കു (kku). But the one in red is an unusual usage of exhaustive orthography to write ത്തു (ththu). Such usages are commonplace now, mainly due to the lack of academic training as I see it.

 

Redundant usage of vowel sign of u is indicated in circle

In this blog post I  try to consolidate the vowel signs of u and  referring to early script learning resources for Malayalam.

Vowel signs in Malayalam

There are 37 consonants and 15 vowels in Malayalam (additionally there are less popular consonant vowels like ൠ, ഌ and ൡ). Vowels have independent existence only at word beginnings. Otherwise they appear as consonant sound modifiers, in form of vowel signs. These signs often modify the glyph shape of consonants and this is a reason for the complex nature of Malayalam script. These marks can get distributed over the left and right of the base consonant. See the table below:

As seen in the table, the signs ു, ൂ, ൃ ([u] ,[uː], [rɨ] ) changes the shape of the base consonant grapheme. It was not until the 1971 orthographic reformation these signs got detached from the base grapheme. You can see the detached form as well in the rows 5,6 and 7 of the above table.

How does the vowel sign for ‘ു’ [u] and ‘ൂ’ [uː] affect the base consonant?

In the exhaustive script set of Malayalam there are in fact 8 ways in which ‘ു’ [u] and ‘ൂ’ [uː] sign marks change the shape of base consonant grapheme. These 8 forms (u- 4 forms and uː – 4 forms) are consolidated below.

‘ു’ [u] sign induces 4 types of shape variations to base consonant.

  • ക(ka) , ര(ra) gets modified by a shape we hereby call as hook. The same shape change applies to all conjuncts that ends with ക as in ങ്ക(n̄ka), ക്ക(kka), സ്ക(ska) and സ്ക്ക(skka). As the conjuncts that ends with ര(ra) assumes a special shape the hook shaped sign does not apply to them.
  • ഗ(ga), ഛ(ʧʰa), ജ(ʤa), ത(t̪a), ഭ(bʱa), ശ(ʃa), ഹ(ɦa) gets modified by a shape that resembles a tail that comes back to right after moving left. Those conjuncts which end with these consonants also assume the same tail shape when when ‘ു’ [u] vowel sign appear after them.
  • ണ(ɳa) and ന(na/n̪a) changes their shape with an inward closed loop. Those conjuncts which end with these consonants also assume the same loop shape when when ‘ു’ [u] vowel sign appear after them. For example ണ്ണ(ɳɳa), ന്ന(nna), ക്ന(kna) etc.
  • All other 24 consonants use the drop shape. As it is the most popular among all [u] signs, it is often mistakenly used instead of the other signs mentioned above. This case is indicated in the red circle in figure captioned u sign forms on wall writings.

‘ൂ’ [uː] sign induces 4 types of shape variations to base consonants.

  • ക(ka) , ര(ra), ഗ(ga), ഛ(ʧʰa), ജ(ʤa), ത(t̪a), ഭ(bʱa), ശ(ʃa), ഹ(ɦa) can have two alternate uː sign forms. First shape is hook and tail shape while the second one is hook and rounded tail.
    • Hook and rounded tail is more popular with the consonants ക(ka) , ര(ra) and ഭ(bʱa)
    • Hook and tail is more popular with the consonants ഗ(ga), ഛ(ʧʰa), ജ(ʤa), ത(t̪a), ശ(ʃa) and ഹ(ɦa)
  • The outward open loop shape is assumed by the ‘ൂ’ [uː] sign mark when associated with the consonants ണ(ɳa) and ന(na/n̪a)
  • All other 24 consonants use the double-drop shape. As it is the most popular among all [u] signs, it is often mistakenly used instead of the other signs mentioned above

Note: The sign shape names drop, double-drop, hook, hook and tail, hook and rounded tail, tail, closed loop and open loop are author’s own choice. Hence there is no citations to literature.

Early texts on Malayalam script and orthography

Modern textbooks do not detail the ‘ു’ [u] and ‘ൂ’ [uː] vowel sign forms. The earliest available reference to the script of Malayalam and its usage is the book from 1772, Alphabetum grandonico-malabaricum sive samscrudonicum.It was a text book meant to be used by western missionaries to Kerala to learn the Malayalam script and its language of description is Latin. Alphabetum describes various vowel sign forms but it does not give any indication on the hook and tail form. ക(ka) , ര(ra), ഗ(ga), ഛ(ʧʰa), ജ(ʤa), ത(t̪a), ഭ(bʱa), ശ(ʃa), ഹ(ɦa) etc. uses the hook and rounded tail form only. This being the first ever compilation of Malayalam script usage, that too by a non-native linguist, there are chances for unintended omissions about which I am not sure of.

The metal types used in this book were movable, and were the first of its kind to be used to print a Malayalam book. The same types were used to print the first ever complete book in Malayalam script Samkshepavedartham.

Excerpt from Alphabetum grandonico-malabaricum sive samscrudonicum describing the usage of ‘ു’ [u] and ‘ൂ’ [uː] signs
A still later work in this regard was done by Rev. George Mathan, almost a century later to Alphabetum. He introduces drop/double drop for ‘ു’ [u]/ ‘ൂ’ [uː] as the common sign form and all others shapes are indicated as exceptions. He clearly mentions about the two alternate forms of hook and tail as well as hook and rounded tail in his book on the Grammar of Malayalam.Grammar of Malayalam- George Mathan

Grammar of Malayalam- George Mathan

Contemporary usage of orthographic styles

The early attempts to describe the script of Malayalam with all its complexity is seen in these books in the initial days of printing era. Much later, in 1971 reformed script orthography was introduced to the language and culture aiming at overcoming the technological limitation of Malayalam typewriters. But the language users never abandoned the then existing style variants. Now we see around us a mix of all these styles.

Note: This is a translation of an earlier blog post written in Malayalam

മലയാളത്തിലെ ‘ഉ’കാര ചിഹ്നങ്ങൾ

പരിഷ്കരിച്ച മലയാള ലിപിയാണല്ലോ ഇന്നു പാഠപുസ്തകത്തിലുള്ളതും വിദ്യാലയങ്ങളിൽ പഠിപ്പിക്കുന്നതും. അതുകൊണ്ടു തന്നെ ഔപചാരിക വിദ്യാഭ്യാസത്തിൽ മലയാളത്തിന്റെ തനതുലിപിയുടെ ശൈലീഭേദങ്ങൾ പരിചയിക്കുവനുള്ള അവസരം നമുക്കു കിട്ടാറില്ല. പക്ഷേ ചുമരെഴുത്തുകളിലും, ബസ്സിലെ ബോർഡുകളിലും, തനതുമലയാളം എഴുതിശീലിച്ച മുതിർന്നവരുടെ കയ്യെഴുത്തിലുമൊക്കെയായി ഈ ലിപിരൂപങ്ങൾ നമ്മുടെ മുന്നിലുണ്ടു താനും. ലിപിപരിഷ്കരണത്തിന്റെ ഭാഗമായി വേർപെട്ട കൂട്ടക്ഷരങ്ങൾ മിക്കതും തെറ്റുകളൊന്നുമില്ലാതെ നമ്മുടെ കയ്യെഴുത്തുകളിൽ അറിഞ്ഞോ അറിയാതെയോ കൂടിച്ചേരാറുണ്ട്. പക്ഷേ വേർപെട്ട ചിഹ്നങ്ങൾ, പ്രത്യേകിച്ച് ു, ൂ ചിഹ്നങ്ങൾ വ്യഞ്ജനത്തോടു ചേർത്തെഴുതുമ്പോൾ ശൈലികൾ  കൂടിക്കുഴഞ്ഞ് പോവുകയും ചെയ്യുന്നു. ചുവടെയുള്ള ചിത്രം നോക്കുക.

ഉ-ചിഹ്നങ്ങളുടെ ഉപയോഗം ചുമരെഴുത്തിൽ.

പച്ചയടയാളത്തിനുള്ളിൽ പരിഷ്കരിച്ച ലിപി, നീലയിൽ തനതു ലിപി എന്നിവ കാണാം. ചുവന്ന അടയാളമിട്ടു സൂചിപ്പിച്ചിരിക്കുന്നത്  മലയാളത്തിൽ പതിവില്ലാത്ത ശൈലിയാണ്. മലയാളത്തിലെ ഉകാര ചിഹ്നങ്ങൾ തന്നെ എട്ടുവിധമുണ്ട്. ഒട്ടും എഴുത്തുപരിശീലനം ഇല്ലെങ്കിൽ ഇത്തരം പിശകുകൾ കടന്നുകൂടുകതന്നെ ചെയ്യും.

ഈ ചിഹ്നങ്ങളും അവ വ്യഞ്ജനങ്ങളിൽ എങ്ങനെ ചേരുന്നുവെന്നും ചെറുതായി ഈ ലേഖനം പരിചയപ്പെടുത്തുന്നു. ഒപ്പം പഴയകാലങ്ങളിൽ ഇതെങ്ങനെയാണ് പരിചയപ്പെടുത്തിയിരുന്നതു് എന്നതു് ചില പ്രാചീന മലയാള പുസ്തകങ്ങളെ അടിസ്ഥാനമാക്കി വിശദീകരിക്കുന്നു.

തനതുലിപിയിലെ പലശൈലിയിലുള്ള ഉ-ചിഹ്നങ്ങൾ  ആവർത്തിച്ചു ചേർത്തുപയോഗിച്ചിരിക്കുന്നു.

സ്വരചിഹ്നങ്ങൾ മലയാളത്തിൽ

മുപ്പത്തിയേഴ് വ്യഞ്ജനാക്ഷരങ്ങളാണ് മലയാളത്തിനുള്ളത്, പതിനഞ്ചു സ്വരങ്ങളും (അത്ര പ്രചാരത്തിലില്ലാത്ത ൠ, ഌ, ൡ എന്നിവ ചേർത്താൽ 18). സ്വരാക്ഷരങ്ങൾ സ്വതന്ത്രമായി നിൽക്കുന്നത് പൊതുവിൽ വാക്കുകളുടെ തുടക്കത്തിൽ മാത്രമാണ്. അല്ലാത്തപ്പോഴെല്ലാം വ്യഞ്ജനശബ്ദങ്ങളെ പരിഷ്കരിച്ചുകൊണ്ട് അവയോട് ചേർന്നു നിൽക്കും. ഇങ്ങനെ ചേർന്നുനിൽക്കുന്നത് സ്വരാക്ഷരങ്ങളല്ല, മറിച്ച് അവയെക്കുറിക്കുന്ന സ്വരചിഹ്നങ്ങളാണ്. സ്വരചിഹ്നങ്ങൾ വ്യഞ്ജനത്തോടു ചേരുമ്പോഴുണ്ടാകുന്ന ലിപിരൂപങ്ങളുടെ വൈവിദ്ധ്യം മലയാളത്തിന്റെ ഒരു സവിശേഷതയാണ്. സ്വരചിഹ്നങ്ങൾ വ്യഞ്ജനങ്ങളുടെ ഇടതും വലതും ഒക്കെയായി വിന്യസിക്കപ്പെടും. പട്ടിക കാണുക.

മലയാളത്തിലെ സ്വരാക്ഷരങ്ങൾ, സ്വരചിഹ്നങ്ങൾ.

പട്ടികയിൽ കാണുന്നതുപോലെ  ു, ൂ, ൃ ചിഹ്നങ്ങൾ വ്യഞ്ജനത്തോടൊട്ടിനിന്ന് അവയുടെ രൂപത്തെത്തന്നെ മറ്റുന്നു. മലയാളലിപികൾ 1971ൽ പരിഷ്കരിക്കപ്പെട്ടതിനു ശേഷമാണ് വ്യഞ്ജനത്തിന്റെ വലതുഭാഗത്തു വേർപെട്ടുനിൽക്കുന്ന വിധത്തിൽ ഈ ചിഹ്നങ്ങൾ പ്രചാരത്തിലായത്. പരിഷ്കരിച്ച ലിപിയിൽ ഈ ചിഹ്നങ്ങൾക്കു വേറിട്ട വിധത്തിലുള്ള രൂപങ്ങൾ മാത്രമേയുള്ളൂ. 5, 6, 7 വരികളിലായി ഇതും പട്ടികയിൽ കാണാം.

ു, ൂ ചിഹ്നങ്ങൾ എങ്ങനെയൊക്കെ വ്യഞ്ജനത്തോടു ചേരാം?

സ്വരങ്ങളിലെ ചിഹ്നരൂപങ്ങളിൽ ഏറ്റവും വ്യത്യസ്തമായ ശൈലികളിൽ വ്യഞ്ജനത്തോടു ചേരുന്നത് ‘ു’, ‘ൂ’ ചിഹ്നങ്ങളാണ്. ചേരുമ്പോൾ വ്യഞ്ജനത്തിന്റെ രൂപത്തെത്തന്നെ അവ മാറ്റുകയും ചെയ്യും. ഓരോ വ്യഞ്ജനത്തിലും ഈ ചിഹ്നം വരുത്തുന്ന മാറ്റം വ്യത്യസ്തമാണ്. ഒരുപക്ഷേ ലിപി പരിണമിച്ചു വന്നപ്പോൾ  ഉണ്ടായ മാറ്റമാകാം ഇതിനു കാരണം. ഉ, ഊ ചിഹ്നങ്ങൾ വ്യഞ്ജനത്തോടു ചേരുമ്പോഴുള്ള ശൈലീവ്യതിയാനങ്ങൾ തനതുലിപിയിൽ ആകെ എട്ടു വിധത്തിലാകാം.  അവ ക്രോഡീകരിക്കികയാണ് ഇവിടെ.

 

മലയാളത്തിലെ ഉ-ചിഹ്നങ്ങൾ
  • ഉകാരം വ്യഞ്ജനത്തോടു ചേരുമ്പോൾ നാലുവിധത്തിലുള്ള മാറ്റങ്ങൾ വ്യഞ്ജനാക്ഷരങ്ങൾക്കു വന്നുചേരുന്നു.
  • ക, ര ഇവയോടു ഉകാരം ചേരുമ്പോഴുള്ള രൂപവ്യതിയാനം കുനിപ്പ് എന്ന പേരിൽ ചിത്രത്തിൽ സൂചിപ്പിച്ചിരിക്കുന്നു. ഈ രണ്ട് അക്ഷരങ്ങൾക്കും പിന്നെ കാരത്തിലവസാനിക്കുന്ന  എല്ലാ കൂട്ടക്ഷരങ്ങൾക്കും ഇതു ബാധകമാണ്. ങ്ക, ക്ക, സ്ക, സ്ക്ക ഇവയെല്ലാം അതിൽപ്പെടുന്നു. കാരത്തിൽ അവസാനിക്കുന്ന കൂട്ടക്ഷരങ്ങൾക്കായി പ്രത്യേകചിഹ്നമുള്ളതുകൊണ്ട് അവിടെ ഒരിക്കലും കുനിപ്പുപയോഗിക്കേണ്ടി വരികയില്ല.
  • ഗ, ഛ, ജ, ത, ഭ, ശ, ഹ -ഇവയോട് ഉകാരം ചേരുമ്പോഴുള്ള  ശൈലി  ഇടത്തേയ്ക്കുനീണ്ടു വലത്തോട്ടു തിരിച്ചുവരുന്ന ഒരു വാല് രൂപമാണ്. ഈ അക്ഷരങ്ങളിലവസാനിക്കുന്ന കൂട്ടക്ഷരങ്ങൾക്കും ഈ രീതി തന്നെയാണ് പിന്തുടരുക.
  • ണ, ന എന്നിവയോട് ഉകാരം ചേരുമ്പോൾ ഉണ്ടാകുന്ന രൂപവ്യതിയാനം ഉള്ളിലേയ്ക്കുള്ള ഒരു ചുരുട്ടാണ്. ഈ അക്ഷരങ്ങളിലവസാനിക്കുന്ന കൂട്ടക്ഷരങ്ങൾക്കും ഇതു ബാധകമാണ്. ഉദാഹരണത്തിന് ണ്ണ, ന്ന, ക്ന ഇവയൊക്കെ.
  • മറ്റു് 24 വ്യഞ്ജനാക്ഷരങ്ങളും ഉപയോഗിക്കുന്നത് ചുഴിപ്പ്/കുണുക്ക് എന്ന രൂപമാണ് . ഏറ്റവും കൂടുതൽ ഉപയോഗിക്കുന്ന ശൈലി ഇതായതു കൊണ്ടു തന്നെ എല്ലാവ്യഞ്ജനങ്ങൾക്കും ഈ ശൈലി പകർത്തിയുപയോഗിക്കുക എന്ന പിഴവ് വളരെ വ്യാപകമായി കാണാറുണ്ട്. ഇതുതന്നെയാണ് ആദ്യത്തെ ചുമരെഴുത്തിൽ ചുവന്ന അടയാളത്തിൽ കാണിച്ചിരിക്കുന്നതും.
മലയാളത്തിലെ ഊ-ചിഹ്നങ്ങൾ

ഊകാരം വ്യഞ്ജനത്തോടു ചേരുമ്പോളും നാലുവിധത്തിലുള്ള മാറ്റങ്ങൾ വ്യഞ്ജനാക്ഷരങ്ങൾക്കു വന്നുചേരുന്നു.

  • ക, ഭ, ര, ഗ, ഛ, ജ, ത, ഭ, ശ, ഹ  ഇവയുടെ ഊകാര ചിഹ്നങ്ങൾ രണ്ടുവിധത്തിൽ ഉണ്ടാകാം: കുനിപ്പിട്ട വളപ്പുരൂപവും കുനിപ്പിട്ട വാലുരൂപവും.
    • കുനിപ്പിനുശേഷം അക്ഷരത്തെച്ചുറ്റി ഇടത്തേയ്ക്ക് വളഞ്ഞുപോകുന്നതാണ് കുനിപ്പിട്ടവളപ്പ്. കുനിപ്പിനു ശേഷം ഇടത്തേയ്ക്കുപോയി വലത്തേയ്ക്കു തിരിച്ചുവരുന്നതാണ് കുനിപ്പിട്ടവാല്.
    • ക, ര, ഭ എന്നിവയ്ക്ക് കുനിപ്പിട്ടവളപ്പാണ് ഇന്നുകൂടുതൽ പ്രചാരത്തിലുള്ളത്
    • ഗ, ഛ, ജ, ത, ഭ, ശ, ഹ ഈ അക്ഷരങ്ങൾക്ക് കുനിപ്പിട്ട വാല് രൂപവും. ചിത്രത്തിൽ ആദ്യം സൂചിപ്പിച്ചിരിക്കുന്നത് ഇതാണ്.
  • ചുരുട്ട് പുറത്തേയ്ക്ക് നീട്ടുന്ന ചുരുട്ടുവാല് എന്നു പേരിടാവുന്ന രൂപമാണ് ന, ണ എന്നീ അക്ഷരങ്ങളുടെ ഊകാരരൂപങ്ങൾ.
  • മറ്റു വ്യഞ്ജനങ്ങൾ 24 എണ്ണവും ഇരട്ടച്ചുഴിപ്പായി വ്യഞ്ജനങ്ങളോട് ചേരുന്നു. ഇതും എല്ലാ വ്യഞ്ജനത്തിനുമുള്ള പൊതുരൂപമായിക്കരുതി പിഴവുവരുത്തുന്നതും സാധാരണമാണ്.

കുറിപ്പ്: ചിഹ്നത്തിന്റെ രൂപങ്ങൾക്ക് പൊതുവായ പേരുകൾ കണ്ടെത്താൻ സാധിക്കാത്തതിനാൽ ലേഖിക തന്നെ ഇട്ട പേരുകളാണ്   കുനിപ്പ്, ചുഴിപ്പ്, ചുരുട്ട്, വാല് എന്നിവ. പകരം വേറെ പേരുകളുണ്ടാവാം.

‘ഉ’കാരചിഹ്നങ്ങൾ പ്രാചീനലിപിപാഠങ്ങളിൽ

ആധുനിക പാഠപുസ്തകങ്ങളിൽ നിന്ന് ഈ ലിപിരൂപങ്ങൾ പരിചയപ്പെടുവാൻ സാധിക്കില്ല. പക്ഷേ പ്രാചീന ലിപിപാഠപുസ്തകങ്ങൾ പലതിലും വളരെ വിശദമായി ഇവയെ വിവരിക്കുന്നുണ്ടു താനും. കയ്യെഴുത്തുപ്രതികളിൽ നോക്കിയാലാണ് ലിപിശൈലികളുടെ യഥാർത്ഥ ചിത്രം വ്യക്തമാകൂ. അച്ചടി പലതിനേയും മാനകീകരിക്കുമ്പോൾ വൈവിധ്യം നഷ്ടമായിട്ടുമുണ്ടാകും.

മലയാളലിപികൾ ആണിയച്ചുകളായി(movable types, ജംഗമാച്ചുകൾ) ആദ്യം അച്ചടിക്കപ്പെടുന്നത് റോമിൽ 1772 ലാണ്. ഫാദർ ക്ലെമന്റ് പിയാനിസ് തയ്യാറാക്കിയ ‘ആൽഫബെത്തും ഗ്രന്ഥോനിക്കോ മലബാറിക്കും‘ എന്ന ഈ ലത്തീൻ പുസ്തകം പാശ്ചാത്യമിഷനറിമാർക്ക് മലയാളലിപികൾ പഠിക്കാനുതകുന്ന വിധത്തിൽ തയ്യാറാക്കിയതായിരുന്നു. ഇതേ അച്ചുകളുപയോഗിച്ചാണ് ആദ്യ സമ്പൂർണ്ണമലയാളപുസ്തകമായ സംക്ഷേപവേദാർത്ഥം പിന്നീട് അച്ചടിക്കുന്നത്.

ആൽഫബെത്തും ഗ്രന്ഥാണിക്കോ മലബാറിക്കം ഉ-ചിഹ്നങ്ങളെപ്പറ്റി പ്രതിപാദിക്കുന്ന ഭാഗം

‘മലയാളത്തിലെ ‘ഉ’, ‘ഊ’ ചിഹ്നങ്ങളുടെ വൈവിധ്യത്തെക്കുറിച്ച് ‘ആൽഫബെത്തും ഗ്രന്ഥോനിക്കോ മലബാറിക്കും’ വിശദമായി പ്രതിപാദിക്കുന്നുണ്ട്. ഈ പുസ്തകത്തിന്റെ മലയാളപരിഭാഷ, വിശദീകരണങ്ങളോടു കൂടി ഫാദർ ഇമ്മനുവേൽ ആട്ടേൽ രചിച്ചത് നമുക്കിന്ന് ലഭ്യമാണ്. മേൽപ്പറഞ്ഞ രൂപങ്ങളിൽ പലതും അതിൽ നമുക്കു കാണാം. അദ്ദേഹത്തിന്റെ വിശദീകരണത്തിൽ മലയാളത്തിലെ ഊകാരങ്ങൾക്ക്  നാമിന്നു മനസ്സിലാക്കുന്ന കുനിപ്പിട്ടവാല് എന്ന രൂപമില്ല. ക, ഗ, ഛ, ജ, ത, ശ, ഹ, ര, ഭ ഇവയെല്ലാം കുനിപ്പിട്ട വളപ്പ് രൂപത്തിലാണ്. രകാരത്തിനു മേൽ ‘ൂ’ ചിഹ്നം ചേരുമ്പോൾ വാലുരൂപത്തിലാണെങ്കിൽ കുറച്ചുകൂടി വ്യക്തത വന്നേനെ എന്നൊരു അഭിപ്രായവും അദ്ദേഹം പ്രകടിപ്പിക്കുന്നുണ്ട്. ചുരുട്ടുവാല്, ചുഴിപ്പ് രൂപങ്ങളെല്ലാം അതേപോലെ തന്നെ അന്നും ഉപയോഗിച്ചിരുന്നു. ആ പുസ്തകത്തിലെ ര,ത ഇവയുടെ രൂപങ്ങൾ ഇന്നത്തേതിൽ നിന്നും നല്ല വ്യത്യാസമുണ്ടായിരുന്നെന്നു കൂടി ശ്രദ്ധിക്കണം. അതുകൊണ്ടുതന്നെ രൂ, തൂ ഇവ രണ്ടും വളപ്പിട്ടെഴുതിയാലും തമ്മിൽ മാറിപ്പോകുകയില്ല.

ആൽഫബെത്തും ഗ്രന്ഥാണിക്കോ മലബാറിക്കം എന്ന ലത്തീൻ പുസ്തകത്തിന്റെ മലയാളപരിഭാഷയിൽ നിന്നും
ആൽഫബെത്തും ഗ്രന്ഥാണിക്കോ മലബാറിക്കം എന്ന ലത്തീൻ പുസ്തകത്തിന്റെ മലയാളപരിഭാഷയിൽ നിന്നും

1800കൾക്കും മുമ്പ് മലയാളം പഠിച്ച് ഒരു വിദേശിയെഴുതിയ പാഠപുസ്തകത്തിലെ വിശദീകരണമാണിത്, അച്ചടിക്കപ്പെട്ട ആദ്യ മലയാള അക്ഷരമാലാപാഠപുസ്തകത്തിലേതും.

പിന്നീട് മലയാളലിപി പാഠപുസ്തകത്തിനു സമാനമായി അവതരിപ്പിക്കുന്നത് 1863ൽ റെവ. ജോർജ്ജ് മാത്തനാണ്. ചുഴിപ്പു ചേർന്ന ‘ഉ’കാരചിഹ്നങ്ങൾ പൊതുരൂപമായും മറ്റുള്ളവയെ ഒരു അപവാദം എന്ന നിലയിലുമാണ് അദ്ദേഹം അവതരിപ്പിക്കുന്നത്(ചിത്രം കാണുക). ഊ ചിഹ്നത്തിന്, ക, ഗ, ഛ, ജ, ത, ശ, ഹ, ര, ഭ  ഇവയോടൊപ്പം  കുനിപ്പിട്ട വാല്, കുനിപ്പിട്ട വളപ്പ് എന്നീ രൂപങ്ങളിൽ ഏതുമാകാം എന്നാണ് മാത്തന്റെ “മലയാഴ്മയുടെ വ്യാകരണം” എന്ന പുസ്തകം പറയുന്നത്.

റവറന്റ് ജോർജ്ജ് മാത്തന്റെ മലയാള വ്യാകരണ പുസ്തകത്തിൽ നിന്ന്

 

 

റവറന്റ് ജോർജ്ജ് മാത്തന്റെ മലയാള വ്യാകരണപുസ്തകത്തിൽ നിന്നും

രണ്ടു നൂറ്റാണ്ടുകൾക്കുമുമ്പ്, അച്ചടി സാങ്കേതികവിദ്യയിലൂടെ ഭാഷയുടെ ആദ്യകാല വളർച്ചയ്ക്കു വഴിതുറന്നവർ മലയാളത്തിന്റെ  ലിപിരൂപങ്ങളെക്കുറിച്ചു വിവരിച്ചതാണ് നമ്മൾ കണ്ടത്. എഴുത്തുരൂപത്തിലെ വൈവിദ്ധ്യത്തെ മുഴുവനും അച്ചുകളിലേയ്ക്ക് അവർ കൊണ്ടുവരാൻ ശ്രമിയ്കുകയും ചെയ്തു.

1971ലെ ലിപിപരിഷ്കരണത്തിന്റെ ലക്ഷ്യം സാങ്കേതികപരിമിതികളെ അതിജീവിയ്ക്കുവാനായി ലിപിയുടെ ലളിതവൽക്കരണമായിരുന്നു. പക്ഷേ അതിന്റെ ഫലമായി നിലനിൽക്കുന്ന രൂപങ്ങളെക്കൂടാതെ വേർപെട്ടുനിൽക്കുന്ന ഒരു പുതിയ ശൈലികൂടി കടന്നുവരികയാണുണ്ടായത്. അതുവരെ നിലനിന്ന രൂപങ്ങളെ പൊടുന്നനെ ഇല്ലതാക്കാൻ ആവില്ലല്ലോ. പരിചയക്കുറവും പരിശീലനക്കുറവും കൊണ്ട് ഏത്ചിഹ്നരൂപം ഏത് വ്യഞ്ജനത്തിനൊപ്പം ചേരുമെന്ന ആശയക്കുഴപ്പം ഭാഷ ഉപയോഗിക്കുന്നവരിൽ വ്യാപകമാവുകയും ചെയ്തു.

Number spellout and generation in Malayalam using Morphology analyser

Writing a number 6493 as six thousand four hundred and ninety three is known as spellout of that number. The most familiar example of this is in cheques. Text to speech systems also need to convert numbers to words.

Source: https://commons.wikimedia.org/wiki/File:Sample_cheque.jpeg by User:Tshrinivasan

The reverse process of this, to convert a phrase like six thousand four hundred and ninety three to number 6493 – the number generation, is also common. In software, it is often required in Speech recognition and in general any kind of semantic analysis of text.

Numbers and its conversion to English words is not really a complex problem to solve with a computer. But how about other languages? In this article, I am discussing the nature of these words in Malayalam and an approach to parse the number and numbers written in words.

Malayalam number spellout

In Malayalam, the spellout of numbers forms a single word. For example, a number 108 is നൂറ്റെട്ട് – a single word. This word is formed by adjective form of നൂറ്(100) and എട്ട്(8). While these two words are glued, Malayalam phonological rules are also applied, resulting this single word നൂറ്റെട്ട്. This word formation characteristics are present for almost all possible numbers you can imagine. Parsing the number നൂറ്റെട്ട് and interpreting it as 108 or converting 108 to നൂറ്റെട്ട് is an interesting problem in Malayalam computing.

I came across this problem while I was trying to develop a dictionary based spellchecker years back. Such a dictionary should have all these single words for all possible numbers, right? Then how big it will be? Later when I was researching on Malayalam morphology analyser, I again encountered this problem. You cannot have all these words in lexicon as entries – it is not practical. At the same time, you should be able to parse these words and and also generate with correct morpho-phonological rules of Malayalam.

Like I mentioned in my introduction article of my Malayalam morphological analyser,  project, Malayalam is a heavily agglutinative language. While I was learning the Finite transducer technology, Malayalam number words were one of the obvious candidates to try out. These numbers perfectly model Malayalam word formations. They get agglutinated and inflected, during which morpho-phonological rules get applied. നൂറ്റെട്ടിലായിരുന്നു, നൂറ്റെട്ടിനെ, നൂറ്റെട്ടോ? നൂറ്റെട്ടാം, നൂറ്റെട്ടാമത്തെ, നൂറ്റെട്ടര  – All are examples of words you get on top number word നൂറ്റെട്ട്. Also, it is not two word agglutination, പതിനാറായിരത്തൊരുനൂറ്റെട്ട് – 16108 is an example where പതിനാറ്(16), ആയിരം(1000), നൂറ്(100), എട്ട്(8) – all joined to form a single word. In fact this is a common word you often see in literature because of this myth about Lord Krishna. The current year, 2017 is often written as രണ്ടായിരത്തിപ്പതിനേഴ്.

Let us examine a nature of these word formation.

Ones

Numbers between 0 and 9 has words as പൂജ്യം, ഒന്ന്, രണ്ട്, മൂന്ന്, നാല്, അഞ്ച്, ആറ്, ഏഴ്, എട്ട്, ഒമ്പത് respectively. The word ഒമ്പത് is sometimes written as ഒൻപത് too, which is phonetically similar to ഒമ്പത്. Each of these words ending with Virama(്) is sometimes written with Samvruthokaram too. ഒന്ന് – ഒന്നു്, രണ്ടു്, മൂന്നു്, നാലു് etc.

Tens

Number 10 is പത്ത്. Multiples of tens till 80 follows the rough pattern:

Adjective form of [രണ്ട്|മൂന്ന്|നാല്|അഞ്ച്|ആറ്|ഏഴ്|എട്ട്] + പത്.

So, they are ഇരുപത്(20), മുപ്പത്(30), നാല്പത്(40), അമ്പത്(50), അറുപത്(6), എഴുപത്(70), എൺപത്/എമ്പത്(80). But at 90, a new form emerges – തൊണ്ണൂറ് – Which has no root on ഒമ്പത് (9). Instead it is more like something before നൂറ്(100).

The numbers 11-19 are unique words. പതിനൊന്ന്, പന്ത്രണ്ട്, പതിമൂന്ന്, പതിനാല്, പതിനഞ്ച്, പതിനാറ്, പതിനേഴ്, പതിനെട്ട്, പത്തൊമ്പത് respectively.

All other two digit numbers between the multiples of tens follow the following pattern

[Word for 10x] + [Word for Ones]

So, 21 is ഇരുപത്(20)+ ഒന്ന്(1). But to form a single word, An adjective form is used, which is similar to female gender inflection of Malayalam nouns- ഇരുപത്തി + ഒന്ന് . Phonological rules should be applied to combine these two words. The vowel sign ി(i) at the end of ഇരുപത്തി  will introduce a new consonant യ(ya). Also the first letter of ഒന്ന് – the vowel ഒ will change to its vowel sign form ൊ. So we get ഇരുപത്തി + യ + ൊന്ന്. It results ഇരുപത്തിയൊന്ന്. This phonological rule is actually Agama Sandhi / ആഗമ സന്ധി as per Malayalam grammer rules. But, ഇരുപത്തിയൊന്ന് has a more propular form, ഇരുപത്തൊന്ന് which is generated by dropping ി + യ from the generation process.

The words for 20s can be generated similarly. ഇരുപത്തിരണ്ട്(22), ഇരുപത്തിമൂന്ന്(23), ഇരുപത്തിനാല്(24),  ഇരുപത്തിയഞ്ച്/ഇരുപത്തഞ്ച്(25), ഇരുപത്തിയാറ്/ഇരുപത്താറ്(26), ഇരുപത്തിയേഴ്/ഇരുപത്തേഴ്(27), ഇരുപത്തിയെട്ട്/ഇരുപത്തെട്ട്(28), ഇരുപത്തിയൊമ്പത്/ഇരുപത്തൊമ്പത്(29). For all other two digit numbers the pattern is same. Note that തൊണ്ണൂറ് (90) has the prefix form തൊണ്ണൂറ്റി. So 98 is തൊണ്ണൂറ്റിയെട്ട്/തൊണ്ണൂറ്റെട്ട്.

Hundreds

100 is നൂറ്. Its prefix form is നൂറ്റി. Multiples of 100s is somewhat similar to multiples of 10s we saw above. They are ഇരുന്നൂറ്(200), മുന്നൂറ്(300), നാനൂറ്(400), അഞ്ഞൂറ്(500), ആറുനൂറ്(600), എഴുന്നൂറ്(700), എണ്ണൂറ്(800), തൊള്ളായിരം(900). Here also the 900 deviates from others. The word is related to 1000(ആയിരം) than 100 – Just like the case of 90-തൊണ്ണൂറ് we discussed above.

Forming 3 digits numbers is, in general the prefix of multiple of hundred followed by Tens we explained above. So 623 is അറുനൂറ് + ഇരുപത്തിമൂന്ന്  = അറുനൂറ്റിയിരുപത്തിമൂന്ന് or the more popular and short form അറുനൂറ്റിരുപത്തിമൂന്ന്. 817 is എണ്ണൂറ്റി+ പതിനേഴ് = എണ്ണൂറ്റിപ്പതിനേഴ് with gemination of consonant പ as per phonological rule. 999 is തൊള്ളായിരത്തിത്തൊണ്ണൂറ്റിയൊമ്പത് or തൊള്ളായിരത്തിത്തൊണ്ണൂറ്റൊമ്പത്  or തൊള്ളായിരത്തിത്തൊണ്ണൂറ്റിയൊൻപത്.

Numbers between 100-199 may optionally prefixed by ഒരു – Adjective form of ഒന്ന്(1).  101 – ഒരുന്നൂറ്റിയൊന്ന് 122-ഒരുന്നൂറ്റിയിരുപത്തിരണ്ട് etc. നൂറ്(100) can be also ഒരുന്നൂറ്

Thousands

1000 is ആയിരം. ആയിരത്തി is prefix for all other 4 digit numbers till 1 lakh(ലക്ഷം 100000). Multiples of 1000 can be generated by suffixing ആയിരം. For example, 4000  is നാല് + ആയിരം = നാലായിരം. 6000 – ആറായിരം. But 5000 is അയ്യായിരം, and അഞ്ചായിരം is less popular version. 8000 is എട്ട് + ആയിരം = എട്ടായിരം, but എണ്ണായിരം is popular form.  10000 is പത്ത് + ആയിരം = പത്തായിരം. But പതിനായിരം is the more familiar version. പതിനായിരം is the suffix for multiples of 10K. They are ഇരുപതിനായിരം, മുപ്പതിനായിരം, നാല്പതിനായിരം, അമ്പതിനായിരം, അറുപതിനായിരം, എഴുപതിനായിരം, എൺപതിനായിരം, തൊണ്ണൂറായിരം. 3000 is മുവ്വായിരം than മൂന്നായിരം. So 73000 is എഴുപത്തിമുവ്വായിരം or എഴുപത്തിമൂന്നായിരം.

Numbers between 1000-1999 may optionally prefixed by ഒരു – Adjective form of ഒന്ന്(1).  1008 – ഒരായിരത്തിയെട്ട് 1122-ഒരായിരത്തിയൊരുന്നൂറ്റിയിരുപത്തിരണ്ട് etc. ആയിരം(1000) can be also ഒരായിരം.

Lakhs & Crores

100, 000 is ലക്ഷം. ലക്ഷത്തി is prefix. 1,00, 00, 000 is കോടി. കോടി itself is prefix. 12,00,90 is  പന്ത്രണ്ടുലക്ഷത്തിത്തൊണ്ണൂറ്. 99,00,00,00,00,00,00 is തൊണ്ണൂറ്റൊമ്പതുലക്ഷംകോടി.

Why morphology analyser?

From the above explanation of word formation for numbers in Malayalam, one can see that there are patterns and there are lot of exceptions. But still, isn’t it possible to write a generator using just a rule based program in a programming language. I  would agree. Yes, it is possible. But other than mapping these numbers to word forms, handling exceptional rules, there are a few other things also we saw. When words are agglutinated, there are phonological rules in action. Also, I said that these words can be inflected again. We also want the bidirectional conversion – not just word generation, but converting those words back into a number. All these will make such a program so complicated and it has to duplicate so many things from morphology analyser. That is why I used morphology analyser here.

What are the morphemes in a string like ആയിരത്തിത്തൊള്ളായിരത്തിത്തൊണ്ണൂറ്റിയാറ്? ആയിരം, തൊള്ളായിരം, തൊണ്ണൂറ്, ആറ്? Sounds good, but we see that  തൊള്ളായിരം is ഒമ്പത്, നൂറ്. and തൊണ്ണൂറ് is ഒമ്പത്, പത്ത്. So expanding it, we get ആയിരം, ഒമ്പത്, നൂറു, ഒമ്പത്, പത്ത്, ആറ്. But this sequence does not make any sense of the single word it created. What is missing? Can we consider തൊള്ളായിരം, തൊണ്ണൂറ് as single morphemes? We can, but…

  • If  തൊള്ളായിരം is a morpheme, it means, it is in a lexicon. That makes all other 3 digit number also eligible to be listed as items in lexicon. So ultimately, we go back to the large lexicon/dictionary issue I mentioned in the beginning of the article.
  • Semantically, any number spellout is originated from Ones and their place value. So തൊണ്ണൂറ് is 9<tens>.

I have not seen any morphology analyser dealing with number spellout. It seems Malayalam numbers are so unique in this aspect. I read a few academic papers on dealing with this complexity using Rule based approaches(See References) and an automata like paradigm language(Richard Gillam – A Rule-Based Approach to Number Spellout).

The approach I derived after trying out some choices is as follows:

  • Introduce morphology tags for positional values. This is similar to POS tags, but here we apply for number spellouts. <ones>, <tens>, <hundreds>, <thousands>, <lakhs>, <crores> are those tags.
  • Parse a spellout to reach the atomic morphemes in a number spellout – they are ഒന്ന്, രണ്ട്, മൂന്ന്, നാല്, അഞ്ച്, ആറ്, ഏഴ്,എട്ട്, ഒമ്പത്, പൂജ്യം.
  • These morphemes will have the tags mentioned above.

To illustrate this, let use use some examples,

As you can observe, only the atomic numbers are used as morphemes and place values are indicated using tags. You can also see that the analysis is easy to interpret for a program to generate the number.

For example, if the analysis is രണ്ട്<ones><thousands> ഒന്ന്<tens> ഏഴ്<ones>,  replace the words with its numbers, tags by position value. You get

2*1*1000 + 1*10 + 7*1  =  2000+10+7 = 2017

I said that, the advantage of morphology analyser is you can generate the word from analysis strings. The bidirectional property. This means, if you have a number, you can generate the spellout. For that we first need to some maths on the number. For example, for same number 2017, we can divide incrementally by lakhs, thousands, hundreds, tens and arrive at the following formation

2017 = 2*1000 + 0*100 + 1*10+ 7*1

Which can be converted to:

രണ്ട്<thousands>ഒന്ന്<tens>ഏഴ്<ones>

The morphology analyser can easily generate the word രണ്ടായിരത്തിപ്പതിനേഴ് by applying all grammatical rules.

 

If you are eager to try out this conversion, I wrote a quick javascript based number to word convertor using the APIs of morphology analyser.

See the Pen Malayalam number parser by Santhosh Thottingal (@santhoshtr) on CodePen.

I did not write a convertor from the spelled out word to number. You are free to write one. The web interface of mlmorph is available for trying out some analysis too – https://morph.smc.org.in/

Inflections

Some illustrations on inflected spellout analysis

Ordinals

Ordinal form of numbers are used to show position. Examples are first, third etc. In Malayalam examples are ഒന്നാം, പതിനെട്ടാം ഏഴാമത്, ഒമ്പതാമത്തെ etc.  Supporting those forms is just like inflections. See the below screenshot

Technical details

Known issues

  • Some commonly used forms like മുപ്പത്തിമുക്കോടി is not supported yet.There are also variations like മുവ്വായിരം, മൂവായിരം.
  • If there are are multiple ways to generate a number word, the system generates all such forms. But some of these forms may be very obscure and not used at all.
  • There is a practice to insert space after some prefixes like ആയിരത്തി, ലക്ഷത്തി, കോടി. In the model I assumed the words are generated as single word.

Summary

We analysed the word formation for the spellout of the numbers in Malayalam. Usage of morphology analyser for analysis and generation of these word forms are introduced. A demo program that converts numbers to its word forms considering all morphophonological rules are presented. Algorithm for spelled out word to number conversion is given with example. Programmable API and Web API is given for the system.

References

Anniversary of Manjari font release

Today, July 23 marks one year anniversary of Manjari font release.

Out of all my projects, this is the project that gave me highest satisfaction. I see people using it in social media every day for memes, banners, notices. I have seen the font used for Government publishings, notices, reports. I have seen wedding invitations, book covers, Movie titles with Manjari font. I am so happy that Malayalam speakers loved it.

Kavya and me are working on new version of Manjari with more glyphs to support latest Unicode, and optimize some of the ligature rules. The latest version of the font is always available at https://smc.org.in/fonts

ദൃൿസാക്ഷി

സിനിമയെപ്പറ്റിയല്ല, ദൃൿസാക്ഷിയെപ്പറ്റിയാണ്. ദൃൿസാക്ഷി എന്ന വാക്കെങ്ങനെ എഴുതും? അല്ലെങ്കിൽ എങ്ങനെയൊക്കെ എഴുതാം?

ക്+സ എന്നു ചേരുന്നിടത്താണു പ്രശ്നം, രണ്ടുവാക്കുകൾ ഇവിടെ കൂടിച്ചേരുന്നുണ്ടു്, പക്ഷേ കൂടിച്ചേരുന്നിടത്തു് അക്ഷരങ്ങൾ കൂടി കൂട്ടക്ഷരങ്ങളുണ്ടാക്കാൻ പാടില്ലാത്ത ഒരു സവിശേഷതയാണിവിടെയുള്ളതു്.  കയുടെ അടിയിൽ സ എന്ന രൂപം- ഗ്ലിഫ് ഇല്ലാത്ത ഒരു ഫോണ്ടിനെ സംബന്ധിച്ചു് അതു് താഴെക്കൊടുത്തിരിക്കുന്ന സിനിമാ പോസ്റ്ററിലേതുപോലെ നിരത്തിയെഴുതിയാൽ മതി.

പക്ഷേ അങ്ങനെ നിരത്തിയെഴുതിയാൽ മതിയെങ്കിൽ ദൃൿസാക്ഷി എന്ന ഈ 1973 ലെ സിനിമാ പോസ്റ്ററിൽ കയുടെ ചില്ല് ൿ എങ്ങനെ വന്നു?

ക എന്ന വ്യഞ്ജനം പിന്നാലെ വരുന്ന സ-യോടു ചേരാതെ വേറിട്ടുച്ചരിക്കേണ്ട വാക്കാണിതു്. തമിഴ്‌നാട്, കായ്‌കറി, ജോസ്‌തോമസ് തുടങ്ങിയപോലെയൊക്കെ. ഇംഗ്ലീഷിൽ നിന്നു വന്ന ചില വാക്കുകളാണെങ്കിൽ ഹാർഡ്‌വെയർ(ഹാർഡ്വെയർ അല്ല), സോഫ്റ്റ്‌വെയർ, പേയിങ്‌കൌണ്ടർ(പേയിങ്കൌണ്ടർ അല്ല) ഒക്കെ ഉദാഹരണം.

സ്വരം ചേരാത്ത ശുദ്ധരൂപമായ വ്യഞ്ജനമാണു ചില്ലക്ഷരം. ക യുടെ ചില്ല് അത്ര പ്രചാരത്തിലില്ല. ഇലൿട്രോണിക്സ് എന്ന വാക്കിലോ സിവിൿ, സിഡാൿ എന്നിടത്തൊക്കെ ചിലപ്പോൾ കാണാം. 1973 ൽ പക്ഷേ സിനിമാ പോസ്റ്ററിൽ വരാൻ മാത്രം അതിനു പ്രചാരമുണ്ടായിരുന്നെന്നു മനസ്സിലാക്കാം.

ഏതുശരി ഏതുതെറ്റ് എന്ന ചർച്ചയിലേക്ക് പോകാതെ ഈ വാക്കെങ്ങനെയൊക്കെ എഴുതാമെന്നുമാത്രം നമുക്കിവിടെ നോക്കാം.:

  1. ക് + സ: ഇതു് ക യുടെ അടിയിൽ സ അടുക്കിയ ഗ്ലിഫുള്ള ഫോണ്ടുപയോഗിച്ചു് വായിച്ചാൽ ഇങ്ങനെയിരിക്കും: ( This is the most undesired rendering among these examples).ഇതുതന്നെ, അങ്ങനെയൊരു ഗ്ലിഫില്ലാത്ത ഫോണ്ടുപയോഗിച്ച് വായിച്ചാൽ:
  2. ക്+ Zero Width Non Joiner + സ: ക്സ എന്നു നിർബന്ധമായും പിരിഞ്ഞിരിക്കണം എങ്കിൽ യൂണിക്കോഡ് ഉപയോഗിക്കാൻ പറഞ്ഞിരിക്കുന്ന കണ്ട്രോൾ ക്യാരക്ടർ ആണ് Zero width non joiner. മിക്ക ഇൻപുട്ട് മെത്തേഡുകളിലും ഇതു ടൈപ്പു ചെയ്യാൻ സാധിക്കും. ഹാൻഡ് റൈറ്റിങ്ങ് ഇൻപുട്ട് മെത്തേഡിൽ ഇതിനു സാധിക്കില്ല.
  3. ൿ + സ: കയുടെ ചില്ലുപയോഗിച്ച്. കയുടെ ചില്ലിന്റെ യൂണിക്കോഡ് പോയിന്റ് 0D7F ആണ്. ചില്ലുപയോഗിച്ചാൽ പിന്നീട് കയുടെയും സയുടെയും കൂടിച്ചേരൽ നടക്കില്ല.
  4. ക്+ZWJ+സ: കയുടെ അറ്റോമിക് അല്ലാത്ത ചില്ല് – മറ്റു ചില്ലുകൾ പോലെ ഇത് സ്റ്റാൻഡേഡ് അല്ല. എങ്കിലും കുറേ ഫോണ്ടുകളിൽ(Example- in fonts maintained by SMC)

ഒരു വാക്കിങ്ങനെ പലരീതിയിൽ എഴുതുന്നതു് ഭാഷാ ശാസ്ത്രപരമായി ഇത്തിരി കുഴഞ്ഞുമറിഞ്ഞ പ്രശ്നമാണ്. അതിനെപ്പറ്റി തത്കാലം ഇവിടെ വിശദീകരിക്കുന്നില്ല.

യൂണിക്കോഡ് പത്താം പതിപ്പ്: മലയാളത്തിന് മൂന്നു പുതിയ കോഡ്പോയിന്റുകൾ കൂടി

യൂണിക്കോഡിന്റെ പത്താം പതിപ്പ് പുറത്തിറങ്ങി. മലയാളത്തിന്റെ കോഡ് ബ്ലോക്കിലേയ്ക്ക് പുതിയ മൂന്നു അക്ഷരങ്ങൾ കൂടി ഔദ്യോഗികമായി ചേർന്നിരിക്കുന്നു. അങ്ങനെ മലയാളത്തിന്റെ കോഡ് ബ്ലോക്കിൽ  117 അക്ഷരങ്ങൾ ആയി.

പുതിയ അക്ഷരങ്ങൾ ഇവയാണ്:

  1. D00 – Combining Anuswara Above
  2. 0D3B – Malayalam Sign Vertical Bar Virama
  3. 0D3C- Malayalam Sign Circular Viramaപ്രാചീനരേഖകളിൽ കണ്ടുവരുന്നവയാണ് ഈ ചിഹ്നങ്ങൾ. അത്തരം ഗ്രന്ഥങ്ങളുടെ ഡിജിറ്റൈസേഷനിലും, പ്രാചീനലിപിസംബന്ധമായ പഠനഗവേഷണങ്ങളിലുമൊക്കെ ഇവ ഉപയോഗിക്കപ്പെട്ടേക്കാം.

0D00 – Combining Anusvara Above

ആദ്യത്തേത് ‘മുകളിലുള്ള അനുസ്വാരമാണ്’.

മലയാളത്തിൽ നാമിന്നുപയോഗിക്കുന്ന അനുസ്വാരത്തിനു തുല്യമായ ഉപയോഗമാണ് പ്രാചീനമലയാളലിപിയിൽ ഈ ചിഹ്നത്തിനുള്ളത്. അതായത് നാമിന്നുപയോഗിക്കുന്ന അനുസ്വാരം മറ്റക്ഷരങ്ങളുടെ അതേ നിരപ്പിൽ തന്നെ കിടന്ന് അതിനിടതുവശത്തുള്ള അക്ഷരത്തോട് ‘മകാരം’ ചേർക്കുമ്പോളുള്ള ഉച്ചാരണം നൽകുന്നു. പുതിയതായി നിർവ്വചിച്ചിരിക്കുന്ന ‘മുകളിലുള്ള അനുസ്വാരം’ അതുനുചുവട്ടിലുള്ള അക്ഷരത്തോടു ‘മകാരം’ ചേരുമ്പോഴുള്ള ഉച്ചാരണം നൽകുന്നു.

പ്രാകൃതഭാഷയിലെ നാടകസംഭാഷണങ്ങൾ മലയാളലിപിയിലെഴുതിയിരുന്നു. നാനൂറോളം വർഷം പഴക്കമുള്ള കയ്യെഴുത്തുപ്രതികൾ ഇതിനെ സാധൂകരിക്കുന്ന തെളിവുകൾ നൽകുന്നുണ്ട്. യൂണിക്കോഡിലേയ്ക്ക് ഇതു ചേർക്കാനുള്ള ശ്രീരമണശർമ്മയുടെ നിർദ്ദേശത്തിൽ ഇവ ലഭ്യമാണ്. പക്ഷേ തെളിവിനായുപയോഗിച്ചിരിക്കുന്ന കയ്യെഴുത്തുപ്രതികളിൽ തന്നെ അക്ഷരത്തോടൊപ്പം നിരന്നു കിടക്കുന്ന ‘അനുസ്വാരസമാനമായ ചിഹ്നങ്ങളും’ കാണാം. പക്ഷേ അവയ്ക്കു മറ്റൊരർത്ഥമാണ് പ്രാകൃതഭാഷ മലയാളലിപിയിൽ എഴുതുമ്പോഴുള്ളത്. ഈ സന്ദർഭത്തിൽ അതിന്റെ വലതുവശത്തുള്ള അക്ഷരത്തെ ഇരട്ടിപ്പിക്കുകയാണു ചെയ്യുക. നാം സ്ഥിരമായി ഉപയോഗിക്കുന്ന അനുസ്വാരത്തിന്റെ ഈ പ്രാചീന ഉപയോഗത്തെപ്പറ്റി യൂണിക്കോഡ് ചാർട്ടിൽ സൂചിപ്പിക്കുന്നുമുണ്ട്.

അതായത് പ്രാകൃതഭാഷ എഴുതാനായി മലയാളലിപി ഉപയോഗിക്കുമ്പോൾ ‘അനുസ്വാരം’ അതിന്റെ പിന്നാലെ വരുന്ന വ്യഞ്ജനത്തെ ഇരട്ടിപ്പിക്കുന്ന ഉച്ചാരണം നൽകുന്നു. ‘പത്തി’ എന്ന ഉച്ചാരണത്തിനായി ‘പംതി’ എന്നാവും എഴുതുക. എന്നുവെച്ചാൽ ‘പ + ം + തി’ എന്ന യൂണിക്കോഡ് സീക്വൻസിന് സാന്ദർഭികമായി രണ്ടു വ്യത്യസ്ഥ അർത്ഥവും ഉച്ചാരണവും വരുന്നുവെന്നാണ് സാരം. ഈ ഒരു സമീപനം യൂണിക്കോഡിന്റെ രീതിശാസ്ത്രത്തിനു നിരക്കുന്നതാണോയെന്ന സംശയം ബാക്കിവെയ്ക്കുന്നു. പിന്നാലെ വരുന്ന അക്ഷരത്തെ ഇരട്ടിപ്പിയ്ക്കുന്ന, കാഴ്ചയിൽ അനുസ്വാരം പോലെ തന്നെ തോന്നിപ്പിയ്ക്കുന്ന ഈ ചിഹ്നത്തെ പ്രത്യേകം എൻകോഡ് ചെയ്യേണ്ടതാണെന്നാണ് ഈ പ്രൊപ്പോസലിലെ തന്നെ തെളിവുകൾ വെച്ച് എനിക്കു തോന്നുന്നത്.

0D3B – Malayalam Sign Vertical Bar Virama

പുതിയ യൂണിക്കോഡ് പതിപ്പിൽ അടുത്തതായി എൻകോഡ് ചെയ്യപ്പെട്ടത് ‘കുത്തനെയുള്ള വിരാമചിഹ്നമാണ്’. 0D3B ആണിതിന്റെ കോഡ് പോയിന്റ്.

ഇത് സാധാരണയായി നാമുപയോഗിക്കുന്ന വിരാമചിഹ്നത്തിൽ നിന്നും വ്യത്യസ്ഥമാണ്. വിരാമചിഹ്നം അഥവാ ചന്ദ്രക്കല (0D4D) സംവൃതോകാരത്തെക്കുറിക്കാനും വ്യഞ്ജങ്ങളിലെ സ്വരസാന്നിദ്ധ്യമില്ലാത്തെ ശുദ്ധരൂപത്തെക്കുറിക്കാനുമാണുപയോഗിക്കുന്നത്. സംവൃതോകാരത്തെക്കുറിക്കുവാനായി ഇതുപയോഗിച്ചുതുടങ്ങിയത് 1847ൽ  ഡോക്ടർ ഹെർമൻ ഗുണ്ടർട്ടാണ്. 1900ത്തോടുകൂടിയാണ് സ്വരസാന്നിദ്ധ്യം ഒഴിവാക്കാനായുള്ള ചിഹ്നമായിക്കൂടി ഇതിനെ ഉപയോഗിച്ചു തുടങ്ങിയത്.

ഇതിനൊക്കെ വളരെ മുമ്പുതന്നെ (1700കൾ മുതൽ) സംസ്കൃതത്തിൽ നിന്നും യൂറോപ്യൻ ഭാഷയിൽ നിന്നുമുള്ള ലിപിമാറ്റ എഴുത്തുകളിൽ സ്വരസാന്നിദ്ധ്യമില്ലാത്ത വ്യഞ്ജനത്തെ സൂചിപ്പിക്കുവാൻ ഉപയോഗിച്ചിരുന്ന ചിഹ്നമാണ് ‘കുത്തനെയുള്ള വിരാമചിഹ്നം’. ഇതിനെയാണ് ഇപ്പോൾ 0D3B എന്ന കോഡ് പോയിന്റോടെ എൻകോഡ് ചെയ്തിരിക്കുന്നത്. ചന്ദ്രക്കലയുടെ ഉപയോഗം സാർവത്രികമായപ്പോൾ ‘കുത്തനെയുള്ള വിരമചിഹ്നത്തിന്റെ’ ഉപയോഗം തീർത്തും ഇല്ലാതായി എന്നു തന്നെ പറയാം. കൂടുതൽ വിശദാംശങ്ങൾ ഷിജു അലക്സ്, വി.എസ്. സുനിൽ, സിബു ജോണി എന്നിവർ ചേർന്നു തയ്യാറാക്കിയ എൻകോഡിങ്ങ് പ്രൊപ്പോസലിൽ കാണാം.

0D3C- Malayalam Sign Circular Virama

‘വട്ടത്തിലുള്ള വിരമചിഹ്നമാണ്’ 0D3C എന്ന കോഡ്പോയിന്റോടു കൂടി അടുത്തതായി എൻകോഡ് ചെയ്യപ്പെട്ടത്. ഇത് പ്രൊപ്പോസ് ചെയ്തിരിക്കുന്നതും ഷിജു അലക്സ്, വി.എസ്. സുനിൽ, സിബു ജോണി എന്നിവർ ചേർന്നു തന്നെയാണ്.

സ്വരസാന്നിദ്ധ്യമില്ലാത്ത വ്യഞ്ജനത്തെക്കുറിക്കുവാനായിക്കൂടി ചന്ദ്രക്കല ഉപയോഗിച്ചു തുടങ്ങുന്നത് 1900ങ്ങൾ മുതലാണെന്ന് ‘കുത്തനെയുള്ള വിരാമചിഹ്ന’ത്തിന്റെ പ്രൊപ്പോസലിൽ തന്നെ കണ്ടുവല്ലോ. അങ്ങനെയൊരു ഉപയോഗം ചന്ദ്രക്കലയ്ക്ക് ഉണ്ടാവുന്നതിനു മുമ്പുള്ള ( ഏകദേശം 1850-1900) കാലത്ത്  മലയാളത്തിൽ ‘വട്ടത്തിലുള്ള വിരാമചിഹ്നം’  ശുദ്ധവ്യഞ്ജനത്തെക്കുറിക്കാനായി ഉപയോഗിച്ചിരുന്നു.

കാഴ്ചയിൽ ‘മുകളിലുള്ള അനുസ്വാരം’ എന്ന ആദ്യം പറഞ്ഞ ചിഹ്നവുമായി ഇതിന് സാദൃശ്യം തോന്നാം. പക്ഷേ രണ്ടും തമ്മിൽ പ്രയോഗത്തിൽ വലിയ വ്യത്യാസമുണ്ട്. ‘മുകളിലുള്ള അനുസ്വാരം’ അതുചേരുന്ന വ്യഞ്ജനാക്ഷരത്തിന്റെ നേരെ മുകളിലായി കാണുമ്പോൾ  ‘വട്ടത്തിലുള്ള വിരമചിഹ്നം’ അതുചേരുന്ന വ്യഞ്ജനാക്ഷരത്തിന്റെ വലതുമുകളിലായിട്ടാവും ഉണ്ടാവുക.

പ്രായോഗിക ഉപയോഗം

യൂണിക്കോഡിൽ എൻകോഡ് ചെയ്യപ്പെട്ടതുകൊണ്ടു മാത്രം കാര്യമില്ല. പ്രാചീന ഗ്രന്ഥങ്ങളുടെ ഡിഗിറ്റൈസേഷൻ ആവശ്യങ്ങൾക്കായിട്ടൊക്കെ ഈ ചിഹ്നങ്ങൾ ഉപയോഗിക്കണമെങ്കിൽ ഫോണ്ടുകളിൽ അവ വരച്ചു കോഡ്പോയിന്റ് അതുമായി ചേർക്കണം. അപ്പോഴേ ഇതു ഉപയോക്താവിലേയ്ക്ക് എത്തുകയുള്ളൂ.

തേങ്ങയ്ക്കും കോഡ്പോയിന്റ്

മലയാളഭാഷയുമായി ബന്ധമില്ലെങ്കിലും മലയാളികളുടെ സ്വന്തം തേങ്ങ ഒരു ഭക്ഷ്യവിഭവമെന്ന നിലയിൽ ഒരു ഇമോജിയായി കോഡ്പോയിന്റ് സ്വന്തമാക്കിയിരിക്കുന്നു. U+1F965 ആണ് തേങ്ങ ഇമോജിയുടെ കോഡ്പോയിന്റ്.

Coconut Emoji. Image from http://emojipedia.org

 

 

A formal grammar for Malayalam syllables

I wrote about formal grammar for Malayalam conjunct in last blog post. Continuing from there, let us discuss the syllable model.

A syllable is a unit of organization for a sequence of speech sounds. Each syllable can be considered as pronounciation units that constitutes a word pronounciation. For example, “മലയാളം” has മ, ല, യാ, ളം as 4 syllables. If you ask a native Malayalam speaker, “How many letters are in the word മലയാളം?” The answer would be 4 and it corresponds to syllable count. The ‘letter’ concept, known as ‘അക്ഷരം’ in Malayalam often refers to syllables.

Along with a verbal description of syllables in Malayalam we attempt to formalize a grammar using PEG – Parser Expression grammar. That grammar is then used for writing a parser to find the syllables in a given word. A web interface is also provided to try out the system.

Before starting with definition of syllable model, we need to define some terminology.

Definitions

  1. Vowel – Vowels of Malayalam -Any of the set: [അആഇഈഉഊഋഎഏഐഒഓഔഔഅം]
  2. VowelSign – Vowel signs. – Any of the set [ാിീുൃെേൊോൗൂൈ]
  3. Consonant – Consonants – Any of the set [കഖഗഘങചഛജഝഞടഠഡഢണതഥദധനപഫബഭമയരലവശഷസഹളഴറ]
  4. Virama – The sign ്.
  5. Visarga The sign ഃ
  6. Anuswara – The vowel sign of അം.ie ം. This share some properties of Chillu.
  7. Chillu – Pure consonants, without any vowels. Chillus are any of ൻ, ർ, ൽ, ൾ, ൺ, ൿ, ൔ, ൕ, ൖ. The last 4 chillus are rarely used or archaic. But we can consider them for our modeling. Due to historic encoding reasons, Chillus can also appear as base Consonant+Virama+ZWJ form. That means, ൻ = ന + ് + ZWJ. Chillus never appear in the begininning of word, but is not relevant for a syllable analyser.
  8. ZWNJ Zero Width Non Joiner.\u200C
  9. ZWJ Zero with Joiner \u200D
  10. Signs A term used to address various signs that modify a Consonant. Any of VowelSign, Virama, Anuswara, Visarga.
  11. Conjunct:Refer the formal definition of this we discussed in previous blog post. We defined it as A Consonant combined with another Conjunct or Consonant using Virama. Example: സ+ ് + ത => സ്ത , സ്ത + ് + ര = സ്ത്ര. ദ്ധ + ് ര = ദ്ധ്ര, ദ്ധ്ര + ് + യ = ദ്ധ്ര്യ. But we need an advanced version. That definition did not support DotReph (ൎ) which combines with a consonant or conjunct to form Conjunct. To support DotReph as well, we will redefine Conjunct as HalfConsonant Conjunct / Consonant
  12. DotReph The sign (ൎ). It combines with other consonants as in this example: ൎ + യ -> ൎയ in ഭാൎയ
  13. HalfConsonant: A Consonant followed by Virama Example: പ്, ര്, മ് etc. Or a DotReph

Syllable model

A syllable in Malayalam can be any of the following.

  1. An independent Vowel. Vowels are often found at the begininning of the word. Example: അമ്മ. But for the specific case of Syllables, we can relax this rule of being in the start of word and generally state that a vowel is syllable. Note that vowel appearing as vowel sign is not what we are considering here. Vowel signs has its own properties.
  2. A Chillu letter is a syllable.
  3. A Consonant without any Signs is a syllable. For example, in the word തറ, both ത and റ are Syllables.
  4. A Consonant or Conjunct with Signs is a syllable. Here the Signs can be repeated more than once, but not freely. This syllable has the following characteristics:
    1. Signs can be Virama only if it is the last items of a given word. For example. അത് has അ, ത് as syllables, but അത്ഭുതം has അ, ത്ഭു, തം as syllables.
    2. Signs can occur 2 times in folllowing cases:(a) First Sign is ു and Second is Virama This combination is also called Samvruthokaram. Example: തു് in അതു്. (b) First Sign is a VowelSign and Second is Anuswara. Examples: താം, തീം, തോം, തും etc.
  5. A ZWNJ marks a syllable boundary. A ZWNJ inserted between two blocks of text inserts a ligature as well as syllable boundary. For example: തമിഴ്‌നാട്, the ZWNJ inserted after ഴ് and before നാ prevents possible ഴ്ന Conjunct and hence also makes a point that the pronounciation should break at that point. It is a bit wierd to say a ZWNJ forms a syllable since it is just a seperator. But while analysing a series of letters from begininning to end, it is technically okey to consider ZWNJ as a syllable block.

Parser Expression Grammar

You can try this in a PEG evaluator and try various conjucts to see if they all getting parsed. Use https://pegjs.org/online, copy paste the above grammar try inputs like ‘ശാസ്ത്രവിഷയങ്ങൾ’.

Characteristics of the Grammar

There are a few important characteristics of this grammar.

It does certain validations against the signs. For example, it does not allow a VowelSign, virama or anuswara after a visarga. If that happens, the parser will fail to parse a word. It permits a virama after a VowelSign, but that is only for Samvruthokaram(vowel sign = ു ).

Among the signs, you can see Virama, but it is permitted only at the end of the word. For example: അത്. If virama comes in between a word, it has the nature of consonant combining.

The order of Signs is also enforced. For example, you cannot have a virama and then VowelSign ു even though the reverse order is permitted.

Above rules creates some strictness for the parser. At the same time, there are some relaxed rules too. There is no maximum limit on a possible conjuct.  A nonsense conjunct like ‘ക്ച്ട്ത്പ്ബ്ഭ്മ്ജ്ത്ക്’ will be accepted by parser. Malayalam has valid conjuncts upto 5 as far as I know(Example: ഗ്ദ്ധ്ര്യ ). Usually the longer conjuncts will have the ending consonants as യ, ര, ല, വ.

In informal Malayalam, vowel sign duplication is sometimes used to denote elongation. For example, വാടാാാ. Our parser won’t accept that.

Syllable boundaries

If you want to know syllable boundaries and don’t care about anything else, there is an easy way to find boundaries.

A syllable boundary is after:

  1. A vowel. Note that this not vowel sign. Example: അ|റ, ഇ|ര, ഉ|പ്പ്
  2. A vowel sign, if not followed by virama, anuswara or visarga. Example: ത്തി|ൽ, പു|ക,
  3. A consonant if followed by another consonant or chillu. Example: ത|റ, ഷ്ട|മി, ക|ൽ
  4. A chillu. Example: സ|ർ|പ്പം
  5. An Anuswara. Example: കു|ടും|ബം,
  6. A Visarga. Example: ദുഃ|ഖം
  7. A ZWNJ is syllable boundary.

Web interface

I prepared a web interface if you just want to try out the syllable analyser and dont want to play with PEG.

https://phon.smc.org.in/syllables/

Malayalam syllable analyser

Now that comes with a JS API too, just include the following file in your web application:

https://phon.smc.org.in/syllables/lib/malayalam-syllables.js

Then use the following method to split a word to syllables.

malayalamSyllableParser.parse(inputWord)

I prepared a codepen project to demonstrate this.

See the Pen Malayalam syllable analyser by Santhosh Thottingal (@santhoshtr) on CodePen.

Source code

https://github.com/santhoshtr/malayalam-syllable-analyser

Please report any issues or ideas to improve this model there. Thanks!

A formal grammar for Malayalam conjunct

In Malayalam a conjunct(കൂട്ടക്ഷരം) is formed by combining 2 or more consonants by Virama(ചന്ദ്രക്കല).  “ക്ക” is a conjunct with 2 consonants, formed by ക + ് + ക. സ്ത്ര is a conjuct with 3 consonants സ+ ് + ത +്+ ര. ന്ത്ര്യ  is a conjunct with 4 consonants – ന + ് + ത + ് + ര + ് + യ. Conjuncts with more than 4 consonant is rare. ഗ്ദ്ധ്ര്യ is formed by 5 consonants.

Can we define this formation in a formal grammar?

Let us try. For the simplicity, I am using Parser Expression Grammar formalism since we can quickly write a parser for that to test and evaluate.

Before that let us define the conjuct in plain English in a bit more concise and unambigous way.

Conjunct: A Consonant combined with another Conjunct or Consonant using Virama

We need to define Consonant and Virama also.

  • Virama:   ്.
  • Consonants – Any of the set [കഖഗഘങചഛജഝഞടഠഡഢണതഥദധനപഫബഭമയരലവശഷസഹളഴറ]

Writing this in PEG syntax


You can try this in a PEG evaluator and try various conjucts to see if they all getting parsed. Use https://pegjs.org/online, copy paste the above grammar try inputs like ന്ത്ര്യ.

Let us look at the definition again.

Conjunct = Consonant Virama (Conjunct / Consonant )

This is a tail recursion. Meaning, The Conjuct  get expanded towards the end of the expression. Can we rewrite this using a Left recursion? We can. see:

Conjunct = (Conjunct / Consonant ) Virama Consonant

This will have the same result of our previous expression. We can also rewrite our plain English definition as well accordingly:

Conjunct: A Conjunct or Consonant  combined with another Consonant using Virama

There is a problem with this new definition since it is Left recursion, depending up on the parser implementation, it can cause infinite recursion. The PEGjs parser which we used above for testing and evaluation does not support Left recursion since it is a top down parser(recursive descent parser). You can try modify the above pegjs grammar in the online evaluation tool, you will see the parser warns about ininite recursion.

But if the parser is capable of avoiding this issue, nothing stops you to write the grammar using Left recursion. LALR parsers such as GNU Bison can very well support left recursion. But big issue here is GNU Flex/Bison used for writing such grammars does not support Unicode!. You can make it working by doing some low level byte manipulation. I did not try.

One more thing: I wrote ( Conjunct / Consonant ) instead of (Consonant / Conjunct ). The order was chosen intentionally since the matches are done left to right. Since a Conjunct anyway start with a Consonant, the parsing will proceed with that path. We avoid it by using the Conjunct, Consonant order.