beniza / keyboards

Open Source Keyman keyboards
3 stars 2 forks source link

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

Closed beniza closed 5 years ago

beniza commented 5 years ago

Santhosh Thottingal reported several encoding issues that happens if a user key-in using Mozhi layout. Details can be found in his blog post on the issue: Here's an excerpt from his blog:

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

Ensure that the Mozhi addresses this issue. Below are a list of issues he unearths (each of these issues can be a separate issue on the repo)

beniza commented 5 years ago

'_'-ന്റെ (കൃത്യമായി പറഞ്ഞാൽ ZWNJ-യുടെ) ഉപയോഗത്തെ പറ്റിയുള്ള നിർവചനവും അതിനുള്ള നിയമങ്ങളും ഞാൻ നോക്കിക്കൊണ്ടിരിക്കുകയാണ്. സന്തോഷിന്റെ പോസ്റ്റിൽ പറഞ്ഞിരുന്നതുപോലെ അനാവശ്യ ZW ക്യാരക്ടേഴ്സ് റ്റെക്സ്റ്റിൽ വരുന്നതൊഴിവാക്കണം (പറ്റുന്നിടത്തോളം). താഴെപ്പറയുന്ന കാര്യങ്ങൾ ആണ് ഇപ്പോൾ നോക്കുന്നത്.

  1. ചില്ലിനു ശേഷം ZW(N)J വരാൻ പാടില്ല
  2. ഒന്നിലധികം ZW(N)J-കൾ ഒന്നിച്ച് വരാൻ പാടില്ല
  3. വാക്കുകളുടെ ആദ്യമോ അവസാനമോ ZWNJ വരാൻ പാടില്ല.
  4. വ്യഞ്ജനാക്ഷര ചിഹ്നങ്ങൾക്ക് വേണ്ടി ZWJ ഉപയോഗിക്കുകയാണെങ്കിൽ ZWJ വാക്കുകളുടെ ആദ്യം വരാം (ഉദാ: ‍്വ, ‍്യ, ‍്ല, ‍്ര)
  5. പഴയചില്ലുകൾ ഉപയോഗിക്കുന്ന സാഹചര്യമുണ്ടെങ്കിൽ വാക്കുകളുടെ അവസാന അക്ഷരം ചില്ലാണെങ്കിൽ ZWJ വരാം.
  6. ചന്ദ്രക്കലയ്ക്ക് ശേഷം മാത്രം ZWNJ വരാം
  7. ചില്ലുണ്ടാക്കാവുന്ന അടിസ്ഥാന അക്ഷരങ്ങൾ (ണ, ന, ര, ല, ള, ക) + ചന്ദ്രക്കല എന്നിവയ്ക്ക് ശേഷം ZWJ വരാം (പഴയചില്ലിനു വേണ്ടി)

മുകളിൽ പറഞ്ഞിരിക്കുന്ന കാര്യങ്ങളിൽ എന്റെ മനസ്സിലാക്കൽ ശരിയാണോ? ഇവ കൂടാതെ മറ്റേതെങ്കിലും കാര്യങ്ങൾ പരിഗണിക്കേണ്ടതുണ്ടോ?

beniza commented 5 years ago

സിബു:

'_'-ന്റെ (കൃത്യമായി പറഞ്ഞാൽ ZWNJ-യുടെ)

'_' ൻ്റെ അർഥം യുണീക്കോഡിൻ്റെ ZWNJ എന്നല്ല. ZWNJ എന്നത് സാധാരണ മലയാളിക്ക് മനസ്സിലാവാൻ ബുദ്ധിമുട്ടുള്ളതാണ്. അതുപോലെ ZWNJ-ന് യുണീക്കോഡിൽ പല ഉപയോഗങ്ങളും എക്സൻട്രിസിറ്റീസും ഉണ്ട്. മൊഴിയിൽ '_' എന്നതിന് വലിപ്പമില്ലാത്ത സ്പേസ് എന്ന് മാത്രമാണ്.

...

  1. വ്യഞ്ജനാക്ഷര ചിഹ്നങ്ങൾക്ക് വേണ്ടി ZWJ ഉപയോഗിക്കുകയാണെങ്കിൽ ZWJ വാക്കുകളുടെ ആദ്യം വരാം (ഉദാ: ‍്വ, ‍്യ, ‍്ല, ‍്ര)

ചിഹ്നങ്ങൾക്ക് വേണ്ടി ZWJ ഉപയോഗിക്കേണ്ട കാര്യമില്ല. <virama, va> എന്ന സീക്വൻസ് മതി ' ്വ' ഉണ്ടാക്കാൻ. ആ സീക്വൻസ് സ്പേസിനോട് കൂടെ ഉപയോഗിക്കാം.

  1. ചന്ദ്രക്കലയ്ക്ക് ശേഷം മാത്രം ZWNJ വരാം

അതിന് ശേഷം കൂട്ടക്ഷരമുണ്ടാക്കുന്ന അക്ഷരമുണ്ടെങ്കിൽ മാത്രം മതി.

മുകളിൽ പറഞ്ഞിരിക്കുന്ന കാര്യങ്ങളിൽ എന്റെ മനസ്സിലാക്കൽ ശരിയാണോ? ഇവ കൂടാതെ മറ്റേതെങ്കിലും കാര്യങ്ങൾ പരിഗണിക്കേണ്ടതുണ്ടോ?

ഏത് കീ അമർത്തുമ്പോൾ ZWNJ/ZWJ വരുന്നു എന്ന് പറയുകയായിരിക്കും എളുപ്പം. (എപ്പോൾ വരില്ല എന്ന് പറയുന്നതിനേക്കാളും) '_' അമർത്തുമ്പോഴേ ZWNJ വരാൻ വകുപ്പുള്ളൂ. അതും അതിന് മുമ്പിലെ ക്യാരക്ടർ virama ആണെങ്കിൽ മാത്രം. ലെഗസി ചില്ല് എൻകോഡിംഗിന് വേണ്ടി '^' അമർത്തുമ്പോഴേ ZWJ വരാൻ പാടുള്ളൂ.

If just '_' alone is typed, then that will appear to the user and will be consumed only when a valid letter is typed after it.

ഈ നിയമം ഒന്നു വിശദീകരിച്ച് തരുമോ?

'_' എന്നത് കൂട്ടക്ഷരമുണ്ടാവുന്നത് തടയുന്നില്ലെങ്കിൽ(ക്‌ക, ൻന, ..) അതുപോലെ തന്നെ കാണിക്കണം. അതായത് '_' എന്ന് വെറുതെ ടൈപ്പ് ചെയ്താൽ '_' കാണണം.

beniza commented 5 years ago

അതുപോലെ ZWNJ-ന് യുണീക്കോഡിൽ പല ഉപയോഗങ്ങളും എക്സൻട്രിസിറ്റീസും ഉണ്ട്.

എനിക്കത് കൂടുതൽ മനസ്സിലാക്കിയാൽ കൊള്ളാമെന്നുണ്ട്. ഇതിന്റെ ആധികാരിക പ്രമാണങ്ങളുടെ ലിങ്ക് തരാമോ.

ചിഹ്നങ്ങൾക്ക് വേണ്ടി ZWJ ഉപയോഗിക്കേണ്ട കാര്യമില്ല. <virama, va> എന്ന സീക്വൻസ് മതി ' ്വ' ഉണ്ടാക്കാൻ. ആ സീക്വൻസ് സ്പേസിനോട് കൂടെ ഉപയോഗിക്കാം. ലെഗസി ചില്ല് എൻകോഡിംഗിന് വേണ്ടി '^' അമർത്തുമ്പോഴേ ZWJ വരാൻ പാടുള്ളൂ.

അപ്പോൾ വാക്കിന്റെ ആദ്യം ZWJ വരുമെന്ന നിഗമനം ഒഴിവാക്കാം. അപ്പോഴും വാക്കുകളുടെ ഇടയിൽ വ്യഞ്ജനചിഹ്നത്തിനായി zwj വേണ്ടിവരുമല്ലോ (ഉദാ: യ‍്യ വ‍്വ).

അതിന് ശേഷം കൂട്ടക്ഷരമുണ്ടാക്കുന്ന അക്ഷരമുണ്ടെങ്കിൽ മാത്രം മതി.

കൂട്ടക്ഷരം ഉണ്ടാക്കുന്ന അക്ഷരങ്ങൾ ഏതൊക്കെയാണെന്ന് നിർവ്വചിക്കപ്പെട്ടിട്ടുണ്ടോ?

'_' അമർത്തുമ്പോഴേ ZWNJ വരാൻ വകുപ്പുള്ളൂ. അതും അതിന് മുമ്പിലെ ക്യാരക്ടർ virama ആണെങ്കിൽ മാത്രം.

ഇവിടെയും ഒരു കൺസ്ട്രയ്ൻ ഉള്ളത് ചന്ദ്രക്കല വാക്കിന്റെ അവസാന അക്ഷരം അല്ല എങ്കിൽ മാത്രമെന്നാണ്, അല്ലേ.

beniza commented 5 years ago

സിബു:

അതുപോലെ ZWNJ-ന് യുണീക്കോഡിൽ പല ഉപയോഗങ്ങളും എക്സൻട്രിസിറ്റീസും ഉണ്ട്.

എനിക്കത് കൂടുതൽ മനസ്സിലാക്കിയാൽ കൊള്ളാമെന്നുണ്ട്. ഇതിന്റെ ആധികാരിക പ്രമാണങ്ങളുടെ ലിങ്ക് തരാമോ.

https://en.wikipedia.org/wiki/Zero-width_non-joiner https://www.unicode.org/versions/Unicode11.0.0/ch12.pdf

എന്നിവ വായിക്കുക എന്നേ വഴിയുള്ളൂ. അതിന് മാത്രമായി ഒരു പ്രമാണമില്ല.

അപ്പോഴും വാക്കുകളുടെ ഇടയിൽ വ്യഞ്ജനചിഹ്നത്തിനായി zwj വേണ്ടിവരുമല്ലോ (ഉദാ: യ‍്യ വ‍്വ).

ഇവിടെ വേണ്ടത് zwnj ആണ്. സ്റ്റാൻ്റേഡിലെ ടേബിൽ 12.36 കാണുക.

അതിന് ശേഷം കൂട്ടക്ഷരമുണ്ടാക്കുന്ന അക്ഷരമുണ്ടെങ്കിൽ മാത്രം മതി.

കൂട്ടക്ഷരം ഉണ്ടാക്കുന്ന അക്ഷരങ്ങൾ ഏതൊക്കെയാണെന്ന് നിർവ്വചിക്കപ്പെട്ടിട്ടുണ്ടോ? ശരി.

☺ ഇല്ല. കൂട്ടക്ഷരങ്ങളുടെ ലിസ്റ്റിന് രചന ഫോണ്ടോ മറ്റോ നോക്കുകയായിരിക്കും ഉചിതം.

beniza commented 5 years ago

I've added the following rules

beniza commented 5 years ago

Standardized the ZW character use ...

Remove redundant rules for Malayalam fractions

Cleanup Code …

Commented out redundant rules to prevent ZWNJ after chillu