Windows SDKレベルでのJIS X 0213:2004対応<br />今あるソースをどうやってマイグレーションしよう?<br />Codeseek & こみゅぷらす勉強会<br />2007/1/30 K.Kamegawa<br />
Agenda<br />文字に関する基礎知識<br />JIS X 0213:2004のインパクト<br />開発環境構築<br />Windows SDKでどうすればいいの?<br />移行シナリオ<br />問題点<br />
文字に関する基礎知識<br />これを知っておかないと調べてもわからない<br />
基本用語(文字コード)<br />文字コード(符号化文字集合)<br />文字集合に特定の符号を与えたもの。JISでは「面-区-点」という呼び方。「亜」は1面16区1点<br />代表的な規格<br />
基本用語(文字集合・字体)<br />文字集合<br />規格で採用される文字の集まり。文字セットといわれる。ヷ(Unicodeのみ)  VS ヴ(JISとUnicodeにある)<br />存在しないものは外字<br />字体(グリフとも呼ばれ...
基本用語(符号化方式)<br />文字をコンピュータ内部などで使用するために変換されたビット列のこと。<br />代表的な符号化方式<br />Shift_JIS<br />ISO-2022-JP(いわゆるJISコード)<br />EUC-JP...
基本用語(包摂規準)<br />「同じ文字」とみなす基準<br />見掛けが異なる字を同じとみなすための指針<br />JISで規定される<br />例<br />一点しんにょうと二点しんにょう<br />「高」と梯子高<br />草冠の差(つ...
JIS X 0213:2004のインパクト<br />文字コードの歴史、なぜJIS X 0213:2004になったか、今のままではなぜいけないのか?<br />
WindowsとUnicode<br />Windows NT 3.1はUnicode 1.0を使って実装された世界最初の商用OS<br />OSではないが、JavaもUnicode採用して1991年登場<br />Unicode 1.0はUT...
現在のWindowsとUnicode<br />1996年拡張面をサポートしたUnicode 2.0が制定。<br />Windows 2000はUnicode 2.0で実装。<br />Unicode 1.0はBMP(0群0面の基本面)のみ。...
そもそもJIS X 0213:2004って?<br />JIS X 0208以来の改訂(Windows XPはJIS90+補助漢字)<br />4354字が追加され、11233字<br />JIS X 0208を包括したスーパーセット<br /...
開発環境構築<br />作るためには何が必要か?<br />
これがないとはじまらない<br />Windows SDK(最新版はVista対応6000.0)<br />Visual Studio 2005 Express Edition以降(MFC使う場合はStandard以上)<br />MFC使う場...
Visual Studio 2005セットアップ<br />忘れずに追加しているかな?<br />
Windows SDKではどうすればいいの?<br />今までUnicodeを毛嫌いしていたんだけど…<br />
まずUnicode対応<br />好むと好まざるとにかかわらず、JIS X 0213:2004フルサポートするならやる。<br />字体の変化の許容度合を確認する<br />一般のオンラインソフトなどでは特定用途を除いて字体は無視した方が良い(...
Unicodeの私用領域<br />プライベートエリア。つまり外字として使える。<br />BMP(U+E000~U+F8FFの6400文字)<br />15面(U+Fxxxx)<br />16面(U+10xxxx)<br />RichEdit...
ソース確認<br />Unicode対応する場合、まずソースの確認。<br />C言語伝統の型(char)では対応できない。<br />wchar_t型の追加<br />Unicode固定文字列はL”文字列”へ<br />wchar_tは2by...
従来のメンテナンス<br />C/C++では良くも悪くもプリプロセッサの恩恵がある。<br />ソース自動変更、APIや対象構造体を自動的に置換。<br />余談:wchar_tをサポートしていない環境ではunsigned shortに置換され...
Unicode対応の第一歩<br />Windowsで定義されている型を使いましょう。<br />charからTCHARへ<br />明示的にUnicodeを格納しなければならないところはWSTR,WCHAR型<br />固定文字列はTEXTマ...
Unicode対応する第二歩<br />Windows APIの自動変換をあてにする。<br />実はC/C++よりもdeclareを書かなくてはならなかったVBユーザのほうがなじみが深い<br />構造体は気をつけよう<br />int WI...
Unicodeの特殊文字をプログラムで抑止<br />IMEからの入力の場合<br />WM_IME_COMPOSITIONメッセージがコントロールに送られるので、メッセージ内で判定する。<br />静的解析<br />エディットコントロールご...
コード解析の難しさ<br />文字の自動解析はかなり難しい<br />どうしても符号化の間で重なるところがある<br />超有名なShift_JISのと0x5c(2byte目に出てくる)<br />ISO-2022-JPの場合、ESC+SHIF...
美乳効果で自動判定ミスを防ぐ<br />
Windows APIの文字判定<br />IsTextUnicode()<br />バッファにUnicodeがあるかどうか判定する(複数指定可能)<br />IS_TEXT_UNICODE_STATISTICS, IS_TEXT_UNICOD...
Shift_JISからUnicodeへ<br />MultiByteToWideChar()<br />MultiByte(Shift_JIS)からUnicode(UTF-16)へ。UTF-7/8も指定できる。<br />COMのAPIを呼ぶと...
UnicodeからShift_JISへ<br />WideCharToMultiByte()<br />通常、Unicodeの方が文字が圧倒的に多いので、変換の際は気をつける<br />WC_NO_BEST_FIT_CHARSを指定するべき<b...
完全な変換?<br />中だけ、外だけ対応すればいいのでは?<br />内部処理をUnicode(外部Shift_JIS)<br />内部処理をShift_JIS(外部Unicode)<br />あまりお勧めできない<br />
ラウンドトリップ問題<br />UnicodeとShift_JISの対応は1:1ではない。<br />NEC選定IBM互換文字とIBM拡張文字<br />変換テーブルの問題<br />WAVEDASH,YEN-SIGN(有名なところ。ほかにもあ...
結合文字<br />カ(U+30AB)+゛(U+3099)でU+30ACの「ガ」と同じ意味。<br />アクセント記号も同様にΑ(U+0391)+ ΄(U+0384)でΆ(U+0386)をあらわす。<br />比較などを行う際は注意が必要。<b...
文字の正規化<br />結合文字と構成済み文字の比較時に必要<br />NormalizedString()<br />IsNormalizedString()<br />Windows SDKの問題<br />libファイルが間違っている(涙...
使うとはまるAPI<br />CharPrev/CharNext<br />lstrlen(もちろんCRTのstrlenも)<br />StringCchLength<br />結合文字・サロゲートペアに対応していない(BYTE単位->WORD...
グリフを混在させる<br />OpenTypeのFeature Tagを使って字体の切替<br />ただし、対応フォントのみ<br />Win32では国際化APIのUniscribeを使う<br />VistaではOpenType用のAPIが追...
UniscribeのOpenTypeを使う<br />Feature Tagを使う場合必要<br />使わない場合は従来のAPIでOK<br />VistaでOpenTypeのTagを使うAPIが追加<br />C/C++ではマクロ定義を忘れず...
OpenType Tagのレンダリング<br />基本的には従来のUniscribeと変わりなし<br />ScriptShapeOpenTypeでグリフを生成<br />ScriptPlaceOpenTypeでグリフの位置を生成<br />S...
で?<br />UniscribeのOpenType対応難しいです。<br />普通の人は考えない方がいいです。<br />デモ作ろうと思ったけど間に合いませんでしたorz。<br />
Unicode時代のセキュリティ<br />Shift_JISではなかったようなこと<br />
セキュリティ<br />UnicodeにはShift_JIS時代には考えもしなかった制御コードがある。<br />真面目に実装すると、GUIでユーザをだませる。<br />見えない文字(ゼロ幅文字)<br />双方向性機能(Bidi)<br />
特殊記号を入力する<br />エクスプローラから右クリックして「Unicode制御文字の挿入」<br />
でもコマンドプロンプトでは<br />ゼロ幅文字が1byteの空白になるので、すぐばれる。<br />まじめにチェックするしかない<br />
移行シナリオ<br />今ある資産はどうしよう?<br />
突然Vistaがやってくる<br />入力された文字が表示されない。<br />Vistaで追加された文字はXP/2003で見えない。<br />あれ、こんな文字だっけ?<br />いくつかの文字の字体が変更された<br />印刷字体への変更<...
フォントのインストール<br />Vistaに提供されるVer 2.5フォントを使う<br />MSゴシックとMS明朝のみ<br />メイリオは提供されない(5.0のみ)<br />JIS90グリフにはない文字もある<br />でも全部にインス...
問題点<br />気をつけておかないとはまりそうです<br />
MS IME2007のUnicode候補<br />MS IME 2007ではJIS X 0213:2004文字も変換候補に出てくるようになった<br />2007 Office SystemおよびVista内蔵のIME<br />
各フォントにおける字形の差<br />Microsoftの公開情報によると、JIS X 0213:2004対応で文字の追加、字形変更が発生した。<br />だがしかし<br />
二つの字の差を探してください<br />XPのMSゴシック2.3<br />Vistaの互換フォント2.5<br />どこに違いがあるんでしょう…<br />これも字形の差だそうです<br />
コマンドプロンプト<br />cmd.exeはコードページ932(cp932)で動作<br />Unicodeにしかない文字は入力できない<br />chcp 65001でUTF-8(でも日本語でない…)。<br />おそらくはいまだに残るDO...
参考資料<br />はせがわさん(http://d.hatena.ne.jp/hasegawayosuke/)<br />それ Unicodeで – TEXT HUCKS<br />小形克弘さん<br />「文字の海、ビットの舟」(http:/...
Special Thanks<br />本資料をレビューしていただいたりばてぃさん(http://cs.gogo-asp.net/blogs/libaty/default.aspx)<br />
ありがとうございました<br />
Upcoming SlideShare
Loading in …5
×

JIS2004 with Windows SDK

3,330 views

Published on

JIS X 0213:2004をWindows SDKレベルでどうやって対応しようかというプレゼンしたときの資料です。2007年に作ったものですが、今でもあまり変わらないはずです。

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,330
On SlideShare
0
From Embeds
0
Number of Embeds
205
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

JIS2004 with Windows SDK

  1. 1. Windows SDKレベルでのJIS X 0213:2004対応<br />今あるソースをどうやってマイグレーションしよう?<br />Codeseek & こみゅぷらす勉強会<br />2007/1/30 K.Kamegawa<br />
  2. 2. Agenda<br />文字に関する基礎知識<br />JIS X 0213:2004のインパクト<br />開発環境構築<br />Windows SDKでどうすればいいの?<br />移行シナリオ<br />問題点<br />
  3. 3. 文字に関する基礎知識<br />これを知っておかないと調べてもわからない<br />
  4. 4. 基本用語(文字コード)<br />文字コード(符号化文字集合)<br />文字集合に特定の符号を与えたもの。JISでは「面-区-点」という呼び方。「亜」は1面16区1点<br />代表的な規格<br />
  5. 5. 基本用語(文字集合・字体)<br />文字集合<br />規格で採用される文字の集まり。文字セットといわれる。ヷ(Unicodeのみ) VS ヴ(JISとUnicodeにある)<br />存在しないものは外字<br />字体(グリフとも呼ばれる)<br />文字の形を定義する。JISでは例示字体を定めている。<br />JIS X 0208では簡体字の方向。<br />JIS X 0213から印刷標準字体へ変更。<br />異なる文字に見えても同じ文字とみなされる場合がある。<br />
  6. 6. 基本用語(符号化方式)<br />文字をコンピュータ内部などで使用するために変換されたビット列のこと。<br />代表的な符号化方式<br />Shift_JIS<br />ISO-2022-JP(いわゆるJISコード)<br />EUC-JP<br />UnicodeではUTF-8,UTF-16が代表的<br />
  7. 7. 基本用語(包摂規準)<br />「同じ文字」とみなす基準<br />見掛けが異なる字を同じとみなすための指針<br />JISで規定される<br />例<br />一点しんにょうと二点しんにょう<br />「高」と梯子高<br />草冠の差(つながる、途切れる、完全に切れる)<br />
  8. 8. JIS X 0213:2004のインパクト<br />文字コードの歴史、なぜJIS X 0213:2004になったか、今のままではなぜいけないのか?<br />
  9. 9. WindowsとUnicode<br />Windows NT 3.1はUnicode 1.0を使って実装された世界最初の商用OS<br />OSではないが、JavaもUnicode採用して1991年登場<br />Unicode 1.0はUTF-16のみだったので、引き続きデフォルトエンコーディングはUTF-16。<br />
  10. 10. 現在のWindowsとUnicode<br />1996年拡張面をサポートしたUnicode 2.0が制定。<br />Windows 2000はUnicode 2.0で実装。<br />Unicode 1.0はBMP(0群0面の基本面)のみ。<br />サロゲートペア<br />Unicodeの未定義領域1024文字を二つ使い、一文字を表示(前:0xD800~0xDBFF,後:0xDC00~0xDFFF)<br />16面まである((1024×1024)÷(256×256))=16<br />結果的に可変長(32bitと基本面は16bit)。<br />JIS X 0213:2004で追加された文字の一部は第二面に入っている。<br />
  11. 11. そもそもJIS X 0213:2004って?<br />JIS X 0208以来の改訂(Windows XPはJIS90+補助漢字)<br />4354字が追加され、11233字<br />JIS X 0208を包括したスーパーセット<br />一部の文字の例示字体が新字体から康煕体へ<br />朝日新聞も字体を印刷字体へ変更(2007/1/15より)<br />変更のあった文字(VistaとXPで異なって見えます)<br />逢 芦 飴 溢 茨 鰯 淫 迂 厩 噂 餌 襖 迦 牙 廻 恢 晦 蟹 葛 鞄 釜 翰 翫 徽 祇 <br />汲 灸 笈 卿 饗 僅 喰 櫛 屑 粂 祁 隙 倦 捲 牽 鍵 諺 巷 梗 膏 鵠 甑 叉 榊 薩<br />鯖 錆 鮫 餐 杓 灼 酋 楯 薯 藷 哨 鞘 杖 蝕 訊 逗 摺 撰 煎 煽 穿 箭 詮 噌 遡 <br />揃 遜 腿 蛸 辿 樽 歎 註 瀦 捗 槌 鎚 辻 挺 鄭 擢 溺 兎 堵 屠 賭 瀞 遁 謎 灘 <br />楢 禰 牌 這 秤 駁 箸 叛 挽 誹 樋 稗 逼 謬 豹 廟 瀕 斧 蔽 瞥 蔑 篇 娩 鞭 庖 <br />蓬 鱒 迄 儲 餅 籾 爺 鑓 愈 猷 漣 煉 簾 榔 屢 冤 叟 咬 嘲 囀 徘 扁 棘 橙 狡 <br />甕 甦 疼 祟 竈 筵 篝 腱 艘 芒 虔 蜃 蠅 訝 靄 靱 騙 鴉<br />
  12. 12. 開発環境構築<br />作るためには何が必要か?<br />
  13. 13. これがないとはじまらない<br />Windows SDK(最新版はVista対応6000.0)<br />Visual Studio 2005 Express Edition以降(MFC使う場合はStandard以上)<br />MFC使う場合はUnicodeランタイムも忘れずに。<br />
  14. 14. Visual Studio 2005セットアップ<br />忘れずに追加しているかな?<br />
  15. 15. Windows SDKではどうすればいいの?<br />今までUnicodeを毛嫌いしていたんだけど…<br />
  16. 16. まずUnicode対応<br />好むと好まざるとにかかわらず、JIS X 0213:2004フルサポートするならやる。<br />字体の変化の許容度合を確認する<br />一般のオンラインソフトなどでは特定用途を除いて字体は無視した方が良い(コストに合わない)<br />こだわりがある場合は従来字体をUnicode私用領域を使うなどの対応必要<br /> 城市(奈良県) vs 飾区(東京都)<br />
  17. 17. Unicodeの私用領域<br />プライベートエリア。つまり外字として使える。<br />BMP(U+E000~U+F8FFの6400文字)<br />15面(U+Fxxxx)<br />16面(U+10xxxx)<br />RichEditコントロールの場合は注意<br />U+F020からU+F0FFを使用している(サポート技術情報:900284)<br />
  18. 18. ソース確認<br />Unicode対応する場合、まずソースの確認。<br />C言語伝統の型(char)では対応できない。<br />wchar_t型の追加<br />Unicode固定文字列はL”文字列”へ<br />wchar_tは2byte(UTF-8を使う場合注意)<br />結合文字・サロゲートペアは注意<br />
  19. 19. 従来のメンテナンス<br />C/C++では良くも悪くもプリプロセッサの恩恵がある。<br />ソース自動変更、APIや対象構造体を自動的に置換。<br />余談:wchar_tをサポートしていない環境ではunsigned shortに置換される。<br />
  20. 20. Unicode対応の第一歩<br />Windowsで定義されている型を使いましょう。<br />charからTCHARへ<br />明示的にUnicodeを格納しなければならないところはWSTR,WCHAR型<br />固定文字列はTEXTマクロで例:TEXT(“この文字列は環境で変化します”)<br />構造体、関数などは_UNICODEシンボルを参照して、別バージョンを定義<br />
  21. 21. Unicode対応する第二歩<br />Windows APIの自動変換をあてにする。<br />実はC/C++よりもdeclareを書かなくてはならなかったVBユーザのほうがなじみが深い<br />構造体は気をつけよう<br />int WINAPI MessageBoxA(HWND hWnd,LPCSTRlpText, LPCSTR lpCaption,UINTuType);<br />int WINAPI MessageBoxW(HWND hWnd,LPCWSTRlpText, LPCWSTR lpCaption,UINTuType);<br />#ifdef UNICODE<br />#define MessageBoxMessageBoxW<br />#else<br />#define MessageBoxMessageBoxA<br />#endif // !UNICODE<br />
  22. 22. Unicodeの特殊文字をプログラムで抑止<br />IMEからの入力の場合<br />WM_IME_COMPOSITIONメッセージがコントロールに送られるので、メッセージ内で判定する。<br />静的解析<br />エディットコントロールごとに入力が確定したタイミングでチェックする。<br />でも、完璧には防げない<br />
  23. 23. コード解析の難しさ<br />文字の自動解析はかなり難しい<br />どうしても符号化の間で重なるところがある<br />超有名なShift_JISのと0x5c(2byte目に出てくる)<br />ISO-2022-JPの場合、ESC+SHIFT-IN,SHIFT-OUTがあるので、欠落しない限りは大丈夫<br />
  24. 24. 美乳効果で自動判定ミスを防ぐ<br />
  25. 25. Windows APIの文字判定<br />IsTextUnicode()<br />バッファにUnicodeがあるかどうか判定する(複数指定可能)<br />IS_TEXT_UNICODE_STATISTICS, IS_TEXT_UNICODE_REVERSE_STATISTICSフラグは100%確実ではない。<br />メモ帳文字コード誤判定事件サポート技術情報:KB837192<br />これら以外のフラグは積極的に使うべき<br />
  26. 26. Shift_JISからUnicodeへ<br />MultiByteToWideChar()<br />MultiByte(Shift_JIS)からUnicode(UTF-16)へ。UTF-7/8も指定できる。<br />COMのAPIを呼ぶときは必ずお世話になる。<br />通常二回呼ぶ<br />初回でバッファサイズ取得(第六引数を0)<br />二回目で変換<br />ATLのA2W()マクロもこれを呼んでいるだけ<br />
  27. 27. UnicodeからShift_JISへ<br />WideCharToMultiByte()<br />通常、Unicodeの方が文字が圧倒的に多いので、変換の際は気をつける<br />WC_NO_BEST_FIT_CHARSを指定するべき<br />lpDefaultChar<br />マップできない文字が出た時に置き換える文字へのポインタ<br />lpUsedDefaultChar<br />変換不可文字があればTRUE<br />lpDefaultCharとlpUsedDefaultCharはNULLを指定すると速くなる<br />
  28. 28. 完全な変換?<br />中だけ、外だけ対応すればいいのでは?<br />内部処理をUnicode(外部Shift_JIS)<br />内部処理をShift_JIS(外部Unicode)<br />あまりお勧めできない<br />
  29. 29. ラウンドトリップ問題<br />UnicodeとShift_JISの対応は1:1ではない。<br />NEC選定IBM互換文字とIBM拡張文字<br />変換テーブルの問題<br />WAVEDASH,YEN-SIGN(有名なところ。ほかにもある)<br />U+00A5(¥)->0x5c()->U+005c(BACKSLASH)<br />通信や異環境からのデータファイルは注意<br />Difference of Unicode Conversion Tables <br />(http://www.autumn.org/etc/unidif.html)<br />A Unicode vender-specific character table for Japanese<br />(http://www.ingrid.org/java/i18n/unicode.html)<br />
  30. 30. 結合文字<br />カ(U+30AB)+゛(U+3099)でU+30ACの「ガ」と同じ意味。<br />アクセント記号も同様にΑ(U+0391)+ ΄(U+0384)でΆ(U+0386)をあらわす。<br />比較などを行う際は注意が必要。<br />Windows Vistaのエディットコントロールは対応。<br />半角カナ時代への逆行?<br />
  31. 31. 文字の正規化<br />結合文字と構成済み文字の比較時に必要<br />NormalizedString()<br />IsNormalizedString()<br />Windows SDKの問題<br />libファイルが間違っている(涙)<br />normaliz.dllなのに、normalization.dllをimport<br />現在動的リンクするしかありません<br />
  32. 32. 使うとはまるAPI<br />CharPrev/CharNext<br />lstrlen(もちろんCRTのstrlenも)<br />StringCchLength<br />結合文字・サロゲートペアに対応していない(BYTE単位->WORD単位になっただけ)<br />よって、文字数カウントに使うとはまる<br />
  33. 33. グリフを混在させる<br />OpenTypeのFeature Tagを使って字体の切替<br />ただし、対応フォントのみ<br />Win32では国際化APIのUniscribeを使う<br />VistaではOpenType用のAPIが追加<br />たぶん唯一のUniscribeサンプル(http://www.catch22.net/tuts/editor14.asp)<br />FirefoxのWin32版もあるので、ソース見るとか…<br />System.Windows.Documents.GryphsがあるWPF使う方が楽です。<br />
  34. 34. UniscribeのOpenTypeを使う<br />Feature Tagを使う場合必要<br />使わない場合は従来のAPIでOK<br />VistaでOpenTypeのTagを使うAPIが追加<br />C/C++ではマクロ定義を忘れずに<br />#define WINVER 0x0600<br />#define _WIN32_WINNT 0x0600<br />Uniscribe API(レンダリングの国際化)<br />
  35. 35. OpenType Tagのレンダリング<br />基本的には従来のUniscribeと変わりなし<br />ScriptShapeOpenTypeでグリフを生成<br />ScriptPlaceOpenTypeでグリフの位置を生成<br />ScriptTextOutで表示。<br />ただし、パラグラフ(レンダリング対象要素)ごとに行う<br />ここではBidi(双方向性)および、<br />Optionの手順を省略してます<br />
  36. 36. で?<br />UniscribeのOpenType対応難しいです。<br />普通の人は考えない方がいいです。<br />デモ作ろうと思ったけど間に合いませんでしたorz。<br />
  37. 37. Unicode時代のセキュリティ<br />Shift_JISではなかったようなこと<br />
  38. 38. セキュリティ<br />UnicodeにはShift_JIS時代には考えもしなかった制御コードがある。<br />真面目に実装すると、GUIでユーザをだませる。<br />見えない文字(ゼロ幅文字)<br />双方向性機能(Bidi)<br />
  39. 39. 特殊記号を入力する<br />エクスプローラから右クリックして「Unicode制御文字の挿入」<br />
  40. 40. でもコマンドプロンプトでは<br />ゼロ幅文字が1byteの空白になるので、すぐばれる。<br />まじめにチェックするしかない<br />
  41. 41. 移行シナリオ<br />今ある資産はどうしよう?<br />
  42. 42. 突然Vistaがやってくる<br />入力された文字が表示されない。<br />Vistaで追加された文字はXP/2003で見えない。<br />あれ、こんな文字だっけ?<br />いくつかの文字の字体が変更された<br />印刷字体への変更<br />
  43. 43. フォントのインストール<br />Vistaに提供されるVer 2.5フォントを使う<br />MSゴシックとMS明朝のみ<br />メイリオは提供されない(5.0のみ)<br />JIS90グリフにはない文字もある<br />でも全部にインストールするのは…<br />プログラムを改造して、OpenTypeのFeature Tagを使用してJIS90字体を表示する<br />
  44. 44. 問題点<br />気をつけておかないとはまりそうです<br />
  45. 45. MS IME2007のUnicode候補<br />MS IME 2007ではJIS X 0213:2004文字も変換候補に出てくるようになった<br />2007 Office SystemおよびVista内蔵のIME<br />
  46. 46. 各フォントにおける字形の差<br />Microsoftの公開情報によると、JIS X 0213:2004対応で文字の追加、字形変更が発生した。<br />だがしかし<br />
  47. 47. 二つの字の差を探してください<br />XPのMSゴシック2.3<br />Vistaの互換フォント2.5<br />どこに違いがあるんでしょう…<br />これも字形の差だそうです<br />
  48. 48. コマンドプロンプト<br />cmd.exeはコードページ932(cp932)で動作<br />Unicodeにしかない文字は入力できない<br />chcp 65001でUTF-8(でも日本語でない…)。<br />おそらくはいまだに残るDOSコマンドの互換性のため<br />
  49. 49. 参考資料<br />はせがわさん(http://d.hatena.ne.jp/hasegawayosuke/)<br />それ Unicodeで – TEXT HUCKS<br />小形克弘さん<br />「文字の海、ビットの舟」(http://internet.watch.impress.co.jp/www/column/ogata/)<br />Microsoft<br />JIS X 0213:2004対応と新日本語フォント「メイリオ」について<br />Sorting It All Out(http://blogs.msdn.com/michkap/)国際化を担当されているMichel氏のblog<br />Slashdot Japan<br />安岡助教授の日記(http://slashdot.jp/~yasuoka/journal)<br />Webのいろいろなところ<br />Shift_JIS,Unicode,EUC(Wikipedia)およびGoogleでヒットしたサイトたち<br />
  50. 50. Special Thanks<br />本資料をレビューしていただいたりばてぃさん(http://cs.gogo-asp.net/blogs/libaty/default.aspx)<br />
  51. 51. ありがとうございました<br />

×