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.

Proposal for Malayalam language subtags for orthography variants rejected

The Internet Engineering Task Force (IETF) – Languages is responsible for the registration of language tags, subtags and script variants. These registered language tags are used in a wide set of internet standards and applications to identify and annotate language uniquely.

script-reformation-gov-order-1971

Recently Sascha Brawer(currently working at Google) submitted a proposal to register two new language subtags for Malayalam to denote the orthography variations. Malayalam orthography had a diverging moment in history when Kerala government decided to script reformation in 1971. The decision was to accommodate the Malayalam orthography for the then existing typewriters and typesetting devices. These devices had limitations to accomodate the wide character set of Malayalam at that time.

So, the proposal was to introduce two subtags as follows:

  1. ml-puthiya:  Reformed Malayalam orthography-Malayalam that is  w ritten in the orthography of the 1971 reform. In Malayalam (transcribed to English), the term for this variant is “puthiya lipi”.
  2. ml-pazhaya:  Traditional Malayalam orthography- Malayalam that is written using the orthographic conventions that were in place before the 1971 reform. In Malayalam (transcribed to English), the term for this variant is “pazhaya lipi”.

Sascha Brawer correctly explained the missing part in this classification:

According to my contact, this reform was a continuum; the Kerala government order of 1971 did not immediately affect the common practice. Instead, the transition from traditional to reformed has happened over the period of 20-30 years. There is a lot of variation in the specifics for any year one could pick in the last century.

Again according to my contact, there is a common overall understanding among Malayalam speakers that the orthography of the language has moved from ‘traditional’ to ‘reformed.’ However, my contact did not know of an authoritative reference that would describe this transition in more detail.

I replied to the proposal as follows:

Mathrubhumi-title
Mathrubhumi daily uses a mixed orthography, except the ു sign, it mostly follows traditional writing style with many conjuncts and stacked ligatures
Manorama-Title
Malayala Manoarma daily follows a style more close to reformed orthography and avoids many ligatures.

[…] This is true, there is no defnition or authoritative reference about this
differences. And that is my concern. Given a set of printed samples from
say, todays news paper in Malayalam, one cannot say this is new'(puthiya) or this is ‘old'(pazhaya). The contemporary Malayalam usage is a mixed one. It borrows some reformation from 1971 order and some from the practices that existed before

The reason for mixed mode is because the main intention behind the 1971
reformation was to get Malayalam ‘usable’ with then type writers and composing machines. As technology progressed and when these limitations vanished, nothing stopped people from using the types similar to what they will write using pen on paper. The modern opentype technology completely removed this limitation and many modern and famous typefaces of Malayalam uses this ‘old’/ml-pazhaya style.

So defining two variants ml-puthiya, ml-pazhaya without a clear way to
distinguish one from another and having a wide range of ununamed variants exist, is concerning.[…]

Later,  Michael Everson, the registrar for IETF language tags said he is rejecting the proposals.

For a Malayalam subtag to be approvable, it really should refer to an orthographic standard. So far it appears that there isn’t anything very precise for either the traditional or the newer spelling to be specified, so it would be best to reject this now (rather than extending it little by little) until revised proposals with solid references can be put forward.

New handwriting style font for Malayalam: Chilanka

A new handwriting style font for Malayalam is in development. The font is named as “Chilanka”(ചിലങ്ക).

This is a alpha version release. Following is a sample rendering.

More samples here.

You may try the font using this edtiable page http://smc.org.in/downloads/fonts/chilanka/tests/ -It has the font embedded

Download the latest version: http://smc.org.in/downloads/fonts/chilanka/Chilanka.ttf

Chilanka/ചിലങ്ക is a musical anklet

A brief note on the workflow I used for font development is as follows

  1. Prepared a template svg in Inkscape that has all guidelines and grid setup.
  2. Draw the glyphs. This is the hardest part. For this font, I used bezier tool of inkscape. SVG with stroke alone is saved. Did not prepare outline in Inkscape, this helped me to rework on the drawing several times easily. To visualize how the stroke will look like in outlined version, I set stroke width as 130, with rounded end points. All SVGs are version tracked. SVGs are saved as inkscape svgs so that I can retain my guidelines and grids.
  3. In fontforge, import this svgs and create the outline using expand stroke, with stroke width 130, stroke height 130,  pen angle 45 degree, line cap and line join as round.
  4. Simplify the glyph automatically and manually to reduce the impact of conversion of Cubic bezier to quadratic bezier.
  5. Metrics tuning. Set both left and right bearings as 100 units(In general, there are glyph specfic tuning)
  6. The opentype tables are the complex part. But for this font, it did not take much time since I used SMC’s already existing well maintained feature tables. I could just focus on design part.
  7. Test using test scripts

Some more details:

  • Design: Santhosh Thottingal
  • Technology: Santhosh Thottingal and Kavya Manohar
  • Total number of glyphs: 676. Includes basic latin glyphs.
  • Project started on September 15, 2014
  • Number of svgs prepared: 271
  • Em size: 2048. Ascend: 1434. Descend: 614
  • 242 commits so far.
  • Latest version: 1.0.0-alpha.20141027
  • All drawings are in inkscape. No paper involved, no tracing.

Thanks for all my friends who are helping me testing and for their encouragement.
Stay tuned for first version announcement 🙂

(Cross posted from http://blog.smc.org.in/new-handwriting-style-font-for-malayalam-chilanka/ )

New version of Malayalam fonts released

Swathanthra Malayalam Computing project announced the release of new version of Malayalam unicode fonts this week. In this version, there are many improvements for popular Malayalam fonts Rachana and Meera. Dyuthi font has some bug fixes. I am listing the changes below.

  1. Meera font was small compared to other fonts. This was not really a problem in Gnome environment since fontconfig allows you to define a scaling factor to match other font size. But it was an issue in Libreoffice, KDE and mainly in Windows where this kind of scaling feature does not work. Thanks to P Suresh for a rework on glyphs and fixing this issue.
  2. Rachana, Meera and Dyuthi had wrong glyphs used as placeholder glyphs. Bugs like these are fixed.
  3. Virama 0D4D had a wrong LSB that cause the cursor positioning and glyph boundary go wrong. Fixed that bug
  4. Atomic Chilu code points introduced in Unicode 5.1 was missing in all the fonts that SMC maintained because of the controversial decision by Unicode and SMC’s stand against that. Issues still exist, but content with code point is present, to avoid any difficulties to users, added those characters to Meera and Rachana fonts.
  5. Rupee Symbols added to Meera and Rachana. Thanks to Hiran for designing Sans and Serif glyphs for Rupee.
  6. Dot Reph(0D4E) – The glyphs for this was already present in Meera but unmapped to any unicode point. GSUB Lookup tables added to the glyphs according to unicode specification.

For a more detailed change description see this mail thread. There are some minor changes as well.

Thanks to Hussain K H (designer of both Meera and Rachana) , P Suresh, Hiran for their valuable contribution. And thanks to SMC community and font users for using the fonts and reporting bugs. We hope that we can bring this new version in your favorite GNU/Linux distros soon. Wikimedia’s WebFonts extension uses Meera font and the font will be updated there soon. Next release of GNU Freefont is expected to update Malayalam glyphs using Meera and Rachana for freefont-sans and freefont-serif font respectively. We plan to update other fonts we maintain also with these changes in next versions. There are still some glyphs missing in these fonts with respect to the latest unicode version.