کرننگ جانچنے کے لئے لگیچرز کی جوڑیاں

mohdumar

محفلین
محفلینز سے گزارش ہے کہ جمیل نوری نستعلیق فانٹ میں لکھی عبارت کی کرننگ ٹیسٹ اور ایڈجسٹ کرنے کے لئے مختلف اشکال کے کرننگ پیئر یا لگیچرزکی جوڑیاں فراہم کردیں۔ دراصل امیج پروسیسنگ کے ذریعے آٹو کرننگ کی ایک (مضحکہ خیز) ترکیب سوجھی ہے، سو ٹیسٹنگ کے لئے الفاظ کے جوڑے درکار ہیں۔
 

arifkarim

معطل
محفلینز سے گزارش ہے کہ جمیل نوری نستعلیق فانٹ میں لکھی عبارت کی کرننگ ٹیسٹ اور ایڈجسٹ کرنے کے لئے مختلف اشکال کے کرننگ پیئر یا لگیچرزکی جوڑیاں فراہم کردیں۔ دراصل امیج پروسیسنگ کے ذریعے آٹو کرننگ کی ایک (مضحکہ خیز) ترکیب سوجھی ہے، سو ٹیسٹنگ کے لئے الفاظ کے جوڑے درکار ہیں۔
جناب یہ کوئی مضحکہ خیز ترکیب نہیں بلکہ اصل ترکیب ہی یہ ہے جسے ہم کافی عرصہ قبل یہاں محفل پر بیان کر چکے ہیں۔ اس ضمن میں یہ پوسٹ چیک کر لیں۔
اس پر مکرمی زیک نے بھی کام کیا ہے البتہ اسکے نتائج فی الحال منظر عام پر نہیں آئے۔ آپ چاہیں تو ٹیسٹنگ کیلئے بنیادی لسٹ پاک ورڈ فائنڈر سے حاصل کر سکتے ہیں۔ اور اگر جلدی چاہئے ہو تو نعیم سعید سے رابطہ کر لیں۔
 

mohdumar

محفلین
جناب یہ کوئی مضحکہ خیز ترکیب نہیں بلکہ اصل ترکیب ہی یہ ہے جسے ہم کافی عرصہ قبل یہاں محفل پر بیان کر چکے ہیں۔ اس ضمن میں یہ پوسٹ چیک کر لیں۔
اس پر مکرمی زیک نے بھی کام کیا ہے البتہ اسکے نتائج فی الحال منظر عام پر نہیں آئے۔ آپ چاہیں تو ٹیسٹنگ کیلئے بنیادی لسٹ پاک ورڈ فائنڈر سے حاصل کر سکتے ہیں۔ اور اگر جلدی چاہئے ہو تو نعیم سعید سے رابطہ کر لیں۔

جی میں آپ حضرات کی کاوشوں سے کسی حد تک آشنا تھا۔ بس کچھ ذاتی طور پر تجربات کر کے یہ دیکھنا چاہتا ہوں کہ کرننگ کے قوانین کس حد تک generalizeکیے جاستکے ہیں اور کس حد تک مختلف ترسیموں کے درمیاں تبدیل ہو جاتے ہیں۔ اسی سلسلے میں Visual basicمیں انتہائی novice امیج پروسیسنگ کر کے دیکھ رہا ہوں.
 

arifkarim

معطل
جی میں آپ حضرات کی کاوشوں سے کسی حد تک آشنا تھا۔ بس کچھ ذاتی طور پر تجربات کر کے یہ دیکھنا چاہتا ہوں کہ کرننگ کے قوانین کس حد تک generalizeکیے جاستکے ہیں اور کس حد تک مختلف ترسیموں کے درمیاں تبدیل ہو جاتے ہیں۔ اسی سلسلے میں Visual basicمیں انتہائی novice امیج پروسیسنگ کر کے دیکھ رہا ہوں.
اگر آپ یہ کام تجرباتی طور پر کر رہے ہیں تو میری رائے میں ر پر ختم ہونے والے ترسیموں کو دیگر چند ترسیموں کیساتھ پروسیس کر کے دیکھ لیں۔ نتائج سے آگاہ کرنا مت بھولئے گا :)
 

mohdumar

محفلین
ابھی تک تو صرف اس مفروضے کو ٹیسٹ کرنے کے لئے ایک پروگرام ترتیب دے پایا ہوں کہ لگیچرز کے درمیانhorizontal یا پھر diagonal فاصلے کو اگر ایک سٹینڈرڈ پر سیٹ کر دیا جائے توقابل استعمال کرننگ حاصل ہوتی ہے کہ نہیں۔ لیکن توقعات کے عین مطابق مختلف لگیچرز کے درمیاں variations بہت آجاتی ہیں۔واقعے کوئی ڈیفالٹ سٹینڈرڈ تلاش کرنا مشکل ہے۔


9DHEwmT.png
 
آخری تدوین:

mohdumar

محفلین
ایک چھوٹا سا اپڈیٹ جس میں پروگرام خودکار طور stroke والے لگیچرز کو ایک ساتھ جوڑ دیتا ہے۔یعنی strokeکو سٹینڈرڈ مان لیتا ہے۔ کوئی بھی دو الفاظ درج کریں اور KERN USING STROKE والا بٹن دبائیں۔
ربط
WXKBh4Z.png
 

arifkarim

معطل
mohdumar
لاجواب! آپ تو چھپے پروگرامر نکلے! :)
جشن آزادی کے موقع پر یہ بہترین تحفہ پیش کرنے کیلئے مبارک باد قبول کریں :)
اس ٹول کی مدد سے کم از کم الفاظ کے مابین کرننگ کا مسئلہ حل ہوتا نظر آ رہا ہے۔ اب آپ نے یہ کرنا ہے کہ اسمیں لگیچرپئیرز کی فہرست امپورٹ کرنے کا فیچر شامل کردیں۔ اس طرح کہ اوپراسٹروک پراسیس کا کمانڈ دیتے ہی یہ مطلوبہ پئیرز کی کرننگ ویلیوز ایک الگ فائل میں سیو کردے۔ ان ویلیوز کو بعد ازاں ابرارحسین بھائی کے پاک ورڈ فائنڈر کی مدد سے وولٹ کے فارمیٹ میں تبدیل کر کے امپورٹ کیا جا سکے گا۔
مثال کے طور پر وولٹ ان دو لگیچرز "مر" "مر" کی کرننگ ویلیو گرافکل انٹرفیس میں ایسے ڈیفائن کرتا ہے:
b629.gif

جبکہ وولٹ کوڈ میں:
کوڈ:
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
یوں آپ کا پروگرام انہیں کچھ اس فارمیٹ میں آؤٹ پٹ دے سکتا ہے:
b630.gif
 
مدیر کی آخری تدوین:

mohdumar

محفلین
arifkarim
وولٹ کی سکرین شاٹ میں جو 700- کی تعداد ہے ، اس کا یونٹ دریافت نہیں ہو پا رہا۔ میرے پروگرام سے تو x-shift یا tracking کی ویلیو کچھ اور ہی آرہی ہے۔
ویسے پلان یہ تھا کہ اپنے پروگرام سے انڈیزائن میں ٹیکسٹ امپورٹ کر کہ دیکھوں گا کیسے نتائج آتے ہیں۔ لیکن فالحال انڈیزائن میں ایک لفظ کی اگلے اور پچھلے لفظ کے ساتھ ٹریکنگ کا معاملہ سمجھ نہیں آرہا۔ نیز اگر ایک لفظ دو سے زیادہ ترسیموں سے بنتا ہو تو وہاں انڈیزائن لفظ کی اندرونی ٹریکنگ کا جنازہ نکال دیتا ہے :) اور انڈیزئن کی ٹریکنگ کی ویلیو بھی فرق آرہی ہے۔ آپ لیٹسٹ انڈیزائن میں فقرے 'اردو بازار' کی ٹریکنگ کا تجربہ کریں۔

تدوین: انڈیزائن کی بجائے ایم ایس وولٹ پر ہی توجہ دینا بہتر رہے گا تاکہ فونٹ کی مدد سے انڈیزائن کیا سب اطلاقیوں میں کرننگ آجائے۔
 
آخری تدوین:

arifkarim

معطل
وولٹ کی سکرین شاٹ میں جو 700- کی تعداد ہے ، اس کا یونٹ دریافت نہیں ہو پا رہا۔ میرے پروگرام سے تو x-shift یا tracking کی ویلیو کچھ اور ہی آرہی ہے۔
یہ تو صرف ایک مثال تھی۔ ظاہر ہے پکسلز میں کرننگ ویلیوز کا فرق تو ہوگا ہی۔
جمیل نوری نستعلیق 2048 em کے سائز پر ڈیزائن کیا گیا ہے۔ اگر آپ اپنے کرننگ فائنڈر میں اسکا پیمانہ یہی رکھ دیں اور فانٹ کا سائز 205 منتخب کر دیں تو یقیناً افاقہ ہوگا :)

ویسے پلان یہ تھا کہ اپنے پروگرام سے انڈیزائن میں ٹیکسٹ امپورٹ کر کہ دیکھوں گا کیسے نتائج آتے ہیں۔ لیکن فالحال انڈیزائن میں ایک لفظ کی اگلے اور پچھلے لفظ کے ساتھ ٹریکنگ کا معاملہ سمجھ نہیں آرہا۔ نیز اگر ایک لفظ دو سے زیادہ ترسیموں سے بنتا ہو تو وہاں انڈیزائن لفظ کی اندرونی ٹریکنگ کا جنازہ نکال دیتا ہے :) اور انڈیزئن کی ٹریکنگ کی ویلیو بھی فرق آرہی ہے۔ آپ لیٹسٹ انڈیزائن میں فقرے 'اردو بازار' کی ٹریکنگ کا تجربہ کریں۔
انڈیزائننگ کی کرننگ / ٹریکنگ کا پیمانہ بہت سوں کیلئے ایک عجوبہ بنا ہوا ہے۔ ویسے اگر آپ کو اسکی آٹو کرننگ ویلیوز سے دلچسپی ہے تو یہ اس ٹول کی مدد سے "چرائی" جا سکتی ہیں:
کوڈ:
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.
https://github.com/mekkablue/Glyphs-Scripts

تدوین: انڈیزائن کی بجائے ایم ایس وولٹ پر ہی توجہ دینا بہتر رہے گا تاکہ فونٹ کی مدد سے انڈیزائن کیا سب اطلاقیوں میں کرننگ آجائے۔
بالکل۔ اسی لئے انڈیزائن کی خودکار کرننگ کو مسترد کر کے آپ کے ٹول کی طرف توجہ دے رہا ہوں :)
 

mohdumar

محفلین
میرے مشاہدے کے مطابق وولٹ میں جو 700- ویلیو تھی یا اس جیسی جو بھی ویلیوز آئیں گی وہ فونٹ سائز سے جدا ہیں بلکہ یہ کہنا چاہیے کہ وولٹ مختلف سائز کی عبارات میں وہی visual kerningبرقرار رکھتا ہے جیسا کہ چھوٹے بکس میں واضع ہے۔

tSH9ptH.jpg

البتہ بڑے preview میں فونٹ سائز لگ بھگ 100 کے قریب ہے۔ ہم اس طرح کرتے ہیں کہ اس سائز پر وولٹ کی ویلیو کو پکسلز میں کنورٹ کر کے اپنے پروگرام کو فیڈ کرتے ہیں شاید یہ 'جگاڑ' چل جائے۔ اس دورانیہ میں کوئی لگیچرز کی لسٹ فراہم کردے تو ضرور افاقہ ہوگا۔
 

نبیل

تکنیکی معاون
میرے ذہن میں اس پروگرام کا خاکہ کچھ اس طرح ہوگا کہ اسی سکیل پر گرافک ڈسپلے کا استعمال کیا جائے جوکہ فونٹ گلفس کے لیے استعمال ہوتا ہے یعنی کہ em سکیل۔ اگر مجھے صحیح یاد پڑ رہا ہے تو فونٹ ایڈیٹنگ پروگرامز میں 1000x1000 ای ایم گرڈ استعمال کی جاتی ہے۔ میرے خیال میں اسی طرح کی گرڈ استعمال کرکے اور اس پر گلفس کو آگے پیچھے کرکے کرننگ پئیرز حاصل کیے جا سکتے ہیں۔ یہ کوئی خود کار طریقی تو نہیں ہوگا، لیکن اس اچھے نتائج حاصل کرنے کی توقع کی جا سکتی ہے۔
 

mohdumar

محفلین
کچھ گلفس تو پہلے سے ہی کرننگ کے ساتھ ہیں عارف صاحب۔ان کی boundaries تو گلف سے اندر سیٹ ہیں۔ ان کا کیا کیا جائے۔ یہ تو راہ میں رکاوٹ بن رہے ہیں۔
z0WgwAR.jpg
 

arifkarim

معطل
البتہ بڑے preview میں فونٹ سائز لگ بھگ 100 کے قریب ہے۔ ہم اس طرح کرتے ہیں کہ اس سائز پر وولٹ کی ویلیو کو پکسلز میں کنورٹ کر کے اپنے پروگرام کو فیڈ کرتے ہیں شاید یہ 'جگاڑ' چل جائے۔
وولٹ درحقیقت ٹرپل کنورژن کر رہاہے۔ یہ پہلے فانٹ کے اندرونی سائز 2048 em کو پوائنٹس میں کنورٹ کرتا ہے جسکے بعد اسے گرافکل انٹرفیس پکسلز کی صورت میں پیش کرتاہے۔ اگر 2048 em کو پوائنٹس میں کنورٹ کیا جائے تو یہ عدد ملتا ہے:
b631.gif

مطلب اگر آپ اپنے ٹول میں فانٹ سائز 246 رکھ لیں تو یہ کرننگ پیئر کا فاصلہ وولٹ کے پکسل سائز میں اضافی طور پر بتا دیگا۔

میرے ذہن میں اس پروگرام کا خاکہ کچھ اس طرح ہوگا کہ اسی سکیل پر گرافک ڈسپلے کا استعمال کیا جائے جوکہ فونٹ گلفس کے لیے استعمال ہوتا ہے یعنی کہ em سکیل۔ اگر مجھے صحیح یاد پڑ رہا ہے تو فونٹ ایڈیٹنگ پروگرامز میں 1000x1000 ای ایم گرڈ استعمال کی جاتی ہے۔ میرے خیال میں اسی طرح کی گرڈ استعمال کرکے اور اس پر گلفس کو آگے پیچھے کرکے کرننگ پئیرز حاصل کیے جا سکتے ہیں۔ یہ کوئی خود کار طریقی تو نہیں ہوگا، لیکن اس اچھے نتائج حاصل کرنے کی توقع کی جا سکتی ہے۔
نبیل بھائی یہ آگے پیچھے کرنے والا کام تو ہم مینولی وولٹ کے اندر بھی کر سکتے ہیں۔ البتہ کرننگ پیئرز اتنے زیادہ ہوتے ہیں کہ اگر ہم مینولی یہ کام کرنے بیٹھ گئے تو ساری عمر یہی کرتے رہیں گے اور پیئرز ختم نہیں ہوں گے۔
باقی جہاں تک 1000 em کا سوال ہے تو یقیناً اسکا استعمال آپ نے فانٹ فارج میں دیکھا ہو۔ دراصل زیادہ تر لاطینی فانٹس 1000 em پر ڈیزائن کئے جاتے ہیں ، یوں 120 پوائنٹ پر یہ وولٹ کے پکسل سائز کیساتھ اضافی طور پر میچ کر جاتے ہیں:
b632.gif

جمیل نوری نستعلیق اور دیگر اردو فانٹس چونکہ 2048 em پر ڈیزائن کئے گئے ہیں، اسلئے انکی کرننگ پیئرز میں 1000 em کا پیمانہ کافی مضحکہ خیز قسم کے رزلٹس دیگا :)

کچھ گلفس تو پہلے سے ہی کرننگ کے ساتھ ہیں عارف صاحب۔ان کی boundaries تو گلف سے اندر سیٹ ہیں۔ ان کا کیا کیا جائے۔ یہ تو راہ میں رکاوٹ بن رہے ہیں۔
انکی فکر نہ کریں۔ انہیں ہم فانٹ لیب میں خودکار طور پر درست کر سکتے ہیں ۔ آپ فی الحال ک، گ سے شروع ہونے لگیچرز کو چھوڑ کر باقی لگیچرز پر دھیان دیں :)
 
مدیر کی آخری تدوین:

mohdumar

محفلین
عارف بھائی ذرا اس پر روشنی ڈالیں کہ کل کتنے لگیچر پیئر کا فاصلہ نکالنا ہوگا۔ اگر 18000 لگیچرز ہیں اور ہر لگیچر کا ہر دوسرے لگیچر کے ساتھ پیئر بنانا ہے تو اس کا مطلب ہے18000 کا سکوئر یعنی 324 ملین پیئرز؟ :sick:

کہیں میں بونگی تو نہیں ما رہا ؟o_O
 

arifkarim

معطل
عارف بھائی ذرا اس پر روشنی ڈالیں کہ کل کتنے لگیچر پیئر کا فاصلہ نکالنا ہوگا۔ اگر 18000 لگیچرز ہیں اور ہر لگیچر کا ہر دوسرے لگیچر کے ساتھ پیئر بنانا ہے تو اس کا مطلب ہے18000 کا سکوئر یعنی 324 ملین پیئرز؟ :sick:
ظاہر ہے اتنے زیادہ پیئرز پراسیس کرنا تکنیکی اعتبار سے ناممکن ہے۔ :)
کافی عرصہ قبل محترم ابن سعید بھائی سے بات چیت کے دوران آپ نے اسکام کیلئےایک خاکہ تیار کیا تھا جس میں اردو کارپس کی مدد سے ہائی فریکوئنسی الفاظ کا حصول اور پھر انسے کرننگ پیئرز کی فراہمی کا جائزہ لیا گیا تھا۔ میری التجا ہو گی کہ آپ اپنی مصروفیت میں سے کچھ وقت نکال کر اسکی تفاصیل یہیں پوسٹ کر دیں تاکہ اس پراجیکٹ پر بالآخر عملی طور پر کام شروع کیا جا سکے۔

کہیں میں بونگی تو نہیں ما رہا ؟o_O
اوپر مار کر پوچھ رہیں کہ ماری تو نہیں :)
 

نبیل

تکنیکی معاون
نبیل بھائی یہ آگے پیچھے کرنے والا کام تو ہم مینولی وولٹ کے اندر بھی کر سکتے ہیں۔ البتہ کرننگ پیئرز اتنے زیادہ ہوتے ہیں کہ اگر ہم مینولی یہ کام کرنے بیٹھ گئے تو ساری عمر یہی کرتے رہیں گے اور پیئرز ختم نہیں ہوں گے۔

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