mbedオンラインコンパイラで日本語を扱う場合の不具合についてまとめ

mbedオンラインコンパイラで日本語を扱う場合に分かっている不具合を、個人的にまとめているものです。
分析して解決策があればuserjsでパッチを当てて、うまくいけば公式に取り込んでもらう事を狙ってます。

  • 全角スペースが入力できない。
    原因: Windows版Chromeの不具合。(ChromeBookやMac版では問題なし。)
    対策: Windowsでは、Firefoxなどの他のブラウザを使用する。
    詳細:
     日本語入力がONの状態でスペースを入力しても、CompositionEventsが動作しないため、JSでイベントを認識できない。
     他のイベントでの代替えは難しいため、現時点ではChromeの修正待ち。
     https://code.google.com/p/chromium/issues/detail?id=407256
     https://code.google.com/p/chromium/issues/detail?id=339649
  • Revision HistoryでAll Changesの時に文字化けする。
    原因: mbedサーバ内部処理の問題。
    対策: mbedチームの修正を期待する。
    詳細:
     mbedサーバにてリビジョンを比較する際、文字コードはISO-8859-1(Latin 1)にて処理してしまっている。
     その後、比較結果をUTF-8に変換せず、そのままUTF-8として処理してしまうため、文字が化けてしまう。
  • 日本語を含む場合、カーソル位置が前後の行でずれる。
    スタイルシートによるフォント指定で、日本語に対応した固定幅フォントが設定されていない。
    http://qiita.com/suzukima/items/be1ab67e0a9c9b11a8ef

    どのようなフォント指定が良いのか要検証。
  • 日本語を入力し、文字の末尾から入力した文字をShiftで選択。
    そのまま上書きで日本語を入力し始めると最初の子音がそのまま出力される。
    調査中・・・
  • 日本語を入力した後、Ctrl+ZでUndoすると、文字を入力する毎に「削除⇒入力」を繰り返す動作がHistoryに残ってしまう。
    cABOUTEDIT.prototype.oncompositionupdate で、入力ごとにremoveCharsしてinsertCharするのが原因の模様。
  • 日本語入力が未確定状態であることが分からない。(入力中のアンダーラインが出ない。)
    入力中の文字列を表示しているのではなく、JSのイベント処理によって入力中の文字列を取得しているため。
    案:日本語入力の開始と同時に、裏に隠れている入力を表示し、確定と同時に非表示にしてはどうか。
  • 日本語を含む長い行が右端まで到達したとき、横スクロールが動作しない。
    おそらく、文字幅に関係なく行の長さを文字数で判断しているため。
  • 行の末尾が「▽」の場合、行末の位置がズレる。
    cDOCUMENT.prototype.isMBLine で、全角幅の文字コード範囲の指定が不足している。

    \u2000 ~ \u2FFF 辺りが足りてない。UNICODEの全角文字の範囲を調べる必要あり。




その他(日本語の扱いとは関係ないが、気になること)

  • 左側のツリー(Program Workspace)のスクロール位置が一番上に戻ってしまう。
    代案:左上の「My Programs」を選ぶとプログラム一覧が中央に表示され、チェックを外すと非表示にできる。


Please log in to post comments.