日本語

テキストおよび日常ツール · テキスト ツールキット

大文字が A ~ Z だけではない理由: ß、トルコ語の i と Unicode の大文字と小文字のマッピング

· 背景

ユニコード 大文字と小文字の変換 ローカリゼーション

大文字と小文字の変換を通過するドイツ語、トルコ語、ギリシャ語の文字
オリジナル ToolAcre ベクトル イラスト

よく知られている例外 (ß が SS になる、トルコ語のドットのない ı、ギリシャ語の最後のシグマ) を除いて、大文字と小文字が文字の算術演算ではなく Unicode テーブルによって定義される理由と、それがブラウザベースのコンバータにとって何を意味するのかを説明します。

STRASSE と成長した文字 — 「straße」を大文字にすると文字数が変わる理由

`straße` をコンバーターに貼り付けて大文字にします。JavaScript は `STRASSE` を生成します。ここで使用されるデフォルトの操作では小文字のシャープ s が 2 つの大文字にマップされるため、結果は明らかに長くなります。したがって、大文字と小文字の変換によって文字数が維持されると想定する検証ルールでは、有効なドイツ語テキストが拒否されたり、切り捨てられたり、位置がずれたりする可能性があります。

逆方向ではソースは再構築されません。 `STRASSE` を小文字にすると、`straße` ではなく `strasse` になります。これは、大文字シーケンスも通常の s 文字のペアを表すためです。したがって、大文字と小文字の変換はテキスト変換であり、可逆エンコードではありません。同一性、表示の忠実性、または正確な比較が重要な場合は、常に元のスペルを維持してください。

式ではなくテーブルとしての大文字と小文字のマッピング — Unicode がすべての大文字と小文字の単純な大文字と小文字のマッピングを定義する方法

ASCII コードでは、多くの場合、便利なパターンが教えられます。ラテン文字の大文字と小文字は予測可能な範囲を占めるため、それらを接続するために数値オフセットが表示されます。テキストにこれらの範囲外の文字が含まれるか、マッピングで複数の出力文字が生成されると、このモデルは役に立たなくなります。したがって、コンバータは文字演算を実行する代わりに、JavaScript 文字列ケース メソッドを呼び出します。

リポジトリは Unicode マッピング テーブルを公開したり、単純なマッピングと完全なマッピングを区別したりしないため、これらの詳細はこのツールの機能として表示されるべきではありません。その監視可能なコントラクトはより狭く、`toUpperCase()` と `toLowerCase()` はブラウザ エンジンに委任されます。結果は、変換されたテキストが実際に消費される環境でテストする必要があります。

大文字と小文字の変換では、このツールによって公開される算術やテーブルではなく、エンジンが提供する文字マッピングが使用されます。

長さを変更した結果は、入力の横にあるカウンター以上の影響を与えます。変換前に計算された保存されたオフセット、選択範囲、ハイライト、およびカーソル位置は、後で意図したテキストを指さなくなる可能性があります。同じリスクは、入力長から出力スペースを割り当てるワークフロー、または 1 つのソース文字が常に 1 つの結果文字に対応すると仮定するワークフローにも当てはまります。

特定の例が同じ可視長さを維持している場合でも、ラウンドトリップにより区別が失われる可能性があります。いくつかの原文のスペルが 1 つの大文字の形式に収束し、小文字の操作では原文を選択するための十分な情報が得られない場合があります。損失が許容できる場合にのみ、変換された値を比較してください。それ以外の場合は、オリジナルを保持し、製品要件に合わせて設計された比較戦略を使用します。

長さを変更するマッピングと、逆変換しても常にソースを復元できるわけではない理由

ギリシャのシグマは別の警告を提供します。小文字のギリシャ語では、単語内の位置によって変化するシグマ形式が使用されるため、大文字と小文字の変更が 1 つの独立した文字から常に決定されるとは限りません。 JavaScript は完全な文字列を受け取り、組み込みの小文字動作ですべての大文字のシグマを 1 つの固定グリフに置き換えるのではなく、周囲のテキストを考慮できるようになります。

単一文字のサンプルとしてだけでなく、完全な単語内のシグマをテストします。句読点、スペース、単語の境界はエンジンが評価する入力の一部であり、それらを編集すると小文字の結果が変更される可能性があります。ローカリゼーションのレビューでは、コード ポイントだけを検査するのではなく、インターフェイスで使用されているフレーズ全体を保存し、そのフレーズを承認済みの翻訳と比較します。

ギリシャ語のシグマは、小文字が周囲のテキストに依存する可能性があることを示しています

トルコ語では、デフォルトのロケールに依存しない大文字と小文字の変換がトルコ語固有の動作としてモデル化されない方法で、ドット付き i とドットなし i が区別されます。 ToolAcre 設定では、マッピングがロケールに依存しないこと、およびトルコ語のドット付き i とドットなし i は特殊なケースではないことが明示的に示されています。したがって、もっともらしく見える結果は、名前、アドレス、またはインターフェイス文字列がトルコ語の読者向けに正しく変換されたという証拠にはなりません。

実際的な対応は、一般的な変換後に置換を追加しないことです。このような置換は、混合言語のテキストを損傷し、コンテキストを見逃してしまう可能性があります。ロケールがわかっているソフトウェアでロケールを認識した操作を使用し、その設定でトルコ語またはアゼルバイジャン語のコンテンツをレビューします。このコンバータでは、i の例を文書化された制限のデモンストレーションとして扱います。

トルコ語のドット付きおよびドットなしは、このコンバーターが提供しないロケールを認識した処理が必要です

ToolAcre は、完全な入力に対して対応する JavaScript 文字列メソッドを呼び出すことによって UPPER と Lower を実装します。ロケールを渡したり、言語辞書をロードしたり、サーバー側の変換を要求したりすることはありません。したがって、出力はブラウザ エンジンのデフォルトのケース結果であり、通常のアプリケーションの動作を検査するのには役立ちますが、言語固有のタイポグラフィを証明するのには役立ちません。

バグを再現する場合、区別は重要です。大文字と小文字が間違っていることだけを報告するのではなく、正確なソース文字列、選択した変換、および結果の文字列を記録します。実稼働コードが同じデフォルトの JavaScript メソッドを使用している場合、コンバーターはコンパクトな比較を提供します。本番環境でロケール対応 API が使用されている場合、このページの照合は関連する受け入れテストにはなりません。

これでカバーされないもの — ダイグラフのタイトルケーシング規則と首都の歴史 ẞ

Title Case ボタンは、意図的に制限された契約を伴うもう 1 つの変換です。マークまたはアポストロフィを組み合わせて、最初の文字を大文字にし、残りを小文字にする一連の文字を検索します。言語辞書やスタイルガイドの例外がないため、頭字語や固有名詞は変更される可能性がありますが、`of` や `the` などの短い単語は他の単語と同様に大文字になります。

この記事は、アウトラインで提案されている大文字シャープ s の歴史や、タイトルケースのダイグラフに関するより広範なルールには依存していません。これは、どちらも検査された情報源によって確立されていないためです。これらの主題は独立した参考文献として価値があるかもしれませんが、出荷された機能については説明されていません。ここで信頼できるガイダンスは、変換されたすべての見出しを確認し、意図的なスペルを手動で復元することです。

このツールでのタイトルの大文字と小文字の動作 (サポートされていないアルファベット履歴なし)

大文字と小文字のコンバーターで 3 つの重点チェックを試してください。大文字の `straße`、大文字のシグマを含むギリシャ語の小文字、およびドット付きおよびドットなしの i サンプルを両方向で実行します。英語から文字列を予測するのではなく、実際の文字列を観察してください。次に、実験の間に元に戻すを使用して、各結果が以前の不可逆変換ではなく元のテキストから始まるようにします。

より広範な教訓は運用可能です。大文字小文字の変換は長さを変更し、区別を破壊し、デフォルトの操作では認識されない言語コンテキストに依存する可能性があります。このツールは、普遍的なローカリゼーションの正確性を約束するものではなく、それらの動作を公開するために使用します。ソース テキストを保存し、完全な実際のフレーズをテストし、言語固有の結果が必要な場合はどこでもロケールを意識したレビューを適用します。