XOR for Mac Version 2.1では新機能として「不変ページの自動検出」と「サーモ表示」を搭載したものの、当初の予定では自動検出のみを盛り込む方向で進めていました。それだけで大きな進歩になるはずだと。
ただし、いざ不変ページの自動検出を作り込み、さまざまなテストデータを試したところ、同じページなのに「Unchanged」になったりならなかったりという事象が見られました。もちろんアルゴリズムは同じなので不可解な話です。
具体的には、テスト用にとあるPDFのペアから最後のページだけを削除したバージョンを作って試したところ、全ページが揃ったPDFとでは「Unchanged」になるページの組み合わせが食い違う点に気づきました。
調べてみたところ、原因はページを削除して保存した際にPDFのデータ構造が微妙に変わることでした。そう、PDFは見た目が同じでもデータ構造が違っているケースがよくあります。それがXORでレンダリングする際に数ドット程度の微妙な差異を生み出していたわけです。不変ページの自動検出機能は当然ながら1ドットでも違いが見つかれば差異があると見なします。
ちなみにPDFのデータ構造を解析して比較するタイプのPDF比較アプリが差異の後検出や検出漏れを起こすのも、PDFの保存状態との相性が理由だったりします。そのせいでアルゴリズムに要素のペアリングを誤認識させたり、チェックをすり抜けてしまうという。
で、数ドットの微妙な差異をXORで吸収できればよかったのだけど、あらゆるケースを想定するのは不可能なので諦めて、代わりにユーザが微妙な差異を見つけやすくするべく急遽サーモ表示を追加しました。