プログラミングにまつわることで、思い出したこと、考えたこと、気になること
など、ともかく低レベルでもみっともなくても中途半端でいいからメモを取ろう、
と思うページ(忘れてしまって困るのは己なのだ^^;)
なんか、久しぶりにこの頁を更新。無理にでもかかにゃ。
案の定いっぱい書くこと忘れてしまっているがしかたない、と。
で、これまた久しぶりに cb2tt,cb2ttj(+cb2ttj98) を弄ってみたりしてたのだが、 ttfstub.cpp(正確にはcb2ttj98のttfstubank.cpp)で j2unicodeなる関数を使っているが見当たらないので、 代用関数をでっち上げてみた。 (実はcb2ttjのではWinのライブラリ関数の MultiByteToWideChar を使っていて、 これだと でっちあげる必要はなかったようだ^^;)
といって大層なことでなく、
変換テーブルさえあればええやん、ってしろものだけど。
(s)jis/ unicode(UTF16) 変換テーブルをどうしたか、ってと、
以前作った漢字一覧から
これやこれ
のようなテキストをでっちあげて、
(秀丸)エディタで Unicode形式でセーブし直し(^^;)、
(Unicodeテキストの識別子の先頭2バイトは削除して)
cのデータ形式へコンバートして
やっつけたのだった。
で、チェック/サンプルがてらに シフトJISテキストをUnicode(UTF16)テキストに 変換するツールにしてみたのがこれ。
全角のテーブルは JISコードを元にした 94x94=8836個(約17Kバイト)のもので、 他に SJIS→JIS→連番化の変換が必要だけれど、 スピードが気になるなら SJISに適したテーブルにしたりとか、 Unicode→SJISなら 128Kバイトのベタなテーブルにするとか、 まあ、用途にあわせて作り直せばいいかなで、とりあえず。
これのうち未定義な文字コードについては 秀丸まかせ(てかWin任せ?)で適当なコード(U30FB)になっているが、 テキスト表示してみる範囲ではJISなシフトJISに対応しているぽくて 大丈夫そう、かな。
と、なんとなく自分ででっちあげてしまったけれど(94x94=8836個ある表がほしかったてのもある)、 Unicode変換関係についてはネットで検索すれば結構みつかるよう。
まずは
その他、変換方法やテーブル、問題点についての頁は、
この間からちょくちょく弄ってた
cb2ttj、
結局、たいしたことは出来ずに挫折。
半角カナ対応へ挑戦してたんだけど、ttfようわからずに小手先でいどんでも駄目ですね^^;
ただ、win32のコンソールアプリとしての再コンパイルは できるようにしたので、こちらに 弄ったソース(変更分のみ)を置いときます。 て、単にヘッダで辻褄合わせをするだけなんですが。
元のはMS-C7で16ビットDOS固有の文法やらライブラリ関数やらが使われているのだけど、 _far やら _fmalloc やらはコンパイルエラーですぐわかるが _rotr() が以外と気づけなかったり・・・ けど、これはまだintのビット数の問題だからわかる話なんだが、 一見大丈夫そうに思えた _getw(), _putw() もオイタをしてくれる ようで・・・なんでやねん、でした。
MFCが使われてるので基本的に vc のみかな。以前の市販Cコンパイラだと MFCバンドルしているのもあるのでそういうのでも可能かも (て、cb2ttj は Borland-c v5でコンパイルされてるやん^^;)。 と、フリーのDigital Mars Cなら なんとかなるのか?と試そうとしてmfcのコンパイルに即効挫折。
MFCが必要なのは Array/String 関係のために使ってるみたいだけど、 ttfstub.cpp に関しては実質MFCの機能を使っていないソースのようなんで、 ちょこっと辻褄あわせをして再コンパイルしてみると okのよう。 てことで、ttfssubを bcc32 で再コンパイルできるようにも しました(上記のソースと一緒に同梱)。
しかし問題は、cb2ttのソースの配布元がみつからねえ、ってことですかね。
なんか、cb2ttjの
頁の原作者やソースへのリンクは切れてたりパスワードが必要だったりで。
cb2ttの EXE 自体は VECTORにあるんですが・・・
[2/3追記]と、
こちらの中国?なサイトに
フォント関係のツールが
いろいろ置かれていて、cb2tt.zip,cb2ttsrc.zip もありました。
あと cb2tt は(変換後のフォントを含め)商利用不可ぽいですが、 こちらや こちら などのMLのログのあたりを見る限り、 元が商用フォントでなければ、大丈夫ってことなんでしょうかね。
会社で vc7 を触ってみたら、
forでのスコープを標準C++互換にするオプションが増えていた。
ちょっとうれしい。
と、喜んでたら、知り合いから、じゃあ、こちらの
「VC++6.0 と ISO C++ の違い」
のページの件ははどない?と聞かれてしまう。
見てみると、C++を使い込んでない己には、はあ、な話なんだけど^^;、
とりあえず、そこに示されたサンプルをコンパイルしてみると、