22:05:48 @uaa@social.mikutter.hachune.net
icon

かつては何かの意味があったことは確かであり、その意味を汲み取りたいところではあるが、今日においてはその意味は希薄であり、意図を汲み取ったところで無用である可能性が高いと判断されるのであれば、それは切って捨てるのもやむなしということになるのだろう。

まあ、一旦切って問題があることが分かれば、また戻せば良いだけの話…かな?カジュアルにやっても多分咎められないと思いたい。

21:47:12 @uaa@social.mikutter.hachune.net
icon

canuumのソース見てみたけど、自分の理解だとsj3みたいに文字コードの種別に応じ文字境界単位での出力を~といった感じの物は、見当たらない。おそらくprintf.cのflushw_buf()の処理になるんだろうけど、バッファの内容をputchar()でべーっと吐くだけ。

canuumもNEWS-OS対応していて、このコードでも動くというのなら…出力時における文字境界単位でなんかやる意味って本当に無いってことにならんか?(sj3の、オリジナル…コメントがちゃんと存在する状態のコードを見ない限りその意図は分からないってことでもある)。

21:09:53 @uaa@social.mikutter.hachune.net
icon

putchar()で標準出力に吐くにしても、吐いた先で一旦バッファリングしてからwrite()なりなんなりするはずだと思うんだけど…

canuumとかのソースを見る?

21:04:39 @uaa@social.mikutter.hachune.net
icon

あんまり難しく考えなくて良いのかなあ?「2byteで構成する!」なら2byte、「5byteで構成する!」なら5byteとりあえず拾って、その拾ったものが正しいかどうかを検証してグリフにするかエラーを吐くかを決める。変な気遣いはしない方向で。

20:57:55 @uaa@social.mikutter.hachune.net
icon

gist.github.com/RobertAudi/9f1

3.3 Sequences with last continuation byte missing
All bytes of an incomplete sequence should be signalled as a single malformed sequence, i.e., you should see only a single replacement character in each of the next 10 tests. (Characters as in section 2)

って書いてあるけど、Firefox上での表示は"only a single placement character"にならないケースがあるな。

20:46:30 @uaa@social.mikutter.hachune.net
icon

ISO 10646のAnnex Rってのはこれかな? cl.cam.ac.uk/~mgk25/ucs/ISO-10
UCS Transformation Format 8 (UTF-8)

ISO 10646-1:1993/Am.2 – UTF-8 (N1335)
20:40:09 @uaa@social.mikutter.hachune.net
icon

だ ん だ ん 訳 が わ か ら な く な っ て き た ぞ ぅ

20:39:32 @uaa@social.mikutter.hachune.net
icon

sj3のwrite_stdout()、3byte EUCの場合(SS3, 0x8f)…2byte目ないし3byte目がEUCの範囲を外れていてもとりあえずホールドしてる感じですね。これはSJ_read()に関しても同様。

SS3, CR, 'a'みたいなシーケンスになった場合、おそらくSS3を棄却、CRと'a'を表示というのが理想なんだろうけど、って不正なEUCを食らった場合の扱いというのもどうなってるんだろう…いやそもそも不正なEUCとは…

20:34:01 20:34:37 @uaa@social.mikutter.hachune.net
icon

セキュリティを考えると、不正なエンコーディングに対しては頑なに受け付けないという作りにするしかない(MSB側の2bit分を無視するという実装は許されない)気がするけど。

20:33:00 @uaa@social.mikutter.hachune.net
icon

UTF-8、複数バイトからなる場合の2nd octet以降のMSB側"10"が正しくなかった場合ってどう扱うんだろう。
とりあえず1st octetの規定に従ったoctet数だけは読みだして、まるっと棄却するとかそんな感じで良いのかな。

不正なエンコーディングに対する処置をどうするかっていうのがRFC 3629( tex2e.github.io/rfc-translater )を見てもよく分からなくって。

RFC 3629 - UTF-8, a transformation format of ISO 10646 日本語訳