寫「
如何建一個視窗—Windows API篇」的時候才開始用巴哈姆特選字型的功能,讓程式碼比較好看,不過選單裡都是Windows專有的字型,試試看在Windows以外看起來會怎樣。
先打這個表。
新細明體 |
請輸入內容 WWWiii |
細明體 |
請輸入內容 WWWiii |
標楷體 |
請輸入內容 WWWiii |
微軟正黑體 |
請輸入內容 WWWiii |
Arial |
請輸入內容 WWWiii |
Arial Black |
請輸入內容 WWWiii |
Comic Sans MS |
請輸入內容 WWWiii |
Courier New |
請輸入內容 WWWiii |
MS Mincho |
請輸入內容 WWWiii |
Symbol |
請輸入內容 WWWiii |
Tahoma |
請輸入內容 WWWiii |
Times New Roman |
請輸入內容 WWWiii |
Verdana |
請輸入內容 WWWiii |
然後用不同平台和瀏覽器開這一頁截圖。
打W和i是為了看是不是等寬字型。
Windows 10,Edge 40
Windows 10,Opera 48.0
Linux Mint 18.2,Firefox 54.0 ![]()
註:Linux兩大桌面環境—GNOME和KDE有開發自己的瀏覽器,不過大部分發行版都把Firefox作為預設瀏覽器。
Linux Mint 18.2,Konqueror 4.14.16
Windows Phone 8.1,IE
Android 5.0,Chrome ![]()
結論:
英數字型的話,以下三種自動換成平台上相近的字型。
Arial → 無襯線
Courier New → 等寬
Times New Roman → 有襯線
其他變成平台上的預設字型,可能用中文字型裡的英數字。
所以在巴哈姆特想更換英數字型的話,儘量只用這三種,否則Windows以外的平台看不到。
中文只有少數情況下能置換,可以想成在Windows以外中文字型會無效。
HTML和CSS規格有建議指定字型的時候,除了專有的字型以外同時指定類型:有襯線(serif)、無襯線(sans-serif)、等寬(monospace),這樣在沒有該字型的情況也能用替代字型顯示差不多的內容。
查過本頁的HTML,設定字型的地方只有<font face="Courier New">之類的,沒有指定上面說的類型,可能那三個字型很常用所以Windows以外的平台有做特殊處理吧。試過在Linux做一個網頁指定那三個字型,Firefox會用系統裡有的字型代替,例如Arial換成Liberation Sans。
另外一件寫那篇時發現的事:空白字元。
空白字元有字碼32和字碼160兩種,160的稱為non-breaking space,按空白鍵打出的是32的,這種放在行開頭會被瀏覽器忽略,要改用160的。
HTML裡的置換碼nbsp;其實也是non-breaking space。
研究結果,在巴哈姆特的編輯器按空白打出的是non-breaking space,通常空白字元可以正常顯示,但有時會有問題。
在「原始碼」裡這樣打
[font=Courier New] WWWiii[/font]
[font=Courier New]WWWiii[/font]
[table border=1 cellspacing=0 cellpadding=2]
[tr][td][font=Courier New] WWWiii[/font][/td]
[td] [font=Courier New]WWWiii[/font][/td][/tr][/table]
在「所見所得」的樣子
![]()
實際顯示
WWWiii WWWiii查看HTML
![]()
空白緊接著[td]的話,空白不會換成nbsp而被瀏覽器忽略,但如果有[font]使空白不是緊接著[td],就可以顯示空白。
還有打半形&有時會出問題,&後面剛好是HTML置換碼的話會換成符號,好像沒有方法避開,用HTML裡的amp也不行,會換成&然後一樣吃掉後面的字,所以如果&後面剛好是gt就無法在巴哈姆特打出來。(打C/C++的指標會碰到這個問題)
可以試試看在原始碼裡打一串「&amp;amp;amp;amp;…… 」(把&改成半形),然後反覆在原始碼、所見所得之間切換看發生什麼事。