読者です 読者をやめる 読者になる 読者になる

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 と シフ…

「JIS X 0213:2004 対応」の多義性

Windows VistaはJIS X 0213:2004に対応しないらしいを見たり、okuokuさんと話したりして思ったこと。 そもそも、JIS X 0213:2004 ではいくつかのレイヤーを定義している。具体的には以下の通り。 字体 Abstract Character Repertoire Coded Character Set (C…

WAVE DASH

メイリオではU+301CとU+FF5Eのグリフが同一になったようだけれど、この辺を正規化するツールは欲しい気もするなぁ。しかし、正規化する文字のリストアップが面倒な罠。メモ代わりにXML日本語プロファイル 解説の訳

いわゆる半角カナ

Legacy-Encodingのオフラインミーティングに行ってきたわけです。色々話は出ていて、直接関係のある話はMLでしているわけですが、脇道で、いわゆる半角カナの話。 芝野氏曰く「縦書きの時、半角文字は横に寝かせる、全角文字は一文字ずつ縦に並ぶ。だから両…

文字を数える

artonさんの出題と解答例とか。以下のような解き方もおもしろいかな。もちろんUTF-8決め打ちならkconv不要。 require'kconv' "日本語".toutf8.unpack('U*').sizeArray#injectは凄い便利なので、artonさんのString#char_countも以下のように書き換えられます…

UTF-8の正規表現

弾さんのところにUTF-8 vs. ISO-10646というentryが。PerlではルーズなUTF-8のことをutf8と読んでましたね。 というわけで、UTF-8 の文字にマッチする正規表現という話。蛇足になりますけれど、もっと厳密にしますと、最短でないUTF-8表現を除外できるので、…

nkf と rdoc

結城さんに突っ込まれてしまったので、rdocについて。歴史的経緯から、Ruby には RD によるマニュアルの体系と、RDoc による体系が並立しています。さて、NKFや Kconv には ruby-man:NKF や ruby-man:Kconv のように RD によるマニュアルが存在します。しか…

nkf と UTF-32

nkf の UTF-32 サポートに対する需要ってどの程度あるのかなぁ。 微妙に実験的なサポートコードは手元にあったりするんだけど。 とりあえず、UTF-16 の文字コード推測は BOM のみで行っているので、 その辺を変えたコードは遅かれ早かれ入れるつもりなのだけ…

Quoted-printable と "Q" encoding

RFC2045 に規定されている The Quoted-Printable encoding と RFC2047 の The "Q" encoding は微妙に異なるわけですが、それでも問題になることはさほどないと思いきや、-mQ でバグる例が(汗 RFC2049 の mail-safe の要件や RFC2047 section 5 等を見ると、…

nkf 2.0.6に向けてのChangelog

そのうち出すであろう nkf 2.0.6 の覚書 .SH nkf 2.0.6 .PP ひらがなカタカナ変換のドキュメントが逆になっていたのを修正しました。 正しいドキュメントは以下の通りです。 \-h1 \--hiragana カタカナ->ひらがな \-h2 \--katakana ひらがな->カタカナ \-h3 …

nkf (2)

先日なんか書きましたけれど、結局フルサポートする事にしました。 CP932 to UTF-16BE nkf -S -xw16B0 --cp932 UTF-16BE to CP932 nkf -s -xW16B0 CP51932 to UTF-16BE nkf -E -xw16B0 --cp932 UTF-16BE to CP51932 nkf -e -xW16B0 eucJP-ms to UTF-16BE nkf…

skf

なんか散々な結果に・・・。そもそも、system関数を多用するためか、そのままだと動かないかもしれません。skfが落ちてしまう場合は 「log1 +=」や「log3 +=」を 「puts」にしてしまうといいかも。しかし、はやくPerlモジュールにならないかな、なったらRuby…

nkf

なおnkf用の設定はiconvよりもだいぶ条件を緩めてあったりはします。これはiconv等のようにcodesetをきっちり指定して、それに基づいた変換を行うものと異なり、nkfはあくまでSJIS・EUC・JISを指定した上で、ユーザの意図に沿うようにできるかぎりよしなに計…

Citrus iconv (4)

というわけで、さっそく先日の森山さんによるパッチによって、CP932関連の互換性がだいぶ改善されたCitrus iconvを改めてテストしてみました。現在のnetbsd-currentでのテスト結果です。 Unicode to cp932 Convertion Test corrrect: 9359 failed: 1 U+3094:…

Test Encoding Converter

先日のCitrus iconvのテストで用いたスクリプトでは、重複符号化された文字についてのチェックは行われていませんでした。 そこで、今回改めて、IBMのICUやPerlのEncodeモジュールで用いられている、ucm形式のファイルを読み込んでチェックするようにしてみ…

Encode::EUCJPMS 0.05 Released

EUCJPMS.pmを更新し忘れていたので、0.05をリリース^^; 0.05 Thu Oct 13 04:38:29 2005 ! EUCJPMS.pm Fixed: qr/\bcp51932$/i was aliased to '"eucJP-ms"'

Encode::EUCJPMS 0.04 Released

というわけで、0.04をリリース。 eucJP-open もあった方がいいのかな。。。?http://search.cpan.org/dist/Encode-EUCJPMS/ 0.04 Tue Oct 11 03:59:38 2005 ! ucm/eucJP-ms.ucm Fixed: Can't convert User defined characters, duplicated characters, JIS X…

Citrus iconv と CP932

Rubyist Magazine 0009 号にて、 Citrus iconv で Windows の機種依存文字が Unicode に変換できないと書いたら、早速修正してくださいました。ありがとうございます。 src/share/i18n/csmapper/CP/mapper.dir.CP.src src/share/i18n/csmapper/CP/CP932EXT%U…

JIS2004と「字形の変更」

.mjtさんのところで見かけた2004 JIS をめぐる混乱を読んで、頭痛がした。 日本語の文字コードは未だにこんな連中に弄ばれているのか・・・。 > 「区鳥」と「區鳥」とでは、大きく字形が異なる 文脈を読めば、同じ文字だから両方正しい。 規格に準じれば、「…

NetBSD iconv

NetBSDのiconvはCitrusプロジェクトの成果を利用しており、 glibcやlibiconvとは独自の実装なわけですが、 一部の機種依存文字を変換する事が出来ません。とりあずCP932->UTF-8での変換でこける文字を置いておきます。 ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ ㍉㌔…

Character Encoding Model

Unicode Technical Report #17: Character Encoding Modelをまとめたものをメモ代わりに。 複雑な文字コードの概念を整理する際、この文書はなかなかに役に立つ。 Abstract Character Repertoire (ACR) 文字の同一性 these objects are defined by conventio…