Re: [分享] 懷舊一下 jmcce 1.5

作者: descent (「雄辯是銀,沉默是金」)   2015-08-11 20:35:25
https://youtu.be/X0CvqYSBHak
上述影片會 cat 出 b 檔案的內容, 有簡體中文、繁體中文、日文, 呼 ... 總算出來了
, 心中的興奮到現在還不能忘。
之前支援 utf8 是轉成 big5 再由原本的 code 秀出, 實在太蠢了, 不過要徹底改造
jmcce 完全支援 utf8 可不是只有編碼的困難, 還得把底層的字型系統換掉, 因為其原本
的字型是用 big5 去查詢該字型的 bitmap, 所以無法支援 utf8, 之前我只能用 utf8 轉
big5 來支援 utf8。
那該怎麼辦呢? 我使用了 freetype2 並搭配 unifont.pcf.gz 這個字型,
unifont.pcf.gz 剛好是 8x16, 16x16 的字型, 剛好可以套在 jmcce 640X480 的環境上
, 我可以先避免計算字型大小、位置等問題。而且他是 unicode 字型, 用這一個就可以
秀出簡體中文、繁體中文、日文, 不需要去切換不同字型, 程式寫起來比較簡單。
再來是 unicode 編碼問題, 使用 freetype2 需要能將 utf8 轉 ucs-4, 我為這問題苦思
許久, 還用上 qt qstring (為了使用 qstring 要 link qt, 怎麼都覺得不划算), 好在
c++11 的即時到來解了我這問題。c++11 提供了 utf8 轉 ucs-4 的程式庫, 不過 gcc 得
用 g++-5 才支援, clang 則需要在安裝 libc++, 而又好在 g++-5 的到來, 我省了些麻
煩。
改寫 hztty_write() [console.c], 換掉其中的 draw_hanzi_char(),
draw_ascii_char() 搭配 freetype2, 總算有了目前的成果。
unifont.pcf.gz 是 bitmap 字型, 所以沒有 anti-alias, 字型沒那麼美觀, 不過這是巨
大的一小步, 能完成他, 我覺得很有成就感。
不過閒暇時間不多, 要能完成到可以使用, 可能要花上一段很久的時間, 現在問題還蠻多
了, 而且 linux framebuffer 我實在不熟, 老是畫錯 pixel 的位置, 雖然有
virtulbox 可以方便 debug, 但還是得花上不少時間。
其實 fbterm 已經做得很好了, 也有輸入法可用, 在穩定度實用性都勝過 jmcce 不少,
字型支援也比較好, 顯示速度也贏 jmcce 不少 (以 linux framebuffer 顯示來比較),
我在想我有必要把時間花在 jmcce 上嗎? 也罷! 就讓 jmcce 先停留在 1.6 α 好了。
fbterm
apt-get install arphic* fbterm fbterm-ucimf
arphic* 會把 fbterm 需要的中文字型裝起來。
作者: wgst88w (清楚明「熙」)   2015-08-13 09:44:00
夭壽~fbterm相依的packages多達50幾個,純Terminal還是jmcce比較單純。

Links booklink

Contact Us: admin [ a t ] ucptt.com