رانا
محفلین
کئی دوستوں کے زہن میں گھنٹی بجی ہوگی کہ جب کوشش ناکام ہوگئی تو یہاں ذکر کرنے کی کیا تک ہے۔ لیکن میرے خیال میں ایسی ناکام کوشش کا تذکرہ ضرور کرنا چاہئے جس کے بارے میں یہ امید ہو کہ ان خطوط پر کوئی دوسرا کام شروع کرکے کامیابی سے ہمکنار ہوسکتا ہے۔
پس منظر اس کا یہ ہے کہ کافی عرصے سے خاکسار کی یہ خواہش تھی کہ کسی طرح ان پیج کی پی ڈی ایف سے متن یونی کوڈ میں اخذ کیا جاسکے۔ اس خواہش کا ذکر ایک بار محفل پر بھی کئی سال پہلے کیا تھا جس کا جواب یہ ملا تھا کہ یہ ناممکن کام ہی ہے۔ لیکن اسکے باوجود فرصت کے اوقات میں کبھی کبھی تجربات کرنے کی کوشش کرتا تھا ۔ پھر کوئی ایک سال پہلے ایک خیال زہن میں آیا کہ مختلف پی ڈی ایف ریڈرز ان پیج کی فائل کو بالکل درست طریقے پر دکھاتے ہیں۔ چاہے وہ ایکروبیٹ ریڈر ہو یا فاکس ریڈر یا کوئی اور تھرڈ پارٹی ریڈر۔ تو جب وہ ریڈر ان پیج کی پی ڈی ایف سے متن درست طور پر اخذ کرسکتے ہیں تو انہیں بنیادوں پر ہم کیوں نہیں کرسکتے۔ اس بات سے اس طرف توجہ مبذول ہوئی کہ ضرور پی ڈی ایف کا کوئی نہ کوئی اسٹینڈرڈ ہوگا جس کی بنیاد پر مختلف پی ڈی ایف ریڈر ایک ہی نتیجہ دکھاتے ہیں۔
چنانچہ جب اس حوالے سے چھان بین کی گئی تو پتہ لگا کہ ایڈوب والوں نے سن 2007 میں پی ڈی ایف کے اسٹرکچر کو ایک معیار بنانے کے لئے آئی ایس او کے حوالے کردیا تھا۔اس وقت سے اس کے اسٹینڈرڈ کو آئی ایس او دیکھ رہی ہے اور یہ ایک عالمی اسٹینڈرڈ کا فائل فارمیٹ بن چکا ہے جس کی بنیاد پر کوئی بھی اپنا پی ڈی ایف ریڈر تیار کرسکتا ہے۔ جب اس اسٹینڈرڈ کے لئے آئی ایس او کی ویب سائٹ پر گیا تو پتہ لگا کہ اسکی دستاویز مفت نہیں ہے کچھ ڈالر خرچ کرنے پڑیں گے۔ لیکن چھان بین کے دوران ایک اچھی بات یہ پتہ لگی کہ جب ایڈوب نے 2007 مین یہ دستاویز آئی ایس او کے حوالے کی تھی تو اس کی ایک کاپی اپنی ویب سائٹ پر بھی استفادہ عام کے لئے رکھ دی تھی۔ چنانچہ ایڈوب کی ویب سائٹ سے وہ دستاویز اتار ی جو 750 کے قریب صفحات پر مشتمل تھی۔ اس کا مطالعہ شروع کیا لیکن ایک تو وقت کی کمی دوسرے اعلیٰ قسم کے دماغ کی کمی کہ اس دستاویز کو پوری طرح گھول کر نہ پی سکے۔ لیکن پھر بھی اسکے مطالعہ سے بہت مفید باتوں کا پتہ لگا۔ کیونکہ میں مطالعہ کے دوران کوئی چھوٹی سی پی ڈی ایف لے کر اسے نوٹ پیڈ میں کھول کر اسکا تجزیہ بھی کرتارہتا تھا کہ جو کچھ دستاویز میں لکھا ہے اس کی عملی شکل کیسی ہے۔ جو کچھ اس دستاویز سے معلوم ہوا اسکا خلاصہ یہ تھا کہ اس فارمیٹ میں ہر چیز ایک آبجیکٹ کے طور پر ہینڈل ہوتی ہے۔ مثلا ٹیکسٹ ایک آبجیکٹ ہے، تصویری مواد ایک آبجیکٹ ہے۔ پھر ان کا میٹا ڈیٹا کہ ٹیکسٹ کا فونٹ کیا ہے سائز کیا ہے اور صفحے پر اسکی لوکیشن کیا ہے وغیرہ یہ سب بھی ٹیکسٹ کے ساتھ ہی ایک ڈکشنری کی صورت میں محفوظ ہوتے ہیں۔ اور اسی فائل میں فونٹ کے وہ گلفس بھی بائٹس کی شکل میں محفوظ کردئیے جاتے ہیں جو اس فائل کے متن میں استعمال کئے گئے ہوتے ہیں۔ نیز ایک فونٹ رینڈرنگ کا طریقہ کار بھی اسی میں موجود ہوتا ہے۔
اس دستاویز کے مطالعے کے دوران ایک اور بات زہن میں آئی کہ جب یہ دستاویز اس طرح اوپن رکھی ہوئی ہے تو بعید نہیں کہ مائکروسافٹ نے اس کے لئے کوئی لائبریری تیار کر کے بھی ڈاٹ نیٹ پلیٹ فارم پر مہیا کی ہو۔ جب اس حوالے سے چھان بین کی گئی تو مائکروسافٹ کی تو کوئی لائبریری نہیں ملی لیکن کچھ تھرڈ پارٹی لائبریریز ملیں جو قیمتا دستیاب تھیں۔ لیکن ایک لائبریری بنام آئی ٹیکسٹ شارپ اوپن سورس بھی مل گئی جو جاوا اور ڈاٹ نیٹ دونوں کے لئے دستیاب تھی۔ اس لائبیری کو استعمال کرکے ڈاٹ نیٹ میں ایک تجرباتی پروگرام لکھا جس کے لئے انگریزی کے ایک جملے پر مشتمل پی ڈی ایف فائل بنا کر استعمال کی گئی۔اس لائبریری کی بدولت اس ایک جملے میں استعمال کئے گئے فونٹ کے نام بمع ان کیریکٹرز کے ایسکی کوڈز کے مل گئے۔ پھر یہی تجربہ ایک اردو کے جملے پر مشتمل پی ڈی ایف فائل ان پیج کی مدد سے بنا کر اس پر کیا گیا۔ تو اس اردو کے جملے میں استعمال کئے فونٹس کے نام اور ایسکی کوڈز بھی مل گئے۔ ظاہر ہے کہ وہ کوڈ ان پیج کی فونٹس فائلز کے مطابق تھے اس لئے اس شکل میں قابل استعمال نہ تھے۔
اگلے مرحلے میں ایک انتہائی ہلکا پھلکا فونٹ ایڈیٹر ڈاون لوڈ کیا گیا اور ان پیج کے جمیل نستعلیق فونٹ کی 89 فائلز کو اس میں باری باری کھول کر ان کا ڈیٹا ایک ایکسل فائل میں منتقل کیا۔ اس طرح کہ ایکسل فائل میں تین کالم تھے۔ ایک میں فونٹ فائل کا نام، دوسرے میں اس فائل میں درج ایک ترسیمے کا ایسکی کوڈ اور تیسرے کالم میں اس ایسکی کوڈ کے لئے ڈیفائن کئے گئے گلف کو یونی کوڈمیں ٹائپ کیا گیا۔ روزانہ ڈیڑھ گھنٹہ اس پر خرچ کرنے کے بعد کوئی تین ہفتے میں یہ کام مکمل ہوا۔ یہ کام کرتے ہوئے کئی فائلز میں خالی کشتیوں اور آزاد نقطوں سے واسطہ پڑا ۔ ان کو دیکھ کر تو سر چکرا گیا اور دماغ میں گھنٹی بجی کہ ان پیج کی یہ گھٹیا حرکت ضرور ہماری راہ میں روڑے اٹکائے گی۔ ایسے ترسیموں کو بھی ایکسل میں فونٹ فائل کے نام اور ایسکی کوڈ کے ساتھ جگہ تو ضرور دی گئی لیکن ان کے سامنے یونی کوڈمیں کیا ٹائپ کرتے؟ مجبورا خالی جگہ چھوڑنا پڑی۔ اور بعد کو انہی خالی کشتیوں اور نقطوں نے رنگ میں بھنگ ڈالا۔
پھر ایک چھوٹا سا پروگرام بنایا گیا جس میں کوڈنگ کی ترتیب یہ رکھی گئی کہ پہلے ایکسل کا تمام ڈیٹامیموری میں اٹھا لیا جائے۔پھر اس اوپن سورس پی ڈی ایف لائبریری کی مدد سے ان پیج کی پی ڈی ایف فائل کو پراسس کرنا شروع کیا۔ ایک کیریکٹرلیا اور اسکے فونٹ فائل کے نام اور اسکی ایسکی ویلیو کے مطابق ایکسل کے ڈیٹا سے ریکارڈ اٹھا کر اسکے سامنے یونی کوڈ میں لکھے گئے ترسیمہ کو اٹھا لیا گیا۔ اس طرح ترتیب سے پوری پی ڈی ایف فائل کو پراسس کرکے ان ترسیموں کو ایک ٹیکسٹ باکس میں ڈسپلے کرایا گیا۔ نتیجہ یہ نکلا کہ پی ڈی ایف سے یونی کوڈ متن حاصل تو ضرور ہوا لیکن خالی کشتیوں اور نقطوں والے ترسیمے جہاں جہاں بھی ان پیج میں استعال کئے گئے تھے ان کی جگہ کچھ بھی نہیں تھا جس کا نتیجہ یہ نکلا کہ متن کے الفاظ کئی جگہوں سے ٹوٹے ہوئے تھے۔ ڈسپلے کرائے گئے ٹیکسٹ پر غور کرنے سے تین طرح کے مسائل نظر آئے۔ تینوں طرح کے مسائل بمعہ ان کے ممکنہ حل کے ذیل میں درج کئے جارہے ہیں۔
اول: خالی کشتیوں اور آزاد نقطوں کی غیر حاضری کی وجہ سے الفاظ کا ٹوٹنا
اسکا جو حل میرے زہن میں آیا وہ یہ تھا کہ ایسی تمام جگہوں پر جہاں آزاد کشتیاں اور نقطوں کے ملاپ سے ترسیمے جنریٹ ہورہے ہیں وہاں لازما دو ایسکی کوڈز کے پئیر ملیں گے۔ ایک آزاد کشتی کا اور دوسرا آزاد نقطوں کا۔ مختلف پی ڈی ایف فائلز کو مستقل مزاجی سے پراسس کرانا شروع کیا جائے اور جہاں جہاں یہ پئیر ملیں ان پئیر کی ایسکی ویلیوز کو ایکسل فائل میں درج کرکے ان کے سامنے یونی کوڈمیں وہ ترسیمہ لکھ دیا جائے جو ان دونوں کے ملاپ سے بن رہا ہے۔ اسطرح مستقل مزاجی سے تین چار ماہ کام کرنے سے سارے نہیں تو اکثر ترسیمے یونی کوڈ صورت میں ایکسل فائل میں درج ہوجائیں گے۔ پھر پروگرام میں یہ کنڈیشن اپلائی کردی جائے کہ جہاں جہاں یہ پئیرز ملیں وہاں مطلوبہ ترسیمہ ڈسپلے کرادیا جائے۔
دوم: بعض جگہوں پر پی ڈی ایف لائبیری ایسکی کوڈ کو ہی مس کررہی تھی۔ اسکی وجہ سمجھ میں نہیں آئی۔ کہ اکثر جگہوں پر بالکل ٹھیک پراسسنگ ہورہی ہے لیکن بعض الفاظ کو اسکپ کرجاتی تھی۔ ہوسکتا ہے کہ یہ اس لابئریری کا کوئی بگ ہو کہ اوپن سورس میں مسائل تو ہو ہی سکتے ہیں۔ دوسرا یہ بھی ہوسکتا ہے کہ میں ہی کہیں غلطی کررہا ہوں۔ بہرحال ایسے الفاظ جن کے ایسکی کوڈ لائبیری مس کررہی تھی ان کی جگہ بھی مجھے خالی جگہ دکھانی پڑی۔ یہ تو مکمل طور پر تکنیکی مسئلہ ہے جس پر غور کرکے اسکا کوئی نہ کوئی حل سامنے آجائے گا یا وجہ پتہ لگ جائے گی کہ لائبریری بعض ترسیمے کیوں مس کررہی تھی۔ میرے زہن میں ایک یہ خیال بھی آیا تھا کہ کسی اچھی پی ڈی ایف لائبریری کا جو قیمتا دستیاب ہو اس کا ٹرائل ورژن حاصل کرکے اس کے ساتھ یہ تجربہ کیا جائے۔
سوم: یہ مسئلہ سامنے آیا کہ پی ڈی ایف میں اسپیس کا کیرکٹر نہیں ہوتا۔ بلکہ اسپیس کی جگہ پی ڈی ایف کا اسٹینڈرڈ ایک فاصلے کا تعین کرکے اگلے حرف کو اتنے فاصلے سے شروع کرتا تھا۔ یہ بھی ایک مسئلہ تھا۔ لیکن اسکو بھی تھوڑی سی ریسرچ کے بعد حل کیا جاسکتا ہے۔ کیونکہ یہی مسئلہ انگلش حروف کے ساتھ بھی آتا ہے تو اسکے لئے مختلف فورمز پر کچھ حل بتائے گئے تھے کہ پی ڈی ایف میں جو فاصلہ ہوتا ہے وہ بھی لائبریری کی مدد سے مل جاتا ہے تو اسکو کیلکولیٹ کرکے ایک اسپیس کی مقدار کا تعین کیا جاسکتا ہے۔ میں نے عارضی طور پر اسی طرح کا ایک تجربہ کرکے کچھ حد تک اس مسئلے پر قابو پالیا تھا۔ لیکن مکمل طور پر اس مسئلے کو حل کرنا ابھی باقی تھا۔ لیکن ایک تاثر میرے زہن مین تھا کہ یہ مسئلہ تھوڑی سی توجہ سے حل ہوسکتا ہے۔
میں نے جو اس پر مزید کام روک دیا تھا وہ پہلے مسئلے کے ممکنہ حل کی وجہ سے تھا۔ کہ تین چارہ ماہ مسلسل کچھ گھنٹے روزانہ خرچ کرنے کے بعد اس مسئلے کے حل کی امید ہوتی۔ لہذا پھر اس وقت تو ہمت ہی نہیں ہوئی۔ یہ سب یہاں شئیر کرنے کا مقصد یہ تھا کہ بعض اوقات ایک کی کوشش ناکام ہوجاتی ہے لیکن اسی ناکام کوشش سے کسی اور کو کامیابی کا کوئی اور راستہ نظر آنا شروع ہوجاتا ہے۔
ایک دلچسپ بات کہ اسی پی ڈی ایف والے کام کے چکر میں سرچنگ کرتے ہوئے ایک پیپر نظر سے گزرا تھا جس میں ان پیج کی اینکوڈنگ پر کسی نے ایک مقالہ لکھا تھا۔ شائد کوئی انڈیا کی یونیورسٹی کا مقالہ تھا۔ اس پیپر کو دلچسپی سے پڑھا اور آگے بڑھ گیا۔ دو چار دن بعد ہی شاکر بھائی کا ایک دھاگہ نظر سے گزرا جس میں انہوں نے یونی کوڈ سے ان پیج کنورٹر کی عدم دستیابی کا تذکرہ کیا تھا۔ شاکر بھائی کا دھاگہ دیکھ کر زہن اس پیپر کی طرف گیا اور خیال آیا کہ یہ تو دو تین گھنٹے میں بن سکتا ہے۔ اگر واقعی یونی کوڈ سے ان پیج کنورٹر موجود نہیں تو چلو دو تین گھنٹے اس کام پر خرچ کرتے ہیں کچھ نہ کچھ ہمارا حصہ بھی ہوجائے گا اردو ایپلیکیشن پروگرامنگ میں۔ اندازہ درست نکلا اور کوئی تین گھنٹے میں کنورٹر بن گیا لیکن اس کے مسائل دور کرتے ہوئے ایک ہفتہ لگ گیا۔ پھر جب دوبارہ شاکر بھائی کا دھاگہ دیکھا تو پتہ لگا کہ ابرار بھائی کے کنورٹر میں اسکی سہولت پہلے سے موجود ہے جس کی طرف شاکر بھائی کا دھیان نہیں گیا تھا۔ بہرحال ہمیں اس سے کنورٹر بنانے کا ایک تجربہ ہی ہوا ۔ ہم نے کیونکہ یہ کام بھی ایکسل فائل میں ان پیج کی اینکوڈنگ کا ڈیٹا بیس بنا کر کیا تھا اس لئے تھوڑا سا وقت لگا کہ وائس ورسا کنورٹر بھی بنا ڈالا اور سرد خانے میں ڈال دیا۔
پس منظر اس کا یہ ہے کہ کافی عرصے سے خاکسار کی یہ خواہش تھی کہ کسی طرح ان پیج کی پی ڈی ایف سے متن یونی کوڈ میں اخذ کیا جاسکے۔ اس خواہش کا ذکر ایک بار محفل پر بھی کئی سال پہلے کیا تھا جس کا جواب یہ ملا تھا کہ یہ ناممکن کام ہی ہے۔ لیکن اسکے باوجود فرصت کے اوقات میں کبھی کبھی تجربات کرنے کی کوشش کرتا تھا ۔ پھر کوئی ایک سال پہلے ایک خیال زہن میں آیا کہ مختلف پی ڈی ایف ریڈرز ان پیج کی فائل کو بالکل درست طریقے پر دکھاتے ہیں۔ چاہے وہ ایکروبیٹ ریڈر ہو یا فاکس ریڈر یا کوئی اور تھرڈ پارٹی ریڈر۔ تو جب وہ ریڈر ان پیج کی پی ڈی ایف سے متن درست طور پر اخذ کرسکتے ہیں تو انہیں بنیادوں پر ہم کیوں نہیں کرسکتے۔ اس بات سے اس طرف توجہ مبذول ہوئی کہ ضرور پی ڈی ایف کا کوئی نہ کوئی اسٹینڈرڈ ہوگا جس کی بنیاد پر مختلف پی ڈی ایف ریڈر ایک ہی نتیجہ دکھاتے ہیں۔
چنانچہ جب اس حوالے سے چھان بین کی گئی تو پتہ لگا کہ ایڈوب والوں نے سن 2007 میں پی ڈی ایف کے اسٹرکچر کو ایک معیار بنانے کے لئے آئی ایس او کے حوالے کردیا تھا۔اس وقت سے اس کے اسٹینڈرڈ کو آئی ایس او دیکھ رہی ہے اور یہ ایک عالمی اسٹینڈرڈ کا فائل فارمیٹ بن چکا ہے جس کی بنیاد پر کوئی بھی اپنا پی ڈی ایف ریڈر تیار کرسکتا ہے۔ جب اس اسٹینڈرڈ کے لئے آئی ایس او کی ویب سائٹ پر گیا تو پتہ لگا کہ اسکی دستاویز مفت نہیں ہے کچھ ڈالر خرچ کرنے پڑیں گے۔ لیکن چھان بین کے دوران ایک اچھی بات یہ پتہ لگی کہ جب ایڈوب نے 2007 مین یہ دستاویز آئی ایس او کے حوالے کی تھی تو اس کی ایک کاپی اپنی ویب سائٹ پر بھی استفادہ عام کے لئے رکھ دی تھی۔ چنانچہ ایڈوب کی ویب سائٹ سے وہ دستاویز اتار ی جو 750 کے قریب صفحات پر مشتمل تھی۔ اس کا مطالعہ شروع کیا لیکن ایک تو وقت کی کمی دوسرے اعلیٰ قسم کے دماغ کی کمی کہ اس دستاویز کو پوری طرح گھول کر نہ پی سکے۔ لیکن پھر بھی اسکے مطالعہ سے بہت مفید باتوں کا پتہ لگا۔ کیونکہ میں مطالعہ کے دوران کوئی چھوٹی سی پی ڈی ایف لے کر اسے نوٹ پیڈ میں کھول کر اسکا تجزیہ بھی کرتارہتا تھا کہ جو کچھ دستاویز میں لکھا ہے اس کی عملی شکل کیسی ہے۔ جو کچھ اس دستاویز سے معلوم ہوا اسکا خلاصہ یہ تھا کہ اس فارمیٹ میں ہر چیز ایک آبجیکٹ کے طور پر ہینڈل ہوتی ہے۔ مثلا ٹیکسٹ ایک آبجیکٹ ہے، تصویری مواد ایک آبجیکٹ ہے۔ پھر ان کا میٹا ڈیٹا کہ ٹیکسٹ کا فونٹ کیا ہے سائز کیا ہے اور صفحے پر اسکی لوکیشن کیا ہے وغیرہ یہ سب بھی ٹیکسٹ کے ساتھ ہی ایک ڈکشنری کی صورت میں محفوظ ہوتے ہیں۔ اور اسی فائل میں فونٹ کے وہ گلفس بھی بائٹس کی شکل میں محفوظ کردئیے جاتے ہیں جو اس فائل کے متن میں استعمال کئے گئے ہوتے ہیں۔ نیز ایک فونٹ رینڈرنگ کا طریقہ کار بھی اسی میں موجود ہوتا ہے۔
اس دستاویز کے مطالعے کے دوران ایک اور بات زہن میں آئی کہ جب یہ دستاویز اس طرح اوپن رکھی ہوئی ہے تو بعید نہیں کہ مائکروسافٹ نے اس کے لئے کوئی لائبریری تیار کر کے بھی ڈاٹ نیٹ پلیٹ فارم پر مہیا کی ہو۔ جب اس حوالے سے چھان بین کی گئی تو مائکروسافٹ کی تو کوئی لائبریری نہیں ملی لیکن کچھ تھرڈ پارٹی لائبریریز ملیں جو قیمتا دستیاب تھیں۔ لیکن ایک لائبریری بنام آئی ٹیکسٹ شارپ اوپن سورس بھی مل گئی جو جاوا اور ڈاٹ نیٹ دونوں کے لئے دستیاب تھی۔ اس لائبیری کو استعمال کرکے ڈاٹ نیٹ میں ایک تجرباتی پروگرام لکھا جس کے لئے انگریزی کے ایک جملے پر مشتمل پی ڈی ایف فائل بنا کر استعمال کی گئی۔اس لائبریری کی بدولت اس ایک جملے میں استعمال کئے گئے فونٹ کے نام بمع ان کیریکٹرز کے ایسکی کوڈز کے مل گئے۔ پھر یہی تجربہ ایک اردو کے جملے پر مشتمل پی ڈی ایف فائل ان پیج کی مدد سے بنا کر اس پر کیا گیا۔ تو اس اردو کے جملے میں استعمال کئے فونٹس کے نام اور ایسکی کوڈز بھی مل گئے۔ ظاہر ہے کہ وہ کوڈ ان پیج کی فونٹس فائلز کے مطابق تھے اس لئے اس شکل میں قابل استعمال نہ تھے۔
اگلے مرحلے میں ایک انتہائی ہلکا پھلکا فونٹ ایڈیٹر ڈاون لوڈ کیا گیا اور ان پیج کے جمیل نستعلیق فونٹ کی 89 فائلز کو اس میں باری باری کھول کر ان کا ڈیٹا ایک ایکسل فائل میں منتقل کیا۔ اس طرح کہ ایکسل فائل میں تین کالم تھے۔ ایک میں فونٹ فائل کا نام، دوسرے میں اس فائل میں درج ایک ترسیمے کا ایسکی کوڈ اور تیسرے کالم میں اس ایسکی کوڈ کے لئے ڈیفائن کئے گئے گلف کو یونی کوڈمیں ٹائپ کیا گیا۔ روزانہ ڈیڑھ گھنٹہ اس پر خرچ کرنے کے بعد کوئی تین ہفتے میں یہ کام مکمل ہوا۔ یہ کام کرتے ہوئے کئی فائلز میں خالی کشتیوں اور آزاد نقطوں سے واسطہ پڑا ۔ ان کو دیکھ کر تو سر چکرا گیا اور دماغ میں گھنٹی بجی کہ ان پیج کی یہ گھٹیا حرکت ضرور ہماری راہ میں روڑے اٹکائے گی۔ ایسے ترسیموں کو بھی ایکسل میں فونٹ فائل کے نام اور ایسکی کوڈ کے ساتھ جگہ تو ضرور دی گئی لیکن ان کے سامنے یونی کوڈمیں کیا ٹائپ کرتے؟ مجبورا خالی جگہ چھوڑنا پڑی۔ اور بعد کو انہی خالی کشتیوں اور نقطوں نے رنگ میں بھنگ ڈالا۔
پھر ایک چھوٹا سا پروگرام بنایا گیا جس میں کوڈنگ کی ترتیب یہ رکھی گئی کہ پہلے ایکسل کا تمام ڈیٹامیموری میں اٹھا لیا جائے۔پھر اس اوپن سورس پی ڈی ایف لائبریری کی مدد سے ان پیج کی پی ڈی ایف فائل کو پراسس کرنا شروع کیا۔ ایک کیریکٹرلیا اور اسکے فونٹ فائل کے نام اور اسکی ایسکی ویلیو کے مطابق ایکسل کے ڈیٹا سے ریکارڈ اٹھا کر اسکے سامنے یونی کوڈ میں لکھے گئے ترسیمہ کو اٹھا لیا گیا۔ اس طرح ترتیب سے پوری پی ڈی ایف فائل کو پراسس کرکے ان ترسیموں کو ایک ٹیکسٹ باکس میں ڈسپلے کرایا گیا۔ نتیجہ یہ نکلا کہ پی ڈی ایف سے یونی کوڈ متن حاصل تو ضرور ہوا لیکن خالی کشتیوں اور نقطوں والے ترسیمے جہاں جہاں بھی ان پیج میں استعال کئے گئے تھے ان کی جگہ کچھ بھی نہیں تھا جس کا نتیجہ یہ نکلا کہ متن کے الفاظ کئی جگہوں سے ٹوٹے ہوئے تھے۔ ڈسپلے کرائے گئے ٹیکسٹ پر غور کرنے سے تین طرح کے مسائل نظر آئے۔ تینوں طرح کے مسائل بمعہ ان کے ممکنہ حل کے ذیل میں درج کئے جارہے ہیں۔
اول: خالی کشتیوں اور آزاد نقطوں کی غیر حاضری کی وجہ سے الفاظ کا ٹوٹنا
اسکا جو حل میرے زہن میں آیا وہ یہ تھا کہ ایسی تمام جگہوں پر جہاں آزاد کشتیاں اور نقطوں کے ملاپ سے ترسیمے جنریٹ ہورہے ہیں وہاں لازما دو ایسکی کوڈز کے پئیر ملیں گے۔ ایک آزاد کشتی کا اور دوسرا آزاد نقطوں کا۔ مختلف پی ڈی ایف فائلز کو مستقل مزاجی سے پراسس کرانا شروع کیا جائے اور جہاں جہاں یہ پئیر ملیں ان پئیر کی ایسکی ویلیوز کو ایکسل فائل میں درج کرکے ان کے سامنے یونی کوڈمیں وہ ترسیمہ لکھ دیا جائے جو ان دونوں کے ملاپ سے بن رہا ہے۔ اسطرح مستقل مزاجی سے تین چار ماہ کام کرنے سے سارے نہیں تو اکثر ترسیمے یونی کوڈ صورت میں ایکسل فائل میں درج ہوجائیں گے۔ پھر پروگرام میں یہ کنڈیشن اپلائی کردی جائے کہ جہاں جہاں یہ پئیرز ملیں وہاں مطلوبہ ترسیمہ ڈسپلے کرادیا جائے۔
دوم: بعض جگہوں پر پی ڈی ایف لائبیری ایسکی کوڈ کو ہی مس کررہی تھی۔ اسکی وجہ سمجھ میں نہیں آئی۔ کہ اکثر جگہوں پر بالکل ٹھیک پراسسنگ ہورہی ہے لیکن بعض الفاظ کو اسکپ کرجاتی تھی۔ ہوسکتا ہے کہ یہ اس لابئریری کا کوئی بگ ہو کہ اوپن سورس میں مسائل تو ہو ہی سکتے ہیں۔ دوسرا یہ بھی ہوسکتا ہے کہ میں ہی کہیں غلطی کررہا ہوں۔ بہرحال ایسے الفاظ جن کے ایسکی کوڈ لائبیری مس کررہی تھی ان کی جگہ بھی مجھے خالی جگہ دکھانی پڑی۔ یہ تو مکمل طور پر تکنیکی مسئلہ ہے جس پر غور کرکے اسکا کوئی نہ کوئی حل سامنے آجائے گا یا وجہ پتہ لگ جائے گی کہ لائبریری بعض ترسیمے کیوں مس کررہی تھی۔ میرے زہن میں ایک یہ خیال بھی آیا تھا کہ کسی اچھی پی ڈی ایف لائبریری کا جو قیمتا دستیاب ہو اس کا ٹرائل ورژن حاصل کرکے اس کے ساتھ یہ تجربہ کیا جائے۔
سوم: یہ مسئلہ سامنے آیا کہ پی ڈی ایف میں اسپیس کا کیرکٹر نہیں ہوتا۔ بلکہ اسپیس کی جگہ پی ڈی ایف کا اسٹینڈرڈ ایک فاصلے کا تعین کرکے اگلے حرف کو اتنے فاصلے سے شروع کرتا تھا۔ یہ بھی ایک مسئلہ تھا۔ لیکن اسکو بھی تھوڑی سی ریسرچ کے بعد حل کیا جاسکتا ہے۔ کیونکہ یہی مسئلہ انگلش حروف کے ساتھ بھی آتا ہے تو اسکے لئے مختلف فورمز پر کچھ حل بتائے گئے تھے کہ پی ڈی ایف میں جو فاصلہ ہوتا ہے وہ بھی لائبریری کی مدد سے مل جاتا ہے تو اسکو کیلکولیٹ کرکے ایک اسپیس کی مقدار کا تعین کیا جاسکتا ہے۔ میں نے عارضی طور پر اسی طرح کا ایک تجربہ کرکے کچھ حد تک اس مسئلے پر قابو پالیا تھا۔ لیکن مکمل طور پر اس مسئلے کو حل کرنا ابھی باقی تھا۔ لیکن ایک تاثر میرے زہن مین تھا کہ یہ مسئلہ تھوڑی سی توجہ سے حل ہوسکتا ہے۔
میں نے جو اس پر مزید کام روک دیا تھا وہ پہلے مسئلے کے ممکنہ حل کی وجہ سے تھا۔ کہ تین چارہ ماہ مسلسل کچھ گھنٹے روزانہ خرچ کرنے کے بعد اس مسئلے کے حل کی امید ہوتی۔ لہذا پھر اس وقت تو ہمت ہی نہیں ہوئی۔ یہ سب یہاں شئیر کرنے کا مقصد یہ تھا کہ بعض اوقات ایک کی کوشش ناکام ہوجاتی ہے لیکن اسی ناکام کوشش سے کسی اور کو کامیابی کا کوئی اور راستہ نظر آنا شروع ہوجاتا ہے۔
ایک دلچسپ بات کہ اسی پی ڈی ایف والے کام کے چکر میں سرچنگ کرتے ہوئے ایک پیپر نظر سے گزرا تھا جس میں ان پیج کی اینکوڈنگ پر کسی نے ایک مقالہ لکھا تھا۔ شائد کوئی انڈیا کی یونیورسٹی کا مقالہ تھا۔ اس پیپر کو دلچسپی سے پڑھا اور آگے بڑھ گیا۔ دو چار دن بعد ہی شاکر بھائی کا ایک دھاگہ نظر سے گزرا جس میں انہوں نے یونی کوڈ سے ان پیج کنورٹر کی عدم دستیابی کا تذکرہ کیا تھا۔ شاکر بھائی کا دھاگہ دیکھ کر زہن اس پیپر کی طرف گیا اور خیال آیا کہ یہ تو دو تین گھنٹے میں بن سکتا ہے۔ اگر واقعی یونی کوڈ سے ان پیج کنورٹر موجود نہیں تو چلو دو تین گھنٹے اس کام پر خرچ کرتے ہیں کچھ نہ کچھ ہمارا حصہ بھی ہوجائے گا اردو ایپلیکیشن پروگرامنگ میں۔ اندازہ درست نکلا اور کوئی تین گھنٹے میں کنورٹر بن گیا لیکن اس کے مسائل دور کرتے ہوئے ایک ہفتہ لگ گیا۔ پھر جب دوبارہ شاکر بھائی کا دھاگہ دیکھا تو پتہ لگا کہ ابرار بھائی کے کنورٹر میں اسکی سہولت پہلے سے موجود ہے جس کی طرف شاکر بھائی کا دھیان نہیں گیا تھا۔ بہرحال ہمیں اس سے کنورٹر بنانے کا ایک تجربہ ہی ہوا ۔ ہم نے کیونکہ یہ کام بھی ایکسل فائل میں ان پیج کی اینکوڈنگ کا ڈیٹا بیس بنا کر کیا تھا اس لئے تھوڑا سا وقت لگا کہ وائس ورسا کنورٹر بھی بنا ڈالا اور سرد خانے میں ڈال دیا۔
آخری تدوین: