جناب یہ کوئی مضحکہ خیز ترکیب نہیں بلکہ اصل ترکیب ہی یہ ہے جسے ہم کافی عرصہ قبل یہاں محفل پر بیان کر چکے ہیں۔ اس ضمن میں یہ پوسٹ چیک کر لیں۔محفلینز سے گزارش ہے کہ جمیل نوری نستعلیق فانٹ میں لکھی عبارت کی کرننگ ٹیسٹ اور ایڈجسٹ کرنے کے لئے مختلف اشکال کے کرننگ پیئر یا لگیچرزکی جوڑیاں فراہم کردیں۔ دراصل امیج پروسیسنگ کے ذریعے آٹو کرننگ کی ایک (مضحکہ خیز) ترکیب سوجھی ہے، سو ٹیسٹنگ کے لئے الفاظ کے جوڑے درکار ہیں۔
جناب یہ کوئی مضحکہ خیز ترکیب نہیں بلکہ اصل ترکیب ہی یہ ہے جسے ہم کافی عرصہ قبل یہاں محفل پر بیان کر چکے ہیں۔ اس ضمن میں یہ پوسٹ چیک کر لیں۔
اس پر مکرمی زیک نے بھی کام کیا ہے البتہ اسکے نتائج فی الحال منظر عام پر نہیں آئے۔ آپ چاہیں تو ٹیسٹنگ کیلئے بنیادی لسٹ پاک ورڈ فائنڈر سے حاصل کر سکتے ہیں۔ اور اگر جلدی چاہئے ہو تو نعیم سعید سے رابطہ کر لیں۔
اگر آپ یہ کام تجرباتی طور پر کر رہے ہیں تو میری رائے میں ر پر ختم ہونے والے ترسیموں کو دیگر چند ترسیموں کیساتھ پروسیس کر کے دیکھ لیں۔ نتائج سے آگاہ کرنا مت بھولئے گاجی میں آپ حضرات کی کاوشوں سے کسی حد تک آشنا تھا۔ بس کچھ ذاتی طور پر تجربات کر کے یہ دیکھنا چاہتا ہوں کہ کرننگ کے قوانین کس حد تک generalizeکیے جاستکے ہیں اور کس حد تک مختلف ترسیموں کے درمیاں تبدیل ہو جاتے ہیں۔ اسی سلسلے میں Visual basicمیں انتہائی novice امیج پروسیسنگ کر کے دیکھ رہا ہوں.
DEF_LOOKUP "kern_alfa6" PROCESS_BASE PROCESS_MARKS ALL DIRECTION RTL
IN_CONTEXT
END_CONTEXT
AS_POSITION
ADJUST_PAIR
FIRST GLYPH "mr"
SECOND GLYPH "mr"
1 1 BY POS END_POS POS ADV -700 END_POS
END_ADJUST
END_POSITION
END
یہ تو صرف ایک مثال تھی۔ ظاہر ہے پکسلز میں کرننگ ویلیوز کا فرق تو ہوگا ہی۔وولٹ کی سکرین شاٹ میں جو 700- کی تعداد ہے ، اس کا یونٹ دریافت نہیں ہو پا رہا۔ میرے پروگرام سے تو x-shift یا tracking کی ویلیو کچھ اور ہی آرہی ہے۔
انڈیزائننگ کی کرننگ / ٹریکنگ کا پیمانہ بہت سوں کیلئے ایک عجوبہ بنا ہوا ہے۔ ویسے اگر آپ کو اسکی آٹو کرننگ ویلیوز سے دلچسپی ہے تو یہ اس ٹول کی مدد سے "چرائی" جا سکتی ہیں:ویسے پلان یہ تھا کہ اپنے پروگرام سے انڈیزائن میں ٹیکسٹ امپورٹ کر کہ دیکھوں گا کیسے نتائج آتے ہیں۔ لیکن فالحال انڈیزائن میں ایک لفظ کی اگلے اور پچھلے لفظ کے ساتھ ٹریکنگ کا معاملہ سمجھ نہیں آرہا۔ نیز اگر ایک لفظ دو سے زیادہ ترسیموں سے بنتا ہو تو وہاں انڈیزائن لفظ کی اندرونی ٹریکنگ کا جنازہ نکال دیتا ہے اور انڈیزئن کی ٹریکنگ کی ویلیو بھی فرق آرہی ہے۔ آپ لیٹسٹ انڈیزائن میں فقرے 'اردو بازار' کی ٹریکنگ کا تجربہ کریں۔
Steal kerning from InDesign: steals the kerning from text set in InDesign. Useful for extracting InDesign’s Optical Kerning values.
Steal kerning groups: steals left/right kerning groups for all selected glyphs from a 2nd font. Needs Vanilla.
Steal Sidebearings: steals the sidebearing values for all selected glyphs from a 2nd font. Ignores metrics keys like '=x+20'. Needs Vanilla.
بالکل۔ اسی لئے انڈیزائن کی خودکار کرننگ کو مسترد کر کے آپ کے ٹول کی طرف توجہ دے رہا ہوںتدوین: انڈیزائن کی بجائے ایم ایس وولٹ پر ہی توجہ دینا بہتر رہے گا تاکہ فونٹ کی مدد سے انڈیزائن کیا سب اطلاقیوں میں کرننگ آجائے۔
وولٹ درحقیقت ٹرپل کنورژن کر رہاہے۔ یہ پہلے فانٹ کے اندرونی سائز 2048 em کو پوائنٹس میں کنورٹ کرتا ہے جسکے بعد اسے گرافکل انٹرفیس پکسلز کی صورت میں پیش کرتاہے۔ اگر 2048 em کو پوائنٹس میں کنورٹ کیا جائے تو یہ عدد ملتا ہے:البتہ بڑے preview میں فونٹ سائز لگ بھگ 100 کے قریب ہے۔ ہم اس طرح کرتے ہیں کہ اس سائز پر وولٹ کی ویلیو کو پکسلز میں کنورٹ کر کے اپنے پروگرام کو فیڈ کرتے ہیں شاید یہ 'جگاڑ' چل جائے۔
نبیل بھائی یہ آگے پیچھے کرنے والا کام تو ہم مینولی وولٹ کے اندر بھی کر سکتے ہیں۔ البتہ کرننگ پیئرز اتنے زیادہ ہوتے ہیں کہ اگر ہم مینولی یہ کام کرنے بیٹھ گئے تو ساری عمر یہی کرتے رہیں گے اور پیئرز ختم نہیں ہوں گے۔میرے ذہن میں اس پروگرام کا خاکہ کچھ اس طرح ہوگا کہ اسی سکیل پر گرافک ڈسپلے کا استعمال کیا جائے جوکہ فونٹ گلفس کے لیے استعمال ہوتا ہے یعنی کہ em سکیل۔ اگر مجھے صحیح یاد پڑ رہا ہے تو فونٹ ایڈیٹنگ پروگرامز میں 1000x1000 ای ایم گرڈ استعمال کی جاتی ہے۔ میرے خیال میں اسی طرح کی گرڈ استعمال کرکے اور اس پر گلفس کو آگے پیچھے کرکے کرننگ پئیرز حاصل کیے جا سکتے ہیں۔ یہ کوئی خود کار طریقی تو نہیں ہوگا، لیکن اس اچھے نتائج حاصل کرنے کی توقع کی جا سکتی ہے۔
انکی فکر نہ کریں۔ انہیں ہم فانٹ لیب میں خودکار طور پر درست کر سکتے ہیں ۔ آپ فی الحال ک، گ سے شروع ہونے لگیچرز کو چھوڑ کر باقی لگیچرز پر دھیان دیںکچھ گلفس تو پہلے سے ہی کرننگ کے ساتھ ہیں عارف صاحب۔ان کی boundaries تو گلف سے اندر سیٹ ہیں۔ ان کا کیا کیا جائے۔ یہ تو راہ میں رکاوٹ بن رہے ہیں۔
ظاہر ہے اتنے زیادہ پیئرز پراسیس کرنا تکنیکی اعتبار سے ناممکن ہے۔عارف بھائی ذرا اس پر روشنی ڈالیں کہ کل کتنے لگیچر پیئر کا فاصلہ نکالنا ہوگا۔ اگر 18000 لگیچرز ہیں اور ہر لگیچر کا ہر دوسرے لگیچر کے ساتھ پیئر بنانا ہے تو اس کا مطلب ہے18000 کا سکوئر یعنی 324 ملین پیئرز؟
اوپر مار کر پوچھ رہیں کہ ماری تو نہیںکہیں میں بونگی تو نہیں ما رہا ؟
نبیل بھائی یہ آگے پیچھے کرنے والا کام تو ہم مینولی وولٹ کے اندر بھی کر سکتے ہیں۔ البتہ کرننگ پیئرز اتنے زیادہ ہوتے ہیں کہ اگر ہم مینولی یہ کام کرنے بیٹھ گئے تو ساری عمر یہی کرتے رہیں گے اور پیئرز ختم نہیں ہوں گے۔
چند سو ملین کیا چند بلین جوڑوں کی پروسیسنگ بھی تکنیکی اعتبار سے نا ممکن نہیں، بلکہ عین ممکن ہے۔ البتہ اس سے حاصل نتائج کو کسی فونٹ میں مکمل طور پر شامل کرنا یقیناً خوشگوار نہ ہوگا، اور شائد موجودہ آلات کی مدد سے ممکن بھی نہ ہو۔ لہٰذا پہلے سے کرننگ پئیر کی گروپنگ کر کے تعداد کو کئی درجہ کم کیا جا سکتا ہے، یا پھر کاپس میں بائی گرامز کی مدد سے سب سے زیادہ مستعمل بالائی چند ہزار جوڑوں پر کام کیا جا سکتا ہے۔ ایک طریقہ یہ بھی ہو سکتا ہے کہ پہلے تمام ممکنہ جوڑوں کی کرننگ قدر حاصل کر لی جائے اور پھر ان کی کلسٹرنگ کر کے ایسے ڈیٹا ڈریوین اصول وضع جائیں کہ ان کا گروپ بن جائے۔ کرننگ کی قدر معلوم کرنے کے لیے اوپن سی وی کی مدد سے شیپس کی تعداد گننے والا طریقہ کوڈ کر کے آٹومیٹ کرنا سہل کام ہوگا۔ظاہر ہے اتنے زیادہ پیئرز پراسیس کرنا تکنیکی اعتبار سے ناممکن ہے۔