新細明體與微軟正黑體

402 views
Skip to first unread message

Jedi

unread,
Feb 2, 2010, 3:17:18 AM2/2/10
to Opera Nalakuvara 三太子
簡單來說,Win XP 上面還是用新細明體比較安全/好看,但是 Vista/Win7 用微軟正黑比較好。

AutoHotKey 可以判斷 Windows 版本是不是 Vista 或之後的版本,所以可以在安裝過程做這樣的判斷,把預先指定為微軟正黑的設
定蓋過去。

判定的方法為使用內建環境變數 A_OSVersion,如果是 Vista 或 Win7 的話,其值就會是 WIN_VISTA,否則就會是下列各
項其中之一:WIN_2003, WIN_XP, WIN_2000, WIN_NT4, WIN_95, WIN_98, WIN_ME

未來版本的 AutoHotKey 是否會讓 Win7 傳回不同的結果,還不知道;另外 Win8 會不會出現,也還不知道。因此安全的作法是這樣
寫:

if A_OSVersion not in
WIN_2003,WIN_XP,WIN_2000,WIN_NT4,WIN_95,WIN_98,WIN_ME
{
....
}

雖然 AutoHotKey 也可以用 IniWrite 來寫入設定檔,但是指定字型需要能寫入 UTF-8 字串,這部份 AutoHotKey
會有問題,所以只好還是用預先準備好的檔案來覆寫。

補綴套件則不做處理,因為使用者可能已經自己改過字型設定了。

可攜式套件因為可能拿去不同版本的 Windows 上面用,所以還是保持在新細明體比較安全。

Jedi

unread,
Mar 3, 2010, 5:09:27 AM3/3/10
to Opera Nalakuvara 三太子
用 Windows 版本判斷出是 XP 的話,萬一使用者其實有微軟正黑體可以用呢?
我現在的想法是可以多加一個判斷,看看字型檔案本身是否存在。如果有微軟正黑體了,就應該會有這個檔案存在:

%WinDir%\Fonts\MSJH.TTF

Jedi

unread,
Apr 8, 2010, 8:48:47 AM4/8/10
to Opera Nalakuvara 三太子
這邊用這樣的規則來處理:

1. 預設用新細明體
2. 如果有微軟正黑體,就把繁體中文的網頁預設字型設成微軟正黑體
3. 承 2.,如果是 Vista / Win 7 的話,連程式介面的字型也設成微軟正黑體

Windows XP 不使用微軟正黑體當做程式介面字型的原因是 ClearType 沒有調教過的情況下,會很難閱讀,所以不適合當做預設值。

實際上的腳本會是這樣:

(已經把使用新細明體的設定檔案都複製好了)
==
; 不宜預設採用微軟正黑體作為介面字型的作業系統傳回值清單
OSVersionNoMSJHList =
WIN_2003,WIN_XP,WIN_2000,WIN_NT4,WIN_95,WIN_98,WIN_ME

; 檢查是否有微軟正黑體可用
IfExist, %WinDir%\Fonts\MSJH.TTF
{
; 根據作業系統版本,檢查介面字型是否宜採用微軟正黑體
if A_OSVersion in %OSVersionNoMSJHList%
{
FileCopyDir, FontsTweak\MingLiU-MSJH\ProgramFiles\Opera,
%OperaInstallPath%, 1
}
if A_OSVersion not in %OSVersionNoMSJHList%
{
FileCopyDir, FontsTweak\MSJH-MSJH\ProgramFiles\Opera,
%OperaInstallPath%, 1
}
}
==

Jedi

unread,
Apr 8, 2010, 1:44:55 PM4/8/10
to Opera Nalakuvara 三太子
在最終釋出的 10.10 SP3 當中,補綴套件也有用到這段腳本,
因為補綴套件僅是去修改「程式預設值」,而不會影響到使用者既有的設定。
(亦即,當系統上有新的使用者要用 Opera 時,就會獲得這樣的預設設定)

另外,由於 Windows XP 對微軟正黑體的處理實在充滿變數,
所以最後決定多加一個使用者詢問,讓使用者選擇要不要用微軟正黑體。

Reply all
Reply to author
Forward
0 new messages