■ ctips:(TLS)の接続を作り直しました。TLS 1.3 で接続できるようになり、SNI を送るようになり、
 サーバー証明書とホスト名を既定で検証します。自己署名の証明書のサーバーへ繋ぐ場合は、
 認証局を信頼させるか、試験用に copper コマンドの --insecure を使ってください。
 【互換性の注意】3.2.32 まではサーバー証明書を検証していませんでした。自己署名の証明書や
 名前の合わない証明書のサーバーへ繋いでいた場合、この版から接続に失敗します。
 設定の旧名 jp.cssj.driver.tls.trust も使えますが、警告を 1 回出します。
 新しい名前は jp.cssj.driver.tls.insecure で、両方を指定したときは新しい名前が優先します。
■ HTTPS の REST 接続での insecure の意味は ctips: と違います。
 ctips: の insecure は検証を完全に無効にします。REST の insecure は、サーバーが証明書を
 1 枚だけ提示したとき(自己署名かどうかを問わず)それを信頼し、2 枚以上の連鎖は通常どおり
 検証します。ホスト名の検証はどちらの場合も行いません。
■ CTIP で 32KB を超える文字列(data: URI の画像など)を送ると接続が壊れる不具合に対応しました。
■ 変換の中断(abort)の扱いを直しました。本文を送っている途中で中断した場合に、
 中断ではなく内部エラーとして報告されることがありました。
 また、クライアントが本文を送り終える前に中断を知らせていたため、ドライバによっては
 応答を待ち続けたり、次の変換に失敗したりすることがありました。本文を送り終えたところで
 知らせます。本文の途中で中断した場合も、本文のストリームは閉じてください。
■ サーバー(copperd)を停止するときに、接続の処理が終わるのと重なると、停止が終わらなくなる
 ことがある不具合に対応しました。
■ 同梱の Jetty を 9.4.20 から 12.1.13 へ更新しました。これにともない、
 サーバー(copperd)の REST(HTTP/HTTPS)の待受と copper-webapp の実行には Java 17 以降が必要です。
 サーバーは従来どおり Java 8 以降で起動できます。Java 8〜16 では REST の待受を行わず
 (警告をログに出して)、CTIP(平文と TLS)だけで動きます。
 copper コマンドと Java ドライバは従来どおり Java 8 以降で動きます。
■ バンドル版の OpenJDK を 21.0.12.1+1(Eclipse Temurin)に更新しました。
■ バンドル版に JavaVM が入っていない不具合に対応しました。
 3.2.30 から 3.2.32 のバンドル版(openjdk-bundle)には JavaVM が含まれておらず、
 別に Java を用意しないと動きませんでした。該当する版をお使いの場合は入れ替えてください。
■ Docker イメージの土台を eclipse-temurin:21-jre に更新しました。
■ 同梱ライブラリを更新しました。
 Apache Batik 1.14 から 1.19、Xalan と Serializer 2.7.3、Xerces 2.12.2、
 TwelveMonkeys ImageIO 3.15.2、metadata-extractor 2.21.0、JEuclid 3.1.14、
 Commons Codec 1.22.1、Commons Logging 1.4.0、XML Graphics Commons 2.11。
 SVG・MathML・バーコード・画像・XSLT の出力が更新前と一致することを確認しています。
■ 使っていない同梱ライブラリを 3 つ削除しました。
 log4j 1.2.11・JUnit 3.8.1・jmock 1.0.1 は barcode4j が参照する Avalon の古い定義から
 入っていたもので、実行時には使っていません。log4j 1.x は開発が終了しています。
■ Jetty 12.1.13 時点で、当てはまる既知の脆弱性はありません(2026-09-20 に再照合)。
 運用の条件は 3 つです。REST の待受と copper-webapp の実行には Java 17 以降が必要です。
 copperd の HTTP ポートは HTTP/1.1 と HTTP/2(h2c)の両方を受け付けます。
 copper-webapp は HTTP/1.1 だけです。
■ 同梱の Java ドライバは 2.2.5 です。単体で配布している Java ドライバ(cti.java)の
 2.3.0 以降とは別物で、旧来の公開型(MetaSource・RandomBuilder)と META-INF/plugin の
 探索を保ったままです。この製品に付属するドライバをお使いの場合は 2.2.5、
 新しい API をお使いになる場合は単体配布の 2.3.3 以降をご利用ください。
 いずれも TLS の修正と、中断のあとの close()・reset() が中断をもう一度投げていた不具合・
 REST で本文を書いている途中の中断が効かなかった不具合の修正が入っています。
■ ユーザーの設定ファイル(conf/password.txt)が無いときに、認証のたびに内部エラーに
 なる不具合に対応しました。copperd -passwd で最初のユーザーを作ることもできませんでした。
■ Linux 版で、環境変数 JAVA_HOME を設定していない場合にバンドル版の Java 実行環境が
 使われない不具合に対応しました。/bin/java などが先に見つかると、そちらが使われていました。
■ Windows 版の copper.exe を、インストール先以外のディレクトリから実行すると
 ClassNotFoundException で起動しない不具合に対応しました。
 copperd.exe と copper-webapp.exe も同じように直しました。
■ Windows サービスとして登録したとき、インストール先が C:\Program Files の下だと
 ログを書き込めない不具合に対応しました。サービスは LocalService アカウントで動くため、
 InstallService.bat(InstallService-x64.bat)が logs ディレクトリへの書き込み権限を付けるようにしました。
■ Debian/Ubuntu 用パッケージ(.deb)に Java の依存関係が入っていなかった不具合に対応しました。
 Java 8 以降の実行環境(default-jre-headless など)を要求します。RPM も java >= 1.8 です。
■ RPM パッケージが /var/lib/copper-pdf を所有していなかったため、展開する道具によっては
 インストールに失敗する不具合に対応しました。
■ RPM パッケージを更新すると conf/password.txt が上書きされ、copperd -passwd で作ったユーザーが消えて
 既定のユーザーに戻る不具合に対応しました。copperd.properties などの設定ファイルも、
 利用者が変更したものは更新後もそのまま残します(新しい版のファイルは .rpmnew として置きます)。
■ systemd の無い Debian/Ubuntu で、サーバーが root 権限で動いていた不具合に対応しました。
 copper ユーザーで動きます。
■ Linux 版の copper-webapp を Java 17 未満で起動したときに、分かりにくいエラーで
 止まっていたのを、必要な Java の版を示して止まるようにしました。
■ Docker の公開イメージに同梱するフォントを Noto Sans JP と Noto Serif JP だけにしました。
 起動用のスクリプト(copper.sh・copper.ps1)と compose ファイルを用意し、
 ライセンスキーと追加フォントは user ディレクトリから読み取り専用で渡せるようにしました。
 ライセンスキーはイメージに含まれません。
 ライセンスキーを配置すると、serif・sans-serif の和文は同梱の Noto で組まれて PDF へ埋め込まれます
 (Docker 版だけの既定です。機能限定版ではフォントを埋め込めないため、従来どおりの明朝・ゴシックになります)。
