Re: [問題] 星露谷有人在做繁體中文嗎?
因為有些人對怎麼做簡轉繁的方法有興趣.
對於這部分沒興趣的,現在就可以<-離開了.
-------------------------------------------------------
先簡單講一下, 一開始是有打算把文本也換成繁體.
但是, 昨天卡住了, 因為我沒找出來Chinese-X.xnb的運作方法.
才Post了第一篇文章. 問有沒有人已經做出來了.
如果已經有人在做了, 不太想花太多時間在這上面.
但是, 昨天運氣很好, 突然開竅看懂了Stardew的作法.
也看了大家回應, 才決定只去修改字型檔.
雖然不完美, 但是至少有60分了.
廢話不多說, 開始說技術部分,
等大家了解後, 應該會覺得一點都不難.
裡面最重要的是 XNB Extract 0.2.2
我們需要用這個工具, 去把 xnb 檔案解出來.
以下我自己觀察的結果, 也許不太正確,
如果有人知道更詳細的格式, 也請不吝指教.
SpriteFont1.zh-CN.xnb 會解出
SpriteFont1.zh-CN.yaml 和 SpriteFont1.zh-CN.texture.png
重點是 SpriteFont1.zh-CN.yaml 是描述某個字在 png 檔的位置.
- #!Rectangle
x: 127
y: 57
width: 1
height: 1
會有很多個 Rectangle, 是代表一個一個的字.
而代表是哪個字, 就要看後面的資料了.
- "三" #!Char
- "上" #!Char
- "下" #!Char
- "不" #!Char
這每個字是一一相對應前面的 Rectangle,
所以我就寫個 nodejs 去處理 .yaml 檔,
轉成之後要用的 json 格式,
裡面記錄了每個字的x,y,width和height.
再用新同文堂的資料去做簡轉繁.
然後利用這轉完的資料, 用 html5 的 canvas 去把 png 檔載入,
再用這兩個API去修改png檔.
ctx.clearRect // 清掉原來的簡體字
ctx.fillText // 把新的繁體字寫進去
做完後, 就有新的 png 檔. 然後再使用 XNB Extract 去壓回成 xnb 檔.
SmallFont.zh-CN.xnb 也是類似的處理方法.
而讓我卡住的 Chinese-0.xnb Chinese-1.xnb Chinese-2.xnb Chinese-3.xnb
也是類似的方法, 但最大不同的是描述字體的資料是放在 Chinese.fnt
(因為不太一樣, 所以當初才會卡住.)
格式也是有點不太一樣.
<char id="8273" x="1012" y="0" width="9" height="18" xoffset="6" yoffset="9"
xadvance="22" page="1" chnl="15" />
<char id="9825" x="180" y="40" width="19" height="19" xoffset="1" yoffset="9"
xadvance="22" page="3" chnl="15" />
<char id="12288" x="1022" y="23" width="1" height="1" xoffset="0" yoffset="0"
xadvance="22" page="0" chnl="15" />
id="8273" 這個數字事實上就是 unicode .
以 javascript 來寫, 你可以用下面方式轉回來
String.fromCharCode(8273);
到這邊, 就已經知道某個簡體字的位置.
後面有一個 page="1" 這個數字就是 Chinese-X ,
所以 page="1" 就是放在 Chinese-1.png
這樣就照前面的做法就可以了.
然後修改完 Chinese-X.png, 再壓回去 Chinese-X.xnb 檔.
蓋掉原來的 xnb 檔, 再執行星露谷, 就可以看到改完的結果了.
這就大功告成了. :)
比較完美的做法是重建整個字形檔,
因為我還沒有完全看懂他的格式,
所以這就留待有心人了. XD
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.248.112.188
※ 文章網址: https://www.ptt.cc/bbs/Steam/M.1508591570.A.669.html
※ 編輯: xpulsar (111.248.112.188), 10/21/2017 21:13:59
推
10/21 21:16,
6年前
, 1F
10/21 21:16, 1F
推
10/21 21:16,
6年前
, 2F
10/21 21:16, 2F
→
10/21 21:16,
6年前
, 3F
10/21 21:16, 3F
※ 編輯: xpulsar (111.248.112.188), 10/21/2017 21:17:48
推
10/21 21:38,
6年前
, 4F
10/21 21:38, 4F
推
10/21 21:51,
6年前
, 5F
10/21 21:51, 5F
推
10/21 22:35,
6年前
, 6F
10/21 22:35, 6F
推
10/21 22:49,
6年前
, 7F
10/21 22:49, 7F
推
10/21 22:56,
6年前
, 8F
10/21 22:56, 8F
推
10/21 23:28,
6年前
, 9F
10/21 23:28, 9F
推
10/21 23:29,
6年前
, 10F
10/21 23:29, 10F
推
10/21 23:33,
6年前
, 11F
10/21 23:33, 11F
推
10/21 23:40,
6年前
, 12F
10/21 23:40, 12F
推
10/21 23:52,
6年前
, 13F
10/21 23:52, 13F
推
10/22 00:17,
6年前
, 14F
10/22 00:17, 14F
推
10/22 00:30,
6年前
, 15F
10/22 00:30, 15F
推
10/22 00:42,
6年前
, 16F
10/22 00:42, 16F
推
10/22 01:02,
6年前
, 17F
10/22 01:02, 17F
推
10/22 01:03,
6年前
, 18F
10/22 01:03, 18F
推
10/22 01:05,
6年前
, 19F
10/22 01:05, 19F
推
10/22 01:09,
6年前
, 20F
10/22 01:09, 20F
→
10/22 01:09,
6年前
, 21F
10/22 01:09, 21F
→
10/22 01:10,
6年前
, 22F
10/22 01:10, 22F
推
10/22 01:12,
6年前
, 23F
10/22 01:12, 23F
推
10/22 01:13,
6年前
, 24F
10/22 01:13, 24F
→
10/22 01:15,
6年前
, 25F
10/22 01:15, 25F
推
10/22 01:40,
6年前
, 26F
10/22 01:40, 26F
推
10/22 01:58,
6年前
, 27F
10/22 01:58, 27F
→
10/22 02:11,
6年前
, 28F
10/22 02:11, 28F
推
10/22 02:53,
6年前
, 29F
10/22 02:53, 29F
推
10/22 02:55,
6年前
, 30F
10/22 02:55, 30F
推
10/22 03:34,
6年前
, 31F
10/22 03:34, 31F
→
10/22 03:34,
6年前
, 32F
10/22 03:34, 32F
推
10/22 05:19,
6年前
, 33F
10/22 05:19, 33F
推
10/22 07:33,
6年前
, 34F
10/22 07:33, 34F
推
10/22 08:45,
6年前
, 35F
10/22 08:45, 35F
→
10/22 08:45,
6年前
, 36F
10/22 08:45, 36F
推
10/22 09:35,
6年前
, 37F
10/22 09:35, 37F
推
10/22 10:27,
6年前
, 38F
10/22 10:27, 38F
推
10/22 11:15,
6年前
, 39F
10/22 11:15, 39F
推
10/22 11:17,
6年前
, 40F
10/22 11:17, 40F
→
10/22 11:19,
6年前
, 41F
10/22 11:19, 41F
推
10/22 12:39,
6年前
, 42F
10/22 12:39, 42F
推
10/22 12:44,
6年前
, 43F
10/22 12:44, 43F
推
10/22 14:17,
6年前
, 44F
10/22 14:17, 44F
推
10/22 15:33,
6年前
, 45F
10/22 15:33, 45F
推
10/22 18:37,
6年前
, 46F
10/22 18:37, 46F
推
10/22 23:07,
6年前
, 47F
10/22 23:07, 47F
推
10/23 08:23,
6年前
, 48F
10/23 08:23, 48F
推
10/23 10:14,
6年前
, 49F
10/23 10:14, 49F
推
10/23 11:22,
6年前
, 50F
10/23 11:22, 50F
推
10/23 11:42,
6年前
, 51F
10/23 11:42, 51F
→
10/23 11:43,
6年前
, 52F
10/23 11:43, 52F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 3 篇):
問題
20
31