« MLang(Multilingual Language)の続き(3)・・・IMLangCodePages | トップページ | MLang(Multilingual Language)の続き(4)・・・IMLangFontLink »

2008年12月17日 (水)

GetStringTypeEx

最近ブログ書くのさぼってた。モチベーションを維持するのは大変bearing

ということで久しぶりに書いてみる。お題はWin32のGetStringTypeEx。指定した文字列中の各文字に文字情報を取得するAPIである。取得できる文字情報の種類は

  • CType 1(文字種情報)
  • CType 2(左右文字方向情報)
  • CType 3(テキスト処理情報)

の3種類である。CType 1で返される種類は、

CType 1
定数 種類 意味
C1_UPPER 0x0001 大文字
C1_LOWER 0x0002 小文字
C1_DIGIT 0x0004 10進数字
C1_SPACE 0x0008 スペース文字
C1_PUNC 0x0010 区切り記号
C1_CNTRL 0x0020 制御文字
C1_BLANK 0x0040 ブランク文字
C1_XDIGIT 0x0080 16進数字
C1_ALPHA 0x0100 言語上の文字(表音文字・音節文字・表意文字)
C1_DEFINED 0x0200 他のC1_*の文字でない文字

で、ANSI CとPOSIX(LC_CTYPE)の文字種関数をサポートするそうである。また、1度に1種類の情報しか取得できないので、上記3種類すべての情報を取得するにはGetStringTypeExを3回呼び出す必要がある。この種類のAPIはMSDNのマニュアルを参照した方が手っ取り早いので、詳細はここを参照。

ということで、ここでは、実際にこのAPIを使ってみる。いつも通り?各Unicode文字(コードポイントU+0000からU+FFFFまで)に対してどのような結果が返されるか列挙してみる。実行結果は次の通り。

Getstringtypeex1

当たり前のことを書くが上の画像においてコードポイントU+0041の「A」(LATIN CAPITAL LETTER A)の文字に対して、CType 1の大文字であることを表すC1_UPPERフラグがセットされていることがわかる。

まぁ、この種のAPIは結果を実際に目で見て確認した方が早いということで・・

作ったプログラムはここのGetStringTypeEx.zip。以前は、プログラムをココログにアップロードしてたのだが、アップロードできるファイルの最大サイズが1Mバイトまでになってしまったので、MicrosoftのストレージサービスSkyDriveを利用させていただくことにしましたbearing。この際、ブログも引っ越すかな?はは。

ところで、上の画像でChar Info列に各Unicode文字のUnicodeプロパティという情報が表示されているのだが、この情報を表示させるためには実行ファイルGetStringTypeEx.exeと同じフォルダにUnicodeコンソーシアムのサイトからダウンロードできるUnicode Character Databaseの各ファイルを置いてください。具体的には、ここ

  • UnicodeData.txt
  • Scripts.txt
  • Blocks.txt

の3つです。

そいうえば、このプログラムを作ってる時に、Unicode Character Databaseの情報を表示できるビューアみたいなプログラムを作ってみようかなと思いついたgood。というのも、そのようなツールはインターネットで検索すれば何種類か見つかるのだが、自分好みのがほしい。

« MLang(Multilingual Language)の続き(3)・・・IMLangCodePages | トップページ | MLang(Multilingual Language)の続き(4)・・・IMLangFontLink »

Windows」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1497665/39651738

この記事へのトラックバック一覧です: GetStringTypeEx:

« MLang(Multilingual Language)の続き(3)・・・IMLangCodePages | トップページ | MLang(Multilingual Language)の続き(4)・・・IMLangFontLink »

自作ソフトウェア

無料ブログはココログ

メモ