MS ゴシックで表示できるShift-JISの文字(上の画像は隙間を埋めるように移動しているので、正しい配置ではないことに注意)。
誰か欲しがるかもしれないので、というかみらいのじぶんが使いたくなると思うので、Shift-JISで使用されている範囲を整数配列にしてみた。ジャグ配列だが、1つめが行数、2つ目がXの開始値、3つ目がXの終了値で、XY共に0-255の256個、YがMSBでXがLSB、という感じ。
目視で確認してるので、間違ってたらごめんね。
ちゃんと仕様とか調べれば出てくるんだろうなぁ。
ほんとは文字列のテーブルにして検索できるようにしたかったけど力尽きた。そっちはどこかのサイトのシフトJISコード表でやってくださいorz
最初の方に日本の元号の記号があるんだけど、明治・大正・昭和は並んでて、平成だけ飛んでるのが面白い。JISコードが最初に作られたのは昭和の時代で、その後に年号が変わってから平成が追加された、っぽい感じ。普通に考えると年号は数十年単位で変わっていくのだから、昭和の次に余裕を付けておいたほうが拡張性があるし、実際文字コードはスカスカなのでそうすることもできたはず。でもそうせずに、次の年号は別の場所に飛んでいる。年号が変わることを考えるとか恐れ多い!みたいな話があったんだろうか。
ちなみに明治から昭和までの3個は規則増加だが、平成は明治の前にある。なので明治・大正・昭和の記号を文字列の最初につけて文字コードでソートした場合、明治の前に平成が来ることになる。せっかくなら昭和の後ろに追加すればよかったのに。
さらに蛇足だが、平成の隣(前)は数個の空きがある。なので50-200年くらいは余裕がありそう。ただし明治から昭和がインクリメントなのに対し、平成以降はデクリメントで、ちょっと面倒っぽい。
さらにさらに蛇足だが、Unicodeでは平成から明治までが連続している。ただし平成の隣に空きはないっぽい。
2017/05/29:修正
0x7Fを例外で対応していたけど、うまく動かないことがあるらしいのでテーブルで対応。
int[][] UsedArea = new int[][] { new int[] { 0x00, 0x20, 0x7E }, new int[] { 0x81, 0x40, 0x7E }, new int[] { 0x81, 0x80, 0xAC }, new int[] { 0x81, 0xB8, 0xBF }, new int[] { 0x81, 0xC8, 0xCE }, new int[] { 0x81, 0xDA, 0xE8 }, new int[] { 0x81, 0xF0, 0xF7 }, new int[] { 0x81, 0xFC, 0xFC }, new int[] { 0x82, 0x4F, 0x58 }, new int[] { 0x82, 0x60, 0x79 }, new int[] { 0x82, 0x81, 0x9A }, new int[] { 0x82, 0x9F, 0xF1 }, new int[] { 0x83, 0x40, 0x7E }, new int[] { 0x83, 0x80, 0x96 }, new int[] { 0x83, 0x9F, 0xB6 }, new int[] { 0x83, 0xBF, 0xD6 }, new int[] { 0x84, 0x40, 0x60 }, new int[] { 0x84, 0x70, 0x7E }, new int[] { 0x84, 0x80, 0x91 }, new int[] { 0x84, 0x9F, 0xBE }, new int[] { 0x87, 0x40, 0x5D }, new int[] { 0x87, 0x5F, 0x75 }, new int[] { 0x87, 0x7E, 0x7E }, new int[] { 0x87, 0x80, 0x9C }, new int[] { 0x88, 0x9F, 0xFC }, new int[] { 0x89, 0x40, 0x7E }, new int[] { 0x89, 0x80, 0xFC }, new int[] { 0x8A, 0x40, 0x7E }, new int[] { 0x8A, 0x80, 0xFC }, new int[] { 0x8B, 0x40, 0x7E }, new int[] { 0x8B, 0x80, 0xFC }, new int[] { 0x8C, 0x40, 0x7E }, new int[] { 0x8C, 0x80, 0xFC }, new int[] { 0x8D, 0x40, 0x7E }, new int[] { 0x8D, 0x80, 0xFC }, new int[] { 0x8E, 0x40, 0x7E }, new int[] { 0x8E, 0x80, 0xFC }, new int[] { 0x8F, 0x40, 0x7E }, new int[] { 0x8F, 0x80, 0xFC }, new int[] { 0x90, 0x40, 0x7E }, new int[] { 0x90, 0x80, 0xFC }, new int[] { 0x91, 0x40, 0x7E }, new int[] { 0x91, 0x80, 0xFC }, new int[] { 0x92, 0x40, 0x7E }, new int[] { 0x92, 0x80, 0xFC }, new int[] { 0x93, 0x40, 0x7E }, new int[] { 0x93, 0x80, 0xFC }, new int[] { 0x94, 0x40, 0x7E }, new int[] { 0x94, 0x80, 0xFC }, new int[] { 0x95, 0x40, 0x7E }, new int[] { 0x95, 0x80, 0xFC }, new int[] { 0x96, 0x40, 0x7E }, new int[] { 0x96, 0x80, 0xFC }, new int[] { 0x97, 0x40, 0x7E }, new int[] { 0x97, 0x80, 0xFC }, new int[] { 0x98, 0x40, 0x72 }, new int[] { 0x98, 0x9F, 0xFC }, new int[] { 0x99, 0x40, 0x7E }, new int[] { 0x99, 0x80, 0xFC }, new int[] { 0x9A, 0x40, 0x7E }, new int[] { 0x9A, 0x80, 0xFC }, new int[] { 0x9B, 0x40, 0x7E }, new int[] { 0x9B, 0x80, 0xFC }, new int[] { 0x9C, 0x40, 0x7E }, new int[] { 0x9C, 0x80, 0xFC }, new int[] { 0x9D, 0x40, 0x7E }, new int[] { 0x9D, 0x80, 0xFC }, new int[] { 0x9E, 0x40, 0x7E }, new int[] { 0x9E, 0x80, 0xFC }, new int[] { 0x9F, 0x40, 0x7E }, new int[] { 0x9F, 0x80, 0xFC }, new int[] { 0xE0, 0x40, 0x7E }, new int[] { 0xE0, 0x80, 0xFC }, new int[] { 0xE1, 0x40, 0x7E }, new int[] { 0xE1, 0x80, 0xFC }, new int[] { 0xE2, 0x40, 0x7E }, new int[] { 0xE2, 0x80, 0xFC }, new int[] { 0xE3, 0x40, 0x7E }, new int[] { 0xE3, 0x80, 0xFC }, new int[] { 0xE4, 0x40, 0x7E }, new int[] { 0xE4, 0x80, 0xFC }, new int[] { 0xE5, 0x40, 0x7E }, new int[] { 0xE5, 0x80, 0xFC }, new int[] { 0xE6, 0x40, 0x7E }, new int[] { 0xE6, 0x80, 0xFC }, new int[] { 0xE7, 0x40, 0x7E }, new int[] { 0xE7, 0x80, 0xFC }, new int[] { 0xE8, 0x40, 0x7E }, new int[] { 0xE8, 0x80, 0xFC }, new int[] { 0xE9, 0x40, 0x7E }, new int[] { 0xE9, 0x80, 0xFC }, new int[] { 0xEA, 0x40, 0x7E }, new int[] { 0xEA, 0x80, 0xA4 }, new int[] { 0xED, 0x40, 0x7E }, new int[] { 0xED, 0x80, 0xFC }, new int[] { 0xEE, 0x40, 0x7E }, new int[] { 0xEE, 0x80, 0xEC }, new int[] { 0xEE, 0xEF, 0xFC }, new int[] { 0xFA, 0x40, 0x7E }, new int[] { 0xFA, 0x80, 0xFC }, new int[] { 0xFB, 0x40, 0x7E }, new int[] { 0xFB, 0x80, 0xFC }, new int[] { 0xFC, 0x40, 0x4B }, };
0 件のコメント:
コメントを投稿