Skip to content

原文(日本語に翻訳)

「N文字コピーしました」というトーストメッセージが、絵文字やその他のマルチコードユニット文字を過大計上する問題を修正しました。

原文(英語)

Fixed the "copied N chars" toast overcounting emoji and other multi-code-unit characters

概要

テキストをコピーした際に表示される「N文字コピーしました(copied N chars)」というトースト通知で、絵文字や一部の特殊文字(サロゲートペア文字)を含むテキストの文字数が実際よりも多く表示されていました。これはJavaScriptの文字列処理でサロゲートペアを2文字としてカウントしていたためです。今回の修正でUnicodeコードポイント単位の正確なカウントが行われるようになります。

基本的な使い方

# テキストをコピーする場面
# Claude の回答: "Hello! 👋 World! 🌍"

# 修正前のトースト表示:
# "copied 20 chars" (絵文字がそれぞれ2文字としてカウントされていた)

# 修正後のトースト表示:
# "copied 18 chars" (絵文字が1文字としてカウントされる)

実践例

絵文字を含む回答のコピー

# Claude の回答例
「実装が完了しました! 🎉

主な変更点:
✅ ユーザー認証の追加
✅ データベース接続の最適化
🔧 バグ修正 3件
📝 ドキュメントの更新」

# このテキストをコピーした場合:
# 修正前: 実際より多い文字数が表示される(絵文字ごとに+1)
# 修正後: Unicode コードポイント基準の正確な文字数が表示される

サロゲートペアを含む特殊文字

javascript
// サロゲートペアが必要な文字の例(Unicodeコードポイントが U+10000 以上)
const examples = [
  "𠮷" (U+20BB7 CJK統合漢字拡張B)
  "🍣" (U+1F363 寿司絵文字)
  "🏳️‍🌈" (虹旗 - ZWJシーケンス)
  "👨‍👩‍👧‍👦" (家族絵文字 - 複合絵文字)
];

// 修正前: 各文字が2以上としてカウント
// 修正後: 人間が認識する「1文字」として正確にカウント

日本語テキストでの影響

# 日本語の通常文字(U+0000〜U+FFFF)は影響なし
# 例: 「こんにちは」→ 5文字(修正前後で変わらず)

# 絵文字や特殊記号を含む場合に修正が効果的
「おはようございます!☀️ 今日も頑張りましょう💪」
# 修正前: ☀️ と 💪 がそれぞれ追加でカウントされていた
# 修正後: 正確な文字数が表示される

コピー機能の使い方

# テキストをコピーする方法
1. Claude の回答が表示された後
2. /copy と入力(または該当のショートカットキー)
3. コピーしたいテキストを選択
4. 画面右下にトースト通知が表示される

# 修正後は「copied N chars」の N が正確になる

注意点

  • この修正はトースト通知に表示される文字数の問題です。コピーされるテキスト内容自体に変化はありません
  • ZWJ(Zero-Width Joiner)シーケンスで構成される複合絵文字(家族絵文字など)のカウント方法はプラットフォームによって異なる場合があります
  • バリエーションセレクタ(VS-16など)を含む絵文字も適切に処理されます
  • 修正後の文字数は、多くのテキストエディタやWebブラウザで表示される文字数と一致します
  • 実際のコピー内容(クリップボードのデータ)には影響しません

関連情報