Char

MS ゴシックの文字幅

こんな場末の日記をわざわざ見に来る方は UAX #11: East Asian Width なんかは当たり前に読み込んでいると思うんですが、読み込んだ人はきっと気づくと思うんです、このドキュメントはあてにならないことに。じゃあどうすればいいかってなるんですが、端的に…

なぜRuby M17NにはUCS-2BEだけがあるのか

ということで、「UCS-2は文字セット」と書いたのは間違いだったけど、ことさらRubyのEncodingに取り入れる必要性があったのかということは引き続き疑問です。 これはruby-devの議論で出た、tkの返すエンコーディング名をRubyで認識して欲しい、というニーズ…

UCS-2はどうバイト列に直すのか

ところが、UCS-2 UCS-4の所を見ると、encoding form としての意味しか書いてなくて、encoding schemeは無い。つまり、バイト列で表す方法が定められていないということか。ううむ、これではエンコーディングと言っても、ファイルに書いたり、通信に使ったり…

CCSとCEFとCESと

前回の続きの解説なのです。 ただ、UTFの所では、encoding form と encoding scheme が区別して書いてあり、実装というか byte sequence で表現する方法は encoding scheme という扱いだ。そして、バイト列にする前の scalar な値で表現する方法が encoding …

UCS-2とは何か

割り切った時点で、この記事ではUCS-2について書くつもりはなかったのですが、UTF-16を説明するにあたって必要と思われたので「今となっては古い方式です」という注釈をつけた上で記述を追加したものです。さて、このエントリはこのおたよりへの返信なんです…

Ruby M17N 事始め:文字コード編

「Ruby Freaks Lounge - 第4回 Ruby M17N 事始め:文字コード編」という記事を書きました。内容としては、種々の文字コード関連の規格をかたっぱしから歴史も含めて解説・・・しようとしたらISO 646シリーズだけで字数が大幅に超過したという。そのため、割…

なぜ long character から wchar_t に変わったか

同じです. そのコードを 日本語 UNIX 諮問委員会では long char と呼んでいました. そして, l は 1 と区別しにくいと言う事情で wchar_t になったと思います. (しかし, long int のほうが余程紛らわしいはずだと思いますが...) http://www.ie.u-ryukyu.ac.jp…

続 wchar_t はいつできたか

http://d.hatena.ne.jp/nurse/20090308 や http://d.hatena.ne.jp/nurse/20090309#1236538767 の続きです。 経緯を熊谷さんがコメントで書いてくださいました。ありがとうございます。というわけで詳細を詰めるわけです。nkf のメンテナの一人である河野さん…

Japanese Application Environment Release 2.0

「JAE 2.0(でたのかな、これそのまんなSVR4 MNLSだったり?)」ですが、リリースされていたようです。 AT&T UNIX PACIFIC RELEASES IMPROVED VERSION OF THE UNIX SYSTEM V Published:02-September-1987 AT&T Co's 100%-owned AT&T Unix Pacific has released …

石田晴久氏による EUC 前史

CiNii で色々探していたら見つけたので以下に引用 我が国で特に関心が高かったのは,UNIX の日本語機能である.表-3 に我が国での UNIX の普及経過を示すが,この流れの中で,1985 年には AT& 社の要請で,筆者を委員長とする日本語 UNIX システム諮問委員…

wchar_t はどこから来たのか

「wchar_tという名前がどの時点で使われるようになったか」ですけど、そりゃー、C++ じゃないの?というわけで C++ からの輸入説を唱えてみる。(これは誤りであった)1986 年に Bjarne Stroustrup の 「The C++ Programming Language」が出版されているので時…

ケータイの絵文字がJTC1/SC2/WG2に提出されたそうですが

ケータイの絵文字がJTC1/SC2/WG2へ@安岡さんちまぁ、思ったことはtnozaki さんと同じなので略す。しかし、描いてくださった Apple の方には悪いが、この例示字体和風テイストに描き直して欲しいわ。

日本語EUCの歴史

EUC-JP の歴史ではないことに注意していただきたい、EUC-JP には (おそらく) JIS X 0212、つまり補助漢字を含んだもの (UI-OSF 日本語環境実装規約 Version 1.1 の AJEC。とは言ってもこれは追認規格だったらしい) のことだろうが、「日本語 EUC」といった場…

いつ誰がEUCを作ったか

のざきさんの 「AT&TがEUC(Extended UNIX Code)をUNIXの文字符号化手法として使うようになったのって正確にはいつからなんですかね」 について。FreeBSD 4.6.2 からのわたしが解説しますよ。結論からいえば 1985 年で、この年に System V Release 2*1 に対す…

Rubyist Magazine 0025 号

Rubyist Magazine 0025 号 がでました。今回は事実上 Ruby 1.9.1 リリース記念号と化しています。 わたしも久しぶりに Ruby M17N の設計と実装 という記事を書いています。「〜の設計と実装」というタイトルはよく BSD 方面で用いられているもので、「The De…

Last Resort Font

頼みの綱のフォント(Last Resort Font)@PDF 千夜一夜より。Last Resort Font@Apple どうも Apple 由来らしい、まぁ、そこは Unicoder の巣窟だから。。。 これって、ある意味 Arial Unicode MS の再来なんだろうな。 ていうか、Arial Unicode MS@Wikipedi…

Counting UTF-8 characters with word

こちらも search non ascii 同様にワード単位で見れば早くなります。具体的には、そもそも UTF-8 は trail byte が [\x80-\xBF] に限定され、またこの範囲は lead byte には出現しません。つまり、バイト列の中から、0b10xxxxxx 以外のバイトの数を数えれば…

Counting UTF-8 characters

前回はこれの枕のはずだったのに間があいてしまった・・・。さて、まぁ、UTF-8でエンコードされたバイト列に含まれる文字数を数えたい場合、やり方はいくつかあります。 一つはUTF8の文字数を数える手法の検討にあるように最初のバイトを table にいれて文字…

Shift_JIS 風 UTF-8 と CP932 風 UTF-8 の正規化

str.gsub!(/\xC2\xA2/, "\xEF\xBF\xA0") str.gsub!(/\xC2\xA3/, "\xEF\xBF\xA1") str.gsub!(/\xC2\xAC/, "\xEF\xBF\xA2") str.gsub!(/\xC2\xA6/, "\xEF\xBF\xA4") str.gsub!(/\xE2\x80\x94/, "\xE2\x80\x95") str.gsub!(/\xE2\x80\x96/, "\xE2\x88\xA5") str…

AU 絵文字と Unicode

KDDI/AUでutf-8のHTMLフォームから送られてくる絵文字コード なんてものを発見したのでメモ。気が向いたら対応しよう。でも、本当になんであんな変な並びにしたのかね。

Ruby から Win32API を叩いて文字コード変換

意外と需要があるんじゃないかと思って書いてみた。Ruby 1.9 用です。Codepage は Code Page Identifiers あたりを見ればいいのですが、この API では全て叩けるわけじゃないので、改めて MLang 版を書くかも。

MacJapanese と CP10001

おそらくそれなりに需要があると思われる Macintosh の SJIS (MacJapanese) ですが、Windows の SJIS (CP932) とは結構違います。しかもただ異なるだけでなく、Unicode 間での変換においては、56 件の多対一変換が必要となり、一対一変換を前提としたプログ…

replace or fallback

iconv(3)レベルで考慮すべき問題 前回の続き「iconv(3)レベルでも考慮すべき問題があるのかな」とのことですが、あるのではないかなぁ。置換文字に置き換えて続行するか、エラーを出して止めるかは用途によって変わるでしょう。例えば変換してみてエラーが出…

Unicode Normalization

nkf に Unicode 正規化を実装して欲しいという要望がどれだけあるのかはわからないし、実際に実装するとなると nkf のバイナリサイズがだいぶ増えるがネックとなる。けれども、一応勉強しておくのはいいだろうということで、とりあえず Ruby で Unicode 正規…

skf.so

MinGW でも動くようになったので安心し、ふと NetBSD でコンパイルしようとする・・・と、失敗する。えーーー。とりあえず NetBSD の make が skf の Mac OS X 対策に当たってエラーをはいていることが判明。 しかし、まだエラーは止まらない。なんで RSTRIN…

Beyond the BMP

[ruby-list:42792] で nkf が BMP 外を捨てる件について指摘されてしまった。一応 JIS X 0213 対応の準備のために手はつけていたので (もっとも、この手の大規模な改修は手をつけてみるものの失敗して投げ捨てるのを繰り返すのはお約束)、1 日でおおむね動作…

Encode::EUCJPMS 0.07 Released

eucJP-ms エンコーディングが使えなくなっていたので修正。ついでにテストを追加してみる。

skf

skf ってご存知ですか? http://sourceforge.jp/projects/skf/ なのですが、nkf よりオススメですよ(ぉぃ 次のバージョンアップで ruby extension も追加されるので、 Ruby/NKF の代わりにもなります。 require 'skf' SKF.guess("", "\x82\xA0") #=> "sjis"…

Vista の MS UI Gothic

Windows Vista では MS ゴシック や MS 明朝 のフォントがある条件で全面的に変わるのですが、それを見てみました。Vista版の MS UI Gothic だと WAVE DASH が変わっていたり、各種漢字が収録されたりといった変更が行われています。が、それ以外にも、…

Microsoft IME 2007 の JIS X 0213 と Unicode の対応

Microsoft IME 付属の IME Pad はカナ漢字変換では入力しづらい文字を入力するための手段ですが、これには手書き文字認識や部首画数などに加えて、文字一覧という選択方法があります。参考: IMEパッドの文字一覧を利用して入力する 従来では Unicode と シフ…