--- nono/lib/sjis.h 2026/04/29 17:04:51 1.1 +++ nono/lib/sjis.h 2026/04/29 17:05:08 1.1.1.3 @@ -4,11 +4,14 @@ // Licensed under nono-license.txt // +// +// Shift_JIS 関係 +// + #pragma once #include "header.h" -// SJIS 処理用 class SJIS { public: @@ -29,13 +32,12 @@ class SJIS static bool IsZenkaku(uint8 c) { // Shift_JIS の1文字目は上位ニブルが 8,9,e。 - // f は第2水準まででは使わないけど第3水準以降で使用されている。 + // f は第三水準以降で使用されているが第二水準まででは使われておらず + // CGROM にデータも用意されてないので、ここでは半角外字領域とする。 - // 8, 9, e, f - // 1000 1001 1110 1111 - // なので bit 8, 9, e, f を立てた値と and すればよい。 + // bit 8, 9, e を立てた値と and すればよい。 // なお ubuntu amd64 gcc9.3 はビットテスト命令にコンパイルしてくれる。 - return (1 << (c >> 4)) & 0b11000011'00000000; + return (1 << (c >> 4)) & 0b01000011'00000000; } // 半角文字なら true を返す