Wednesday, August 31, 2011

ഒരു മലയാളം ഫോണ്ടുണ്ടാക്കിയാലോ -5



ലിഗേചർ ഭാഗം ഒന്നു്

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

ഉദാഹരണത്തിനു്, "ക്ക" എന്നതു് ഒരു ഒറ്റയക്ഷരരൂപമാണു്. ക + ചന്ദ്രക്കല ചിഹ്നം + ക = ക്ക എന്നു് പറയാം.

മറ്റു ചില ഉദാഹരണങ്ങൾ:

റ + ചന്ദ്രക്കല + റ = റ്റ
ക + ചന്ദ്രക്കല + ല = ക്ല
ഗ + ചന്ദ്രക്കല + ദ + ചന്ദ്രക്കല + ധ = ഗ്ദ്ധ
ഗ + ചന്ദ്രക്കല + ദ + ചന്ദ്രക്കല + ധ + ഉ ചിഹ്നം = ഗ്ദ്ധു

ഇതാണു് ഭാഷയിൽ കൂട്ടക്ഷരം നിർമ്മിക്കുന്നതിനുള്ള ഘട്ടങ്ങൾ. ഫോണ്ടിൽ കൂട്ടക്ഷരങ്ങൾ സൃഷ്ടിക്കുമ്പോൾ ഏതാണ്ടു് ഇതേ രീതിയാണു് നാം പിൻതുടരുക.

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

മലയാളം അക്ഷരരൂപങ്ങളുടെ പൊതുതത്വങ്ങൾ വിവരിക്കുന്ന ഒരു പേജ് മൈക്രോസോഫ്റ്റിന്റെ വെബ്‌സൈറ്റിൽ ഉണ്ടു് :
http://www.microsoft.com/typography/OpenType%20Dev/malayalam/intro.mspx

ആദ്യത്തെ പേജിൽ ഹിന്ദി കണ്ടു് മുഖം ചുളിക്കണ്ട. പേജിന്റെ അവസാനത്തിൽ അടുത്ത പേജുകളിലേക്കുള്ള ലിങ്കുകൾ ഉണ്ടു്. അവ ക്ലിക് ചെയ്താൽ കൂടുതൽ വിവരങ്ങൾ കിട്ടും.

ഇവിടെയാണു് സീറോ വിഡ്ത് ജോയിനർ, സീറോ വിഡ്ത് നോൺ-ജോയിനർ എന്നിവയുടെ ആവശ്യം വിവരിച്ചിരിക്കുന്നതു്. ഞാൻ അധികപ്രസംഗിയാകുന്നില്ല, പേജുകൾ വായിച്ചു മനസ്സിലാക്കുമല്ലൊ.

അപ്പൊ ആദ്യത്തെ രീതിയിൽ കൂട്ടക്ഷരങ്ങളുണ്ടാക്കാൻ തുടങ്ങാം?

ആദ്യം വേണ്ടതു്, നമ്മൾ ഇതുവരെ ഉണ്ടാക്കിയ അക്ഷരങ്ങൾ വച്ചു് കൂട്ടക്ഷരമുണ്ടാക്കാൻ സാധിക്കുമോ എന്നു് പരിശോധിക്കലാണു്.

ക്ല എന്ന കൂട്ടക്ഷരം ശ്രദ്ധിച്ചാൽ മനസ്സിലാവും - ക എന്ന അക്ഷരവും ല എന്ന ചിഹ്നവും നമ്മൾ വെവ്വേറെ തയ്യാറാക്കിയിട്ടുണ്ടു്. അതുകൊണ്ടു് അവ ഒരുമിച്ചു് ഒരു ഗ്ലിഫ് സ്ഥാനത്തു് സ്ഥാപിച്ചാൽ കാര്യം എളുപ്പമായി.

ഫോണ്ട്ഫോർജിൽ നമ്മൾ ഇതുവരെ ഉണ്ടാക്കിയ ഫോണ്ട് തുറന്നു് "എൻകോഡിംഗ്" എന്ന മെനുവിൽ "ആഡ് എൻകോഡിംഗ് സ്ലോട്ട്സ്" എന്ന ഓപ്ഷൻ എടുക്കുക


അപ്പൊ ഫോണ്ട്ഫോർജ് ഒരു ചോദ്യം നമ്മുടെ നേരെ എറിയും:





നമ്മോടു് ഫോണ്ട്ഫോർജ് ചോദിക്കുന്നതു്, "ഗഡ്യേ, എത്ര പുതിയ ഗ്ലിഫ്ഫുകൾ ഉണ്ടാക്കാനാ പ്ലാൻ?" എന്നാണു്. തൽക്കാലം ഒന്നു് മതി. അതുകൊണ്ടു് 1 എന്നു് പറഞ്ഞു് ഓക്കെ ക്ലിക് ചെയ്യുക.

ഇനി വിൻഡോയുടെ അവസാനം വന്നാൽ പുതിയ ഒരു ഗ്ലിഫ് ഏരിയ "?" എന്ന തലക്കെട്ടോടെ പ്രത്യക്ഷപ്പെട്ടിരിക്കുന്നതു് കാണാം. ഒന്നിൽ കൂടുതൽ സ്ലോട്ടുകൾ ഉണ്ടാക്കാൻ നിർദ്ദേശിച്ചാൽ അത്രയും സ്ലോട്ടുകൾ "?" തലക്കെട്ടോടെ സൃഷ്ടിക്കപ്പെടും
പി-3



മുകളിൽ U+???? എന്നു് വന്നതു് കണ്ടോ? അതായതു്, നമ്മളിപ്പോൾ ഉണ്ടാക്കിയ പുതിയ സ്ലോട്ട് യൂനിക്കോഡിൽ ഇല്ലാത്ത സ്ലോട്ടാണു്. ഇത്തരം സ്ലോട്ടുകളിൽ വേണം കൂട്ടക്ഷരരൂപങ്ങൾ സൃഷ്ടിക്കാൻ.

സൗകര്യത്തിനു് ഞാൻ അഞ്ജലി പഴയലിപിയുടെ സഹായം തേടുകയാണു്. ഞാൻ ഇപ്പോൾ അഞ്ജലിയുടെ ഫോണ്ട് തുറന്നു് പുതിയ ഒരു എൻകോഡിംഗ് സ്ലോട്ട് ഉണ്ടാക്കി.

ഇനി വേണ്ടതു് അതിൽ ക എന്ന അക്ഷരരൂപവും ല എന്ന ചിഹ്നവും ഒന്നിച്ചു് ചേർക്കലാണു്.

0D15 എന്ന സ്ഥാനത്താണു് ക എന്ന അക്ഷരം. അതുപോലെ 0D62 എന്ന സ്ഥാനത്താണു് ല എന്ന ചിഹ്നം. അല്ലെ? സംശയമുണ്ടെങ്കിൽ pdf നോക്കൂ..

ഇനി ഇവയെ എങ്ങിനെ ഒരുമിച്ചു് ഒരു ഗ്ലിഫ് സ്ഥാനത്തു് കൊണ്ടുവരാം എന്നു് പറയാം

ആദ്യം വേണ്ടതു് നമുക്കാവശ്യമുള്ള അക്ഷരരൂപങ്ങളുടെ സ്ഥാനം നിർണ്ണയിക്കലാണു്. ഇപ്പോൾ ക്ല എന്ന കൂട്ടക്ഷരം വേണമെകിൽ 0D15 സ്ഥാനത്തുള്ള ക എന്ന അക്ഷരം, 0D63 സ്ഥാനത്തുള്ള ല എന്ന ചിഹ്നം എന്നിവ വേണം. അവ ഒരുമിച്ചു് ചേർത്തുവച്ചാൽ ക്ല എന്നാവും.

വീണ്ടും അഞ്ജലി പഴയലിപിയെ ആശ്രയിക്കുന്നു. ഒരു കാര്യം ശ്രദ്ധിക്കാനുള്ളതു്, അഞ്ജലിയിൽ 0D63യിലല്ല ല ചിഹ്നമുള്ളതു് എന്നുള്ളതാണു്. 422 എന്നു് പേരുള്ള ഒരു പ്രത്യേക ഗ്ലിഫ് സ്ഥാനത്താണു് ആ ചിഹ്നം പ്രതിപാദിച്ചിരിക്കുന്നതു്. അതുകൊണ്ടു് ലേഖനാവശ്യങ്ങൾകു് ഈ രണ്ടു് സ്ഥാനവും ഉപയോഗിക്കാം. നിങ്ങളുടെ ആവശ്യങ്ങൾക്കനുസരിച്ചു് അക്ഷരരൂപങ്ങൾ തെരഞ്ഞെടുക്കണം.


ആദ്യം ക എന്ന അക്ഷരരൂപത്തിൽ ക്ലിക് ചെയ്യുക. ആ ചിഹ്നം ഹൈലൈറ്റ് ആവും. എന്നിട്ടു്  Edit മെനുവിൽ Copy Reference എന്ന ഓപ്ഷൻ എടുക്കുക




ഇനി നമ്മൾ പുതുതായി ഉണ്ടാക്കിയ ഗ്ലിഫ് പൊസിഷനിൽ ക്ലിക് ചെയ്തു് "പേസ്റ്റ്" ചെയ്യുക. എന്നുവച്ചാൽ Edit മെനുവിലെ Paste എന്ന ഓപ്ഷൻ ക്ലിക് ചെയ്താൽ മതിയാവും. നേരത്തെ കൊടുത്തിരിക്കുന്ന ചിത്രത്തിൽ ആ മെനു കാണാം.

ഇപ്പോൾ ക എന്ന അക്ഷരരൂപത്തിന്റെ ഒരു രൂപം പുതിയ ഗ്ലിഫ് പൊസിഷനിൽ തെളിയും. 0D15ലെ ക എന്ന അക്ഷരരൂപത്തിനു് നാം എന്തെങ്കിലും രൂപമാറ്റം വരുത്തിയാൽ അതു് പുതിയ ഗ്ലിഫ് പൊസിഷനിൽ ഇട്ടിരിക്കുന്ന രൂപത്തേയും ബാധിക്കും.

ഇനി വേണ്ടതു് ല ചിഹ്നത്തെ ഇതേ ഗ്ലിഫിൽ സന്നിവേശിപ്പിക്കലാണു്. അതിനു് ആ ചിഹ്നത്തിന്റെ ഗ്ലിഫിൽ ക്ലിക് ചെയ്തു് നേരത്തെ പറഞ്ഞമാതിരി Copy Reference മെനു എടുക്കുക. പക്ഷെ പുതിയ ഗ്ലിഫ്ഫിൽ Paste ചെയ്യരുതു്. പകരം Edit മെനുവിലെ Paste Into എന്ന ഓപ്ഷൻ തെരഞ്ഞെടുക്കുക. ഇപ്പോൾ രണ്ട് അക്ഷരരൂപങ്ങളും ഒരുമിച്ചു് ഒരു ഗ്ലിഫിൽ കാണാം.






കണ്ടോ? അക്ഷരരൂപങ്ങളുടെ ഒരു റഫറൻസ് ആണു് പുതിയ ഗ്ലിഫിൽ ഉള്ളതു്. വേണമെങ്കിൽ ഓരോ രൂപങ്ങളേയും ക്ലിക് ചെയ്തു് അവ സിലെക്റ്റ് ചെയ്തശേഷം അവയുടെ പൊസിഷൻ മാറ്റുകയും മറ്റും ആവാം.

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

ഒരിക്കൽകൂടി ഓർമ്മിപ്പിക്കട്ടെ, ഇപ്പോൾ പറയുന്ന രീതി ലിഗേചർ ഉണ്ടാക്കാനുള്ള ഒരു മാർഗ്ഗം മാത്രമാണു്. ഓപ്പൺടൈപ്പ് നിഷ്കർഷിക്കുന്ന രീതി ഇതല്ല. അത് പിന്നെ പറഞ്ഞുതരാം. മനസ്സിലാക്കാൻ കൂടുതൽ എളുപ്പം (ഹും! നല്ല എളുപ്പം!) ഈ രീതിയായതുകൊണ്ടാണു് ഇതു് ആദ്യം പറയുന്നതു്.

ഇപ്പോൾ നാം ആദ്യത്തെ ലിഗേചർ ഉണ്ടാക്കി. ഇനി, ക + ചന്ദ്രക്കല + ല = ക്ല എന്നു് ഫോണ്ടിനെ പറഞ്ഞു് മനസ്സിലാക്കണം.

അതായതു് "0D15 + 0D4D + 422 = പുതിയ ഗ്ലിഫ്" എന്നു്  ഫോണ്ടിനെ പറഞ്ഞു് മനസ്സിലാക്കണം. അതിനു് ഇനി പറയുന്ന മാതിരി ഫോണ്ടിൽ സെറ്റ് ചെയ്യണം.

ആദ്യം Edit മെനുവിലെ Gliph Infoയിൽ പോയി നമ്മൾ പുതുതായി ഉണ്ടാക്കിയ ഗ്ലിഫിനു് ഒത്ത ഒരു പേരു് കൊടുക്കുക. ഉദാഹരണത്തിനു് ആ ഗ്ലിഫിനു് kla എന്ന പേർ കൊടുത്തു എന്നിരിക്കട്ടെ. അതുപോലെ OT Glyph Class എന്ന ഡ്രോപ്‌ഡൗൺ ലിസ്റ്റിൽ Base Lig തെരഞ്ഞെടുക്കുക.

Edit മെനുവിലെ Font Infoയിൽ ക്ലിക്കുക. അപ്പോൾ നാം നേരത്തെ പരിചയപ്പെട്ട ഫോണ്ടിന്റെ മൂല്യങ്ങൾ പ്രതിപാദിക്കുന്ന Font Info വിൻഡോ തുറക്കും.

ഇനി ഇടതുവശത്തു് Lookupല് ക്ലിക്കുക. അപ്പൊ താഴത്തെ ചിത്രത്തിലുള്ള പോലെ കാണാം.



മുകളിൽ GSUB എന്ന ടാബ് ആണു് തെരഞ്ഞെടുത്തിരിക്കുന്നതു് എന്നുറപ്പുവരുത്തുക. എന്നിട്ടു് "Add Lookup" എന്ന ബട്ടനിൽ ഞെക്കുക (കൈകൊണ്ടല്ല, മൗസ് കൊണ്ടു്)



ഇനി Unspecified എന്ന മുകളിലുള്ള ബട്ടനിൽ ഞെക്കി Ligature Substitution എന്ന ഓപ്ഷൻ തെരഞ്ഞെടുക്കുക.



അതേ വിൻഡോയിൽ Lookup Name എന്ന ഭാഗത്തു് ഇഷ്ടമുള്ള ഒരു പേരും ലിഗേചറിനു് കൊടുക്കുക. OK ബട്ടനിൽ ഞെക്കുക.



ഇനി Add Subtable ബട്ടനിൽ ഞെക്കുക.



OK ബട്ടനിൽ ഞെക്കുക.



ഈ വിൻഡോയിലാണു് നമ്മുടെ ക+ചന്ദ്രക്കല... മുതലായ നിയമങ്ങൾ രേഖപ്പെടുത്തേണ്ടതു്. അതിനു് ഇനി പറയുന്ന പോലെ...

New ക്ലിക് ചെയ്യുക. പുതിയ ഒരു വരി പ്രത്യക്ഷപ്പെടും.

ആ വരിയുടെ വലതുഭാഗത്തു് കൂട്ടക്ഷരമുണ്ടാക്കുന്ന മൂലാക്ഷരങ്ങളുടെ പേരുകൾ ചേർക്കുക. ഇടതുവശത്തു് കൂട്ടക്ഷരഗ്ലിഫിനു് നാം കൊടുത്ത പേരും കൊടുക്കുക



വീണ്ടും ക്ലിക് ചെയ്തു് നാം തയ്യാറാക്കിവച്ചിരിക്കുന്ന മറ്റു ലിഗേചറുകളും ഇപ്രകാരം ചേർക്കാം.

ലിഗേചർ ശരിയായോ എന്നു് നോക്കാൻ ഗ്ലിഫ് സിലെക്റ്റ് ചെതു് Edit മെനുവിൽ Glyph Info ക്ലിക് ചെയ്തു് ഇടതുവശത്തു് Ligatures ക്ലിക് ചെയ്താൽ ആ കൂട്ടക്ഷരത്തിന്റെ അടിസ്ഥാന അക്ഷരരൂപങ്ങൾ കാണാം.

എല്ലാ കൂട്ടക്ഷരങ്ങളും ഇപ്രകാരം ചിട്ടപ്പെടുത്തി കഴിഞ്ഞതവണ ചെയ്തപോലെ ഫോണ്ട് ഉണ്ടാക്കി ഉപയോഗിച്ചാൽ കൂട്ടക്ഷരങ്ങൾ തെളിയും. കൂട്ടക്ഷരങ്ങൾ ഉണ്ടാക്കാനുള്ള ചില നിയമങ്ങൾ നേരത്തെ പറഞ്ഞ ലിങ്കിൽ (http://www.microsoft.com/typography/OpenType%20Dev/malayalam/intro.mspx) ഉണ്ടു്. അതുകൊണ്ടു് ഞാൻ വീണ്ടും എടുത്തെഴുതുന്നില്ല.

പ്രശസ്തമായ ഫ്രീഫോണ്ട് (https://savannah.gnu.org/projects/freefont/) എന്ന ഫോണ്ട് പ്രോജക്ടിലെ ഫ്രീസെരിഫ് എന്ന ഫോണ്ടിൽ മലയാളം കൂട്ടക്ഷരങ്ങൾ ഇപ്രകാരമാണു് ഉണ്ടാക്കിയിരിക്കുന്നതു്.

ഇതോടെ പഴയലിപിയിൽ പൂർണ്ണമായ ഒരു ഫോണ്ട് ആയി എന്നു് പറയാം. കേർണിംഗ് (GPOS) എന്ന ടേബിൽ ആവശ്യമില്ലെങ്കിൽ ഇത്രയും കൊണ്ടു് നമ്മുടെ ഫോണ്ട് ഉപയോഗയോഗ്യമായിരിക്കുന്നു. വേണമെങ്കിൽ നിർത്താം.

അടുത്ത ലക്കത്തിൽ ഓപ്പൺടൈപ് നിയമപ്രകാരം ലിഗേചർ ഉണ്ടാക്കുന്ന രീതി പറയാം.

4 comments:

Manoraj said...

മുരളീയുടെ ബസ്സില്‍ കണ്ടത് പോലെ ഈ ഫോണ്ടിന് പറ്റിയ ഒരു പേരു ഞാന്‍ നിര്‍ദ്ദേശിക്കുന്നു. രഞ്ജിനി ഫോണ്ട് :):)

കൊച്ചു കൊച്ചീച്ചി said...

ഇങ്ങനെയൊക്കെ ഒന്നെഴുതിയൊപ്പിക്കണമെങ്കില്‍ പാടെത്ര പെടണം എന്ന് മനസ്സിലാകുന്നുണ്ട്. എന്റെ ആത്മാര്‍ത്ഥമായ അഭിനന്ദനങ്ങള്‍! ശരിയായ ഒരു ഭാഷാസ്നേഹിതന്നെയാണ് താങ്കള്‍.

sunil vettom said...

നല്ല വിവരണം .....ആത്മാര്‍ത്ഥ ശ്രമം
അഭിനന്ദനങ്ങള്‍

ശ്രീ said...

അതു ശരി, ഇവിടെ ഇങ്ങനൊരു പരിപാടി പരീക്ഷിയ്ക്കുന്നുണ്ടായിരുന്നല്ലേ?

തിരക്കു കാരണം ബൂലോകത്ത് കറക്കം കുറവാണ്.

വിശദമായി ഒന്നൂടെ എല്ലാമൊന്നു നോക്കാം.