# Tera Term 5 について

Tera Term 5 は Tera Term 4 の Unicode化を進めた次のバージョンです。

## 特徴

- ターミナル(内部バッファ、描画、キー入力)のUnicode化
  - 多言語の同時表示ができます。
    Tera Term 4 では、例えば日本語を表示する設定にしていると中国語は表示できませんでした
  - ISO8859-1から16に対応しました。
  - ロケールの設定が不要になりました。
- Windows UI(メニュー、ダイアログ)のUnicode化
  次の場合でもメニューやダイアログは設定した言語で正しく表示されます。
  - "現在のシステムロケール"以外の言語に設定した場合。
  - "ワールドワイド言語サポートで Unicode UTF-8 を使用"にチェックが入っている場合。
- その他Windows APIのUnicode版への切り替え
  Unicode ファイル名を使用できます。
- マクロ
  - 内部コードがUnicode(UTF-8)になりました。
    Tera Term 4 はACP(日本語Windowsの場合デフォルトでCP932,Shift_JIS)でした。
  - ダイアログなどのGUIで多言語表示できます。

## 動作環境

- 次のページ(動作環境)を参照ください。
  Visual Studio 2022 でサポートされない Windows バージョンでは動作しなくなりました。

## その他

- 開発ツール,使用ライブラリなど
- 実装状況
- LogMeTT, TTLEditor, Collector はインストーラから削除されました。これらはソースが公開されておらず、オープンソースライセンスでもありません。

# Tera Term 5 へ移行する

Tera Term 5 は Tera Term 4 と同居することができます。もっとも、マクロファイル（.TTL）への関連付けはどちらかにしかできません。

## 設定ファイル

- Tera Term 5 は Tera Term 4 用の設定ファイルをそのまま使用できます。

- 設定ファイルは Unicode になりました。
  - TERATERM.INI, KEYBOARD.CNF の文字コードは UTF-16 (with LE BOM) です。
  - cygterm.cfg の文字コードは、Cygwin 3.3.4ではUTF-8です。
- Tera Term 5 は UTF-16 (with LE BOM) の ini ファイルを扱うことができます。cf. Win32API/iniファイル
  - iniファイルを扱う Win32API は Unicode 対応版を使用します。
    Tera Term 4 ではUnicode版APIを使用していないため、Shift_JISで表現できない文字が含まれていると、その項目は正しく扱えませんでした。
  - cygterm.cfg は Win32API を使って読み書きしていません。
- Tera Term 5 は起動時に読み込んだ TERATERM.INI が UTF-16 (with LE BOM) でなかった場合、TERATERM.INI を自動的に UTF-16 (with LE BOM) に変換します。
  変換時には、元のファイルをバックアップします。
- Tera Term 5 は設定ファイルを UTF-16 (with LE BOM) で保存します。

- Tera Term 4 は Tera Term 5 で保存した設定ファイルを読み込めます。

- Tera Term 4 は UTF-16 (with LE BOM) の iniファイルを読み込めます(Windows 2000 以降)。cf. Win32API/iniファイル
  Shift_JISで表現できない文字が含まれていると、その項目は正しく扱えません。

- 設定ファイルのデフォルトフォルダが変更されました。
  - %APPDATA%\teraterm5 (C:\Users\[username]\AppData\Roaming\teraterm5) になりました。
    - cf. フォルダについて
    - Tera Term 4 では、実行ファイルと同じフォルダ(またはVirtual Store)でした。
    - Tera Term 5 では、"My Documents\TERATERM.INI" は読み込まれなくなりました。
  - 今までの設定を引き継ぐには Tera Term 4 の設定ファイルをコピーしてください。
    - TERATERM.INI
    - KEYBOARD.CNF
    - cygterm.cfg
  - ファイルがない場合、ttermpro.exe 起動時にデフォルトの設定ファイルがコピーされます。
- 設定値のデフォルトが変更されました。
  - DPIAware "off"->"on"
  - ClearOnResize "on"->"off"
  - PrinterCtrlSequence "on"->"off"
  - AuthBanner "1"->"3"

## マクロファイル

- ファイル(拡張子ttl)の文字コードはUTF-8を推奨します。
- ttlファイル読み込み時、ファイルの文字コードを自動判定してUTF-8に変換して読み込みます。しかし判定を誤ることがあります。
  BOMを付けると確実にUTF-8として読み込むことができます。
- 使用できるラベルの個数の上限・変数の個数の上限（数値,文字列,数値配列,文字列配列それぞれ）が 256 から「なし」になりました。
- 文字変数の文字列長の上限はTera Term 4と同じ511バイトです。
  漢字などは1文字のバイト数が増加する(例 "あ" は 0x82,0xa0 から 0xe3,0x81,0x82となる)ため、Tera Term 4ではセットできたデータが途切れる可能性があります。
- 文字を扱うコマンドの文字長、文字位置(index,pos)の単位はTera Term 4と同じバイトです。
  ただし、内部文字コードが異なるためTera Term 4とは異なる値となります。
- 1文字を表すバイト列を壊す文字列操作を行うと、Tera Term 4と同じく文字(文字列)が壊れます。
- Unicode化に合わない仕様、不足している機能がある場合はお知らせください
  次のコマンドは修正予定です
  code2str, str2code
    ASCIIコード値をUnicodeコードポイントへ変更する

## プラグイン

- compat_w95.hは不要となりました。
  - r9239
- plugin APIを変更しました。
  - ファイル名がUnicode (型が char から wchar_t) になりました。
  - trunk/teraterm/ttsetup.h
  - 4-stable/teraterm/ttsetup.h
- iniファイル読み書き共通関数を追加しました。
  - ファイル名だけをUnicode化して従来と同じ動作をする関数を準備。
  - trunk/teraterm/common/inifile_com.h
- struct tttset (tttypes.h) のメンバを変更しました。
  - ファイル名、パス、文字列のメンバには、WがついたUnicode版のメンバが追加。
  - ファイル名、パスの文字数はMAX_PATH文字以上になることを考慮。
  - まだ変化する予定(メンバ名、順序、サイズ、型などなど)。
- 通知アイコンのAPIが変更されました。
  - 高DPIに対応しました。
  - SetVerNotifyIcon(), SetCustomNotifyIcon(), GetCustomNotifyIcon() は削除されました。
  - trunk/teraterm/ttpcmn/ttcmn_notify.h
- ヘルプAPIを追加。
  - Unicodeファイル名に対応したAPIを追加しました。
  - trunk/teraterm/ttpcmn/ttcmn_lib.h