Typoday 2018

Santhosh and I jointly presented a paper at Typoday 2018. The paper was titled ‘Spiral splines in typeface design: A case study of Manjari Malayalam typeface’. The full paper is available here. The presentation is available here.

Typoday is the annual conference where typographers and graphic designers from academia and industry come up with their ideas and showcase their work. Typoday 2018 was held at Convocation Hall, University of Mumbai.


Manjari 1.5 version released

A new version of Manjari typeface is available now. Version 1.5 is mainly a bug fix release.

In version 1.3, the build tooling of the project was changed from fontforge to fontmake. Two weeks back a few people reported that the font no longer works in MS Word and Wordpad. Font selector lists the font, but when selected, the content remains same. It works in all other applications without any issues. Because of that the bug went unnoticed.

Debugging the issue was not easy since font works everywhere else. I did a line by line diff of the ttx format(XML font format) of old and new version fonts.  Found that the OS/2 ulUnicodeRange, ulCodePageRange values were set to 0 in version 1.3.  Apparently these values are really checked by MS Word and Wordpad. If these are missing Wordpad and Word just rejects the font.  Correct values for these fields are set now.

New version 1.5 is available now. You can download the latest fonts from https://smc.org.in/fonts/#manjari

Stylistic Alternates for ച്ച, ള്ള in Manjari and Chilanka fonts

The ligatures for the Malayalam conjuncts ച്ച, ള്ള have less popular variants as shown below

The second form is not seen in print but often in handwritten Malayalam. I have seen it a lot in bus boards especially at Thiruvananthapuram. There are no digital typefaces with the second style, except the Chilanka font I designed. It uses the second variant of ച്ച. I got lot of appreciation for that style variant, but also recieved request for the first form of ച്ച. I had a private copy of Chilanka with that variant and had given to whoever requested. I also recieved some requests for the second style of ള്ള. For the Manjari font too, I recieved requests for second variant.

Today I am announcing the new version of Manjary and Chilanka font, with these two forms as optional variants without the need for a different copy of a font. In a single font, you will get both these variants using the Opentype stylistic alternatives feature.

The default styles of ച്ച and ള്ള are not changed in new version. The fonts comes with an option to chose a different form.

Choosing the style for webfonts using CSS

Use the font-feature-settings CSS style to choose a style. For the element or class in the html, use it as follows:

For style 1:

font-feature-settings: "salt" 1;

For style 2:

font-feature-settings: "salt" 2;

Choosing the style variant in LibreOffice

In the place of the font name in font selector, append :salt=1 for first style, :salt=2 for second style. So you need to give Manjari Regular:salt=2 as the font name for example to get second style.

Choosing the style variant in XeLaTeX

fontspec allows to choose alterate style variants. Use Alternate=N syntax. Note that N starts from 0. So for style1, use Alternate=0 and for style2 use Alternate=2. Refer section 2.8.3 of fontspec documentation.


\manjari{\addfontfeature{Alternate=1}കാച്ചാണി, വെള്ളയമ്പലം}


This will produce the following rendering:

Choosing the style variant in Inkscape

Inkscape font selection dialog has a feature to chose font style variants. It uses the property values of CSS font-feature-settng.

In Adobe, Indesign, selecting the ligature will give stylistic alternative(s) if any to choose.

Updated fonts

Updated fonts are available in SMC’s font download microsite https://smc.org.in/fonts

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.



മഞ്ജരി ഫോണ്ട് – പതിപ്പ് 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 ൽ മലയാളത്തിൽ വന്ന കുറച്ച് അക്ഷരങ്ങൾ ചേർത്തിരുന്നു.

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

ഓരോ ഭാഷയിലും അതിലെ ലിപികളെ ഒരു പ്രത്യേക ക്രമത്തിൽ എഴുതുന്ന ഒരു കീഴ്‌വഴക്കം ഉണ്ടു്. ഇംഗ്ലീഷിൽ 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

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


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

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

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

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

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

  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. മെയിന്റനൻസ്

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

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

It is your language and your pen

Photo by Joe Shillington on Unsplash

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.

Anniversary of Manjari font release

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

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

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


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

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

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

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

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

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

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

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