LV. 23
GP 1k

【心得】有關MV中常出現的字體問題

樓主 粽子 enchnater000
GP15 BP-
大家好,我是Maker製造機的粽子


在遊戲輸出後,是否常出現遊戲中字體突然歪了,或是缺字等等的意外狀況,這篇文章簡單描述MV有關字體的運作,以及對應的解決方法。



我們先來個實例,圖片取自巴哈中的遊戲
【遊戲發布】劇情向傳統RPG-魔界
討論串連結:

先不管這張圖片文字的原意是什麼,但可以看到其中有個字體跟其他字體是不同的。
由作者在推文的回應,也可以看出這不是作者預料之中的事情。


那個,問題出在哪呢?
如果對腳本比較不了解,各位也可以直接拉到底下一點看解決方法,如果想了解腳本的作者,可以跟我一起一步一步往下看


內建腳本的字體選擇部分
這邊先給大家一個概念,內建的文字顯示大部分都是包在Window這個物件底下,
打開rpg_window.js 可以看到這一段
standardFontFace,代表著遊戲中的字體顯示
如果有寫過網頁的朋友不難看出 SimHei Heiti TC , sans-serif是CSS中的設計方式,而這個function 判斷了三中狀況

如果是中文語系採用 “SimHei, Heiti TC , sans-serif” 的字體,如果是韓國語系則是另外一種,在兩者皆非的狀況下則採用GameFont字體

那腳本中的 $gameSystem.isChinese() 又是如何判斷?
打開rpg_object.js 可以查到GameSystem.js 有幾個function
而它們都是透過 $dataSystem.locale 的 regExp去判斷為什麼語系。


別擔心,異世界的語言就快結束了,我們繼續往下追
打開data/System.json這個檔案,可以搜尋到 locale這個關鍵字
可以看到 “locale”:”zh_TW” 的字樣,這個資料是在我們”開啟新專案”時,就會根據開啟的語系產生的資料,所以大部分中文的作者的遊戲都會採用 SimHei, Heiti TC , sans-serif 的字體樣式來顯示文字
依照CSS的特性,我們會先嘗試抓取玩家的電腦中是否有SimHei字體,若沒有則判斷是否有Heiti TC字體,由左而右進行檢查。


也因此,才會出現字體不統一的情形。 (尤其中文字的字量非常大,常常會看到可能大部分的字體沒問題,少部分字體卻會缺字)


我在網路上找過改字體教學,但為什麼沒用?
網路上大部分的教學都會教你到font/ 資料夾底下去改字體,很多作者照做之後卻發現還是有這個問題,那是為什麼?
打開fonts/gamefont.css 檔案觀察一下

可以發現,其實我們丟到fonts資料夾中的字體檔案,只改變了GameFont定義的字體但在Window的判斷中,並沒有去改變 $gameSystem.isChinese() 時套用的字體。


這樣,我們得到了一個結論:
遊戲中的字體會根據System.json中的loacle值改變,而且會由左至右套用。在某些字體缺字的時候,會發生字體不同的問題



那該如何解決? 這邊提供幾種方式:
@ 上網找可以完全改善字體的腳本:
這個部分就不多做解釋,如果有讀者願意提供不錯的腳本也歡迎留言


@ 找出完全支援中文的字體,手動修改讀取字體
1. 先找出你想要用且支援中文的字體 EX: google可以提供的字體 https://www.google.com/get/noto/#sans-hant
#請詳閱各字體的使用規範

2. 修改gamefont.css的字體連結名稱
請注意內建只支援ttf / otf 類型的字體檔案

3. 修改rpg_window.js 中的standardFontSize如下圖
讓所有語系都是return Game_Font (你安裝的子體)
這樣字體就都統一成Game_Font,英文/中文字基本上都不會有問題了



(因為英文只有26字母,多數字體都支援英文,比較不會出現缺字的狀況。)
最後,想特別說明。


這篇主要是簡單讓大家理解RM中字體顯示的判斷方式,還有很多方法都可以讓字體達到統一。文章中有觀念錯誤的地方也歡迎給予指教修正。



原文轉自Maker製造機
15
-
未登入的勇者,要加入討論嗎?
板務人員:

2676 筆精華,10/03 更新
一個月內新增 3
歡迎加入共同維護。


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】