2012年12月7日 星期五

[學習] 取得系統環境路徑 Fonts 並且判斷系統字型是否存在

問題:
得知應用程式所安裝的系統OS(Win32)下~
系統字型是否存在著型某種字型~

解決:
Imports System.IO
        '取得環境路徑 fonts 系統字型資料夾
        '.NET Framweork 4 版本之後 才有 fonts
        'Dim strAns As String = Environment.GetFolderPath(Environment.SpecialFolder.fonts)

        ' get parent of System folder to have Windows folder
        Dim dirWinFolder As DirectoryInfo = Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.System))
        'DirectoryInfo dirWindowsFolder = Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.System));

        ' Concatenate Fonts folder onto Windows folder.
        Dim strFontsFolder As String = Path.Combine(dirWinFolder.FullName, "Fonts")
        'string strFontsFolder = Path.Combine(dirWindowsFolder.FullName, "Fonts");

        'Results in full path e.g. "C:\Windows\Fonts"
        'MsgBox(dirWinFolder.Parent.Name) 'C:\
        'MsgBox(dirWinFolder.Name) 'Windows
        'MsgBox(strFontsFolder) 'C:\Windows\Fonts

        '判斷是否存在字型
        Dim strFullPath As String = strFontsFolder & "\dftt-b5.ttf"
        If File.Exists(strFullPath) Then
            'MsgBox("存在!")
        Else
            File.Copy(Application.StartupPath & "\dftt-b5.ttf", strFullPath)
        End If

備註:
因為系統載入後,當系統無應用程式所使用字型時。
即使將字型COPY到系統字型資料夾,應用程式依然是使用預設字型。
因為應用程式字型設定在於COPY之前。

第二次開始應用程式,程式才會真正LOAD到 dftt-b5.tff 字型檔。

解決辦法:
(1)在程式中解決? 如何在應用程式設置字型之前COPY到系統字型資料夾?
(2)將字型檔直接包在應用程式安裝檔,並指定字型安裝路徑為系統字型資料夾路徑。
    那路徑設定怎麼設定?
(3)解決(1)辦法...(不是很好的辦法)
    在COPY完成後,將所有使用到此字型的控制項 or others...
    其字型指為 dftt-b5.tff,還沒試,應該可行一 一?

參考:
VS 2008
.Net 3.5
Environment.GetFolderPath Method (Environment.SpecialFolder)
How to get the path to the Windows fonts folder?
How to get the path to the Windows fonts folder?
Finding Font Filename from Font Title
Font Installation (copying file into Fonts directory from server to user's machine)
copy a font file in my programm resources to windows fonts
How do I install a font on a user's machine in VB.NET so applications like Word can use it?
VB.NET修改host文件
获取ALL USER 的特殊目录的类
如何获取系统下字体的路径?
如何判断使用者电脑中系统字型大小?
查知目前系統字型大小?
抓系統字型設定問題
取得電腦內部所有安裝字型
程式的啟動與載入
c# 獲取相對路徑
取得目前執行程式的目錄

沒有留言:

張貼留言