PDA

View Full Version : سوال: مشکل در نصب فونت



CsharpNevisi
دوشنبه 07 مرداد 1392, 23:15 عصر
سلام ... !!!!
من برای لیبیلم یه فونت انتخاب کردم ...... وقتی برنامه رو رو یهسیستم دیگه اجرا میکنم ... با این که فونتو تو پوشه فونت ویندوز کپی میکنم ... ولی بازم فونت لیبل لود نمیشه ... !!!!
چیکار کنم ؟؟
مشکل کجاس ... !؟؟
لطفا راهنمایی کنید ................. ممنون ... !!!

morika
دوشنبه 07 مرداد 1392, 23:21 عصر
برای استفاده از فونت که نباید اون کپی کرد، باید نصبش کرد. اگه از setup برای نصب برنامه تو سیستم مقصد استفاده می کنی معمولا تمام برنامه های ساخت setup یه قسمتی دارن که فونت هارو ازت می گیرن و زمان نصب خودشون اونهارو نصب می کنن ولی اگه می خوای خودت با کد نویسی فونت رو نصب کنی یه نگاهی به این صحفه بنداز توضیح داده که چجوری فونت رو نصب کنی
http://stackoverflow.com/questions/12376159/how-to-install-new-font-on-users-pc-programmatically-using-c-sharp-winfows-form

CsharpNevisi
دوشنبه 07 مرداد 1392, 23:31 عصر
برای استفاده از فونت که نباید اون کپی کرد، باید نصبش کرد. اگه از setup برای نصب برنامه تو سیستم مقصد استفاده می کنی معمولا تمام برنامه های ساخت setup یه قسمتی دارن که فونت هارو ازت می گیرن و زمان نصب خودشون اونهارو نصب می کنن ولی اگه می خوای خودت با کد نویسی فونت رو نصب کنی یه نگاهی به این صحفه بنداز توضیح داده که چجوری فونت رو نصب کنی
http://stackoverflow.com/questions/12376159/how-to-install-new-font-on-users-pc-programmatically-using-c-sharp-winfows-form

همون دیگه .... تو پوشه فونت برنامه ستاپ فونتو میریزم و موقع نصب خودش این کارو میکنه ... !!!!
ولی وقتی مثلا از پوشه فونت فونتی با نام abc رو به برنامه ستاپ انتصاب میدم .. با یه اسم دیگه میاد ... !!

khokhan
سه شنبه 08 مرداد 1392, 02:52 صبح
همون دیگه .... تو پوشه فونت برنامه ستاپ فونتو میریزم و موقع نصب خودش این کارو میکنه ... !!!!
ولی وقتی مثلا از پوشه فونت فونتی با نام abc رو به برنامه ستاپ انتصاب میدم .. با یه اسم دیگه میاد ... !!
چرا توی برنامه embed نمی کنی دیگه نیازی به کپی کردن هم نداری هرجا که برنامه باشه فونتش هم کنارشه

CsharpNevisi
چهارشنبه 09 مرداد 1392, 11:40 صبح
چرا توی برنامه embed نمی کنی دیگه نیازی به کپی کردن هم نداری هرجا که برنامه باشه فونتش هم کنارشه

چطوری این کارو بکنم ؟؟؟؟

ali_hojati_00
چهارشنبه 09 مرداد 1392, 12:42 عصر
http://www.codeproject.com/Articles/107376/Embedding-Font-To-Resources

khokhan
چهارشنبه 09 مرداد 1392, 14:29 عصر
چطوری این کارو بکنم ؟؟؟؟
کاری نداره فونت مورد نظرت رو کپی می کنی توی پوشه پروژه و خاصیت BILT ACTION فونت رو در پراپرتی اش Embedded Resource می کنی

بعد با استفاده از کلاس FontCollectionخاصیت فونت کنترلت رو به فونت الحاقی اختصاص می دی تموم شد


PrivateFontCollection private_fonts = new PrivateFontCollection();


ودر ادامه
string resource = "embed_font.arial.ttf";

Stream fontStream = Assembly.GetExecutingAssembly().GetManifestResourc eStream(resource);

System.IntPtr data = Marshal.AllocCoTaskMem((int)fontStream.Length);

byte[] fontdata = new byte[fontStream.Length];

fontStream.Read(fontdata, 0, (int)fontStream.Length);

Marshal.Copy(fontdata, 0, data, (int)fontStream.Length);

private_fonts.AddMemoryFont(data, (int)fontStream.Length);

fontStream.Close();

Marshal.FreeCoTaskMem(data);
با این کار دیگه نگران فونت کنترلهات نیستی هر کجا برنامه بره فونتش هم داخلشه :لبخند:

این هم نمونه

ma_dy_930
جمعه 11 مرداد 1392, 12:21 عصر
کاری نداره فونت مورد نظرت رو کپی می کنی توی پوشه پروژه و خاصیت BILT ACTION فونت رو در پراپرتی اش Embedded Resource می کنی

بعد با استفاده از کلاس FontCollectionخاصیت فونت کنترلت رو به فونت الحاقی اختصاص می دی تموم شد


PrivateFontCollection private_fonts = new PrivateFontCollection();


ودر ادامه
string resource = "embed_font.arial.ttf";

Stream fontStream = Assembly.GetExecutingAssembly().GetManifestResourc eStream(resource);

System.IntPtr data = Marshal.AllocCoTaskMem((int)fontStream.Length);

byte[] fontdata = new byte[fontStream.Length];

fontStream.Read(fontdata, 0, (int)fontStream.Length);

Marshal.Copy(fontdata, 0, data, (int)fontStream.Length);

private_fonts.AddMemoryFont(data, (int)fontStream.Length);

fontStream.Close();

Marshal.FreeCoTaskMem(data);
با این کار دیگه نگران فونت کنترلهات نیستی هر کجا برنامه بره فونتش هم داخلشه :لبخند:

این هم نمونه


سلام
من از کد شما استفاده کردم ولی در خطا سوم یعنی fontStream.Length پیغام null می ده البته برنامه خودتون مشکلی نشد ولی من فرق ایندو رو نتوسنتم بفهمم که چرا برای شما این زو ایراد نمی گیره
و یه چیز دیگه اینکه اگر چند تا فونت داشته باشیم باید چه کار کنیم

mreza80
دوشنبه 09 دی 1392, 10:38 صبح
با سلام دوست عزیز من هم مشکل کاربر بالا رو دارم یعنی
در خط سوم یعنی fontStream.Length پیغام null می ده امابرنامه خودتون مشکلی نداره من فرق ایندو رو نفهمیدم که چرا برنامه شما کار میکنه ولی برنامه من خطا میده لطفا راهنمائی کنید

khokhan
دوشنبه 09 دی 1392, 16:26 عصر
با سلام دوست عزیز من هم مشکل کاربر بالا رو دارم یعنی
در خط سوم یعنی fontStream.Length پیغام null می ده امابرنامه خودتون مشکلی نداره من فرق ایندو رو نفهمیدم که چرا برنامه شما کار میکنه ولی برنامه من خطا میده لطفا راهنمائی کنید
ای دل غافل :خجالت:
حقیقتش اینه که من یادم رفته بود اون زمون یه نکته کلیدی رو برای دوستان یادآوری کنم:لبخند:
جونم واستون بگه که اولا بایست فونت دلخواه خودتون رو توی پوشه اصلی برنامه اضافه کرده باشین و توی پروژه هم شناخته شده باشه
بعد در Solution Explorer در قسمت پراپرتی فونت مذکور یه گزینه هست با عنوان build action در این پراپرتی بایستی گزینه Embedded Resource رو انتخاب کنین تا اون ارور بوجود نیاد

114621

ارادتمند همگی :لبخند:
(http://www.google.com/url?sa=t&rct=j&q=c%23%20solution%20explorer&source=web&cd=2&cad=rja&sqi=2&ved=0CC0QFjAB&url=http%3A%2F%2Fmsdn.microsoft.com%2Fen-us%2Flibrary%2Fbbck0dh6%28v%3Dvs.80%29.aspx&ei=k3PBUru_HIXV4ASz14HoBQ&usg=AFQjCNHGBX9gGCrvX-qgVBOA8sL3U1ZaFg&bvm=bv.58187178,d.bGE)