SSブログ

VGA コンソールで漢字を出したい [NetBSD]

FreeBSD の kon2 とか、Linux の jfbterm みたいなのが欲しいけど、NetBSD では現在
これ!っていうのがないような・・・
(あったら教えてください)

仕方がないので、ここ↓のパッチを見てみる。
http://www.jp.netbsd.org/ja/JP/ml/tech-pkg-ja/200501/msg00033.html

マルチリンガルと銘打って encoding を切り替えようとしたりしてるのでややこしい。

EUC-JP 固定(3バイト文字なし)で、src/sys/dev/ic/vga_raster.c の
vga_raster_copyrows()
vga_raste_eraserows()
vga_raster_allocattr()
あたりを、2バイト文字でよさげに処理してあげればよさそう。
パッチで加えている
vga_raster_getstride() は使ってない
vga_raster_setencoding() は encoding を切り替えなければいらない。

byteseq_to_dbchar() → ISO-2022-JP の uchar シーケンスから1文字分取ってくる
byteseq_to_dbchar_euc() → EUC-JP/EUC-KR の uchar シーケンスから1文字分取ってくる
結果を、src/sys/dev/wscons/wsemul_vt100.c の vt100_output_normal() で表示
    ここ大事↑

byteseq_to_dbchar_euc() の引数 buf, nbytes の意味がよくわからん
・・・たぶん、
ASCII --> 文字コードを返す。*buf, *nbytes は 0
2バイト文字の1文字目 --> 0 を返す。*buf に入ってきた文字を取っておく。*nbytes は 2を設定。
2バイト文字の2文字目 --> 1バイト目とあわせて jis コードで返す。*buf, *nbytes は 0
2バイト文字の2文字目かどうかは *nbytes が2かどうかで判定

vga_raster_font 構造体の中の、encoding, firstchar, stride, numchars を見る必要があるか?
(とりあえず、なさそう?)
WSDISPLAY_FONTENC_JIS を定義して、vga_rastert_font の encoding に設定する必要があるか?
(WSDISPLAY_FONTENC_PCVT でごまかしちゃだめか?)

wsfont_find() を、width=16, height=16 で呼んでいるところがないのは、大丈夫なのか?

wsfontload(8) に加えた処理のうち、readbdffont() は、参考になる。
wsfontload とは別のコマンドにするのが良さそう。
bdfフォントを、wsfontload(8) で読み込める形式に変換するツールを作るのがいいかも。
kon2 のフォントを読み込んでいる処理も見ておくといいかも。

wscons のガイドも見ておくべし
http://nobug.tukusi.ne.jp/netbsd-guide/trans/chap-cons.html#AEN4160


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0