PDA

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



krasus
جمعه 22 فروردین 1393, 14:29 عصر
سلام
من برنامه ای ساختم که داخل برنامم از فونت نازنین استفاده می کنم. برای نمایش فارسی ارقام این فونت رو فراخونی می کنم.:تشویق: مثلا برای یک لیبل به صورت زیر عمل می کنم :


PrivateFontCollection private_fonts = new PrivateFontCollection();

public Form1()
{
InitializeComponent();

LoadFont();
label1.Font = new Font(private_fonts.Families[0], 22);
label1.UseCompatibleTextRendering = true;
}

private void LoadFont()
{
// specify embedded resource name
string resource = "embedded_font.NAZANIN.TTF";
// receive resource stream
Stream fontStream = Assembly.GetExecutingAssembly().GetManifestResourc eStream(resource);
// create an unsafe memory block for the font data
System.IntPtr data = Marshal.AllocCoTaskMem((int)fontStream.Length);
// create a buffer to read in to
byte[] fontdata = new byte;
// read the font data from the resource
fontStream.Read(fontdata, 0, (int)fontStream.Length);
// copy the bytes to the unsafe memory block
Marshal.Copy(fontdata, 0, data, (int)fontStream.Length);
// pass the font to the font collection
private_fonts.AddMemoryFont(data, (int)fontStream.Length);
// close the resource stream
fontStream.Close();
// free the unsafe memory
Marshal.FreeCoTaskMem(data);
}


اگر از کد abel1.UseCompatibleTextRendering = true استفاده نکنم از فونت استفاده نمی کنه. حالا مشکل اینجاست که این کد فقط برای بعضی از کنترلها مثل لیبل یا چک باکس و ... هست و با قرار دادن مقدار true برای آن برنامه زبان های آسیای شرقی را که روی سیستم نصب نشده اند ساپورت می کنه اما این کد برای برخی کنترل ها مثل تکست باکس و ... ساپورت نمی شه. من حتی کد [FONT=Helvetica]Application.SetCompatibleTextRenderingDefault(true ); رو توی program.cs برنامم درست کردم و لیبل ها و یا چک باکس هام درست شد اما بازم می بینم که کنترل هایی مثل تکست باکس و یا لیست باکس و ... هنوز از فونت من استفاده نمی کنن.:گریه:
خوب اگه من بخوام تکست باکسهام از فونت داخل ریسورس برنامم (که ممکن هست روی سیستم کاربر نصب نباشه) استفاده کنه چی کار کنم؟:متفکر:(راستی من نمی خوام این مشکل رو با تغییرات در کنترل پنل ویندوز و اینها درست کنم. این برنامه به دست کاربرانی می رسه که فرق ویندوز ۷ و xp رو به زور می فهمه:گیج:حالا اگه بخوام به طرف حالی کنم که تنظیمات ویندوزش رو درست کنه کچل می شم:عصبانی++:)