ابھی تک جو ہم تجربات کر رہے ہیں وہ وولٹ میں Pair Adjustment کیساتھ کرننگ کے ہیں۔ جسکا کوڈ کچھ اس قسم کا ہے:
کوڈ:
DEF_LOOKUP "kern0" PROCESS_BASE PROCESS_MARKS ALL DIRECTION RTL
IN_CONTEXT
END_CONTEXT
AS_POSITION
ADJUST_PAIR
FIRST GLYPH "zeh" FIRST GLYPH "reh"
SECOND GLYPH "heh" SECOND GLYPH "yeh" SECOND GLYPH "dal"
1 1 BY POS END_POS POS ADV -200 END_POS
1 2 BY POS END_POS POS ADV -300 END_POS
1 3 BY POS END_POS POS ADV -250 END_POS
END_ADJUST
END_POSITION
END
البتہ وولٹ میں کرننگ کا ایک اور طریقہ Single Adjustment بھی ہے۔ یہ عموماً گروپ کرننگ یا کلاس کرننگ کیلئے استعمال ہوتا ہے۔ اگر ہمارے پاس پیئرز کی ایکزیکٹ کرننگ ویلیو ز نہ بھی ہوں ، تب بھی اس طریقہ سے بہت حد تک درست کرننگ حاصل ہو جاتی ہے۔ اسکے لئے ہمیں نوری نستعلیق کے تمام ترسیموں کی ابتدائی اور اختتامی اونچائی درکار ہوگی۔ یوں ہم مثال کے طور پر منفی 100 پکسل سے لیکر منفی 1000 پکسل تک تمام ترسیمہ جات کو کرننگ دے سکتے ہیں۔ ذیل میں ہم نے تین ترسیموں ’’کر‘‘ ’’کز‘‘ ’’سن‘‘ کو اس طریقہ سے کرن کیا ہے:
ایکسل اسپریڈشیٹ میں ان ویلیوز کو پلاٹ کرنے کے بعد یہ نتیجہ نکلتا ہے:
اس کو پڑھنے کا طریقہ:
اوپر آپ دیکھ سکتے ہیں کہ "سن" ترسیمے کی دائیں اسکیل سے -100 پر اونچائی 931 ہے۔ یعنی "کر" اور "کز" میں اسکے قریب ترین جو اونچائی ہو گی ہمیں اسے اتنا ہی کرن کرنا ہوگا۔ جیسے "کز" میں قریب ترین 973 ہے ، سو اس حساب سے "سن" کی "کز" کیساتھ کرننگ ویلیو -300 ہوئی۔
اسی طرح "کر" میں اسکے قریب ترین 701 ہے یوں اسکی کرننگ ویلیو -800 ہونی چاہئے۔ البتہ آپ بائیں جانب دیکھ سکتے ہیں کہ -800 پر "سن" بیس لائن سے نیچے چلا جاتا ہے، مطلب "کر" کا اختتام جو کہ بیس لائن سے اوپر ہے، سے یہ اس ویلیو پر ٹکرائے گا۔ یوں اسکی بجائے -700 والی ویلیو اسکے لئے زیادہ موذوں ہے۔ اسکی بنیاد پر ہم نے یہ 7 Single Adjustment کرننگ ٹیبلز بنا کر وولٹ میں امپورٹ کر لیے جس میں ہر ٹیبل کو -100 کرننگ ویلیو دی گئی ہے:
کوڈ:
DEF_LOOKUP "kern1" PROCESS_BASE PROCESS_MARKS ALL DIRECTION RTL
IN_CONTEXT
LEFT GLYPH "kr"
END_CONTEXT
IN_CONTEXT
LEFT GLYPH "kz"
END_CONTEXT
AS_POSITION
ADJUST_SINGLE GLYPH "sn" BY POS ADV -100 END_POS
END_ADJUST
END_POSITION
DEF_LOOKUP "kern2" PROCESS_BASE PROCESS_MARKS ALL DIRECTION RTL
IN_CONTEXT
LEFT GLYPH "kr"
END_CONTEXT
IN_CONTEXT
LEFT GLYPH "kz"
END_CONTEXT
AS_POSITION
ADJUST_SINGLE GLYPH "sn" BY POS ADV -100 END_POS
END_ADJUST
END_POSITION
DEF_LOOKUP "kern3" PROCESS_BASE PROCESS_MARKS ALL DIRECTION RTL
IN_CONTEXT
LEFT GLYPH "kr"
END_CONTEXT
IN_CONTEXT
LEFT GLYPH "kz"
END_CONTEXT
AS_POSITION
ADJUST_SINGLE GLYPH "sn" BY POS ADV -100 END_POS
END_ADJUST
END_POSITION
DEF_LOOKUP "kern4" PROCESS_BASE PROCESS_MARKS ALL DIRECTION RTL
IN_CONTEXT
LEFT GLYPH "kr"
END_CONTEXT
AS_POSITION
ADJUST_SINGLE GLYPH "sn" BY POS ADV -100 END_POS
END_ADJUST
END_POSITION
DEF_LOOKUP "kern5" PROCESS_BASE PROCESS_MARKS ALL DIRECTION RTL
IN_CONTEXT
LEFT GLYPH "kr"
END_CONTEXT
AS_POSITION
ADJUST_SINGLE GLYPH "sn" BY POS ADV -100 END_POS
END_ADJUST
END_POSITION
DEF_LOOKUP "kern6" PROCESS_BASE PROCESS_MARKS ALL DIRECTION RTL
IN_CONTEXT
LEFT GLYPH "kr"
END_CONTEXT
AS_POSITION
ADJUST_SINGLE GLYPH "sn" BY POS ADV -100 END_POS
END_ADJUST
END_POSITION
DEF_LOOKUP "kern7" PROCESS_BASE PROCESS_MARKS ALL DIRECTION RTL
IN_CONTEXT
LEFT GLYPH "kr"
END_CONTEXT
AS_POSITION
ADJUST_SINGLE GLYPH "sn" BY POS ADV -100 END_POS
END_ADJUST
END_POSITION
END
فانٹ کمپائلیشن کے بعد ورڈ میں نتیجہ:
یہ طریقہ اس لحاظ سے بہتر ہے کہ اسمیں 24000 × 10 یعنی زیادہ سے زیادہ 2 لاکھ 40 ہزار پیئرز کیساتھ سارا فانٹ کرن ہو سکتا ہے۔ گو کہ نتائج Pair Adjustment جتنے بہترین نہیں ہوں گے البتہ اگر یہ کسی وجہ سے کامیاب نہیں رہتا تو اسکا متبادل گروپ کرننگ کی شکل میں بہرحال موجود ہے۔ نیز اسکے استعمال کے بعد کرننگ پیئرز ہمیں خود نہیں بنانے پڑیں گے بلکہ کمپیوٹوشنلی یہ کام خودکار طور پر الگوردھمز کیساتھ رولز کی مدد سے ہو سکے گا۔ اسکی ایک اورخوبی یہ بھی ہے کہ اسکے ذریعہ اسپیس کیساتھ کرننگ سیٹ کرنا بھی ممکن ہے۔ اب اسکو میس آٹومیٹ کیسے کیا جائے ، اسکا جواب میں کوڈنگ اور امیج پراسیسنگ کے ماہرین کیلئے چھوڑتا ہوں۔
نبیل ابن سعید زیک رانا ابرارحسین عباس اعوان mohdumar