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.


  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.


Malayalam syllable analyser

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


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


I prepared a codepen project to demonstrate this.

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

Source code


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.

On Kerala IT Policy Draft 2017

The Kerala IT Policy Draft 2017(draft) was published in March 2017 for public feedback. It has many progressive elements in it and are crucial for the rapidly changing IT ecosystem in the context of  Government  IT Policy.

Continuing earlier Kerala gov. policy on Free and Open source software, this version also emphasis the usage and promotion of free and opensource software. The policy also mentions about the importance of Malayalam computing and local language content. These are all good, even though planning and implementation of specific items in these sections need wider discussions.

One important topic I wanted to comment in this post is about e-governance. There are detailed mentions about e-governance in the policy. There is a plan to have single government poral for participatory e-governance. About government service delivery, it says:

State is embarking on its journey to offer an “Omni-channel experience” of all its e-Governance services through web portal, mobile applications, Akshaya / CSCs and through Integrated Citizen call centres. The objective is to setup and operationalise an effective Single Window for services supported by the core infrastructure and systems.
It shall be ensured that all government applications are compliant to Deity guidelines and thereby interoperable.

In my experience with government services and their digital services, one important issue is lack of high level information system planning. I often see each department develop websites, service portal and mobile apps and release with lot of PR every time a government changes or even under same government. A state goverment has serveral departments and the amount of data it handles and kind of services it provides is huge. By nature, these departments share a lot of data mostly interdependent. Every digital service on top of this is not connected. A citizen need to register and login to multiple government websites. A central web portal is the quick solution that comes out in every IT polciy acknowledging the above issue. Even then we see lot of apps for government, lot of websites inauguarated now and then.

I think it is time to think about the information system of all these departments and see how we can architect them. Having scattered information systems is natural in the early developing stage of a government IT infrastructure. But at one stage, they should get a strucutre and start communicating each other avoiding the need to rebuild every year or 5 years.

Of course it is not trivial to have a clarity on such system. But I don’t see an effort in IT policy in this direction. I feel that each departments will continue running their IT systems independently and the connection between each department will be the responsibility of the citizen. For example, get the certificate with sign and seal from this department, go to the other department office, submit the application with the previous ceritificate, get the approval , go to other department, get the stuff done(And as people always say, have a nice chappel). Oh, have your copy of ID proof in every department and prove that it is you and nobody else paying your tax. This happens when each of these department is completely digital.

The wish for well connected IT infrastructure for goverments is nothing new. This wish always ends up in centralized citizen data repositories with unique citizen ids.  That is the traditional modeling of this problem. Now a days it is very clear that this kind of system attracts lot of interest from govenrment and non-goverment entities. Surveillance is becoming the primary goal of the systems, replacing the goal of better citizen service.

There are lot of things to learn from the deficiencies of existing e-governance system. This is not a time to go silient about this in IT policy. The vulnerability of this centralized IT systems with Aadhaar like primary key systems is widely discussed in media now a days. These systems are highly insecure with exclusion and mistrust of citizen. This will infiltrate to state IT systems soon, lack of political will will accelerate it.  There are lot of e-governance space in Kerala in developing stage. Can this be better modelled?

One of the biggest problems in e-governance is the security which demands the greatest protection to be government information from the third party attacker or opponents.  It is of no doubt that it can not be secured with another highly insecure authentication systems like Aadhaar as widely promoted. The need of a well modelled e-Authentication framework is required and that need to learn from mistakes.


Libreoffice Malayalam Hyphenation

I had developed and released hyphenation extension for Malayalam in Openoffice years back. Libreoffice was born later. Eventhough libreoffice supported the openoffice extensions, the extension repository is freshly created for libreoffice. The old extensions were not present in the libreoffice repository.

Now, I have uploaded the Malayalam hyphenation extension in libreoffice extension repository too. I will explain the installation and configuration step by step in this blog post:

All Operating systems

  • Download an extension and save it anywhere on your computer.
  • In LibreOffice, select Tools -> Extension Manager from the menu bar.
  • In the Extension Manager dialog click Add.
  • A file browser window opens. Navigate to the folder where you saved the LibreOffice extension file(s) on your system. The extension’s files have the file extension ‘OXT’.
  • Find and select the extension you want to install and click Open.
  • If this extension is already installed, you’ll be prompted to press OK to confirm whether to overwrite the current version by the new one, or press Cancel to stop the installation.
  • After you are asked whether to install the extension only for your user or for all users. If you choose the Only for me option, the extension will be installed only for your user. If you choose For all users, you need system administrator rights. In this case the extension will be available for all users. In general, choose Only for me, that doesn’t require administration rights on the operating system.

Debian and Ubuntu

The above steps works for Debian and Ubuntu too. But there is a better way. Using your package manager install hyphen-ml package. This will install hyphenation not only for libreoffice, but for typesetting packages like LaTeX.

Using the hyphenation

  • To automatically hyphenate the current or selected paragraphs, choose Format – Paragraph, and then click the Text Flow tab.

    LIbreoffice Hyphenation
  • To manually Hyphenate Single Words, click in the word where you want to add the hyphen, and then press Ctrl+Hyphen(-).
  • To manually Hyphenate Text in a Selection Select the text that you want to hyphenate. Choose Tools – Language – Hyphenation.

For detailed help, read libreoffice hyphenation documentation

A hyphenated paragraph

Known Issues

Malayalam and several other languages does not use visible hypen(-) at the end of line when a word is broken. Currently there is no way to control this in libreoffice.

I had developed hyphenation patterns for 10 other Indian languages too. Yet to upload them to libreoffice repository. But they are readily available in Debian and Ubuntu. You can install them by choosing hyphen-* package.


നമ്മളെല്ലാം നമ്മളല്ലാതാവുന്ന കാലം

എന്റെ പാൻകാർഡിലെ പേരല്ല പാസ്‌പോർട്ടിലുള്ളതു്. വോട്ടേഴ്സ് ഐഡിയിലെ വീട്ടുപേരല്ല പാൻകാർഡിൽ. വീട്ടുപേരാകട്ടെ ഓരോന്നിലും ഓരോന്നാണു്. ചിലതിൽ ഇനിഷ്യൽ മാത്രം. ചിലതിൽ ഇനിഷ്യൽ ചുരുക്കാതെ എഴുതിയതു്. ചിലതു് മലയാളത്തിൽ. ചിലതു് ഇംഗ്ലീഷിൽ. ചിലവയിൽ അക്ഷരത്തെറ്റ്. കുത്തുള്ള ഇനിഷ്യൽ. കുത്തില്ലാത്ത ഇനിഷ്യൽ. തോട്ടിങ്ങൽ, തോട്ടുങ്ങൽ, തോട്ടിങ്ങല്…

ആധാറിലെ എന്റെ പേരു് ഉത്തരമില്ലാത്ത ഒരു ചോദ്യമാണു്. “സന്തോഷ് ടീ ആര്”. ആരാണെന്നറിയാൻ കാർഡിലെ ഫോട്ടോ ഒട്ടും സഹായകരമല്ല.

വലിയ പ്രശ്നമൊന്നും ഇതുവരെ നേരിട്ടിട്ടില്ല. പക്ഷേ കുറച്ചു ദിവസം മുമ്പു് എന്റെ പ്രൊവിഡന്റ് ഫണ്ട് KYC ഡോക്യുമെന്റുകളിൽ പാൻ കാർഡ് ചേർക്കാൻ പറ്റിയില്ല. എന്റെ എംപ്ലോയറുടെ റെക്കോർഡിലുള്ള പേരും പാൻ കാർഡിലെ പേരും ഒന്നല്ലാത്തതുകൊണ്ടാണത്രെ. കാര്യം ശരിയാണു്, പാൻ കാർഡിലെ പേരിൽ ഇനിഷ്യലുകളാണ്, എംപ്ലോയറുടെ കയ്യിൽ ഇനിഷ്യൻ നീട്ടിയെഴുതിയതും. ഇതിപ്പൊ പേരെന്തിനാ അങ്ങനെ മാച്ച് ചെയ്യുന്നതു്, അതൊക്കെ ഒഴിവാക്കാനല്ലേ ഈ ഡോക്യുമെന്റുകൾക്ക് നമ്പറുകൾ?

നമ്മൾ നമ്മളാണെന്നു തെളിയിക്കാൻ പെടാപാടുപെടുന്ന വിചിത്രരാജ്യമാണു് ഇന്ത്യ. ഐഡിപ്രൂഫുകളില്ലാതെ ഒരു ഓഫീസിലും പോകേണ്ടകാര്യമില്ല. നമ്മൾ അങ്ങോട്ട് പണം കൊടുക്കാനാണെങ്കിലും പോലും ഐഡിയില്ലാതെ വാങ്ങില്ല. ഈ ഐഡി പ്രൂഫ് എന്ന പേപ്പർ മാത്രമേ ആവശ്യമുള്ളൂ, അതിലെ പേരോ, ഫോട്ടോയോ ആരും പരിശോധിച്ചുറപ്പിക്കുന്നതു ഞാൻ കണ്ടിട്ടില്ല. ബൈ ഡിഫോൾട്ട്, നമ്മൾ നമ്മളല്ല എന്നതാണ് പൊതുവിലുള്ള നയം. അല്ലെങ്കിൽ തെളിയിക്കണം.

ആധാർ “യുണീക്(!) ഐഡി” ഇതിനൊക്കെ പരിഹാരമല്ലേന്നു ചിന്തിക്കുന്നവരുണ്ടാകം. എങ്കിൽ തെറ്റി.  നമ്പറുകൾക്കപ്പുറം  സോഫ്റ്റ്‌വെയറുകൾ ഇന്ത്യൻ പേരുകൾ കമ്പെയർ ചെയ്യുന്ന ഒരു ദുരന്തനാടകത്തിനെല്ലാരും തയ്യാറാവുക.

ആധാറും പാൻകാർഡും ലിങ്ക് ചെയ്തില്ലെങ്കിൽ പാൻകാർഡ് കാൻസലാവും എന്നൊരു സന്തോഷവാർത്ത കേട്ടിരുന്നല്ലോ.  ഈ ലിങ്ക് ചെയ്യൽ അത്ര എളുപ്പമാവില്ല പോലും.

The income tax department has recently started accepting initials that can be put on the PAN card. However, you will be required to put your full name while applying for a verification of data. For instance, if your official name is M Ramamurthy where the full name is Madurai Ramamurthy where Ramamurthy is the first name, I-T will allow initials only for the first name. Hence, you can either print your name on the PAN card as either Ramamurthy or R Madurai.

Once you try to link PAN to your Aadhaar card which accepts initials, there is bound to be a name mismatch. This will lead to a rejection of request for linking Aadhaar card. In several parts of the country, especially the south of India, the names of villages are often suffixed or prefixed to the name of an individual. Here, any name except the first name of the person is considered as surname and will have to be mentioned in full on the PAN card.

ഈ പേരുകൾ ഒത്തുനോക്കൽ സോഫ്റ്റ്‌വെയർ ഏറ്റെടുക്കുകയാണു്. വെറും string comparison ആണെങ്കിൽ മിക്കവരുടെയും പേരുകൾ തള്ളും. തള്ളിപ്പോയവർ പേരുകൾ മാറ്റാൻ, ശരിയാക്കാൻ മെനക്കെടേണ്ടിവരും.  ഇനിയിപ്പൊ ഇന്ത്യൻ പേരുകൾ മാച്ച് ചെയ്തു നോക്കാൻ ഒരു അൽഗോരിതം തയ്യാറാക്കാൻ ശ്രമിച്ചെന്നിരിക്കട്ടെ. എന്തൊക്കെയായിരിക്കണം അതിൽ ശ്രദ്ധിക്കേണ്ടതു്? ഇംഗ്ലീഷിലെഴുതിയ പേരാണെന്നെരിക്കട്ടെ. ഇന്ത്യൻ ഭാഷകളെക്കൂടിപരിഗണിച്ചാൽ ഇതു് വളരെ സങ്കീർണ്ണമാകും.

  • അപ്പർ കേസ്, ലോവർ കേസ് മാറ്റങ്ങൾ കണക്കിലെടുക്കരുതു്. Anand Chandran, ANAND Chandran, Anand CHANDRAN, anand chandran, ANAND CHANDRAN ഒക്കെ ഒന്നാണല്ലോ.
  • കുത്ത് കോമ ഒക്കെ വിടണം. Rama C, Rama C.
  • സ്പേസ് വെറുതെ വിടണം. Rama Chandran, Ramachandran ഇവ ഒന്നല്ലേ
  • സ്പെല്ലിങ്ങ് വ്യത്യാസങ്ങൾ. Pradeep, Pradip, Pradeeb, Pradeeb, Prathib, Pratheeb, Prathib, Prathib ഇതൊക്കെ വേറേ വേറെ ആളുകളാവാം, ഒരാളാവാം
  • First name, Last name, Middle name പേരുകൾ നമുക്ക് വളരെ ആശയക്കുഴപ്പമുള്ളവയാണു്. പ്രേതേകിച്ചും ദക്ഷിണേന്ത്യൻ പേരുകളിൽ. M Sudhakaran, Sudhakaran M, Sudhakaran Manoharan ഒക്കെ ഒരാളാവാമല്ലോ.
  • വേറുതേ ഒരു സ്പേസ് അധികമായതുകൊണ്ട് പേരു മാച്ച് ആവാതെ ആളുകളെ ഓഫീസുകൾ കേറിയിറക്കാനും ഈ അൽഗോരിതങ്ങളെക്കൊണ്ടു സാധിക്കും എന്നും ഓർക്കാം.

ഇംഗ്ലീഷിൽ ഇത്തരം അൽഗോരിതങ്ങളൊക്കെ ഉണ്ടു്. Soundex, MetaphoneNew York State Identification and Intelligence System ഒക്കെ ഉദാഹരണങ്ങൾ. നമ്മുടെ പേരുകളുടെ പ്രത്യേകതകൾ കൂടി പരിഗണിച്ചു് അതുപോലൊരു അൽഗോരിതം നമുക്കും വേണ്ടേ?

ഇംഗ്ലീഷിൽ മാത്രം പോരാ, ഇന്ത്യൻ ഭാഷകളിലും വേണ്ടേ? നേരത്തെപ്പറഞ്ഞ Soundex അൽഗോരിതത്തിനെപ്പോലെയൊന്നു് ഇന്ത്യൻ ഭാഷകൾക്കു വേണ്ടി ഇൻഡിക് സൌണ്ടെക്സ് എന്ന പേരിൽ തയ്യാറാക്കിയിരുന്നു. വിവിധ ഇന്ത്യൻ ഭാഷകളിലെഴുതിയാലും പരസ്പരം ഒത്തുനോക്കാൻ അതിനു കഴിയും. ഉദാഹരണത്തിനു് സന്തോഷ്, सन्तोष എന്നിവ ഒരേ പേരാണെന്നു പറയുന്ന വിധത്തിൽ.

ഇമോജികളും ചില്ലക്ഷരങ്ങളും തമ്മിലെന്തു്?

ഈയിടെ XKCD യിൽ വന്ന ഒരു തമാശയാണു് മുകളിൽ കൊടുത്തിരിക്കുന്നതു്. ഇമോജികളെ പരിചയമുള്ളവർക്കു കാര്യം പിടികിട്ടിക്കാണും. എന്തെങ്കിലും ആശയം പ്രകടിപ്പിക്കാനുള്ള ചെറുചിത്രങ്ങളെയും സ്മൈലികളെയുമാണു് ഇമോജികൾ എന്നുവിളിക്കുന്നതു്. ചാറ്റു ചെയ്യുമ്പോഴൊക്കെ നമ്മൾ ഉപയോഗിക്കുന്ന ചിരിക്കുന്നതും സങ്കടഭാവത്തിലുള്ളതും നാക്കുനീട്ടുന്നതുമായ ചെറുചിത്രങ്ങളുടെ നിര ഇന്നു് വളർന്നു് ആയിരക്കണക്കിനായിട്ടുണ്ട്. ചിത്രങ്ങൾക്കു പകരം അവയെ അക്ഷരങ്ങളെന്നപോലെ കണക്കാക്കാൻ യുണിക്കോഡ് ഇപ്പോൾ ഇവയെ എൻകോഡ് ചെയ്യുന്നുണ്ടു്. ഉദാഹരണത്തിനു് 😀 എന്ന സ്മൈലിക്ക് U+1F60x എന്ന കോഡ്പോയിന്റാണുള്ളതു്. അടുപോലെ 👨 പുരുഷൻ, 👩 സ്ത്രീ എന്നിവയൊക്കെ പ്രത്യേക കോഡ് പോയിന്റുകളുള്ള ഇമോജികളാണു്.

ഇമോജികൾ അക്ഷരങ്ങളെപ്പോലെയായാൽ അവ ചേർന്നു് കൂട്ടക്ഷരങ്ങളുണ്ടാവുമോ? 😀

ഇമോജികളെ കൂട്ടിയിണക്കി പുതിയ അർത്ഥമുള്ള ഇമോജികൾ ഉണ്ടാക്കാനുള്ള സംവിധാനം യുണിക്കോഡ് ഒരുക്കിയിട്ടുണ്ടു്. 👪 എന്ന ഇമോജി കുടുംബത്തെ സൂചിപ്പിക്കുന്നു. അച്ഛൻ, അമ്മ, മക്കൾ എന്നിവരടങ്ങിയ കുടുംബം. ഇതുപക്ഷേ അച്ഛൻ അമ്മ, മകൻ, മകൾ എന്നിവ കൂട്ടിച്ചേർത്തും ഉണ്ടാക്കാം. 👨‍👩‍👧‍👦  എന്ന ഇമോജി അങ്ങനെ 👨‍ + 👩‍ + 👧‍ + 👦 എന്നീ ഇമോജികൾ കൂട്ടിയുണ്ടാക്കിയതാണു്. വെറുതെ അടുപ്പിച്ചെഴുതിയതല്ല, നമ്മൾ ക്ക  എന്നു് എഴുതാൻ ക കഴിഞ്ഞ ചന്ദ്രക്കലയിട്ട് അടുത്ത കയുമായി യോജിപ്പിക്കില്ലേ, അങ്ങനെ യോജിപ്പിക്കണം. അതായതു് U+1F468 U+200D U+1F469 U+200D U+1F466 എന്ന ശ്രേണി ഉപയോഗിക്കണം. ഇവിടെ കൂട്ടിയോജിപ്പിക്കാൻ ഉപയോഗിച്ചിരിക്കുന്നതു് U+200D എന്ന അക്ഷരമാണു്.

എന്താണു് U+200D? Zero Width Joiner എന്ന ഒരു അദൃശ്യ അക്ഷരമാണതു്. അതിനു രൂപമില്ല, സ്വഭാവമേ ഉള്ളൂ. അതിനിരുവശവമുള്ള അക്ഷരങ്ങളെ കൂട്ടിയോജിപ്പിക്കുക എന്ന സ്വഭാവം. ഒരു ഫോണ്ടിനു് ഇങ്ങനെയുള്ള ഒരു ശ്രേണിവന്നാൽ പകരം ഒരു ഒറ്റ ഇമോജിയുടെ ചിത്രം വെയ്ക്കണം എന്നറിയാം. നമ്മുടെ ക + ് + ക എന്ന അക്ഷരശ്രേണിവന്നാൽ അതു് ക്ക എന്നാക്കണം മലയാളം ഫോണ്ടുകൾക്കറിയാമെന്നപോലെ.

ഇനിയിപ്പോൾ ഒരു ഇമോജി ഫോണ്ടിനകത്തു് അങ്ങനെ കൂട്ടിയോജിപ്പിക്കണമെന്ന നിയമമില്ലെങ്കിലോ, വെറുതെ വിട്ടാലും മതി, ‘കുടുംബം’ ഇമോജി ഒറ്റ ചിത്രമല്ലാതെ നാലുപേർ നിരന്നു നിൽക്കുന്ന ചിത്രമാവും. എങ്ങനെ? നമ്മുടെ പ്ന എന്ന കൂട്ടക്ഷരം പ്‌ന എന്ന രീതിയിൽ പിരിഞ്ഞുവന്നാലും നമുക്ക് പ്ന തന്നെയാണല്ലോ, അതുപോലെ.

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

നേരത്തെപറഞ്ഞ ZWJ യെ എവിടെയോ കണ്ട പരിചയമുണ്ടോ? 😀

മലയാളത്തിലെ ചില്ലക്ഷരങ്ങൾ എങ്ങനെയാണെഴുതുന്നതു്? ൻ എന്ന ചില്ലക്ഷരത്തിനു് U+0D7B എന്ന കോഡ്പോയിന്റ് ഉണ്ടു്. ഒറ്റയ്ക്കൊരു കോഡ് പോയിന്റുള്ളതുകൊണ്ടു് ചില്ലക്ഷരം ൻ അറ്റോമിക് ആയി എൻകോഡ് ചെയ്യപ്പെട്ടിരിക്കുന്നു എന്നും പറയാം. പക്ഷേ ഇങ്ങനെയുള്ള ഒരൊറ്റ കോഡ് പോയിന്റ് ചില്ലക്ഷരങ്ങൾക്കില്ലായിരുന്നു. സ്വരം ചേരാത്തു വ്യഞ്ജനം എന്ന അർത്ഥമാണല്ലോ ചില്ലക്ഷരങ്ങൾക്കുള്ളതു്. ൻ എന്നാൽ ന് എന്ന് സ്വരമൊന്നും ചേരാതെ ഉച്ചരിക്കുന്നു. അവൻ എന്ന വാക്ക് ഉദാഹരണം. ൻ എന്നെഴുതാൻ യൂനിക്കോഡ് 5.1 പതിപ്പിനുമുമ്പു വരെ ന + ്  + ZWJ എന്ന ശ്രേണിയാണു് ഉപയോഗിച്ചിരുന്നതു്. പിന്നീടു് അറ്റോമിക് കോഡ് പോയിന്റ് വന്നപ്പോൾ അതുപയോഗിച്ചും എഴുതിത്തുടങ്ങി. ZWJ യ്ക്കിവിടെ നേരത്തെ പറഞ്ഞ അദൃശ്യരൂപം തന്നെയാണ്. ന് എന്നതിനെ മോഡിഫൈ ചെയ്യുന്ന സ്വഭാവമാണു് ഈ സന്ദർഭത്തിലുള്ളതു്. ന് എന്നതിന്റെ ദൃശ്യരൂപം മാറ്റുക എന്ന സ്വഭാവം. അർത്ഥത്തിൽ മാറ്റം വരുത്തുന്നില്ല, ദൃശ്യത്തിൽ മാത്രം. നൻമ, നന്മ എന്നീ വാക്കുകളിൽ മയുടെ മുമ്പിലത്തെ ൻന്റെ ഉച്ചാരണം ഒന്നു തന്നെയാണല്ലോ. ഈ രണ്ടുവാക്കുകളും ഒന്നുതന്നെയാണെന്നും ZWJ എന്ന അദൃശ്യാക്ഷരംകൊണ്ടു് രൂപത്തിൽ മാത്രം വ്യത്യാസപ്പെട്ടിരിക്കുന്നുവെന്നും ഉദ്ദേശിക്കുന്നു.

ZWJ യുടെ നിർവചനമനുസരിച്ചു് ഡാറ്റാപ്രൊസസ്സിങ്ങിൽ വേണമെങ്കിൽ അവയെ അവഗണിയ്ക്കാം എന്നാണ് – ignorable character. ഇമോജികളുടെ കാര്യം പറയുമ്പോഴും ഇവ വേണമെങ്കിൽ ഒഴിവാക്കി കാണിക്കാം എന്നാണല്ലോ പറഞ്ഞതു്.

“When not available, the ZWJ characters are ignored and a fallback sequence of separate emoji is displayed. Thus an emoji zwj sequence should only be supported where the fallback sequence would also make sense to a viewer.”

ഇതുപോലെത്തന്നെയാണു് മലയാളത്തിലെ ZWJ യുടെ ഉപയോഗവും അർത്ഥവ്യത്യാസം ഉണ്ടാക്കാത്ത വാക്കുകളിൽ ദൃശ്യരൂപത്തിനു മാറ്റം വരുത്താൻ മാത്രം ZWJ ഉപയോഗിക്കാമെന്നായിരുന്നു പൊതുവിലുള്ള മനസ്സിലാക്കാൽ.

മലയാളത്തിലെ ചില്ലുകൾ – യുണിക്കോഡ് എൻകോഡ് ചെയ്തതു്

മലയാളത്തിൽ പക്ഷേ കാര്യങ്ങൾ അത്ര എളുപ്പമായിരുന്നില്ല. ഇങ്ങനെ ZWJ കൊണ്ട് ദൃശ്യരൂപത്തിനു മാറ്റം ഉണ്ടാക്കണമെന്ന നിർദ്ദേശം അനുസരിക്കാത്ത ബഗ്ഗുകളുള്ള അപ്ലിക്കേഷനുകളുണ്ടായിരുന്നു. ഉദാഹരണം ഫയർഫോക്സിന്റെ ആദ്യപതിപ്പുകൾ. “അവൻ കൊടുത്തു” എന്ന വാക്യം “അവന് കൊടുത്തു” എന്ന രീതിയിൽ തെറ്റിക്കാണിച്ചാൽ തെറ്റിപ്പോകില്ലേ? ഈ ചോദ്യം ചോദിച്ചാൽ അത്യാവശ്യം ഭാഷാവബോധമുള്ളവർ സംവൃതോകാരം ഉപയോഗിക്കാത്തതിന്റെ പ്രശ്നങ്ങൾ ചൂണ്ടിക്കാണിക്കും. “അവന് കൊടുത്തു” എന്നതു് “അവനു് കൊടുത്തു” എന്നു് മീത്തൽ മാത്രമല്ലാതെ സംവൃതോകാരം ഉ ചിഹ്നം കൂട്ടി എഴുതിയാൽ ഈ ആശയക്കുഴപ്പം വരില്ലയെന്നു്.

എന്തായാലും ചില്ലക്ഷരങ്ങളെ ഇങ്ങനെ ZWJ ചേർത്തെഴുതാതെ സ്വന്തമായി കോഡ് പോയിന്റ് കൊടുത്തു് അറ്റോമിക് ആയി നിർവചിക്കണമെന്ന വാദം യുണിക്കോഡ് അംഗീകരിക്കുകയാണുണ്ടായതു്. അതാണു് ഇന്നത്തെ ചില്ലുകളുടെ അംഗീകൃത/റെക്കമെന്റഡ് രീതി. എന്നാൽ ZWJ ചേർത്തെഴുതിയ ചില്ലുകൾ വ്യാപകമായി അപ്പോഴേക്കും മലയാളത്തിൽ വന്നിരുന്നതിനാൽ അപ്ലിക്കേഷനുകൾ അവയെ ചില്ലുകൾക്കു തുല്യമായി പരിഗണിക്കണമെന്ന നിർദേശവും ഉണ്ടു്.

കൌതുകകരമായ ഒരു കാര്യം, ഈ ചില്ലക്ഷരവിവാദമൊക്കെ നടക്കുമ്പോൾ ZWJ യ്ക്ക് ഇത്ര പ്രശസ്തിയൊന്നും ഉണ്ടായിരുന്നില്ല. മലയാളം, സിംഹള, അറബിക്ക് എന്നീ ഭാഷകളിലെ കുഴപ്പം പിടിച്ച, ആർക്കും മനസ്സിലാക്കാൻ പെട്ടെന്നു കഴിയാത്ത, അക്ഷരമാലയിലേക്കു് കടന്നുകയറിയ ഒരു അന്യാക്ഷരം ആയിരുന്നു അന്നതു്. അതുകൊണ്ടുതന്നെ അപ്പ്ലിക്കേഷനുകളൊന്നും ഇവ നേരാംവണ്ണം പ്രൊസസ്സ് ചെയ്യില്ല, നമുക്ക് ചില്ലുകൾക്ക് പ്രത്യേകം കോഡ് പോയിന്റ് വേണമെന്നൊക്കെ വാദമുണ്ടായിരുന്നു. പക്ഷേ വർഷങ്ങൾ കഴിഞ്ഞപ്പോൾ zwj യെ നമ്മൾ കൂടുതൽ കൂടുതലിടങ്ങളിൽ കാണുകയാണു്.

കൂടുതൽ വായനക്ക്:

മഹാഭാരതപ്രഭാഷണപരമ്പര – സുനിൽ പി ഇളയിടം

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

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

Detailed font reports using fontreport tool

Google i18n team developed a tool to create detailed report of fonts. The tool named fontreport, produces a multi page PDF with Unicode coverage of the font, what glyphs are in it, what Open Type features it supports, available ligatures, and glyph substitutions. Optionally the tool can also create plain text reports. The PDF is generated using TeX.

Manjari font report generated using fontreport tool

I found it very useful to create report for a dozen of fonts I maintain with Swathantha Malayalam Computing community. Sharing the reports it created:

Font reports(PDF):

  1. Rachana Regular
  2. Rachana Bold
  3. Meera
  4. Manjari Regular
  5. Manjari Bold
  6. Manjari Thin
  7. Dyuthi
  8. Chilanka
  9. Karumbi
  10. AnjaliOldLipi
  11. Keraleeyam
  12. Uroob

2016 ൽ വായിച്ച പുസ്തകങ്ങൾ

വായിച്ചു തീർത്തതിനെക്കാൾ തീർക്കാതെ വായന നിർത്തിയ പുസ്തകങ്ങളായിരിക്കും 2016ൽ കൂടുതലും. ഉള്ളടക്കത്തിലെ താത്പര്യം കൊണ്ട് വായിക്കാനെടുത്തു് വായന ദുഷ്കരമായപ്പോഴോ പ്രതീക്ഷയ്ക്കൊത്ത് ഉള്ളടക്കമില്ലാത്തപ്പോഴോ പല നോൺ ഫിക്ഷൻ പുസ്തകങ്ങളും മാറ്റിവെച്ചു. 20 പുസ്തങ്ങളെങ്കിലും വായിക്കണമെന്നു കരുതിയെങ്കിലും അത്രയും പൂർത്തിയാക്കാൻ കഴിഞ്ഞില്ല. അതേ സമയം പുസ്തങ്ങളുടെ ലോകത്തിനപ്പുറം ഇന്റർനെറ്റ്-സോഷ്യൽ മീഡിയാ വായനകൾക്ക് ഒട്ടും കുറവുണ്ടായില്ല. ഒന്നു രണ്ടു മിനിറ്റുകൊണ്ട് ഒറ്റനോട്ടത്തിൽ വായിച്ചെടുക്കാവുന്ന കുറിപ്പുകളാണ് ഇന്റർനെറ്റ് വായനക്കാർക്കിഷ്ടം എന്നു തോന്നുന്നു. നീണ്ട കുറിപ്പുകൾ ഉണ്ടെങ്കിൽ പ്രധാനഭാഗങ്ങൾ ബ്ലർബ് ആയി കൊടുത്ത് വേഗത്തിലുള്ള വായനയെ സഹായിച്ചില്ലെങ്കിൽ വായനക്കാർ വിട്ടുകളയും.

വായിച്ച പുസ്തകങ്ങൾ താഴെക്കൊടുക്കുന്നു. ഈബുക്കുകളാണ് കൂടുതലും വായിച്ചതു്.
1. Elon Musk: Inventing the Future by Ashlee Vance
2. ബുക്‌സ്റ്റാള്‍ജിയ by P.K. Rajasekharan
3. Mr. Penumbra’s 24-Hour Bookstore by Robin Sloan
4. When Breath Becomes Air by Paul Kalanithi
5. Sapiens: A Brief History of Humankind by Yuval Noah Harari
6. The Vegetarian by Han Kang
7. Gujarat Files by Rana Ayyub
8. Stories of Your Life and Others by Ted Chiang
9. The Sceptical Patriot: Exploring the Truths Behind the Zero and Other Indian Glories by Sidin Vadukut
10. The Drunkard’s Walk: How Randomness Rules Our Lives by Leonard Mlodinow
11. കണ്ണ് സൂത്രം by Vinod Krishna
12. Homo Deus: A Brief History of Tomorrow by Yuval Noah Harari
13. What If?: Serious Scientific Answers to Absurd Hypothetical Questions by Randall Munroe
14. Feynman’s Rainbow: A Search for Beauty in Physics and in Life by Leonard Mlodinow
15. Bad Science by Ben Goldacre (some more pages remaining)
16. The Intelligence Paradox: Why the Intelligent Choice Isn’t Always the Smart One by Satoshi Kanazawa
17. Shady Characters: The Secret Life of Punctuation, Symbols & Other Typographical Marks by Keith Houston
18. Arms and the Man by George Bernard Shaw