വരമൊഴിയിലും മൊഴി കീമാനിലും എന്‍കോഡിങ്ങ് ബഗ്ഗുകള്‍

വരമൊഴിയിലും മൊഴി കീമാനിലും ( Tavultesoft keyboard) എന്‍കോഡിങ്ങ് പിശകുകള്‍. മലയാളം വിക്കിപ്പീഡിയയിലുള്ള മൊഴി കീമാപ്പിലും ഈ പിശക് ഉണ്ട്. വാക്കുകളുടെ യൂണിക്കോഡ് കോഡ് മൂല്യങ്ങളുടെ വിന്യാസത്തിലാണ് പിശക്. അനാവശ്യമായ ZWNJ ആണ് പ്രശ്നം

കുറച്ച് ഉദാഹരണങ്ങളിലൂടെ ഇത് വിശദമാക്കാം.
മൊഴി

പൊന്‍നിലാവ് (pon_nilaav): ഈ വാക്കിന്റെ ആന്തരിക യൂണിക്കോഡ് റെപ്രസന്റേഷന്‍ എന്താണെന്നറിയാന്‍ പൈത്തണ്‍ പ്രോഗ്രാമ്മിങ്ങ് ഭാഷ ഉപയോഗിക്കാം.

>>>str=u”പൊന്‍‌നിലാവ്”
>>>print repr(str)
u’\u0d2a\u0d4a\u0d28\u0d4d\u200d\u200c\u0d28\u0d3f\u0d32\u0d3e\u0d35\u0d4d’

\u200c(ZWNJ) എന്ന കോഡ് ഇവിടെ അനാവശ്യമാണ്. പൊന്‍നിലാവ് എന്ന വാക്കിന്റെ യഥാര്‍ത്ഥ യൂണിക്കോഡ് ശ്രേണി ഇതാണ്:
u’\u0d2a\u0d4a\u0d28\u0d4d\u200d\u0d28\u0d3f\u0d32\u0d3e\u0d35\u0d4d’

ഇത്തരത്തിലുള്ള മറ്റു ചില വാക്കുകളിതാ:(മൊഴി കീമാന്‍ ഉപയോഗിച്ചെഴുതിയത്)- വാക്കുകള്‍ക്കിടയില്‍ ചില്ലക്ഷരം വരുന്നവ:
മുന്‍‌തൂക്കം, എന്‍‌കോഡിംഗ്, ചാരന്‍‌മാരാണ് ,നന്‍‌മ,പാന്‍‌ഗോ,പിന്‍‌താങ്ങുന്നുവെന്നു,പിന്‍‌തിരിയണമെന്നും,പിന്‍‌പക്കത്തില്‍,പിന്‍‌വലിഞ്ഞു ,പൊന്‍‌വീണ,പൗരന്‍‌മാര്‍,മന്‍‌മോഹന്‍,മുന്‍‌കൂട്ടി,മുന്‍‌കൈ,
മുന്‍‌ഗണനകള്‍, മുന്‍‌ധാരണകളില്ലാതെ, മുന്‍‌വിധികളും, റേഷന്‍‌കാര്‍ഡിനും,സല്‍മാന്‍‌ഖാനും,സെന്‍‌ട്രല്‍ , താല്‍‌പര്യം, ഉല്‍‌പന്നം, കല്‍‌പിച്ച്,നല്‍‌കാനും, മേല്‍‌വിവരിച്ച, വില്‍‌ക്കപ്പെടുന്ന, ശില്‍‌പശാല, ലോസ്ഏഞ്ചല്‍‌സ്, കണ്‍‌വഴി, കണ്‍‌വെട്ടം , പൊന്‍നാളം, കല്‍വിളക്ക്‌
താല്‍‌പര്യം = thaal_paryam

>>> str=u”താല്‍‌പര്യം”
>>> print repr(str)
u’\u0d24\u0d3e\u0d32\u0d4d\u200d\u200c\u0d2a\u0d30\u0d4d\u0d2f\u0d02′

ZWNJ പക്ഷേ ZWJ (U+200D) എന്നതിന് ശേഷം ഇടേണ്ട കാര്യമില്ല . ZWJ ഉള്ളതുകൊണ്ട് തുടര്‍ന്നു വരുന്ന അക്ഷരങ്ങളുമായുള്ള കൂടിച്ചേരല്‍ സംഭവിക്കില്ല. മൊഴിയുടെ അല്‍ഗോരിതം എന്തുകൊണ്ടോ ZWNJ യും ഇടുന്നു.
അതായത് വാക്കുകള്‍ക്കിടയില്‍ മാത്രമല്ല , ചില്ലക്ഷരമെഴുതാന്‍ n, l, L, r,R,N എന്നിവക്ക് പകരം എവിടെയൊക്കെ l_, n_,L_, r_,R_ ,N_ എന്നിവ ഉപയോഗിക്കുന്നുവോ അവിടെയെല്ലാം എന്‍കോഡിങ്ങ് പിശകാണ്. മൊഴി സ്കീമില്‍ l_, n_,L_, r_,R_ ,N_ എന്നിവയാണ് ചില്ലക്ഷരങ്ങള്‍ക്ക് ഉപയോഗിക്കേണ്ടത് എന്ന് പറഞ്ഞിരിക്കുന്നു.

ഈ ഉദാഹരണം ശ്രദ്ധിക്കൂ
അവള്‍= avaL_

>>> str=u”അവള്‍‌”
>>> print repr(str)
u’\u0d05\u0d35\u0d33\u0d4d\u200d\u200c’

അവസാനമുള്ള ZWNJ (u+200C) ശ്രദ്ധിക്കുക. ഈ “അവള്‍ ” ഒരിക്കലും തിരഞ്ഞാല്‍ കിട്ടാത്തവളാണെന്ന് വ്യക്തമാണല്ലോ.

ഈ പ്രശ്നം സിബു http://varamozhi.wikia.com/wiki/Help:Contents/Known_Problems
എന്ന പേജില് ചേര്‍ത്തിട്ടുണ്ട്.

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

വരമൊഴിയിലും ബഗ്ഗ്

http://varamozhi.wikia.com/wiki/Help:Contents/Mozhi എന്ന വിക്കി താളില്‍ പറഞ്ഞിരിക്കുന്നു:
‘പിന്‍നിലാവ്‌’ എന്ന വാക്കു ശ്രദ്ധിക്കൂ. മംഗ്ലീഷില്‍ pinnilaav~ എന്നാണെഴുതേണ്ടത്‌ എന്നാവും ആദ്യം തോന്നുക. പക്ഷെ, കമ്പ്യൂട്ടറിനൊരു സംശയമുണ്ടാവും; അതിനെ ‘പിന്നിലാവ്‌’ എന്ന്‌ വായിച്ചാലെന്തെന്ന്‌. സംശയം ന്യായമാണ്‌. ഈയൊരു ആശയക്കുഴപ്പത്തിനിടയാക്കാത്ത വിധം പ്രശ്നം തീര്‍ക്കുന്നതിനാണ്‌ ‘_’ (underscore) എന്ന Zero Width Space (ZWS) – വലിപ്പമില്ലാ ചിഹ്നം.

ഇവിടെ ZWS എന്നത് ഒരു അനാവശ്യ യുണിക്കോഡ് കോഡ് മൂല്യമല്ലേ? ZWS ഇല്ലാതെ തന്നെ പിന്‍നിലാവ് എന്ന് എഴുതാനും പറ്റും. ZWS ഇടേണ്ടിവരുന്നത് സോഫ്റ്റ്‌വെയറിലെ ബഗ്ഗ് മൂലമല്ലേ? ഇനി വേറൊന്ന് :

വരമൊഴി ഉപയോഗിച്ച് ഞാന്‍ എന്റെ പേര് എഴുതി നോക്കി. സന്തോഷ് =santhOsh

>>> str=u”സന്തോഷ്‌”
>>> print repr(str)
u’\u0d38\u0d28\u0d4d\u0d24\u0d4b\u0d37\u0d4d\u200c

വാക്കിന്റെ അവസാനമുള്ള ZWNJ ശ്രദ്ധിക്കുക.
ഇന്‍സ്ക്രിപ്റ്റ് ഉപയോഗിച്ച് സന്തോഷ് എന്നെഴുതിയപ്പോള്‍:

>>> str=u”സന്തോഷ്‌”
>>> print repr(str)
u’\u0d38\u0d28\u0d4d\u0d24\u0d4b\u0d37\u0d4d’

വരമൊഴി ഉപയോഗിച്ച് പൊന്‍നിലാവ് എഴുതുമ്പോള്‍:

>>>str=u”പൊന്‍നിലാവ്‌”
>>>print repr(str)
u’\u0d2a\u0d4a\u0d28\u0d4d\u200d\u0d28\u0d3f\u0d32\u0d3e\u0d35\u0d4d\u200c

അവന് avan~

>>> str=u”അവന്‌”
>>> print repr(str)
u’\u0d05\u0d35\u0d28\u0d4d\u200c

മേല്‍പറഞ്ഞ ഉദാഹരണങ്ങളില്‍ \u0d4d (ചന്ദ്രക്കല) എന്നതിന് ശേഷം \u200c വരുന്നതെങ്ങനെ?
മൊഴിയിലെഴുതിയതും , വരമൊഴിയിലെഴുതിയതും, ഇന്‍സ്ക്രിപ്റ്റിലെഴുതിയതുമായ പൊന്‍നിലാവ്‌ എന്ന വാക്കിന് 3 എന്‍കോഡിങ്ങ്! അതായത് കമ്പ്യൂട്ടറിനെ സംബന്ധിച്ചിടത്തോളം മൂന്നും മൂന്ന് മലയാളം വാക്കുകള്‍!

ഈ ബഗ്ഗുകളെല്ലാം സിബുവിനെയും പെരിങ്ങോടനെയും അറിയിച്ചിട്ടുണ്ട്. ബഗ്ഗാണെന്നാണ് അവരും അംഗീകരിച്ചു.
അവരുമായുള്ള ഈ മെയില്‍ സംവാദത്തില്‍ നിന്ന് :

പെരിങ്ങോടന്‍:
മൊഴിയാണെങ്കില്‍ ~ ഉപയോഗിക്കുന്നത്

1. ഒരു വാക്കിനു നടുവില്‍ ആണെങ്കില്‍ അടുത്തുവരുന്ന അക്ഷരത്തെ ചന്ദ്രക്കല ഉള്ള തൊട്ടുമുമ്പിലെ അക്ഷരവുമായി കൂട്ടിച്ചേര്‍ക്കുവാന്‍ ആഗ്രഹിക്കുന്നില്ല എന്ന അസമ്പ്ഷന്‍
2. ഒരു വാക്കിനു അവസാനത്തിലാണെങ്കില്‍ ചന്ദ്രക്കലയ്ക്കു പകരം ചില്ലുരൂപങ്ങള്‍ വരുന്ന വാക്കുകളില്‍ ചന്ദ്രക്കല സൂചിപ്പിക്കുവാന്‍ (സന്തോഷ് എന്നെഴുതുവാന്‍ santhOsh എന്നുമതി, അവസാനത്തെ ~ ആവശ്യമില്ല, അവന്‌ എന്നെഴുതുവാന്‍ ~ ആവശ്യമുണ്ട്)

ഇവിടെ രണ്ടാമത്തെ ഉപയോഗത്തില്‍ ഒരു ബഗ്ഗുണ്ട്, വാക്കുകള്‍ക്കു നടുവില്‍ ചന്ദ്രക്കല എഴുതുമ്പോള്‍ ഇടുന്ന ZWNJ വാക്കുകള്‍ക്കു അവസാനവും വന്ന് പോകുന്നുണ്ട്, ഒരാള്‍ എഴുതിക്കൊണ്ടിരിക്കുമ്പോള്‍ അത് വാക്കിന്റെ അവസാനമോ എന്ന് ഊഹിക്കുവാന്‍ കഴിയാത്തതില്‍ ആണത്. എന്നാല്‍ ZWNJ + Space -> Space എന്നൊരു റൂള്‍ ഉണ്ടെങ്കില്‍ ഈ പ്രശ്നം ഒഴിവാക്കുകയും ചെയ്യാം (or any other special character assuming user will type those special character to resume typing, cibu has already pointed out this bug, I was reluctant to fix it considering a normal user perspective)
സിബു:
“ആവശ്യമില്ലാത്ത zwnj മുഴുവന്‍ ഒഴിവാക്കാന്‍ പറ്റും എന്നെനിക്ക്‌ പ്രതീക്ഷയില്ല. ath~ എന്നൊരാളെഴുതിയാല്‍ വരമൊഴി അവസാനം കൊണ്ടുപോയി zwnj ഇടും. അതാണ് യൂസര്‍ ആഗ്രഹിക്കുന്നത്‌ എന്നാണ് എന്റെ അനുമാനം. കാരണം അതുകഴിഞ്ഞുവരുന്ന ക്യാരക്റ്റര്‍ ‘ത’യുമായി കൂട്ടക്ഷരമുണ്ടാക്കരുത്‌ എന്നുദ്ദേശിച്ചിട്ടാവും അങ്ങനെ യൂസറിട്ടതെന്ന്‌ വരമൊഴി കരുതുന്നു.
എന്നാല്‍ zwj, zwnj കോമ്പിനേഷന്റെ ആവശ്യം ഒന്നുമില്ലെന്നാണ് എനിക്ക്‌ തോന്നുന്നത്‌. അവിടെ zwnj പറ്റുമെങ്കില്‍ ഒഴിവാക്കാവുന്നതാണ്.”

സന്തോഷ് :
പക്ഷേ സന്തോഷ് എന്നെഴുതാന് ഞാന് ~ ഉപയോഗിച്ചില്ല. santhOsh എന്നാണ്
എഴുതിയത്. അപ്പോള് അതിന്റെ അറ്റത്ത് zwnj വരുന്നതെങ്ങനെ എന്ന്
വിശദീകരിക്കാമോ?

സിബു:
നോക്കി. ശരിയാണ് അവസാനം ഒരു ZWNJ വരുന്നുണ്ട്. അത്‌ ഒരു വരമൊഴി ബഗ് തന്നെ. ശരിയാക്കാന്‍ എന്തുമാത്രം എളുപ്പമാണ് എന്നറിഞ്ഞുകൂടാ എന്നു മാത്രം.

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

മലയാളം എന്‍കോഡിങ്ങ് ഇന്‍സ്ക്രിപ്റ്റിനെയാണ് പ്രമാണമാക്കേണ്ടത്. നിവേശകരീതി ഏതായാലും അന്തര്‍ലീനമായ എന്‍കോഡിങ്ങ് ഒന്നായാലേ ഏതൊരു സോഫ്റ്റ്‌വെയറിനും അവയെ കൈകാര്യം ചെയ്യാനാകൂ. മൊഴി കീമാന് എന്‍‌കോഡിങ്ങ് എന്ന വാക്കു തന്നെ തെറ്റായേ എഴുതാനാകൂ.
ഇന്‍സ്ക്രിപ്റ്റ് ഉപയോഗിച്ച് ഒരു രചനയില്‍ ഞാന്‍ എന്റെ പേരെഴുതി എന്നിരിക്കട്ടെ. വരമൊഴി ഉപയോഗിച്ചെഴുതിയ “സന്തോഷ്” എന്ന വാക്ക് ആ രചനയില്‍ തിരഞ്ഞാല്‍ കിട്ടില്ല. Notepad ലോ , Gedit ലോ പരീക്ഷിച്ച് നോക്കൂ.

അതുകൊണ്ട്:
1. ഭാഷയില്‍ ഈ പ്രശ്നങ്ങള്‍ ഇനിയും കടന്നു കൂടാതിരിക്കാന്‍ മേല്‍ പറഞ്ഞ ബഗ്ഗുകള്‍ അടിയന്തിരമായി തിരുത്തേണ്ടതുണ്ട്. തെറ്റിയ അല്ഗോരിതം ഏതാണെന്ന് വ്യക്തമാക്കിയാല്‍ എല്ലാവര്‍ക്കും സഹായിക്കാന്‍ സാധിച്ചേക്കും.
2. ഇപ്പോള്‍ കടന്ന് കൂടിയ ബഗ്ഗുകള്‍ എങ്ങനെ തിരുത്തണമെന്ന് നാം ആലോചിക്കേണ്ടിയിരിക്കുന്നു.(വിക്കിപ്പീഡിയയില്‍ ഒരു ബോട്ട് ഉപയോഗിക്കേണ്ടി വന്നേക്കും എന്നാണ് സിബു എന്നോട് പറഞ്ഞത്. അതിന്റെ പ്രായോഗികതയെപറ്റി ചിന്തിക്കേണ്ടിയിരിക്കുന്നു.)
3. പുതിതായി വരുന്നതും ഇപ്പോളുള്ളതുമായ നിവേശകരീതികള്‍ സൂക്ഷ്മമായ എന്‍‌കോഡിങ്ങ് ടെസ്റ്റിന്‍ വിധേയമാക്കണം. അതിന് ശേഷമേ പബ്ലിക് റിലീസ് പാടുള്ളൂ.

23 thoughts on “വരമൊഴിയിലും മൊഴി കീമാനിലും എന്‍കോഡിങ്ങ് ബഗ്ഗുകള്‍”

  1. അതു് കൊണ്ടാണു് ഭായ് ഈ ജോയ്​നറുകളെ നാം നാടു് കടത്തണം എന്നു് പറയുന്നതു് . ആണവചില്ലുകള്‍ വന്നാല്‍ പ്രശ്നം തീര്‍ന്നില്ലേ …

    റാല്‍മിനോവ് (വിത്തൗട്ട് നോണ്‍ജോയ്​നര്‍)

    1. സത്യത്തില്‍ ഇത്‌ വരമൊഴിയുടെ സ്വാതന്ത്രമാണ് ചന്ദ്രക്കല ഉറപ്പാക്കാന്‍ zwnj ഉപയോഗിക്കണോ വേണ്ടയോ എന്നത്‌.

      മാത്രവുമല്ല, വരമൊഴി സന്തോഷ് പറഞ്ഞപോലെ ചെയ്താലും വാക്ക്‌ എങ്ങനെ വരുന്നു എന്നത്‌ ഉപഭോക്താവിന്റെ ശീലമനുസരിച്ചിരിക്കും. അത് എന്നെഴുതാന്‍ ഞാന്‍ ‘ath~’ എന്നാവും എഴുതുന്നത്‌; വേറേ ആള്‍ ‘ath’ എന്നും. രണ്ടും തമ്മില്‍ കാഴ്ചയില്‍ വ്യത്യാസമില്ലാത്തതുകൊണ്ട് ഒരിക്കലും ആളുകളുടെ ഈ ശീലങ്ങള്‍ മാറാന്‍ പോകുന്നില്ല.

      അതുകൊണ്ട് ഇത്‌ വരമൊഴിയില്‍ തിരുത്തേണ്ടത്‌ ഒരു ഓപ്ഷണല്‍ സംഗതിയാണ്. തിരുത്തിയില്ലെങ്കിലും വലിയ വ്യത്യാസമൊന്നുമില്ല. പകരം ആവശ്യമില്ലാത്ത zwnj-കളെ സോര്‍ട്ട് ചെയ്യുമ്പോഴും സെര്‍ച്ച് ചെയ്യുമ്പോഴും ഇഗ്നോര്‍ ചെയ്യാത്ത അപ്ലിക്കേഷനുകളുടെ ബഗാണ് ഇത്‌.

      യുണീക്കോഡ് സ്റ്റാന്റേഡ് പറയുന്നത്‌ ശ്രദ്ധിക്കുക: “These characters are also ignored except with respect to specific, defined processes; for example, zero width non-joiner is ignored by default in collation.“ (http://www.unicode.org/versions/Unicode5.0.0/ch05.pdf#G23390)

      സിബു

      1. ബഗ് ഫിക്സ് ഓപ്ഷണലല്ല.

        ZWNJ ഉപയോഗിക്കണോ വേണ്ടയോ എന്ന് തീരുമാനിക്കാനുള്ള സ്വാതന്ത്ര്യം വരമൊഴിക്കില്ല. യൂണിക്കോഡ് നിശ്ചയിച്ച മലയാളം എന്‍‌കോഡിങ്ങിലേക്ക് മംഗ്ലീഷിനെ മാറ്റുക എന്നതാണ് അതിന്റെ ധര്‍മ്മം. എവിടെ ZWNJ ഇടണം എന്നതിന് നിയമങ്ങളുണ്ട്.
        അത് എന്നത് ath അല്ലെങ്കില്‍ ath~ എന്നുപയോഗിച്ച് എഴുതാന്‍ ഉപയോക്താവിനെ അനുവദിക്കുന്നത് വരമൊഴിയുടെ സ്വാതന്ത്ര്യം. അതിലേതെങ്കിലും ഒന്ന് ഉപയോഗിക്കേണ്ടത് ഉപയോക്താവിന്റെ സ്വാതന്ത്ര്യം അല്ലെങ്കില്‍ ശീലം.ഉപയോക്താവ് അങ്ങനെ എഴുതിയാല്‍ എന്‍‌കോഡിങ്ങ് നിയമങ്ങളനുസരിച്ച് അതിനെ യുണിക്കോഡ് “അത്” ആക്കുക എന്നത് വരമൊഴിയുടെ ജോലി. അത് എന്ന വാക്കിന് ഒരേ ഒരു എന്‍‌കോഡിങ്ങേ യുണിക്കോഡ് നിര്‍‌വചിക്കുന്നുള്ളൂ. അല്ല, അതിനാണല്ലോ യുണിക്കോഡ് എന്ന സംഗതി തന്നെ ഉള്ളത്?

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

        ബഗ്ഗ് ഫിക്സ് ചെയ്യേണ്ടത് ഓപ്ഷണല്ല, നിര്‍ബന്ധമാണ്. അതെങ്ങനെ എന്നാണ് നാം ചിന്തിക്കേണ്ടത്.

        1. Re: ബഗ് ഫിക്സ് ഓപ്ഷണലല്ല.

          മൊഴിയും വരമൊഴിയുമാണ് ഏറ്റവും ജനകീയമായ ട്രാന്‍‌സ്‌ലിറ്ററേഷന്‍ പ്രോഗ്രാമുകള്‍. തുടക്കം തൊട്ടേ ഞാന്‍ യൂണീക്കോഡ് ടൈപ്പുചെയ്യാന്‍ മൊഴിയാണ് ഉപയോഗിക്കുന്നത്.

          ഇന്‍‌സ്ക്രിപ്റ്റ് ഉപയോഗിച്ച് ടൈപ്പുചെയ്തിട്ടുള്ള കണ്ടന്റും മൊഴി ഉപയോഗിച്ച് ടൈപ്പുചെയ്തിട്ടുള്ള കണ്ടന്റും തമ്മില്‍ തിരയുന്ന സമയത്ത് വ്യത്യാസങ്ങള്‍ ഞാന്‍ ശ്രദ്ധിച്ചിട്ടുണ്ട്.

          “ആവശ്യമില്ലാത്ത ZWNJ , ആവശ്യമുള്ള ZWNJ എന്നൊന്ന് സോഫ്റ്റ്‌വെയറുകള്‍ക്കറിയില്ല. ഒന്നുകില്‍ എല്ലാ ZWNJ യും തള്ളുക അല്ലെങ്കില്‍ എല്ലാം ഉപയോഗിക്കുക എന്നേ അവയ്ക്കറിയൂ” അപ്പോള്‍ എന്താണ് പരിഹാരം സന്തോഷേ?

          മൊഴി, വരമൊഴിയില്‍ എന്റെ ചില ഒബ്സര്‍വേഷനുകള്‍ ഇതാ –

          മൊഴി ഉപയോഗിച്ച് “ന്റ” (nRa എന്ന കീ കോംബിനേഷനില്‍) അടിക്കുമ്പോള്‍, മൈക്രോസോഫ്റ്റിന്റെ കാര്‍ത്തികയില്‍ കൃത്യമായ ഡിസ്‌പ്ലേ വരുന്നില്ല. ചിലര്‍ ഇതിനൊരു പോം‌വഴി കണ്ടുപിടിച്ചിട്ടുണ്ട്. n+\+Backspace+R+a എന്നാണ് കൃത്യമായി “ന്റ” കിട്ടാനായി ചിലര്‍ ഉപയോഗിക്കുന്ന പോംവഴി. എന്നാല്‍ ശരിക്കുള്ള “ന്റ”യ്ക്കും മേല്‍‌പ്പറഞ്ഞ കീ കോംബിനേഷന്‍ വഴിയുണ്ടാക്കുന്ന “ന്റ”യ്ക്കും പ്രകടമായ വ്യത്യാസമുണ്ട്. കാര്‍ത്തികയില്‍ കൃത്യമായി കാണുന്നത് അഞ്ജലിയില്‍ പ്രശ്നം, അഞ്ജലിയില്‍ കൃത്യമായി കാണുന്നതാവട്ടെ കാര്‍ത്തികയില്‍ പ്രശ്നവും!

          മൈക്രോസോഫ്റ്റ് വേഡില്‍ (ഏറ്റവും പുതിയ ഓഫീസ് 2007 ല്‍ അടക്കം) യൂണീക്കോഡ് ടൈപ്പുചെയ്യുമ്പോള്‍ ചില്ലക്ഷരങ്ങള്‍ ന്, ണ്, ല്, ള്, ര് എന്നിങ്ങനെയാണ് വരുന്നത്. എന്നാല്‍ വരമൊഴി ഉപയോഗിച്ച് ഉള്ളടക്കം ടൈപ്പുചെയ്ത് യൂണീക്കോഡാക്കി എക്സ്പോര്‍ട്ട് ചെയ്ത്, എച്ച് ടി എം എല്‍ വിന്‍ഡോയില്‍ നിന്ന് കോപ്പി ചെയ്ത് വേഡില്‍ പേസ്റ്റ് ചെയ്താലോ സംഗതി ക്ലീന്‍, എല്ലാ ചില്ലക്ഷരവും കറക്റ്റ് ആയി കാണാന്‍ പറ്റും!

          ബെന്നി

          1. Re: ബഗ് ഫിക്സ് ഓപ്ഷണലല്ല.

            വെറുതെയാണു് ബെന്നി, വേഡില്‍ (2003 ദാ ഇപ്പോ നോക്കി) യുണീക്കോഡ് ടൈപ്പ് ചെയ്യുമ്പോള്‍ മര്യാദയ്ക്ക് റാല്‍മിനോവ് എന്നൊക്കെ വരുന്നുണ്ടു്. ഞാന്‍ ഇന്‍സ്ക്രിപ്റ്റാണു് ഉപയോഗിക്കുന്നതെന്നു് മാത്രം. പിന്നെ ഫോണ്ടു് അഞ്ജലിയോ കാര്‍ത്തികയോ മറ്റോ ആക്കണം. ഡിഫോള്‍ട്ട് വരുന്നതു് ഏരിയലാണു് !

            റാല്‍മിനോവ്

          2. Re: ബഗ് ഫിക്സ് ഓപ്ഷണലല്ല.

            മൈക്രോസോഫ്റ്റ് വേഡില്‍ (ഏറ്റവും പുതിയ ഓഫീസ് 2007 ല്‍ അടക്കം) യൂണീക്കോഡ് ടൈപ്പുചെയ്യുമ്പോള്‍ ചില്ലക്ഷരങ്ങള്‍ ന്, ണ്, ല്, ള്, ര് എന്നിങ്ങനെയാണ് വരുന്നത്.

            ഇതിന്‍റെ യഥാര്‍ഥ കാരണം, മുകളില്‍ പറഞ്ഞ IME-കള്‍ പലപ്പോഴും WM_IME* മെസേജുകള്‍ അയയ്ക്കുന്നില്ല എന്നതാണ്. മറ്റൊന്ന്, പല IME-കളും, ഡീഫോള്‍ട്ട് കീബോഡ് (US-English) ഉപയോഗിക്കുന്നു എന്നതാണ്. ഒരു വേഡ് പ്രോസസ്സറായ വേഡിന് യൂസര്‍ ഉപയോഗിക്കുന്ന കീബോഡ് ഏതാണെന്ന് ഓര്‍ത്തുവയ്ക്കേണ്ടതുണ്ട്. (ഓരോ അക്ഷരത്തിന്‍റെയും കീബോഡ് ഏതായിരുന്നു എന്ന് വേഡ് ഓര്‍ത്തിരിക്കുന്നു). എന്നാല്‍ മാത്രമേ ഗ്രാമര്‍, സ്പെല്‍ചെക്കര്‍, മുതലായവ കൃത്യമായി ഊപയോഗിക്കാന്‍ വേഡിനു സാധിക്കൂ.

            കീബോഡ് US-English ആയാല്‍ (മലയാളം അല്ലെങ്കില്‍) ZWJ കളയുന്നത് സ്വാഭാവികം.

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

            -സന്തോഷ്

      2. വരമൊഴിയുടെ സ്വാതന്ത്ര്യം അത് എന്നെഴുതാന്‍ ​ath~ എന്നെഴുതണമോ അതോ ath എന്നെഴുതണമോ എന്നതിലൊതുങ്ങുന്നു. ട്രാന്‍സ്ലിട്രേഷന്‍ അപ്ലിക്കേഷനില്‍ ഉപഭോക്താവ് എങ്ങനെ എഴുതിയാലും യൂണിക്കോഡിലേക്ക് അത് കണ്‍വര്‍ട്ട് ചെയ്താല്‍ ഉണ്ടായിവരേണ്ടത് ഇന്‍സ്ക്രിപ്റ്റില്‍ ഉണ്ടാക്കുന്നതിനു തുല്യമായ കോഡായിരിക്കണം. അതിനു പറ്റാത്തതിനെയാണ് അപ്ലിക്കേഷന്റെ പിഴവ് എന്നു പറയുക. തിരുത്തേണ്ടത് ആളുകളുടെ ശീലങ്ങളല്ല അപ്ലിക്കേഷനുകളുടെ പിഴവുകളാണ്. ഏതായാലും ന്യായം കൊള്ളാം . അനാവശ്യത്തിന് ZWNJ ഇട്ടു വെക്കുന്ന അപ്ലിക്കേഷനുകളല്ല അത് കണ്ടുപിടിക്കുന്ന അപ്ലിക്കേഷനുകളാണ് ബഗ്ഗി എന്നന്യായത്തിന് “നിങ്ങളോരാടു കാര്‍പ്പറ്റ് പൊക്കിനോക്കാന്‍ പറഞ്ഞു” എന്നാണ് മനസ്സിലാവുന്ന അര്‍ത്ഥം.

        ഇപ്പോഴത്തെ വരമൊഴിയിലെ (മൊഴിയിലെയല്ല)പ്രശ്നം “അത്” എന്നതും “അതു് “എന്നതും മനസ്സിലാക്കുന്നതില്‍ നിന്നു തുടങ്ങുന്നതാണ്. ലിപിപരിഷ്കരണം സംവൃതോകാരത്തെ ഇല്ലാതാക്കിയെങ്കിലും ഇന്ന് ഭൂരിഭാഗം പേരും “അത്” എന്നാണ് എഴുതുന്നതെങ്കിലും അത് ഭാഷയുടെ ലോജിക്കിന്റെ ഭാഗമാണ്. വാക്കിന്റെ അവസാനത്തില്‍ ZWNJ ഒരിക്കലും വരികയില്ല എന്ന് വരമൊഴിക്ക് മനസ്സിലാക്കാന്‍ കഴിഞ്ഞാല്‍ തീര്‍ക്കാവുന്ന പ്രശ്നമാണിതെന്നെനിക്കുതോന്നുന്നു.

        മൊഴി സ്കീമിന്റേത് കൂടുതല്‍ ഗുരുതരമാണ്. (കീമാന്റെ പ്രശ്നം ) പെരിങ്ങോടരെ, ഒന്നു കാര്യമായി നമുക്കൊന്നു തീര്‍ക്കാന്‍ നോക്കിയാലോ? ഞാനും കൂടാം.
        അനിവര്‍

        1. യുണിക്കോഡിലെല്ലാ ക്യാരക്റ്റേഴ്സും ഒരുപോലെയാണ് എന്നു കരുതുന്നതാണ് ഈ തെറ്റിദ്ധാരണകള്‍ക്ക്‌ കാരണം. മലയാളം ‘അ’ യുടെ വെയിറ്റല്ല ജോയിനറുകളുടേത്‌. അപൂര്‍വ്വം റെന്‍ഡറിംഗ് കോണ്ടക്സ്റ്റുകള്‍ക്കല്ലാതെ അവയെക്കൊണ്ടാവശ്യമില്ല. ആ റെന്‍ഡറിംഗ് കോണ്ടക്സ്റ്റിലൊഴികെ ബാക്കിയെല്ലായിടത്തും അവയെ ഇഗ്നോര്‍ ചെയ്യുകയാണ് വേണ്ടത്‌ എന്ന്‌ സ്റ്റാന്റേഡ് പറയുന്നു. ആവശ്യമുള്ള സ്ഥലങ്ങള്‍ ഏത്‌ എന്ന്‌ ഡാറ്റ പ്രോസസ് ചെയ്യുന്ന അപ്ലിക്കേഷനേ അറിയൂ. ‘അത്‌‘ ‘സന്തോഷ്’ എന്നീ വാക്കുകളുടെ കാര്യത്തില്‍ വരമൊഴി ഇടുന്ന ജോയിനര്‍ ഉപയോഗിക്കേണ്ടിവരുന്ന സന്ദര്‍ഭമേ ഇല്ല. എന്നാല്‍ ഇത്‌, പ്രോഗ്രാമിംഗില്‍
          x += 1 എന്നിടാമായിരുന്ന സ്ഥലത്ത്‌ x = x + 1 എന്നുവച്ചു എന്നപോലുള്ള നിസാരസംഗതിയാണ്. ഉപഭോക്താവിനെ ബാധിക്കേണ്ട കാര്യമേ ഇല്ല.

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

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

      3. ആണവചില്ലിനുള്ള ഈ ന്യായം കൊള്ളാം!

        (നോണ്‍)ജോയ്നറുകള്‍ വിരാമയ്ക്കുശേഷം ഒരെണ്ണം മാത്രമേ വേണ്ടൂ.അവിടെ അവ എന്തുകൊണ്ടും നിലനിര്‍ത്തേണ്ടതുമാണ്.വിലയില്ലാത്തതല്ലേ, തോണ്ടിക്കളയേണ്ടതല്ലേ എന്നൊക്കെ ന്യായം പറഞ്ഞ് അവശ്യമില്ലാത്തിടത്ത് അവ വാരിയിടുന്നത് നന്നല്ല.(ഇതൊന്നും യൂസര്‍ അറിയുന്നില്ല എന്നതും പന്തിയല്ല.).സ്ഥാനത്ത് അവയ്ക്ക് വിലയുണ്ട്;അല്ലാത്തിടത്ത് അവ ചവറുമാണ്.

  2. It is nice to see that you write in ml_IN, I hope it sets off a trend amongst some of the feeds that get subscribed to http://planet-india.randomink.org/. However, I’d request that for topics that are also of general interest (ie not limited to ml_IN community), could you consider doing an English post and linking it to ? That way perhaps I’d be (among others) able to learn from your insights.

    1. English version of the post

      Sankarshan,
      This post is related to bugs(Encoding problem) found in Malayalam transliteration based Input Methods. Extra ZWNJ characters were found in the words written using that input methods. I was pointing out where they are coming and what will be the impact. I will consider posting blogs in English if it is of general interest.
      Thanks for the comment.
      Santhosh

  3. FYI: When I used Phonetic Input Tool from MS (it is the IME BhashaIndia.com created), it produces the correct encoding sequences for all the words you mentioned above.

    A bit of an off topic: I have found couple of other issues with Tavultesoft’s IME because it fails to send many of the WM_IME* messages (specified here: http://msdn2.microsoft.com/en-us/library/ms776175.aspx) which most of the word processors in Windows expect.

    – Santhosh

  4. എന്റെ ഒരു സംശയം ആരെങ്കിലും ഒന്നു തീര്‍ത്തു തരൂ…

    യൂസര്‍ ZWNJ,ZWJ തുടങ്ങിയവ ഉപയോഗിക്കാത്തതു കൊണ്ടാണല്ലോ വരമൊഴിയും, മൊഴി സ്കീമും ഒക്കെ വന്നത്. അപ്പൊപ്പിന്നെ യൂസര്‍ ZWNJ ആണോ ആഗ്രഹിക്കുന്നത് എന്നു നോക്കാതെ യൂസര്‍ അങ്ങനെയിട്ടാലുും എഴുതാന്‍ സമ്മതിക്കാതിരിക്കുകയല്ലെ വേണ്ടത്?

    ആണവ ചില്ലു വന്നാല്‍ ZWJ പ്രശ്നം തീരുമോ? ഇപ്പോ ഇങ്ങനെ എഴുതി ശീലിച്ചാല്‍ പിന്നെ മാറ്റം വരുമ്പോഴും അങ്ങനെ എഴുതില്ലെ? അതോ അപ്പോ മാറ്റിയാപ്പോരേ എന്നാണോ?

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

    ജിനേഷ്

    1. വരമൊഴിയില്‍ ടില്‍ഡയുടെ (~) അര്‍ഥം ഇങ്ങനെയാണ്: ആ സ്ഥലത്ത്‌ നിര്‍ബന്ധമായും ചന്ദ്രക്കല കാണിക്കണം എന്ന്`. ഇത്‌ പ്രാധാന്യമര്‍ഹിക്കുന്നത്‌ വാക്കുകള്‍ക്കിടയിലും, ചില്ലിലവസാനിക്കാവുന്ന വാക്കുകളിലുമാണ്. ഉദാ: സദ്‌വാരം = sad~vaaram; അവന് = avan~. ഈ ഒരു അര്‍ത്ഥത്തെ ZWJ, ZWNJ എന്നീ യുണീക്കോഡ് കോഡുകളിലേയ്ക്ക്‌ ആവശ്യാനുസരണം മാറ്റുകയാണ് വരമൊഴി ചെയ്യുന്നത്‌. നിര്‍ബന്ധമായും ചന്ദ്രക്കല കാണിക്കാന്‍ വരമൊഴിക്ക്‌ ചെയ്യാവുന്ന ഒരു കാര്യം അങ്ങനെ യൂസര്‍ പറയുന്ന സമയത്തെല്ലാം < വിരാമ, ZWNJ> എന്ന കോഡിഡുകയാണ്.

      സ്വതന്ത്രചില്ലുകള്‍ വന്നാല്‍ ZWJ-പ്രശ്നം ഉണ്ടാവുകയില്ല – അപ്ലിക്കേഷനുകള്‍ അതനുസരിച്ച്‌ തിരുത്തിയാല്‍. യൂസര്‍ ഒന്നും അറിയേണ്ടതില്ല; ‘അവന്‍’ എന്ന്‌ യൂസര്‍ ‘avan’ എന്നുതന്നെ എഴുതും. എഡിറ്ററുകളും കീമാനുകളും പുതിയ കോഡുണ്ടാക്കും.

      1. വരമൊഴിയ്ക്ക് ZWNJ ശരിയായി കൈകാര്യം ചെയ്യാനറിയില്ല എന്നതാണോ ആണവ ചില്ലിനുള്ള ന്യായം? ആണവ ചില്ലിന്റെ പ്രശ്നങ്ങളിലേയ്ക്കിവിടെ കടക്കുന്നില്ല, തത്കാലം വരമൊഴിയ്ക്ക് ZWNJ ശരിയായി കൈകാര്യം ചെയ്യാനറിയാത്തതെങ്ങനെ പരിഹരിയ്ക്കാം എന്ന് നോക്കാം. എല്ലായിടത്തും ചന്ദ്രക്കല+ZWNJ ആവശ്യമില്ല. ഒരു പ്രയോഗത്തിന്റെ എളുപ്പമാണോ ഇവിടെ നോക്കേണ്ടത്? ഇന്‍സ്ക്രിപ്റ്റില്‍ ഇത് ശരിയായി കൈകാര്യം ചെയ്യാന്‍ പറ്റുന്നുണ്ടല്ലോ. പിരിച്ചെഴുതേണ്ടിടത്തു് മാത്രം ZWNJ ഉം അല്ലാത്തിടത്തു് ചന്ദ്രക്കലയും ഇട്ടാല്‍പോരേ? ZWJ, ZWNJ, ചന്ദ്രക്കല ഇവയ്ക്കു് മൂന്നു് ചിഹ്നങ്ങള്‍ കൊടുത്താല്‍ പോരേ? ഉപയോക്താവെന്താണുദ്ദേശിയ്ക്കുന്നതെന്നു് തെറ്റായി ഊഹിച്ചെടുക്കുന്നതിനു് പകരം ഉപയോകാതാവെന്താണുദ്ദേശിയ്ക്കുന്നതു് അതു് തന്നെ ടൈപ് ചെയ്യാന്‍ അനുവദിയ്ക്കുന്നതല്ലേ?

        ചില്ലക്ഷരമാക്കാനൊരു ചിഹ്നം (ZWJ)
        പിരിച്ചെഴുതാനൊരു ചിഹ്നം (ചന്ദ്രക്കല ZWNJ)
        ചന്ദ്രക്കലയ്ക്കൊരു ചിഹ്നം

        1. പ്രവീണേ പ്രശ്നം അതല്ല. ഇപ്പോ ഞാന്‍ വരമൊഴി വച്ച് പിരിച്ചെഴുതാനുള്ള ചിഹ്നം വാക്കിന്റെ അവസാനം ഉപയോഗിച്ചാല്‍ പ്രത്യക്ഷത്തില്‍ മാറ്റമൊന്നുമില്ല. എന്‍കോഡിങ്ങില്‍ ഒരു ZWNJ അധികം വരുകയും ചെയ്യും. ZWNJ കഴിഞ്ഞ് അടുത്തതു space ആണെങ്കില്‍ ZWNJ strip ചെയ്യുക എന്നതാണ് നല്ല പ്രധിവിധീ….

          ആകെ ആറു ചില്ലുകള്‍‌ക്കേ ZWJ വേണ്ടൂ എന്നിരിക്കേ അവയ്കു മാത്രമായി പുതിയ റൂള്‍ ഉണ്ടാക്കുകയും ചെയ്യാം…

          ബാക്കി എന്തിനൊപ്പം വന്നാലും ZWJ കഴിഞ്ഞാലുടന്‍ space ആണെങ്കില്‍ ZWJ strip ചെയ്തു പോകണം…

          ഞാന്‍ വരമൊഴി പഠിച്ചിട്ടില്ല പെട്ടെന്നു തോന്നിയതു പറഞ്ഞു എന്നേ ഉള്ളൂ…..

          ജിനേഷ്

          പിന്‍കുറിപ്പ്: ഇതു ഞാന്‍ ലളിത ഉപയോഗിച്ച് എഴുതിയതാണ്. (ഇത് എന്തിനാണെന്ന് സംശയിക്കേണ്ട, വരമൊഴി വച്ച് എഴുതിയ data NLP processingന് വേണ്ടി വെബ് കണ്ടന്റ് ഉപയോഗിക്കുമ്പോള്‍ പറ്റില്ല. ഒരു കോര്‍പ്പസ് ഉണ്ടാക്കാനുള്ള ചര്‍ച്ചകള്‍ നടക്കുന്നുണ്ട്, അവര്‍ക്ക് data collectionന് ഉപയോഗിക്കാവുന്ന വാക്കുകളാണിവ എന്നു മനസ്സിലാക്കാന്‍ മാത്രം)

          1. സുരേഷേ, പ്രവീണേ…. ഈ ചര്‍ച്ചയിലും ആറ്റംബോമ്പ് ചില്ലിട്ടോ :)

            വരമൊഴി യുണീക്കോഡ്‌ മലയാളത്തില്‍ പ്രത്യക്ഷപ്പെടുന്നതിനും മുമ്പുള്ളതാണ്. ആസ്കിഫോണ്ടുകള്‍ക്ക്‌ വേണ്ടിയുള്ളതായിരുന്നു മുഖ്യമായും. അതില്‍ ഓപ്ഷണല്‍ ചന്ദ്രക്കല എന്ന വിരാമ ഉണ്ടായിരുന്നില്ല. ഒന്നുകില്‍ നിശ്ചയമായും ചന്ദ്രക്കലയുണ്ട് അല്ലെങ്കില്‍ ഇല്ലേ ഇല്ല. ഈ രണ്ടു സാധ്യതകളാണ് ഉള്ളത്‌ എന്നതിരിക്കേ ആദ്യത്തേതിന് < വിരാമ, zwnj> എന്നതുപയോഗിക്കുകയേ നിവൃത്തിയുള്ളൂ.

            വരമൊഴിയില്‍ ഈ പ്രശ്നം ഒഴിവാക്കാന്‍ ആരെങ്കിലും സഹായിക്കാനുണ്ടെങ്കില്‍ വളരെ സന്തോഷമേ ഉള്ളൂ..

            ജിനേഷേ, NLP പ്രോസസിംഗ് യുണീക്കോഡ് ബൈനറി വച്ച്‌ ചെയ്യുന്നത്‌ ശരിയല്ല. NLP ക്ക്‌ വേണ്ടി ഉപയോഗിക്കുന്നതുമുമ്പ്‌ നോര്‍മലൈസേഷന്‍, ആവശ്യമുള്ളിടങ്ങളില്‍ കൊലേഷന്‍ കീ എന്നിവ ഉപയോഗിക്കേണ്ടതുണ്ട്.

            തീര്‍ച്ചയായും ജിനേഷ്‌ പറഞ്ഞതുകൂടാതെ, വളരെ കോമ്പ്ലക്സായ റൂളുകള്‍ NLPക്ക് വേണ്ടിവരും എന്നതില്‍ സംശയമില്ല. അതിനടുത്ത്‌ ഈ സിമ്പിള്‍ റൂളുകള്‍ നിസാരങ്ങളാണ്.

          2. സുരേഷേ, പ്രവീണേ…. ഈ ചര്‍ച്ചയിലും ആറ്റംബോമ്പ് ചില്ലിട്ടോ :)

            വരമൊഴി യുണീക്കോഡ്‌ മലയാളത്തില്‍ പ്രത്യക്ഷപ്പെടുന്നതിനും മുമ്പുള്ളതാണ്. ആസ്കിഫോണ്ടുകള്‍ക്ക്‌ വേണ്ടിയുള്ളതായിരുന്നു മുഖ്യമായും. അതില്‍ ഓപ്ഷണല്‍ ചന്ദ്രക്കല എന്ന വിരാമ ഉണ്ടായിരുന്നില്ല. ഒന്നുകില്‍ നിശ്ചയമായും ചന്ദ്രക്കലയുണ്ട് അല്ലെങ്കില്‍ ഇല്ലേ ഇല്ല. ഈ രണ്ടു സാധ്യതകളാണ് ഉള്ളത്‌ എന്നതിരിക്കേ ആദ്യത്തേതിന് < വിരാമ, zwnj> എന്നതുപയോഗിക്കുകയേ നിവൃത്തിയുള്ളൂ.

            വരമൊഴിയില്‍ ഈ പ്രശ്നം ഒഴിവാക്കാന്‍ ആരെങ്കിലും സഹായിക്കാനുണ്ടെങ്കില്‍ വളരെ സന്തോഷമേ ഉള്ളൂ..

            ജിനേഷേ, NLP പ്രോസസിംഗ് യുണീക്കോഡ് ബൈനറി വച്ച്‌ ചെയ്യുന്നത്‌ ശരിയല്ല. NLP ക്ക്‌ വേണ്ടി ഉപയോഗിക്കുന്നതുമുമ്പ്‌ നോര്‍മലൈസേഷന്‍, ആവശ്യമുള്ളിടങ്ങളില്‍ കൊലേഷന്‍ കീ എന്നിവ ഉപയോഗിക്കേണ്ടതുണ്ട്.

            തീര്‍ച്ചയായും ജിനേഷ്‌ പറഞ്ഞതുകൂടാതെ, വളരെ കോമ്പ്ലക്സായ റൂളുകള്‍ NLPക്ക് വേണ്ടിവരും എന്നതില്‍ സംശയമില്ല. അതിനടുത്ത്‌ ഈ സിമ്പിള്‍ റൂളുകള്‍ നിസാരങ്ങളാണ്.

          3. ഈ നോര്‍മലൈസേഷന്‍ എന്നു് പറയുന്നതു് ഇതാണോ ?
            ഉദാ: കോ = േകാ , െകൗ = കൌ

            റാല്‍മിനോവ്

  5. വരമൊഴി ബഗ്ഗ്ഫിക്സ്: ചില ആശയങ്ങള്‍

    എന്റെ കൈവശമുള്ള 1,42,000 വാക്കുകളില്‍ നടത്തിയ പരിശോധനയില്‍ നാലായിരത്തോളം വാക്കുകള്‍ പിശകാണെന്ന് കണ്ടുപിടിക്കുകയും തിരുത്തുകയും ചെയ്തു. സ്പെല്ലിങ് ചെക്കറില്‍ പിശകുണ്ടെന്ന് സ്വമകയുടെ മെയിലിങ് ലിസ്റ്റില്‍ അറിയിക്കുകയും ചെയ്തിട്ടുണ്ട്.

    വിക്കിപീഡിയയില്‍ മൊഴി ഉപയോഗിച്ച് എഴുതുന്നവരെല്ലാം ഈ ബഗ്ഗിനെ കുറിച്ച് അറിഞ്ഞിരിക്കണം എന്നാണ് എന്റെ അഭിപ്രായം.

    ZWJ, ZWNJ എന്നിവ ഉപയോക്താക്കളില്‍ നിന്ന് മറച്ചുവക്കുക എന്നത് ലിപ്യന്തരണ നിവേശകരീതികളുടെ ഫീച്ചറുകളില്‍ ഒന്നാണല്ലോ. പക്ഷേ ഇതിലൊരു കുഴപ്പമുണ്ട്. ZWJ എവിടെ ഉപയോഗിക്കണമെന്ന് ഒരു പ്രോഗ്രാം ലോജിക്കിന് മനസ്സിലാക്കാം. അതായത് ചില്ലക്ഷരങ്ങള്‍ക്ക് മാത്രമേ അവ വേണ്ടൂ, ZWNJ എവിടെ ഉപയോഗിക്കണമെന്ന് പ്രോഗ്രാം ലോജിക്കിന് തീരുമാനിക്കാന്‍ പറ്റില്ല. അത് വാക്കുകളുടെ പ്രകൃതം അനുസരിച്ചിരിക്കും. സദ്വാരം സദ്‌വാരം എന്നീ വാക്കുകളില്‍ എപ്പോള്‍ ZWNJ ഇടണമെന്ന് എഴുതുന്ന ആളാണ് തീരുമാനിക്കേണ്ടത്. പ്രോഗ്രാം ലോജിക്ക് ZWNJ ന് വേണ്ടി ഒരു ലോജിക്കും എഴുതാന്‍ പാടില്ല. ഇനി എഴുതിയാല്‍ തന്നെ അതു ശരിയാവുകയുമില്ല. അപ്പോള്‍ ZWNJ ക്ക് വേണ്ടി ചെയ്യേണ്ടത് , കോണ്ടക്സ്റ്റ് നോക്കാതെ ഒരു കീമാപ്പ് കൊണ്ട് ZWNJ ഇടുന്ന ഒരു നിയമം നിര്‍വചിക്കലാണ്. ഉദാഹരണം _ . _ എപ്പോള്‍ ഇട്ടാലും അതൊരു ZWNJ ആയിരിക്കും എന്ന നിയമം പറയുക. ഏതാണ്ട് ഇന്‍സ്ക്രിപ്റ്റ് പോലെ തന്നെ.
    ഇതിനു വിപരീതമായി ZWNJ വരാന്‍ വേണ്ടി എഴുതിയ , എപ്പോഴും ZWNJ ഇടാനുള്ള കോഡാണ് പ്രശ്നമുണ്ടാക്കിയത് എന്നു ഞാന്‍ മനസ്സിലാക്കുന്നു.
    സ്വനലേഖയില്‍ ഞാന്‍ ചെയ്യുന്നതെന്തെന്ന് പറയാം. ZWNJ ഇടാന്‍ ~ _ ആണ് സ്വനലേഖയില്‍ ഉപയോഗിക്കേണ്ടത്. n, N,l,L,r,R എന്നീ അക്ഷരങ്ങള്‍ക്ക് ശേഷം ~/_ വന്നാല്‍ അവ ZWJ ആണ്. അല്ലാത്ത സമയങ്ങളില്‍ ZWNJ യും ആകും. അതായത് th_= ത്+ZWNJ ,n_=ന്‍ , th~=ത്+ZWNJ n~=ന്‍
    അപ്പോള്‍ വരമൊഴിയിലെ പ്രശ്നം തീര്‍ക്കാന്‍ എനിക്ക് തോന്നുന്ന ഒരു പരിഹാരം ഇതാണ്. പ്രായോഗികമാണോ അല്ലയോ എന്ന് അറിയിക്കുക,(വരമൊഴിയുടെ ഇന്റേണല്‍ ലോജിക്കിനേപ്പറ്റി വലിയ പിടിപാടില്ല എന്ന മുന്‍‌കൂര്‍ ജാമ്യത്തോടെ)
    1. കോഡിലുള്ള എല്ലാ ZWNJ യും നീക്കം ചെയ്യുക. അതോട് കൂടി ആവശ്യമില്ലാത്തിടങ്ങളില്‍ ZWNJ വരുന്നത് നിന്നു കിട്ടും. ആവശ്യമുള്ളിടത്തും ZWNJ വരില്ല.
    2. മേല്പറഞ്ഞത് ബഗ്ഗില്ലാതെ വര്‍ക്ക് ചെയ്യാന്‍ തുടങ്ങിയാല്‍ ZWNJ എന്നതിന് കോണ്ടക്സ്റ്റ് ഇല്ലാതെ ഒരു മാപ്പിങ് ചേര്‍ക്കുക.
    3. ആസ്കി ഫോണ്ടുകളെ മറന്നു കളയുക. ആസ്കിക്ക് വേണ്ടി യുണിക്കോഡില്‍ ബഗ്ഗിടേണ്ട.

    ഇനി ഇത് ഫിക്സ് ചെയ്താലും വരമൊഴിയുടെ പഴയ പതിപ്പുകള്‍ ഉപയോഗിക്കുന്നവര്‍ തെറ്റ് എഴുതിക്കൊണ്ടിരിക്കും. അതിനെന്താണ് പരിഹാരം?

    1. Re: വരമൊഴി ബഗ്ഗ്ഫിക്സ്: ചില ആശയങ്ങള്‍

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

      റാല്‍മിനോവ്

      1. Re: വരമൊഴി ബഗ്ഗ്ഫിക്സ്: ചില ആശയങ്ങള്‍

        ഐഡന്റിഫയറുകളില്‍ ചില സ്പെസിഫിക് കോണ്ടക്സ്റ്റിലുള്ള zwnj മാത്രമേ തള്ളാതിരിക്കൂ.
        റഫര്‍: http://unicode.org/review/pr-96.html

        “# A Letter, followed by a Virama, followed by a ZWNJ, followed by an Letter,
        where the Letters and Virama are all in the Malayalam script, or they are all in the Khmer script

        * Issue: is the Khmer inclusion required semantically?

        # This corresponds to the following regular expression (in Perl-style syntax): /$L $V ZWNJ $L/
        where:

        * $L = [:General_Category=Letter:]
        * $V = [:Canonical_Combining_Class=Virama:]

Leave a Reply

Your email address will not be published. Required fields are marked *