LibreOffice calc(64bit) 7.3以降で 置換(検索?)が変。

LibreOffice calc(64bit) 7.3以降で 置換(検索?)が微妙に変。
濁点付きカタカナの置換がおかしい様子!!
7.2に戻したなら起こらない。
例:
(1)“フジテレビNEXT” => “NEXT” とするために
置換: “フジテレビ” => “” (空値)としても “XT” となる

(2)“フジテレビNEXT” => “テレビNEXT” とするために
置換: “フジ” => “” (空値)としても “レビNEXT” となる

“フジテレビ” が “ふじてれび” の場合は起こらない
置換機能のバグ?

他所で
【[ 置換 ]の[ 他のオプション ]で[ 全角と半角を区別する ]のチェックが外れていると、
濁点があるカタカナが半角カタカナで処理されるようです。
[ 全角と半角を区別する ]のチェックを入れてから置換を実行してください。
この仕様は、Writerでも起きるのでcalcのみの設定ではないです。】

とのアドバイスを受けましたが 7.2 では チェック:on/off 何れでも上記減少は起こりません。

【改良】の結果であれば どのような【改良内容】なのか、上記の現象は【許容範囲】なのか
教えて欲しいです。(調べ方が足りないのかも知れませんが判りませんでした)

2 Likes

Version: 7.4.1.2 / LibreOffice Community
Build ID: 40(Build:2)
CPU threads: 8; OS: Linux 5.19; UI render: default; VCL: gtk3
Locale: ja-JP (ja_JP.UTF-8); UI: ja-JP
7.4.1-2
Calc: threaded

linux (Archlinux + Gnome) で再現しました。
「検索と置換」ダイアログを使用し、[全角と半角を区別する] の項目にチェックが入っていないときにこの現象が発生します。""(空値)のみならず、何らかの置換文字列がある場合も発生します。
またcalcのみならず、writer、drawでも再現しました。おそらくLibreOfficeのすべてのアプリでこの現象が発生するものと思われます。
[全角と半角を区別する] にチェックを入れたときにはこの現象は発生しませんでした。当面はその方法で回避するしかないかと思います。

色々試した中で次のような仮説が浮かびました。

  • 濁音または半濁音が付いたカタカナが文字列に含まれるとき、この現象が発生する。ひらがなでは発生しない。
  • 検索文字列が見つかりその置換対象文字列の位置と長さを確定しようとするとき、濁音または半濁音を1文字としてカウントする。

先の例2(“フジテレビNEXT” から “フジ” を消す)ですと、

  1. “フジ” に濁音が1つ含まれるので “フ”+“シ”+濁音で3文字とカウントする
  2. “フジテレビNEXT” で “フジ” が始まる位置(1文字目)から3文字消す
  3. 先頭の3文字 “フジテ” が消されて"レビNEXT" となる

という次第です。
同様に “フジテレビ” の場合は、濁音が2つ含まれますから7文字とカウントされて “フジテレビNE” までが消されて “XT” しか残らない結果になると思われます。

この仮説に基づいて、“パピプペポ123456” から “パピプペポ” を空に置換しようとすると “6” しか残りませんのでお試しください。また検索文字カウントよりも実際の文字数が少ない場合("パピプペポ12"は7文字、“パピプペポ” で10文字カウント)は、こちらでは “ピプペポ12” が返ります。

1 Like

予想以上にヤバそうなバグと思われましたので、Bugzillaに投げました(https://bugs.documentfoundation.org/show_bug.cgi?id=151148 )。
そこに書きましたが、原因となったコミットは突き止められました。が、そのコミットでは複数のファイルに変更が加えられており、どこを弄れば良いのかは当方ではわかりません(怪しいとは思われそうなファイル名は散見されるけど…)。
ご興味ある方は、ぜひパッチをご投稿くださいませ。

1 Like

リンク切れしてる…>コミット

1 Like

ごめんなさい、コミットハッシュ間違えてました(bibisectのやつ入れてた…)。
Bugzillaに訂正のコメント入れましたのでよろしければご覧ください。
ご指摘ありがとうございました。

お世話になります、ありがとうございます。