タグ別アーカイブ: uniseg-python

プログラミングのことも書きますよ。検討中のこととかをとりとめもなく書けるスペースが欲しかったので。

Unicode 6.3 が出てた。ようやく全角スペースが折り返し区切りになるらしい(けどまだ読んでない)。

uniseg-python をアップデートしなければ。

ところで、Unicode の新しいバージョンに対応する場合、古いバージョンもサポートしつづけるべきだろうか。たとえば、6.3 では行の折り返し区切りで全角スペースがサポートされた(らしい)。ということは、6.2 では「あ い。」という文字列の折り返し境界は「あ/ /い。」であったのに対し、6.3 では「あ /い。」となる(はず)。仕様がアップデートされたということでたんに上書きしていけばいいような気もするけど、旧版の振る舞いに依存しているようなコードがあった場合に問題を出すことになる。

ライブラリ作者としてできるだけ後方互換性を維持すべき? そうすると 6.2 の振る舞いを残したうえで 6.3 を実装し、デフォルトでは後者が使われるというような仕組みにする必要が出るね。Python 組み込みの unicodedata モジュールなどは、特定の用途をサポートするために ucd_3_2_0 というようなサブの名前空間(のようなオブジェクト)を用意して、特別に Unicode 3.2 はサポートしてるようだけど、現在提供しているバージョンは 6.1 で、それ以外の以前のバージョンはとくに残してないみたい。

uniseg-python で扱う文字列の境界は文字の属性データベースだけでなくアルゴリズムも含まれるので、複数のバージョンを残すならコードも残す必要がある。どうしたもんかね。