我們有時會希望在應用程式中使用非作業系統預設的字型,而又不希望另外安裝,這時可以把字型檔嵌入到應用程式中使用,也不須煩惱這個字型的安裝問題。
準備工作
(1) 當然是要先下載字型,這邊使用思源黑體作為範例。(使用任何第三方字型前,請先確認其授權使用範圍)
(2) 將字體加入到專案的 Propertites 下的 Resources.resx
(3) 加入完成後的畫面
(4) 接著建立一個工具程式,主要功能為載入字型與作為這些字型被外界使用的公開介面。
public sealed class FontsProxy
{
private FontsProxy() { }
private PrivateFontCollection CreateFonts()
{
var result = new PrivateFontCollection();
var bytes = Properties.Resources.SourceHanSansTW_Bold;
System.IntPtr pointer = Marshal.AllocCoTaskMem(bytes.Length);
Marshal.Copy(bytes, 0, pointer, bytes.Length);
result.AddMemoryFont(pointer, bytes.Length);
return result;
}
private static PrivateFontCollection _fontsCollection;
public static FontFamily[] Fonts
{
get
{
if (_fontsCollection == null)
{
_fontsCollection = new FontsProxy().CreateFonts();
}
return _fontsCollection.Families;
}
}
}
(5) 控制項要使用自訂字型,必須將其 UseCompatibleTextRendering 屬性設定為 True。
(6) 接著要設定控制項的字型屬性,假設我們要應用在 Form1 上所有的控制項,就簡單設定給 Form1.Font 屬性即可,當然,你也可以個別控制項設定。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Font = new Font(FontsProxy.Fonts[0], 15);
}
}
這樣就大功告成,範例圖片如下:
範例程式可點選此處。