Tuesday, June 5, 2012

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

“കുറേ മാസത്തിനു് ശേഷം ദേ ഇയാൾ വീണ്ടും വന്നിരിക്കുന്നു!” എന്നു് നിങ്ങൾ അല്ഭുതപ്പെടുന്നുണ്ടാവും. എന്താ ചെയ്യാ, വല്ലാത്ത തിരക്കായിപ്പോയി.


ആദ്യം ഒരു ശുഭവാർത്ത: എനിക്കൊരു ആൺകുട്ടി ജനിച്ചിരിക്കുന്നു! ഇപ്പൊ എട്ടുമാസമായി. സുഖമായി ഇരിക്കുന്നു. “തുമ്പി” എന്ന ബൂലോകനാമം ഇട്ടു; വീട്ടിൽ വച്ചുവിളിക്കാൻ സിദ്ധാർത്ഥ് എന്നും.

ഇനി തിരിച്ചു ഫോണ്ടിലേക്കു്. ഈ ഭാഗത്തിൽ മൈക്രോസോഫ്ടിന്റെ ഔദ്യോഗികമായി നിഷ്കർഷിച്ചിട്ടുള്ള രീതിയിൽ ലിഗേച്ചറുകൾ ഉണ്ടാക്കുന്ന രീതി കൂടി പറയാം. ഇതോടെ ഫോണ്ട് ലേഖനപരമ്പര നിർത്തുകയാണു്. അവശേഷിക്കുന്ന ഭാഗം കേർണിംഗ് (kerning - അക്ഷരങ്ങൾ തമ്മിലുള്ള അകലം അക്ഷരസമുച്ചയങ്ങൾക്കനുസരിച്ചു് മാറ്റുന്ന പ്രക്രിയ) ആണു്; അതു് ഞാൻ പ്രതിപാദിക്കുന്നില്ല. താൽപര്യമുള്ളവർ ഈമെയിൽ അയക്കുമല്ലൊ.

ഈ ലിങ്കിൽ പോയി നോക്കിയിട്ടുണ്ടാവുമല്ലൊ? Glossary എന്ന ഭാഗത്തു് കൊടുത്തിരിക്കുന്ന പട്ടിക ശ്രദ്ധിച്ചു വായിക്കുക. ലിഗേച്ചറുകളുടെ നിർമ്മാണത്തിൽ വളരെ ആവശ്യമുള്ള ഒരു പറ്റം വിവരമാണു് ഇതിൽ പറഞ്ഞിട്ടുള്ളതു്. ഏതൊക്കെ സന്ദർഭങ്ങളിൽ ഏതു തരം ലിഗേചർ ഉപയോഗിക്കണം എന്നതു് ഈ പട്ടിക നോക്കി വിലയിരുത്തേണ്ടതുണ്ടു്.

മൈക്രോസോഫ്റ്റ് ലേഖനത്തിന്റെ രണ്ടാം പേജിൽ GSUB എന്ന ഭാഗത്തു് പറഞ്ഞിട്ടുള്ള shaping features എന്ന ഭാഗം ശ്രദ്ധിക്കുക. വിവിധ തരം ലിഗേച്ചറുകളിൽ ഏതാണു് ആദ്യം ചുമത്തപ്പെടുക, ഏതാണു് പിന്നീടു് ചുമത്തപെടുക എന്നുള്ള ക്രമം വിശദീകരിച്ചിട്ടുണ്ടു്. അതുപോലെ ലിഗേച്ചറുകളെ ക്രമപ്പെടുത്തിയശേഷം അവയെ ദൃശ്യവല്ക്കരിക്കുന്ന ക്രമവും വിവരിച്ചിട്ടുണ്ടു്. ഇവ രണ്ടും സൂക്ഷിച്ചു പഠിച്ചാലേ നല്ല ലിഗേച്ചറുകൾ ഉണ്ടാക്കാനാവൂ.

(ഞാൻ നേരത്തെ പറഞ്ഞ kerning പ്രതിപാദിക്കപ്പെടുന്നതു് രണ്ടാം പേജിൽ തന്നെ GPOS എന്ന ഭാഗത്താണു്. താല്പര്യമുള്ളവർ ശ്രദ്ധിക്കുക)

ഒരു കാര്യം കൂടി പറഞ്ഞു നിങ്ങളെ പേടിപ്പിച്ച ശേഷം ലിഗേച്ചറുണ്ടാക്കാൻ തുടങ്ങാം:

Zero width joiner (ZWJ) എന്നും zero width non-joiner (ZWNJ) എന്നും കേട്ടിട്ടുണ്ടല്ലൊ? (കേട്ടിട്ടില്ലെങ്കിൽ പേജുകൾ ഒന്നുകൂടി മനസ്സിരുത്തി വായിക്കുക, കൂടാതെ ഇതുവരെ ഉണ്ടാക്കിയ അക്ഷരരൂപങ്ങളും എടുത്തുനോക്കുക). ZWJ ഉപയോഗിച്ചാൽ കൂട്ടക്ഷരം ഉണ്ടാക്കുന്നതു് തടയാനാവും. എന്നാൽ ചില്ലക്ഷരങ്ങൾ സൃഷ്ടിക്കപ്പെടും. ZWNJ ഉപയോഗിക്കുമ്പോൾ ചില്ലക്ഷരം ഉണ്ടാവുന്നതും രോധിക്കപെടുന്നു.

ഉദാഹരണത്തിനു്, ന + ചന്ദ്രക്കല + ZWJ = ൻ (ചില്ലക്ഷരം)

ന + ചന്ദ്രക്കല + ZWNJ = ന്‌

അതായതു്, ചില്ലക്ഷരത്തിന്റെ ലിഗേച്ചർ ഉണ്ടാക്കുമ്പോൾ ZWJ കൊടുക്കാൻ മറക്കരുതു്. അഥവാ മറന്നു് ന + ചന്ദ്രക്കല = ൻ എന്നു പറഞ്ഞുപോയാൽ ചിലപ്പോൾ “ചന്ദ്രൻ” എന്നെഴുതിയാൽ നമ്മുടെ ഫോണ്ടിൽ വായിക്കുമ്പോൾ “ചൻദ്രൻ” എന്നു് കണ്ടേക്കും.

കൂട്ടത്തിൽ പറയട്ടെ, വരമൊഴി പോലെയുള്ള സോഫ്റ്റ്വെയറുകൾ എങ്ങിനെ പ്രവർത്തിക്കുന്നു എന്നൊരു ചെറിയ ധാരണ ഇപ്പോൾ കിട്ടിയോ? pon_naaLam എന്നെഴുതുമ്പോൾ പൊന്നാളം എന്നു വരാതെ പൊൻനാളം എന്നു കൃത്യമായി കാണാൻ സാധിക്കുന്നതു്, നമ്മൾ ഇട്ട അണ്ടർസ്കോറിനെ വരമൊഴി ഒരു ZWJ ആയി മാറ്റുന്നതുകൊണ്ടാണു്. ഇതുപോലെ ഓരോ സന്ദർഭങ്ങളിലും വരമൊഴി പോലുള്ള സോഫ്റ്റ്വെയറുകൾ (ഫോണ്ട് എഞ്ജിനുകൾ എന്നു് പൊതുവിൽ പറയാം) എങ്ങിനെ പ്രവർത്തിക്കുന്നു എന്നു് ആലോചിക്കുന്നതു് ഒരു നല്ല കാര്യമായിരിക്കും.

ഇനി ലിഗേച്ചറുകൾ നോക്കിത്തുടങ്ങാം. ഫോണ്ട്ഫോർജിൽ Element->Font Info എന്ന മെനുവിൽ ക്ലിക്കി തുടർന്നു കിട്ടുന്ന വിൻഡോയിൽ ഇടതുവശത്തു് Lookupൽ ക്ലിക്കിയാൽ GSUB പട്ടികയും GPOS പട്ടികയും കാണാൻ സാധിക്കും.



മുകളിൽ കാണിച്ചിരിക്കുന്നതു് അഞ്ജലി പഴയലിപിയുടെ സ്ക്രീൻ ആണു്. നമുക്കു് ഓരോ ലിഗേച്ചറും വെവ്വേറെ ഉണ്ടാക്കണം. അതിനു് താഴെ പറയുന്ന പോലെ ചെയ്യുക. ഒരു ഉദാഹരണം എന്ന നിലക്കു് “അഖണ്ഡ്” (akhand - akhn) എന്ന ലിഗേചർ ആദ്യമെടുക്കാം.

നേരത്തെ പറഞ്ഞ മെനുവിൽ നിന്നു് GSUB പട്ടിക തുറക്കുക. ഇപ്പോൾ അതിൽ ഒന്നുമുണ്ടാവില്ല.




വലതുവശത്തു് Add Lookup എന്ന ബട്ടൺ ഞക്കുക (കൈകൊണ്ടല്ല, മൗസ് കൊണ്ട്). അപ്പോൾ താഴെക്കാണും വിധം പുതിയ ഒരു വിൻഡോ തുറക്കും:



മുകളിലെ ബട്ടൺ ഞെക്കിയപ്പൊ വരുന്ന ഓപ്ഷൻസ് കണ്ടോ? അഖണ്ഡ് എന്ന ലിഗേച്ചറിനു് വേണ്ടതു് Ligature substitution എന്ന ഐച്ഛികമാണു്. അതു് തെരഞ്ഞെടുക്കുക.



തുടർന്നു് തൊട്ടുതാഴെ Feature എന്നു പറഞ്ഞിരിക്കുന്നതിനു താഴെ നു വലതുവശത്തുള്ള ചെറിയ പെട്ടിയിൽ ഞെക്കിയാൽ നമുക്കു വേണ്ട ലിഗേചർ തെരഞ്ഞെടുക്കാം. കാണിക്കുന്ന ഐച്ഛികങ്ങളിൽ ഒന്നു് അഖൻഡ് ആണെന്നു് ശ്രദ്ധിച്ചിരിക്കുമല്ലൊ.


അപ്പൊ അഖണ്ഡ് തെരഞ്ഞെടുക്കുക. താഴെക്കാണും വിധം കിട്ടും:


Scripts & Languagesൽ പോയി mlym മാത്രം നിലനിർത്തിയാലും മതിയാകും. ഇനി ഓക്കെ അടിക്കുക.


ഇപ്പോൾ വലതുവശത്തു് മുമ്പു് വ്യക്തമല്ലാതിരുന്ന പല ബട്ടനുകളും തെളിഞ്ഞിട്ടുണ്ടു്. അതിൽ Add subtable എന്ന ബട്ടൺ ഞെക്കുക.


ഓക്കെ അടിച്ചാൽ മുന്നോട്ടു പോകാം


ഇനിയങ്ങോട്ടു് നാം ലിഗേചർ ആദ്യഭാഗത്തു ചെയ്തപോലെ, ഇടതുവശത്തു് ലിഗേചറിന്റെ പേരു്, വലതുവശത്തു് ആ ലിഗേചറിന്റെ ഘടകാക്ഷരനാമങ്ങൾ എന്നിവ കൊടുക്കുക. ശ്രദ്ധിക്കേണ്ട ഒരു കാര്യം, ചന്ദ്രക്കലയോടൊപ്പം ല, ര, റ മുതലായവ വരുന്ന കൂട്ടക്ഷരങ്ങൾ (ഉദാ: ക + ചന്ദ്രക്കല + ല = ക്ല, ക + ചന്ദ്രക്കല + ര = ക്ര) ഇവിടെ ചേർക്കരുതു്. ഓരോന്നിനും അതിന്റേതായ സ്ഥലമുണ്ടു്. സദ്യക്കു് വിളമ്പുമ്പോൾ ഓരോ കറിക്കും അതിന്റേതായ സ്ഥാനമുള്ളതുപോലെ.

അഞ്ജലി പഴയലിപിയുടെ ഒരു അഖണ്ഡ് പട്ടികയാണു് താഴെ:


മൈക്രോസോഫ്റ്റിന്റെ മൂന്നാം പേജിൽ പറഞ്ഞിട്ടുള്ള എല്ലാ ലിഗേചറുകളും സൃഷ്ടിക്കണം എന്നില്ല. ആവശ്യമുള്ളവ നിർമ്മിച്ചാൽ മതിയാവും.

ശരി, ഇനി അടുത്ത ലിഗേചർ - Below base forms - blwf

അക്ഷരങ്ങളേ ലിഗേചർ കൊണ്ടു് ആദേശം ചെയ്യുമ്പോൾ മുൻപത്തെ അക്ഷരത്തിനെ ചുവട്ടിലാണു് മാറ്റം വരുന്നതെങ്കിൽ അതിനു് ഇത്തരം ലിഗേചർ ഉപയോഗിക്കാം. ഏറ്റവും നല്ല ഉദാഹരണം ക + ് + ല = ക്ല (ക എന്ന അക്ഷരത്തിനു ചുവട്ടിൽ ല എന്ന ചിഹ്നം വന്നതു് ശ്രദ്ധിക്കുക) ആണു്.

ഇതിനു് രണ്ടു് പട്ടിക തയ്യറാക്കണം.

ആദ്യം, ഒരു സാധാരണ ലിഗേചർ പട്ടിക തയ്യാറാക്കുക. ഇതു് എങ്ങിനെ ചെയ്യണം എന്നു് മുമ്പിലത്തെ അദ്ധ്യായത്തിൽ നോക്കി മനസ്സിലാക്കുമല്ലൊ. എന്നിട്ടു് ചന്ദ്രക്കല + ല = ല ചിഹ്നം എന്ന ലിഗേചർ നിയമം സൃഷ്ടിക്കുക. അതുപോലെ, മറ്റൊരു പട്ടികയിൽ ചന്ദ്രക്കല + ള = ല ചിഹ്നം എന്നും ചേർക്കുക.

ഇനി വേണ്ടതു് എപ്പോഴൊക്കെ ഈ മാറ്റം നടത്തണം എന്നു് ഫോണ്ടിനോടു് പറയലാണു്. അതിനു് കുറച്ചു പണിയുണ്ടു്.

പുതിയ Lookup പട്ടികയുണ്ടാക്കുന്ന സ്ക്രീനിൽ പോയി പട്ടികയുണ്ടാക്കുക. Type എന്നുള്ളിടത്തു് Contextual Chaining substitution തെരഞ്ഞെടുക്കുക.


Featureൽ blwf എന്നു ചേർത്ത ശേഷം Script(s) & Language(s)ൽ mlym{dflt} എന്നു ചേർക്കുക.

ഇനി പറ്റിയ ഒരു പേരു കൊടുത്തു് പട്ടിക സേവ് ചെയ്യാം.

അടുത്തതായി ഈ ടേബിൾ സിലെക്റ്റ് ചെയ്തു് Add Subtable ക്ലിക്കുക. പറ്റിയ ഒരു പേരു കൊടുത്തുകഴിഞ്ഞാൽ പരിചയമില്ലാത്ത ഒരു സ്ക്രീൻ വരും:


ഇതിൽ By Coverage ക്ലിക് ചെയ്തശേഷം Next അടിക്കുക. അപ്പൊ ഇതുപോലെയാവും:


ഇതിൽ വേണ്ടതു്, നമ്മുടെ ലിഗേചറിലുള്ള ഗ്ലിഫ്ഫുകളെ ചേർക്കുകയും ഏതൊക്കെ അക്ഷരത്തിനു ശേഷം വന്നാലാണു് ലിഗേചർ ഉപയോഗിക്കേണ്ടതു് എന്നു നിയമമുണ്ടാക്കുകയുമാണു്.

Glyphs in the coverage tables എന്നു കാണുന്നതിനു തൊട്ടുചുവട്ടിൽ <New>കണ്ടില്ലേ? അതിനു വലതുവശത്തു് ഒരു ചെറിയ ചതുരപ്പെട്ടിയും കണ്ടില്ലേ? ആ ചതുരപ്പെട്ടിയിൽ ക്ലിക്കിയാൽ ഏതൊക്കെ ഗ്ലിഫ്ഫുകൾ വേണം എന്നു് തെരഞ്ഞെടുക്കാം. അതിനുതകുന്ന രീതിയിൽ ഇതുവരെ ഫോണ്ടിൽ നമ്മളുണ്ടാക്കിയിട്ടുള്ള ഗ്ലിഫ്ഫുകൾ തെളിഞ്ഞുവരും. ആദ്യം ചന്ദ്രക്കല തെരഞ്ഞെടുക്കുക. Ok അടിക്കുക. വീണ്ടും New ക്ലിക് ചെയ്തു് ചറ്റുരപ്പെട്ടിയിൽ ഞെക്കി ല എന്ന ഗ്ലിഫ്ഫും തെരഞ്ഞെടുക്കുക.

അതിനു തൊട്ടു താഴെ Apply lookupൽ നമ്മൾ ഇത്തിരിമുമ്പേ ഉണ്ടാക്കിയ ലിഗേചർ പട്ടികയുടെ പേരു തെരഞ്ഞെടുക്കുക. at position എന്നുള്ളയിടത്തു് 0 (അതായതു് zero) എന്നു കൊടുത്തോളു.

ഇനി മുകളിൽ Matchനു തൊട്ടടുത്തു് Backtrack എന്ന ടാബിൽ ക്ലിക് ചെയ്യുക. അവിടേയും New കാണാം. വലതുവശത്തെ ചതുരപ്പെട്ടിയിൽ ക്ലിക് ചെയ്തു് ഏതൊക്കെ ഗ്ലിഫ്ഫുകൾക്കു ശേഷം ചന്ദ്രക്കല+ല വന്നാലാണു് “്ല”ക്കു പകരം ല ചിഹ്നം സ്ഥാപിക്കേണ്ടതു് എന്നു തെരഞ്ഞെടുക്കുക. ഇനി ഇവയിലേതെങ്കിലും ഗ്ലിഫ്ഫിനു ശേഷം ചന്ദ്രക്കലയും തൊട്ടുപിന്നാലെ ല എന്ന അക്ഷരവും വന്നാൽ ല ചിഹ്നമായി മാറും. മുമ്പത്തെ അക്ഷരത്തിനു ചുവട്ടിൽ വരികയും ചെയ്യും.

Lookaheadൽ ഒന്നും ചെയ്യേണ്ട. ഇനി Ok അടിച്ചു ടേബിൾ സേവ് ചെയ്യാം.

അടുത്ത ലിഗേചർ - post-base - pstf

മൈക്രോസോഫ്റ്റ് സൈറ്റിൽ ശ്രദ്ധിച്ചാൽ മനസ്സിലാവും, വേണ്ടതു് 3 ലിഗേചറുകളാണു്. സാധാരണ ലിഗേച്ചറുകൾ. ക + ചന്ദ്രക്കല + ര = ക്ര, ക + ചന്ദ്രക്കല + യ = ക്യ, ക + ചന്ദ്രക്കല + വ = ക്വ എന്നിങ്ങനെ ഉദാഹരിക്കാം.

ഇനി presentation formsലേക്കു്.

അതായതു് ഇത്രയും നേരം നമ്മൾ ചെയ്തതു് ലിഗേചർ ഉണ്ടാക്കലായിരുന്നു. ഇനി വേണ്ടതു് അവയെ പ്രദർശിപ്പിക്കുമ്പോൾ എന്തെങ്കിലും മാറ്റം വേണമെങ്കിൽ അവ ചെയ്യലാണു്. ഉദാഹരണത്തിനു്, ക + ചന്ദ്രക്കല + വ = ക്വ എന്നു ഇപ്പൊ പറഞ്ഞതേയുള്ളു. പക്ഷെ വ + ചന്ദ്രക്കല + വ എന്നുവന്നാൽ വ്വ എന്നു വേണം, അല്ലാതെ വ കഴിഞ്ഞു് ചിഹ്നമല്ല വേണ്ടതു്. സോ, അപ്രകാരം ഉള്ള ഐറ്റംസ് നിഷ്കർഷിക്കുന്ന നിയമങ്ങളെ.. എന്തു വിളിക്കുന്നു? Presentation forms എന്നു വിളിക്കുന്നു.

പൊതുവെ, ഇവ ലിഗേചറുകളായി ഉണ്ടാക്കിയാൽ മതിയാവും. അഞ്ജലി പഴയലിപിയിൽ Contextual chaining ആണു് ചെയ്തിരിക്കുന്നതു്. അതിന്റെ ആവശ്യമുണ്ടെന്നു് എനിക്കു് തോന്നുന്നില്ല. അതായതു്, അപവാദങ്ങൾ (exceptions) മാത്രം ലിഗേചറായി സൃഷ്ടിച്ചാൽ മതിയാവുന്നതാണു്.

ഇത്രയുംകൊണ്ടു് ഫോണ്ട് റെഡിയായി. ഇനി നേരത്തേ പറഞ്ഞപോലെ എക്സ്പോർട്ട് ചെയ്തു് ഉപയോഗിച്ചുതുടങ്ങാം.

ഈ ലേഖനപരമ്പര എഴുതുമ്പോൾ ഒരുപാടു പേരുടെ സഹായം എനിക്കു കിട്ടിയിട്ടുണ്ടു്. എല്ലാവരേയും പേരെടുത്തു പറയുന്നില്ല. നന്ദി എന്നൊരു വാക്കിൽ ഒതുക്കാവുന്നതല്ല എല്ലാവരും തന്ന പ്രോൽസാഹനം. പക്ഷെ ഭാഷ ഇന്നും അപൂർണമായതുകൊണ്ടു് ഇത്രയും പറഞ്ഞു് ഈ ലേഖനം നിർത്തുന്നു. അടുത്തതു് ഒരു കഥയാണു്. ഉടനെ തിരിച്ചുവരാം.

ഫോണ്ടിനെക്കുറിച്ചു് എന്തെങ്കിലും സംശയമുണ്ടെങ്കിൽ എനിക്കു് ഇമെയിൽ അയക്കുമല്ലൊ. അധികമൊന്നും അറിയില്ലെങ്കിലും ഉള്ളതു പറഞ്ഞുതരാം. അറിയാത്തതു് നമുക്കൊരുമിച്ചു കണ്ടുപിടിക്കാൻ ശ്രമിക്കുകയുമാവാം.




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) എന്ന ടേബിൽ ആവശ്യമില്ലെങ്കിൽ ഇത്രയും കൊണ്ടു് നമ്മുടെ ഫോണ്ട് ഉപയോഗയോഗ്യമായിരിക്കുന്നു. വേണമെങ്കിൽ നിർത്താം.

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

Saturday, July 30, 2011

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

"ദിപ്പ ശരിയാക്കിത്തരാം!" എന്നും പറഞ്ഞ് മുങ്ങിയ ആളെ പിന്നെ കാണാനില്ലല്ലോ എന്ന് നിങ്ങൾ സംശയിച്ചെങ്കിൽ കുറ്റം പറയാൻ പറ്റില്ല. കഴിഞ്ഞ ഒന്നൊന്നര മാസമായി വല്ലാത്ത തിരക്കിലായിരുന്നു. കൂടെ ഒരു അയർലണ്ട് യാത്രയും. അവിടെ ചെറിയ 1-2 അബദ്ധം കാണിക്കാൻ സമയം കിട്ടി. അത് പോസ്റ്റ് ചെയ്യുന്നതാണു്‌. ജുനൈദിനെ കണ്ടിരുന്നു. ഒരു ദിവസം മുഴുവൻ പഹയന്റെ കൂടെ ചെലവഴിക്കാൻ കിട്ടി.

അപ്പൊ തിരിച്ച് ഫോണ്ടിലേക്കു്‌.

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

അതിലേക്കാദ്യം ഹെക്സാഡെസിമൽ എന്നാൽ എന്ത് എന്നു്‌ മനസ്സിലാക്കേണ്ടിയിരിക്കുന്നു. ഒരല്പം സാങ്കേതികമാണു്‌ സംഗതി. കാര്യമായി മനസ്സിലായില്ലെങ്കിലും കുഴപ്പമില്ല ട്ടൊ.

ഹെക്സാഡെസിമൽ/Hexadecimal

നാം സാധാരണ പത്ത് അക്കങ്ങളാണുപയോഗിക്കുക - 0 മുതൽ 9 വരെ. ഇതിനെ ഡെസിമൽ സിസ്റ്റം എന്നു്‌ പറയും.

പത്ത് എന്ന സംഖ്യയാണു്‌ ഏറ്റവും ചെറിയ ഇരട്ടസംഖ്യ. അതെഴുതാൻ നാം 1,0 എന്നീ സംഖ്യകൾ ചേർത്തെഴുതുകയാണു്‌ ചെയ്യുന്നതു്‌. അതായതു്‌ പത്തുമുതൽ മുകളിലേക്കുള്ള സംഖ്യകൾ എഴുതാൻ 0 മുതൽ 9 വരെയുള്ള അക്കങ്ങൾ ചേർത്തെഴുതും.

കമ്പ്യൂട്ടറിൽ വിവരം സൂക്ഷിച്ചുവച്ചിരിക്കുന്നതു്‌ ഒരു പ്രത്യേകരീതിയിലാണു്‌. ഇതിന്റെ സൗകര്യത്തിനായി വികസിപ്പിച്ചെടുത്തതാണു്‌ ഹെക്സാഡെസിമൽ രീതി.

സംഗതി ലളിതമാണു്‌. ഹെക്സാഡെസിമൽ എന്നുവച്ചാൽ 16. അതായതു്‌ 10 അക്കങ്ങൾക്കുപകരം 16 അക്കങ്ങളുള്ള ഒരു സംഖ്യാരീതി അത്രയേയുള്ളു.

ഈ രീതിയിൽ 0 മുതൽ 9 വരെയുള്ള അക്കങ്ങൾ കൂടാതെ അടുത്ത 6 അക്കങ്ങളെ സൂചിപ്പിക്കാൻ ആംഗലേയ അക്ഷരങ്ങളായ A, B, C, D, E, F എന്നിവ ഉപയോഗിക്കുന്നു. താഴെയുള്ള പട്ടിക നോക്കിയാൽ മനസ്സിലാവും.

ഡെസിമൽ       ഹെക്സാഡെസിമൽ
0                       0
1                       1
2                       2
3                       3
4                       4
5                       5
6                       6
7                       7
8                       8
9                       9
10                     A
11                     B
12                     C
13                     D
14                     E
15                     F
16                     10

0 മുതൽ 15 വരെയുള്ള സംഖ്യകളെ 0 മുതൽ F വരെയുള്ള ചിഹ്നങ്ങൾ ആദേശം ചെയ്യുന്നു. F എന്നു്‌ പറഞ്ഞാൽ ഡെസിമൽ 15

അപ്പോൾ
9+1 = 10; 9+1 = A
10+1 = 11; A+1 = B
15+1 = 16; F + 1 = 10
31+1 = 32; 1F+1 = 20
255+1 = 256; FF+1 = 100

ഇതൊക്കെ എന്തിനാ പറഞ്ഞതു്‌? എന്തിനാച്ചാൽ, യൂനിക്കോഡിന്റെ അഡ്രസ്സുകളൊക്കെ ഹെക്സാഡെസിമൽ ആയതുകൊണ്ടാണു്‌. അപ്പൊ പെട്ടെന്നു്‌ 0D01 എന്നൊക്കെ കേട്ടാൽ ഞെട്ടാൻ നിങ്ങൾക്കിനി അവകാശമില്ല എന്നർത്ഥം.

ഇനി അക്ഷമയോടെ ഫോണ്ട്ഫോർജ് തുറക്കൂ...


Newൽ ക്ലിക്കുക. അപ്പൊ പുതിയ ഫോണ്ടുണ്ടാക്കാൻ സാധിക്കും (കഴിഞ്ഞ തവണ, അഞ്ജലി പഴയലിപിയല്ലേ തുറന്നതു്?)

അപ്പൊ തുറക്കുന്ന വിൻഡോയിൽ Encoding എന്ന മെനുവിൽ ക്ലിക്കി Reencode എന്ന ഐച്ഛികം തെരഞ്ഞെടുക്കുക. ഉടനെ അതിന്റെ വലതുവശത്തു്‌ കുറേ ഓപ്ഷനുകൾ തെളിയും. അതിൽ നിന്നു്‌ ISO 10646 (Unicode BMP) എന്ന ഐച്ഛികം തെരഞ്ഞെടുക്കുക.


അപ്പൊ ആദ്യം കാണിച്ചിരുന്ന ആംഗലേയ അക്ഷരങ്ങൾക്കു പുറമെ പുതിയ അക്ഷരങ്ങളും ഫോണ്ട്ഫോർജിൽ തെളിയും. അല്പം താഴത്തേക്കു്‌ വന്നാൽ മലയാളം അക്ഷരങ്ങൾ കാണാം.


ഇനി ഏതെങ്കിലും ഒരു അക്ഷരത്തിൽ ക്ലിക്കിയാൽ അതു്‌ മഞ്ഞനിറത്തിൽ ഹൈലൈറ്റ് ആവും.


ഒപ്പം വിൻഡോയുടെ മുകളിൽ മെനുവിനു്‌ തൊട്ടുതാഴെയായി ചുവന്ന അക്ഷരങ്ങളിൽ ചില വിവരങ്ങൾ തെളിയുന്നതു്‌ ശ്രദ്ധിച്ചോ?

3334    (0x0d06)     U+0D06     uni0DD06     MALAYALAM LETTER AA

ഇതിലെ 0D06 ആണു്‌ നമ്മൾ നേരത്തേ കണ്ട ഹെക്സാഡെസിമൽ സംഖ്യ.

നമ്മൾ അക്ഷരങ്ങൾ ഏതൊക്കെ ഉണ്ടാക്കണം എന്ന സംശയത്തിൽ തലചൊറിഞ്ഞു നിന്നപ്പോൾ ഞാൻ പറഞ്ഞ pdf ഫയൽ ഓർമ്മയുണ്ടോ? അതിലെ അവസാന പേജ് നോക്കൂ.

ആ എന്ന അക്ഷരത്തിനു്‌ ഇടതുവശത്തു്‌ കാണിച്ചിരിക്കുന്ന ഹെക്സാഡെസിമൽ സംഖ്യ ശ്രദ്ധിച്ചോ? 0D06 എന്നു്‌. അതുതന്നെയാണു്‌ ഫോണ്ട്ഫോർജും കാണിച്ചിരിക്കുന്നതു്‌. ഇപ്പൊ pdf മനസ്സിലാക്കാൻ എളുപ്പമായില്ലെ?

ഏതൊക്കെ അക്ഷരങ്ങൾ ഏതൊക്കെ കള്ളികളിൽ ഇടണം എന്നാണു്‌ pdf നിഷ്കർഷിക്കുന്നതു്‌. ഫോണ്ട്ഫോർജ് നമ്മുടെ സൗകര്യത്തിനു്‌ അതതു്‌ കള്ളികളുടെ മുകളിൽ ആ അക്ഷരങ്ങളുടെ ഒരു രൂപവും ചേർത്തിട്ടുണ്ടു്‌. അതുകൊണ്ടു്‌ ഇതികർതവ്യതാമൂഢതക്കു്‌ ഇനി സാധ്യതയില്ല.

ഇനി വേണ്ടതു്‌ ചില സെറ്റിംഗുകൾ മാറ്റുകയാണു്‌.

മെന്യുവിലെ Element എന്ന അവിടെ ക്ലിക്കുമ്പോൾ കാണാവുന്ന ഡ്രോപ്‍ഡൗൺ ലിസ്റ്റിൽ Font Info തെരഞ്ഞെടുക്കുക


അപ്പോഴേക്കും ദേ പുതിയ വിൻഡോ തുറന്നു.


PS Names എന്ന മെനുവിൽ ഉള്ള Fontname, Family Name, Name For Humans എന്നിവയിൽ നിങ്ങൾക്കിഷ്ടമുള്ള പേരിടുക. ആ പേരിലാവും ഇനിമുതൽ ഫോണ്ട് അറിയപ്പെടുക എന്നോർക്കുമ്പോൾ രോമാഞ്ചം കൊള്ളുക.

അതുകഴിയുമ്പോൾ നിങ്ങളിട്ട പേരു്‌ ഇതുവരെ ആരും ഇട്ടിട്ടില്ലാത്ത പേരാണല്ലോ എന്നു്‌ ഉറപ്പുവരുത്തുക. ഇനി വെറുതെ ഇത്തിരി സംഭാരം കുടിക്കുക.

അടുത്തതു്‌, ഇടതുവശത്തെ മെനുവിൽ General-ൽ ക്ലിക്കുക.


ആദ്യം Em Size നിങ്ങൾ മുൻ‍കൂട്ടി തീരുമാനിച്ച മൂല്യമാക്കുക. ഒപ്പം Ascent, Descent എന്നിവയും നമ്മുടെ മൂല്യങ്ങളാക്കുക. എന്റെ ഫോണ്ടിൽ Ascent=1600, Descent=448, Em Size=2048 (Ascent+Descent=Em Size)


ധൈര്യമായി Ok ക്ലിക് ചെയ്തോളു.

ഇനി ആ എന്ന അക്ഷരം സൂക്ഷിക്കേണ്ട കള്ളിയിൽ ഡബിൾ-ക്ലിക്ക് ചെയ്യുക. അപ്പൊ പുതിയ വിൻഡോ തുറക്കും.


File മെനുവിൽ Import എന്ന ഐച്ഛികം എടുക്കുക


അപ്പൊ പുതിയ വിൻഡോ തുറക്കും.


Formatൽ ക്ലിക് ചെയ്തു്‌ svg അല്ലെങ്കിൽ eps തെരഞ്ഞെടുക്കുക. എന്നിട്ടു്‌ നമ്മൾ നേരത്തേ വെക്റ്ററാക്കി വച്ച അക്ഷരരൂപം തെരഞ്ഞെടുത്തു്‌ Import എന്ന ബട്ടണിൽ ഞെക്കുക.


കണ്ടോ? നമ്മുടെ വെക്ടർ രൂപം "ആ" എന്ന അക്ഷരം ഇപ്പൊ ഫോണ്ട്ഫോർജിൽ കൃത്യമായി ഇരിക്കുന്നതു്‌ കണ്ടോ?!

(എന്താ പറയാ! ഒക്കെ കഴിഞ്ഞപ്പൊ ആ ചുരുങ്ങി അ ആയി!! ഇതാണു്‌ കർമഫലം!)

Metrics എന്ന മെനുവിൽ Set Lbearing എടുക്കുക


ഇവിടെ, അക്ഷരത്തിനു്‌ ഇടതുവശത്തു്‌ എത്ര സ്ഥലം വിടണം എന്നു്‌ പറയാൻ സാധിക്കും. ഉദാഹരണത്തിനു്‌ 100 എന്നു്‌ കൊടുക്കുക.


ഇതുപോലെ Metricsൽ Set Rbearing എടുത്തു്‌ വലതുവശത്തു്‌ വരേണ്ട സ്ഥലവും അടയാളപ്പെടുത്തുക.

ഇപ്പോൾ ഫോണ്ട്ഫോർജിൽ ആ എന്ന അക്ഷരം നമ്മൾ സന്നിവേശിപ്പിച്ചു.


ഇനി ഇതുപോലെ നമ്മൾ തയ്യാറാക്കിവച്ചിരിക്കുന്ന ഓരോ അക്ഷരങ്ങളും അതതു്‌ സ്ഥാനങ്ങളിൽ ഇട്ടുവക്കുക.

ഇനി നമുക്കു്‌ നമ്മുടെ ഫോണ്ട് ഉണ്ടാക്കാം.

(അപ്പൊ ഇതുവരെ ചെയ്തതോ?)

ഇതുവരെ നാം ചെയ്തതു്‌, ഫോണ്ട്ഫോർജിൽ അക്ഷരരൂപങ്ങളെ സന്നിവേശിപ്പിക്കലായിരുന്നു. ഇനി കമ്പ്യൂട്ടറിലെ ഉപയോഗത്തിനുതകുംവിധം നമ്മുടെ രൂപങ്ങളെ ഒരു ഫോണ്ടാക്കി മാറ്റേണ്ടതുണ്ടു്‌. അതിനു്‌...

File മെനുവിൽ Generate Fonts ഞെക്കുക.


അപ്പൊ താഴെ കാണും‍പോലെ ഒരു വിൻഡോ തുറന്നുവരും.


PS Type 1 (Binary) എന്ന ബട്ടണിൽ ഞെക്കി TrueType (TTF) എന്ന ഓപ്ഷൻ എടുക്കുക. ഫോണ്ട് ഫയലിനു്‌ പറ്റിയ നല്ല ഒരു പേരും കൊടുത്തു്‌ നല്ല ഒരു ഡയറക്റ്ററിയിൽ സേവ് ചെയ്യുക.

ഇപ്പോൾ നമ്മളുണ്ടാക്കിയ ഫോണ്ട് ഒരു Truetype യൂനിക്കോഡ് ഫോണ്ട് ആണ്‌. ഇതു്‌ കമ്പ്യൂട്ടറിൽ സ്ഥാപിക്കുക. വിൻഡോസ് ആണെങ്കിൽ നമ്മുടെ ഫോണ്ട് എടുത്തു്‌ C:\Windows\Fonts എന്ന ഫോൾഡറിൽ ഇട്ടാൽ മതിയാവും.

ഇനി വേർഡിലോ മറ്റോ ഏതെങ്കിലും മലയാളം യൂനിക്കോഡ് പേജ് തുറന്നു്‌ നമ്മുടെ ഫോണ്ട് സെറ്റ് ചെയ്തു്‌ നോക്കിയാൽ..

..ആകെ ഒരു വിമ്മിഷ്ടം - ഒറ്റ കൂട്ടക്ഷരമില്ല! എന്തോന്നു്‌ പഴയലിപി? ഇത് പുതിയലിപി പോലും അല്ലല്ലോ!

അതിനു്‌ കാരണം, നമ്മൾ പഴയ ലിപിയിലെ കൂട്ടക്ഷരങ്ങൾ സൃഷ്ടിച്ചിട്ടില്ല എന്നതുകൊണ്ടാണു്‌. അത് അടുത്ത ലക്കത്തിൽ പ്രതിപാദിക്കാം.

അടുത്ത ലക്കത്തിൽ ലിഗേചർ ഉണ്ടാക്കുന്ന വിധം, അഥവാ കൂട്ടക്ഷരങ്ങൾ സൃഷ്ടിക്കുന്ന വിധം.