= Unicode化基本方針 * 基本方針 * 最新環境で動くものを目指す * 最新以外のためのコミットすることを禁止することはない * サポートOS,サポート開発ツールは今後検討する * 開発ツール * 最新の Visual Studio * 最新の Windows SDK * 使用ライブラリ * 最新のものを使用する * 古いOSをサポートするためにパッチすることはしない方向 = 内部Unicode化の進捗状況 * ソースコード * trunk ( https://osdn.net/projects/ttssh2/scm/svn/tree/head/trunk/ ) * r9502 == 開発環境 * Visual Studio 2019 * 開発で主に使用 * ソースツリー内の2019用ソリューションファイルは更新している * Tera Term 4 系に反映することもあるので2005でもビルドできるようにしておきたい * 95をサポートするためにVisual Studio 2005を使用する必要があるがプライオリティは低い * 2005,2019以外のソリューションファイルは更新していない状態 * cmakeビルド(試験的) * Visual Studio 2005~2019, MinGW でビルド可能 == サポートWindowsのバージョン r9153 ぐらいの状況、現在はWindows 10,11(最新)に注力している。 * ○ Windows 10 * ○ Windows 8 * ○ Windows 7 * ○ Windows Vista * ○ Windows XP * ○ Windows 2000 * ○ Windows NT4.0 * ○ Windows Me * ○ Windows 98 * ○ Windows 95 注: * VS2019でビルドしたものはVista/7/10で動作した。XPでは起動できない。 * 10では動作。(開発は主にWindows10上で行っているため) * 7: クーリエフォントでは絵文字が豆腐になる。和田研中丸ゴシック2004絵文字フォントでは問題なし。 * Vista/XP: クーリエフォントでは韓国語と絵文字が豆腐になる。和田研中丸ゴシック2004絵文字フォントでは韓国語が・になる。 * 2000: クーリエフォントでは日本語、中国語、韓国語、絵文字、たすけてが豆腐になる。和田研中丸ゴシック2004絵文字フォントでは中国語、韓国語、絵文字が・になる。 * NT4.0: クーリエフォントでは日本語、中国語、韓国語、絵文字、たすけてが豆腐になる。和田研中丸ゴシック2004絵文字フォントでは中国語、韓国語、絵文字が・になる。 * Me/98: クーリエフォントでは日本語、中国語、韓国語、絵文字、たすけてが豆腐になる。和田研中丸ゴシック2004絵文字フォントでは多少マシになるが、実用は難しい。ダイアログ表示がおかしい(r8299で解決)。 * 95: ドイツ語だけまともに表示される。クーリエフォントでも和田研中丸ゴシック2004絵文字フォントでも大差ない。ダイアログ表示がおかしい(r8299で解決)。 == 使用しているライブラリ、ツールの状況 * OpenSSL 1.1系 * XP より古いOSでのサポートが終了 * ttssh が XP より古いOSで使えなくなる * Visual Studio 2005 * EOL * 入手性が悪い * Windows 95 対応バイナリが作れる * 対応できるようソース側で工夫している * Visual Studio 2019,2022 * 最新開発環境 * 古いOSで動かないバイナリとなる * MinGW * 新しいOSで起動するバイナリは作れる * 調査中 * 95で起動するバイナリは作れた * 安定して動作するかは未検証 == 実装状況 === Unicode(内部文字コード) * (△) 全角の行末処理 * 文字幅(1/2cell) * [http://www.unicode.org/Public/UCD/latest/ucd/EastAsianWidth.txt EastAsianWidth.txt]をもとに決定 * Ambiguous chalacter 文字幅の設定可 * 絵文字 * 絵文字幅上書き設定OFF時 * Unicode文字幅で描画 * 絵文字幅上書き設定ON時 * [https://unicode.org/Public/emoji/12.0/emoji-data.txt emoji-data.txt]をもとに絵文字を判定 * 2cell設定の時 * すべてを2cellとする * 1cell設定時 * U+1f000未満は1cell * U+1f000以上は2cell * 結合文字 * [https://unicode.org/Public/UNIDATA/NamesList.txt NamesList.txt]をもとに決定 * Bengali, Khmer, Tibetan など * VariationSelector(異体字セレクタ) * EMOJI MODIFIER * Zero Width Joiner(ZWJ,ゼロ幅接合子) * Zero Width non-joiner(ZWNJ, ゼロ幅非接合子) === 画面描画 * OSの機能を利用して描画 * Unicode系APIと非Unicode系APIのどちらでも利用可能 * UIで選べる * ExtTextOutW() と ExtTextOutA() * 9x系のExtTextOutW() について * 存在する([http://seclan.dll.jp/dtdiary/2010/dt20100310.htm 参考]) * 動作がNT系と異なるようだ * (×)カラー絵文字 (あとまわし) * DirectWrite というDirect Xの機能を使う * Windows8以降のサポートとなる === 表示,機能 * URL * 強調表示 * クリッカブルURL * クリックでブラウザなど実行 * (△) おかしいことが残っている * クリップボード * セット * [https://docs.microsoft.com/en-us/windows/win32/dataxchg/clipboard-formats Synthesized Clipboard Formats]を利用 * (未) 9x系でのサポートがどうなっているか未検証 * ゲット * ファイルドロップ * ファイル名のペースト * ファイルの送信 * バイナリ * テキスト * ファイルの文字コードの判定 * [https://ttssh2.osdn.jp/manual/ja/macro/syntax/file.html ttlファイルのエンコード]と同じようにする * scp * ファイル名は UTF-8でホストに送る * ファイル送信 * バイナリ * テキスト * ファイルの文字コードの判定 * [https://ttssh2.osdn.jp/manual/ja/macro/syntax/file.html ttlファイルのエンコード]と同じようにする * ファイル転送 * ローカルのファイル名は Unicodeに対応 * 送信するファイル名は ANSIで送る(UTF-8/ANSI切り替えUIがほしい) * ファイル受信(ログ) * 文字コード選択できるUIを追加 * 印字 * [ファイル]/[印刷] Unicode対応 * エスケープシーケンスによる印刷 * 印刷 * (△) 難しそう、ANSIで実装しておく * パススルー印字 * 文字コードを何で送るか設定が必要 * duplicate session * (作業中)パス、ファイル名などのUnicode化 * (作業中)iniファイルのパースなどのUnicode化 * 設定ファイル(iniファイル)のデフォルト保存場所の変更 * %APPDATA%\teraterm5\ * (未)theme\ * (作業中)pluginの互換性 * Tera Term 4 以前とのバイナリ互換性は失われる * 新しい機能は入れず、なるべく変更なくソース再コンパイル(ソース互換)で使えるようにする方針 === 追加設定 * Debug設定 * 文字情報ポップアップ * on/off * キー設定 * 設定のダイアログ === OS対応 * 非Unicode系APIしかない場合は、Unicode APIの動作を内部でエミュレートする * ある程度は9xでも動作 * プライオリティは低い === マクロ * 内部文字コードをUTF-8に変更 * 従来はANSIだった == 実装未検討 === Unicode * アラビア語など * 左横書き = テスト == テストの観点 === レグレッション * 従来バージョン(v4.103)でサポートしている機能が、漏れなく動作するか。 === 言語全般 * 日本語 * UTF-8だけではなく EUC-JP/JIS/Shift_JIS に関しても検証する。 * 多言語(UTF-8) * 中国語、韓国語、ドイツ語、フランス語、ロシア語、ほか。 * Unicodeで実装が難しいもの * ゼロ幅接合子、Emoji_Modifier、ほか。 === レガシーWindows * Windows95/98/Me * WindowsNT4.0/2000/XP/Vista/7/8/10 * 英語版Windows === 操作全般 * 端末上で多言語を使った操作を行う * man * vim, emacs * TUI (Text User Interface) * ログファイル * ブロードキャストコマンド * コピー&ペースト * ウィンドウのリサイズや最大化