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 )。
そこに書きましたが、原因となったコミットは突き止められました。が、そのコミットでは複数のファイルに変更が加えられており、どこを弄れば良いのかは当方ではわかりません(怪しいとは思われそうなファイル名は散見されるけど…)。
ご興味ある方は、ぜひパッチをご投稿くださいませ。

3 Likes

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

1 Like

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

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

masterで再現しなくなったことを確認しました。

Version: 7.5.0.0.alpha0+ (x64) / LibreOffice Community
Build ID: 943177e0f8074753db25d9a56d15f8010a755ffc
CPU threads: 4; OS: Windows 10.0 Build 19043; UI render: default; VCL: win
Locale: ja-JP (ja_JP); UI: ja-JP
Calc: CL threaded

2 Likes

7.3、7.4.1までの7.4では [全角と半角を区別する] にチェックを入れて検索、置換してください。チェックを入れずに濁点付カタカナを含むテキストを置換すると、結果が変になることのみならず、置換後の操作によってはLibreOfficeがクラッシュする事例もあるようです。

すでにhimajin100000さんからのご報告のように開発版(master 7.5)では修整済みです。そして、安定版(7.4, 7.3)でも同様の修整が入りまして、次回リリース予定の7.4.2で問題が解消される見通しになりました。それまでは上記のようにして問題を回避してください。

1 Like

なお、この件で各バージョンに素早く修正してくださったのは Noel Grandin 氏です。氏に厚く御礼申し上げたいと思います。

2 Likes

Windows版7.3.5で類似の現象に遭遇しましたが、7.3.6で解消されました。
もし7.3.5を使用していたらバージョンアップで解消するかも知れません。

上記 nishbone さんの 御手配により Bugzilla 経由で マスター修正の運びになりました。情報ありがとうございます。