OSDN Git Service

phonetic repeat symbols
authorTakuya Nishimoto <nishimotz@gmail.com>
Mon, 7 Apr 2014 04:11:45 +0000 (21:11 -0700)
committerTakuya Nishimoto <nishimotz@gmail.com>
Mon, 7 Apr 2014 04:11:45 +0000 (21:11 -0700)
jptools/harness.py
source/synthDrivers/jtalk/translator2.py

index 8c97175..abdd5a9 100644 (file)
@@ -4525,10 +4525,12 @@ tests = [
        # 平仮名繰り返し記号\r
        # ゝ   309d    [ヒラガナクリカエシ]   クリカエシ\r
        # ゞ   309e    [ヒラガナダクテンクリカエシ]       クリカエシ ダクテン\r
-       #{   'text':'すゝめ', 'input':'ススメ'},\r
-       #{   'text':'いすゞ', 'input':'イスズ'},\r
-       #{   'text':'づゝ', 'input':'ヅツ'},\r
-       #{   'text':'ぶゞ', 'input':'ブブ'},\r
+       {   'text':'すゝめ', 'input':'ススメ'},\r
+       {   'text':'すゞめ', 'input':'スズメ'},\r
+       {   'text':'いすゞ', 'input':'イスズ'},\r
+       {   'text':'づゝ', 'input':'ヅツ'},\r
+       {   'text':'ぶゞ', 'input':'ブブ'},\r
+       {   'text':'ふゞ', 'input':'フブ'},\r
 \r
        # 片仮名繰り返し記号\r
        # ヽ   30fd    [カタカナクリカエシ]   クリカエシ\r
index f6c73b9..c8fafe1 100644 (file)
@@ -753,6 +753,25 @@ RE_GAIJI = re.compile('^[A-Za-z][A-Za-z0-9\,\.\+\- ]+$')
 RE_KATAKANA = re.compile('^[ァ-ヾ]+$')\r
 RE_HIRAGANA = re.compile('^[ぁ-ゞ]+$')\r
 \r
+NO_DAKUON_DIC = {\r
+       'ヅ' : 'ツ',\r
+}\r
+\r
+DAKUON_DIC = {\r
+       'フ' : 'ブ',\r
+       'ブ' : 'ブ',\r
+}\r
+\r
+def to_no_dakuon_kana(s):\r
+       if s in NO_DAKUON_DIC:\r
+               return NO_DAKUON_DIC[s]\r
+       return s\r
+\r
+def to_dakuon_kana(s):\r
+       if s in DAKUON_DIC:\r
+               return DAKUON_DIC[s]\r
+       return s\r
+\r
 def japanese_braille_separate(inbuf, logwrite):\r
        text = inbuf\r
        if RE_MB_ALPHA_NUM_SPACE.match(text):\r
@@ -850,9 +869,15 @@ def japanese_braille_separate(inbuf, logwrite):
                        li[pos].output = '⠼'\r
 \r
        # 記号を Unicode 正規化\r
-       for mo in li:\r
+       for i in xrange(0, len(li)):\r
+               mo = li[i]\r
                if mo.hinshi1 == '記号' and mo.hinshi2 == '一般':\r
-                       mo.output = mo.nhyouki\r
+                       if mo.hyouki == 'ゝ' and i > 0:\r
+                               mo.output = to_no_dakuon_kana(li[i-1].output)\r
+                       elif mo.hyouki == 'ゞ' and i > 0:\r
+                               mo.output = to_dakuon_kana(li[i-1].output)\r
+                       else:\r
+                               mo.output = mo.nhyouki\r
                if mo.hyouki == '.' and mo.hinshi1 == '名詞' and mo.hinshi2 == '数':\r
                        mo.output = '.'\r
                if mo.hyouki == ',' and mo.hinshi1 == '名詞' and mo.hinshi2 == '数':\r