ov v0.8.1

Posted on:

ov v0.8.1をリリースしました。

Terminal PAGER releases ov v0.8.1

文字の単位をCode point から Grapheme clusterに変更しました。

GoではruneがCode point単位で文字として数えます。Unicodeでは結合文字等があり、1Code pointが1文字ではない場合があります。1文字ではなくても元の文字の後に置けば良いので、文字数が変わる以外は通常それほど意識しなくても良い場合がほとんどです。

ただし端末に表示する場合のような文字幅が固定長の世界では、次の文字が0,1,2幅先なのかを決める必要があります。これまでCode pointに合わせて表示していたため🇯🇵のような文字は、端末では「JP」(フォントによりますが点線でそれぞれ囲まれた文字)のように表示されていました。そのため2文字で表示されることがありましたが、これからは1文字幅として扱うようにしました。

現在だとechoのように端末に任せて表示すると2文字幅で、ovで表示すると「J」のように表示され、文字が欠けてしまっているように見えます。これは端末側が対応して🇯🇵が表示出来るようになっても文字幅がズレずにそのまま表示されるようになるための対応です。端末側が対応するまではechoとの結果がズレてしまいますが、どちらが正しい仕様かを考えた結果先行して実装することにしてしまいました。 ただ、いまだに絵文字の結合に対応して表示できる端末が見つからないのが問題点です…

過去のバージョン

  • v0.8.1 文字の単位をCode point から Grapheme clusterに変更しました。
  • v0.8.0 tcell v2にアップグレードしました。
  • v0.7.1 交互に行スタイル効果適用の行がズレていたので修正
  • v0.7.0 スタイルカスタマイズの改善
  • v0.6.2 検索の高速化とキャンセル処理の追加
  • v0.6.1 細かな修正バージョン
  • v0.6.0 マウスサポート
  • v0.5.0 複数のドキュメントを開く方法を変更
  • v0.4.0 ヘルプ画面を追加
  • v0.3.1 位置をマークする機能を追加
  • v0.3.0 入力の改善
  • v0.2.1 色をカスタマイズ可能にする
  • v0.2.0 検索の改善
  • v0.1.3 行番号モードを追加
  • v0.1.2 Homebrewパッケージの追加
  • v0.1.1 パッケージ自動更新の調整
  • v0.1.0 ovにレポジトリ名と構成を変更。deb/rpmパッケージの追加
  • v0.0.5 現在の基本機能を備えた最初のバージョン

参考

ovの紹介