PDA

View Full Version : سوال: پیدا کردن مسیر فونتها در ویندوز و کپی فونت مورد نظر در آن



butterfly8528
یک شنبه 23 فروردین 1388, 22:46 عصر
سلام به تمام دوستان و اساتید گل .

من در برنامم از یک فونت استافاده کردم که جزء فونتهای پیشفرض ویندوز نیست و ممکنه در کامپیوتر کاربر وجود نداشته باشه .

حالا من میخام برنامه اول مسیر پوشه فونتهای ویندوز رو بدست بیاره و بعد یک فونت با نام AAA.ttf رو از مسیر برنامه به پوشه فونتها کپی کنه .

لطفا منو راهنمایی کنید . :لبخندساده:

xxxxx_xxxxx
یک شنبه 23 فروردین 1388, 23:35 عصر
f = Environ("windir")
f = f + "\Fonts\"
FileCopy App.Path & "\AAA.TTF", f & "\AAA.TTF"

butterfly8528
دوشنبه 24 فروردین 1388, 01:55 صبح
xxxxx_xxxxx عزیز باز هم مثل همیشه کمک کردی :بوس:

حالا :

1- با کد بالا دیگه برنامه من در سیستم های دیگه که این فونت رو ندارن مشکلی نخواهد داشت ؟ یعنی از نظر فونت همه چی حله ؟

2- حالا اگه بخوام این فونت رو در یک فایل همراه (res) قرار بدم شیوه کار چتوریه ؟

چطور میتونم فونت رو از تو res به پوشه فونتها کپی کنم ؟ :متفکر:

xxxxx_xxxxx
دوشنبه 24 فروردین 1388, 08:29 صبح
فونتها رو وقتي setup درست مي كنيد به خود فايل setup اضافه كنيد.
اگر شما تو برنامه فونت رو كپي كنيد كه برنامه اجرا شده و از فونت هاي موردنظرتون نمي تونه استفاده كنه.
ولي اضافه كردن فونتها به setup يه بدي كه داره اينه كه وقتي برنامه رو uninstall مي كنيد فونتها رو هم حذف مي كنه.(چندان مهم نيست).
و دقت كنيد كه بعضي فونتها رو هم كه به فولدر Fonts كپي مي كنيد بلافاصله نمي تونند استفاده شن و حتماً سيستم بايد restart شه.
پس بهتر همينه كه كلاً فونتها رو به setup اضافه كنيد.
اگر ساير دوستان نظر ديگه اي دارند ما هم استفاده مي كنيم.

Babak.Hassanpour
دوشنبه 24 فروردین 1388, 11:18 صبح
یه روش دیگه هم هست
این API رو اضافه کنید


Private Declare Function AddFontResource Lib "gdi32" Alias "AddFontResourceA" (ByVal lpFileName As String) As Long
بعد میتونید اینجوری ازش استفاده کنید:

AddFontResource App.Path & "\Kufi.ttf"
Label1.FontName = "Kufi"



کپی به پوشه فونت و ریستارت و ازین مسخره بازی ها هم نداره.درجا کار میکنه
این فونت ها رو هم ساپورت میکنه :
fon .fnt .ttf .ttc .fot .otf .mmm .pfb .pfm

butterfly8528
دوشنبه 24 فروردین 1388, 14:51 عصر
یه روش دیگه هم هست
این API رو اضافه کنید

کد:
Private Declare Function AddFontResource Lib "gdi32" Alias "AddFontResourceA" (ByVal lpFileName As String) As Longبعد میتونید اینجوری ازش استفاده کنید: AddFontResource App.Path & "\Kufi.ttf" Label1.FontName = "Kufi"
کپی به پوشه فونت و ریستارت و ازین مسخره بازی ها هم نداره.درجا کار میکنه


babak125 عزیز یعنی با این کار دیگه نیازی به کپی کردن فونت در پوشه فونتها نیست ؟

و سیستم کاربر مشکلی با فونت من نخاهد داشت ؟:متفکر:

Babak.Hassanpour
دوشنبه 24 فروردین 1388, 14:57 عصر
بله دقیقا.ارتباط برنامه با فونت و استفاده ازون درهنگام اجرای برنامه رخ میده.به علت عدم کپی شدن به پوشه فونت ، از سرعت سیستم عامل به علت تکثر فونت ها جلوگیری میشه .می تونید امتحان کنید

butterfly8528
دوشنبه 24 فروردین 1388, 16:05 عصر
babak125 عزیز کار نکرد :گریه:

اگه ممکنه راهنماییم کنید :عصبانی++:

Babak.Hassanpour
دوشنبه 24 فروردین 1388, 16:52 عصر
چطور کار نکرد؟ :متفکر: این رو امتحان کنید

butterfly8528
دوشنبه 24 فروردین 1388, 21:38 عصر
چطور کار نکرد؟ :متفکر: این رو امتحان کنید


باز هم نشد ؟

راه دیگه ای نیست ؟ :عصبانی++:



- حالا اگه بخوام این فونت رو در یک فایل همراه (res) قرار بدم شیوه کار چتوریه ؟

چطور میتونم فونت رو از تو res به پوشه فونتها کپی کنم ؟ :متفکر:

کسی جواب اینو نتونست بده ؟

xxxxx_xxxxx
دوشنبه 24 فروردین 1388, 21:46 عصر
یه روش دیگه هم هست
این API رو اضافه کنید


Private Declare Function AddFontResource Lib "gdi32" Alias "AddFontResourceA" (ByVal lpFileName As String) As Long
بعد میتونید اینجوری ازش استفاده کنید:

AddFontResource App.Path & "\Kufi.ttf"
Label1.FontName = "Kufi"


کپی به پوشه فونت و ریستارت و ازین مسخره بازی ها هم نداره.درجا کار میکنه
این فونت ها رو هم ساپورت میکنه :
fon .fnt .ttf .ttc .fot .otf .mmm .pfb .pfm

اين تابع براي كپي كردن فونت به پوشه Fonts نيست.
وقتي شما از اين تابع استفاده مي كنيد در واقع اين فونت رو تنها به برنامه خودتون مي شناسونيد و تنها تو برنامه خودتون ميشه ازش استفاده كرد و در هربار اجراي برنامه بايد حتما اين تابع فراخواني شه.

Babak.Hassanpour
دوشنبه 24 فروردین 1388, 21:48 عصر
نمی دونم مشکل شما با اون روش چیه ولی اون یه روش استاندارده .
با این :



Sub LoadCustom(Name As String, FileName As String)
Dim myArray() As Byte
Dim myFile As Long
If Dir(FileName) = "" Then
myArray = LoadResData(Name, "CUSTOM")
myFile = FreeFile
Open FileName For Binary Access Write As #myFile
Put #myFile, , myArray
Close #myFile
End If
End Sub
روش استفاده هم به اینصورته:
LoadCustom "101", windir & "Fonts\" & "tahoma.ttf"


البته فرض رو بر این گذاشتم که شما میدونی چطور یه ریسورس اد کنی و اسم اونو 101 بزاری

butterfly8528
دوشنبه 24 فروردین 1388, 22:19 عصر
البته فرض رو بر این گذاشتم که شما میدونی چطور یه ریسورس اد کنی و اسم اونو 101 بزاری

babak125 عزیز من این کارو بلدم .

ولی از کد شما خیلی چیزی حالیم نشد . اگه زحمتی نیست خط به خط و زیر دیبلم توضیح بده :خجالت:

Babak.Hassanpour
سه شنبه 25 فروردین 1388, 08:57 صبح
نمی دونم چرا همه دنبال پروژه آماده هستند :متفکر:
یعنی کپی کردن کد توی یه پروژه جدید اینقدر سخته ؟

به هر حال بفرمایید.

butterfly8528
سه شنبه 25 فروردین 1388, 22:33 عصر
نمی دونم چرا همه دنبال پروژه آماده هستند :متفکر:
یعنی کپی کردن کد توی یه پروژه جدید اینقدر سخته ؟

به هر حال بفرمایید.

babak125 عزیز نه من دنباله پروژه آماده هستم و نه اینقدر خنگم که نتونم کدها رو تو پروژه جدید استفاده کنم ! :عصبانی:



ولی از کد شما خیلی چیزی حالیم نشد . اگه زحمتی نیست خط به خط و زیر دیبلم توضیح بده :خجالت:

من فقط ازت در مورد کدهایی که دادی توضیح خاستم !

حالا هم اگه توضیح 2 خط کد واسه شاگردتون انقدر سخته و سنگین حرفی توش نیست .

از کس دیگه ای میخام که این کارو برام انجام بده :ناراحت:

حدیث داریم که : اگه قصد کمک به کسی رو داری به جای ماهی گرفتن ، ماهی گیری رو بهش یاد بده :افسرده:

mbscreater
دوشنبه 16 بهمن 1391, 08:12 صبح
babak125 عزیز کار نکرد :گریه:

اگه ممکنه راهنماییم کنید :عصبانی++:

یافتم علتش چیه! اسم فایل فونت با اسم خود فونت فرق میکنه! به شکل زیر نگاه کنید:

99512


حالا به این کدها نگاه کنید که آقا بابک نوشتن:





AddFontResource App.Path & "\Kufi.ttf"
Label1.FontName = "Kufi"




در مثال آقا بابک اسم فایل فونت با اسم خود فونت یکیه. اما ما اگر بخوایم از فونت دیگه ای استفاده کنیم؛ باید در خط اول نام فایل آن فونت را بنویسیم و در خط دوم نام خود فونت!
جالب بود، نه...؟!:لبخندساده: