ترسیمہ جات کی سورٹنگ پر کام!

arifkarim

معطل
میں نے نبیل بھائی والے پروگرام کو مزید بہتر کیا ہے، اسے آپ اب یہاں دیکھ سکتے ہیں۔
عارف، اس والے ورژن کے متعلق بتائیے کہ کیا اس میں بھی یہ مسئلہ آتا ہے؟
http://pastebin.com/f5fc394f5
جواب کا انتظار رہے گا۔
یہی ورژن ایس وی این میں شامل کر دیا گیا ہے۔

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

محسن حجازی

محفلین
ارے پروگرامنگ کو کس نے کہا صرف پروگرام چلانے کو کہا۔ اور وہ بہت آسان ہے۔

python forntsorter.py mergedfont.ttf
یہ console پر جا کر لکھنا ہے۔
لیکن شاید آپ کہ ہاں اتنا کچھ انسٹال ہی نہ ہو۔
اور بس یہ sortedfont.ttf کے نام سے نیا فونٹ آپ کی خدمت میں پیش کر دے گا۔
 

arifkarim

معطل
ارے پروگرامنگ کو کس نے کہا صرف پروگرام چلانے کو کہا۔ اور وہ بہت آسان ہے۔

Python Forntsorter.py Mergedfont.ttf
یہ Console پر جا کر لکھنا ہے۔
لیکن شاید آپ کہ ہاں اتنا کچھ انسٹال ہی نہ ہو۔
اور بس یہ Sortedfont.ttf کے نام سے نیا فونٹ آپ کی خدمت میں پیش کر دے گا۔

میرے پاس پائتھن اور چیتا انسٹال ہے، کوشش کرتا ہوں :)
 

arifkarim

معطل
ارے پروگرامنگ کو کس نے کہا صرف پروگرام چلانے کو کہا۔ اور وہ بہت آسان ہے۔

python forntsorter.py mergedfont.ttf
یہ console پر جا کر لکھنا ہے۔
لیکن شاید آپ کہ ہاں اتنا کچھ انسٹال ہی نہ ہو۔
اور بس یہ sortedfont.ttf کے نام سے نیا فونٹ آپ کی خدمت میں پیش کر دے گا۔

میں نے ایک مرجڈ فانٹ فائل کو سارٹ کیا تو یہ ایرر آیا:
a198.gif


انبیل بھائی کا سارٹنگ پروگرام اسکی نسبت درست کام کر رہا ہے، البتہ اس میں وہی hmtx ٹیبل كا مسئله، كیا نبیل بھائی اپنا نیا پروگرام یہاں پوسٹ کر سکتے ہیں۔۔۔ شکریہ
 

arifkarim

معطل
عارف اگر ممکن ہو تو لینکس پر آ جائیے

کیا لینکس پر آپکا سارٹنگ پروگرام ٹھیک کام کرتا ہے؟ نبیل بھائی کا پروگرام ونڈوز پربہترین کام کرتا ہے، بس اس میں ایک ٹیبل کا مسئلہ ہے، جسکو انہوں نے درست بھی کر دیا تھا، مگر وہ اپڈیٹڈ پروگرام کوڈ یہاں اپلوڈ نہیں کیا۔ درحقیقت علوی نستعلیق اسی پراجیکٹ کی توصت سے مکمل ہوا ہے:)
 

نبیل

تکنیکی معاون
عارف، میں وہ پروگرام ڈھونڈ کر یہاں فراہم کردوں گا۔ یہ لینکس اور ونڈوز پر ایک طرح سے ہی چلتا ہے۔
 

محسن حجازی

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

یہ پروگرامز لینکس، میک، ونڈوز تینوں پر یکساں چلتے ہیں تاہم لینکس پر ان کے لیے کافی ساری اضافی لائبریرز پہلے سے ہی موجود ہوتی ہیں ادھر ادھر سے اٹھانا نہیں پڑتی ہیں۔
 

arifkarim

معطل
یہ پروگرامز لینکس، میک، ونڈوز تینوں پر یکساں چلتے ہیں تاہم لینکس پر ان کے لیے کافی ساری اضافی لائبریرز پہلے سے ہی موجود ہوتی ہیں ادھر ادھر سے اٹھانا نہیں پڑتی ہیں۔

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

نبیل

تکنیکی معاون
عارف اس کوڈ کو چیک کرو۔

کوڈ:
import os.path

from fontTools import ttLib

Normalized={}
Normalized['A']='1'
Normalized['a']='2'
Normalized['b']='3'
Normalized['p']='4'
Normalized['t']='5'
Normalized['T']='6'
Normalized['C']='7'
Normalized['j']='8'
Normalized['c']='9'
Normalized['H']='A'
Normalized['K']='B'
Normalized['d']='C'
Normalized['D']='D'
Normalized['Z']='E'
Normalized['r']='F'
Normalized['R']='G'
Normalized['z']='H'
Normalized['X']='I'
Normalized['s']='J'
Normalized['x']='K'
Normalized['S']='L'
Normalized['J']='M'
Normalized['v']='N'
Normalized['V']='O'
Normalized['e']='P'
Normalized['G']='Q'
Normalized['f']='R'
Normalized['q']='S'
Normalized['k']='T'
Normalized['g']='U'
Normalized['l']='V'
Normalized['m']='W'
Normalized['n']='X'
Normalized['N']='Y'
Normalized['w']='Z'
Normalized['W']='a'
Normalized['o']='b'
Normalized['h']='c'
Normalized['O']='d'
Normalized['U']='e'
Normalized['u']='f'
Normalized['i']='g'
Normalized['y']='h'
Normalized['1']='?'
Normalized['.']='?'

def getUrduText(strText):
	strResult=''
	for ch in strText:
		strResult+= charMap[ch]
	return strResult

def getNormalized(strWord):
	strResult=""
	count=len(strWord)	
	for c in strWord:
		if(c in Normalized):
			strResult+= Normalized[c]
		else:
			strResult+= '?'
	return strResult

def cmpNormalized(str1, str2):
	strNormalized1=getNormalized(str1)
	strNormalized2=getNormalized(str2)
	return cmp(strNormalized1, strNormalized2)

def sortGlyphs(adict):	
	keys = adict.keys()
	keys.sort()
	return [dict[key] for key in keys]

tt = ttLib.TTFont("mergedfont.ttf", recalcBBoxes=1)


glyphs= tt['glyf']
hmtx = tt['hmtx']


# pre-process the glyphs to delete unnecessary entries

for name in glyphs.keys():
	try:
		strNormalized=getNormalized(name)
	except:
		pass
	
		
# implement the logic to sort the glyphs in the font


keys= glyphs.keys()
keys.sort(cmpNormalized)
	
print "creating data for the output font"
	
del tt.glyphOrder[:]
i=1
for name in keys:
	tt.glyphOrder.append(name)

print "saving output font"	

tt.save('test.ttf')
 

arifkarim

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