-
Notifications
You must be signed in to change notification settings - Fork 43
TODO Unicode
nmaya edited this page Oct 29, 2023
·
1 revision
- 基本方針
- 最新環境で動くものを目指す
- 最新以外のためのコミットすることを禁止することはない
- サポートOS,サポート開発ツールは今後検討する
- 最新環境で動くものを目指す
- 開発ツール
- 最新の Visual Studio
- 最新の Windows SDK
- 使用ライブラリ
- 最新のものを使用する
- 古いOSをサポートするためにパッチすることはしない方向
- 最新のものを使用する
- ソースコード
- 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 でビルド可能
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で起動するバイナリは作れた
- 安定して動作するかは未検証
- (△) 全角の行末処理
- 文字幅(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
- 絵文字幅上書き設定OFF時
- [http://www.unicode.org/Public/UCD/latest/ucd/EastAsianWidth.txt EastAsianWidth.txt]をもとに決定
- 結合文字
- [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
- キー設定
- 文字情報ポップアップ
- 設定のダイアログ
- 非Unicode系APIしかない場合は、Unicode APIの動作を内部でエミュレートする
- ある程度は9xでも動作
- プライオリティは低い
- 内部文字コードをUTF-8に変更
- 従来はANSIだった
- アラビア語など
- 左横書き
- 従来バージョン(v4.103)でサポートしている機能が、漏れなく動作するか。
- 日本語
- UTF-8だけではなく EUC-JP/JIS/Shift_JIS に関しても検証する。
- 多言語(UTF-8)
- 中国語、韓国語、ドイツ語、フランス語、ロシア語、ほか。
- Unicodeで実装が難しいもの
- ゼロ幅接合子、Emoji_Modifier、ほか。
- Windows95/98/Me
- WindowsNT4.0/2000/XP/Vista/7/8/10
- 英語版Windows
- 端末上で多言語を使った操作を行う
- man
- vim, emacs
- TUI (Text User Interface)
- ログファイル
- ブロードキャストコマンド
- コピー&ペースト
- ウィンドウのリサイズや最大化