PDA

View Full Version : سوال: قرار دادن یک فونت در دل برنامه



shahabbasic
یک شنبه 18 دی 1390, 00:40 صبح
من میخوام بطور مثال از فونت میترا در برنامم استفاده کنم ولی مطمئن نیستم که ویندوز مقصد این فونت رو داشته باشه از طرفی هم نمیخوام برای برنامه فایل ستاپ بسازم یا فایل خود فونت رو در کنارش قرار بدم
چجوری میشه کاری کرد که فونت یه جوری در خود برنامه وجود داشته باشه و برنامه بتونه راحت ازش استفاده کنه؟

Snoopboy
یک شنبه 18 دی 1390, 01:55 صبح
با ریسورس خود VB میشه هر چی خواستید رو در برنامه قرار بدید
آموزش هم در سایت هست.

shahabbasic
یک شنبه 18 دی 1390, 15:10 عصر
یعنی اگر همون فایل فونت رو در ریسورس ادیتور قرار بدم کافیه دیگه؟

Snoopboy
یک شنبه 18 دی 1390, 15:43 عصر
با کد نویسی باید فراخوانیش کنی که در هنگام لود برنامه در سیستم پیاده شه.

shahabbasic
یک شنبه 18 دی 1390, 16:14 عصر
یعنی حتما نباید در مسیر
systemdrive\windows\font
باشه؟

M.T.P
یک شنبه 18 دی 1390, 17:02 عصر
یه نمونه اینجا گذاشتم ، فونت کنار فایل exe ست. (http://barnamenevis.org/showthread.php?294711-%DA%86%DA%AF%D9%88%D9%86%DA%AF%DB%8C-%D9%86%D8%B5%D8%A8-%DA%A9%D8%B1%D8%AF%D9%86-%D9%81%D9%88%D9%86%D8%AA-%D9%87%D8%A7-%D8%A7%D8%B2-%D8%B7%D8%B1%DB%8C%D9%82-%DA%A9%D8%AF%D9%86%D9%88%DB%8C%D8%B3%DB%8C&p=1294128&viewfull=1#post1294128)

shahabbasic
یک شنبه 18 دی 1390, 17:09 عصر
من از اون نمونه ای که گذاشته بودید یک exe ساختم و فایل فونت رو از کنارش پاک کردم و دیدم که فونت تاهوما رو جایگزین کرد اون نمونه برای اینکه فونت کنارش باشه درسته ولی منظور من اینه که فونت در دل خود برنامه باشه و فایل جداگانه ای کنارش قرار نداشته باشه

M.T.P
یک شنبه 18 دی 1390, 17:44 عصر
منظور من اینه که فونت در دل خود برنامه باشه و فایل جداگانه ای کنارش قرار نداشته باشه

اگه منظورتون اینه که فونت داخل فایل اجرایی ذخیره و از داخل اون خونده بشه بدون اینکه روی هارد استخراج بشه ، نه امکانش نیست.

shahabbasic
یک شنبه 18 دی 1390, 18:39 عصر
شایدم بشه شما از کجا مطمئنی؟

Veteran
یک شنبه 18 دی 1390, 19:00 عصر
توی ریسورس میشه
اما توی فایل exe نمیشه !
==========
به نظر من
هرکسی میاد اینجا یک مطلب رو ارائه میده طبق اطلاعات خودش اون رو ارائه میده
منم الان طبق اطلاعاتی که دارم میگم نمیشه !
حالا شما بگرد به قول خودتون شاید شد

aryasoft2872
یک شنبه 18 دی 1390, 22:25 عصر
API ای برای اینکار وجود داره و نیازی نیست فونت رو نصب کنید توی API Viewer جستجو کنید پیداش می کنید.

اینم مثالش:
لینک (http://www.ex-designz.net/apidetail.asp?api_id=587)

sr2m72
دوشنبه 19 دی 1390, 16:17 عصر
API ای برای اینکار وجود داره و نیازی نیست فونت رو نصب کنید توی API Viewer جستجو کنید پیداش می کنید.

اینم مثالش:
لینک (http://www.ex-designz.net/apidetail.asp?api_id=587)

Private Declare Function AddFontResource Lib "gdi32" Alias "AddFontResourceA" (ByVal lpFileName As String) As Long
Private Declare Function RemoveFontResource Lib "gdi32" Alias "RemoveFontResourceA" (ByVal lpFileName As String) As Long
Dim AppPath As String
Private Sub Form_Load()
AppPath = App.Path
If Right$(AppPath, 1) <> "\\" Then AppPath = AppPath + "\\"
'Add the font to the Windows Font Table
AddFontResource AppPath + "myfont.ttf"
'Write something on the form
Me.AutoRedraw = True
Me.FontName = "myfont"
Me.Print "This is a test!"
End Sub
Private Sub Form_Unload(Cancel As Integer)
'Remove the font from the Windows Font Table
RemoveFontResource AppPath + "myfont.ttf"
End Sub

دوست عزيز در انجا هم فونت بايد كنار برنامه باشه.
اين خط رو مشاهده كنيد.
AddFontResource AppPath + "myfont.ttf"

shahabbasic
دوشنبه 19 دی 1390, 19:24 عصر
برنامه ی ستاپ ساز فونت رو در کنار برنامه نگه میداره و فقط یک شرت کات ازش در مسیر فونت ویندوز قرار میده

SlowCode
دوشنبه 19 دی 1390, 19:28 عصر
شما با چه برنامه ای کار میکنید؟
من چندبار با Setup factory امتحان کردم درست کار میکنه، تا جایی که یادم میاد یه قسمت مخصوص فونت داشت، اگه اشتباه نکم.

aryasoft2872
سه شنبه 20 دی 1390, 23:16 عصر
Private Declare Function AddFontResource Lib "gdi32" Alias "AddFontResourceA" (ByVal lpFileName As String) As Long
Private Declare Function RemoveFontResource Lib "gdi32" Alias "RemoveFontResourceA" (ByVal lpFileName As String) As Long
Dim AppPath As String
Private Sub Form_Load()
AppPath = App.Path
If Right$(AppPath, 1) <> "\\" Then AppPath = AppPath + "\\"
'Add the font to the Windows Font Table
AddFontResource AppPath + "myfont.ttf"
'Write something on the form
Me.AutoRedraw = True
Me.FontName = "myfont"
Me.Print "This is a test!"
End Sub
Private Sub Form_Unload(Cancel As Integer)
'Remove the font from the Windows Font Table
RemoveFontResource AppPath + "myfont.ttf"
End Sub

دوست عزيز در انجا هم فونت بايد كنار برنامه باشه.
اين خط رو مشاهده كنيد.
AddFontResource AppPath + "myfont.ttf"

نمی فهمم چه اصراریه فونت کنار برنامه نباشه ولی خوب برای اونکار هم می تونید فونت رو بزارید تو ریسورس پروژه و از اونجا فراخوانیش کنید.