ஒருங்குறியில் (unicode) தமிழ் தெரிந்தாலும், அதில் பல்வேறு சிக்கல்கள் உள்ளன. அவற்றில் பல தீர்க்கப்பட்டும் உள்ளன.
இந்த இழையில் தற்போது நாம் காணும் சிக்கல்களைப் பட்டியல் இடுவோம்.
அவற்றின் தீர்வுகளைக் காண முயல்வோம்.
ஒருங்குறியில் (unicode) தமிழ் தெரிந்தாலும், அதில் பல்வேறு சிக்கல்கள் உள்ளன. அவற்றில் பல தீர்க்கப்பட்டும் உள்ளன.
இந்த இழையில் தற்போது நாம் காணும் சிக்கல்களைப் பட்டியல் இடுவோம்.
அவற்றின் தீர்வுகளைக் காண முயல்வோம்.
PDF ல் தமிழ் வார்த்தைகளைத் தேட முடிவதில்லை.
தற்போதைய PDF மென்பொருட்கள் இதற்கு ஆதரவு தருவதில்லை.
PDF/A உருவாக்குவதே ஒரே தீர்வு.
LibreOffice/MS Office வழியே PDF உருவாக்கும் போது, PDF/A என்பதை தெரிவு செய்ய வேண்டும்.
Scan செய்த PDF ஆக இருந்தால், ocrmypdf மூலம் OCR செய்து பின் PDF/A உருவாக்கலாம்.
விரிவான விளக்கங்கள் இங்கே.
https://ta.wikipedia.org/wiki/தமிழ்
க்கு பதிலாக, பின்வருமாறு நகல் எடுக்கப்படுகிறது.
https://ta.wikipedia.org/wiki/%E0%AE%A4%E0%AE%AE%E0%AE%BF%E0%AE%B4%E0%AF%8D
காரணம் இன்னும் எனக்குத் தெரியவில்லை.
தீர்வு - Firefox உலாவியில் ஒரு நீட்சி உள்ளது.
https://addons.mozilla.org/en-US/firefox/addon/copy-unicode-urls/
இதை நிறுவிப் பயன்படுத்தினால், சரியாக நகல் எடுக்க முடிகிறது.
மேலும் படிக்க.
html - Unicode characters in URLs - Stack Overflow
டெர்மினலில் தமிழ் உடைந்து காணப்படுகிறது.
தீர்வு -
ஈமேக்ஸ் உரைத்திருத்தியில் Emacs edidor , உள்ள eshell தமிழை சரியாக காட்டுகிறது.
mlterm எனும் டெர்மினலில் தமிழ் சரியாகத் தெரிகிறது.
தமிழில் உள்ள மென்பொருட்கள், calc, excel போன்றவை தமிழ்ச் சொற்களை அகர வரிசையில் அடுக்குவதில் பிழைகள் உள்ளன.
சரியான வரிசை என்று அறிவதோடு, இம்மென்பொருட்கள் சரியாக அடுக்குமாறு மேம்படுத்த வேண்டும்.
மெய் எழுத்துக்கள், உயிர்மெய் எழுத்துக்களுக்கு முன் வர வேண்டும். கிரந்த எழுத்துக்கள் இறுதியில் வரும்.
தீர்வு -
இதற்கான தீர்வு Unicode ICU Collation https://icu.unicode.org/ ன் மூலம் தரப்பட்டுள்ளன. ஆனால் நாம் பயன்படுத்தும் மென்பொருட்கள் இந்த ICU என்பதை பயன்படுத்துவதாய் தெரியவில்லை. எல்லா இயக்குதளங்களும் மென்பொருட்களும் ICU Collation ஐப் பயன்படுத்துப்போது, பல்வேறு சிக்கல்கள் தானாக தீர்ந்துவிடும்.
Unicode Consortium குழு உறுப்பினர் இளங்கோ சேரன் தந்த பதில் இதோ.
It’s also important to understand some of the history of Unicode, too. For example, sorting is called “collation”, and there is a whole chapter about collation in ICU’s User Guide. Collation works well “out of the box” in ICU for Tamil – I don’t think we need to do any custom tailorings of the collation sort order as defined in CLDR for locale ta
(Tamil). Even though ICU is officially maintained in Java and C++ only, there is someone who maintains the Python library that wraps the C++ version of ICU, called PyICU. ICU has had that functionality since the late 1990s or early 2000s. We just didn’t know it. Try out collation in PyICU and let me know what you think.
For sorting, just like anything related to internationalization or Unicode, never trust your programming language or library to handle things correctly. Always use ICU. Ex: In Java, you should not iterate over the characters of a string and assume that you get code points. It “works” for Tamil because Tamil and all modern languages’ scripts are in the BMP, so they fit in 16 bits, but emojis and newly added scripts do not (they are in the SMP, so they need > 16 bits, which requires surrogate pairs of 2 UTF-16 code units). Also in Java, String.sort() only operates on the computer representation, and therefore it is not language-sensitive.
ICU Collation works. Here is an online demo, and the demo server is connected to the C++ port (which is what PyICU wraps). ICU Collation Demo
Change the locale to `ta`
Input:
பண்டம்
படம்
படு
பட்டம்
படி
பந்து
பத்து
Expected output:
பட்டம்
படம்
படி
படு
பண்டம்
பத்து
பந்து
Remember to set the locale to ta
so that we get Tamil language-aware collation. If you don’t, then you get the incorrect behavior. ICU Collation மூலம் மெய்யெழுத்துகள் உயிர்மெய்யெழுத்துகளுக்கு முன் வரும். இதெல்லாம் ICU-இல் ஆரம்பத்திலிருந்து இருந்திருக்கிறது என்று நினைக்கிறேன். (ICU 1999-இல் பொதுமக்களுக்கு IBM-ஆல் வெளியிடப்பட்டது.) இது புதிது அன்று. ஆனல் நமக்குத் தெரியவில்லை. நான் வேலையிடத்தில் என்னுடைய அணியில் சேர்ந்து ஒருங்குறி தொடர்பான வேலையில் இறங்கும் முன் இதெல்லாம் தெரியவில்லை. அதனால் நமக்கு நாமே கற்பிக்கவேண்டும். அப்பொழுது ஏற்கனவே நீண்ட காலமாகத் தீர்க்கபட்ட பிரச்சனைகளைத் தாண்டி அடுத்தடுத்தவற்றைப் பார்க்கலாம்.
ICU4Cஉம் ICU4Jஉம் ஒரே மாதிரியாகப் பேணுவோம் (பேணியிருக்கிறார்கள்). நான் தனிப்பட்ட முறையில் ICU4J wrapperஐ வைத்திருக்கிறேன். அது மூலமாக அதே ICU functions (APIs)ஐ மிக எளிய முறையில் பயன்படுத்தி சோதிக்கலாம். இதே collation வேலை செய்து நாம் எதிர்பார்ர்க்கும் அதே சரியான முடிவுகளைப் பார்த்தேன். இது தான் என்னுடைய unit test: clj-icu4j/test/clj_icu4j/collate_test.clj at master · echeran/clj-icu4j · GitHub
PyICU பாருங்கள் முதலில். சந்தேகங்கள் இருந்தால் சொல்லுங்கள்.
தீர்வு - KDE ல் Dolphin எனும் file explorer மென்பொருளில் தமிழ் சரியாகத் தெரிகிறது.
விண்டோசிலும் சரியாகத் தெரிவதைக் கண்டுள்ளேன்.
உதாரணம்
இந்தக் கருத்து உண்மைதான். ஆனால் இது என் கவனத்தை ஈர்த்ததற்குக் காரணம் எப்படியோ தமிழ் இகரக் கொக்கியை ரோமன் எழுத்தான T யுடன் ஒட்ட வைத்திருக்கிறார் Amalorpavanathan Joseph மருத்துவர் அமல ஜோசப். ஆனால் என்னால் அப்படிச் செய்ய முடியவில்லை. இப்படித் தமிழ்க் குறியீடுகள் ரோமன் எழுத்துகளோடு ஒட்டக்கூடாது என்பதுதான் எதிர்பார்ப்பு. ஆனால் யூனிகோடு வேலை செய்யும் முறையே விந்தைதான்!
NEET ி விதிவிலக்கு - Hmm. Copy paste works but not keyboard entry. I am curious to know how this keyboard combination was accepted by the keyboard software. May be a bug.
Some software behaved in an unexpected fashion. Perhaps that is acceptable. But since it corrupts data and can confuse users, engineers like us are curious to find out how it happened and perhaps defend against that. Mixing keyboards does happen when typing bilingual messages. But software should be robust enough to prevent these types of bugs
நன்றி - மணி மு மணிவண்ணன்
மூலம் - Redirecting...
மூலம் - பா. ராகவன்
நாம் யுனிகோடில் எழுதுகிறோம். அச்சுக்குச் செல்லும்போது பதிப்பகத்தார் பெரும்பாலும் நமது பிரதியை TAMக்கு மாற்றி வடிவமைப்பார்கள். எதற்கு இந்த மதமாற்றம் என்று போர்க்கொடி தூக்கிய தொடக்க காலப் புரட்சியாளர்களுள் நானும் ஒருவன்.
வம்படியாக என்னுடைய புத்தகங்களை அச்சுக்கு நெருக்கத்தில் வரும் யுனிகோட் எழுத்துருவிலேயே பிரசுரித்து வந்தேன்.
ஆனால் புரட்சி மனோபாவமெல்லாம் வெந்து பதமாகும் காலமொன்று நிச்சயமாக வரும். இன்றைய 53 ஆவது வயதுக் கண் தரத்தில் யுனிகோட் எழுத்துருவில் அச்சான புத்தகங்களைத் தொடர்ச்சியாகப் படிப்பதில் சிக்கல் உண்டாகிறது. அடுத்தவருடையதல்ல; என்னுடையதைப் படிக்கவே சிரமமாக இருக்கிறது. பல எழுத்துகள் ஒன்றையொன்று உரசுகின்றன. அப்படி உரசும் எழுத்துகள் திரும்பத் திரும்ப வருமானால் மொத்த பத்தியையும் பார்வை படிக்காமல் தாண்டத் துடிக்கிறது.
சிரமம் பாராமல் TAMக்கு மதம் மாற்றினால் இந்தச் சிக்கல் இருப்பதில்லை. வேறு சில சிக்கல்கள்தாம் வரும். உதாரணமாக தமிழுக்கு நடுவே ஆங்கிலச் சொற்கள் வருமானால் அது கணஞ்ஙிணுமுபிகு என்று மாறிவிடுவது. அதைக் கடைசியாகத் தனியே தேர்ந்தெடுத்து மாற்ற வேண்டும்.
இன்றைக்கு நாம் AIஐ என்ன பாடு படுத்துகிறோமோ, அதே போலத்தான் அன்று யுனிகோடைப் படுத்தி எடுத்திருக்கிறார்கள். யார் யாரோ ஆர்வத்தில் உருவாக்கிய எழுத்துருக்கள் வந்து குவிந்திருக்கின்றன. ஆனால் ஆரம்ப ஜோரோடு சரி. அச்சுத் தரத்துக்கு எழுத்துருக்கள், ஒன்றோடொன்று ஒட்டாத தன்மை, கொம்புகள் நீண்டு பெரிதாகாதிருப்பது போன்ற மராமத்துப் பணிகளைச் செய்யப் பிறகு யாருமே வரவில்லை. தனியார் நிறுவனங்களாவது இதனை முயற்சி செய்யலாம். விலைக்கேகூட வைக்கலாம்.
ஆனால், ஓர் உலகப் பொதுவுக்கான சர்வாலங்காரம் கூடவேண்டும்.
இதெல்லாம் நாட்டு மக்களுக்கு அவ்வளவு அவசியமான செய்தியா என்று தோன்றலாம். எனக்கு அவசியம். வேண்டுமானால், என்னைப் போலச் சிலருக்கு. இன்று ஜென் கொலை வழக்கு புத்தகத்துக்கு ப்ரூஃப் பார்த்து முடித்தேன். யுனிகோடில் எழுதி, நானே சொல்லி, TAMக்கு மதம் மாற்றித்தான் வடிவமைக்கப்பட்டிருக்கிறது.
ப்ரூஃப் பார்க்கும் நேரம் சரி பாதியாகக் குறைந்ததை அனுபவத்தில் கண்டேன். அதனால்தான் சொல்லத் தோன்றியது.
சாக்பீஸ் அறக்கட்டளையுடன் இணைந்து பாரதி புத்தகாலயம் வழங்கும் “பாரதி அழகுத் தமிழ் ஒருங்குறி எழுத்துருக்கள்” - ATM Tamil Unicode fonts - அச்சுக்கும் உகந்ததாகவே இருக்கின்றன.
Arul Selva Perarasan S ஆமாம் சார். அதைத்தான் பயன்படுத்தி வந்தேன். ஆனால் பிசிறுகள் அதிகம். தொடர்ச்சியாகப் படிக்க முடிவதில்லை.
ஆப்பிள் தரும் எழுத்துருக்கள் அழகானவை. தமிழைப் பொறுத்தவரை அவர்கள் முத்து நெடுமாறனைக் குத்தகை எடுத்துவிட்டபடியால் கண்ணை உறுத்தாத அழகிய எழுத்துருக்கள் நமக்கு அங்கே கிடைக்கின்றன. பிரச்னை, நமது பதிப்புத் துறை சார்ந்தது. ஆங்கிலத்தில் உள்ளவற்றைப் போல நூறு சதம் நேர்த்தியான எழுத்துருக்கள் அச்சுக்கு இங்கே யுனிகோடில் இல்லை. பெரும்பாலான பதிப்பாளர்களுக்கு யுனிகோட், TAM என்றால் என்னவென்றுகூடத் தெரியாது. என்கோடிங் வேறுபாடுகள், அதன் லாப நட்டங்கள் புரியாது. டைப் செட் செய்து தருபவர் என்ன தருகிறாரோ, அதுதான். அதிகபட்சம் 20-25 பதிப்பாளர்கள் இந்தச் சிக்கல் புரிந்தவர்களாக இருக்கலாம். அவர்கள் தரப்பிலிருந்து ஒரு சிறிய முன்னெடுப்பு இருந்தால் நிறுவனங்கள் ஏதாவது வேலை செய்யத் தொடங்கும்.
இன்டிசைனில் ஒரே ஒரு செட்டிங். உரசும் யுனிகோட் எழுத்துகளை சரி செய்யலாம்.
justify settings → set gap between texts.
நான் வடிவமைத்த ‘மருதம்’ எழுத்துரு தமிழ் நாடு அரசுப் பரிவர்த்தனைகளுக்கும்.(நன்றி இறையன்பு சார்)…'முல்லை…பாலை…தமிழ் நாடு பாடநூலிலும் ( நன்றி.உதயசந்திரன் சார்) பாவிக்கப்படுகிறது…எந்த மாற்றமுமின்றி… அச்சேறி…யுனிக்கோடு…செவ்வனே பயணிக்கின்றது…
உதயன் இது குறித்து ;
எழுத்துரு என்பது ஒரு வடிவம் ஒவ்வொரு பார்வையாளருக்கும், அதன் இடங்களை பொறுத்து கருத்து இருக்கும்.
தற்சமயம் சரியான எழுத்துரு என்று சொல்வதானல் GOOGLE NANO FONTS, Mukta malar மட்டுமே இவை இலவசமாக கிடைக்கின்றன.
Mukta malar உண்மையில் மிகப்பெரிய வேலை செய்து உள்ளார்கள். எழுத்துருவில் இருக்கும் Kerning (Space) க்காக மிக உழைத்திருக்கிறார்கள்
ஸ்ரீலிபி என்று எழுத்துருக்கள் நிறைய பாதுகாப்பு வசதியுடன் பணம் தந்து உபயோகிக்கும் முறையில் உள்ளது
அரசு இனையதளத்தில் கிட்டதட்ட 100\க்கு மேல் உள்ளது (TVA)
CDAC மத்திய அரசு செய்து உள்ளவைகளும் நிறைய உள்ளன
நீச்சல்காரன் தமிழில் 20000 க்கு மேற்பட்ட எழுத்துருகளை தொகுத்து உள்ளார்.
பணம் தந்து உபயோகிக்க கூடிய நிறைய எழுத்துரு உள்ளது.
ஆங்கிலத்தில் இருக்கும் அனைத்து வசதியுடன் உள்ள எழுத்துரு தமிழில் கொண்டு வர குறைந்தது 3 மாதம் ஆகும், நிறைய மாதிரிகள் சோதித்து பார்க்க வேண்டும்
என் கோலம் எழுத்துரு உருவாக்க நான் எடுத்துக் கொண்ட காலகட்டம் 2.5 வருடம். இப்போது நான் அதை பார்த்தாலே அவ்வளவு தவறு உள்ளது.
இலசுந்தரம் செய்த முயற்சி, அதன் பின் செல்வமுரளி செய்தது எல்லாம் ஆரம்பகட்ட வேலைக்கு உதவியது. ஆனால் தமிழும், வடமொழி, ஆங்கிலம் மூன்றும் ஒட்டவே இல்லை.
காலம் கூடி வந்தால் தமிழில் குறிப்பிட்ட சில எழுத்து வகைகளை பிரித்து சரியான kerning, Space கொண்டு வரலாம். எழுத்துருக்களை Automate செய்து சரி செய்ய முடியுமா என்று பார்க்கலாம்.
PHP, Python வழியே தமிழைக் கொண்ட படங்கள், PDF கோப்புகளை உருவாக்க முடிவதில்லை.
<?php
header('Content-type: image/png; charset=UTF-8');
$text ='சுற்றிப்பார்க்க ';
$font = './fonts/UniIlla.ttf';
$im = imagecreatetruecolor(600, 300);
$bg_color = imagecolorallocate($im, 255, 255, 255);
$font_color = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 599, 299, $bg_color);
imagettftext($im, 20, 0, 10, 50, $font_color, $font, $font);
imagettftext($im, 20, 0, 10, 120, $font_color, $font, $text);
imagepng($im);
imagedestroy($im);
?>
php - Imagettftext not producing correct results if I use the tamil lanuage ttf? - Stack Overflow
இதற்கு ஒரு எளிய தீா்வு இணைய முகவரியில் உள்ள HTTPS -ஐ இல்லாமல் நகல் எடுத்து விட்டு. பின்னா் இணைத்து காெள்ளலாம்.
https://ta.wikipedia.org/wiki/தமிழ்
/ta.wikipedia.org/wiki/தமிழ்
URI வரையறையின் கீழ் ஒரு குறிப்பிட்ட ஆங்கில எழுத்துங்கள் மட்டுமே Percent-Encoding அல்லாமல் இருக்க முடியும். மற்றபடி எந்த ஒரு எழுத்தும் Percent-Encoding வழியாகத்தான் URI ல் பயன்படுத்த அனுமதிக்கப்பட்டுள்ளது.
ஒரு எடுத்துக்காட்டு கூற வேண்டும் என்றால், குறோம் பிரவுசரின் அட்ரஸ்பாரில்
https://google.com/search?q=வணக்கம்
என்று தட்டச்சு செய்யவும், பின் என்டர் தட்டாமல் அதை அப்படியே காப்பி செய்து ஒரு எடிட்டரில் பேஸ்ட் செய்தால்
https://google.com/search?q=%E0%AE%B5%E0%AE%A3%E0%AE%95%E0%AF%8D%E0%AE%95%E0%AE%AE%E0%AF%8D
என்றுதான் எடிட்டரில் பேஸ்ட் ஆகும்.
PyICU நிறுவவும் அறியவும்: PyICU · PyPI
Linuxஇல் வேலை மிக எளிதாம்:
# Debian
sudo apt-get install python3-icu
# Ubuntu
sudo apt install pyicu
macOSஇலோ இன்னும் சிலவிற்றைச் செய்யவேண்டும். Homebrew ஏற்கனவே இருக்கும் என்று வைத்துக்கொண்டு இவை எல்லாம் தொடங்கும்.
# install libicu (keg-only)
brew install pkg-config icu4c
# let setup.py discover keg-only icu4c via pkg-config
export PATH="/usr/local/opt/icu4c/bin:/usr/local/opt/icu4c/sbin:$PATH"
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/opt/icu4c/lib/pkgconfig"
Homebrew இருந்தால் pip
மூலம் அப்படியே எதை வேண்டுமானலும் நிறுவமுடியாது. pip
கட்டமப்பில் moduleகளை மட்டும் Homebrew’s pip
மூலம் நிறுவமுடியும். இது தெரியாமல் முயற்சி செய்தால் இது வரும்:
export CC="$(which gcc)" CXX="$(which g++)"
# avoid wheels from previous runs or PyPI
/usr/local/Cellar/python@3.12/3.12.5/bin/python3.12 -Im pip install -v --no-index -- install --no-binary=:pyicu: pyicu
If you wish to install a Python library that isn't in Homebrew,
use a virtual environment:
python3 -m venv path/to/venv
source path/to/venv/bin/activate
python3 -m pip install xyz
If you wish to install a Python application that isn't in Homebrew,
it may be easiest to use 'pipx install xyz', which will manage a
virtual environment for you. You can install pipx with
brew install pipx
Error message (பிழையால் வந்த பதில் உரை) சொன்னபடி pipx
பயன்படுத்தாம்ல வேறு வழியில் போகவேண்டும். Python virtual environment உருவாக்கி அதில் PyICU நிறுவ வேண்டும்.
mkdir ~/python-venv
python3 -m venv ~/python-venv
source ~/python-venv/bin/activate
python3 -m pip install --no-binary=:pyicu: pyicu
பிறகு இந்த virtual environmentஇல் வழக்கம் போல் Pythonஐயும் எதிர்பார்த்தபடி PyICUஐயும் அப்படியே பயன்படுத்தலாம்.
PyICUஇன் இணைத்தளம் சொன்னதுபோல் அது ICU4Cஇன் APIகளை அப்படியே கொடுக்கும், ஆனால் ICUஇன் ErrorCode argument மட்டுமே கழிக்கும் (ஏனென்றால் ஓடும்போது Python exceptions கொடுக்கும்).
Load a Python interpreter:
python3
அதில் இதெல்லாம் போடுங்கள்:
expected = ['பட்டம்', 'படம்', 'படி', 'படு', 'பண்டம்', 'பத்து', 'பந்து']
expected[0]
expected[1]
input = [expected[4], expected[1], expected[3], expected[0], expected[2], expected[6], expected[5]]
input[0]
input[1]
from icu import Collator, Locale
ta = Locale('ta')
coll = Collator.createInstance(ta)
coll.compare(expected[0], expected[1])
coll.compare(input[0], input[1])
coll.compare(input[0], input[0])
from functools import cmp_to_key
result = sorted(input, key=cmp_to_key(coll.compare))
result
result == expected
# Remember: don't rely on the host language's built in functions to do the right thing for user-facing strings.
# Even the built in functions for Unicode and i18n in a programming language may not support Unicode fully or properly, in some cases because they have been written a long time ago.
# ICU will always provide the most up-to-date support for Unicode, thoroughly and correctly, and do so most efficiently.
நான் பார்த்தது:
>>> expected = ['பட்டம்', 'படம்', 'படி', 'படு', 'பண்டம்', 'பத்து', 'பந்து']
>>> expected[0]
'பட்டம்'
>>> expected[1]
'படம்'
>>>
>>> input = [expected[4], expected[1], expected[3], expected[0], expected[2], expected[6], expected[5]]
>>> input[0]
'பண்டம்'
>>> input[1]
'படம்'
>>>
>>> from icu import Collator, Locale
>>> ta = Locale('ta')
>>> coll = Collator.createInstance(ta)
>>>
>>> coll.compare(expected[0], expected[1])
-1
>>> coll.compare(input[0], input[1])
1
>>> coll.compare(input[0], input[0])
0
>>>
>>> from functools import cmp_to_key
>>> result = sorted(input, key=cmp_to_key(coll.compare))
>>> result
['பட்டம்', 'படம்', 'படி', 'படு', 'பண்டம்', 'பத்து', 'பந்து']
>>> result == expected
True
இது ICUஇன் Collator
ஐப் பயன்படுத்தியது. ICU ULocale
ஐயும் பயன்படுத்தியது – அதையும் தேடிப் பாருங்கள்.