Planet SMC

December 10, 2017

Santhosh Thottingal

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

by Santhosh Thottingal at December 10, 2017 02:46 PM

November 26, 2017

Santhosh Thottingal

Towards a Malayalam morphology analyser

Malayalam is a highly inflectional and agglutinative language. This has posed a challenge for all kind of language processing. Algorithmic interpretation of Malayalam’s words and their formation rules continues to be an untackled problem.  My own attempts to study and try out some of these characteristics was big failure in the past. Back in 2007, when I tried to develop a spellchecker for Malayalam, the infinite number of words this language can have by combining multiple words together and those words inflected was a big challenge. The dictionary based spellechecker was a failed attempt. I had documented these issues.

I was busy with my type design  projects for last few years, but continued to search for the solution of this problem. Last year(2016), during Google summer of code mentor summit at Google campus, California, mentors working on language technology had a meeting and I explained this challenge. It was suggested that I need to look at Finnish, Turkish, German and such similarly inflected and agglutinated languages and their attempts to solve this. So, after the meeting, I started studying some of the projects – Omorfi for Finnish, SMOR for German, TRMorph for Turkish. All of them use Finite state transducer technology.

There are multiple FST implementation for linguistic purposes – foma, XFST – The Xerox Finite State Toolkit, SFST – The Stuttgart Finite State Toolkit and HFST – The Helsinki Finite State Toolkit. I chose SFST because of good documentation(in English) and availability of reference system(TRMorph, SMOR).  And now we have mlmorph  – Malayalam morphology analyser project in development here:  https://github.com/santhoshtr/mlmorph

I will document the system in details later. Currently it is progressing well. I was able to solve arbitrary level agglutination with inflection. Nominal inflection and Verbal inflections are being solved one by one. I will try to provide a rough high level outline of the system as below.

  • Lexicon: This is a large collection of root words, collected and manually curated, classified into various part of speech categories. So the collection is seperated to nouns, verbs, conjunctions, interjections, loan words, adverbs, adjectives, question words, affirmatives, negations and so on. Nouns themselves are divided to pronouns, person names, place names, time names, language names and so on. Each of them get a unique tag and will appear when you analyse such words.
  • Morphotactics: Morphology rules about agglutination and inflection. This includes agglutination rules based on Samasam(സമാസം) – accusative, vocative, nominative, genitive, dative, instrumental, locative and sociative. Also plural inflections, demonstratives(ചുട്ടെഴുത്തുകൾ) and indeclinables(അവ്യയങ്ങൾ). For verbs, all possible tense forms, converbs, adverbal particles, concessives(അനുവാദകങ്ങൾ) and so on.
  • Phonological rules: This is done on top of the results from morphotactics. For example, from morphotactics, ആൽ<noun>, തറ<noun>, ഇൽ<locative> will give ആൽ<noun>തറ<noun>ഇൽ<locative>. But after the phonological treatment it becomes, ആൽത്തറയിൽ with consonant duplication after ൽ, and ഇ becomes യി.
  • Automata definition for the above: This is where you say nouns can be concatenated any number of times, following optional inflection etc in regular expression like language.
  • Programmable interface, web api, command line tools, web interface for demos.

What it can do now? Following screenshot is from its web demo. You can see complex words get analysed to its stems, inflections, tense etc.

Note that this is bidirectional. You can give a complex word, it will give analysis. Similarly when you give root words and POS tags, it will generate the complex word from it. For example:

ആടുക<v><past>കൊണ്ടിരിക്കുക<v><present> =>  ആടിക്കൊണ്ടിരിക്കുന്ന

Covering all possible word formation rules for Malayalam is an ambitious project, but let us see how much we can achieve. Now the effort is more on linguistic aspects of Malayalam than technical. I will update about the progress of the system here.

 

 

by Santhosh Thottingal at November 26, 2017 06:50 AM

November 03, 2017

Santhosh Thottingal

Eureka magazine with Manjari font

Eureka childrens science magazine now prints in Manjari font I designed. Happiness is seeing your favorite childhood magazine in your font!

by Santhosh Thottingal at November 03, 2017 04:37 AM

October 29, 2017

Santhosh Thottingal

Indesign CC automatic hyphenation for Indian languages

More and more publishers are starting to use Indesign CC and Unicode. One of the many adavantages the publishers get with unicode and Indesign cc is automatic hyphenation. A few of my friends told me that they don’t know how to use hyphenation. Eventhough I never used Indesign before, I decided to figure out. In my Windows 10 virtual machine, I installed Indesign CC 2018.

Following is a tutorial on how to get perfect hyphenation for text in Indian languages in Indesign. I use Malayalam as example.

Indesign CC 2018 comes with Hunspell hyphenation dictionaries. These hyphenation dictionaries are written by me long time back. See https://github.com/smc/hyphenation

From menu Edit-> Preferences->Dictionary, set Language and Hyphenation as “Hunspell”

Create a text frame and add content to it. Make sure that the composer is set as Adobe World-Ready paragraph composer. You can access it from Paragraph settings as shown below. Without this settings, the Indic text won’t render correctly.

Tick the “Hyphenation” from the paragraph settings. Select an appropriate font for the content. Choose the language of the content as Malayalam or other Indic language you are working on. See screenshot below. Justify the content.

The content will get automatically hyphenated. If you resize the column width or insert more content, text will get automatically hyphenated.

The exported PDF will look like:

You can see the hyphenation rules in Installation folder: C:\Program Files\Adobe\Adobe InDesign CC 2018\Resources\Dictionaries\LILO\Linguistics\Providers\Plugins2\AdobeHunspellPlugin\Dictionaries

Patterns are available for Assamese, Bengali, Panjabi, Gujarati, Assamese, Marathi, Tamil, Telugu, Odia, Kannada and Malayalam.

I have not tried older Indesign versions, so I don’t know from which version this feature is available. But I don’t see a reason for not using latest version either.

by Santhosh Thottingal at October 29, 2017 06:57 AM

Scribus gets Malayalam Hyphenation support

Scribus now has support for Malayalam hyphenation.

I filed a bug report to add Malayalam hyphenation rules to Scribus and it is now added to scribus. The hyphenation rules are based on the TeX hyphenation patterns I wrote.

How to use

You need scribus 1.5.4 or later. It is not yet available as release while I am writing this. But once released you can get from https://www.scribus.net/downloads/

  • Start a new document. Add text frames and content. You will need narrow columns to have wordbreaking contexts. For example 2 columns as I use for demo here.
  • Select the text and set font as a Malayalam font like Manjari, Set the language as Malayalam.
  • In Hyphenation properties, set hyphenation character as blank, otherwise visible hyphens will appear.
  • Set the text justified.
  • From menu Extras->Hyphenate text. Done.

Here is the output:

Hyphenated two column content

 

by Santhosh Thottingal at October 29, 2017 05:19 AM

October 14, 2017

Santhosh Thottingal

Trufont now has SVG paste, drag and drop support

TruFont the font-editing application written with Python3, ufoLib, defcon and PyQt5 now has support for pasting SVG images as glyphs. It now also support drag and dropping SVG files. Trufont

For my font design workflow I mainly use Inkscape to desgin master drawings and then use fonteditor for further editing. I am migrating the fonts we maintained to Trufont from Fontforge(It is no longer developed). But, not having SVG support with Trufont was a blocker for me. So today I filed two patches and got merged to Trufont master.

There are still some known issues. Mainly the pasted svg is vertically flipped. The editor can flip it again. But the original issue need investigation.

by Santhosh Thottingal at October 14, 2017 04:14 PM

മഞ്ജരി ഫോണ്ട് – പതിപ്പ് 1.3

മഞ്ജരി ഫോണ്ടിന്റെ 1.3 പതിപ്പ് ഇപ്പോൾ ലഭ്യമാണു്.

പ്രധാന മാറ്റങ്ങൾ ഇവയാണ്:

  • കണ്ടീഷണൽ സ്റ്റാക്കിങ്ങ് സംവിധാനം കൂടുതൽ അക്ഷരരൂപങ്ങളിലേക്ക് കൊണ്ടുവന്നു. കൂടുതൽ വിവരങ്ങൾ സ്വതന്ത്ര മലയാളം കമ്പ്യൂട്ടിങ്ങ് ബ്ലോഗിൽ: https://blog.smc.org.in/conditional-stacking/
  • ഫോണ്ട് ഇപ്പോൾ TTF നു പകരം OTF ഫോർമാറ്റിൽ ആണ് സ്വതവേ വരുന്നതു്. മഞ്ജരി രൂപകല്പന ചെയ്തത് OTF ഫോർമാറ്റ് മുന്നിൽ കണ്ടായിരുന്നെങ്കിലും(ക്യുബിക് ബെസിയർ കർവുകൾ) എല്ലാ ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റങ്ങളിലും കുറ്റമറ്റതായി കാണാത്തതുകൊണ്ട് TTF ൽ ആയിരുന്നു ആദ്യം പുറത്തിറക്കിയതു്. ഇപ്പോൾ ആ പ്രശ്നങ്ങളൊക്കെ പരിഹരിച്ചിട്ടുണ്ടു്. TTF, Webfonts എന്നിവയും വേണമെങ്കിൽ ഡൌൺലോഡ് ചെയ്യാം.
  • ഫോണ്ട് ഫോർജ് ആയിരുന്നു മഞ്ജരിയടക്കമുള്ള എല്ലാ ഫോണ്ടുകളും എഡിറ്റ് ചെയ്യാൻ ഞങ്ങൾ ഉപയോഗിച്ചിരുന്നതു്. വളരെ പഴയ ആ സോഫ്റ്റ്‌‌വെയർ അതിന്റെ ഡെവലപ്മെന്റ് പതിയെ നിർത്തുകയാണ്. Unified Font Object ഫോർമാറ്റിലേക്ക് എല്ലാ ഫോണ്ടുകളുടെയും സോഴ്സ് കോഡ് മാറുകയും Trufont പോലുള്ള പുതിയ എഡിറ്റർ വരുകയും ചെയ്യുന്നുണ്ട്. ഈ മാറ്റത്തിനൊപ്പം പോകാൻ ആദ്യമായി മഞ്ജരിയുടെ സോഴ്സ് കോഡ് UFO ഫോർമാറ്റിലേക്ക് മാറ്റി. ബാക്കി ഫോണ്ടുകളും പതിയെ അങ്ങനെ മാറ്റി ഫോണ്ട് ഫോർജുമായുള്ള ബന്ധം ഉപേക്ഷിക്കും.

പുതിയ ഫോണ്ടുകൾ ഡൌൺലോഡ് ചെയ്യാൻ: https://smc.org.in/fonts/#manjari

സോഴ്സ് കോഡ്, ഇഷ്യൂ ട്രാക്കർ: https://gitlab.com/smc/manjari/

1.2 പതിപ്പിൽ യൂണിക്കോഡ് 10 ൽ മലയാളത്തിൽ വന്ന കുറച്ച് അക്ഷരങ്ങൾ ചേർത്തിരുന്നു.

by Santhosh Thottingal at October 14, 2017 03:01 PM

September 19, 2017

Santhosh Thottingal

മലയാളം അകാരാദിക്രമം

ഓരോ ഭാഷയിലും അതിലെ ലിപികളെ ഒരു പ്രത്യേക ക്രമത്തിൽ എഴുതുന്ന ഒരു കീഴ്‌വഴക്കം ഉണ്ടു്. ഇംഗ്ലീഷിൽ A,B,C,D എന്ന ക്രമമാണെങ്കിൽ മലയാളത്തിലത് അ, ആ, ഇ, ഈ എന്നിങ്ങനെ തുടങ്ങുന്ന ക്രമമാണുള്ളതു്. ഇങ്ങനെ ഒരു കീഴ്‌വഴക്കം കൊണ്ടു് പല പ്രയോജനങ്ങളുമുണ്ടു്. നമുക്കെല്ലാം പരിചയമുള്ള നിഘണ്ടുവിൽ നോക്കലും,  കുറേ പേരുടെ പട്ടികയിൽ നിന്നെളുപ്പത്തിൽ ഒന്ന് കണ്ടുപിടിക്കലും ഒക്കെ ഉദാഹരണം. കീഴ്‌വഴക്കം എന്നതിൽ കവിഞ്ഞ് എന്തെങ്കിലും കൃത്യമായ ശാസ്ത്രീയതയൊന്നും ഈ ക്രമീകരണത്തിൽ കാണണമെന്നില്ല.

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

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

നിഘണ്ടുക്കളിലെ അകാരാദിക്രമം

മലയാളത്തിലെ നിഘണ്ടുക്കൾ പരിശോധിച്ചാൽ അവയുടെ ആമുഖത്തിൽ തന്നെ ഉപയോഗിച്ചിരിക്കുന്ന ക്രമത്തിനെപ്പറ്റി ചെറിയ വിവരണം കാണാനാകും. സ്വരാക്ഷരങ്ങൾ, അഞ്ച് വ്യഞ്ജനങ്ങൾ എന്നീ ക്രമം എല്ലാവരും പാലിക്കുന്നുണ്ടു്. എങ്കിലും ഗുണ്ടർട്ടിന്റെ നിഘണ്ടുവിൽ യ, ര, റ എന്ന ക്രമമാണുള്ളതു്. അതേസമയം ശബ്ദതാരാവലി റ ഏറ്റവും അവസാനം കൊടുക്കുന്നു. ചില്ലുകൾ, കൂട്ടക്ഷരങ്ങൾ എന്നിവയുടെ കാര്യത്തിലും വലിയ വ്യത്യാസങ്ങൾ കാണുന്നുണ്ടു്. അതുകൊണ്ടു് ഏതെങ്കിലും ഒരു നിഘണ്ടു ശരിയാണെന്നോ മറ്റൊന്ന് തെറ്റാണെന്നു പറയാനോ കഴിയില്ല. ഓരോ നിഘണ്ടുവും സ്വീകരിച്ച ക്രമങ്ങളും അതിനു പിന്നിലെ യുക്തിയോ വിശദീകരണമോ മനസ്സിലാക്കാൻ ശ്രമിക്കുക എന്നതിനുമാത്രമേ പ്രസക്തിയുള്ളൂ.

ഈ പ്രശ്നം നിഘണ്ടു പ്രസാധകർ തന്നെ നന്നായി തിരിച്ചറിഞ്ഞിട്ടുണ്ട്. ശബ്ദതാരാവലിയുടെ നാലാംപതിപ്പിന് പ്രസാധകൻ ശ്രീ പി ദാമോദരൻനായർ എഴുതിയ ആമുഖത്തിലെ താഴെക്കൊടുത്തിരിക്കുന്ന ഭാഗം നോക്കൂ.

നിഘണ്ടുക്കൾക്കു പുറമേ കേരള സർക്കാറിന്റെ സർവ്വവിജ്ഞാനകോശത്തിലും ഒരു പ്രത്യേക അകാരാദിക്രമം പിന്തുടരുന്നുണ്ടു്.

ഇവയെല്ലാം ഓരോ ലിപിഗണങ്ങളുടെ അകാരാദിക്രമം വിശദീകരിക്കുമ്പോൾ ഓരോന്നായി പരിചയപ്പെടാം.

സ്റ്റാൻഡേഡുകൾ, ലൈബ്രറികൾ

അകാരാദിക്രമത്തിന്റെ അടിസ്ഥാന തത്വം രണ്ടു വാക്കുകൾ അല്ലെങ്കിൽ ഒന്നോ അധിലധികമോ അക്ഷരങ്ങളുടെ ഒരു ശ്രേണി കിട്ടിയാൽ ഏത് ആദ്യം ക്രമീകരിക്കണം എന്ന String comparison അൽഗോരിതമാണ്. ഈ അൽഗോരിതം എല്ലാ വാക്കുകൾക്കും അപ്ലൈ ചെയുമ്പോൾ ആ വാക്കുകളെല്ലാം ക്രമത്തിലാവും. ഈ അൽഗോരിതത്തെ സംബന്ധിക്കുന്ന പ്രധാന മാനകം ISO 14651 ആണ്.

ISO/IEC 14651:2011, Information technology — International string ordering and comparison — Method for comparing character strings and description of the common template tailorable ordering, is an ISO Standard specifying an algorithm that can be used when comparing two strings.

ഈ മാനകമനുസരിച്ചു് ഒന്നിലധികം കൊളേഷൻ സ്പെസിഫിക്കേഷനുകളും ഡാറ്റ സെറ്റുകളും ഉണ്ടു്. അതിലെ ഏറ്റവും പ്രധാനം യുണിക്കോഡ് കൊളേഷൻ അൽഗോരിതം (UCA) ആണ്. യുണിക്കോഡ് എന്ന വലിയ സ്റ്റാൻഡേഡിനകത്ത് ടെക്നിക്കൽ റിപ്പോർട്ട് 10 ആയി വരുന്ന ഈ സ്പെസിഫിക്കേഷൻ , അതിന്റെ കൂടെത്തന്നെ യുണിക്കോഡ് എൻകോഡ് ചെയ്തിട്ടുള്ള എല്ലാ കാരക്ടറുകളുടെയും കൊളേഷൻ ക്രമം പ്രതിപാദിക്കുന്ന Default Unicode Collation Element Table (DUCET)ഇതാണ് ഇന്നത്തെ കാലത്തെ ഏതു ഭാഷയിലെയും അക്ഷരങ്ങളുടെ ക്രമം നിർവചിക്കുന്ന അടിസ്ഥാന പ്രമാണം.

ഈ സ്പെസിഫിക്കേഷൻ പക്ഷേ അതിന്റെ തന്നെ നിർവചനമനുസരിച്ചു് പ്രായോഗികമായി ഉപയോഗിക്കുന്നതിനു് അപൂർണ്ണമാണ്. ഭാഷാ നിയമങ്ങൾ ഇതിന്റെ മുകളിൽ ചേർത്ത് ടെയിലർ ചെയ്യണമെന്ന് അതുതന്നെ അനുശാസിക്കുന്നു.

Tailoring consists of any well-defined change in the Collation Element Table and/or any well-defined change in the behavior of the algorithm. Typically, a tailoring is expressed by means of a formal syntax which allows detailed manipulation of values in a Collation Element Table, with or without an additional collection of parametric settings which modify specific aspects of the behavior of the algorithm. A tailoring can be used to provide linguistically-accurate collation, if desired.

ഇങ്ങനെ ഭാഷയ്ക്കനുരൂപമാക്കിയ ക്രമീകരണ നിയമങ്ങൾ Unicode Common Locale Data Repository [CLDR] എന്ന റിപ്പോസിറ്ററിയിലാണുള്ളതു്. യുണിക്കോഡ് അധിഷ്ഠിതമായ അൽഗോരിതങ്ങൾക്കും മറ്റുമുള്ള ഡാറ്റ സന്നദ്ധപ്രവർത്തകരാണ് ഇവിടെ സംഭരിക്കുന്നതു്. ആർക്കും ഇതിലേക്ക് ഡാറ്റകൾ ചേർക്കുകയും തിരുത്തുകയും ചെയ്യാം. CLDR ൽ യുണിക്കോഡ് കൊളേഷൻ അൽഗോരിതത്തിന്റെ മുകളിലുള്ള, ലിംഗ്വിസ്റ്റിക് കറക്ഷനുകൾ ചെയ്യാനുള്ള തരത്തിൽ CLDR Collation അൽഗോരിതവും ഉണ്ടു്.

പക്ഷേ ഇതൊക്കെയും അൽഗോരിതവും ഡാറ്റയും മാത്രമാണല്ലോ. അതിന്റെ പുറത്തു് ആരെങ്കിലും ശരിക്കും വാക്കുകൾ ക്രമീകരിക്കാനുള്ള പ്രോഗ്രാം എഴുതണമല്ലോ. അങ്ങനെ എഴുതിയ സോഫ്റ്റ്‌വെയർ ലൈബ്രറികളിലൊന്നാണ് ICU Project – International Components for Unicode. ഈ ലൈബ്രറി ഉപയോഗിച്ച് ഒരു അപ്പ്ലിക്കേഷന് ഏതു ഭാഷയ്ക്കുമുള്ള ക്രമീകരണം സാധ്യമാക്കാം.

GNU C library localedata

നേരത്തെ പറഞ്ഞ ISO 14561 അനുസരിച്ചുള്ള വേറെയും അൽഗോരിതവും അതനുസരിച്ച് ഉള്ള അപ്ലിക്കേഷൻ ലൈബ്രറികളുമുണ്ടു്. അതിൽ പ്രധാനം GNU സി ലൈബ്രറിയാണ്. സ്വതന്ത്ര സോഫ്റ്റ്‌വെയർ പ്രസ്ഥാനത്തിന്റെ അതിപ്രധാനവും വളരെ പഴക്കമുള്ളതുമായ സ്വതന്ത്ര സി കമ്പൈലറിന്റെ ഭാഗമാണ് ഈ ലൈബ്രറി. അതിൽ string comparison സംവിധാനമുണ്ടാവുമെന്നു പറയാതെത്തന്നെ അറിയാമല്ലോ. ഈ ലൈബ്രറി പക്ഷേ യുണിക്കോഡ് കൊളേഷൻ ഡാറ്റ ഉപയോഗിക്കുന്നില്ല. പകരം സ്വതന്ത്ര സോഫ്റ്റ്‌വെയർ ഡെവലപ്പർമാർ ചേർത്ത അക്ഷരക്രമീകരണ നിയമങ്ങളാണ് ഉപയോഗിക്കുന്നതു്. സ്വതന്ത്ര സോഫ്റ്റ്‌വെയർ ലോകത്തിലെ ഭൂരിപക്ഷം അപ്ലിക്കേഷനുകളും ഒരുതരത്തിലല്ലെങ്കിൽ മറ്റൊരുതരത്തിൽ ഈ GNU C library യെ ആധാരമാക്കിയായതുകൊണ്ടു് പ്രായോഗികമായി ഇതിൽ എന്തു് അകാരാദിക്രമമാണോ ഉള്ളതു്, അതാണ് കിട്ടുക. ഉദാഹരണത്തിനു ലിനക്സിലെ sort കമാന്റ് ഒക്കെ തരുന്ന മലയാളത്തിന്റെ സോർട്ടിങ്ങ് ഇതുപ്രകാരമാണ്. അതുപോലെ പൈത്തണിലെ Locale packageന്റെ സോർട്ടിങ്ങ്.

GNU C library യുടെ ഉള്ളിലുള്ള മലയാളത്തിന്റെ അകാരാദിക്രമം എഴുതിയിരിക്കുന്നതു് ഞാനാണ്.

അപ്പോൾ നമുക്ക് മൂന്നിടത്തു് നിയമങ്ങളുണ്ടു്:

  1. Unicode Default Collation Element Table  ൽ ഉള്ള മലയാള അക്ഷരങ്ങളുടെ ക്രമം Unicode Collation Algorithm(UCA) അനുസരിച്ചിട്ടുള്ളതു്
  2. CLDR ലെ ഡാറ്റ ഉപയോഗിച്ച് ICU ഇംപ്ലിമെന്റ് ചെയ്ത മലയാളം കൊളേഷൻ
  3. GNU C library യിലെ മലയാളം കൊളേഷൻ.

ഇനി ഈ ലേഖനത്തിൽ മലയാളത്തിലെ അക്ഷരങ്ങളുടെ അകാരാദിക്രമീകരണം ചർച്ച ചെയ്യുമ്പോൾ ഈ മൂന്ന് നിയമങ്ങൾ എങ്ങനെ വ്യത്യാസപ്പെട്ടിരിക്കുന്നു എന്നു വിശദമാക്കുന്നതാണ്.

സ്റ്റാൻഡേഡുകൾ എന്ന ബഹുവചനത്തിന്റെ അനൌചിത്യം ഈ ഭാഗത്തിന്റെ തലക്കെട്ടിനുണ്ടെങ്കിലും അതെങ്ങനെ വന്നു എന്നു മനസ്സിലായിക്കാണുമെന്നു കരുതുന്നു. അല്ലെങ്കിലും സ്റ്റാൻഡേഡ് എപ്പോഴും ബഹുവചനം തന്നെയാണല്ലോ!

പൊതുവായ നിയമങ്ങൾ

അക്ഷരമാലയിലെ പൊതുവായ ക്രമം താഴെക്കൊടുക്കുന്നു:

അ ആ ഇ ഈ ഉ ഊ ഋ എ ഏ ഐ ഒ ഓ ഔ അം അഃ ക ഖ ഗ ഘ ങ ച ഛ ജ ഝ ഞ ട ഠ ഡ ഢ ണ ത ഥ ദ ഥ ന പ ഫ ബ ഭ മ യ ര ല വ ശ ഷ  സ ഹ ള ഴ റ

ഇതിൽ, റ അവസാനം കൊടുത്തിരിക്കുന്നതു് എല്ലാ നിഘണ്ടുക്കളും ഒരു പോലെ പാലിക്കുന്നില്ല. ഉദാഹരണത്തിന്  1871 ലെ ഗുണ്ടർട്ടിന്റെ നിഘണ്ടുവിൽ ര കഴിഞ്ഞ് റ കൊടുത്തിരിക്കുന്നു. കുറച്ചു കൂടി കൃത്യമായിപ്പറഞ്ഞാൽ യ,  ര, ർ, ൎ , റ, റ്റ, ല എന്ന ക്രമമാണ് ഗുണ്ടർട്ട് ഉപയോഗിക്കുന്നതു്.

ഇതേക്രമം സർവവിജ്ഞാനകോശവും പിന്തുടരുന്നു. അർക്കൻ  കഴിഞ്ഞ് ‘ല, ശ, സ’കളിൽ അനേകം പദങ്ങൾ വന്നശേഷം അറ കൊടുക്കുന്നതിന് ഉപപത്തിയില്ല – എന്ന് വിശദീകരണം കൊടുത്തിരിക്കുന്നു.

മലയാളത്തിന്റെ യുണിക്കോഡ് ബ്ലോക്ക് ര, റ എന്ന രീതിയിലാണ് കോഡ് പോയിന്റുകൾ കൊടുത്തിട്ടുള്ളത്. രയുടെ കോഡ് പോയിന്റ് 0D30, റയുടെത് 0D31, അതുകഴിഞ്ഞ ലയുടെത് 0D32 എന്ന രീതിയിൽ. ലിംഗ്വിസ്റ്റിക് നിയമങ്ങളോ യുണിക്കോഡ് കൊളേഷൻ നിയമങ്ങളോ പാലിക്കാത്ത ഒരു സിസ്റ്റത്തിന്റെ ഫോൾബാക്ക് ക്രമം അക്ഷരങ്ങളുടെ കോഡ് പോയിന്റ് ക്രമം ആയിരിക്കും.

മലയാളം യുണീക്കോഡ് ബ്ലോക്കിലെ അക്ഷരങ്ങളുടെ ക്രമം

ശ്രീകണ്ഠേശ്വരത്തിന്റെ ശബ്ദതാരാവലിയുടെ ആദ്യപതിപ്പുകൾ പക്ഷേ ര, ർ, ൎ എന്ന ക്രമവും, ല, വ, ശ, ഷ, സ, ഹ, ള, ഴ എന്നിവയ്ക്ക് ശേഷം ഏറ്റവും അവസാനം റ-യും കൊടുക്കുന്നു. ശബ്ദതാരാവലിയുടെ രണ്ടാംപതിപ്പാണ് ഞാൻ പരിശോധിച്ചത്. ശബ്ദതാരാവലിയുടെ പരിഷ്കരിച്ച പുതിയ പതിപ്പ് – പതിപ്പ് 39 – ഇതേ ക്രമം തന്നെയാണെങ്കിലും ബിന്ദുരേഫം- ൎ എടുത്തുകളഞ്ഞിരിക്കുന്നു.

ശബ്ദതാരാവലി രണ്ടാംപതിപ്പ് – ഴ യ്ക്ക് ശേഷം റ വരുന്നു.

സോഫ്റ്റ്‌വെയറുകളുടെ കാര്യം വരുമ്പോൾ നേരത്തെപ്പറഞ്ഞ എല്ലാ സിസ്റ്റങ്ങളും ഒരേ ക്രമം പിന്തുടരുന്നു.

ചന്ദ്രക്കല, ചില്ലക്ഷരങ്ങൾ, സംവൃതോകാരം

ചന്ദ്രക്കലയെ അകാരാദി ക്രമത്തിൽ എങ്ങനെ പരിഗണിക്കുന്നു എന്നതനുസരിച്ചു് അകാരാദിക്രമത്തിൽ വിവിധങ്ങളായ സമ്പ്രദായങ്ങൾ ഉണ്ടു്.

അകാരാദിക്രമത്തെ ലിപിസ്വരൂപത്തിന്റെ അടിസ്ഥാനത്തിൽ നിർവചിക്കുന്ന സമ്പ്രദായങ്ങളും, വർണ്ണവ്യവസ്ഥയുടെ(Phonetic nature)  അടിസ്ഥാനത്തിൽ നിർവചിക്കുന്ന സമ്പ്രദായങ്ങളും ഉണ്ടു്.  ലിപിസ്വരൂപത്തിൽ നിർവചിക്കുമ്പോൾ അക്ഷരമാലയിലെ സ്വരങ്ങളും, ക, ച, ട, ത, പ തുടങ്ങിയ വ്യഞ്ജനങ്ങളും ആണ് പ്രാഥമിക കണികകൾ. അതേ സമയം വർണ്ണവ്യവസ്ഥയിൽ വർണങ്ങളാണ് അടിസ്ഥാന കണികകൾ.

വർണം എന്നതുകൊണ്ട് ഉദ്ദേശിക്കുന്നതു് ഒരുദാഹരണം കൊണ്ടു് വ്യക്തമാക്കാൻ ക എന്ന അക്ഷരം എടുക്കുക. ഇതിലെ അടിസ്ഥാന ഉച്ചാരണ ഘടകം ക് എന്ന ശുദ്ധവ്യഞ്ജനം അഥവാ സ്വരം ചേരാത്ത വ്യഞ്ജനം ആണ്. ക എന്നതു് ക് + അ എന്നീ രണ്ട് വർണ്ണങ്ങൾ കൂടിച്ചേന്നതാണെന്നു വരുന്നു.

അതേ സമയം ക എന്നതു് പിരിക്കാനാകാത്ത ഒരു അക്ഷരമാണെന്ന അടിസ്ഥാനത്തിലാണ് പരിഗണിക്കുന്നതെങ്കിലോ? ക് എന്നത് ക യുടെ കൂടെ ചന്ദ്രക്കല ചേർന്ന രൂപമാണെന്നും വരുന്നു.

വർണം, അക്ഷരം, ലിപി എന്നിവ മാറിപ്പോകാതെ മനസ്സിലാക്കാൻ അവയെന്തെന്നു താഴെ വ്യക്തമാക്കുന്നു.

  • വർണം – സ്വരം ചേരാത്ത ഉച്ചാരണയോഗ്യമല്ലാത്ത ശബ്ദഘടകം. ഉദാഹരണം  ക്, ച്, ട്, ത്, പ്. സ്വനിമം (phoneme) എന്നും അറിയപ്പെടുന്നു.
  • അക്ഷരം – വർണത്തിൽ സ്വരം ചേർത്ത ഉച്ചാരണയോഗ്യമായത്. ഇതിനായി വ്യഞ്ജനങ്ങളുടെ കൂടെ സ്വരങ്ങൾ ചേർക്കുന്ന. പൊതുസ്വരമായ അ ചേർത്തു് സ്വരചിഹ്നമില്ലാതെ ക എന്നെഴുതി ക് എന്ന വർണത്തെ ഉച്ചാരണസൌകര്യാർത്ഥം എഴുതുന്നു. ഒന്നിലധികം വ്യഞ്ജനങ്ങളും അക്ഷരം ആണ്. സ്വാതന്ത്ര്യം എന്ന വാക്കിൽ മൂന്ന് അക്ഷരങ്ങളുണ്ടെന്നാണ് നമ്മൾ പറയാറെന്നോർക്കുക. Syllable എന്നു ഇംഗ്ലീഷിൽ പറയാം.
  • ലിപി – അക്ഷരങ്ങളെ എഴുതാൻ ഉപയോഗിക്കുന്ന ചിഹ്നങ്ങളുടെ വ്യവസ്ഥ

അകാരാദി എന്നും അക്ഷരമാലാക്രമം എന്നും പറയുമ്പോൾ വർണങ്ങൾ (phonemes) ആയി പിരിച്ച് അവയുടെ ക്രമമാണ് നോക്കേണ്ടത് എന്ന പ്രമാണമനുസരിക്കുന്ന സമ്പ്രദായം മിക്ക നിഘണ്ടുക്കളും പിന്തുടരാൻ ശ്രമിച്ചിട്ടുണ്ടു്.

ഉദാഹരണത്തിന് കടല്(ൽ), കടല എന്ന 2 വാക്കുകൾ, ശബ്ദതാരാവലി, പച്ചമലയാളം നിഘണ്ടു, സർവവിജ്ഞാനകോശം എന്നിവയെല്ലാം കടല്(ൽ), കടല എന്ന ക്രമത്തിൽ തന്നെ കൊടുക്കുന്നു.

പക്ഷേ ഗ്നു സി ലൈബ്രറിയൊഴികെയുള്ള സംവിധാനങ്ങൾ വർണങ്ങളെ അടിസ്ഥാനമാക്കിയല്ല ക്രമീകരിക്കുന്നതു്. ചന്ദ്രക്കലയും ചില്ലും എല്ലാ സ്വരചിഹ്നങ്ങളും കഴിഞ്ഞാണു് അവയിൽ വരുന്നതു്.

ചന്ദ്രക്കലയുടെ അതേ സ്വഭാവമല്ലേ ചില്ലിനും – സ്വരം ചേരാത്ത ശുദ്ധവ്യഞ്ജനം? ആ യുക്തി അനുസരിച്ച് ല്(ൽ) , ല എന്ന ക്രമം വരും.  മുകളിൽ glibc സിസ്റ്റം ഈ രിതി പിന്തുടരുന്നതായി കാണാം.

നിഘണ്ടുക്കളും അങ്ങനെത്തന്നെ.

ശബ്ദതാരാവലി – പരിഷ്കരിച്ച പതിപ്പ്. ചില്ലക്ഷരം ർ, ര യുടെ മുമ്പ് വരുന്നു.

ചന്ദ്രക്കലയുടെ ഉപയോഗം ചില്ലിനു സമാനമായ സ്വരമില്ലാത്ത വ്യഞ്ജനം ഉണ്ടാക്കലാണെന്നു പറഞ്ഞാൽ അതു് പൂർണ്ണമായും ശരിയാവില്ല. “അത്”, “കാല്”, “ചോറ്” എന്നീ വാക്കുകളൊക്കെ ഉച്ചരിച്ചുനോക്കൂ.  കാല് എന്നതിലെ ല് ന്റെ ഉച്ചാരണമാണോ കാൽ എന്നതിലെ ൽ ന്റെ ഉച്ചാരണം? അല്ലല്ലോ? ഈ വ്യത്യാസത്തിന്റെ കാരണം മനസ്സിലാക്കാൻ സംവൃതോകാരം എന്താണെന്നറിയണം.

കാല് എന്നു പറയുമ്പോൾ ല് എന്നതിന്റെ ഉച്ചാരണത്തിൽ ല + ഉ + ് എന്നീ വർണങ്ങൾ അടങ്ങിയിട്ടുണ്ടു്. പക്ഷേ അതു് അതേപോലെ എഴുതുമ്പോൾ ലു് എന്നാണെഴുതേണ്ടതു്. കാലു് എന്ന്. ഈ ലേഖനത്തിൽ ഞാൻ ഈ ഉകാരവും ചന്ദ്രക്കലയും ഇട്ടെഴുതുന്ന ശൈലി വ്യാപകമായി ഉപയോഗിച്ചിരിക്കുന്നതു് ശ്രദ്ധിച്ചിരിക്കുമല്ലോ. ചുരുക്കത്തിൽ ഉ+് എന്നതിനെ സംവൃതോകാരം എന്നു വിളിക്കാം. കാലു് എന്നു് ഇന്നധികമാരും എഴുതാറില്ല. കാല് എന്ന് ലളിതമായെഴുതി ഉ കാരം കൂടി ഉച്ചരിക്കാറാണു പതിവ്. സംവൃതോകാരം കാണിക്കാൻ ഉ കാരം പ്രത്യേകം എഴുതേണ്ടതുണ്ടോ ഇല്ലയോ എന്ന കാര്യങ്ങളും സംവൃതോകാരത്തിന്റെ സ്വഭാവവും മലയാളവ്യാകരണവിദഗ്ദ്ധൻമാർക്കിടയിൽ വ്യാപകമായ ചർച്ച ചെയ്യപ്പെട്ട വിഷയമാണു്.

എന്തായാലും കാലു് എന്നു ഞാൻ എഴുതിയെന്നിരിക്കട്ടെ, അതിൽ ഉ ചിഹ്നമുണ്ടുതാനും. കാൽ, കാല്, കാല്, കാലു്, കാല എന്നീ വാക്കുകൾ ഏത് ക്രമത്തിൽ വരും?

കാൽ, കാല് എന്നിവ കാല എന്നതിനു മുമേ വരുമെന്നു നമ്മൾ നേരത്തേ കണ്ടു. UCA, ICU(CLDR) എന്നിവ ആ ക്രമം  പിന്തുടരുന്നില്ലെന്നും. കാലു്, കാലു എന്നിവയോ? അവയിലെ വർണങ്ങൾ പിരിച്ചെഴുതിനോക്കാം:

കാലു് = ക് + ആ + ല് + ഉ + ്

കാലു = ക് + ആ + ല് + ഉ

അതുപ്രകാരം ലു എന്നതിന്റെ പൂർണ്ണ ഉച്ചാരണത്തിലേക്കെത്താത്ത പാതിവഴിയാണ് കാലു്. അതുകൊണ്ട് കാലു്, കാല് എന്ന ക്രമം വരണം. ഈ ക്രമം glibc അനുസരിച്ചിരിക്കുന്നതു് താഴെക്കൊടുത്തിരിക്കുന്ന ചിത്രത്തിൽ ശ്രദ്ധിക്കുക.

 

നിഘണ്ടുകളിൽ അങ്ങനെ ഉകാരചിഹ്നമിട്ട് സംവൃതോകാമെഴുതുന്നതു് ഇക്കാലത്തെ നിഘണ്ടുക്കളിൽ ഇല്ലേയില്ല. ഗുണ്ടർട്ടിന്റെ നിഘണ്ടുവിൽ ചോറു, കാലു, കോഴിക്കോടു, വേണാടു. തുടങ്ങി പൂർണ്ണ ഉകാരമുമ്പയോഗിച്ചെഴുതുന്ന ശൈലിയാണുള്ളതു്. ശബ്ദതാരാവലിയുടെ ആദ്യകാല പതിപ്പിൽ സംവൃതോകാരം ഉകാരവും ചന്ദ്രക്കലയും ചേർത്തെഴുതുന്നുണ്ടു്. അതിൽ കാട, കാടി, കാടു്, കാടു എന്ന ക്രമം പിന്തുടരുന്നു. അതു് മേൽപ്പറഞ്ഞ വർണങ്ങളെ അടിസ്ഥാനമാക്കിയുള്ള യുക്തിയനുസരിച്ചുള്ളതാണു്.

സർവവിജ്ഞാനകോശത്തിൽ സംവൃതോകാരം ഉകാരലിപി ഉപയോഗിച്ച് എഴുതുന്നില്ലെങ്കിലും ഉകാര ചിഹ്നങ്ങളുടെ തൊട്ടുമുമ്പ് ക്രമീകരിച്ചിരിക്കുന്നു. “മലയാളത്തിൽ സംവൃതോകാരത്തിന് വ്യാകരണമൂല്യം പ്രകടമാകയാൽ അതിന് അകാരാദിയിൽ അംഗീകാരം നൽകിയിരിക്കുന്നു. പട്ട, പട്ട്, പട്ടു. വന്ന, വന്ന്, വന്നു. ചാർ – ചാറ -ചാറി -ചാറ്-ചാറുക ഈ ക്രമത്തിലാണ് അകാരാദി കണക്കാക്കേണ്ടത്.” എന്നു് കൊടുത്തിരിക്കുന്നു.

ഗുണ്ടർട്ടിന്റെ നിഘണ്ടുവിൽ ചില്ലക്ഷരങ്ങൾ എല്ലാം എല്ലാ സ്വരചിഹ്നങ്ങളും കഴിഞ്ഞ് അവസാനമാണ് വരുന്നതു്. എളുപ്പം, എൾ എന്ന ക്രമം വരുന്നുണ്ടു്. പക്ഷേ  നേരെതിരിച്ച് കടൽ, കടല എന്ന ക്രമവും കാണുന്നതുകൊണ്ടു് ഇക്കാര്യത്തിൽ വ്യക്തത പോര.

മലയാള ചില്ലക്ഷരങ്ങളുടെ എൻകോഡിങ്ങിനെക്കുറിച്ചുള്ള നീണ്ട ചർച്ചകളിൽ ചന്ദ്രക്കല, സംവൃതോകാരം എന്നിവയുടെ നിർവചനങ്ങളും സ്വഭാവവും വലിയ ചർച്ചയായിരുന്നു. അകാരാദിക്രമത്തെ മുൻനിർത്തി ഇവയുടെ സ്വഭാവം വിശകലനം ചെയ്യുന്ന Chandrakkala, Samvruthokaram, Chillaksharam – from the perspective of Malayalam Collation എന്ന ഒരു പ്രബന്ധം ആർ. ചിത്രജകുമാർ, എൻ. ഗംഗാധരൻ എന്നിവർ ചേർന്നു് രചിച്ചിട്ടൂണ്ടു്. ഈ പ്രബന്ധത്തിൽ ഉകാരചിഹ്നമില്ലാതെ എഴുതുകയും സംവൃതമായി ഉച്ചരിക്കുകയും ചെയ്യുന്ന കാല്, അത്  തുടങ്ങിയ ശൈലി PseudoSamvruthokaram എന്ന പേരിട്ട് റെഫർ ചെയ്യുന്നുണ്ടു്. സംവൃതമായി ഉച്ചരിക്കുന്നവ ഉകാരചിഹ്നത്തോടെ തന്നെ എഴുതുക വഴി ചില്ലക്ഷരത്തിന്റെ അറ്റോമിക് എൻകോഡിങ്ങ് അനാവശ്യമാകും എന്ന വാദം മുന്നോട്ടു വെയ്ക്കുന്നുണ്ടു്.  സ്വനിമം/വർണങ്ങളായി അക്ഷരങ്ങളെ വേർപെടുത്തിയെഴുതി കൊളേഷൻ നിർണയിക്കുന്ന ആശയം GNU C Library യിൽ എഴുതാൻ എന്നെ ഈ പ്രബന്ധം വളരെ സഹായിച്ചിട്ടുണ്ടു്. അതു് വായിക്കണമെന്നഭ്യർത്ഥിക്കുന്നു.

ചില്ലക്ഷരങ്ങളുടെ എൻകോഡിങ്ങിനെപ്പറ്റി സൂചിപ്പിച്ചുവല്ലോ. ZWJ ഉപയോഗിച്ചെഴുതുന്ന ചില്ലുകളും (ന്‍ = ന്+ZWJ) ഉം അറ്റോമിക് ആയി എൻകോഡ് ചെയ്ത ചില്ലുകളും ഉപയോഗത്തിലുണ്ടു്. ഈ രണ്ടു ചില്ലുകളെയും ഒരേ പോലെയാണ് glibc, icu, uca എന്നീ സോഫ്റ്റ്‌വെയർ സംവിധാനങ്ങളും ഇപ്പോൾ സോർട്ട് ചെയ്യുന്നതു്.

അനുസ്വാരം

അനുസ്വാരം – ം , മയുടെ ചില്ലായിട്ടാണ് അകാരാദിക്രമത്തിൽ പരിഗണിക്കുന്നതു്. ം == മ്  അതിനാൽ ‘കനകം’ കഴിഞ്ഞേ ‘കനം’ വരൂ. ശബ്ദതാരാവലിയിൽ അങ്ങനെയാണ്. ഗുണ്ടർട്ടിൽ നേരെ മറിച്ചാണ് കാണുന്നത്. Glibc, ICU എന്നിവയും കനകം, കനം എന്നു ക്രമീകരിക്കുന്നു.

കൂട്ടക്ഷരങ്ങൾ

കൂട്ടക്ഷരങ്ങളുടെ ക്രമം അതിനെ വർണങ്ങളാക്കി പിരിച്ചു് ഇടത്തുനിന്നു വലത്തോട്ട് ഒരേസ്ഥാനത്തുള്ളവയുടെ ക്രമം കണക്കാക്കിയാണ്.

താഴെക്കൊടുത്തിരിക്കുന്ന ചിത്രത്തിൽ നിന്നും ഇക്കാര്യം മനസ്സിലാക്കാമെന്നു കരുതുന്നു.

സമാന സ്വരചിഹ്നങ്ങൾ

മലയാളത്തിലെ ഔ ചിഹ്നത്തിനു് ൌ എന്നും ൗ എന്നും ചിഹ്നങ്ങൾ ഉണ്ടു്. പൌർണ്ണമി, പൗർണ്ണമി എന്നിവ ഉദാഹരണങ്ങൾ. ഈ രണ്ടു ചിഹ്നങ്ങളും ഒരേ സ്വനിമത്തെത്തന്നെ സൂചിപ്പിക്കുന്നതിനാൽ അടുത്തടുത്തുവരണം. നിഘണ്ടുക്കൾ ഇതിലേതെങ്കിലും ഒന്നേ ഉപയോഗിക്കാറുള്ളൂവെന്നതിനാൽ ഈ പ്രശ്നം ഉദിക്കുന്നില്ല. സോഫ്റ്റ്‌വെയർ ലൈബ്രറികളിൽ glibc,  ICU എന്നിവ ഈ ബന്ധം തിരിച്ചറിയുന്നുണ്ട്.

ഒ, ഓ, ഔ എന്നിവയുടെ സ്വരചിഹനങ്ങള്‍ യഥാക്രമം ൊ , ോ , ൌ എന്നോ െ+ ാ , േ+ ാ , െ+ ൗ എന്നോ വേർപെടുത്തി എഴുതിയാലും തുല്യമായി കണക്കാക്കും(Canonical Equivalence.)

വിസർഗം, ഹ

ഹ, വിസർഗം എന്നിവയ്ക്ക് സമാന ഉച്ചാരണമായതിനാൽ അവ അടുത്തടുത്തുവരണമെന്നൊരു പ്രമാണം കേട്ടിട്ടുണ്ടെങ്കിലും നല്ലൊരു ഉദാഹരണം അറിയില്ല. ഏതെങ്കിലും നിഘണ്ടുവിലോ സോഫ്റ്റ്‌വെയർ ലൈബ്രറികളിലോ ഇങ്ങനെ ക്രമീകരിച്ചതായി അറിയില്ല.

റ്റ

ഗുണ്ടർട്ടിന്റെ നിഘണ്ടുവിലെപ്പോലെത്തന്നെ റയ്ക്ക് ശേഷം റ്റ ശബ്ദതാരാവലി രണ്ടാം പതിപ്പും  പിന്തുടരുന്നു. മാത്രമല്ല, ശബ്ദതാരാവലിയുടെ ഇന്നത്തെ മുപ്പത്തൊമ്പതാം പതിപ്പും, സുമംഗലയുടെ പച്ചമലയാളം നിഘണ്ടുവും  ഇതേ ക്രമം പിന്തുടരുന്നു.

 

റ്റ – റയ്ക്ക് ശേഷം വരുന്നു – ശബ്ദതാരാവലി രണ്ടാം പതിപ്പ്.

റ്റ = റ + ് + റ എന്ന യുണിക്കോഡ് രീതിവെച്ച്, റയുടെ തൊട്ടുശേഷം തന്നെ റ്റ വരും. ഇത് എല്ലാ ലൈബ്രറികളും ഒരു പോലെ പിന്തുടരുന്നു. എങ്കിലും നേരത്തെപ്പറഞ്ഞ ചന്ദ്രക്കലയുടെ വ്യത്യാസമുണ്ടെന്നു ഓർക്കണം.

റ്റ  യഥാർത്ഥത്തിൽ ഺ ഖരമായും ഩ അനുനാസികമായും വരുന്ന ഒരു വ്യഞ്ജനവർഗത്തിലെ ഺ യുടെ ഇരട്ടിപ്പാണെന്നു കേരളപാണിനീയം പറയുന്നുണ്ടെങ്കിലും ഺ യും റ്റ യും തമ്മിൽ ഒരു ബന്ധവും ഒരു കൊളേഷൻ സിസ്റ്റവും കൊടുക്കുന്നില്ല.

മലയാള അക്കങ്ങൾ

മലയാളം അക്കങ്ങള്‍ അവയുടെ അറബി ലിപികളുടെ കൂടെ തന്നെ വരും. മറ്റുഭാഷകളിലെ അക്കങ്ങൾ ഉണ്ടെങ്കിലും അടുത്തടുത്തുവരും.

പ്രാധാന്യം

ഒരു നീണ്ട പട്ടികയിൽ നിന്നും പെട്ടെന്നൊരു പേരോ മറ്റോ കണ്ടുപിടിക്കുന്നതിനു അകാരാദിക്രമം സഹായിക്കും. അതുപക്ഷേ ഇന്നത്തെ കാലത്തെ സോഫ്റ്റ്‌വെയറുകൾ സെർച്ച് ഫീച്ചർ തരുമെങ്കിലും. തെരഞ്ഞുകണ്ടുപിടിക്കലിലൊതുങ്ങുന്നില്ല, ഒരു പട്ടികയലെ സ്ഥാനവും അകാരാദിക്രമമാണ് തീരുമാനിക്കുന്നതു്. ഉദാഹരണത്തിനു് ഒരു ക്ലാസിലെ ഒരു കുട്ടിയുടെ റോൾ നമ്പർ ക്ലാസിലെ കുട്ടികളുടെ പേരുകൾ സോർട്ട് ചെയ്ത ക്രമമായിരിക്കും തീരുമാനിക്കുന്നതു്.

 

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

സാങ്കേതികക്കുറിപ്പുകൾ

  1. glibc collation: ഇതിന്റെ ആദ്യപതിപ്പ് 2009ൽ ആണെഴുതുന്നതു്. പക്ഷേ പിന്നീട് ശ, ഷ, സ എന്നിവയുടെ ക്രമത്തിൽ ഒരു പിശക് ശ്രദ്ധയിൽ പെടുകയും തിരുത്തുകയും ചെയ്തിട്ടുണ്ടു്. അറ്റോമിക് ചില്ലുകൾ ചേർത്തിട്ടില്ലായിരുന്നതിനാൽ അതും ഇപ്പോൾ ചേർത്തിട്ടുണ്ട്. ഈ മാറ്റങ്ങളെല്ലാം ചേർന്ന glibc യുടെ പതിപ്പ് 2.26 ൽ ആണ് വരുന്നതു്. അതു് ഉബുണ്ടുവിന്റെ അടുത്ത മാസം വരുന്ന പതിപ്പിൽ വരും. ഈ ലേഖനത്തിലെ അകാരാദിക്രമം glibc യുടെ ഈ മാറ്റങ്ങളെല്ലാം ഉള്ള പതിപ്പിലാണ് ടെസ്റ്റ് ചെയ്തിരിക്കുന്നതു്.
  2. CLDR അടിസ്ഥാനമാക്കിയുള്ള ICU കൊളേഷൻ സംവിധാനം ബ്രൌസറുകളിലൊക്കെ ജാവാസ്ക്രിപ്റ്റിൽ നിലവിലുണ്ടു്. അതെങ്ങനെ ഉപയോഗിക്കാമെന്നതിന്റെ ചെറിയൊരു ഡെമോ: https://codepen.io/santhoshtr/pen/NjMXjE
  3. ഈ ലേഖനത്തിൽ മൂന്നു വ്യത്യസ്ത സോഫ്റ്റ്‌വെയർ സംവിധാനങ്ങളിലെ അകാരാദിക്രമം കാണിക്കാൻ വേണ്ടി ചെറിയൊരു അപ്ലിക്കേഷൻ പൈത്തൺ ഉപയോഗിച്ചെഴുതിയിട്ടുണ്ട്. അതിന്റെ സോഴ്സ് കോഡ്: https://gist.github.com/santhoshtr/681e8bb72c63cb74d67d123f4fb7e7be
  4. ചിലയിടത്തു് രണ്ടക്ഷരങ്ങളും തുല്യമായി പരിഗണിക്കും എന്ന് ലേഖനത്തിൽ പറയുമ്പോൾ, അകാരാദിക്രമത്തിൽ അതിനെ മനസ്സിലാക്കേണ്ടത് ഇങ്ങനെയാണ്: അക്ഷരങ്ങൾക്കെല്ലാം ഒരു കൊളേഷൻ വെയിറ്റ് ഉണ്ടു്. അത് ഒരു സംഖ്യ ആണെന്നു കരുതുക. ഇത് തന്നെ പ്രൈമറി കൊളേഷൻ വെയിറ്റ്, സെക്കന്ററി കൊളേഷൻ വെയിറ്റ് എന്നിങ്ങനെ കൂടുതൽ ലെവലുകളാക്കി തിരിച്ചിരിക്കുന്നു. രണ്ട് അക്ഷരങ്ങൾ തുല്യമെന്നൊക്കെ പറയുമ്പോൾ പ്രൈമറി കൊളേഷൻ വെയിറ്റ് തുല്യമാണെന്നും സെക്കന്ററി കൊളേഷൻ വെയിറ്റ് വ്യത്യാസപ്പെട്ടു്, അക്ഷരങ്ങളിലേതു് ആദ്യം വരണമെന്നും തീരുമാനിക്കുന്നു. പ്രൈമറി കൊളേഷൻ വെയിറ്റ് തുല്യമായ അക്ഷരങ്ങളെ string comparison, string search എന്നിവയിലൊക്കെ തുല്യമായി പരിഗണിക്കണം.
  5. glibc പുതിയ യൂണിക്കോഡ് കോഡ്പോയിന്റുകൾ പരിഗണിക്കുന്നില്ല.

പരിശോധിച്ച നിഘണ്ടുക്കൾ

  1.  A Malayalam And English Dictionary – H Gundert, 1871
  2. ശബ്ദതാരാവലി – രണ്ടാം പതിപ്പ്. ശ്രീകണ്ഠേശ്വരം ജി പത്മനാഭപിള്ള, 1931
  3. ശബ്ദതാരാവലി പരിഷ്കരിച്ച പുതിയ പതിപ്പ്: മുപ്പത്തൊമ്പതാം പതിപ്പ് – സാഹിത്യ പ്രവർത്തക സഹകരണ സംഘം. 2013
  4. പച്ചമലയാളം നിഘണ്ടു – സുമംഗല – ഗ്രീൻബുക്സ്, 2016

നിഘണ്ടുക്കളിൽ ആദ്യാവസാനം ഏകദേശം ഒരേ ക്രമം പിന്തുടരുന്നെങ്കിലും മനുഷ്യപ്രയത്നഫലമായതിനാൽ ചില നോട്ടപ്പിശകുകൾ ഒക്കെ ഉണ്ട്. ഉദാഹരണത്തിനു് ശബ്ദതാരാവലി രണ്ടാം പതിപ്പിൽ {ചക്കു്, ചക്ക}, {ചങ്കിടി, ചക്കു്} തുടങ്ങിയ ക്രമങ്ങളിൽ സംവൃതോകാരം പലയിടത്തായി വന്നിരിക്കുന്നു.

 

by Santhosh Thottingal at September 19, 2017 04:27 PM

September 17, 2017

Rajeesh K Nambiar

Switching Raspbian to Pixel desktop

Official Raspbian images based on Debian Stretch by default has the Pixel desktop environment and will login new users to it. But if you have had a Raspbian installation with another DE (such as LXDE), here are the steps to install and login to the Pixel desktop.

  1. apt-get install raspberrypi-ui-mods
  2. sed -i 's/^autologin-user=pi/#autologin-user=pi/' /etc/lightdm/lightdm.conf
  3. update-alternatives --set x-session-manager /usr/bin/startlxde-pi
  4. sed -i 's/^Session=.*/Session=lightdm-xsession/' ${USER}/.dmrc

Make sure the user’s ‘.dmrc’ file is updated with the new startlxde-pi session as that is where lightdm login manager looks to decide which desktop should be launched.


Tagged: linux

by Rajeesh at September 17, 2017 05:40 AM

September 14, 2017

Santhosh Thottingal

പുതിയൊരു മലയാളം ഫോണ്ട് നിർമിക്കുന്നതെങ്ങനെ?

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

ഇന്നത്തെ യുണിക്കോഡ് ഫോണ്ടുകൾ ഓപ്പൺടൈപ്പ് സാങ്കേതികവിദ്യ അടിസ്ഥാനമാക്കിയാണു് പ്രവർത്തിക്കുന്നതു്. ഫോണ്ടിൽ അക്ഷരങ്ങളുടെ വരച്ച രൂപങ്ങളും, അക്ഷരങ്ങൾ കൂടിച്ചേരുന്നതിനെ സംബന്ധിച്ച ചിത്രീകരണ നിയമങ്ങളും ആണുള്ളതു്.

എങ്ങനെ തുടങ്ങാം?

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

  1. നിലവിലുള്ള ഫോണ്ടുകളെ വിശദമായി വിലയിരുത്തുക. ഏതൊക്കെ ശൈലികൾ ഉണ്ടു്, വരകളെങ്ങനെ വ്യത്യാസപ്പെട്ടിരിക്കുന്നു, ഏതുതരം ഉപയോഗത്തിനാണ് മുൻതൂക്കം കൊടുക്കുന്നതു്. അക്ഷരങ്ങളെങ്ങനെ വ്യത്യാസപ്പെട്ടിരിക്കുന്നു. ഇവ മനസ്സിലാക്കണം. എനിക്ക് ഇവ മനസ്സിലാക്കാൻ സാധിച്ചതു് ഫോണ്ട് ഡിസൈൻ ചെയ്യുക എന്ന ഉദ്ദേശ്യമില്ലാതെ ഫോണ്ടിന്റെ സാങ്കേതികവശങ്ങളിലും പ്രോഗ്രാമിങ്ങിലും പ്രവർത്തിച്ചാണു് ഞാൻ ഈ മേഖലയിലെത്തിയതു് എന്നതുകൊണ്ടാണ്. അഞ്ചാറുവർഷം അങ്ങനെ നിരന്തരം പല ഫോണ്ടുകളുടെ രൂപങ്ങൾ നമ്മുടെ മുന്നിൽ വന്നപ്പോൾ മേൽപ്പറഞ്ഞ കാര്യങ്ങളിൽ കൂടുതൽ അറിവുനേടാനായി.
  2. അക്ഷരങ്ങൾ, കൂട്ടക്ഷരങ്ങൾ തുടങ്ങിയവയെ സംബന്ധിച്ച  ഭാഷാപരമായ അറിവ് അത്യന്താപേക്ഷിതമാണ്. ഉദാഹരണത്തിന് മ്പ = മ്+പ ആണ്, ന്+പ അല്ല എന്നൊക്കെ കൃത്യമായി അറിഞ്ഞിരിക്കണം.
  3. ഫോണ്ടുകളെക്കാൾ വൈവിധ്യം മലയാളത്തെ സംബന്ധിച്ചിടത്തോളം ഉള്ളതു് വഴിയോരങ്ങളിലെ ചുമരെഴുത്തുകൾക്കാണ്. ഫ്ലക്സുകളുടെ കയ്യേറ്റമുണ്ടെങ്കിലും.

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

ഏതൊക്കെ ടൂളുകൾ ഉപയോഗിക്കണം?

ഫോണ്ട് ഡിസൈനിങ്ങിനു പല സോഫ്റ്റ്‌വെയർ പാക്കേജുകൾ ലഭ്യമാണു്. ഞാനുപയോഗിക്കാറുള്ളതു് ഫോണ്ട്ഫോർജ് ആണു്. ലിനക്സധിഷ്ഠിത ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റങ്ങളിൽ ഇതു് സൗജന്യമായി ലഭ്യമാണ്. വിൻഡൊസിലും മാക്കിലും പ്രവർത്തിക്കുന്ന സ്വതന്ത്ര സോഫ്റ്റ്‌വെയറാണ്. ഫോണ്ട്ഫോർജിൽ അക്ഷരരൂപങ്ങൾ വരക്കാനുള്ള സൌകര്യമുണ്ടെങ്കിലും അവ പ്രയാസമായിട്ടാണ് എനിക്ക് തോന്നിയിട്ടുള്ളതു്. അതുകൊണ്ടു് വരകൾ ഇങ്ക്‌സ്കേപ് ഉപയോഗിച്ചാണ് ചെയ്യാറു്. അങ്ങനെ വരച്ച SVG ഫയലുകൾ ഫോണ്ട് ഫോർജിൽ ഇമ്പോർട്ട് ചെയ്ത് ഉപയോഗിക്കും. ഇങ്ക്‌സ്കേപ്പും എല്ലാ ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റങ്ങളിലും സൌജന്യമായി ലഭ്യമായ സ്വതന്ത്ര സോഫ്റ്റ്‌വെയറാണ്. ഈ ടൂളുകളുടെ ഉപയോഗം പരിശീലിക്കുകതന്നെ വേണം.

ഫോണ്ട്ഫോർജ്

ഫോണ്ട്‌ഫോർജ് പക്ഷേ ടൈപ്പ് ഡിസൈൻ ടൂളുകളിൽ മെച്ചപ്പെട്ടതെന്നു പറയാനാകില്ല. മാക്കിനു മാത്രമുള്ള Glyphs, Robofont തുടങ്ങിയവയൊക്കെയാണു് ഈ മേഖലയിലെ പ്രൊഫഷണലുകൾ ഉപയോഗിക്കുന്നതു്. പക്ഷേ ഇരുപതിനായിരത്തിലധികം രൂപ വിലയുണ്ടു് ഇവയുടെ ലൈസൻസിന്.

എങ്ങനെ വരയ്ക്കാം

പേപ്പറിൽ വരച്ചു് സ്കാൻ ചെയ്ത് അതിന്റെ ഔട്ട്‌ലൈൻ ട്രെയ്സ് ചെയ്യുന്ന രീതി പിന്തുടരുന്ന ടൈപ്പോഗ്രഫേഴ്സ് ഉണ്ടു്. ഞാൻ പേപ്പർ ഉപയോഗിക്കാറില്ല. പൂർണ്ണമായും ഇമേജ് എഡിറ്ററിൽ മൌസ് കൊണ്ടുതന്നെയാണ് മഞ്ജരി, ചിലങ്ക ഫോണ്ടുകൾ വരച്ചതു്. നിങ്ങൾക്കിഷ്ടമുള്ള രീതി പിന്തുടരാം.

വരയ്ക്കുമ്പോൾ ശ്രദ്ധിക്കാൻ ഒരുപാടു കാര്യങ്ങളുണ്ടു്. അക്ഷരങ്ങളുടെ ഉയരം, വരകളുടെ കട്ടി എന്നിവ എല്ലാ അക്ഷരങ്ങൾക്കും ഒരുപോലെ ആവണമല്ലോ. ഗ്രിഡ് മാർക്ക് ചെയ്ത ഒരു ടെമ്പ്ലേറ്റ് ഇമേജിലാണ് ഞാൻ വരയ്ക്കാറ്. അതിൽ ബേസ് ലൈൻ, x-height, Em-size, bearings തുടങ്ങിയ ടൈപ്പൊഗ്രഫി അളവുകൾ എല്ലാം അടയാളപ്പെടുത്തിയിരിക്കും. ഈ വാക്കുകൾ പരിചയമില്ലെങ്കിൽ പേടിക്കേണ്ട, പഠിച്ചെടുക്കാവുന്നതാണ്. പക്ഷേ ഈ ഒരു ലേഖനത്തിൽ ടൈപ്പൊഗ്രഫി അനുപാതങ്ങളെപ്പറ്റി പറയാനുദ്ദേശിക്കുന്നില്ല. ഈ അളവുകൾ ഓരോ ഡിസൈനിനും ഓരോന്നാണ്. അവ എങ്ങനെ തീരുമാനിക്കുന്നു എന്നതു് വളരെ പ്രധാനമാണ്.

Source: https://pica-ae.deviantart.com/journal/Project-Educate-About-Typefaces-293238420

ചിലങ്ക, മഞ്ജരി എന്നിവയുടെ സോഴ്സ് കോഡിനോടൊപ്പം ഉപയോഗിച്ച എല്ലാ svg ഇമേജുകളും കൊടുത്തിട്ടുണ്ടു്. അവ റെഫർ ചെയ്യുന്നതു് മേൽപ്പറഞ്ഞ കാര്യങ്ങൾ മനസ്സിലാക്കാൻ സഹായിച്ചേക്കും.

bezier കർവുകളാണ് ഒരു ഫോണ്ടിലെ അക്ഷരരൂപങ്ങളെ നിശ്ചയിക്കുന്നതു്. പേപ്പറിൽ വരച്ചാലും ട്രേയ്സ് ചെയ്ത് ഫോണ്ടിലേക്ക് ചേർക്കേണ്ടതു് ബെസിയർ കർവുകളാൽ നിർവചിച്ച രൂപമാണ്. വൃത്തിയായി കൃത്യതയോടെ ഈ കർവുകൾ എങ്ങനെ വരക്കാമെന്ന് മിക്ക ഇമേജ് എഡിറ്റിങ്ങ് സോഫ്റ്റ്‌വെയറുകളും പരിശീലിക്കുമ്പോൾ പരിചയിക്കുന്നതാണ്. തുടക്കക്കാർക്ക് വേണമെങ്കിൽ http://bezier.method.ac/ എന്ന ഒരു ഗെയിം ഉപയോഗിച്ചിത് പരിശീലിക്കാം.

മഞ്ജരി ഫോണ്ടിലെ യ എന്ന അക്ഷരത്തിന്റെ വര. ബെസിയർ കർവുകളും ടൈപ്പോഗ്രഫി മെട്രിക്സ് ഗൈഡുകളും ശ്രദ്ധിക്കുക.

അക്ഷരങ്ങളുടെ രൂപകല്പന

Source: https://medium.com/type-talk/the-typography-lettering-and-calligraphy-cousins-d66543b0ff3c

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

ഇവിടെയും നിലവിലെ ഫോണ്ടുകൾ – മലയാളത്തിലൊതുക്കേണ്ടതില്ല – വിശദമായി ആസ്വദിക്കുകയും അനലൈസ് ചെയ്യുകയും ചെയ്യുന്നതുപകാരപ്പെടും. എന്തായാലും മലയാളത്തിൽ വളരെ ചുരുക്കം ഫോണ്ടുകളേ ഉള്ളൂ എന്നതുകൊണ്ടു് അനന്യമായ ഒരു ആശയം കണ്ടുപിടിക്കാൻ ബുദ്ധിമുട്ടേണ്ടിവരില്ല. ഇംഗ്ലിഷ് ഫോണ്ട് ഒക്കെ ചെയ്യുന്നവർ പറയാറുണ്ടു്, ആ ഭാഷയിലെ ഡിസൈൻ വളരെ സാചുറേറ്റഡ് ആയതുകൊണ്ടു് എങ്ങനെ വരച്ചാലും അതുപോലത്തെ ഒന്ന് വേറേ ആരെങ്കിലും ചെയ്തിട്ടുണ്ടാവുമെന്ന്.

എന്തൊക്കെ വരയ്ക്കണം?

മലയാളം യുണിക്കോഡ് ബ്ലോക്കിൽ നിലവിൽ നൂറോളം അക്ഷരങ്ങളുണ്ട്. ഇവയെല്ലാം വരച്ചാൽ മാത്രം പോര. ഇവ ചേർന്നുള്ള കൂട്ടക്ഷരങ്ങൾ വരക്കണം. മഞ്ജരി ഫോണ്ടിൽ മലയാളത്തിനു മാത്രമായി അറുനൂറോളം ഗ്ലിഫുകളുണ്ടു്.  മഞ്ജരി താരതമ്യേന കൂട്ടക്ഷരങ്ങൾ കുറഞ്ഞ ഫോണ്ടാണ്. രചനയിൽ ഇതു് ആയിരത്തിനപ്പുറം കടക്കും. ഇത്രയും ഗ്ലിഫുകൾ ഉണ്ടെങ്കിലും ഏകദേശം 200-250 എണ്ണം ആണ് ഡിസൈൻ ചെയ്യേണ്ടതു്, ബാക്കിയുള്ളവ മിക്കവാറും ഇമേജ് എഡിറ്ററിന്റെ സഹായത്തോടെ കൂട്ടിച്ചേർക്കാവുന്നതാണ്.

സാധാരണ മലയാളം ഫോണ്ടുകളിൽ ബേസിക് ലാറ്റിൻ ഗ്ലിഫുകളും ചേർക്കാറുണ്ട്. മലയാളം അക്ഷരങ്ങളുടെ ശൈലിയുമായി മാച്ചാവുന്ന ഇംഗ്ലീഷ് അക്ഷരങ്ങളാണ് വരയ്ക്കാറ്. ഇതു് ഇംഗ്ലീഷ് ചെറിയക്ഷരം വലിയക്ഷരങ്ങളിൽ ഒതുങ്ങില്ല കെട്ടോ, ചിഹ്നങ്ങൾ, അക്കങ്ങൾ, കറൻസികൾ, ഡയാക്രിറ്റിക് മാർക്കുകൾ ഒക്കെ വേണം. മഞ്ജരി ഫോണ്ടിൽ ഇതെല്ലാം ചേർന്ന് 850 ഗ്ലിഫുകളുണ്ടു്.

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

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

മഞ്ജരിയാണെന്നു തോന്നുന്നു ഇത്തരത്തിൽ 3 സ്റ്റൈൽ വേരിയന്റുകൾ ആദ്യം മലയാളത്തിൽ കൊണ്ടുവന്നതു്. ബാക്കിയുള്ള മിക്ക ഫോണ്ടുകളും ഒരു ശൈലിയിൽ ഒരു തിക്ൿനസ്സിൽ ഉള്ള ഫോണ്ടാണ്. രചനയ്ക്ക് ബോൾഡ്, റെഗുലർ വകഭേദങ്ങളുണ്ടു്.

ഒന്നിലധികം വകഭേദങ്ങളുള്ള ഒരു ഫോണ്ട് ഫാമിലി രൂപകല്പന ചെയ്യുന്നതു് വളരെ സങ്കീർണ്ണവും സമയമെടുക്കുന്നതുമായ പ്രൊജക്ടാണെന്നു പറയേണ്ടതില്ലല്ലോ.

പ്രോഗ്രാമിങ്ങ് അറിയേണ്ടതുണ്ടോ?

ടൈപോഗ്രാഫർ വരച്ചു തയ്യാറാക്കിയ അക്ഷരരൂപങ്ങളെ ഒരു ഫോണ്ടാക്കി മാറ്റുന്നതു് ഫോണ്ടിന്റെ ചിത്രീകരണനിയമങ്ങളാണു്. ഓപ്പൺടൈപ്പ് സ്പെസിഫിക്കേഷൻ അനുസരിച്ചുള്ള ഇത്തരം നിർദ്ദേശങ്ങൾ പ്രോഗ്രാമിങ്ങ് കഴിവുള്ളവരാണ് തയ്യാറാക്കുന്നതു്. എന്നിരിക്കലും ഒരിക്കൽ തയ്യാറാക്കിയാൽ പുനരുപയോഗിക്കാം എന്ന മെച്ചമുണ്ടു്. സ്വതന്ത്ര മലയാളം കമ്പ്യൂട്ടിങ്ങിന്റെ ഫോണ്ടുകളിലെ ഈ ചിത്രീകരണനിയമം പുനരുപയോഗിക്കാവുന്ന രീതിയിൽ തയ്യാറാക്കിയതാണ്. ഒരു പ്രത്യേക രീതിയിൽ അക്ഷരരൂപങ്ങൾക്കു പേരിട്ടാൽ വളരെക്കുറച്ചു സമയം കൊണ്ടുതന്നെ ഫോണ്ട് നിർമാണത്തിലെ ഈ ഭാഗം ചെയ്തു തീർക്കാം. ഈ നിർദ്ദേശങ്ങൾ പക്ഷേ വർഷങ്ങളെടുത്തു് തയ്യാറാക്കിയതാണെന്നോർക്കണം. ഇതുകൂടാതെ സ്വതന്ത്ര മലയാളം കമ്പ്യൂട്ടിങ്ങ് ഫോണ്ടുകളുടെ സോഴ്സ് കോഡിൽ ഓട്ടോമാറ്റിക് ഫോണ്ട് കമ്പൈൽ ചെയ്യാനും, പല ഫോർമാറ്റുകളിൽ തയ്യാറാക്കാനും ഉള്ള സ്ക്രിപ്റ്റുകളും ഉണ്ടു്. ഇവയും പുനരുപയോഗിക്കാം. ഇങ്ങനെ നിർമിക്കുന്ന പുതിയ ഫോണ്ടുകൾ സ്വതന്ത്ര ലൈസൻസിലുള്ള ഫോണ്ടുകളാവണം എന്നു പ്രത്യേകം പറയേണ്ടതില്ലല്ലോ. ഇതിനെപ്പറ്റി SMC യുടെ ബ്ലോഗിൽ ഒരു ലേഖന പരമ്പര ഉണ്ടു്. വായിക്കുന്നതു് നന്നാവും.

എത്ര സമയമെടുക്കും?

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

പൊതുവായ ഉപയോഗത്തിനുള്ള ഫോണ്ടുകൾ റിലീസ് ചെയ്ത ശേഷം വിവിധ കമ്പ്യൂട്ടിങ്ങ് ഉപകരണങ്ങൾക്കു വേണ്ടിയും പുതുതായിറങ്ങുന്ന ഓപ്പറേറ്റിങ്ങ് സംവിധാനങ്ങൾക്കു വേണ്ടിയും ടെസ്റ്റ് ചെയ്യുകയും പുതുക്കിക്കൊണ്ടിരിക്കുകയും വേണം. ഇതു് ഒരുപാടു സമയവും ഒരുപാടുവർഷത്തെ തുടർച്ചയായ മെയിന്റനൻസും ആവശ്യപ്പെടുന്ന പ്രവൃത്തിയാണ്. ഒരു സോഫ്റ്റ്‌വെയർ പോലെ ഫോണ്ടുകളുടെ പുതിയ പതിപ്പുകൾ റിലീസ് ചെയ്യുന്നു. ഉദാഹരണത്തിനു് സ്വതന്ത്ര മലയാളം കമ്പ്യൂട്ടിങ്ങ് പുറത്തിറക്കിയ എല്ലാ ഫോണ്ടുകളിലും സജീവമായ മെയിന്റനൻസ് നടക്കുന്നതും പുതിയ പതിപ്പുകൾ ഇറക്കുന്നതും കാണാൻ സാധിക്കും. റിലീസ് ചെയ്യുന്നതോടെ തീരുന്നതല്ല ഫോണ്ട് നിർമാണമെന്നർത്ഥം.

പൊതു ഉപയോഗത്തിനുള്ള നല്ലൊരു ഫോണ്ടെന്നാലെന്താണ്?

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

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

ചെറിയൊരു പരിശീലനം

ഇത്രയൊക്കെ വായിച്ചാലും പുതിയൊരു ഫോണ്ട് ചെയ്യാൻ മാത്രം ആത്മവിശ്വാസം ഉണ്ടാവില്ലെന്നറിയാം. അതിനാൽ ഒരു കൈ നോക്കാൻ ചെറിയൊരു പരിശീലനം താഴെക്കൊടുക്കുന്നു. കാര്യങ്ങൾ വേഗത്തിലാക്കാൻ വേണ്ടി നമ്മൾ ചെയ്യാൻ പോകുന്നതു് നിലവിലെ ഒരു ഫോണ്ടെടുത്തു് അതിലെ ചില അക്ഷരങ്ങൾ മാറ്റിവരച്ചു് കമ്പൈൽ ചെയ്തു ഇൻസ്റ്റാൾ ചെയ്തു് ഉപയോഗിച്ചുനോക്കലാണ്. അധികം പഴയതല്ലാത്ത ഒരു ലിനക്സ് ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റം നിങ്ങൾ ഉപയോഗിക്കുന്നുവെന്നും അതിലെ ടെർമിനൽ അത്യാവശ്യം ഉപയോഗിക്കനറിയാം എന്നുമുള്ള വിശ്വാസത്തോടെ. (സ്വതന്ത്ര സോഫ്റ്റ്‌വെയറുപയോഗിച്ചുള്ള ഫോണ്ട് രൂപകല്പനയേ എനിക്ക് ഏറ്റവും പരിചയം. അതുകൊണ്ടാണ്).

  1. ആദ്യപടിയായി നിലവിലെ ഒരു ഫോണ്ടിന്റെ സോഴ്സ് കോഡ് എടുത്തു് കമ്പൈൽ ചെയ്യാൻ പഠിക്കലാണ്. ഇതിനായി https://github.com/smc/chilanka എന്ന ചിലങ്ക ഫോണ്ടിന്റെ റിപ്പോസിറ്ററിയിൽ പോയി Clone or Download എന്ന ബട്ടണിൽ ക്ലിക്കു ചെയ്ത് Zip ആയി സോഴ്സ് കോഡ് ഡൌൺലോഡ് ചെയ്യുക. അതൊരു ഫോൾഡറിലേക്ക് തുറന്നിടുക(extract)
  2. നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ താഴെപ്പറയുന്ന സോഫ്റ്റ്‌വെയർ പാക്കേജുകൾ ഇൻസ്റ്റാൾ ചെയ്യുക:
    1. fontforge
    2. python-fontforge
    3. build-essential
    4. python-pip
  3. അതിനുശേഷം ചിലങ്ക കോഡുള്ള ഫോൾഡറിൽ നിന്ന് താഴെപ്പറയുന്ന കമാന്റ് റൺ ചെയ്യുക. pip install -r tools/requirements.txt
  4. ശേഷം make all എന്ന കമാന്റ് റൺ ചെയ്യുക. അപ്പോൾ test എന്ന ഫോൾഡറിൽ ഒരു പിഡിഎഫ് ഫയൽ കാണാം. അതിൽ ഇപ്പോൾ നിങ്ങൾ കമ്പൈൽ ചെയ്ത ഫോണ്ട് ഉപയോഗിച്ച് കുറേ സാമ്പിൾ മലയാളം റെൻഡർ ചെയ്തിരിക്കുന്ന കാണാം.

ഇപ്പോൾ നിങ്ങൾ ഒരു ഫോണ്ട് വിജയകരമായി കമ്പൈൽ ചെയ്ത് ടെസ്റ്റു ചെയ്തു. ഫോൾഡറിൽ കാണുന്ന Chilanka-Regular.ttf ഫയൽ ഇൻസ്റ്റാൾ ചെയ്യുകയുമാവാം. ജിഞ്ജാസുക്കൾക്ക് ഇപ്പോൾ എന്താ സംഭവിച്ചതു് എന്നറിയാൽ ഫയലുകളൊക്കെ തുറന്നു നോക്കാം. Chilanka-Regular.sfd എന്ന ഫയൽ ഫോണ്ട് ഫോർജ് കൊണ്ടു തുറന്നാൽ ചിലങ്ക ഫോണ്ടിലെ എല്ലാ ഗ്ലിഫുകളും കാണാം. features എന്ന ഫോൾഡറിൽ ചിത്രീകരണനിയമങ്ങൾ കോഡ് ചെയ്തതും കാണാം.

ഇനി നമ്മൾ ഇതിലെ ഏതെങ്കിലും ഒരു അക്ഷരം മാറ്റി വരയ്ക്കാൻ പോവുകയാണ്. glyphs എന്ന ഫോൾഡറിൽ കാണുന്ന നൂറുകണക്കിനു svg ഫയലുകളിലാണ് ചിലങ്ക ഫോണ്ടിന്റെ അക്ഷരങ്ങൾ വരച്ചിട്ടുള്ളതു്. അതിലേതെങ്കിലും ഒന്നു തുറന്ന് എഡിറ്റ് ചെയ്യാം. പുതുതായി ഒന്നു വരയ്ക്കണമെങ്കിൽ template.svg എന്ന ഫയൽ തുറന്ന് അതിലെ ഗ്രിഡ് ഒക്കെ ഉപയോഗിച്ച് വരയ്ക്കാം. ഇങ്ക് സ്കേപ്പ് ഉപയോഗിക്കാം. അല്ലെങ്കിൽ വേറേതെങ്കിലും നിങ്ങൾക്കറിയുന്ന svg എഡിറ്റർ ഉപയോഗിക്കാം. ക എന്ന ഒരൊക്ഷരം ഇങ്ക്‌സ്കേപിൽ വരക്കുന്ന ഒരു വീഡിയോ ഒരുദാഹരണത്തിന് വേണ്ടി ഞാൻ കുറേ കാലം മുമ്പ് യുട്യൂബിൽ ഇട്ടിട്ടുണ്ട്. ശ്രദ്ധിക്കേണ്ട ഒരു കാര്യം സ്ട്രോക്കുകളെ പാത്ത് ആക്കണം വരച്ചു കഴിഞ്ഞാൽ എന്നതാണ്. അങ്ങനെ വരച്ച ഇമേജ് സെലക്ട് ചെയ്ത് കോപി ചെയ്ത് ഫോണ്ട് ഫോർജിൽ തുറന്നിരിക്കുന്ന അതേ അക്ഷരത്തിൽ കൊണ്ടുപോയി പേസ്റ്റ് ചെയ്യുക. ഫോണ്ട്ഫോർജിൽ ആ മാറ്റം സേവ് ചെയ്യണം. എന്നിട്ട് make all എന്ന കമാന്റ് അടിക്കുക. നേരത്തെ പറഞ്ഞ പിഡിഎഫിൽ നിങ്ങൾ ഇപ്പോൾ മാറ്റിവരച്ച അക്ഷരങ്ങൾ കാണും!.

മേൽ വിവരിച്ച പരിശീലനം അത്ര എളുപ്പമല്ല എന്നറിയാം. ടൂളുകൾ ഉപയോഗിക്കാൻ പരിശീലിക്കേണ്ടതുണ്ട്, വരയ്ക്കാൻ പരിശീലിക്കേണ്ടതുണ്ടു്, ടെർമിനൽ ഉപയോഗിക്കാൻ അറിഞ്ഞിരിക്കണം. അങ്ങനെ കുറേ കടമ്പകളുണ്ടു്. പക്ഷേ ഈ ഓരോ സ്റ്റെപ്പും പരിശീലിക്കാതെ നിവൃത്തിയില്ല. അതിനു നിങ്ങൾ കുറേ സമയവുമെടുത്തേക്കും. നിങ്ങൾ ഇതിൽ വിജയിച്ചില്ലെങ്കിലും സങ്കടപ്പെടേണ്ട. വർഷങ്ങളുടെ പരിശീലനവും നിരീക്ഷണവും ശരാശരിയിൽ കവിഞ്ഞ കമ്പ്യൂട്ടർ പ്രയോഗത്തിലുള്ള കഴിവുകളും ഫോണ്ട് നിർമാണത്തിനാവശ്യമുണ്ടെന്നു മനസ്സിലായാലും മതി.

ചുരുക്കത്തിൽ

  1. അക്ഷരങ്ങളെ ടൈപ്പൊഗ്രഫി എന്ന കാഴ്ചപ്പാടിൽ നീരിക്ഷിക്കുക, ആസ്വദിക്കാൻ ശീലിക്കുക. നിലവിലെ ഫോണ്ടുകളും അവയുടെ സോഴ്സ് കോഡും പഠിക്കുക.
  2. വിവിധ തരം വരകൾ പ്രാക്ടീസ് ചെയ്യുക – പേപ്പറിലാവാം ഇമേജ് എഡിറ്ററിലാവാം
  3. നല്ല ഒരു ഡിസൈൻ സങ്കൽപം ഉണ്ടാക്കിയെടുക്കുക. പൂർണ്ണമായ ഒരു ഫോണ്ടു് എന്ന ലക്ഷ്യത്തിലേക്ക് ആ സങ്കല്പം യോജിക്കുന്നതാണോയെന്നാലോചിക്കുക. കുറച്ച് സാമ്പിളുകൾ വരച്ചുനോക്കുക.
  4. നല്ലൊരു ഫോണ്ട് എഡിറ്റർ/ഇമേജ് എഡിറ്റർ തിരഞ്ഞെടുക്കുക. ഫോണ്ട് ടൂൾകിറ്റായി നിലവിലെ സ്വതന്ത്ര ഫോണ്ടുകളുടെ സോഴ്സ് കോഡ് ഉപയോഗിക്കുക – അതോടൊപ്പം ഫോണ്ട് കമ്പൈൽ ചെയ്യാനും ടെസ്റ്റ് ചെയ്യാനുമുള്ള ടൂളുകൾ കിട്ടുന്നു. ലൈസൻസിങ്ങ് ശ്രദ്ധിക്കുക.
  5. അക്ഷരങ്ങൾ വരച്ചു തുടങ്ങുക. ഫോണ്ട് എഡിറ്ററിൽ ചേർക്കുക. പല വട്ടം മാറ്റിവരയ്ക്കേണ്ടിവരും.
  6. പല രീതിയിലുള്ള ടെസ്റ്റുകൾ ചെയ്യുക.
  7. ഫോണ്ട് റിലീസ്
  8. മെയിന്റനൻസ്

സഹായം വേണമെങ്കിൽ

സീരിയസ്സായി ഒരു ഫോണ്ടിന്റെ നിർമാണത്തിലേർപ്പെടാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ സഹായിക്കുന്നതിൽ സന്തോഷമേയുള്ളൂ. സ്വതന്ത്ര ലൈസൻസിലുള്ള ഫോണ്ടായിരിക്കണം എന്ന ഒറ്റ നിബന്ധനയേ എനിക്കുള്ളൂ. ചോദിക്കാൻ മടിക്കേണ്ട.

by Santhosh Thottingal at September 14, 2017 04:56 PM

September 13, 2017

Santhosh Thottingal

ദൈവങ്ങളുടെ ദ്വീപിൽ ഒരു ഇടവേള

വിനോദയാത്രകൾ ജീവിതത്തിന്റെ അജണ്ടയിലങ്ങനെ കാര്യമായുണ്ടായിരുന്നവയല്ല. താത്പര്യമില്ലാത്തതുകൊണ്ടല്ല, ധൈര്യപ്പെടാത്തതുകൊണ്ട്. കാലം ചില കോലങ്ങളൊക്കെ കെട്ടി ചിലപ്പോഴൊക്കെ നമ്മളെ വല്ലാതെ മിടുക്കരാക്കിക്കളയും. അങ്ങനെയൊരു നിമിഷത്തിലായിരുന്നു പതിവുകൾ വിട്ടു ബാലിയാത്രയ്ക്കൊരു ടിക്കറ്റ് ഞങ്ങളെടുത്തത്. ഒരു മാസത്തെ കാത്തിരുപ്പായിരുന്നു പിന്നെ. കാണാനുള്ള കാഴ്ചകളുടെ ട്രെയിലർ ഷോട്ടുകൾ യാത്രാസഹായികളായ വെബ്സൈറ്റുകൾ ദിവസേന നിരത്തിക്കൊണ്ടിരുന്നു.

ബാലിയുടെ സ്ഥാനം

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

വിസ ഓൺ അറൈവൽ

ടൂറിസം മുഖ്യവ്യവസായം ആയതുകൊണ്ടു തന്നെ ഇന്ത്യ ഉൾപ്പെടെ ഒട്ടുമിക്ക രാജ്യക്കാർക്കും ഇന്തോനേഷ്യയിലേയ്ക്ക് മുൻകൂർ വിസ സ്റ്റാമ്പിങ്ങ് ആവശ്യമില്ല. ബാലിയുടെ തലസ്ഥാനനഗരമായ ദെൻപസർ വിമാനത്താവളത്തിൽ എത്തിയതിനുശേഷം വിസ സ്റ്റാമ്പിങ്ങിനായുള്ള നിര സാമാന്യം നീണ്ടതു തന്നെയാണ്. ഇന്ത്യക്കാർക്ക് അതിനു പ്രത്യേക ഫീസൊന്നും ഇല്ലതാനും. സ്റ്റമ്പിങ്ങും കസ്റ്റംസ് ക്ലിയറൻസും കഴിഞ്ഞ് പുറത്തെത്താൻ ഒരുമണിക്കൂറോളമെടുത്തു. എയർഏഷ്യ വിമാനത്തിൽ കോലാലംപുർ വഴിയുള്ള കണക്ഷൻ ആയിരുന്നു. പക്ഷേ മലേഷ്യൻ ട്രാൻസിറ്റ് വിസയും ആവശ്യമായി വന്നില്ല.

ഇന്ത്യൻ രൂപയും ഇന്തോനേഷ്യൻ രൂപയും

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

ബാലിയിലെ വൈകിയ ലാൻഡിങ്ങിനും തുടർപ്പരിപാടികൾക്കും ശേഷം ഇന്ത്യൻ രൂപ മാറ്റാനായി അന്വേഷണം തുടങ്ങിയപ്പോഴാണ് നമ്മുടെ കയ്യിലുള്ള ഇന്ത്യൻ നോട്ട് സ്വീകരിക്കുന്ന സ്ഥാപനങ്ങളൊന്നും അവിടെ ഇല്ല എന്ന് ഞെട്ടലോടെ തിരിച്ചറിഞ്ഞത്. ഒരു രാത്രിപ്രസംഗത്തിലൂടെ അസാധുവാകാനിടയുള്ള കടലാസുകഷണങ്ങളെ എന്തുവിശ്വസിച്ചുവാങ്ങിവെക്കുമെന്ന ചിന്തകൊണ്ടാണോ ഇന്ത്യൻ രൂപ സ്വീകരിക്കാത്തതെന്നൊക്കെ സംശയിച്ചുകൊണ്ട് മുന്നോട്ടു നടന്നു. ഒടുവിൽ വിമാനത്താവളത്തിൽ ATMൽ കയറി പണമെടുക്കാൻ തന്നെ തീരുമാനിച്ചു. പിൻവലിക്കാനുള്ള തുക തെരഞ്ഞെടുക്കുമ്പോൾ നാണയവിനിമയനിരക്ക് അറിയില്ലയെങ്കിൽ ഒന്നുകൂടി ഞെട്ടേണ്ടി വന്നെനെ. ഒരുലക്ഷം മുതൽ പത്തുലക്ഷം രൂപവരെയുള്ള പല ഓപ്ഷനാണ് ATM മെഷീൻ നമുക്കു തരിക. ഒരു ഇന്ത്യൻ രൂപ ഏകദേശം ഇരുന്നൂറ് ഇന്തോനേഷ്യൻ രൂപയുടെ മൂല്യത്തിനൊപ്പം വരും. അതായത് അവിടെ പത്തുലക്ഷം പിൻവലിക്കുമ്പോൾ അയ്യായിരം ഇന്ത്യൻ രൂപയാണ് അക്കൗണ്ടിൽ നിന്നും കുറവുചെയ്യപ്പെടുക.

ഇന്തോനേഷ്യൻ കറൻസി

വിമാനത്താവളത്തിനു പുറത്തിറങ്ങിയപ്പോളും വീണ്ടും മണിചേഞ്ചേഴ്സിനെ പരതിക്കൊണ്ടിരുന്നു. ഇന്ത്യൻറുപ്പി എന്ന ബോർഡ് കണ്ട് ചെന്നു പണമെണ്ണിക്കൊടുത്തുകഴിഞ്ഞാണ് വിനിമയനിരക്ക് വെറും 135 ഇന്തോനേഷ്യൻ രൂപമാത്രമാണെന്ന് അറിയുന്നത്. ഇത്രയും നഷ്ടത്തിൽ കൈമാറണ്ട എന്നു തീരുമാനിച്ച് പണം തിരികെ വാങ്ങി ആ കച്ചവടം അങ്ങൊഴിവാക്കി. അതിനിടെ വേണമെങ്കിൽ 150 വരെ കൂട്ടിത്തരാമെന്ന വാഗ്ദാനവുമുണ്ടായി. തെരുവുകച്ചവടത്തിൽ വിലപേശേണ്ടിവരുമെന്ന് വായിച്ചറിഞ്ഞിരുന്നെങ്കിലും നാണയവിനിമയത്തിൽ തന്നെ അതുണ്ടായതോടെ വല്ലാതെ തട്ടിപ്പുമണത്തതുകൊണ്ട് കൂടുതൽ അവിടെ നിന്നില്ല.

പിന്നീടുള്ള ദിവസങ്ങളിലൊക്കെ പല ടൂറിസ്റ്റ് സ്പോട്ടുകളിലും മണി ചേഞ്ചിങ്ങ് സ്ഥാപനങ്ങൾ കണ്ടെങ്കിലും മിക്കയിടത്തും ഇന്ത്യൻ രൂപ സ്വീകരിക്കുന്നുണ്ടായിരുന്നില്ല. ഇനി സ്വീകരിക്കുന്ന അപൂർവ്വം സ്ഥാപനങ്ങളിലൊക്കെ 150 ഇന്തോനേഷ്യൻ രൂപയ്ക്ക് മുകളിൽ മൂല്യവും കിട്ടില്ല. ATMകളാണിക്കാര്യത്തിൽ വിശ്വസ്തസ്ഥാപങ്ങൾ. 188 ഇന്തോനേഷ്യൻ രൂപവരെയൊക്കെ വിനിമയമൂല്യം അവിടെ ലഭിയ്ക്കും. അതുകൊണ്ട് യാത്രയ്കായി കരുതിയ ഇന്ത്യൻ കറൻസി നോട്ടുകൾ അതുപോലെ തിരിച്ചുകൊണ്ടുവന്നു.

ഹൃദയംകൊണ്ട് സ്വീകരിച്ചവർ

ബന്ധുക്കളോ സുഹൃത്തുക്കളോ ഒന്നുമില്ലാത്ത ഒരു നാട്ടിൽ യാത്രാക്ഷീണത്തോടെ ചെന്നെത്തുമ്പോൾ നമ്മളെ സ്വാഗതം ചെയ്യുന്നവരാരായാലും അവരോടു ഒരു പ്രത്യേക മമതയുണ്ടാകും. എയർപോർട്ടിൽ നിന്നും ഹോട്ടലിലേയ്ക്കുള്ള ടാക്സി മുൻകൂട്ടി ബുക്ക് ചെയ്തിട്ടാണ് യാത്രതുടങ്ങിയത്. ബാലിയിലെ വൈകിയ ലാൻഡിങ്ങിനും ചെക്കൗട്ട് ചടങ്ങുകൾക്കും ശേഷം പുറത്തെത്തിയപ്പോൾ പ്രതീക്ഷിച്ചതിലും ഒന്നര മണിക്കൂറിലേറെ വൈകിയിരുന്നു.

ദെൻപസർ എയർപോർട്ട്

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

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

ഹോട്ടലിലെത്തിയപ്പോൾ രാത്രി പതിനൊന്നുമണിയും കഴിഞ്ഞിരുന്നു. ഇനി പുറത്തുപോയി കഴിക്കുവാനുള്ള മൂഡൊന്നും ഞങ്ങൾക്കുണ്ടായിരുന്നില്ല.. അവിടെയുള്ള പാതിരാത്രിവരെയുള്ള റെസ്റ്റോറന്റ് പ്രവർത്തനം അവസാനിപ്പിക്കാനൊരുങ്ങുകയായിരുന്നു. അന്നത്തെ അവസാനത്തെ ഓർഡർ ഞങ്ങൾക്കായി ഒരുക്കി അവരും ആദ്യത്തെ ഇന്തോനേഷ്യൻ രുചി നാവിലേറ്റി ഞങ്ങളും ആ നീണ്ട ദിവസം പൂർത്തിയാക്കി.

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

ഞങ്ങൾ ആദ്യയാത്രയ്ക്കായി Uber Taxi സർവീസാണുപയോഗിച്ചത്. പക്ഷേ യൂബർ ആപ്പിൽ കണ്ട വാഹനമായിരുന്നില്ല ഞങ്ങളെ കൂട്ടാൻ ഹോട്ടലിലെത്തിയത്. സംശയിക്കേണ്ട, വണ്ടി കേടായതുകൊണ്ട് താൻ മറ്റൊരു വാഹനമുപയോഗിച്ചതാണെന്ന് ഡ്രൈവർ പറഞ്ഞു. ബാലിയുടെ തെക്കൻ മുനമ്പിലൊന്നായ ഉലുവാട്ടു ക്ഷേത്രവും അവിടുത്തെ കെചക് നൃത്തവുമായിരുന്നു അന്നത്തെ പ്ലാൻ. തിരിച്ചുള്ള ട്രിപ്പിന് താൻ കാത്തുനിൽക്കാമെന്നയാൾ പറഞ്ഞു. ഇതൊന്നും നമ്മുടെ നാട്ടിൽ പതിവില്ലാത്തതുകൊണ്ട് ആകെ കൺഫ്യൂഷനായി. ഇംഗ്ലീഷ് അത്ര വശമില്ലെങ്കിലും അയാൾ ഞങ്ങളോട് സംസാരിക്കുവാൻ ശ്രമിച്ചുകൊണ്ടേയിരുന്നു.

ഉലുവാട്ടൂ ക്ഷേത്രം

പുട്ടു എന്നായിരുന്നു അദ്ദേഹത്തിന്റെ പേര്. I am the number one in Bali എന്നൊക്കെ പറഞ്ഞത്, ബാലിനീസ് കുടുംബത്തിലെ മുതിർന്ന കുട്ടിയ്ക്കുള്ള പേരാണ് തന്റേതെന്നാണെന്നൊക്കെ മനസ്സിലാക്കാൻ ഞങ്ങൾക്കത്ര ബുദ്ധിമുട്ടേണ്ടി വന്നില്ല. അതിനിടയിൽ Uber is very dangerous in Bali എന്നൊക്കെ പറഞ്ഞപ്പോൾ ഒന്നു പേടിച്ചു. പിന്നെ വഴിയിലെ ചില ഫ്ലക്സ് ബോർഡുകളും കൂടി കണ്ടപ്പോഴാണ് കാര്യം മുഴുവനും മനസ്സിലായത്. ലോക്കൽ ടാക്സികളും ഓൻലൈൻ ടാക്സികളും തമ്മിൽ നമ്മുടെ കൊച്ചിയിലൊക്കെ ഉണ്ടായതിനു സമാനമായ ക്ലാഷുകൾ അവിടെയും ഉണ്ട്. ടൗണുകളിലെ ഹോട്ടലിൽ നിന്നുള്ള പിക്കപ്പ് അനുവദിക്കുമെങ്കിലും വിദൂരസ്ഥമായ ടൂറിസ്റ്റുസ്പോട്ടുകളിൽ നിന്നുള്ള പിക്കപ്പിന് ഓൺലൈൻടാക്സികളെ അനുവദിക്കില്ല എന്നതായിരുന്നു കണ്ട ഫ്ലക്സ്. പുട്ടു ഞങ്ങളുടെ പേഴ്സണൽ ഡ്രൈവറായി അവിടെ കാത്തുനിന്നതുകൊണ്ടു മാത്രമാണ് തിരികെ ഹോട്ടലിലേയ്ക്കുള്ള യാത്ര സുഖമായി നടന്നത്. ഇനി യാത്രയുണ്ടെങ്കിൽ വിളിയ്ക്കുവാൻ നമ്പർ ഒക്കെ തന്നാണ് പുട്ടു മടങ്ങിയത്.

ഊബർ ടാക്സിക്കെതിരെയുള്ള ഫ്ലക്സ് ബോർഡ്

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

സീഫുഡ് റെസ്റ്റോറന്റിലെ ഗായകസംഘം

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

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

രണ്ടുദിവസത്തിനപ്പുറമുള്ള ചെറിയ യാത്രയ്ക്ക് ഞങ്ങൾ പുട്ടുവിനെ വീണ്ടും കൂടെ കൂട്ടി. ടയർ പഞ്ചറായി എത്താമെന്നേറ്റ സമയത്തിന് വരാൻ പറ്റാതെ പുട്ടു വിഷമിച്ചു. ഞങ്ങൾ കാത്തിരിക്കാമെന്നു പറഞ്ഞു. മുക്കാൽ മണിക്കൂർ വൈകിത്തുടങ്ങിയ യാത്രയാണെങ്കിലും തനാലോട്ടിലെ മറക്കാനാവാത്ത ഒരു സൂര്യാസ്തമയക്കാഴ്ചയിൽ ആ ദിവസവും മനോഹരമായി.

പുട്ടുവിനും വയാനും ദിയാസിനുമൊപ്പം ഒരു പടം പോലും എടുത്തില്ലല്ലോയെന്ന സങ്കടം ഇപ്പോൾ ഇതെഴുതുമ്പോൾ ബാക്കി നിൽക്കുന്നു.

ഭാഷ : എഴുത്ത്, ലിപി, വർത്തമാനം

ജനസാമാന്യത്തിന്റെ ഭാഷ ബാലിനീസും, ഇന്തോനേഷ്യനുമാണ്. പക്ഷേ ടൂറിസം മിക്കവരേയും ഇംഗ്ലീഷുപറയാൻ പഠിപ്പിച്ചിരിക്കുന്നു. നമുക്കിടപഴകേണ്ടി വരുന്ന കച്ചവടക്കാരും, റെറ്റോറന്റ് ജീവനക്കാരും, ഡ്രൈവർമാരുമെല്ലാം അത്യാവശ്യം ഇംഗ്ലീഷ് സംസാരിക്കും. അതുകൊണ്ട് ഭാഷ ഒരു ബുദ്ധിമുട്ടായതേയില്ല.

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

ബാലിനീസ് അക്ഷരങ്ങൾ

കടലിലെ ഓളം പോലെ തുള്ളിത്തുളുമ്പുന്ന രൂപമാണ് ബാലിനീസ് ലിപിയ്ക്ക്. പക്ഷേ ആ ലിപി അപൂർവ്വമായേ കാണാൻ കിട്ടൂ. ക്ഷേത്രത്തിലെ കൊത്തിവെച്ച കല്ലുകളിൽ, സ്ഥലപ്പേരെഴുതിയ ചില ബോർഡുകളിൽ ഒക്കെ കാണുകയുണ്ടായി. ബ്രാഹ്മിലിപിയിൽ നിന്നും ഉരുത്തിരിഞ്ഞു വന്നതുകൊണ്ട് ബാലിനീസ് അക്ഷരങ്ങൾ ഒന്നു സൂക്ഷിച്ചുനോക്കിയാൽ നമ്മുടെ ലിപിയുമായി താരതമ്യപ്പെടുത്തി വായിക്കാൻ പറ്റുമെന്നൊക്കെ സന്തോഷിന്റെ തിയറി കേട്ടുവെന്നല്ലാതെ എനിക്കതിനു പറ്റിയില്ല. ഒരു ബോർഡൊക്കെ വായിക്കാൻ ശ്രമിച്ച് സന്തോഷ് വയാനെ ഞെട്ടിക്കുകയും ചെയ്തു. വയാന് അതെല്ലാം വായിക്കാനൊന്നും അറിയില്ലെന്നും പറഞ്ഞു. സ്കൂളിൽ ആ ലിപി പഠിപ്പിക്കുന്നുണ്ടെങ്കിലും നിത്യജീവിതത്തിൽ അതുപയോഗിക്കേണ്ടി വരാറില്ലാത്തതുകൊണ്ട് മറന്നുവത്രെ.

സ്ഥലപ്പേര് ഇംഗ്ലീഷിലും ബാലിനീസിലും

ഇന്ത്യയിൽ നിന്നാണെങ്കിൽ, ഹിന്ദുവാണൊ എന്നൊരു ചോദ്യം ഗൈഡുമാരിൽ നിന്നുമുണ്ടാകും. ആണെങ്കിൽ താനുമതേയെന്ന് പറഞ്ഞ് ആഹ്ലാദം പങ്കുവെയ്ക്കും. ഹിന്ദുസംസ്കാരത്തിന്റെ വേരുകൾ ഇന്ത്യയിൽനിന്നായതുകൊണ്ട് തായ്‌വേരിനോടുള്ള മമതയാണവിടെ കാണുക. സംസ്കൃതം കൂടി അറിയാമെങ്കിൽ ബഹുമാനം കൂടും, ഉറപ്പ്.

ക്ഷേത്രസമുച്ചയങ്ങൾ, ആരാധന, നൃത്തസംഗീതശില്പം

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

ഉലുവട്ടുവിലെ കെച്ചക് നൃത്തവേദിയിലെ കവാടം

പ്രധാനക്ഷേത്രങ്ങളെല്ലാം വിശാലമായ കോംപൗണ്ടോടുകൂടിയതാണ്. അതിനുള്ളിലുള്ള മതിൽക്കെട്ടിലെ കവാടങ്ങളുടെ മേൽക്കൂര പൂർണ്ണമായ ഗോപുരങ്ങൾ തന്നെയാണ്. ശ്രീകോവിലിനു സമാനമായ പ്രധാന കെട്ടിടത്തിന്റെ പലതട്ടിലുള്ള മേൽക്കൂര പുല്ലുമേഞ്ഞതാണ്. മേരുഗോപുരം എന്നാണിവയെ വിളിക്കുക.

ബട്വാൻ ക്ഷേത്രത്തിലെ മേരുഗോപുരങ്ങൾക്ക് മുന്നിൽ സാരോംഗ് ധരിച്ച്

തെക്കൻ സമുദ്രതീരത്തുള്ള ഉലുവാട്ടുക്ഷേത്രം ഒരു കുന്നിൻമുകളിലാണ്. അവിടെ സൂര്യാസ്തമയത്തിനു ശേഷം ദിവസേനെ കെച്ചക് നൃത്തം അരങ്ങേറുന്നു. ഈ പരമ്പരാഗതനൃത്തം ഇപ്പോൾ സഞ്ചാരികൾക്കായാണ് ദിവസവും അവതരിപ്പിക്കുന്നത്. കെചക് നൃത്തം ബാലെയ്ക്കു സമാനമായ ഒരു നൃത്തരൂപമാണ്. രാമായണകഥയാണ് ഇതിവൃത്തം. ബാലിനീസ് വേഷവിധാനത്തിൽ സീതയും രാമനും രാവണനും ഒക്കെ അരങ്ങിലെത്തും. ഹനുമാൻ വാനരരൂപത്തിൽ കാണികൾക്കിടയിലിറങ്ങി ഗോഷ്ഠികളുമായി ചിരിപടർത്തും. ഉലുവാട്ടു ക്ഷേത്രപരിസരത്ത് ധാരാളം കുരങ്ങന്മാരെ കാണാം. അവതരണത്തിനിടയ്ക്ക് അവയൊക്കെ ഗാലറിയിൽ വന്നുംപോയുമിരിക്കുന്നുണ്ടായിരുന്നു.

കെച്ചക് നൃത്തത്തിനായുള്ള കാത്തിരിപ്പ് – ഉലുവാട്ടു

തനാലോട്ട് കുറച്ചുകൂടി പടിഞ്ഞാറോട്ട് മാറിയുള്ള കടലോരത്തെ പാറക്കെട്ടാണ്. കടലിലേയ്ക്ക് തള്ളിനിൽക്കുന്ന ഒരു ഉയർന്നപാറയ്ക്കുമേലാണ് തനാലോട്ട് ക്ഷേത്രം. അങ്ങോട്ടുള്ള വഴി വേലിയേറ്റസമയത്ത് കടൽ മൂടും. അല്ലെങ്കിൽ ക്ഷേത്രം വരെ നടന്നുപോകാവുന്നതാണ്. തുടർച്ചയായി തിരയടിച്ച് പാറക്കെട്ടിലുണ്ടായ അടയാളങ്ങൾ മനോഹരമാണ്. തനാലോട്ടിലെ സൂര്യാസ്തമയം കാണാൻ സഞ്ചാരികളുടെ വലിയ തിരക്കുണ്ടാകും.

തനാലോട്ടിലെ സൂര്യാസ്തമയം
വേലിയിറക്കസമയത്ത് തനാലോട്ട് ക്ഷേത്രത്തിലേയ്ക്ക് സഞ്ചാരികൾ നടന്നുപോകുന്നു

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

ക്ഷേത്രങ്ങളിലൊന്നും നിത്യപൂജ ഉണ്ടാവാറില്ല. വിശേഷദിവസങ്ങളിൽ മാത്രമാണ് ക്ഷേത്രങ്ങളിലെ ചടങ്ങുകളൊക്കെ. പക്ഷേ നിത്യേനയുള്ള ചെറിയ ആരാധന എല്ലായിടത്തും ഉണ്ടാകും. കടകളിലും വീടുകളിലും മ്യൂസിയങ്ങളിലുമൊക്കെ. കുരുത്തോല കൊണ്ടുമെടഞ്ഞ ഒരു ചെറിയ മുറത്തിൽ പൂജാപുഷ്പങ്ങളും ബിസ്ക്കറ്റുമൊക്കെയായി ഇതെല്ലായിടത്തും കാണാം. ഡൊമിനോസ് പിസ്സയുടെ മുന്നിൽ പോലും കണ്ടു.

പൂജാപാത്രം – നടപ്പാതയിലെ കാഴ്ച

ക്ഷേത്രത്തിലെ ദ്വാരപാലകശില്പങ്ങൾക്കുസമാനമായ രൂപങ്ങൾ കടകൾക്കുമുന്നിലും റെസ്റ്റോറന്റുകളിലുമൊക്കെയുണ്ട്. ഇതൊക്കെ അലങ്കാരശില്പങ്ങളാണെന്നും ദൈവികമാണെങ്കിൽ വസ്ത്രമുണ്ടാകുമെന്നും വയാൻ പറഞ്ഞു തന്നു. കറപ്പും വെളുപ്പും കള്ളികളുള്ള വസ്ത്രമുടുപ്പിച്ച രൂപങ്ങൾ പിന്നെ ശ്രദ്ധിച്ചുതുടങ്ങി. പല മരങ്ങൾക്കും അതുണ്ടെന്നു കണ്ടു. അതില്ലാത്ത ഗണേശരൂപങ്ങളേയും കണ്ടു.

വസ്ത്രം ധരിച്ച ദ്വാരപാലക രൂപം
ചെമ്പരത്തിപ്പൂവ് ചൂടിയ ഗണേശപ്രതിമ

ഈഴച്ചമ്പകമെന്നു നമ്മുടെ നാടിലറിയപ്പെടുന്ന പൂവാണ് പ്രധാനപൂജാപുഷ്പം. കംബോജിയപ്പൂക്കളെന്നാണ് അവർ വിളിയ്ക്കുക. അലങ്കാരത്തിനും ഇതു തന്നെ പ്രാധാനയിനം – മേശപ്പുറത്താണെങ്കിലും കേശഭാരത്തിലാണെങ്കിലും. ഈ ചെറുമരം കാണാത്തയൊരിടവും ഉണ്ടാകില്ല ബാലിയിൽ. ചുവന്ന ചെമ്പരത്തിയും ഇതിനു സമാനമായ പ്രാധാന്യത്തോടെ ഉപയോഗിച്ചുവരുന്നു. പക്ഷേ പെട്ടെന്നു വാടുന്നതു കൊണ്ട് അലങ്കാരപുഷ്പമാകാൻ ഇതിനു പറ്റില്ലല്ലോ.

കംബോജിയപുഷ്പം അലങ്കാരമായി മേശമേല്‍

കംബോജിയപ്പൂമരം

രുചിഭേദങ്ങൾ

അരിഭക്ഷണം കഴിയ്ക്കുന്നവരാണ് ബാലിക്കാർ, പൊതുവിൽ ഇന്തോനേഷ്യക്കാർ. മാംസവിഭവങ്ങൾ അവർക്കൊഴിച്ചുകൂടാനാവില്ല. കോഴി, താറാവ്, പോത്ത്, പന്നി ഒക്കെ അവരുടെ മെനുവിൽ ഉണ്ട്. കടൽവിഭവങ്ങളുടെ കലവറയാണ് ബീച്ച് റെസ്റ്റോറന്റുകൾ. ഭക്ഷണത്തിൽ പരീക്ഷണങ്ങൾക്ക് മുതിരാറില്ലാത്തവരായിരുന്നു ഞങ്ങൾ. പക്ഷേ ഇത്തവണ കുറച്ച് രുചിയനുഭവങ്ങൾ സ്വന്തമാക്കാമെന്ന് കരുതി.

മലേഷ്യൻ ട്രാൻസിറ്റിനിടയിൽ വെച്ചാണ് നാസി ലെമക്ക് പരീക്ഷിച്ചത്. ഇതു മലേഷ്യയുടെ ദേശീയ വിഭവമാണ്. തേങ്ങാപ്പലിൽ വെന്ത ചോറിനൊപ്പം എരിവും മധുരവും ചേർന്ന സംബാൾ (മുളകുപേസ്റ്റ്), വറുത്തകടല, ഒരു കഷണം വെള്ളരിക്ക, ചെറിയമീൻ വറുത്തത്, പുഴുങ്ങിയ മുട്ട ഇതൊക്കെ ചേർന്ന സമീകൃതാഹാരമാണ് നാസി ലെമെക്. ഒപ്പം കോഴി, ആട്, താറാവ് ഇതിലേതെങ്കിലും കറിയായോ ഫ്രൈ ആയോ ഉണ്ടാകും.

നാസി ലെമെക്കും നോന്യ ചിക്കന്‍ കറിയും

ന്യോന്യ ചിക്കൻ കറി മറ്റൊരു മലേഷ്യൻ വിഭവമാണ്. നമ്മുടെ തേങ്ങാപ്പാല് ചേർത്ത ചിക്കൻ കറിയ്ക്ക് വളരെ സമാനമായ സ്വാദാണ് ഇതിന്, ചെറിയ മധുരമുണ്ടാകുമെന്ന് മാത്രം. സുഗന്ധവ്യഞ്ജനക്കൂട്ടിലെ പ്രാദേശികഭേദം കൊണ്ടുള്ള വ്യത്യാസം അറിയാനുണ്ട്. ബ്രെഡിനോ ചോറിനോ ഒപ്പം കഴിയ്ക്കാം.

നാസി കാംപുർ ഒരു ഇന്തോനേഷ്യൻ വിഭവമാണ്. അല്ലെങ്കിൽ ഒരുകൂട്ടം വിഭവങ്ങളാണ് എന്നു പറയുന്നതാണ് കൂടുതൽ ശരി. ചോറിനൊപ്പം മാംസ-മാംസേതര വിഭവങ്ങളടങ്ങിയ ഒരു കൂട്ട്. നാസിലെമെക്കിന് സമാനമാണിത്.

നാസി ഗൊരെങ്ങ് -ഇത് ഇന്തോനേഷ്യൻ ഫ്രൈഡ് റൈസ് ആണ്. പച്ചക്കറികളും മാംസവിഭവങ്ങളും ഒപ്പമുണ്ടാകും. ഞങ്ങൾക്ക് കോലിൽകുത്തി ചുട്ടെടുത്ത ചിക്കൻ പീസുകൾ പീനട്ട് സോസിനൊപ്പം വിളമ്പിക്കിട്ടി. സേറ്റ് അയാം എന്നിതിനെ വിളിയ്ക്കും.

നാസി ഗൊരെങ്ങ്. ഒപ്പം ക്രിസ്പി ഡക്ക്

തെരിയാക്കി ചിക്കൻ – സോയസോസ്, ഓറഞ്ച് ജ്യൂസ്, തേൻ, ഇഞ്ചി ഇവയിൽ മാരിനേറ്റ് ചെയ്തെടുക്കുന്ന ചിക്കൻ വെണ്ണയിൽ വറുത്തെടുത്തതാണിത്. മധുരവും എരിവും ചേർന്നൊരു രസമുള്ള സ്വാദ്.

തെരിയാക്കി ചിക്കന്‍

മാംസവിഭവങ്ങൾ ഏത് ഓർഡർ ചെയ്താലും കൂടെ ചോറുമുണ്ടാകും. കോണാകൃതിയിലോ വൃത്താകൃതിയിലോ കമിഴ്ത്തിയത്. KFCയിൽ നിന്നുപോലും അങ്ങനെയാണ് കിട്ടുക.

കടൽവിഭവങ്ങൾ പരീക്ഷിച്ചത് ജിംബാരനിൽ നിന്നുമാണ്. പിടയ്ക്കുന്ന കടൽജീവികളെ നമുക്കു കാണാം. ചൂണ്ടിക്കാണിച്ചു കൊടുക്കുന്നതു് എടുത്തു പാകം ചെയ്തു തരും. പക്ഷേ ഓരോന്നും എത്രവീതം തൂക്കിയെടുക്കണെമെന്നതിനെക്കുറിച്ചൊരു രൂപവും കിട്ടാത്തതിനാൽ ഞങ്ങൾ സെറ്റ് ചെയ്ത കപ്പിൾ മെനു ഒന്നെടുത്തു. കല്ലുമ്മക്കായയും, ചെമ്മീനും, വലിയ കടൽമത്സ്യവും, കലമാരിയും (വറുത്ത കണവ) ചേർന്നതായിരുന്നു മെനു. ഒപ്പം മുന്നിലെ കടൽപ്പരപ്പ്, കാറ്റ്, സംഗീതം, നൃത്തം. ആ വേറിട്ട അനുഭവത്തിനു പക്ഷേ ഇരുപതുശതമാനം ടാക്സടക്കം വലിയ വിലകൊടുക്കേണ്ടി വന്നു.

ജിംബാരനിലെ കടല്‍വിഭവങ്ങള്‍

മാംസവിഭവങ്ങളിൽ നിന്നും ഒഴിവെടുത്ത ദിവസം കഴിച്ചത് ഗാർളിക് കസ്സാവ ആയിരുന്നു, വെളുത്തുള്ളി പുരട്ടി ചുട്ടെടുത്ത കപ്പ.

ചുട്ടെടുത്ത കപ്പ

ഇന്തോനേഷ്യയുടെ തനതു റെസ്റ്റോറന്റുകളെ (നമ്മുടെ നാട്ടിലെ തട്ടുകട/ചായക്കട സെറ്റപ്പ്) വാറുംഗ് എന്നാണ് പറയുക. കുട്ട പോലെയുള്ള ടൂറിസ്റ്റി ഇടങ്ങളില്‍ പക്ഷേ വാറുംഗുകള്‍ സഞ്ചാരികളുടെ ഇഷ്ടത്തിനനുസരിച്ച് രൂപം മാറിക്കഴിഞ്ഞിരിക്കുന്നു – പല ബ്രാന്‍ഡഡ് വാറുംഗുകള്‍ വരെ ഇപ്പോഴവിടെ ഉണ്ട്. എയര്‍പ്പോര്‍ട്ടില്‍ അവയുടെ ബ്രാഞ്ചുകളും കണ്ടു.

എയര്‍പോര്‍ട്ടിലെ വാറുംഗ്

ബാലി എന്ന അനുഭവം

സഞ്ചാരികളുടെ താത്പര്യമെന്തായാലും അതിനുപറ്റിയ അനുഭവങ്ങള്‍ സമ്മാനിക്കാന്‍ മാത്രം സമ്പന്നമാണ് ബാലി.

നഗരത്തിന്റെ തിരക്കുകളില്‍ നിന്നൊഴിവായിട്ടൊരുദിവസം ചെലവഴിക്കാന്‍ സഞ്ചാരികള്‍ തെരഞ്ഞെടുക്കുന്ന സ്ഥലമാണ് ഉബുദ്. ഉബുദിലേയ്ക്കുള്ള യാത്രാമദ്ധ്യേയാണ് തടികൊണ്ടും ലോഹം കൊണ്ടുമുള്ള ആഭരണ കരകൗശല  നിര്‍മ്മാണശാലകള്‍. മിക്കതും വീടുകളോടു ചേര്‍ന്നു തന്നെ. നിര്‍മ്മാണം കാണാം, സാമാനങ്ങള്‍ വാങ്ങുകയുമാകാം. സഞ്ചാരികള്‍ക്ക് പണികളില്‍ കൂടുകയുമാകാം. പക്ഷേ ഞങ്ങള്‍ അക്കാഴ്ചകള്‍ക്കായി നിന്നില്ല.

തട്ടുനെല്‍ക്കൃഷി

നെല്‍ക്കൃഷിയ്ക്കു പറ്റിയ ഫലപുഷ്ടമായ മണ്ണാണിവിടെ. കുന്നിന്‍ചെരിവിലെ നിലം തട്ടുതട്ടായി തിരിച്ചിട്ടുള്ള നെല്‍പ്പാടങ്ങള്‍ കാണാന്‍ വലിയ തിരക്കാണ്. ഏറ്റവും മുകള്‍ത്തട്ടില്‍ നിന്നും ജലസേചനത്തിനുള്ള വെള്ളം പലതട്ടുകളിലൂടെ ഒഴുകി ഒടുവില്‍ താഴെയെത്തും. സഞ്ചാരികള്‍ക്കായി നടപ്പാതയൊരുക്കിയിട്ടാണ് കൃഷിഭൂമി. ഇടയ്ക്കുള്ള വീടുകളൊക്കെ മുറ്റത്ത് ലഘുഭക്ഷണവിതരണമൊക്കെ നടത്തി വരുമാനമുണ്ടാക്കുന്നു. സെല്യൂക്കിലെ ഈ നെല്‍പ്പാടങ്ങള്‍ക്കു ചുറ്റിലും ഉബുദിലെ ആര്‍ട്ട് മാര്‍ക്കറ്റിന്റെ തുടര്‍ച്ചയായുള്ള വില്പനശാലകളുണ്ട്.

ഉബുദില്‍ തന്നെയാണ് പ്രശസ്തമായ മങ്കിഫോറസ്റ്റ്. നമ്മുടെ കണക്കില്‍ അത്ര നിബിഡവനമൊന്നുമല്ല. പക്ഷേ പാശ്ചാത്യസഞ്ചാരികള്‍ക്ക് സംബന്ധിച്ച് ട്രോപ്പിക്കല്‍ കാലാവസ്ഥയിലെ മരങ്ങളും ചെടികളുമൊക്കെ പുതുമയുള്ള കാഴ്ച തന്നെയാണല്ലോ. നേന്ത്രപ്പഴമൊക്കെ കൈയ്യിലുണ്ടെങ്കില്‍ തോളത്തുചാടിക്കയറുന്ന വലിയൊരു വാനരപ്പട തന്നെയുണ്ടവിടെ. സൂക്ഷിച്ചില്ലെങ്കില്‍ തൊപ്പിയും കൂളിംഗ്‌ഗ്ലാസ്സുമൊക്കെ അവര്‍ തട്ടിയെടുക്കുമെന്ന് വയാന്‍ സൂചന തന്നിരുന്നു. ഞങ്ങള്‍ ചെല്ലുമ്പോള്‍ ചെറിയ ചാറ്റല്‍ മഴയുണ്ടായിരുന്നു. ഒരു കാട്ടരുവി, അടഞ്ഞുകിടക്കുന്ന ഒരു അമ്പലം, ചെറിയൊരു ബറിയല്‍ഗ്രൗണ്ട്, മരപ്പാലം ഇതിലൂടെയൊക്കെ നടന്ന് പുറത്തെത്തുവാന്‍ അധികം സമയമൊന്നും എടുത്തില്ല.

മങ്കി ഫോറസ്റ്റ്

തിരികെ വരുന്ന വഴിയാണ് ടൂര്‍പക്കേജിലില്ലാതിരുന്ന ഗുവാഗജാ കാണാന്‍ പോയത്. ഗജഗുഹയെന്ന് നമുക്ക് വിവര്‍ത്തനം ചെയ്യാം. ആനമുഖംകൊത്തിയ ഗുഹാകാവടത്തിനുള്ളിലേയ്ക്ക് നമുക്ക് നടന്നു പോകാം. ഉള്ളില്‍ ഗണേശവിഗ്രഹമൊക്കെ കണ്ടു. ചെറിയൊരുവെള്ളച്ചാട്ടവും താമരപ്പൊയ്കയും സമീപത്തുണ്ടായിരുന്നു.

ഗജഗുഹാകവാടത്തിനുമുന്നില്‍ ടൂറിസ്റ്റുകള്‍

ശലഭോദ്യാനത്തില്‍കൂടി പോകാമെന്നു വയാന്‍ പറഞ്ഞെങ്കിലും അപ്പോഴേയ്ക്കും ക്ഷീണിച്ചിരുന്നു. അതുകൊണ്ട് നേരെ ഹോട്ടലിലേയ്ക്ക് മടങ്ങി. രാവിലെ എട്ടരയ്ക്ക് തുടങ്ങിയ യാത്ര വൈകിട്ട് ആറരയോടെ അവസാനിച്ചു. ചെറിയറോഡുകളും അതിലൂടെ നിറയെ ടൂറിസ്റ്റ് വാഹനങ്ങളും കൂടിയാകുമ്പോള്‍ ട്രാഫിക്‌ബ്ലോക്ക് ഇവിടെ പതിവാണ്.

കുട്ടയിലെ ബീച്ചിലേയ്ക്കുള്ള വഴി നിറയെ തെരുവുകച്ചവടക്കാരാണ്. കുട്ടയിലും ഉബുദിലും മറ്റു ടൂറിസ്റ്റ് സ്പോട്ടിലൊക്കെ കാണുന്ന വില്പനസാമഗ്രികളൊക്കെ ഒന്നുതന്നെയാണ്. വിലകളൊക്കെ പേശുന്നതിനനുസരിച്ച് മാറിക്കൊണ്ടിരിക്കും. എങ്കിലും സമാന്യം ലാഭകരമായ വിലകളില്‍ സഞ്ചാരികള്‍ക്കാവശ്യമായ വസ്ത്രങ്ങളും ബാഗുകളും ഒക്കെ കിട്ടും.

ഉബുദിലെ ആര്‍ട്ട് മാര്‍ക്കറ്റില്‍ നിന്ന്

ഞങ്ങള്‍ തങ്ങിയ ഹോട്ടലിലെ സ്വിമ്മിങ്ങ് പൂളില്‍ വെച്ചായിരുന്നു ജീവിതത്തിലാദ്യത്തെ പൂളനുഭവം. തോട്ടിലോ പുഴയിലോ പോലും കുളിച്ചു ശീലമില്ലാത്തതാണ്. നീന്തലൊട്ടറിയുകയുമില്ല. എങ്കിലും മടിച്ചില്ല. ചുറ്റിലും വെയില്‍കായാന്‍ കിടക്കുന്നവരും വെള്ളത്തില്‍ നീന്തുന്നവരും ഒന്നും നമ്മളെ ശ്രദ്ധിക്കുന്നില്ല എന്നതാണ് ധൈര്യമായത്. പിന്നെയുള്ള രണ്ടുദിവസം ഉച്ചവരെ പൂളില്‍ തന്നെയായിരുന്നു. നീന്തി മുന്നോട്ട് നീങ്ങാന്‍ നല്ല ആയാസം തോന്നിയെങ്കിലും പൊങ്ങിക്കിടക്കാന്‍ പഠിച്ചു. ടീഷര്‍ട്ടിനുപകരം സ്വിംസ്യൂട്ടിലേയ്ക്ക് മാറാനുള്ള ധൈര്യം കണ്ടെത്തണം അടുത്ത അവസരം വരുമ്പോള്‍.

സ്വിമ്മിങ്ങ് പൂള്‍

മസ്സാജ് പാര്‍ലറുകളുടെ ബോര്‍ഡുകള്‍ എല്ലായിടത്തും കാണാം. ബാലിനീസ് മസ്സാജിങ്ങ് സഞ്ചാരികള്‍ക്ക് പ്രിയപ്പെട്ടതാണ്. ഫുള്‍ ബോഡി മസ്സാജിങ്ങ്, ഹെഡ് & ഫേസ് മസ്സാജിങ്ങ് ഒപ്പം മാനിക്യൂര്‍, പെഡിക്യൂര്‍, ഫിഷ് സ്പാ തുടങ്ങിയ സൗന്ദര്യസംരക്ഷണപരിപാടികളൊക്കെ ഇത്തരം പാര്‍ലറുകളില്‍ ലഭ്യമാണ്. ഒരു ബാലിനീസ് മസ്സാജിങ്ങ് പരീക്ഷിക്കാന്‍ ഞങ്ങള്‍ മടിച്ചില്ല. നീന്തലിന്റെ ക്ഷീണമൊക്കെ മസ്സാജില്‍ തീരട്ടെയെന്നു കരുതി.

പകലൊക്കെ നല്ല വെയിലും ചൂടുമുണ്ടാകും. അതുകൊണ്ട് ഒരു പകല്‍ പുറത്തുള്ള കറക്കംഒഴിവാക്കി കുട്ടയില്‍ തന്നെയുള്ള ഡ്രീം മ്യൂസിയത്തില്‍ ചെലവഴിച്ചു. അതൊരു രസകരമായ അനുഭവമായിരുന്നു. ചുമരും തറയുമൊക്കെ കാന്‍വാസാക്കി ഒരുകൂട്ടം ചിത്രകാരന്മാര്‍ അണിയിച്ചൊരുക്കിയത്. ഫോട്ടോയെടുക്കുമ്പോള്‍ നമ്മളുംകൂടിച്ചേര്‍ന്ന് ത്രിമാനചിത്രങ്ങള്‍ രൂപപ്പെടും. ഫോട്ടോയ്ക്ക് പോസുചെയ്യിക്കാനും നമ്മുടെ ക്യാമറയില്‍ ചിത്രങ്ങളെടുത്തുതരാനുമായി അവിടെ ജീവനക്കാരുണ്ട്.

ഡ്രീം മ്യൂസിയം
ഡ്രീം മ്യൂസിയം

 

ബാക്കിവെച്ചത്

അഗ്നിപര്‍വ്വതനിരകളിലെ ട്രെക്കിങ്ങ് ഒഴിവാക്കാനാവാത്ത ഒരു ബാലിനീസ് അനുഭവമാണെന്ന് വായിച്ചറിഞ്ഞിരുന്നു. കിണ്ടാമണിയിലെ ബാത്തൂര്‍ പര്‍വ്വതനിരയിലാണ് പ്രധാനമായും അതിനവസരമുള്ളത്. ഉബുദിലേയ്ക്കുള്ള യാത്രയുടെ ഇരട്ടിയോളം ദൂരം വരുമിത്. ഒരു മുഴുവന്‍ ദിവസവും ഇതിനായി മാറ്റിവെയ്ക്കേണ്ടതുണ്ട്. അതിനു പറ്റിയില്ല.

സ്കൂബാഡൈവിങ്ങ്, സ്നോര്‍ക്കേലിങ്ങ്, സ്പീഡ്ബോട്ടിങ്ങ്, സര്‍ഫിങ്ങ് തുടങ്ങിയ കടല്‍വിനോദങ്ങള്‍ക്കു പേരുകേട്ട ബാലിയില്‍ പോയിട്ടും ഇതൊന്നും പരീക്ഷിച്ചില്ല. ധൈര്യം വരാത്തതുകൊണ്ടാണ്. ഇപ്പോള്‍ ആലോചിക്കുമ്പോള്‍ ഒരുകൈ നോക്കാമായിരുന്നെന്നു തോന്നുന്നു. സാരമില്ല, ബാക്കിവെച്ച ആഗ്രഹങ്ങളാണല്ലോ മുന്നോട്ടുനീങ്ങാനുള്ള പ്രേരണ. അവസരങ്ങള്‍ ഇനിയുമുണ്ടാകുമെന്ന് കരുതുന്നു.

 

 

by Kavya Manohar at September 13, 2017 03:16 PM

August 16, 2017

Santhosh Thottingal

It is your language and your pen

Google recently added voice typing support to more languages. Among the languages Malayalam is also included. The speech recognition is good quality and I see lot of positive comments in my social media stream. Many people started using it as primary input mechanism. This is a big step for Malayalam users without any doubt. Technical difficulties related to writing in Malayalam in mobile devices is getting reduced a lot. This will lead to more content generated and that is one of the stated goals of Google’s Next billion users project. The cloud api for speech recognition will help android developers to build new innovative apps around the speech recognition feature.

Google had added handwriting based input method for many of these languages in 2015. It was also well recieved by Malayalam user community and many chose it as primary input method mechanism for mobile devices.

Google’s machine learning based language tools, including the machine translation is well engineered projects and takes the language technology forward. For a language like Malayalam with relatively less language processing technology, this is a big boost. There is not even a competing product in the above mentioned areas.

All of these above technologies are closed source software, completely controlled by Google. Google’s opensource strategy is a complicated one. Google supports and uses opensource to gain maximum out of it – a pragmatic corporate exploitation. Machine learning based technologies are complex to be defined in the traditional open source definition. Here, for a ML based service provider, the training toolkit might be opensource, tensorflow for example. At the same time, the training data, models might be closed and secret. So, basically the system can be only reproduced by the owners of the data and those who has enough processing capacity. These emerging trends in language technology is also hard for individual opensource developers to catch up because of resourcing issues(data, processing capacity).

Is this model good for language?

Think about this. With no competition, the android operating system with Google’s technology platform is becoming default presence in mobile devices of Malayalam speakers with no doubt. The new language technologies are being quickly accepted as the one and only way to convey a persons expressions to digital world. No, it is not an exaggeration. The availability and quality of these tools is clearly winning its mass user crowd. There is no formal education for Malayalam typing. People discover and try anything that is available. For a new person to the digital world, handwriting was the easiest method to input Malayalam. Now it is speech recognition. And that will be the one and only one way these users know to enter Malayalam content. And these tools are fully owned and controlled by Google with no alternatives.

The open soure alternatives for input methods are still at the traditional typing keyboards. With its peers, they indeed won large user base and it even came to the users before Google entered. For example, the Indic keyboard has 1.4 million installations and actively improved by contributor for 23 languages. But I don’t see any opensource project that is in parallel with handwriting and speech recognition based input methods. As a developer working in Indic language technology based on free software, this is indeed a failure of opensource community.

I contacted a few academic researchers working on speech recognition and handwring recognition and asked what they think about these products by Google. For them, it is more difficult to convince the value of their research. ‘Well, we have products from Google that does this and thousands are using it. Why you want to work again on it?’ This question can’t be answered easily.

But to me, all of these products and its above mentioned nature strongly emphasis the need for free software alternatives. The mediation by closed sourced systems on one of the fundamental language computing task- inputting – with no alternatives puts the whole language and hence its users in heavy risk. Input method technologies, speech recognition, handwriting recognition.. all these are core to the language technology. These technolgies and science behind them should be owned by its speakers. People should be able to study, innovate on top of this technology and should be able to build mechanisms that are free from any corporate control to express their language.

I don’t want to imply or spread fear, uncertainity that Google will one day just start charging for these services or shutdown the tools. That is not my concern. All these language tools I mentioned are not to be built for facing that situation. It is to be developed as fundamental communication tools for the people for the digital age – build, own, learn, use, maintain by the people.

by Santhosh Thottingal at August 16, 2017 05:56 PM

August 06, 2017

Santhosh Thottingal

Malayalam collation updates in Glibc

GNU C library 2.26 released and proud to have my name listed under contributors. Two small patches for localedata were merged:

  1. Bug 19919 – iso14651_t1_common: Correct the Malayalam sorting order of 0D36 and 0D37
  2. Bug 19922 – iso14651_t1_common: Define collation for Malayalam chillu characters

by Santhosh Thottingal at August 06, 2017 12:49 PM

July 23, 2017

Santhosh Thottingal

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

by Santhosh Thottingal at July 23, 2017 06:44 AM

July 02, 2017

Santhosh Thottingal

ദൃൿസാക്ഷി

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

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

പക്ഷേ അങ്ങനെ നിരത്തിയെഴുതിയാൽ മതിയെങ്കിൽ ദൃൿസാക്ഷി എന്ന ഈ 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)

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

by Santhosh Thottingal at July 02, 2017 03:08 PM

June 22, 2017

Santhosh Thottingal

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

യൂണിക്കോഡിന്റെ പത്താം പതിപ്പ് പുറത്തിറങ്ങി. മലയാളത്തിന്റെ കോഡ് ബ്ലോക്കിലേയ്ക്ക് പുതിയ മൂന്നു അക്ഷരങ്ങൾ കൂടി ഔദ്യോഗികമായി ചേർന്നിരിക്കുന്നു. അങ്ങനെ മലയാളത്തിന്റെ കോഡ് ബ്ലോക്കിൽ  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

 

 

by Kavya Manohar at June 22, 2017 01:43 PM

May 27, 2017

Santhosh Thottingal

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!

by Santhosh Thottingal at May 27, 2017 11:54 AM

May 21, 2017

Santhosh Thottingal

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.

by Santhosh Thottingal at May 21, 2017 05:49 AM

April 16, 2017

Santhosh Thottingal

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.

 

by Santhosh Thottingal at April 16, 2017 06:16 AM

April 05, 2017

Santhosh Thottingal

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.

 

by Santhosh Thottingal at April 05, 2017 03:12 AM

March 31, 2017

Santhosh Thottingal

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

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

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

വലിയ പ്രശ്നമൊന്നും ഇതുവരെ നേരിട്ടിട്ടില്ല. പക്ഷേ കുറച്ചു ദിവസം മുമ്പു് എന്റെ പ്രൊവിഡന്റ് ഫണ്ട് 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 അൽഗോരിതത്തിനെപ്പോലെയൊന്നു് ഇന്ത്യൻ ഭാഷകൾക്കു വേണ്ടി ഇൻഡിക് സൌണ്ടെക്സ് എന്ന പേരിൽ തയ്യാറാക്കിയിരുന്നു. വിവിധ ഇന്ത്യൻ ഭാഷകളിലെഴുതിയാലും പരസ്പരം ഒത്തുനോക്കാൻ അതിനു കഴിയും. ഉദാഹരണത്തിനു് സന്തോഷ്, सन्तोष എന്നിവ ഒരേ പേരാണെന്നു പറയുന്ന വിധത്തിൽ.

by Santhosh Thottingal at March 31, 2017 02:15 PM

March 29, 2017

Santhosh Thottingal

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

ഈയിടെ 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 യെ നമ്മൾ കൂടുതൽ കൂടുതലിടങ്ങളിൽ കാണുകയാണു്.

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

by Santhosh Thottingal at March 29, 2017 05:07 PM

February 01, 2017

Ershad K

Install RMagick 2.13.2 in macOS Sierra

Homebrew is usually pretty good at installing ImageMagick and I was wondering why it threw the following error when I tried to configure an old Rails project in macOS Sierra. I had run brew install imagemagick before installing the RMagick gem and still got this –

checking for Ruby version >= 1.8.5... yes
checking for /usr/local/Cellar/gcc@4.9/4.9.3_1/bin/gcc-4.9... yes
checking for Magick-config... no
Can't install RMagick 2.13.2. Can't find Magick-config in <snip>

Turns out Homebrew installed ImageMagick 7.0.4-6 and it doesn’t have Magick-config executable in its bin directory, instead it has Magick++-config.

Got the gem installed by downgrading ImageMagick to version 6 as follows.

# Uninstall ImageMagick 7
brew uninstall imagemagick
 
brew install imagemagick@6
brew link imagemagick@6 --force

Now we can install the gem.

gem install rmagick -v '2.13.2'

Cheers!

by ershad at February 01, 2017 06:59 AM

January 26, 2017

Santhosh Thottingal

സാങ്കേതികവിദ്യാഭ്യാസം : പരീക്ഷകളിങ്ങനെ മതിയോ?

 

കേരള സാങ്കേതിക സര്‍വ്വകലാശാലയുടെ ഒന്നും മൂന്നും സെമസ്റ്ററുകളിലെ പരീക്ഷകള്‍ ഒരുപാട് കോലാഹലങ്ങള്‍ക്കു ശേഷം തുടങ്ങിക്കഴിഞ്ഞു. മൂല്യനിര്‍ണ്ണയശാലകളും സജീവമായിരിക്കുന്നു. ചോദ്യപ്പേപ്പറുകളും അവയുടെ നിലവാരവും മൂല്യനിര്‍ണ്ണയരീതിയും ഒക്കെയാണ്  ഞങ്ങള്‍ അദ്ധ്യാപകര്‍ക്കിടയിലിപ്പോള്‍ ചൂടുള്ള ചര്‍ച്ച. ‘പോര്‍ഷന്‍ തീര്‍ത്താല്‍’ തീരുന്ന പണിയേ തനിക്കുളുവെന്നു കരുതിയിരുന്നവരായിരുന്നു മിക്കവരും. “ഒക്കെ ഞാന്‍ പഠിപ്പിച്ചതാ, അവര് പഠിച്ചിരുന്നെങ്കില്‍ ജയിച്ചേനെ” അല്ലെങ്കില്‍ “നമ്മളെയൊക്കെ ക്ലാസ്സില്‍ പഠിപ്പിച്ചിട്ടാണോ, കാര്യങ്ങളൊക്കെ തനിയേ കണ്ടുപിടിച്ചു പഠിക്കാനുള്ള മടികൊണ്ടാ ഇപ്പോഴത്തെ കുട്ടികളൊക്കെ പരീക്ഷയില്‍ തോല്‍ക്കുന്നേ” എന്നുമൊക്കെയുള്ള മാസ്സ് ഡയലോഗടിയ്ക്കാന്‍ അദ്ധ്യാപകർക്കൊന്നും പണ്ടത്തെയെന്നപോലെ ഇപ്പോഴും ഒരു മടിയുമില്ല. വ്യക്തിപരമായ നിരീക്ഷണങ്ങള്‍ നിന്നുള്ള സാമാന്യവല്‍ക്കരണത്തില്‍ തെറ്റുകളുണ്ടന്നു തോന്നിയാല്‍ ചൂണ്ടിക്കാണിക്കുക, തിരുത്താം  🙂

തനിയ്ക്ക് ആഴത്തില്‍ ബോധ്യമുള്ള ഒരു കാര്യം മാത്രമേ മറ്റൊരാള്‍ക്കു ബോധിയ്ക്കും വിധം പറഞ്ഞു കൊടുക്കാന്‍ ആര്‍ക്കായാലും പറ്റൂ.  അവര്‍ക്കേ ക്ലാസ്സ്മുറിയില്‍ പഠിതാവില്‍ നിന്നും തിരിച്ചു ചോദ്യങ്ങള്‍ ഉണ്ടാകുമ്പോള്‍ കൂടുതല്‍ ആഴത്തിലേയ്ക്കിറങ്ങി പാഠഭാഗം ഇനിയും ആസ്വാദ്യകരമാക്കുവാന്‍ സാധിക്കൂ, ചുറ്റുമുള്ളലോകത്തെ അതിലേയ്ക്ക് ബന്ധിപ്പിയ്ക്കുവാനാകൂ. അങ്ങനെയൊരു ക്ലാസ്സിലിരുന്ന വിദ്യാര്‍ത്ഥിക്കേ അതുനുമപ്പുറമെന്തുണ്ടെന്ന് ക്ലാസ്സിനു പുറത്തന്വേഷിക്കുവാന്‍ സാധിക്കൂ. അപ്പൊഴേ പഠിച്ചതുകൊണ്ടു തന്റെ പരിസരത്തെ എങ്ങനെ മെച്ചപ്പെടുത്താമെന്ന് അദ്ധ്യാപകര്‍ക്കും സഹപാഠികള്‍ക്കുമൊപ്പം ചര്‍ച്ച ചെയ്യാനും പ്രാവര്‍ത്തികമാക്കാനും ഉള്ള ശ്രമങ്ങളൊകെ ഉണ്ടാകൂ. ഇതൊക്കെ സാധിച്ചില്ലെങ്കില്‍ ഒരു സാങ്കേതിക കലാലയം കൊണ്ട് എന്താണ് പ്രയോജനം?

ഇനി ഇങ്ങനെയൊക്കെയൊരു ആദര്‍ശാത്മക ക്ലാസ്സ്മുറി കേരളത്തില്‍ ഉണ്ടെങ്കില്‍ തന്നെ അവിടെയുള്ള ‘മിടുക്കരായ’ വിദ്യാര്‍ത്ഥികളെ അമ്പേ പരാജയപ്പെടുത്തുന്ന മട്ടിലായിരുന്നു ഞാന്‍ കണ്ടിടത്തോളം* ചോദ്യപ്പേപ്പറുകളും മൂല്യനിര്‍ണ്ണയവുമൊക്കെ. സിലബസ് എന്നു പറയുന്നത് പലപ്പോഴും ഒരു സൂചന മാത്രമാണ്. അതിനെ വ്യാഖ്യാനിച്ച് ക്ലാസ്സ്പഠനത്തില്‍ എന്തൊക്കെ ഉള്‍പ്പെടുത്തണമെന്നത് അതത് വിഷയം കൈകാര്യം ചെയ്യുന്ന അദ്ധ്യാപകരുടെ വിവേചനാധികാരത്തില്‍ പെടുന്നതാണ്. പാഠഭാഗത്തേക്കുറിച്ചു വ്യക്തമായ ധാരണ അദ്ധ്യാപകര്‍ക്കില്ലെങ്കില്‍ ഇതിനെ സ്വാധീനിക്കുന്നത് മുന്‍കാലങ്ങളിലെ ചോദ്യപ്പേപ്പറുകളുമായിരിയ്ക്കും. അദ്ധ്യാപരെത്ര മിടുക്കരായാലും അവര്‍ പഠിപ്പിച്ചതു കൊണ്ട് പരീക്ഷയില്‍ മാര്‍ക്കു കിട്ടുന്നില്ലെങ്കില്‍ ആ അദ്ധ്യാപനത്തിന് ഇവിടെ ആരും വില കൊടുക്കുകയുമില്ലല്ലോ!! അപ്പോള്‍ പരീക്ഷാ ചോദ്യത്തിന് ഉത്തരമെഴുതാന്‍ പാകത്തിലാവണം അദ്ധ്യാപനം എന്ന നിലയിലേയ്ക്ക് കാര്യങ്ങള്‍ മാറുകയും ചെയ്യും. അതു തന്നെയാണ് സംഭവിച്ചിട്ടുള്ളതും.

ചോദ്യപ്പേപ്പറുകളാകട്ടേ സിലബസിലെ ഏതെങ്കിലുമൊക്കെ വാക്കുകള്‍ ചേര്‍ത്തെഴുതിയിട്ട് ‘വിശദീകരിക്കുക’, ‘നിര്‍വ്വചിക്കുക’ എന്നൊക്കെയാണെങ്കിലെ അവസ്ഥ ഒന്നാലോചിച്ചു നോക്കൂ. ഉദാഹരണത്തിനു്, “ജൈവലോകം – വിശദീകരിയ്ക്കുക” എന്നൊരു ചോദ്യമുണ്ടെങ്കില്‍ യഥാര്‍ത്ഥത്തില്‍ അതിന്റെ സ്കോപ്പ് എത്രയോ വലുതാണ്. ജൈവലോകത്തെ പരസ്പരബന്ധവും ആഹാരശൃംഖലയും അതിലെ കണ്ണികള്‍ മുറിഞ്ഞാല്‍ എന്തുണ്ടാവുമെന്നും അതില്‍ പരിണാമത്തിന്റെ പങ്കും ഒക്കെ അറിയാവുന്നയാള്‍ അതൊക്കെ വിശദമാക്കിയാല്‍ ഒരു പുസ്തകത്തിനുള്ള വകുപ്പുണ്ട്. ആ ചോദ്യത്തിന്റെ ഉത്തരത്തിലെന്തൊക്കെ ഉള്‍ക്കൊള്ളിക്കണമെന്ന് ചോദ്യകര്‍ത്താവിന് യാതൊരു ധാരണയുമില്ലായെന്നു തോന്നും വിധമുള്ള  ഒരു സ്കോറാകും അതിനുണ്ടാവുക. പ്രതീക്ഷിക്കപ്പെടുന്ന ഉത്തരത്തിന്റെ ആഴവും പരപ്പുമായി യാതൊരു ബന്ധവുമുണ്ടാവില്ല ആ ചോദ്യത്തിന്റെ സ്കോറിന്. ‘ജൈവലോകത്തേക്കുറിച്ച് വിശദീകരിച്ചാല്‍ അഞ്ചു മാര്‍ക്കു നല്‍ക്കുക’ എന്ന മട്ടിലൊരു ഉത്തര സൂചികയും കൂടിയായാല്‍ കാര്യങ്ങള്‍ കൈവിട്ട്പോകാന്‍പിന്നെയൊന്നും വേണ്ട . പിന്നെ മൂല്യ നിര്‍ണ്ണയം തോന്നുംപടിയാകും. എന്തെഴുതിയാലും മാര്‍ക്കു കൊടുക്കാത്തവരും എന്തെങ്കിലുമൊക്കെ എഴുതിയാല്‍ മാര്‍ക്കു കൊടുക്കുന്നവരും മൂല്യനിര്‍ണ്ണയത്തിനുണ്ടാകും. ചുരുക്കിപ്പറഞ്ഞാല്‍ ക്ലാസ്സ് മുറിയില്‍ ആര്‍ജ്ജിക്കേണ്ട നൈപുണികളും പരീക്ഷയും മൂല്യനിര്‍ണ്ണയവും പരസ്പരബന്ധമില്ലാതെ നിലകൊള്ളുന്ന കാഴ്ചയാണ് നടന്നുകൊണ്ടിരുന്നത്. സാഹചര്യങ്ങള്‍ക്കനുസരിച്ച് വിശകലനശേഷി ഉപയോഗിക്കേണ്ടുന്ന ചോദ്യങ്ങളാവും കാര്യകാരണബന്ധങ്ങള്‍ കൃത്യമായി മനസ്സിലുറച്ചോ എന്ന് പരീക്ഷിച്ചറിയാന്‍ വേണ്ടത്. ഇത്തരം ചോദ്യങ്ങള്‍ വളരെ അപൂര്‍വ്വമായി മാത്രമേ എഞ്ചിനീയറിങ്ങ് പഠനകാലത്തും അദ്ധ്യാപന കാലത്തും കണ്ടിട്ടുള്ളൂ. കൂട്ടത്തില്‍ പറയട്ടേ, സ്കൂള്‍ തലം വരെ അതിസൂക്ഷ്മമായി അപഗ്രഥന ശേഷി അളക്കുന്ന ചോദ്യങ്ങള്‍ ധാരാളമായി കണ്ടു ശീലിച്ച്  പ്രവേശനപ്പരീക്ഷയൊക്കെ കടന്നു വരുന്ന വിദ്യാര്‍ത്ഥികളോടാണിമ്മാതിരി ചോദ്യങ്ങള്‍ ചോദിക്കുന്നത്. (പ്രവേശനപ്പരീക്ഷയുടെ കടമ്പയൊക്കെ കേരളത്തിലെ സ്വാശ്രയ എഞ്ചിനീയറിങ്ങ് രംഗത്തൊരു വിഷയമാണോ എന്നതിലേയ്ക്ക്  ഇപ്പോള്‍ കടക്കുന്നില്ല)

ഒരു സാങ്കല്പിക ചോദ്യമാണ് മുകളിൽ സൂചിപ്പിച്ചത്. പക്ഷേ യാഥാർത്ഥ്യം ഇതിനേക്കാൾ കഷ്ടമാണ്. കാലിക്കറ്റ് യൂണിവേഴ്സിറ്റിയുടെ ‘Information Theory and Coding’ എന്ന വിഷയത്തിന്റെ ചോദ്യപ്പേപ്പറിൽ നിന്നാണ് ഈ ചിത്രം.

 

സിലബസിൽ നിന്നുള്ള കുറച്ചു വാക്കുകളും ഒപ്പം Explain എന്നൊരു കൂട്ടിച്ചേർപ്പും. ഏതാണ്ട് നൂറോളം പേജുകളിലായിട്ടേ ഇതൊക്കെ ശരിയ്ക്ക് വിവരിക്കാനാവൂ.  ഗണിതപരമായി വളരെ മനോഹരമായ ഒരു വിഷയത്തോടാണ് ഇതു ചെയ്തിരിക്കുന്നത്.   പഠിച്ചവരോടും ഉത്തരമെഴുതുന്നവരോടും തീർത്തും ഉത്തരവാദിത്തരഹിതമായ ഒരു പെരുമാറ്റമായിട്ടേ ഇത്തരം ചോദ്യങ്ങളെ കാണാനാവൂ.

ഇതിനു സമാനമായി മറ്റൊരു ചോദ്യപ്പേപ്പർ. Computer Organization and Design എന്ന വിഷയത്തിന്റെയാണ്.

Explain, Discuss, What do you mean by എന്നൊക്കെ മാറിമാറിച്ചേർത്തെഴുതിയാൽ പരീക്ഷാചോദ്യങ്ങൾ തയ്യാറാക്കാമെന്നു കരുതുന്നവരെയാണോ ചോദ്യപ്പേപ്പർ തയ്യാറാക്കാൻ ഏൽപ്പിക്കുന്നത്?

ഈ സര്‍വ്വകലാശാലാ പരീക്ഷയ്ക്ക് പറ്റുന്ന രീതിയില്‍ വിദ്യാര്‍ത്ഥികളെ സജ്ജരാക്കാന്‍ എന്താണ് വേണ്ടത്? എന്തു ചോദ്യം കിട്ടിയാലും എന്തെങ്കിലുമൊക്കെ എഴുതാനുള്ള പരിശീലനം കൊടുക്കുക. പലവട്ടം ആവര്‍ത്തിക്കുന്ന ചോദ്യങ്ങളൊക്കെ അച്ചടിച്ച നോട്ടായി കൊടുക്കുന്ന സാങ്കേതികസ്ഥാപനങ്ങളൊക്കെയുണ്ടാവുന്നത് അങ്ങനെയാണ്. രണ്ടു ദിവസം മെനക്കെട്ടാല്‍ തരക്കേടില്ലാത്ത മാര്‍ക്കു വാങ്ങാന്‍ ഇങ്ങനെയൊരു നോട്ടുണ്ടെങ്കില്‍ മതിയാകും. അവിടെയൊക്കെ  പരീക്ഷാ റിസല്‍ട്ടും മെച്ചപ്പെടും. കാര്യവും കാരണവും ബോദ്ധ്യപെടുത്തി ക്ലാസ്സെടുക്കുന്ന അദ്ധ്യാപകര്‍ ഈ പരീക്ഷാമത്സരത്തില്‍ തോറ്റുപോകുന്നു. അവരുടെ വിദ്യാര്‍ത്ഥികള്‍ക്ക്  “ജൈവലോകത്തെ” നൂറുവിധത്തില്‍ അപഗ്രഥിയ്കാന്‍ അറിയുമായിരിയ്ക്കും, പക്ഷേ ഇങ്ങനെയൊരു ചോദ്യത്തിന് അതിലെന്തെഴുതണമെന്നറിയാതെ കുഴങ്ങും. അവരിലും പഴയ ചോദ്യപ്പേപ്പറൊകെ നോക്കി നോട്ടൊക്കെ തയ്യാറാക്കുന്ന വിദ്യാര്‍ത്ഥികള്‍ രക്ഷപ്പെടും. ഉന്നതവിദ്യാഭ്യാസത്തിനായി GATE പോലുള്ള അഭിരുചി പരീക്ഷയിലേയ്കു വരുമ്പോഴാണ് ഇത്തരം ക്ലാസ്സ്‌റൂം കോച്ചിങ്ങ് വെറും വെള്ളത്തിൽ വരച്ച വരയായിരുന്നുവെന്ന് പലര്‍ക്കും ബോദ്ധ്യപ്പെടുക. ഇതു കടന്നു കൂടുവാനായി സ്പെഷ്യല്‍ കോച്ചിങ്ങ് സെന്ററുകള്‍ ഒക്കെ നമ്മുടെ നാട്ടില്‍ വേണ്ടി വരുന്നത് അത്തരം വിശകലനാത്മകമായ പഠനം കോളേജുകളില്‍ അധികം നടക്കാത്തതു കൊണ്ടാണ്.

എന്റെ തലമുറയിലെ അദ്ധ്യാപകരില്‍ ഭൂരിപക്ഷവും ഈ ഒരു സിസ്റ്റത്തിലൂടെ പഠനകാലം കഴിഞ്ഞു വന്നവരാണ്. അവരില്‍ നിന്നും അതുകൊണ്ടാണ്  ആദ്യഖണ്ഡികയില്‍ പറഞ്ഞ തരത്തിലുള്ള അഭിപ്രായങ്ങള്‍ ഉണ്ടാകുന്നത്. സിലബസ്സിലുള്ള വാക്കുകളൊക്കെ ക്ലാസ്സില്‍ സൂചിപ്പിച്ച് ചിലതിനേക്കുറിച്ചുള്ള പുസ്തകത്തിലൊക്കെ ലഭ്യമായ പരിശീലന ചോദ്യങ്ങളും കൊടുത്തുകഴിഞ്ഞാല്‍ തന്റെ കര്‍ത്തവ്യം പൂര്‍ണ്ണമായി എന്ന തോന്നലവര്‍ക്കുണ്ടാവുക സ്വാഭാവികമാണ്. അവരെ സംബന്ധിച്ചിടത്തോളം പരീക്ഷയ്ക്കു വേണ്ടി ബാക്കിയൊക്കെ സ്വയം സജ്ജരാകേണ്ടത് വിദ്യാര്‍ത്ഥികളുടെ പണിയാണ്. ആദര്‍ശാത്മകമായ ക്ലാസ്സ്മുറിയിലെ വിദ്യാര്‍ത്ഥിക്കും കാര്യങ്ങളറിയുമെങ്കിലും പരീക്ഷയ്ക്കു തയ്യാറെടുക്കല്‍ സ്വന്തം പണിതന്നെ. ചുരുക്കി പറഞ്ഞാല്‍ ഈ രണ്ടു വിഭിന്നധ്രുവങ്ങളില്‍ നില്‍ക്കുന്ന ക്ലാസ്സിലെ വിദ്യാര്‍ത്ഥികളും മേല്‍പ്പറഞ്ഞ പരീക്ഷാ സമ്പ്രദായത്തില്‍ ഒരുപോലെയാണ്.  മാര്‍ക്കിന്റെ കാര്യത്തില്‍ പലപ്പോഴും ഇവരേക്കാള്‍ മറ്റൊരു വിഭാഗം (ചിട്ടയായി നോട്ടൊക്കെ കൊടുത്തുവിടുന്ന – അതിലപ്പുറം ഒന്നും നടക്കാത്ത )  സ്ഥാപനങ്ങളിലെ വിദ്യാര്‍ത്ഥികള്‍ ശോഭിയ്ക്കുകയും ചെയ്യും.

മൂല്യനിര്‍ണ്ണയോപാധികളെപ്പറ്റി ശാസ്ത്രീയമായി പഠിച്ചിട്ടില്ലെങ്കിലും സാമാന്യബോധം കൊണ്ടു മനസ്സിലാക്കുന്നത് ലളിതമായത്, അടിസ്ഥാന ജ്ഞാനം പരിശോധിക്കുന്നത്, പ്രായോഗികജ്ഞാനം പരിശോധിക്കുന്നത്, സങ്കീര്‍ണ്ണമായത് എന്നിങ്ങനെയൊക്കെയായി ചോദ്യങ്ങളെ തരം തിരിച്ച് നിശ്ചിത ശതമാനം മാര്‍ക്ക് ഓരോ വിഭാഗത്തിനും മാറ്റിവെച്ച്  സന്തുലിതമായ ഒന്നാവണം ചോദ്യപ്പേപ്പറെന്നാണ്. ഒരു വിഷയത്തെക്കുറിച്ച് സാമാന്യമായ ഒരു ബോധവും അതെന്തിനു പഠിയ്ക്കുന്നു എന്ന അറിവും ഉള്ള വിദ്യാര്‍ത്ഥികള്‍ക്ക് തോല്‍ക്കേണ്ടി വരുന്ന ഒന്നാവരുത് പരീക്ഷ. പക്ഷേ ആഴത്തിലുള്ള അപഗ്രഥനം സാധ്യമാകുന്ന വിദ്യാര്‍ത്ഥികള്‍ക്ക് മാത്രമാവണം ഉയര്‍ന്ന സ്കോറിനുള്ള അവസരം.

പറഞ്ഞു വന്നത് പരീക്ഷയിലെ മാര്‍ക്കിന് നിലവിലുള്ള നിലയും വിലയുമൊന്നും കുറയാന്‍ പോകുന്നില്ല. പരീക്ഷാഫലം തന്നെയാവും സ്ഥാപനങ്ങളുടെ വിപണിമൂല്യത്തേയും നിര്‍ണ്ണയിക്കുക. കേരളത്തിലെ സാങ്കേതിക വിദ്യാഭ്യാസസ്ഥാപനങ്ങളൊക്കെ ഒരു സാങ്കേതിക സര്‍വ്വകലാശായുടെ കീഴില്‍ വന്നതോടെ എല്ലാ സ്ഥാപനങ്ങളേയും ഒന്നിച്ചു വിലയിരുത്താന്‍ പറ്റുന്ന ഒറ്റ അളവുകോലായി യൂണിവേഴ്സിറ്റി പരീക്ഷകള്‍ മാറി. അപ്പോള്‍ പരീക്ഷകള്‍ അഭിരുചിയും അറിവും അതിന്റെ ആഴവും പരപ്പുമൊക്കെ അളക്കാനുതകുന്ന വിധത്തില്‍ തയ്യാറാക്കിയാല്‍ ആ മാര്‍ക്കിന് തീര്‍ച്ചയായും വിലയുണ്ടാകും. സാങ്കേതിക പഠനം അതിന്റെ ലക്ഷ്യം നിറവേറ്റുന്നുവെന്നുറപ്പു വരുത്താന്‍ പരീക്ഷയ്ക്കു കുറേയൊക്കെ സാധിക്കുകയും ചെയ്യും.

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

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

സാങ്കേതിക പഠനത്തിന്റെ അളവുകോല്‍ സെമസ്റ്ററവസാനമുള്ള എഴുത്തുപരീക്ഷ മാത്രമല്ല എന്ന് ഇതെഴുന്ന എനിയ്ക്ക് നല്ല ബോധ്യമുണ്ട്. അതുകൊണ്ട് ക്ലാസ്സില്‍ തുടര്‍ച്ചയായി നടത്തുന്ന മൂല്യനിര്‍ണ്ണയവും ഇതോടൊപ്പം പ്രാധാന്യമര്‍ഹിക്കുന്നു. പക്ഷേ ആ ഇന്റേണല്‍ മാര്‍ക്ക് നിര്‍ണ്ണയിക്കുന്നതിനുള്ള മാനദണ്ഡം ക്ലാസ്സിലെ അസൈന്‍മെന്റ്, ഇന്റേണല്‍ പരീക്ഷകള്‍ ഒക്കെ ചേര്‍ന്നിട്ടാണ്. അസൈന്‍മെന്റുകള്‍ എന്ന നിലയില്‍ സിലബസിലെ ഏതെങ്കിലും ഒന്നോ രണ്ടോ ടോപ്പിക്കുകളെക്കുറിച്ചുള്ള ചെറുതോ വലുതോ ആയ കുറിപ്പുകള്‍ തയ്യാറാക്കുവാനാകും വിദ്യാര്‍ത്ഥികളോട് അദ്ധ്യാപകര്‍ ആവശ്യപ്പെടുക. ആദ്യം പൂര്‍ത്തിയാകുന്ന കുറച്ചുപേരുടെ കുറിപ്പുകളുടെ തനിപ്പകര്‍പ്പായ അറുപതോളം  ‘അസൈന്‍മെന്റുകള്‍’ക്ക് പ്രത്യേകിച്ചൊരു മാനദണ്ഡവുമില്ലാതെ അനുവദിച്ചിരിക്കുന്ന മാര്‍ക്ക് വീതിച്ചു കൊടുക്കുക എന്നതിലപ്പുറം അദ്ധ്യാപകര്‍ക്കു ഒന്നുമവിടെ ചെയ്യാനുണ്ടാകില്ല. ചുറ്റുപാടുകളില്‍ നിന്നും അധികവിവരം ശേഖരിയ്ക്കുവാനും ലഘുപ്രോജക്റ്റുകള്‍ചെയ്യുവാനുമൊക്കെ കരിക്കുലം വിഭാവനം ചെയ്യുന്നുണ്ടെങ്കിലും പഠിച്ചതേ പാടൂവെന്ന അവസ്ഥയിലാണ് കാര്യങ്ങള്‍.

അതിനു മാറ്റം വരണമെങ്കില്‍ തങ്ങള്‍ പഠിച്ചതിന്നും ശീലിച്ചതിനുമപ്പുറം എന്തൊക്കെ പാഠ്യോപാധികളും സാദ്ധ്യതകളുണ്ടെന്നതിനെക്കുറിച്ചു കേരളത്തിലങ്ങോളമിങ്ങോളമുള്ള എഞ്ചിനീയറിങ്ങ് അദ്ധ്യാപകര്‍ക്ക്  അറിവുപകരേണ്ടതുണ്ട്. കരിക്കുലം ചട്ടക്കൂട് എങ്ങനെയൊക്കെ സര്‍ഗ്ഗാത്മകമാക്കിയാലും അത് പ്രായോഗികതലത്തില്‍ എത്തണമെങ്കില്‍ അദ്ധ്യാപകരും അതിനു പാകത്തില്‍ പരിശീലിപ്പിക്കപ്പെടണം. അനുഭവപരിചയം കൊണ്ട് അല്ലെങ്കില്‍ മികച്ച ഉള്‍ക്കാഴ്ച്ചകൊണ്ട് ഓരോരോ വിഷയത്തിനും പറ്റിയ അദ്ധ്യാപന രീതികള്‍ സ്വായത്തമാക്കിയവര്‍ ഉണ്ടാകുമെങ്കിലും അതു പങ്കുവെയ്ക്കുവാനൊരു വേദി നമുക്കില്ല.

ഫാക്കല്‍ട്ടി ഡെവലപ്പ്മെന്റ് പ്രോഗ്രാം (FDP) പലപ്പോഴും കോളെജുകള്‍ മുന്‍കൈ എടുത്തു നടത്താറുണ്ട്. അവിടെ subject knowledge വികസിപ്പിക്കുക എന്നതിലുപരി ബോധനശാസ്ത്രം അധികം ചര്‍ച്ചയിലെത്താറില്ല. ഇതിനു സാങ്കേതിക സര്‍വ്വകലാശാല തന്നെ ഒരു സ്ഥിരം സംവിധാനം രൂപീകരിക്കുന്നത് ദീര്‍ഘകാലാടിസ്ഥാനത്തില്‍ വലിയ ഗുണം ചെയ്യും. അതു വഴി അദ്ധ്യാപക പരിശീലനം ഓരോ വെക്കേഷന്‍ കാലത്തും നടത്തണം. അദ്ധ്യാപനത്തിന്റെ രീതിശാസ്ത്രം മുതല്‍ ചോദ്യപ്പേപ്പര്‍ തയ്യാറാക്കുവാനുള്ള പരിശീലനം വരെ കൊടുക്കുകയും വേണം. ഇതൊന്നും മേല്‍ത്തട്ടില്‍ നിന്നും നിര്‍ബന്ധം ചെലുത്തി ചെയ്യിക്കേണ്ടതില്ല. പരിശിലനം ലഭിച്ച അദ്ധ്യാപകരുടെ വിദ്യാര്‍ത്ഥികളില്‍ നിന്നുള്ള പ്രതികരണം കൊണ്ടു തന്നെ ഇതിന്റെ ആവശ്യകത തിരിച്ചറിഞ്ഞ് വേണ്ടവര്‍ പരിശീലനത്തിനെത്തിക്കൊള്ളും. ഓരോ വിഷയങ്ങള്‍ക്കും ലഭ്യമായിട്ടുള്ള അദ്ധ്യാപനസഹായികളുടെയും പഠന വിഭവങ്ങളുടെയും കേന്ദ്രീകൃതമായ വിഭവസമാഹരണം നടത്തി അതു സ്വതന്ത്രലൈസന്‍സില്‍ ലഭ്യമാക്കുകയും വേണം. ഇവയൊക്കെയുണ്ടെങ്കില്‍ തന്നെ ഒരു വിഷയം പുതിയതായി കൈകാര്യം ചെയ്യുന്ന അദ്ധ്യാപകര്‍ക്ക്  പോലും ‘സ്റ്റാര്‍ട്ടിങ്ങ് ട്രബിള്‍’ ഇല്ലാതെ സുഗമമായി അദ്ധ്യാപനം സാധ്യമാകും.

ക്ലാസ്സില്‍ നിന്നും തന്നെ വിഷയത്തിലുള്ള അടിസ്ഥാനം ഉറച്ചുകഴിഞ്ഞാല്‍ വിദ്യാര്‍ത്ഥികള്‍ക്ക്  നന്നായി തയ്യാറാക്കിയ ഒരു ചോദ്യപ്പേപ്പര്‍ നേരിടാന്‍ ബുദ്ധിമുട്ടുണ്ടാവുകയില്ല. എന്താണെന്നും എന്തിനാണെന്നുമറിയാത്ത ഒരു വിഷയം പാസ്സാകാനുള്ള നോട്ടുകളും  കുറുക്കുവഴിയും അന്വേഷിച്ചു സമയം കളയേണ്ടി വരില്ല അവര്‍ക്ക്. ഈ അധികസമയം മതിയാകും പഠിച്ച കാര്യങ്ങള്‍ പ്രായോഗികമായി ഉപയോഗിക്കുവാന്‍ ചുറ്റിലുമുള്ള അവസരങ്ങള്‍ തിരിച്ചറിഞ്ഞ് ചെറിയ പ്രോജക്റ്റുകള്‍ ചെയ്യുവാനും അതുവഴി പഠനകാലം സാര്‍ത്ഥകമാക്കുവാനും. ഇത്തരം പ്രവര്‍ത്തനങ്ങളൊക്കെത്തന്നെ മതിയാകും ഇന്റേണല്‍ മൂല്യനിര്‍ണ്ണയത്തിന്. സ്വന്തമായി ഇതൊക്കെ ചെയ്ത ഒരു വ്യക്തിക്ക് സെമസ്റ്ററവസാനമുള്ള പരീക്ഷയൊന്നും ഒരു വെല്ലുവിയേ ആവുകയില്ല.

ഇപ്പറഞ്ഞതൊക്കെ യാഥാര്‍ഥ്യമാക്കുവാന്‍ പോന്ന വിഭവശേഷിയൊക്കെ തല്‍ക്കാലം സാങ്കേതികസര്‍വ്വകലാശാലയ്ക്കില്ലെങ്കിലും അദ്ധ്യാപകരുടെ കൂട്ടായ്മകളൊക്കെ മുന്‍കൈ എടുത്താലെങ്കിലും കുറച്ചു ചുവടുവെപ്പുകള്‍ നടത്താനാകുമെന്നു കരുതുന്നു.

*കേരള, കാലിക്കറ്റ് സര്‍വകലാശാലകളിലെ കഴിഞ്ഞ ഒരു പത്തു വര്‍ഷത്തിനിടയില്‍ കണ്ടിട്ടുള്ള ചോദ്യപ്പേപ്പറുകളെക്കുറിച്ചാണ്.

by Kavya Manohar at January 26, 2017 05:06 AM

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

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

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

by Santhosh Thottingal at January 26, 2017 04:13 AM

January 01, 2017

Santhosh Thottingal

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

by Santhosh Thottingal at January 01, 2017 12:24 PM

Swanalekha input method documentation

Sayahna Foundation had prepared a single page documentation of Swanalekha input  method in PDF format. Since I often get emails about the key mapping, I am sharing it here.

PDF: http://thottingal.in/documents/swanalekha.pdf

Swanalekha Malayalam input method documentation

by Santhosh Thottingal at January 01, 2017 10:02 AM

December 31, 2016

Santhosh Thottingal

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

by Santhosh Thottingal at December 31, 2016 09:46 AM

November 15, 2016

Rajeesh K Nambiar

Improvement in converting video/audio files with VLC

VLC Media Player has the ability to convert video/audio files into various formats it supports, since a long time. There is a dedicated “Convert/Save” menu for converting single or multiple files at once into a different format, with limited ‘editing’ features such as specifying a start time, caching options etc. It is quite useful for basic editing/cropping of multimedia files.

As an example, one of the easiest ways to create a custom iPhone ringtone is to create a “.m4r” (AAC format) file exactly 40 seconds long. It is a matter of selecting your favourite music file and doing a “Convert/Save” with appropriate “Profile”. A “Profile” specifies the video/audio encoding to be used, which can be easily customized by selecting different audio and video codecs.

The options “Caching time”, “Play another media synchronously” (think adding different sound track to a video clipping) and a “Start time” etc can be specified under “Show more options” button and even more advanced functionality is available by making use of the “Edit Options” line. Internally, all the options specified at this line are passed to the converter.

There was one thing lacking in this “Convert/Save” dialog though – there was no possibility to specify a “Stop Time” akin to the “Start Time”, in the GUI (although it can be manually specified in the “Edit Options”, but you need to calculate the time in milliseconds). VLC 2.x series convert looks like as follows – notice the lack of “Stop time”:

vlc-convert-old

Being bugged by this minor annoyance, I set out to add the missing “Stop-time” functionality. Going through the codebase of VLC, it was relieving to see that the converter backend already supports “:stop-time=” option (akin to “:start-time=”). It was then a matter of adding “Stop Time” to the GUI and properly updating the “Edit Options” when user changes the value.

A working patch was then sent to vlc-devel mailing list for review and feedback. After 5 rounds of review and constructive feedback from Filip Roséen the code was cleaned up (including existing code) which is now committed to the master branch. This functionality should be available to users in the upcoming 3.0 release. Screenshot below:

vlc-convert-stop-time

 


Tagged: hacking, vlc

by Rajeesh at November 15, 2016 06:05 PM

November 09, 2016

Santhosh Thottingal

Electronic Design and Automation Lab: Migration to Scilab

The third semester B.Tech Electronics and Communication Engineering programme of Kerala Technological University (KTU) has a lab course on electronic design and automation. The course aims to introduce the students to various electronic design and simulation tools like SPICE, MATLAB and HDL.

diode

I had proposed the migration of the MATLAB section of this lab course to SCILAB, a popular open source alternative to MATLAB. The migration is now complete with support from FOSSEE . The source code of the experiments are now available here. A detailed lab manual will be made available soon.

spiral

 

by Kavya Manohar at November 09, 2016 02:30 PM

November 07, 2016

Santhosh Thottingal

September 30, 2016

Santhosh Thottingal

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-titleMathrubhumi daily uses a mixed orthography, except the ു sign, it mostly follows traditional writing style with many conjuncts and stacked ligatures
Manorama-TitleMalayala 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.

by Santhosh Thottingal at September 30, 2016 03:07 AM

September 07, 2016

Balasankar C

SMC/IndicProject Activities- ToDo List

Heya,

So, M.Tech is coming to an end I should probably start searching for a job soon. Still, it seems I will be having a bit of free time from Mid-September. I have got some plans about the areas I should contribute to SMC/Indic Project. As of now, the bucket list is as follows:

  1. Properly tag versions of fonts in SMC GitLab repo - I had taken over the package fonts-smc from Vasudev, but haven’t done any update on that yet. The main reason was fontforge being old in Debian. Also, I was waiting for some kind of official release of new versions by SMC. Since the new versions are already available in the SMC Fonts page, I assume I can go ahead with my plans. So, as a first step I have to tag the versions of fonts in the corresponding GitLab repo. Need to discuss whether to include TTF file in the repo or not.
  2. Restructure LibIndic modules - Those who were following my GSoC posts will know that I made some structural changes to the modules I contributed in LibIndic. (Those who don’t can check this mail I sent to the list). I plan to do this for all the modules in the framework, and to co-ordinate with Jerin to get REST APIs up.
  3. GNOME Localization - GNOME Localization has been dead for almost two years now. Ashik has shown interest in re-initiating it and I plan to do that. I first have to get my committer access back.
  4. Documentation - Improve documentation about SMC and IndicProject projects. This will be a troublesome and time consuming task but I still like our tools to have proper documentation.
  5. High Priority Projects - Create a static page about the high priority projects so that people can know where and how to contribute.
  6. Die Wiki, Die - Initiate porting Wiki to a static site using Git and Jekyll (or any similar tool). Tech people should be able to use git properly.

Knowing me pretty much better than anyone else, I understand there is every chance of this being “Never-being-implemented-plan” (അതായത് ആരംഭശൂരത്വം :D) but still I intend to do this in an easy-first order.

September 07, 2016 04:47 AM

August 23, 2016

Anwar N

GSoC 2016 IBus-Braille-Enhancement Project - Summary

Hi,
   First of all my thanks to Indic Project and Swathanthra Malayalam Computing(SMC) for accepting this project. All hats off to my mentors Nalin Sathyan and Samuel Thibault. The project was awesome and I believe that I have done my maximum without any prior experience

Project Blog : http://ibus-braille-enhancement.blogspot.in/


Now let me outline what we have done during this period.

Braille-Input-Tool (The on-line version)
  Just like Google transliteration or Google Input Tools online. This is required because it's completely operating system independent and it's a modern method which never force user to install additional plugin or specific browser. The user might use this form temporary places like internet cafe. This is written using JQuery and Html. And works well in GNU/Linux, Microsoft windows, Android etc

See All Commits : https://github.com/anwar3746/braille-input/commits/gh-pages
Test with following link : http://anwar3746.github.io/braille-input/


IBus-Braille enhancements
See All Commits : https://gitlab.com/anwar3746/ibus-braille/activity

1 IBus-Braille integrated with Liblouis : The Liblouis software suite provides an open-source braille translator, back-translator and formatter for a large number of languages and braille codes. So maintaining and shipping separate braille maps(located at /share/ibus-sharada-braille/braille) with ibus-braille is a bad idea. Through this we completely adopted Ibus-Braille to use Liblouis. The conversion is done in an entire word manner instead of each letter. ie the conversion does after writing direct braille unicode and pressing space.
Commit 1 : https://gitlab.com/anwar3746/ibus-braille/commit/6826982fa39cbd2e155bfb389658e16cc57b0dae
Commit 2 : https://gitlab.com/anwar3746/ibus-braille/commit/7032cf7b0c8cea7ce6c619c39750f5110effcfa3
Commit 3 : https://gitlab.com/anwar3746/ibus-braille/commit/46ec83a1caab75b2b25bbd06e1156d927b33c211

See Picture of Ibus-Braille preferences given below

2 8-Dot braille Enabled : Yes languages having more than 64 characters which can't be handled with 64 (6 dots ) combination are there, Music notations like  “Abreu” and LAMBDA (Linear Access to Mathematics for Braille Device and Audio Synthesis) uses 8-dot braille system.  unicode support 8-dot braille.
Commit 1 : https://gitlab.com/anwar3746/ibus-braille/commit/54d22c0acbf644709d72db076bd6de00af0e20b9

See key/shortcut page picture of ISB preferences dot setting

3 Dot 4 issue Solved :  In IBus-Braille when we type in bharati braille such as Malayalam, Hindi, etc. we have to use 13-4-13 to get letter ക്ക(Kka). But according to braille standard in order to get EKKA one should press 4-13-13. And this make beginners to do extra learning to start typing. Through this project we solved this issues and a conventional-braille-mode switch is provided in preferences in order to switch between.

Commit : https://gitlab.com/anwar3746/ibus-braille/commit/089edca78d31355c3ab0e08559f0d9fe79929de6

4 Add Facility to write direct Braille Unicode : Now one can use IBus-Braille to type braille dot notation directly with the combination.  The output may be sent to a braille embosser. Here braille embosser is an impact printer that renders text in braille characters as tactile braille cells.

Commit : https://gitlab.com/anwar3746/ibus-braille/commit/4c6d2e3c8a2bbe86e08ca8820412201a52117ad1


5 Three to Six for disabled people with one hand : A three key implementation which uses delay factor between key presses for example 13 followed by
13 having delay less than delay factor (eg:0.2) will give X. If more, then output would be KK. If one want to type a letter having combination only 4,5,6 he have to press "t" key prior. The key and the Conversion-Delay can be adjusted from preferences.

Commit : https://gitlab.com/anwar3746/ibus-braille/commit/dda2bd83ba69fb0a0f6b526a940bc878bf230485

6 Arabic language added
Commit : https://gitlab.com/anwar3746/ibus-braille/commit/bd0af5fcfabf891f0b0e6649a3a6c647b0d5e336

7 Many bugs solved
Commit : https://gitlab.com/anwar3746/ibus-braille/commit/da0f0309edb4915ed770e9ab41e4355c2bd2c713
others are implied

Project Discourse : https://docs.google.com/document/d/16v-BMLLzWmzbo1n5S-wDTnUmFV-cwhoon1PeJ0mDM64/edit?usp=sharing
IBus-Sharada-Braille (GSoC 2014) : http://ibus-sharada-braille.blogspot.in/

Plugins for firefox and chrome
    This plugin can be installed will work with every text entry on the web pages no need for copy paste. extensions are written in Javascript.
See All Commits : https://github.com/anwar3746/braille-browser-addons/commits/master


Modification yet desirable are as following

1 Announce extra information through Screen Reader:  When user expand abbreviation or a contraction having more than 2 letters is substituted the screen reader is not announcing it. We have to write a orca(screen reader) plugin for Ibus-Braille

2 A UI for Creating and Editing Liblouis Tables

3 Add support for more Indic Languages and Mathematica Operators via liblouis

Braille-input-tool (online version)
                             
                       Liblouis integration
Conventional Braille, Three Dot mode and Table Type selection 
Chrome Extension

Direct braille unicode typing
 Eight dot braille enabled

by Anwar N (noreply@blogger.com) at August 23, 2016 04:39 AM

August 22, 2016

malayaleecoder

GSoC — Final Report!

So finally it’s over. Today is the last date for submission of the GSoC project. This entire ride was a lot informative as well as an experience filled one. I thank Indic Project organisation for accepting my GSoC project and my mentors Navaneeth K N and Jishnu Mohan for helping me out fully throughout this project.

The project kicked off keeping in mind of incorporating the native libvarnam shared library with the help of writing JNI wrappers. But unfortunately the method came to a stall when we were unable to import the libraries correctly due to lack of sufficient official documentations. So my mentor suggested me an alternative approach by making use of the Varnam REST API. This has been successfully incorporated for 13 languages with the necessity of the app requiring internet connection. Along with it, the suggestions which come up are also the ones returned by Varnam in the priority order. I would be contributing further to Indic Project to make the library method work in action. Apart from that see below the useful links,

  • this and this is related to adding a new keyboard with “qwerty” layout.
  • this is adding a new SubType value and a method to identify TransliterationEngine enabled keyboards.
  • this is adding the Varnam class and setting the TransliterationEngine.
  • this and this deals with applying the transliteration by Varnam and returning it back to the keyboard.
  • this is the patch to resolve the issue, program crashes on switching keyboards.
  • this makes sure that after each key press, the displayed word is refreshed and the transliteration of the entire word is shown.
  • this makes sure that on pressing deletion, the new word in displayed.
  • this creates a template such that more keyboards can be added easily.
  • this makes sure that the suggestions appearing are directly from the Varnam engine and not from the inbuilt library.
  • The lists of the commits can be seen here which includes the addition of layouts for different keyboards and nit fixes.

Add Varnam support into Indic Keyboard

https://medium.com/media/30df9a95b2ac8d2171a7e7a1d00fe0ad/href

The project as a whole is almost complete. The only thing left to do is to incorporate the libvarnam library into the apk and then we can call that instead of the Varnam class given here. The ongoing work for that can be seen below,

malayaleecoder/libvarnam-Android

//Varnam
varnamc -s ml -t "Adutha ThavaNa kaaNaam" //See you next time

by Vishnu H Nair at August 22, 2016 08:06 PM

Sreenadh T C

It’s a wrap!

“To be successful, the first thing to do is to fall in love with your work — Sister Mary Lauretta”

Well, the Google Summer of Code 2016 is reaching its final week as I get ready to submit my work. It has been one of those best three-four months of serious effort and commitment. To be frank, this has to be one of those to which I was fully motivated and have put my 100%.

Well, at first, the results of training wasn’t that promising and I was actually let down. But then, me and my mentor had a series of discussions on submitting, during which she suggested me to retrain the model excluding the data set or audio files of those speakers which produced the most errors. So after completing the batch test, I noticed that four of the data set was having the worst accuracy, which was shockingly below 20%. This was causing the overall accuracy to dip from a normal one.

So, I decided to delete those four data set and retrain the model. It was not that of a big deal, so I thought its not gonna be drastic change from the current model. But the result put me into a state of shock for about 2–3 seconds. It said

TOTAL Words: 12708 Correct: 12375 Errors: 520
TOTAL Percent correct = 97.38% Error = 4.09% Accuracy = 95.91%
TOTAL Insertions: 187 Deletions: 36 Substitutions: 297
SENTENCE ERROR: 9.1% (365/3993) WORD ERROR RATE: 4.1% (519/12708)

Now, this looks juicy and near to perfect. But the thing is, the sentences are tested as they where trained. So, if we change the structure of sentence that we ultimately give to recognize, it will still be having issues putting out the correct hypothesis. Nevertheless, it was far more better than it was when I was using the previous model.

So I guess I will settle with this for now as the aim of the GSoC project was to start the project and show proof of that this can be done, but will keep training better ones in the near future.

Google Summer of Code 2016 — Submission

  1. Since the whole project was carried under my personal Github repository, I will link the commits in it here : Commits
  2. Project Repository : ml-am-lm-cmusphinx
  3. On top of that, we (me and the organization) had a series of discussions regarding the project over here: Discourse IndicProject
https://medium.com/media/9e8990c8b26cb11e147e0d3e4c5642a7/href

Well, I have been documenting my way through the project over here at Medium starting from the month of May. The blogs can be read from here.

What can be done in near future?

Well, this model is still in its early stage and is still not the one that can be used error free, let alone be applied on applications.

The data set is still buggy and have to improved with better cleaner audio data and a more tuned Language Model.

Speech Recognition development is rather slow and is obviously community based. All these are possible with collaborated work towards achieving a user acceptable level of practical accuracy rather than quoting a statistical, theoretical accuracy.

All necessary steps and procedure have been documented in the README sections of the repository.

puts "thank you everyone!"

by Sreenadh T C at August 22, 2016 07:01 AM

August 21, 2016

Arushi Dogra

GSoC Final Report

Its almost the end of the GSoC internship. From zero knowledge of Android to writing a proposal, proposal getting selected and finally 3 months working on the project was a great experience for me! I have learned a lot and I am really thankful to Jishnu Mohan for mentoring throughout .

Contributions include :-

All the tasks mentioned in the proposal were discussed and worked upon.

Layouts 
I started with making the designs of the layouts. The task was to make Santali Olchiki and Soni layouts for the keyboard. I looked at the code of the other layouts to get a basic understanding of how phonetic and inscript layouts work. Snapshot of one of the view of Santali keyboard :

Screen Shot 2016-08-21 at 6.53.03 PM

Language Support Feature 
While configuring languages, the user is prompted about the locales that might not be supported by the phone.

Screen Shot 2016-08-21 at 6.33.25 PM

Adding Theme Feature
Feature is added at the setup to enable user to select the keyboard theme

Screen Shot 2016-08-21 at 6.49.21 PM

Merging AOSP code
After looking at everything mentioned in the proposal, Jishnu  gave me the job of  merging AOSP source code to the keyboard as the current keyboard doesn’t have changes that were released along with  android M code drop because of which target sdk is not 23 . There are a few errors yet to be resolved and I am working on that 😀

Overall, it was a wonderful journey and I will always want to be a contributor to the organisation as it introduced me to the world of open source and opened a whole new area to work upon and learn more.
Link to the discourse topic : https://discourse.indicproject.org/t/indic-keyboard-project/45

Thank You!  😀


by arushidogra at August 21, 2016 01:29 PM

August 17, 2016

Balasankar C

GSoC Final Report

Heya,

It is finally the time to wind up the GSoC work on which I have been buried for the past three months. First of all, let me thank Santhosh, Hrishi and Vasudev for their help and support. I seem to have implemented, or at least proved the concepts that I mentioned in my initial proposal. A spell checker that can handle inflections in root word and generate suggestion in the same inflected form and differentiate between spelling mistakes and intended modifications has been implemented. The major contributions that I made were to

  1. Improve LibIndic’s Stemmer module. - My contributions
  2. Improve LibIndic’s Spell checker module - My contributions
  3. Implement relatively better project structure for the modules I used - My contributions on indicngram

1. Lemmatizer/Stemmer

TLDR

My initial work was on improving the existing stemmer that was available as part of LibIndic. The existing implementation was a rule based one that was capable of handling single levels of inflections. The main problems of this stemmer were

  1. General incompleteness of rules - Plurals (പശുക്കൾ), Numerals(പതിനാലാം), Verbs (കാണാം) are missing.
  2. Unable to handle multiple levels of inflections - (പശുക്കളോട്)
  3. Unnecessarily stemming root words that look like inflected words - (ആപത്ത് -> ആപം following the rule of എറണാകുളത്ത് -> എറണാകുളം)

The above mentioned issues were fixed. The remaining category is verbs which need more detailed analysis.

Long Version

A demo screencast of the lemmatizer is given below.

So, comparing with the existing stemmer algorithm in LibIndic, the one I implemented as part of GSoC shows considerable improvement.

Future work

  1. Add more rules to increase grammatical coverage.
  2. Add more grammatical details - Handling Samvruthokaram etc.
  3. Use this to generate sufficient training data that can be used for a self-learning system implementing ML or AI techniques.

2. Spell Checker

TLDR

The second phase of my GSoC work involved making the existing spell checker module better. The problems I could identify in the existing spell checker were

  1. It could not handle inflections in an intelligent way.
  2. It used a corpus that needed inflections in them for optimal working.
  3. It used only levenshtein distance for finding out suggestions.

As part of GSoC, I incorporated the lemmatizer developed in phase one to the spell checker, which could handle the inflection part. Three metrics were used to detect suggestion words - Soundex similarity, Levenshtein Distance and Jaccard Index. The inflector module that was developed along with lemmatizer was used to generate suggestions in the same inflected form as that of original word.

Long Version

A demo screencast of the lemmatizer is given below.

3. Package structure

The existing modules of libindic had an inconsistent package structure that gave no visibility to the project. Also, the package names were too general and didn’t convey the fact that they were used for Indic languages. So, I suggested and implemented the following suggestions

  1. Package names (of the ones I used) were changed to libindic-. Examples would be libindic-stemmer, libindic-ngram and libindic-spellchecker. So, the users will easily understand this package is part of libindic framework, and thus for indic text.
  2. Namespace packages (PEP 421) were used, so that import statments of libindic modules will be of the form from libindic.<module> import <language>. So, the visibility of the project ‘libindic’ is increased pretty much.

August 17, 2016 04:47 AM

August 16, 2016

Anwar N

IBus-Braille Enhancement - 3

Hi,
 A hard week passed!

1 Conventional Braille Mode enabled : Through this we solved dot-4 issue and now one can type using braille without any extra knowledge

commit 1 : https://gitlab.com/anwar3746/ibus-braille/commit/089edca78d31355c3ab0e08559f0d9fe79929de6

2 handle configure parser exceptions : corrupted isb configuration file can make it won't start. so I solved this by proper exception handling

commit 2 : https://gitlab.com/anwar3746/ibus-braille/commit/da0f0309edb4915ed770e9ab41e4355c2bd2c713

3 Liblouis integration : I think our dream is about to come true!  But still also we are struggling with vowel substitution on the middle.
commit 3 : https://gitlab.com/anwar3746/ibus-braille/commit/6826982fa39cbd2e155bfb389658e16cc57b0dae
commit 4 : https://gitlab.com/anwar3746/ibus-braille/commit/46ec83a1caab75b2b25bbd06e1156d927b33c211
commit 5 : https://gitlab.com/anwar3746/ibus-braille/commit/7032cf7b0c8cea7ce6c619c39750f5110effcfa3

by Anwar N (noreply@blogger.com) at August 16, 2016 08:35 PM

August 09, 2016

Sreenadh T C

What now?

“Now that the basic aim was fulfilled, what more can we work on, given there is almost half a month to GSoC Submission!”

Well, as of now the phoneme transcription was done purely based on the manner the word was written and not completely based on the Speech pattern. What I mean is that there are some exceptions in how we write the word and pronounce it (differently). This was pointed out by Deepa mam. She also asked if I could possibly convert some of the existing Linguistic rules(algorithms) that was made with Malayalam TTS in mind, so that it could be used to re-design the phoneme transcription. This could also turn out to be helpful for future use like using it for a fully intelligent Phoneme Transcriber for Malayalam Language Modeling.

This is what we are working on right now, and am literally like scratching my head over some loops in Python!

juzzzz jokinnn
The basic idea is to iterate over each line in the ‘ml.dic’ file and validate the transcription I made earlier with the set of rules. Correcting them (if found invalid) as it goes over.

Seems pretty straight forward! Will see how it goes!

Update — 4th August

Wew!, This is going nuts! OK so I first tried using Lists to classify the different types of phones. It all was good, until I reached a point in algorithm where I have to check if the current phoneme in the transcription is a member of a particular class of phoneme ( now, when I say, class of Phoneme, I just mean, the classification and not the class ). Of course I can search in List for the presence of the element and its quite sufficient enough to say in small comparisons. Our case is different. We are talking about around 7000 words in a file, on top of which each line will have significant amount of if-elif clauses.

This could slow down things and make the script less efficient ( will eventually see the difference ). So I went back to Python documentation and read about the Set Types ( set and frozenset )

A set object is an un-ordered collection of distinct hashable objects. Common uses include membership testing, removing duplicates from a sequence, and computing mathematical operations such as intersection, union, difference, and symmetric difference. — said the Python doc.

This is exactly what I wanted. I mean, I don’t have to do any manipulation to the phoneme classes, so there is no real meaning in using a List. Furthermore, the Set supports the ‘in’ using which the membership can be checked with no additional searching procedure. How cool is that!

here!

Update — 9th August

So, after some test on the script, I generated the dictionary file once again, this time applying some of the TTS rules. Now the SphinxTrain is running with this dictionary file. Hopefully, there should be some change in the accuracy.!

left panel with new dictionary, right panel with old dictionary
left panel with new dictionary, right panel with old dictionary

This might as well be the last development phase update if all goes well. Then it is submission time.

puts 'until then ciao'

by Sreenadh T C at August 09, 2016 01:56 PM

Anwar N

IBus-Braille Enhancement - 2

Hi, with this week I where fighting with my final semester exams! and it's over.  Also within this week I added the facility for typing direct braille Unicode.

https://gitlab.com/anwar3746/ibus-braille/commit/4c6d2e3c8a2bbe86e08ca8820412201a52117ad1

instead of converting to Unicode I added it as a new language so that one can later edit and use. 

by Anwar N (noreply@blogger.com) at August 09, 2016 03:40 AM

July 31, 2016

malayaleecoder

GSoC Progress — Week 8 & 9

Awesome, something good is happening :)

Cmake was giving me some trouble in the beginnning. After clearing all the dependency issues with the Cmake example, I was successfully able to run the endless-tunnel on my phone. Following the similar pattern of how the modules are being incorporated in the cmake app, we tried to incorporate the varnam module. The code for the attempt is given here.

Now there comes a problem :| I have documented the issue here,

Adding a new native module using CMake yields "Error: exception during working with external system:"

After 9 days, there has still not been a single response :( So as an alternative we have decided to use the varnam API. I have completed the class for the same and is yet to link to the Keyboard input from the Indic Keyboard app. This part is the agenda for the next week.

//Pascal
program HelloWorld(output);
begin
writeln("That's all for now, see you next time!")
end.

by Vishnu H Nair at July 31, 2016 04:53 PM

Sreenadh T C

‘He’ just recognized what I said!

Yipeeee!!
Well, the title says it all. The computer just recognized what I said in my Mother Tongue! A major step in the right the direction.

For this to happen, I had to complete the Acoustic Model training. So then!

What is Acoustic Model!

Well it is a set of statistical representational parameters used to learn the language by representing the relation between audio signal and corresponding linguistic features that make up that speech or audio ( phoneme, and transcription! ).

To produce these we need to set up a database structure as documented by the CMU SphinxTrain team. Some of these files were common to the Language Model preparation like the phoneme transcription file. After setting up the database it should look like this irrespective of the language!

The training is straight forward if you get the database error free which was not my case! Thank you! ( ** if you get it error free on the first run, you are probably doing it wrong! ** )

I had to solve two issues ( 1 and 2 ) before I could run the training without any hiccups! It took a day to make the patch works in the files. The documentation didn’t mention that the phone set should contain a maximum of 255 phones due to practical limitation though theoretically it had no problems ( found out myself from the CMU help forums. ). That was the Issue : Reduce phoneset to a max of 255 #31. I successfully reduced to what is found in the current repository version.

Update — July 27

Acoustic Model is ready for testing!

How??!!
$ sphinxtrain -t ml setup

This command will setup the ‘etc’ and ‘wav’ folder as mentioned above. Now we need to setup the sphinx_train.cfg config file which is excellently documented by the team.

Once that is out of the way, run the training.

$ cd ml

and,

$ sphinxtrain run

and,

wait!!

..

….

still waiting!!

.

..

Finally its done! Took quite a lot of time!

Not only that, my Zenbook finally started showing heating and fan noise. That sixth gen Intel needed some extra air! ( ** nice! ** ).

Update — July 29

Well, this means, the GSoC 2016 aim have been achieved which was to develop the Language Model and Acoustic Model. Only thing left is to keep testing it.

The discussion with Deepa mam helped in bringing out a possibility in improving the accuracy which am working on as a branch in parallel to the testing.

With that in mind for the coming week, that’s it for this week

puts "until then ciao!"

by Sreenadh T C at July 31, 2016 07:46 AM

July 30, 2016

Rajeesh K Nambiar

Convert iPhone contacts to vCard

On a recent troubleshooting attempt, I lost all the contacts in my Android phone. It had also received a recent update which took away the option to import contacts from another phone via bluetooth.
I still had some contacts in the old iPhone, but now that mass transfer via bluetooth is gone, it was a question of manually sending each contact in vCard format to the Android phone. That means I should probably find a less dreadful way to get the contacts back.

Here is one way to extract contacts en-masse from iPhone into popular vCard format. The contact and address details in iOS are stored by AddressBook application in a file named ‘AddressBook.sqlitedb’ which is an sqlite database. The idea is to open this database using sqlite, extract the details from a couple of tables and convert the entries into vCard format.

Disclaimer: the iPhone is an old 3GS running iOS 6 and it is jailbroken. If you attempt this, your mileage would vary. Required tools/softwares are usbmuxd (especially libusbmuxd-utils) and sqlite, with the prerequisite that openssh server is running on the jailbroken iPhone.

  1. Connect iPhone via USB cable to the Linux machine. Run iproxy 2222 22 to connect to the openssh server running on the jailbroken phone. iproxy comes with libusbmuxd-utils package.
  2. Copy the addressbook sqlite database from phone:scp -P 2222 mobile@localhost:/var/mobile/Library/AddressBook/AddressBook.sqlitedb .Instead of steps 1 and 2 above, it might be possible to copy this file using Nautilus (gvfs-afc) or Dolphin (kio_afc) file manager, although I’m not sure if the file is accessible.
  3. Extract the contact and address details from the sqlite db (based on this forum post):sqlite3 -cmd ".out contacts.txt" AddressBook.sqlitedb "select ABPerson.prefix, ABPerson.first,ABPerson.last,ABPerson.organization, c.value as MobilePhone, h.val ue as HomePhone, he.value as HomeEmail, w.value as WorkPhone, we.value as WorkEmail,ABPerson.note from ABPerson left outer join ABMultiValue c on c.record_id = ABPerson.ROWID and c.label = 1 and c.property= 3 left outer join ABMultiValue h on h.record_id = ABPerson.ROWID and h.label = 2 and h.property = 3 left outer join ABMultiValue he on he.record_id = ABPerson.ROWID and he.label = 2 and he.property = 4 left outer join ABMultiValue w on w.record_id = ABPerson.ROWID and w.label = 4 and w.property = 3 left outer join ABMultiValue we on we.record_id = ABPerson.ROWID and we.label = 4 and we.property = 4;"
  4. Convert the extracted contact details to vCard format:cat contacts.txt | awk -F\| '{print "BEGIN:VCARD\nVERSION:3.0\nN:"$3";"$2";;;\nFN:"$2" "$3"\nORG:"$4"\nEMAIL;type=INTERNET;type=WORK;type=pref:" $9"\nTEL;type=CELL;type=pref:"$5"\nTEL;TYPE=HOME:"$6"\nTEL;TYPE=WORK:"$8"\nNOTE:"$9"\nEND:VCARD\n"}' > Contacts.vcf
  5. Remove the empty content lines if some contacts do not have all the different fields:sed -i '/.*:$/d' Contacts.vcf

Now simply transfer the Contact.vcf file containing all the contact details to Android phone’s storage and import contacts from there.


Tagged: hacking, linux, mac

by Rajeesh at July 30, 2016 09:16 AM

Anwar N

IBus-Braille Enhancement - 1

Hi,
  This week I forked IBus-Braille project from SMC GitLab repository  added two things.

1 Eight-Dot braille enabled. Now one can add languages with 8 dot's. The default keys are Z for dot 7 and period for dot-8. This can be remapped using preferences. 
https://gitlab.com/anwar3746/ibus-braille/commit/54d22c0acbf644709d72db076bd6de00af0e20b9


2 Arabic Language added and tested with users
https://gitlab.com/anwar3746/ibus-braille/commit/bd0af5fcfabf891f0b0e6649a3a6c647b0d5e336

See commits : https://gitlab.com/anwar3746/ibus-braille/commits/master

by Anwar N (noreply@blogger.com) at July 30, 2016 03:23 AM

July 26, 2016

Arushi Dogra

Updates on work

My next task was to show instead of all layouts, filter them on the basis of language. My first option I decided to do filtering based on locale. So instead of ACTION_INPUT_METHOD_SUBTYPE_SETTINGS we can use ACTION_LOCALE_SETTINGS but the problem here was that it was giving a list of all the locales in the system instead of the locales in our app. So I skipped this idea. And then decided to create a list and enable users selection on that. But there was no way to connect that to enabled system subtypes. I was stuck on this for quite some time .We ditched the plan and moved on to the “Theme selection” task.

I am currently working on the Theme Selection task . I have successfully added the step . But now I am working on adding the fragment instead of the whole activity . After I am done with this, I will move to adding the images of the themes. I will hopefully complete this task by the weekend.

Also , after a meeting with the mentor, it is decided that after this task I will work on merging AOSP source code to the keyboard as the current keyboard doesn’t have changes that were released along with  android M code drop because of which target sdk is not 23 . So my next task will be merging AOSP code which will give the benifit of run time permissions. 😀


by arushidogra at July 26, 2016 12:34 AM

July 25, 2016

Balasankar C

4 Days. 22 Hours. LaTeX.

Heya folks,

One of the stuff I love doing is teaching what I know to others. Though it is a Cliché dialogue, I know from experience that when we teach others our knowledge expands. From 10 students, you often get 25 different doubts and minimum 5 of them would be ones you haven’t even thought yourself earlier. In that way, teaching drives a our curiosity to find out more.

I was asked to take a LaTeX training for B.Tech students as a bridge course (happening during their semester breaks. Poor kids!). The usual scenario is faculty taking class and we PG students assisting them. But, since all the faculty members were busy with their own subjects’ bridge courses and LaTeX was something like an additional skill that the students need for their next semesters for their report preparation, I was asked to take to take it with the assistance of my classmates. At first, I was asked to take a two-day session for third year IT students. But later, HOD decided that both CS and IT students should have that class, and guess what - I had to teach for four days. Weirdly, the IT class was split to two non-continuous dates - Monday and Wednesday. So, I didn’t have to take class for four consecutive days, but only three. :D

The syllabus I followed is as follows:

  • Basic LaTeX – Session I
    1. Brief introduction about LaTeX, general document structure, packages etc.
    2. Text Formatting
    3. Lists – Bullets and Numbering
  • Graphics and Formulas – Session II
    1. Working with Images
    2. Tables
    3. Basic Mathematical Formulas
  • Academic Document Generation (Reports and Papers) – Session III
    1. Sectioning and Chapters
    2. Header and Footer
    3. Table of Contents
    4. Adding Bibliography and Citations
    5. IEEETran template
  • Presentations using Beamer – Session IV

As (I, not the faculty) expected, only half of the students came (Classes on semester breaks, I was surprised when even half came!). Both the workshops - for CS and IT - were smooth without any much issues or hinderences. Students didn’t hesitate much to ask doubts or tips on how to do stuff that I didn’t teach (Unfortunately, I didn’t have time to go off-syllabus, so I directed them to Internet. :D). Analysing the students, CS students were more lively and interactive but they took some time to grasp the concept. Compared to them, even though kind of silent, IT students learned stuff fast.

By Friday, I had completed 4 days, around 22 hours of teaching and that too non-stop. I was tired each day after the class, but it was still fun to share the stuff I know. I would love to get this chance again.

IT Batch

IT Batch




CSE Batch

CSE Batch

July 25, 2016 12:00 AM

July 24, 2016

Sreenadh T C

Developing the Language Model

Finally, I can start the work towards Milestone — 2, which is completing the development of Language Model for Malayalam. Time to completely switch to Ubuntu from here on. Why?

Well, all the forums related to CMU Sphinx keep telling that they won’t monitor the reports from Windows anyways, and since all the commands and codes mentioned in the documentation is more inclined to Linux, let’s just stick to it as well. After all, when it comes to Open-Source, why should I develop using Microsoft Windows. (** Giggle **)

What is a Statistical Language Model?

Statistical language models describe more complex language, which in our case is Malayalam. They contain probabilities of the words and word combinations. Those probabilities are estimated from a sample data ( the sentence file ) and automatically have some flexibility.

This means, every combination from the vocabulary is possible, though probability of such combination might vary.

Let’s say if you create statistical language model from a list of words , which is what I did for my Major Project work, it will still allow to decode word combinations ( phrases or sentences for that matter. ) though it might not be our intent.

Overall, statistical language models are recommended for free-form input where user could say anything in a natural language and they require way less engineering effort than grammars, you just list the possible sentences using the words from the vocabulary.

Let me explain this with a traditional Malayalam example:

Suppose we have these two sentences “ ഞാനും അവനും ഭക്ഷണം കഴിച്ചു ” and “ ചേട്ടൻ ഭക്ഷണം കഴിച്ചില്ലേ ”.

If we use the statistical language model of this set of sentences, then it is possible to derive more sentences from the words( vocabulary ).

ഞാനും (1) , അവനും (1) , ഭക്ഷണം (2) , കഴിച്ചു (1) , ചേട്ടൻ (1) , കഴിച്ചില്ലേ (1)

That is, we can have sentences like “ ഞാനും കഴിച്ചു ഭക്ഷണം ” or maybe “ഭക്ഷണം കഴിച്ചില്ലേ ”, or “ അവനും കഴിച്ചില്ലേ ” and so on. It’s like the Transitive Property of Equality but in a more complex manner. Here it's related to probability of occurrence of a given word after a word. Now this is calculated using the sample data that we provide as the database.

Now, you might be wondering what the numbers inside the parenthesis mean. Those are nothing but the number of occurrences of each word in the given complete set of sentences. This is calculated by the set of C libraries provided by a toolkit that I will introduce shortly.

Update — July 18

Okay!

Let’s start building. If you remember from my previous blog post/articles, you can recollect me writing about extracting words and then transcribing those to phonetic representation. Those words are nothing but the vocabulary that I just showed.

For building a language model of such a large scale vocabulary, you will need to use specialized tools or algorithms. One such set of algorithms are provided as C Libraries by the name “CMU-Cambridge Statistical Language Modeling Toolkit” or in short CMU-CLMTK. You can head over to their official page to know more about it. I have already installed it. So we are ready to go.

So according to the documentation,

The first step is to find out the number of occurrences. (text2wfreq)

cat ml.txt | text2wfreq > ml.wfreq

Next we need the .wfreq to .vocab file without the numbers and stuff. Just the words.

cat ml.wfreq | wfreq2vocab -top 20000 > ml.vocab

Oops, there are some issues with the generated vocab file regarding repetitions and additional words here and there which are not required. This might have happened while I was filtering the sentences file but forgot to update or skipped updating the transcription file. Some delay in further process. It's already late night! I need to sleep!

Update — July 19

‘Meld’. Thank you StackExchange

With this guy, its easy to compare everything and make changes simultaneously. It should be done by today!

.

.

Done!

Okay, now that the issue have been handled, we are getting somewhere. It should be pretty much straight forward now.

Next we need find list of every id n-gram which occurred in the text, along with its number of occurrences. i.e. Generate a binary id 3-gram of the training text ( ml.txt ), based on this vocabulary ( ml.vocab ).

By default, the id n-gram file is written out as binary file, unless the -write_ascii switch is used in the command.

-temp ./ switch can be used if youwant to run the command without root permission and use the current working directory as the temp folder. Or you can just run it as root, without any use, which by default will use /usr/tmp as temp folder.

cat ml.txt | text2idngram -vocab ml.vocab -temp ./ > ml.idngram

Finally, we can generate the Language Model. This can either be an ARPA model or a Binary.

idngram2lm -idngram ml.idngram -vocab ml.vocab -binary ml.bin

or

idngram2lm -idngram ml.idngram -vocab ml.vocab -arpa ml.arpa

Even though ARPA is available, using the binary format of the language model is recommended for faster operations.

Here is the basic work-flow.

as provided by the Toolkit Documentation.

That’s it. The Language Model is complete. I can now go ahead into next step, that is building and training the Acoustic Model.

by Sreenadh T C at July 24, 2016 06:13 AM

July 23, 2016

Santhosh Thottingal

Manjari Font

I am happy to announce the new Malayalam font I was designing for past several months. The new font is named “Manjari”.

Malayalam blogpost: https://blog.smc.org.in/manjari-font/

Malayalam script is known for its curly characters with beautiful loops. Encoded in unicode around 2001, it is relatively new to the digital age. The script has been evolving from rectangle shaped to oval shaped types of varying proportions. The popular culture is more of oval/ellipse shaped curves, mainly because writing methods using stensils or pens demanded less sharp corners. The character or ligature shapes has also been changing gradually towards the shapes that are easy with pens. The Manjari font takes that to another level by smoothening all curves to its maximum.

The curves are constructed along the spiral segments. The resulting shapes are extra smooth. The curve perfection resulted in whitespaces that aquired beautiful leaf and drop shapes between the bowls and loops of the script. It is illustrated in the specimen. The spiral smoothness of curves were complemented by rounded terminals which gives very soft feeling for the eyes.

The design of the curves in Manjari are theoretically based on the PHD thesis by Raph Levien – “From Spiral to Spline: Optimal Techniques in Interactive Curve Design” (http://www.levien.com/phd/thesis.pdf). The Inconsolata monospace humanist latin font known for its clean lines and elegant design by Levien himself is based on this theory.

Normal, Bold, Thin style variants are available. This is the first Malayalam unicode font with thin style variant

Download

The curve strokes in Manjari were drawn in Inkscape using the spiral library written by Raph Levien himself  and opentype feature compilation was done using FontForge. The font is about to release in next few days, SVGs, scripts and source is available at https://gitlab.com/smc/manjari 

Orion Champadiyil prepared some illustrations using the font, you can see them in our font download page

News reports

 

by Santhosh Thottingal at July 23, 2016 06:29 AM

July 21, 2016

Balasankar C

Kerala State IT Policy - A Stakeholder Consultation

Heya folks,

Last Saturday, that is 16th July, I attendeda a meeting regarding the upcoming Kerala State IT Policy. It was a stakeholder consultation organized by DAKF, Software Freedom Law Centre and Ernakulam Public Library Infopark branch. The program was presided by Prasanth Sugathan of SFLC (I had met him during Swatanthra, when I helped Praveen in the Privacy track) and was inaugurated by M. P Sukumaran Nair, advisor to the Minister of Industries. The agenda of the meeting was to discuss about the suggestions that needs to be submitted to the Government before they draft the official IT policy, that will be in effect for the next few years. I attended the meeting representing Swathanthra Malayalam Computing. Even though the meeting had a small audience, some of the key topics were brought into the mix.

Professor Jyothi John, retired principal of Model Engg. College, discussed about MOOCs to improve the education standard of the State. He also talked about improving the industry-academia-research relationship that is in a pathetic state as of now. I was asked to talk a few words. But, since SMC hadn’t taken any official stand or points for the meeting, I actually talked about my views about the issue. Obviously, my topics were more focused on Language Computing, Digital empowerment of the language and as well as how FOSS should be the key stone of the IT policy. I also mentioned about the E-Waste problem that Anivar had discussed the other day on the Whatsapp group.

Me Talking

Me Talking | PC: Sivahari

Mr. Joseph Thomas, the president of FSMI also talked on the importance of FOSS in IT policy (Kiran Thomas had some pretty strong disagreements with it. :D ). Following that, Babu Dominic from BSNL talked about their success stories with FOSS and how the project was scraped by government. There were some brilliant insights from Satheesh, who is a Social Entrepreneur now and once ran an IT-based company.

Following that, the meeting took the form of a round table discussion where interesting points regarding E-Waste and the money-saving nature of FOSS (Microsoft has been targetting Institutions for pirated copies, not home users) were raised by Mr. Bijumon, Asst Professor of Model Engg College. Mr. Jayasreekumar, who is a journalist talked about the important issue of the downtrodden people, or the people in the lower socio-economic belt were not part of the discussion and the image of digital divide that carves. We have to seriously increase diversity of participants in these meetings, as a large part of the population has no representation in them. Such meetings will be only fruitful, if the sidelined communities who also should benefit from this policy are brought together to participate in them.

The general theme of the meeting was pointing towards how the IT policy should focus more on the internal market, and how it should be helpful in entrepreneurs in competing with foreign competitors, atleast in the domestic market.

News Coverage in Deshabhimani

News Coverage | PC: Deshabhimani

More and more meetings of this nature are a must, if the state is to advance in the domain of IT.

July 21, 2016 12:00 AM

July 20, 2016

Anwar N

work progress in browser-addon

Hi,
 About two months passed. We do many testing on online braille-input tool. And some widgets rearranged for user comforts. In the recent weeks we made a good progress in both Firefox and Chrome browser addons. But still we suffer from a grate problem with  these addons, The plugins are not working in google chat and Facebook chat entry's.  We are seeking the solution...

by Anwar N (noreply@blogger.com) at July 20, 2016 08:15 PM

July 19, 2016

Balasankar C

GSoC Update: Week #7 and #8

Heya,

Last two weeks were seeing less coding and more polishing. I was fixing the LibIndic modules to utilize the concept of namespace packages (PEP 420) to obtain the libindic.module structure. In the stemmer module, I introduced the namespace package concept and it worked well. I also made the inflector a part of stemmer itself. Since inflector's functionality was heavily dependent on the output of the stemmer, it made more sense to make inflector a part of stemmer itself, rather than an individual package. Also, I made the inflector language-agnostic so that it will accept a language parameters as input during initialization and select the appropriate rules file.

In spellchecker also, I implemented the namespace concept and removed the bundled packages of stemmer and inflector. Other modifications were needed to make the tests run with this namespace concept, fixing coverage to pick the change etc. In the coding side, I added weights to the three metrics so as to generate suggestions more efficiently. I am thinking about formulating an algorithm to make comparison of suggestions and root words more efficient. Also, I may try handling spelling mistakes in the suffixes.

This week, I met with Hrishi and discussed about the project. He is yet to go through the algorithm and comment on that. However he made a suggestion to split out the languages to each file and make init.py more clean (just importing these split language files). He was ok with the work so far, as he tried out the web version of the stemmer.

[caption id="attachment_852" align="aligncenter" width="800"]hrishi_testing_spellchecker Hrishi testing out the spellchecker[/caption]

July 19, 2016 12:47 AM

July 16, 2016

malayaleecoder

GSoC Progress — Week 6 & 7

Why doesn’t it work!!!!!

Alright, for the past two weeks, me and my mentor have been trying a lot to call the varnam library in Java. First we went on trying to load the prebuilt library onto Android Studio and then use the methods in Java, which didn’t work :(

Now we are on a different route of compiling varnam during runtime. For this we are following the cmake example given here. Another thing to note that is, cmake requires canary Android Studio which can be downloaded here. It all started off well when it was seen that OSX has a problem running that.

Now I am getting it all setup on Linux as well as Windows( just in case :P ) Sorry in not writing any technical details, will make it up in the next week.

//Rust
fn main() {
println!('That's all for now, see you next time!');
}

by Vishnu H Nair at July 16, 2016 06:49 AM

Sreenadh T C

Mentioning the huge contributions

“ In open source, we feel strongly that to really do something well, you have to get a lot of people involved. — Linus Torvalds ”

I have always loved the idea of Open Source and have been fortunate enough to be participating in one of the world’s best platform for a student to develop, grow, and learn. Google Summer of Code 2016 have gone past it’s mid-term evaluation, and so have I. The last couple of weeks have been in a slow pace compared to the weeks in June.

contribution graph — May-June-July

This is simply because, I was ahead of my schedule while in the Mid-term evaluation period , also I didn’t want to rush things up and screw it up. But, I thought this is the right time to mention the contributions that have been taking place towards this Open Source Project.

Gathering recordings or speech data for training would mean that a lot of people have to individually record their part, and then send it to me. Now this might seem simple enough to some of you out there, but believe me, recording 250 lines or sentences in Malayalam with all its care is not going to be that interesting.

Nonetheless, pull requests have been piling up on my Repository since the early days of the project. The contribution has been really awesome.

What more can you ask for when your little brother who have absolutely no idea about what the heck am doing, but decides to record 250 sentences in his voice so that I could be successful in completing the project! (** aww… you little prankster… **)

And he did all this without making much of a mistake or even complaining about the steps I instructed him to follow. He was so careful that he decided to save after I confirm each and every sentence as he records them. (** giggles **). For those who are interested in knowing what he contributed, take a look at this commit and this. Oh and by the way, he is just 11 years old :) .

To not mention other friends along with this, would be unfair.

So here is a big shout out to all 18 other guys and gals without whom this would not have reached this far.

I know this blog post was not much about the project when looking in one aspect but, when you look it in another point of view, this is one of the most important part of my GSoC work.

With the final evaluation, coming up in 4.5 weeks or so, it is time to start wrapping up my work and put up a final submission in a manner that someone with same enthusiasm or even better can take up this and continue to work on it to better it.

I guess that’s it for this week’s update. More to follow as I near the completion of this awesome experience.

puts "until then ciao!"

by Sreenadh T C at July 16, 2016 06:14 AM

Santhosh Thottingal

A short story of one lakh Wikipedia articles

At Wikimedia Foundation, I am working on a project to help people translate articles from one language to another. The project started in 2014 and went to production in 2015.

Over the last one year, a total of 100,000 new artcles were created across many languages. A new article get translated in every five minutes, 2000+ articles translated per week.

The 100000th Wikipedia page created with Content Translation is in Spanish, for the song ‘Crying, Waiting, Hoping

I designed the technical architecture and continue to be the main developer. I am so proud to be part of a project that contributed this much for free knowledge.

Related blog posts in Wikimedia blog:

Content translation tool hits milestone with one hundred thousand articles

Wikipedia’s coverage of essential vaccines is expanding

Content Translation tool has now been used for 50,000 articles

Semi-automated content translation is coming to Scandinavian Wikipedias

Naradanews Malayalam published a note on this

ഓരോ അഞ്ച് മിനിറ്റിലും പുതിയ ലേഖനം; വിക്കിപീഡിയ ബഹുഭാഷാ സാന്നിധ്യം വർദ്ധിപ്പിക്കുന്നു

by Santhosh Thottingal at July 16, 2016 05:29 AM

July 15, 2016

Santhosh Thottingal

FOSS migration of electronic circuit simulation lab

My proposal for migrating basic electronic circuit simulation lab to the FOSS tool eSim has been approved. The source code and documentation of experiments can now be downloaded from here.

eSim is an open source EDA tool for circuit design, simulation, analysis and PCB design. eSim is developed by FOSSEE (Free and Open Source Software for Education) – an initiative of MHRD, Govt. of India. FOSSEE promotes the migration of labs in educational institutions from proprietary tools to FOSS only ones through lab migration projects.

I am really happy to have become a part of this project. You can read my previous post on eSim usage here.

by Kavya Manohar at July 15, 2016 02:41 PM

July 11, 2016

Arushi Dogra

Update on work

The week started with continuing the task for detection of supported locales. I was facing some problems initially. I was trying to first change the contents of a static file during runtime which I later realised couldn’t be done. So as directed by mentor I changed the approach and decided to prompt the user at the setup time about which languages might not be supported by the phone.
It looks something like this:

Screenshot_2016-07-12-00-24-21

Unfortunately my system crashed and the later part of my time was given to formatting the laptop,taking backup, installing the OS and re-setup of the project. Then I went home for my parents wedding anniversary for 3 days.

My next task : Improving the setup wizard . Since the user might not be interested in all the languages , so instead of showing all the layouts at once , we are planning to first ask the user to chose the language and then the corresponding layout in it. I have to discuss more with Jishnu regarding this task.


by arushidogra at July 11, 2016 07:16 PM

July 08, 2016

Hrishi

ട്രോളുകളുടേ ജനാധിപത്യം – മനോരമ ന്യൂസിലെ നിയന്ത്രണരേഖയിൽ

മനോരമ ന്യൂസിലെ നിയന്ത്രണരേഖയിൽ ട്രോളുകളുടേ ജനാധിപത്യം എന്ന വിഷയത്തിൽ നടന്ന ചർച്ചയിൽ ഐ.സി.യു. വിനെ പ്രതിനിധീകരിച്ച് പങ്കെടുത്തു. വി.ടി ബൽറാം, ഉഴവൂർ വിജയൻ, വി.വി രാജേഷ്, ആർദ്ര നമ്പ്യാർ , സുഭാഷ് നായർ എന്നിവരും പങ്കെടുത്തിരുന്നു

by Hrishi at July 08, 2016 07:46 PM

July 06, 2016

Anwar N

Braille-Input-Tool : The final touch

Hi,

            With this two weeks we have done many testing with users and done many additions according to their needs. The first one  is Key reassigning. as you know there are many keyboard variants also user like to set there own keys instead of using f,d,s,j,k and l. But this make the necessity of saving user preferences. So we done this using jstorage. it's working fine
https://github.com/anwar3746/braille-input/commit/9e8bb0b5ef9a54d61dfa5081d0966ec9d10f01a0


Key reassigning can be done by clicking "Configure Keys" button which will popup many entry's where user can remap his keys. Restore option is also provided there.
https://github.com/anwar3746/braille-input/commit/3d3469ab8a68711ba0189d61f02c7231297ded3a


New and Save are the basic things that should be provided by a online editor
https://github.com/anwar3746/braille-input/commit/074829d2f4be81b7fa984931a90a108e3bac03ab

Changing font color, font size and background color are very impotent for partially impaired blind people. For keeping the page accessible we choose combobox containing major color list instead of providing graphical color picker
https://github.com/anwar3746/braille-input/commit/f1f6d3de308386d08977f40bc417c4c1ac0b3eb9

Various bugfixes
https://github.com/anwar3746/braille-input/commit/9b8cbc8d54051e9cb330514aacc6d8e6066cf7c6
https://github.com/anwar3746/braille-input/commit/d8127ceb3dc567bfb1778a437d29c2cfe989b24f
https://github.com/anwar3746/braille-input/commit/d3a01c17db64d4fabbad29b18d605992b633270f
https://github.com/anwar3746/braille-input/commit/f34104bfb55c3e4e7735a23016ee913311444702

Braille-Input-Tool : http://anwar3746.github.io/braille-input/
See all commits : https://github.com/anwar3746/braille-input/commits/gh-pages


by Anwar N (noreply@blogger.com) at July 06, 2016 09:09 PM

July 05, 2016

Balasankar C

GSoC Update: Week #5 and #6

Heya,

Last two weeks were spent mostly in getting basic spellchecker module to work. In the first week, I tried to polish the stemmer module by organizing tags for different inflections in an unambiguous way. These tags were to be used in spellchecker module to recreate the inflected forms of the suggestions. For this purpose, an inflector module was added. It takes the output of stemmer module and reverses its operations. Apart from that, I spent time in testing out the stemmer module and made many tiny modifications like converting everything to a sinlge encoding, using Unicode always, and above all changed the library name to an unambiguous one - libindic-stemmer (The old name was stemmer which was way too general).

In the second week, I forked out the spellchecker module, convert the directory structure to match the one I've been using for other modules and added basic building-testing-integration setup with pbr-testtools-Travis combination. Also, I implemented the basic spell checking and suggestion generation system. Like stemmer, marisa_trie was used to store the corpus. Three metrics were used to generate suggestions - Soundex similarity, Levenshtein Distance and Jaccard's Index. With that, I got my MVP (Minimum Viable Product) up and running.

So, as of now, spell checking and suggestion generation works. But, it needs more tweaking to increase efficiency. Also, I need to formulate another comparison algorithm, one tailored for Indic languages and spell checking.

On a side note, I also touched indicngram module, ported it to support Python3 and reformatted it to match the proposed directory that I have been using for other modules. A PR has been created and am waiting for someone to accept it.

July 05, 2016 01:57 PM