用.NET列舉本機裡面所有安裝完成的字型名稱
如何正確地把字型名稱列舉出來,一直是困擾著我的事情。例如有時候在寫CSS的時候需要用到font-family時,就要跑到電腦的字型裡面按下右鍵>內容>詳細資料>標題,才能找到字型名稱,重點是看到了名稱也無法複製出來,只能夠手動的逐一打出來。
今天在進行GDI+的時候,又需要再進行一次這樣的蠢事,於是怒爬MSDN找到有InstalledFontCollection這個好用的集合類別,程式碼非常簡單,列在Console下就可以開心地尋找與使用複製貼上大法,再也不用手動打字型名稱了。
列舉本機所有的字型名稱
public static void Main()
{
System.Drawing.Text.InstalledFontCollection oFonts = new System.Drawing.Text.InstalledFontCollection();
foreach (System.Drawing.FontFamily oItem in oFonts.Families)
{ WriteLine(oItem.Name); }
}
列舉出來的畫面如下,都是字型名稱喔!
P.S 這個功能也可以用在排除同一支程式在不同環境下運行的結果,例如Google的「 NotoSansMonoCJK-TC-Regular.otf」這個字型,安裝在Windows Server 2008 with .NET Framework 4.5是無法被列舉的(System.Drawing GDI+),但是同樣的程式搬到在Windows Server 2016就列舉的到,因此我們可以利用這個功能來進行字型是否可被讀取的偵測。