本チケットに関連して調べたことを書いておきます。
トに半濁点を付けた文字(アイヌ語の表記に用いられる仮名の一つ)
Wikipedia http://bit.ly/11pkUXS
片仮名トに半濁点をつけた文字 JIS X 0213 1-5-94 は Unicode では U+30C8 U+309A の合字でしか表現できません。
この文字は NVDAJP の mecab.py で NFKC 正規化されず、そのままテキスト解析されます。
現状の JTalk 辞書には、解析できない記号文字が出現すると、その直後の形態素の読みが欠落する傾向があります。
このケースだと 30C8 の合成用半濁点が読めないだけでなく 309A 「ト」やその後ろの文字び読み付与も欠落します。
トに半濁点を付けた文字列について、Python の正規化の挙動を確認したので書いておきます。
# 半角半濁点は合成用半濁点に変換される >>> unicodedata.normalize('NFKC', u"\u30c8\uff9f") u'\u30c8\u309a' # 半濁点は「空白文字+合成用半濁点」に変換される >>> unicodedata.normalize('NFKC', u"\u30c8\u309c") u'\u30c8 \u309a' # 合成用半濁点は変化しない >>> unicodedata.normalize('NFKC', u"\u30c8\u309a") u'\u30c8\u309a'
もし NFKC 正規化の後処理をするか辞書登録をするなら、これらのパターンをカバーすればよいことになります。
(前のコメントを訂正: 30C8 ト 309A 合成用半濁点です)
下記のコミットで、合成用半濁点にキャレットを置いて文字説明(NVDA+ピリオド2回)を行ったときの不具合に対応しました。
release-2013.1jp 09218c9
ただし、直前の文字との組み合わせ、そしてアプリケーションによって、合成用文字を1文字として処理することもあり、2文字として処理することもあるようです。
下記のコミットについて説明します。
ひらがな・カタカナの濁音、半濁音(がついたカナ文字ではなく、記号そのものを表すもの)には以下の種類があります。
上記のコミットで 合成用濁点 U+3099 合成用半濁点 U+309A を「ダクテン」「ハンダクテン」と読むように追加しました。
合成用文字は例えば PDF からコピーされた文字列に含まれることがあります。
参照 http://d.hatena.ne.jp/nakamura001/20120529/1338305696
また Microsoft IME では "3099" F5 キーで合成用濁点を入力できます。
これらの文字への NVDA 日本語版 (2013.1jp) の対応状況は以下の通りです。
なお Windows 8 以外の環境は未確認です。