問題タブ [combining-marks]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
visual-studio - VS Code「Unicode結合文字のより良い処理」:そうではありません
文書化された変更で、「文字を結合する Unicode のより良い処理」というタイトルのリンクの説明をここに入力すると、VS Code は「文字を結合する Unicode の処理を改善し、そのようなシーケンスを (カーソル移動、編集操作、またはブロックで) アトミック文字として扱う」と述べています。カーソル レンダリング)". 私の問題は、それがまさに私がやりたくないことです。カーソル操作と編集操作で、基本文字と結合文字を別の文字として扱い、個別に編集できるようにしたい。
以前の動作 (切り替えなし) に戻す方法がないというのは正しいですか? (もちろん、以前のバージョンの VS Code をインストールすることもできますが、後で必要になる多くの変更が必要になる可能性が高いため、それは不利な提案です。) リクエストを送信する必要がありますか、それとも st を見落としていますか?
ところで、私は Unicode の正規化形式について知っています。NFC に正規化されると、カーソルは現在とほぼ同じように動作する必要があります。しかし、基本テキストが NFD である限り、結合文字を個別に編集できるようにしたいと考えています (特に、積み重ねられた分音記号を編集する必要がある場合に便利です)。
unicode - UTF-16 文字のバイト幅はどのように決定しますか?
文字が占めるバイト数を決定するために、UTF-16 バイト ストリームを読み取るためのルールは何ですか? 私は標準を読みましたが、実際の UTF-16 でエンコードされたストリームの経験的な観察に基づいて、標準が当てはまらない場所があるようです (または、私が見逃している標準の側面があります)。 .
UTF-16 標準の読み取りからhttps://www.rfc-editor.org/rfc/rfc2781 :
先頭 2 バイトの値 | 結果の文字長 (バイト) |
---|---|
0x0000-0xC7FF |
2 |
0xD800-0xDBFF |
4 |
0xDC00-0xDFFF |
無効なシーケンス (RFC2781 2.2.2) |
0xDFFF-0xFFFF |
4 |
実際には、少なくとも一部のケースでは、これが当てはまるようです。アドホック SQL スクリプト (SQL Server 2019; UTF-16 照合順序) を使用しますが、オンライン デコーダーでも検証されます。
キャラクター | ユニコード名 | ISO10646 | UTF-16 エンコード (16 進数、ビッグ エンディアン) | サイズ (バイト) |
---|---|---|---|---|
あ | ラテン大文字 A | U+0041 | 00 41 |
2 |
Б | キリル大文字BE | U+0411 | 04 11 |
2 |
ァ</td> | カタカナ小文字A | U+30A1 | 30 A1 |
2 |
うさぎの顔 | U+1F430 | D8 3D DC 30 |
4 |
ただし、次の ISO 10646 文字を UTF-16 にエンコードすると、4 バイトのように見えますが、先頭の 2 バイトを読み取っても、これほど長いかどうかはわかりません。
キャラクター | ユニコード名 | UTF-16 エンコード (16 進数、ビッグ エンディアン) | サイズ (バイト) |
---|---|---|---|
⚕️ | アスクレピオスの杖 | 26 95 FE 0F |
4 |
私は質問をソフトウェアにとらわれないようにしたいと思います。次の SQL は、既定の照合順序と既定の言語を使用して、Microsoft SQL Server 2019 でこの動作を再現します。(SQL Server はリトル エンディアンであることに注意してください)。
簡単に言えば、「このキャラクターの次の単語を読む必要がある」とどのように/なぜ0x2695
考えますか? これが公開された UTF-16 標準と一致していないように見えるのはなぜですか?