i have code loading custom font resources:
using system.reflection; using system.runtime.interopservices; using system.drawing.text; public form1() { initializecomponent(); loadfonts(); } privatefontcollection loadfont = new privatefontcollection(); private void loadfonts() { stream fontstream = assembly.getexecutingassembly().getmanifestresourcestream("embedded_font.osb.ttf"); 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); loadfont.addmemoryfont(data, (int)fontstream.length); fontstream.close(); marshal.freecotaskmem(data); } private void label1_click(object sender, eventargs e) { label1.font = new font(loadfont.families[0], 9, fontstyle.bold); label1.usecompatibletextrendering = true; } it's ok, works nice, wan't load 2 fonts. i'm trying make 2 same codes, other variables, think not original answer question. how can it? example have osb.ttf (open sans bold) , os.ttf (open sans). what's next? wan't
label1.font = new font(loadfont.families[0], 9, fontstyle.bold); label1.usecompatibletextrendering = true; label2.font = new font(loadfont.families[1], 9); label2.usecompatibletextrendering = true; etc... how it?
thanks in advace
Comments
Post a Comment