【NVL】預渲染字體設定

這篇是要記錄在NVL裡設定預渲染字體的過程,參考資料有:

 [教學範例] 【KRKR】[教程]關於預渲染字體的設置
KAG教學(補充篇)—字型設定與渲染字型,文字顯示(5)

其實兩篇文章已經寫得很清楚了,但在實際操作上多少會有小問題,把這些經驗記錄下來,以後如果不小心忘記了可以回來參考。

實作環境:
Windows 10 家用版
The NVL Maker 3.85 繁體版

實作預渲染字體之前,先試著在遊戲中一般使用電腦字型的設定,一般來說NVL直接打開所預設的字體是簡體的黑體,所以顯示起來會有部分字怪怪的(如以下之「絕」字)。


NVL_template2

將編輯器打開後,切換到介面設定→主介面樣式,選擇Config.tjs
點選字體設定,並點擊旁邊的按鈕,會跳出字型列表供選擇。點擊確定就算設定完成了。

nvl_font01
nvl_font02  nvl_font03
(這裡改以新細明體作為範例)

但是設定完成後,直接點擊測試運行會發現根本就沒有變化,這也是讓很多人感到困惑的地方(即使重開NVL也一樣)。

要讓設定產生變化的話,先關閉NVL編輯器,並在NVL的根目錄下找到「delete savedata.bat」這個檔案,點擊兩下執行。會跳出一個黑色視窗跑各種指令(此視窗會自動結束),執行完成後再重開編輯器就可以了。
nvl_font04
(有跳出規約視窗就表示暫存檔已經清空了)

以下是設定成新細明體後的結果:
nvl_font05

當然這樣的設定適用於每個人的電腦都有這個字型的時候(如新細明體、標楷體等),但是我們通常會想使用別的字體來搭配整體遊戲風格。

第一種方法是直接把字型檔附給玩家安裝,不過僅適用於有公眾授權的字型(如文鼎中楷繁、思源黑體等)。

第二種則是使用預渲染字體(吉里吉里特有的字體檔案,副檔名是 .tft),也就是透過krkrfont.exe 這個吉里吉里附設的工具來將字型轉換成一系列的字體圖檔,因為字體都已經是圖片了,所以絕對不會有無法顯示的問題。

那再解釋一下預渲染字體的特性,一個預渲染字體(.tft)只能儲存一種大小的字型,所以如果遊戲中需要不止一種字體大小,就需要針對需要的大小來製作對應的tft檔。

舉例來說:我希望在一般對話中使用24級字、強調字使用28級字、小字使用20級字。那麼我就需要三個tft檔案來個別對應這些大小。
nvl_font17

OK,在說明實際設定的方式之前,先來講解如何使用krkrfont.exe來製作.tft檔。

在NVL的根目錄中,有個tool資料夾,krkrfont.exe就在這裡面。繁體版附帶的是日文原版的krkrfont.exe,如果需要簡體版的話可以下載簡體的NVL。
nvl_font06
根據我使用的經驗,有些中文字體在日文版的krkrfont.exe沒有辦法顯示出來(就是找不到這個字體的意思),而簡體版的就可以。所以可能要根據你使用的字體來源來選擇版本。

※註:開啟後是亂碼的話,建議使用 Locale Emulator 來轉換語系,但不轉語系也能正常使用。

nvl_font07nvl_font08
記得打勾「顯示所有TrueType字型」才會有更多選擇。

比方說:像是花園明朝體這個來自日本的字型,拿簡體版的krkrfont.exe會找不到,用日文原版的krkrfont.exe就找得到,反過來也可能會有類似的問題。
nvl_font09
註1:有些字型名稱會以英文名稱顯示,可以仔細找找看。
註2:有@符號的代表直行文字,如果有直行的需求才要選擇有@前綴的字型。

預渲染字體的製作
先在字型列表選擇欲製作的字體,再決定欲輸出的字級大小,可以點擊旁邊的「顯示樣品」來查看字體的內容。建議勾選反走樣處理、包含字體內的所有文字、以及包含外字,粗體可以根據需求勾選。

最後再設定輸出文件欲存檔的位置和名稱,點擊創建就可以得到一個.tft檔了。檔案名稱建議取名易辨識的名稱,包含字體名稱以及字級大小,避免混淆。

例如:font_hanazo24.tft(花園明朝體24級字)

nvl_font10

各種所需字體、字型、字級皆可如法炮製。不過不是所有字型都能輸出,可能是 krkrfont.exe 本身的限制,像是OpenType的字型就不會列在選單當中,可能要另尋其他方式來處理(例如把OTF轉成TTF等)。

一般會建議不要用太多字型樣式在遊戲當中(最大的影響是會顯得過於花俏),但大多情形我們希望在對話中有三種字體大小來呈現不同的對話感。(大字體可以表現音量大或驚訝的情況、小字體可用於角色碎碎念或小聲說話等)

那以下就用思源柔黑體 Normal 來示範,它是根據 OpenType 字體思源黑體修改而來,並改成 TrueType 格式,而因為思源黑體本身支援各國語系,所以思源柔黑體也對繁體中文有完整的支援。輸出設定是除了粗體之外其他都有勾選。
nvl_font20
以下是我用 krkrfont.exe(日文版)產生的三個tft檔:
nvl_font11

接下來就是進行設定了,我們這邊要直接對first.ks設定每個字級大小所對應的字體,因此忽略不設定Config.tjs的內容是OK的(我遇到的情形儘管設定後保存,再打開一次就又不見了,也不曉得究竟有沒有成功設定……)。

首先,打開 first.ks(位在 scenario 資料夾內),

約70行左右可以找到以下程式碼:
;————————————————————
;字體設定
;如果顯示的不是想要的字體,可以嘗試在這裡設定預渲染文字
;————————————————————
[current layer=message0 page=fore]
[resetfont]

在下面貼上以下的程式碼:

;設定預渲染字體
;默認字體:思源柔黑體,字級大小:24
[mappfont storage=”genjyuugothic_24.tft”]
;思源柔黑體,字級大小:20
[font size=20]
[mappfont storage=”genjyuugothic_20.tft”]
;思源柔黑體,字級大小:30
[font size=30]
[mappfont storage=”genjyuugothic_30.tft”]
[resetfont]

在劇本文本輸入當中,可用[font size=30]等指令變換字體大小,這樣就可以達到想要的效果了。以下是呈現效果:
nvl_font15

第二種情形是,我想要在歷史記錄裡用花園明朝體,字體大小是24,可是剛才已經把思源柔黑體的24字級用掉了,這該怎麼辦呢?

其實對KRKR來說,字級本身的設定(也就是font size)跟你對應到的字體包(.tft)裡面的大小有沒有相符是完全沒有關連的,有點像是 font size 的大小只是一種編號,讓你可以方便對應所需要的字型。

不過雖說可以當成是編號來看,可是還是會有「字體高度」的問題,也就是說若設定太小的編號,文字就會擠在一起。所以還是建議使用和字級相符或差異不大的 fontsize。

所以根據我的需求,我將建立好的24字級的花園明朝體做成.tft檔(這裡命名為font_hanazo24.tft)之後,在Config.tjs的歷史記錄填上我要拿來用的編號(這邊是設定19,至於預設字體設定什麼都無妨)。
nvl_font16
而first.ks則加入對應的font size mapping:
;花園明朝體,字級大小:30
[font size=19]
[mappfont storage=”font_hanazo24.tft”]

呈現效果:
這樣就能夠對話框的大字體使用思源柔黑體的24級字、而歷史記錄使用花園明朝體的24級字了。
nvl_font17 nvl_font18
其他多重變化都可以透過這種方式設定,如下圖。
nvl_font19

至於設定失敗的問題,我在測試的時候也常常遇到Orz,明明已經在first.ks都輸入上述對應的程式碼了、也把字體都放進資料夾內了、甚至把編輯器的暫存檔也刪了(但其實與之無關)、還重開機了,可是對話框有變化、但是歷史記錄怎麼樣都沒有變(或是相反)!

20170226更新

後來發現,歷史紀錄的預渲染字體要在 專案目錄\Data\nvl\MyHistoryLayer.tjs 裡約76行的地方,有個 var fontName 的變數,改完這邊的內容才會起作用(需要填寫副檔名)。

yes/no詢問對話框的預渲染字體位置設定則是在 專案目錄\Data\macro\uiyesno.tjs 裡第4行的 face 變數。

要檢查的話就記得在原本設定 Config.tjs 內字體換上非預渲染的字體,若顯示出跟預渲染不一樣的話,那就是沒有對應到。

另一種可能就是,預渲染字體沒有產生成功,可以重新再產生一次設定看看,也許就會有效果了。

 

最後提一下字體的授權問題:
http://tieba.baidu.com/p/2190973042
http://tips.justfont.com/post/113397509827/freeandcarefreefonts

基本上不管是商用還是非商用,使用思源黑體、思源柔黑體、花園明朝體等字型做成預渲染字體是沒有問題的,可以避免一些不必要的法律糾紛。其他還有王漢宗自由字型、文泉驛開源字型等,若有商業或其他需求可能還是要對應的授權條款看仔細才不會有問題。

至於製作介面、圖像用的字體,只要來源合法、擁有對應的使用權就OK。

以下列出有免費字體的網站:
Ubuntu免費中文字體
思源黑體
思源柔黑體
花園明朝體
文泉驛

其他字體推薦單:可免費與商用的漢字字體