OSDN Git Service

imported espeak-1.47.09
authorTakuya Nishimoto <nishimotz@gmail.com>
Tue, 30 Apr 2013 01:03:00 +0000 (10:03 +0900)
committerTakuya Nishimoto <nishimotz@gmail.com>
Tue, 30 Apr 2013 01:03:00 +0000 (10:03 +0900)
105 files changed:
include/espeak/ChangeLog.txt
include/espeak/dictsource/az_list [new file with mode: 0644]
include/espeak/dictsource/az_rules [new file with mode: 0644]
include/espeak/dictsource/bn_list
include/espeak/dictsource/de_list
include/espeak/dictsource/dict_log
include/espeak/dictsource/dict_phonemes
include/espeak/dictsource/en_list
include/espeak/dictsource/en_rules
include/espeak/dictsource/es_rules
include/espeak/dictsource/ga_list
include/espeak/dictsource/ga_rules
include/espeak/dictsource/hi_list
include/espeak/dictsource/hi_rules
include/espeak/dictsource/hy_list
include/espeak/dictsource/hy_rules
include/espeak/dictsource/ne_rules
include/espeak/dictsource/nl_list
include/espeak/dictsource/nl_rules
include/espeak/dictsource/pa_rules
include/espeak/dictsource/pt_list
include/espeak/dictsource/pt_rules
include/espeak/dictsource/sk_list
include/espeak/dictsource/sl_list
include/espeak/dictsource/sl_rules
include/espeak/dictsource/tr_list
include/espeak/dictsource/tr_rules
include/espeak/dictsource/vi_rules
include/espeak/espeak-data/af_dict
include/espeak/espeak-data/an_dict
include/espeak/espeak-data/az_dict [new file with mode: 0644]
include/espeak/espeak-data/bg_dict
include/espeak/espeak-data/bn_dict
include/espeak/espeak-data/ca_dict
include/espeak/espeak-data/cs_dict
include/espeak/espeak-data/cy_dict
include/espeak/espeak-data/da_dict
include/espeak/espeak-data/de_dict
include/espeak/espeak-data/en_dict
include/espeak/espeak-data/eo_dict
include/espeak/espeak-data/es_dict
include/espeak/espeak-data/et_dict
include/espeak/espeak-data/fa_dict
include/espeak/espeak-data/fi_dict
include/espeak/espeak-data/fr_dict
include/espeak/espeak-data/ga_dict
include/espeak/espeak-data/hbs_dict
include/espeak/espeak-data/hi_dict
include/espeak/espeak-data/hu_dict
include/espeak/espeak-data/hy_dict
include/espeak/espeak-data/id_dict
include/espeak/espeak-data/is_dict
include/espeak/espeak-data/it_dict
include/espeak/espeak-data/jbo_dict
include/espeak/espeak-data/ka_dict
include/espeak/espeak-data/kn_dict
include/espeak/espeak-data/ku_dict
include/espeak/espeak-data/la_dict
include/espeak/espeak-data/lt_dict
include/espeak/espeak-data/lv_dict
include/espeak/espeak-data/mk_dict
include/espeak/espeak-data/ms_dict
include/espeak/espeak-data/ne_dict
include/espeak/espeak-data/nl_dict
include/espeak/espeak-data/no_dict
include/espeak/espeak-data/pa_dict
include/espeak/espeak-data/pap_dict
include/espeak/espeak-data/phondata
include/espeak/espeak-data/phondata-manifest
include/espeak/espeak-data/phonindex
include/espeak/espeak-data/phontab
include/espeak/espeak-data/pl_dict
include/espeak/espeak-data/pt_dict
include/espeak/espeak-data/ro_dict
include/espeak/espeak-data/ru_dict
include/espeak/espeak-data/sk_dict
include/espeak/espeak-data/sl_dict
include/espeak/espeak-data/sq_dict
include/espeak/espeak-data/sv_dict
include/espeak/espeak-data/sw_dict
include/espeak/espeak-data/ta_dict
include/espeak/espeak-data/tr_dict
include/espeak/espeak-data/vi_dict
include/espeak/espeak-data/voices/asia/hy-west
include/espeak/espeak-data/voices/asia/vi-sgn [new file with mode: 0644]
include/espeak/espeak-data/voices/europe/ga
include/espeak/espeak-data/voices/pt
include/espeak/espeak-data/voices/test/az [new file with mode: 0644]
include/espeak/linux_32bit/shared_library/libespeak.so.1.1.47
include/espeak/linux_32bit/shared_library/speak_lib.h
include/espeak/linux_32bit/speak
include/espeak/platforms/windows/make_espeak.iss
include/espeak/platforms/windows/make_espeakedit.iss
include/espeak/src/compiledict.cpp
include/espeak/src/dictionary.cpp
include/espeak/src/numbers.cpp
include/espeak/src/readclause.cpp
include/espeak/src/speak_lib.cpp
include/espeak/src/speak_lib.h
include/espeak/src/synthdata.cpp
include/espeak/src/synthesize.cpp
include/espeak/src/tr_languages.cpp
include/espeak/src/translate.cpp
include/espeak/src/translate.h
include/espeak/src/voices.cpp

index 6de98d3..83efda9 100644 (file)
@@ -1,3 +1,18 @@
+espeak 1.47.09  29.04.2013
+  Bug fix (lookup in *_list occasionally found the wrong word).
+
+espeak 1.47.08  26.04.2013
+
+Automatically generate character names for subscript and
+superscript characters.
+
+Use internal ctype data for character codes up to U+024F.
+
+Add API function  espeak_TextToPhonemes().
+
+Add test language az, Azerbaijani.
+
+
 espeak 1.47.07  18.04.2013
 Language data changes only.
 
diff --git a/include/espeak/dictsource/az_list b/include/espeak/dictsource/az_list
new file mode 100644 (file)
index 0000000..cd4b049
--- /dev/null
@@ -0,0 +1,110 @@
+// This file is UTF8 encoded 
+// Spelling to phoneme rules for Azerbaijani
+
+
+// Numbers
+_0     s@f'@R
+_1     b'iR
+_2     ic'i
+_3     'ytS
+_4     d'WRd
+_5     b'eS
+_6     alt'@
+_7     jedd'i
+_8     s&Cc'iz
+_9     dogg'uz
+_1X    'on
+_2X    ijiRm'i
+_3X    ot'uz
+_4X    g'@Rx
+_5X    &ll'i
+_6X    altm'@S
+_7X    jetm'iS
+_8X    s&Cs'&n
+_9X    doxs'an
+_0C    j'yz
+_0M1   m'in
+_0M2   milj'on
+_0M3   milj'aRd
+_dpt   _t,am_|   // ??
+
+
+// Function words
+  // personal pronouns
+mən   $u+
+sən   $u+
+o      $u+
+biz    $u+
+siz    $u+
+onlar  $u+
+
+  // possessive pronouns
+mənim $u+
+sənin $u+
+onun   $u+
+bizim  $u+
+sizin  $u+
+onların       $u+
+
+bu     $u+
+
+
+// conjunctions
+və    $u+
+isə   $u+
+də    $u+
+həm   $u+
+ya     $u+
+da     $u+
+
+// prepositions
+aid    $u+ // about
+ilə   $u+ // with, by, in
+dair   $u+ // about
+
+// postpositions
+ci     $u
+cı    $u
+cü    $u
+de     $u
+dir    $u
+li     $u
+in     $u
+nə    $u
+ya     $u
+yə    $u
+
+// Character names
+b      be
+c      dZe
+ç     tSe
+_ə    &
+d      de
+f      fe
+g      Je
+ğ     Qe
+h      he
+x      xe
+j      Ze
+k      ka
+q      ge
+l      el
+m      em
+n      en
+_o      o
+p      pe
+r      eR
+s      se
+ş     Se
+t      te
+v      ve
+w      dubElv'E
+y      je
+z      ze
+
+*      ulduz $text
+%      faiz $text
+
+
+
diff --git a/include/espeak/dictsource/az_rules b/include/espeak/dictsource/az_rules
new file mode 100644 (file)
index 0000000..695d617
--- /dev/null
@@ -0,0 +1,137 @@
+// This file is UTF8 encoded 
+// Spelling to phoneme rules for Azerbaijani
+
+// Stress rule: Right-most vowel, but stop before the vowel which is
+// marked as unstressed [%].
+
+.L02 ı a o u   // back vowels
+.L03 i e ö ü
+
+.group a
+        a        a
+        ai (K    aI
+     -) a (_     a
+
+.group b
+        b        b
+
+.group c
+        c        dZ
+
+.group ç
+        ç        tS
+
+.group d
+        d        d
+
+     -) dan (_   d%an
+     -) dən (_   d%&n
+     -) dək (_   d%&k
+     
+.group e
+        e        e
+
+.group ə
+        ə        &
+     @) ə (_     %&
+     -) ə (_     %&
+
+.group f
+        f        f
+
+.group g
+        g        J
+
+.group ğ
+        ğ        Q
+     A) ğ        : 
+     a) ğa       :
+     o) ğo       :
+     u) ğu       :
+     ö) ğö       :
+     ü) ğü       :
+     i) ğ        j
+     e) ğ        j
+
+.group h
+        h        h
+
+.group x
+        x        x
+
+.group ı
+        ı        @
+
+.group i
+        i        i
+        
+     @) iya (_   =i;a
+
+.group j
+        j        Z
+
+.group k
+        k        c
+        k (K     C
+
+.group q
+        q        g
+        q (_     x
+
+.group l
+        l        l
+        l (L02   L
+   L02) l (K     L
+
+.group m
+        m        m
+
+.group n
+        n        n
+
+.group o
+        o        o
+
+.group ö
+        ö        W
+
+.group p
+        p        p
+
+.group r
+        r        R
+     A) r (A     *
+     ğ) r (A     *
+     C) r (_     @-r
+
+.group s
+        s        s
+
+.group ş
+        ş        S
+
+.group t
+        t        t
+   L03) t (L03   ts
+
+.group u
+        u        u
+
+.group ü
+        ü        y
+
+.group v
+        v        v
+
+.group w
+        w        w
+
+.group y
+        y        j
+
+.group z
+        z        z
+
+.group
+        ä        &
index 3bb9fdc..5d1942d 100644 (file)
@@ -9,15 +9,15 @@ _0    S'unjO
 _1     '&k
 _2     d'uj
 _3     t'in
-_4     tS'ar
+_4     tS#'ar
 _5     p'a~tS
-_6     tSh'Oj
+_6     tS#'Oj
 _7     S'at
 _8     'at.#
 _9     n'Oj
 
 _2a    d'u     // with hundreds etc.
-_6a    tSh'O
+_6a    tS#'O
 _9a    n'O
 
 
@@ -25,7 +25,7 @@ _10   d'OS
 _11    '&garo
 _12    b'arO
 _13    t'erO
-_14    tS'oddO
+_14    tS#'oddO
 _15    p'OnerO
 _16    S'olO
 _17    S'OterO
index 56d91fe..503937e 100644 (file)
@@ -63,6 +63,8 @@ _#32  l'e:rts'aIC@n
 _??    zymb'o:l
 _?A    b'u:xstA:b@
 _cap   gr'o:s
+_sub   'Unt@R|3_!,IndEks||
+_sup   'o:b@R|3_!,IndEks||
 
 
 // accent names
@@ -693,8 +695,8 @@ pochier         pOS'i:r
 pochs           pOxs
 präsident        $3
 prämie           $alt
-privatisier     pri:vati:z'i:r
-problematisier  pro:ble:m'a:tIzi:r
+privatisier     $4
+problematisier  $3 //pro:ble:m'a:tIzi:r
 
 reliquie         $alt
 risik           $1
index 6c294ca..f00f612 100644 (file)
@@ -16,6 +16,12 @@ Compiling: '/home/jsd1/speechdata/dictsource/an_list'
 Compiling: '/home/jsd1/speechdata/dictsource/an_rules'
        172 rules, 29 groups (0)
 
+Using phonemetable: 'az'
+Compiling: '/home/jsd1/speechdata/dictsource/az_list'
+       84 entries
+Compiling: '/home/jsd1/speechdata/dictsource/az_rules'
+       58 rules, 34 groups (0)
+
 Using phonemetable: 'bg'
 Compiling: '/home/jsd1/speechdata/dictsource/bg_listx'
        2790 entries
@@ -56,7 +62,7 @@ Compiling: '/home/jsd1/speechdata/dictsource/da_rules'
 
 Using phonemetable: 'de'
 Compiling: '/home/jsd1/speechdata/dictsource/de_list'
-       648 entries
+       650 entries
 Compiling: '/home/jsd1/speechdata/dictsource/de_rules'
        1241 rules, 34 groups (0)
 
@@ -68,9 +74,9 @@ Compiling: '/home/jsd1/speechdata/dictsource/el_rules'
 
 Using phonemetable: 'en'
 Compiling: '/home/jsd1/speechdata/dictsource/en_list'
-       4117 entries
+       4131 entries
 Compiling: '/home/jsd1/speechdata/dictsource/en_rules'
-       5843 rules, 101 groups (0)
+       5852 rules, 101 groups (0)
 
 Using phonemetable: 'eo'
 Compiling: '/home/jsd1/speechdata/dictsource/eo_list'
@@ -82,7 +88,7 @@ Using phonemetable: 'es'
 Compiling: '/home/jsd1/speechdata/dictsource/es_list'
        358 entries
 Compiling: '/home/jsd1/speechdata/dictsource/es_rules'
-       184 rules, 27 groups (0)
+       187 rules, 27 groups (0)
 
 Using phonemetable: 'et'
 Compiling: '/home/jsd1/speechdata/dictsource/et_list'
@@ -110,9 +116,9 @@ Compiling: '/home/jsd1/speechdata/dictsource/fr_rules'
 
 Using phonemetable: 'ga'
 Compiling: '/home/jsd1/speechdata/dictsource/ga_list'
-       218 entries
+       226 entries
 Compiling: '/home/jsd1/speechdata/dictsource/ga_rules'
-       356 rules, 34 groups (0)
+       408 rules, 34 groups (0)
 
 Using phonemetable: 'grc'
 Compiling: '/home/jsd1/speechdata/dictsource/grc_list'
@@ -130,7 +136,7 @@ Using phonemetable: 'hi'
 Compiling: '/home/jsd1/speechdata/dictsource/hi_list'
        259 entries
 Compiling: '/home/jsd1/speechdata/dictsource/hi_rules'
-       252 rules, 87 groups (86)
+       265 rules, 87 groups (86)
 
 Using phonemetable: 'hu'
 Compiling: '/home/jsd1/speechdata/dictsource/hu_list'
@@ -140,9 +146,9 @@ Compiling: '/home/jsd1/speechdata/dictsource/hu_rules'
 
 Using phonemetable: 'hy'
 Compiling: '/home/jsd1/speechdata/dictsource/hy_list'
-       70 entries
+       112 entries
 Compiling: '/home/jsd1/speechdata/dictsource/hy_rules'
-       93 rules, 39 groups (38)
+       94 rules, 38 groups (38)
 
 Using phonemetable: 'id'
 Compiling: '/home/jsd1/speechdata/dictsource/id_list'
@@ -246,13 +252,13 @@ Using phonemetable: 'ne'
 Compiling: '/home/jsd1/speechdata/dictsource/ne_list'
        194 entries
 Compiling: '/home/jsd1/speechdata/dictsource/ne_rules'
-       524 rules, 100 groups (92)
+       520 rules, 100 groups (92)
 
 Using phonemetable: 'nl'
 Compiling: '/home/jsd1/speechdata/dictsource/nl_list'
-       1507 entries
+       1519 entries
 Compiling: '/home/jsd1/speechdata/dictsource/nl_rules'
-       698 rules, 34 groups (0)
+       726 rules, 35 groups (0)
 
 Using phonemetable: 'no'
 Compiling: '/home/jsd1/speechdata/dictsource/no_list'
@@ -280,9 +286,9 @@ Compiling: '/home/jsd1/speechdata/dictsource/pl_rules'
 
 Using phonemetable: 'pt'
 Compiling: '/home/jsd1/speechdata/dictsource/pt_list'
-       1207 entries
+       1246 entries
 Compiling: '/home/jsd1/speechdata/dictsource/pt_rules'
-       964 rules, 39 groups (0)
+       997 rules, 39 groups (0)
 
 Using phonemetable: 'ro'
 Compiling: '/home/jsd1/speechdata/dictsource/ro_list'
@@ -304,7 +310,7 @@ Compiling: '/home/jsd1/speechdata/dictsource/si_rules'
 
 Using phonemetable: 'sk'
 Compiling: '/home/jsd1/speechdata/dictsource/sk_list'
-       321 entries
+       347 entries
 Compiling: '/home/jsd1/speechdata/dictsource/sk_rules'
        535 rules, 46 groups (0)
 
@@ -312,7 +318,7 @@ Using phonemetable: 'sl'
 Compiling: '/home/jsd1/speechdata/dictsource/sl_list'
        105 entries
 Compiling: '/home/jsd1/speechdata/dictsource/sl_rules'
-       81 rules, 30 groups (0)
+       84 rules, 31 groups (0)
 
 Using phonemetable: 'sq'
 Compiling: '/home/jsd1/speechdata/dictsource/sq_list'
@@ -348,7 +354,7 @@ Using phonemetable: 'tr'
 Compiling: '/home/jsd1/speechdata/dictsource/tr_list'
        252 entries
 Compiling: '/home/jsd1/speechdata/dictsource/tr_rules'
-       200 rules, 33 groups (0)
+       207 rules, 34 groups (0)
 
 Using phonemetable: 'ur'
 Compiling: '/home/jsd1/speechdata/dictsource/ur_list'
@@ -360,7 +366,7 @@ Using phonemetable: 'vi'
 Compiling: '/home/jsd1/speechdata/dictsource/vi_list'
        135 entries
 Compiling: '/home/jsd1/speechdata/dictsource/vi_rules'
-       463 rules, 97 groups (0)
+       547 rules, 97 groups (0)
 
 Using phonemetable: 'zh'
 Compiling: '/home/jsd1/speechdata/dictsource/zh_list'
index 98bf40c..30cb81f 100644 (file)
@@ -36,6 +36,17 @@ Q    r    R    R2   s    S    t    T
 t#   tS   w    x    
 
 
+Dictionary az_dict  2013-04-25
+
+&    @    @-   a    aI   e    E    i    
+o    u    W    y    
+
+*    :    ;    b    c    C    d    dZ   
+f    g    h    j    J    k    l    L    
+m    n    p    Q    r    R    s    S    
+t    tS   ts   v    w    x    z    Z    
+
+
 Dictionary bg_dict  2013-03-16
 
 @    a    e    i    o    u    
@@ -47,7 +58,7 @@ s;   t    t;   tS   ts   v    x    z
 Z    z;   
 
 
-Dictionary bn_dict  2013-04-18
+Dictionary bn_dict  2013-04-29
 
 &    a    a~   e    e~   i    i:   i~   
 l-   o    O    o:   O~   o~   r-   u    
@@ -113,7 +124,7 @@ r    R    R3   s    S    t    T    tS
 v    w    x    z    Z    
 
 
-Dictionary de_dict  2013-03-10
+Dictionary de_dict  2013-04-27
 
 3    @    @-   a    A    A:   aI   aU   
 A~   E    E2   E:   e:   EI   i    I    
@@ -137,7 +148,7 @@ p    Q    r    R    s    s;   t    T
 ts   v    x    z    
 
 
-Dictionary en_dict  2013-04-18
+Dictionary en_dict  2013-04-29
 
 0    0#   3    3:   @    @-   @2   @5   
 @L   a    a#   A:   A@   aa   aI   aI3  
@@ -166,7 +177,7 @@ s    S    t    T    tS   ts   v    w
 x    z    Z    
 
 
-Dictionary es_dict  2013-03-29
+Dictionary es_dict  2013-04-22
 
 @    a    aI   aU   e    E    eI   eU   
 i    o    O    oI   u    
@@ -225,7 +236,7 @@ p2   r    r2   s    S    t    t2   t3
 tS   v    z    Z    z2   z3   
 
 
-Dictionary ga_dict  2013-03-20
+Dictionary ga_dict  2013-04-25
 
 0    0#   @    a    a#   A:   aI   aI#  
 aU   aU#  e    E    E#   e:   eI   i    
@@ -261,18 +272,18 @@ N    n^   p    r    R    R2   s    S
 t    tS   ts   tS;  v    x    z    Z    
 
 
-Dictionary hi_dict  2013-04-10
+Dictionary hi_dict  2013-04-29
 
-@    @2   a    a:   aI   aU   a~   e    
+@    @-   a    a:   aI   aU   a~   e    
 E    e:   E:   e~   E~   i    I    i:   
 i~   l-   o    O    o:   O:   O~   o~   
 r-   u    U    u:   u~   V    
 
-#X1  #X2  -    :    b    b#   c    c#   
-d    d#   d.   d.#  f    g    g#   h    
-H    j    J    J#   k    k#   l    l.   
-m    n    N    n.   n^   p    p#   Q    
-q    r    r.   s    S    s.   t    T    
+#X1  #X2  *    -    :    b    b#   c    
+c#   d    d#   d.   d.#  f    g    g#   
+h    H    j    J    J#   k    k#   l    
+l.   m    n    N    n.   n^   p    p#   
+Q    q    r    r.   s    S    s.   t    
 t#   t.   t.#  v    w    x    z    
 
 
@@ -288,15 +299,16 @@ S    s2   t    t2   tS   ts   v    w
 z    Z    
 
 
-Dictionary hy_dict  2008-12-22
+Dictionary hy_dict  2013-04-26
 
 @    a    aI   e    eI   i    i@   o    
 u    W    y    
 
-**   b    c    d    dZ   dz   f    g    
-h    j    k    k#   l    m    n    p    
-p#   r    R    r"   s    S    t    t#   
-tS   ts   ts#  v    X    z    Z    
+*    **   b    c    d    dZ   dz   f    
+g    h    j    k    k#   l    m    n    
+p    p#   r    R    r"   R2   s    S    
+t    t#   tS   ts   ts#  v    w    X    
+z    Z    
 
 
 Dictionary id_dict  2011-02-21
@@ -484,7 +496,7 @@ k    l    m    n    p    R    s    S
 t    tS   v    w    x    
 
 
-Dictionary ne_dict  2013-03-09
+Dictionary ne_dict  2013-04-28
 
 @    @/   @2   @3   a    a:   aI   aU   
 a~   e    E    e:   E:   eI   e~   E~   
@@ -500,7 +512,7 @@ r    r.   s    S    s.   t    t#   t.
 t.#  v    w    x    z    
 
 
-Dictionary nl_dict  2013-04-12
+Dictionary nl_dict  2013-04-25
 
 8    @    @-   a    A    a:   A~   e    
 E    e#   E2   e:   EI   eU   i    I    
@@ -536,7 +548,7 @@ R    s    S    t    tS   v    w    x
 z    Z    
 
 
-Dictionary pa_dict  2013-03-17
+Dictionary pa_dict  2013-04-24
 
 @    a    a~   e    E    e~   E~   i    
 I    i~   I~   o    O    o:   O~   o~   
@@ -545,9 +557,9 @@ r-   u    U    U~   u~   V    V~
 :    ;    b    b#   c    c#   d    d#   
 d.   d.#  f    g    g#   h    H    j    
 J    J#   k    k#   l    l.   m    n    
-N    n.   n^   p    p#   Q    R    r.   
-R2   s    S    t    t#   t.   t.#  v    
-x    z    
+N    n.   n^   p    p#   Q    r    R    
+r.   R2   s    S    t    t#   t.   t.#  
+v    x    z    
 
 
 Dictionary pl_dict  2013-04-06
@@ -562,7 +574,7 @@ S    s;   S;   t    t;   tS   ts   tS;
 ts;  v    w    x    z    Z    Z;   
 
 
-Dictionary pt_dict  2013-04-18
+Dictionary pt_dict  2013-04-26
 
 &    &/   &U~  &~   @    @-   a    A    
 aI   aU   e    E    eI   EI   eU   EU   
@@ -616,28 +628,28 @@ n.#  n^   n^#  p    p#   r    s    S
 s.   t    t#   t.   t.#  tS   v    w    
 
 
-Dictionary sk_dict  2011-08-08
+Dictionary sk_dict  2013-04-26
 
 &    @-   a    a:   e    e:   i    i:   
 l-   l:   o    o:   oU   r-   r:   u    
 u:   
 
-*    ;    b    d    d;   dZ   dz   f    
-g    h    j    k    l    l^   m    n    
-N    n^   p    r    R    R^   R^/  s    
-S    t    t;   tS   ts   v    w    x    
-z    Z    
+*    ;    b    c    d    d;   dZ   dz   
+f    g    h    j    k    l    l^   m    
+n    N    n^   p    r    R    R^   R^/  
+s    S    t    t;   tS   ts   v    w    
+x    z    Z    
 
 
-Dictionary sl_dict  2013-01-30
+Dictionary sl_dict  2013-04-28
 
 @    @-   a    a:   e    E    e:   i    
 i:   o    O    o:   u    u:   y    
 
-:    b    d    dZ   dz   f    g    h    
-j    k    l    l^   m    n    N    n^   
-p    R    R^   s    S    t    tS   ts   
-v    v#   w    x    z    Z    
+*    :    b    d    dZ   dz   f    g    
+h    j    k    l    l^   m    n    N    
+n^   p    R    R^   s    S    t    tS   
+ts   tS;  v    v#   w    x    z    Z    
 
 
 Dictionary sq_dict  2008-12-22
@@ -701,15 +713,15 @@ s    s.   S;   t    t#   t.   t.#  tS
 v    v#   w    z    
 
 
-Dictionary tr_dict  2011-09-16
+Dictionary tr_dict  2013-04-25
 
 @    a    e    E    i    I    o    O    
 u    U    W    y    Y    
 
 *    :    b    c    d    dZ   f    g    
-G    h    j    J    k    l    m    n    
-p    Q    r    R    s    S    t    tS   
-v    w    z    Z    
+G    h    j    J    k    l    L    m    
+n    p    Q    r    R    s    S    t    
+tS   v    w    z    Z    
 
 
 Dictionary ur_dict  2013-03-28
@@ -726,18 +738,18 @@ s    S    s.   t    T    t#   t.   t.#
 v    w    x    z    Z    z.   
 
 
-Dictionary vi_dict  2013-03-16
+Dictionary vi_dict  2013-04-21
 
-@    @:   @:I  @:U  @I   @U   a    a:   
-a:I  a:U  aI   aU   e    E    eU   EU   
-i    i@   iE   iU   o    O    o#   O#   
-o&   o@   OI   oI   u    u@   uI   y    
-y@   yI   
+@    @-   @:   @:I  @:U  @I   @U   a    
+a:   a:I  a:U  aI   aU   e    E    eU   
+EU   i    i@   iE   iU   o    O    o#   
+O#   o&   O-   o@   OI   oI   Oi   u    
+u-   u@   uI   y    y@   yI   
 
 b    c    cr   d    D    f    g    h    
 j    J    J^   k    kh   l    m    n    
 N    n^   p    Q    s    s.   t    t[   
-v    w    x    z    Z    z.   
+tS   tS;  v    w    x    z    Z    z.   
 
 
 Dictionary zh_dict  2013-01-25
index e93be7e..ad62031 100644 (file)
@@ -17,7 +17,7 @@
 // ?8  Use full vowel, not schwa in some word endings
 
 // $alt1   use strong ending (-an, -table, -inal, -ier)
-// $alt2   use weak ending (ate, ery, ess, ile, men)
+// $alt2   use weak ending (ard, ate, ery, ess, ile, men)
 // $alt3   use weak first vowel, a->[a#], e->[@], o->[0#]
 // $alt4   separate 'h', not 'th'
 // $alt6   'to'
@@ -106,6 +106,8 @@ _hok        h'Uk
 
 // character names
 _cap   k,ap@-t@L
+_sub   s,VbskrIpt||
+_sup   s,u:p3skrIpt||
 _?A    l,Et3
 _??    sImb@L
 _braille br'eIl
@@ -149,19 +151,14 @@ _}        raItbreIs
 _¡    %Inv,3:tI2dEkskl@m'eIS@n
 _¦    broUk@nb'A@
 _¨    daIa#r'i:sIs
-_ª    fEmI2nIn'O@dI2n@L
 _«    lEft'gIl@mEt
 _­    makr0n
-²     tu:
-³     Tri:
-_¹    su:p@skrIptw'0n
-_²    su:p@skrIptt'u:
-_³    su:p@skrIptT'ri:
+²     tu:     $native
+³     Tri:    $native
+
 _´    a#kju:taksEnt
 _·    mId@Ld0t
 _¸    sEd'Il@
-//_º  maskjUlIn'O@dI2n@L
-_º    dI2gr'i:z
 _»    raIt'gIl@mEt
 _¿    %Inv,3:tI2dkw'EstS@n
 
@@ -285,42 +282,42 @@ _ja       dZ'ap@ni:z
 _zh    tS'aIni:z
 
 // Cyrillic letters
-а     a
-б     bE
-в     vE
-г     gE
-д     dE
-е     jE
-ё     jo
-ж     ZE
-з     zE
-и     I
+а     a:
+б     bE:
+в     vE:
+г     gE:
+д     dE:
+е     jE:
+ё     jo:
+ж     ZE:
+з     zE:
+и     I:
 й     ,Ik@-*'atkOji
-к     ka
+к     ka:
 л     El/1
 м     Em
 н     En
-о     o
-п     pE
+о     o:
+п     pE:
 р     Er
 с     Es
-т     tE
-у     u
+т     tE:
+у     u|:
 ф     Ef
-х     xa
-ц     tsE
-ч     tSE
-ш     Sa
-щ     StSa
+х     xa:
+ц     tsE:
+ч     tSE:
+ш     Sa:
+щ     StSa:
 ъ     jEr
 ы     j'Eru
 ь     j'eri
-э     E
-ю     ju
-я     ja
-ћ     tS;E
-ђ     djE
-ќ     kjE
+э     E:
+ю     ju|:
+я     ja:
+ћ     tS;E:
+ђ     djE:
+ќ     kjE:
 
 
 // Arabic letters
@@ -508,7 +505,7 @@ _3o T'3:
 _5o    f'If
 _20o   tw'Enti@
 _30o   T'3:ti@
-?3 _30o T'IRti@
+?5 _30o T'IRti@
 _40o   f'o@ti@
 _50o   f'Ifti@
 _60o   s'Iksti@
@@ -569,6 +566,7 @@ i.e aIi:_!   $pause
 imo    $abbrev
 inlb   $abbrev
 ios    $abbrev
+ipa    $abbrev
 irc    $abbrev
 irs    $abbrev
 isbn   $abbrev
@@ -697,6 +695,7 @@ adieu               a#dju:
 adieus         a#dju:z
 adieux         a#dju:z
 adios          aDj'o:s
+adjective      $1
 admirable      adm@r@b@L
 admirably      adm@r@bli
 admonition     adm@n'IS@n
@@ -807,7 +806,7 @@ antibody    $1
 antichrist     $1
 anticline      $1
 antidote       $1
-antifreze      $1
+antifreeze     $1
 antigen                $1
 antihero       $1
 antilog                $1
@@ -1274,6 +1273,7 @@ corral            k@r'al
 cosmos         k0zm0s
 ?3 cosmos      k0zmoUs
 cougar         ku:g3
+counteract     $3
 countered      kaUnt3d
 (coup de grâce)       ku:d@||gr'A:
 coupon         ku:p0n
@@ -1434,6 +1434,7 @@ duvet             du:veI
 d'ye           dj@
 dynamo         $1
 
+earlobe                i@3loUb
 early          3:lI
 eavesdrop      i:vzdr0p
 ebay           i:beI
@@ -1546,6 +1547,7 @@ eyrie             i@ri
 facade         f@sA:d
 façade                f@sA:d
 facetious      $alt3
+faculty                fak@Lt2i
 faeces         fi:si:z
 fahrenheit     far@nhaIt
 fairest                fe@r@st
@@ -1607,7 +1609,6 @@ fortune           fO@tSu:n
 foyer          fOIeI
 freelance      fri:laans
 freon          fri:0n
-frequent       frI2kwEnt $verb
 fricassee      frIka#seI
 frigate                frIg@t
 fringer                frIndZ3 // infringer
@@ -1718,6 +1719,7 @@ hello             h@loU
 henceforth     hEnsfo@T
 ?3 herb                3:b
 hercules       h3:kjUli:z
+heredity       h3rEdI2ti
 ?3 hereford    h3:f3d
 heretical      hI2rEtI2k@L
 hereto         hi@3'tu:
@@ -2819,6 +2821,7 @@ taffeta           tafI#t@
 takel          tak@L
 talent         tal@nt
 tallyho                talI'hoU
+timbre         tamb3
 tampon         tamp0n
 tangerine      tandZ@r'i:n
 taoiseach      ti:S@x
@@ -2853,6 +2856,7 @@ temperature       tEmprI2tS3
 ?!3 temporary  tEmpr@rI
 ?3 template    tEmpl@t
 therefore      $1
+thereof                De@r'0v
 thermos                T3:m@s
 thermostable   $alt1
 thesis         Ti:sIs
@@ -3000,6 +3004,7 @@ vertices  v3:tIsi:z
 vestige                vEstI2dZ
 vex            vEks        // for vexed
 viagra         vaI'agr@
+vibrato                vI2brA:toU
 vicar          vIk3
 vigilante      vIdZI2l'anti
 vignette       vInj'Et
@@ -3182,6 +3187,7 @@ Belgrade  $2
 Belize         bEl'i:z
 Bengal         b,Eng'O:l
 Benin          bEnIn
+Berkeley       b3:kli
 Bhutan         bu:t'an
 Bideford       bIdIf@d
 Bogota         b0g@t'A:
@@ -3218,6 +3224,7 @@ Cruz              kru:z
 Cyprus         saIpr@s
 Dahomey                $alt3
 Dallas         dal@s
+Dagestan       dA:gIst'A:n
 Damascus       $alt3
 Dakota         $alt3
 Danish         deInIS
@@ -3247,6 +3254,7 @@ Gomera            goUm'e@r@
 Gurmukhi       gU@mUki
 Harare         ha#rA:ri
 Hanoi          han'OI
+Harvard                $alt2
 Havana         ha#van@
 Hawaii         h@w'aIi:
 Hawai'i                h@w'aIi:
@@ -3283,6 +3291,8 @@ Korean            kOr'i:@n
 ?3 Korean      k3r'i:@n
 Kosovo         k0s@voU
 Kuala          kwA:la#
+Kyrgyz         k3:rgIz
+Kyrgyzstan     k3:rgIst'A:n
 Lagos          leIg0s
 Lahore         $alt3
 Lebanon                lEb@n0n
@@ -3442,10 +3452,8 @@ Abe              eIb
 Abu            abu:
 Abraham                eIbr@ham
 Ada            eId@  $onlys
-Andrea         $2
 Adrian         eIdri@n
 Agatha         aga#T@
-Angelika       $2
 Aggie          agi
 Agnes          agn@s
 Aguilera       agi:l'e@r@
@@ -3470,7 +3478,8 @@ Amy               eImi
 Andre          0ndreI
 Andrea         andri@
 Andreas                A:ndr'eI@s
-Angela         $1
+Angela         andZ@l@
+Angelika       $2
 Anita          $alt3
 Anthony                ant@ni
 Anton          ant0n
@@ -3590,11 +3599,13 @@ Giordino        dZO@d'i:noU
 Giovanni       dZ@v'A:ni
 Graeme         greI@m
 Graham         greI@m
+Gruffydd       grIfIT
 Guido          gwi:doU
 Guinevere      gwInI#vi@3
 Hadrian                heIdri:@n
 Hamish         heImIS
 Harriet                hari@t
+Harvey         hA@vi
 Heidi          haIdi
 Hecate         hEk@teI
 Hekate         hEk@teI
@@ -3652,6 +3663,7 @@ Louise            lu:w'i:z
 Luigi          lu:'i:dZi
 Luis           lu:Is
 Lupe           lu:peI
+Luther         lu:T3
 Madeleine      mad@lI2n
 Madeline       mad@lI2n
 Maeve          meIv
@@ -3771,6 +3783,7 @@ Vanessa           $alt3
 Wallace                w0lI#s
 Wally          w0li
 ?3 William     wIlj@m
+Yerevan                jEr@v'an
 Yves           i:v
 Yvonne         $2
 Zoe            zoUi
@@ -3911,6 +3924,7 @@ at               at               $nounf $only $u
 (at once)        a#t_w0ns
 ?6 (at once)     a#t_wVns
 (at will)        a#t_w'Il
+(at & t)       'eIt2i:@nt'i:
 
 with             wID           $u
 (with the)       w%IDD@2       $nounf
index 44452bf..ecd117e 100644 (file)
          _) ani          anI
          _) ani (on      anaI
          &) ani (_       'A:nI
+       @st) ani (_S1     =i
             an (ia       'eIn
             ania (c_     'eInIa
             ania (c      a#naI@
         _t) ar (_        A@
          &) ar (dis      3
          &) ar (diz      3
+         &) ar (d_$w_alt2 3
         &d) ar (d_       3
         gg) ar (d_       3
         &h) ar (d_       3
 ?3       _) ar (istocrat  a#r
        log) ar (i        @r
       marg) ar (AtA_     3r'
+        _l) ar (yn       ar
          m) ar (it       ar
          p) ar (i        ar
          p) ar (in       e@
        &sp) ass (_       @s
         rr) ass          @s
         &v) ass (_       @s
+            as (al       eIz
+         b) as (al       as
             ascii        askI
          f) asc (ia      eIS
          f) asci (s      aSI
             co (rro      k@
             co (rrup     k@
          _) costar       koUstA@
-         _) counter (@P7  k'aUnt@            // prefix
+         _) counter (@P7  k'aUnt3            // prefix
 
 .group d
             d            d
             ery (A       3j
         _v) ery          ErI2
         qu) ery          i@rI
+        _x) er (o        i@r
          z) er (o        i@r
         _C) er (o_       i@r
             er (rA       E
             iss (a_      'Is
             issimo (_    'IsImoU
        chr) is (t_       aIs
-         @) istan (_     =Istan
-         @) istani (_     Ist'A:nI
+         @) istan (_     =IstA:n
+         @) istan (_N    =Istan
          @) iste (_      'i:st
          @) is (tic_     'Is
          r) is (y_       =@s
             oea (_       'i@
          _) oe (d        i:
          p) oe (m        oUI
-            oer          oU@
+            oer          oU3
          _) oe (s        i:
          &) oe (s_S2     z
             oesopha      I2s0f@
             pro (voc     pr%0#
             pro (vok     pr@
             pro (sec     pr0
+         _) prose (l     pr0s
             pro (fil     proU
             pro (gra     proU
             pro (log     proU
             th (ern_     D
          _) thio         T,aIoU
             th (ith      D
+            th (old      th
             th (ole      th
          _) th (om@      t
         ph) th           T
          C) yes (_       aIz
          _) yes          jEs
             yeah         jEh
+            yew          ju:
         @C) y (gen       I
 ?!3      d) y (nas       I
          s) ynch         Ink
             E (ntu       'E
             E (ntous     'E
             E (o_        I2
-            Eous (_      =j@s
+            Eous (_      =i@s
          l) E (ps        E
          l) E (pt        E
             Eri (A       'i@rI2
index e040bb7..da00ea9 100644 (file)
@@ -50,8 +50,10 @@ A)   ck      k
        _) d (rA      d
        _) d (A       d
           d (A       D
+          d (_       D
           d (cY      D
           d (L03     D
+          d (v       D
        m) d          d
        n) d          d
        l) d          d
@@ -85,6 +87,7 @@ A)    ck      k
        _) gn (A      n
        _) g (A       g
           g (A       Q
+          g (_       Q
           g (cY      Q
           g (L03     Q
        m) g          g
index e67f39c..d2ea684 100644 (file)
@@ -1,7 +1,9 @@
 // Irish Gaeilge dictionary
 // written by Ronan McGuirk
-// January 2013
-// version 2.5
+//  2013
+// version 2.6.1
+// Please send comments and suggestions to espeak.gaeilge@gmail.com
+
 // This file is UTF8 encoded
 
 // letters
@@ -47,7 +49,7 @@ _cap    m'o:r
 // accent names
 
 // names of symbols
-ª_.   pO#nk
+_.     pO#nk
 _,     k0m@
 _;     semI
 _:     ko:l0n
@@ -152,22 +154,26 @@ amárach  @m'A:r@x
 amuigh @mu1'I
 amháin @w'A:in
 am aUm
-an     @n
+anaithnid      '0nah@nIdZ
 anois  @nIS
 anonn @naUn
 ann aUn
 anseo  @nS'O
+anuas  a#n'u@s
 aodh e:
 aodha e:
 aon e:@n
 (ar ais) Er'aS
 arís  @r'i:S
 as 0s
+aschurtha      '0sxUrh@
+
 atá   @t['A:          $u
 baill  bu1'i:l
 bhaill vu1'i:l
 beidh  bEg
 bhfuil w'Il
+bheas  v'e:@s
 bhuel  w'El
 ceithre kEr@
 cathair        k'0h@r
@@ -176,6 +182,7 @@ clainne     kl'InE
 chlainne       xl'InE
 chun   xUn             $u
 crainn kri:n
+chrainn        xri:n
 de     dE              $u+
 des    dEs             $u
 
@@ -184,6 +191,7 @@ di  dI              $u+
 do     dO#             $u
 domhnach d[aUn@x
 domhnaigh d[aUnig
+dúghorm       d['u:Q"Or@m
 eile   'El@
 euro ju:ro:
 faic f@ak
@@ -214,6 +222,7 @@ le  lE              $u
 (muigheo)      mu1'i:||'o:
 mhuigh vu1'i:
 (mhaigh eo)    vu1'i:||'o:
+mhama  w'0m@
 maith m'0
 mhaith w'0
           mbeadh m;O#X
@@ -230,8 +239,10 @@ orthu O#rhu
 os     o:s
 rabh   raU
 raibh rEv
+raidió        r'adi:o:
 réamhrá r'e:@vr,a:
 réidh re:
+'s     s
 samhain saUIn
          san s@n
          seo S@_
index af166cc..cef882c 100644 (file)
@@ -1,8 +1,10 @@
 
 // translation rules for Irish Gaeilge
 // This file is UTF-8 encoded
-// written by Ronan McGuirk January 2013
-// Version 2.5B
+// written by Ronan McGuirk  2013
+// Version 2.6.1
+// Please send comments and suggestions to espeak.gaeilge@gmail.com
+
 
 // Conditional rules
 // ?1  allow eclipsis as 2 separate words
@@ -12,7 +14,7 @@
 .L03 b bh mb  c ch f m mh dh   // used for words likemuir or cuid
 .L04 b bh mb    // for words like beag
 .L05 nn nna nnas dh r s ntas nach nas nais dar mar rtha nta mh chas chais cht  chta nnach ntach llach d l  ll             // word endings where @ is to repleace ea or a
-.L06 aidh idh aí á eá eadh adh ad imid aimid imis aimis  ainn inn idís aidís éin     // word endings where f changes to h
+.L06 aidh idh aí á eá eadh adh ad adsa imid aimid imis aimis  ainn inn idís aidís éin      // word endings where f changes to h
 .L07 b c g ch bh gh mb
 .L08 lc ll nt bhse       // for words like cailc
 .L09 cl cr chr  f
 .L12 á é ó eo ua   // when followed by i
 .L13 oc omb
 .L14 río dún gnío        // followed with mh
-.L15 c ch  f  m d dh g gc  gh mh // aoi following
+.L15 c ch  f bhf  m d dh g gc  gh mh // aoi following
 .L16 b c bh ch gr ghr    // for inn word ending
 .L17 l le li niste nn
-.L18 n nt nte neann neadh ntear nim nfear nfinn
+.L18 n nt nte neann neadh ntear nim nfear nfinn nfidh nfidis neamar
 .L19 na nea ra rea la llea arga     // word endings with silent dh
 .L20 eo eoir eá eabh io iu iú               // slender m
 .L21 ll nn ndán nntán
-.L22  eadh eag eaga eagán eagáinín eo  io iu iú eall eabh ealtaine
+.L22  eadh eag eaga eagán eagáinín eo  io iu iú eall eabh ealtaine eann
 .L23 ea eo i
 .L24 b mb bh g gh p ph bp m mh
 
         abht       aU#t[
         amhr       aUr       //        words like amhras
      K) amhl       aUl
-        abhra      aUr@      //        words like slabhra
+        abh (C     aU        //        words like slabhra
         aghaidh    aIg
      t) abhair     u:@r
     th) abhair     u:@r
      t) abhar      u:@r
     th) abhar      u:@r
      _) an (sL01   @n
-     _) an (-      0n        // an prefix
+     _) a (nA      @
+     _) an (_      @n
+     _) an (-      '0n       // an prefix
      é) a          @         // words like féach
      X) a (nn_     aU#
      X) a (ll_     aU#
@@ -77,8 +81,9 @@
      _) ao         e:
         ae         e:
         amhna (_   aUn@
+        arraing    arIng
+     _) ath (@@P3  ,0_
 
-        
 .group á
         á          A:
      @) á          ,A:
@@ -89,7 +94,7 @@
         áinig      A:nIg
         ái         'A:i
 
-        
+
 .group ai
         ai         a#
    L04) ai (L17    0#
      m) ai (n      0#
      c) ai (th     0#
     ch) ai (th     0#
+        ai (tín    0#
         ai (d      0#
      p) ai (l      0#
      @) ai (L11_   I
      X) aigh       'aI
         aigh       aI#       L04)      aill    (_      wi:l
         aing (_    Ing
+        ai (llimh  '0        // words like Gaillimh
+
 
-        
 .group b
         b          b         // broad
    L01) b          b;        // slender
         bh (_      vv
         bh (L22    vj        // slender
    L01) bh         v
-?1 _m_) b (@
+?1 _m_) b (@ 
      _) bhf        v         // urú broad
      _) bhf (L22   v;        // urú slender
      _) bp         b         // urú broad
      a) bh (a      U         // for example cabhair
    ear) bha        u:        // words like Cearbhall
         bhfaigh    v'aI
+     _) beann (@   ba#n
+     _) bheann (@  va#n
+     _) bun (C@P3  b,Un
 
-        
 .group c
         c          k
         c (L01     k;        // slender
         ch (L01    C;
         ch (é+     C;
         ch (ei+    x;
-?1 _g_) c (@
-?1 _g_) c (L01
+?1 _g_) c (@ 
+?1 _g_) c (L01 
      _) cabhr      k'aUr
      _) chabhr     x'aUr
+     _) ceann (C@P5 k;,aUn
+     _) cheann (C@P6 C;,aUn
 
-     
 .group d
         d          d[        // broad
    L01) d          dZ        // slender
         d (L22     dZ        // slender
         d (L01     d;        // slender
      i) d (i       dZ
-?1 _n_) d (@
+?1 _n_) d (@ 
         dh         Q         // broad
         dh (ui     Q         // broad
         dh (ao     Q         // broad
 ?1   _) d (_t      d[
 ?1   _) d (_tL01   dZ
      _) d' (@P2    d
+
+     _) d'         d
+     _) d (_'fh    d
+
+        d'fh (L01  d
      i) dh (_      g
      a) dh (_      X
      o) dh (_      X
         dheartháir gr@h'A:r
         deirfiúr   d;r@f'u:r
         dheirfiúr  g;r@f'u:r
+     _) do (Ch@@P2 d[,U_
+     _) dí (@@P2   d,i:
 
-        
 .group e
         e          E#
         eá         A:
      r) ei (m      aI
         eighea     aI
         eighea     aI
+     s) ei (nn     aI
+    sh) ei (nn     aI
         eigh       aI
 
         eo         o:
-        eogh       o:
+        eoi        o:
+        eogha      o:
+        eoghai     o:
      d) eo (ch     O#
+    dh) eo (ch     O#
      _) eo (ch     O#
      s) eo (_      @
 
-     
+
 .group é
         é          'e:
         éi         'e:
+        éa         'e:
      _) éi (rig    aI        // words like éirigh
+    _h) éi (rí     aI
      _) éi (rí     aI        // words like éirí
      _) éireoidh   aIro:Ig
         éacs       e:@ks
 
-        
+
 .group ea
         ea         a#
+        eai        a#
      X) ea (L21_   aU
         ea (ltaine aU
      g) ea (ll     aU
+     l) eamh (n    aU
+    dr) ea (m      aU
      X) ea (ch     0
   _L04) ea (g      @
   _L04) ea (dh_    @
         eanbhean   'an@v,an
         eadhb      aIb
 
-        
+
 .group f
         f          f         // broad
         f (L22     f;        // slender
         fh (éin_   h
         fh (L22    ;         // slender
      @) f (L06_    h
-?1 _bh_) f (@
-?1 _bh_) f (L22    ;
+     _) fo (C@@P2  f,U
+     _) fogh       f'aU
+?1 _bh_) f (@ 
+?1 _bh_) f (L22     ;
+
 
-     
 .group g
         g          g         // broad
         g (L01     g;        // slender
-?1 _n_) g (@
+?1 _n_) g (@ 
      _) gh         Q"
      _) gh (L01    Q"j
      _) gc         g         // urú broad
         gh (n      X@
         gheobh     j'o:
         gabh       gaU
+     _) gearr (C@P5 g;,aR
+     _) ghearr (C@P6 Q"j,aR
 
-        
 .group h
         h          h         // silent
 
-        
+
 .group i
         i          I
      _) i          I
         ia         i@
         ia (tha    i:
         io         O#
+        io (dá     I
      _) io (nadh   u://      words like ionadh
+     s) io (mb     I
+    sh) io (mb     I
+
    _pr) io (n      u:
    L16) inn (_     i:n
         iai        i:i
    L12) i          i         // non syllabic short i after long vowel
         iú         u:
      m) i (d_      i:        // verb ending
+     _) in (@@P2   ,In_
+     _) ionad (C@@P5 ,Ona#d[
 
-     
 .group í
         í          'i:
+        íomh       'i:v
+        íochn      'i:xn
+        í (_       i:
+        ín (_      i:n
+        ío         i:@
+
 
-        
 .group l
         l          l         // broad
    L01) l          l;        // slender
         ll (L23    l;
         l (g       l@
         l (b       l@
+     _) lorg (@@P4 l,Or@g
+     _) lán (C@@P3 l,A:n
 
-        
 .group m
         m          m         // broad
         m (L20     m;        //slender
      _) mh (n      v@
   léir) mheas      vas
      r) m          @m        // words like gorm
+     _) mear (@@P4 m,ar
 
-     
 .group n
         n          n         // broad
         n (L01     n;        // slender
         n (ch      n@
      c) n          @n
     ch) n          @n
+     _) nasc (C@@  n,0sk
 
-    
 .group o
         o          O#
      _) o          'O
         odl (a     O#l
         oí         i:
 
-        
+
 .group ó
         ó          'o:
         ómhai      o:@
 
-        
+        ói (p@     'o:
+
 .group oi
         oi         O
   _L15) oi (+      @'I
      _) oi (leá    'I
         oidh       aI
         oir (_     'ERR
+   _sc) oi (r      O
         oigh (ea   aI
 
-        
+
 .group p
         p          p         // broad
         ph         f         // broad
         p (L22     p;        // slender
         ph (L20    f;        // slender
-?1 _b_) p (@
+?1 _b_) p (@ 
 
 
 .group r
   L12i) r (t_      Z
         rr         R
         rg         r@g
+        rgh        rQ"
    L01) rg         R@g       // slender
         r (bh      r@
-        ríomh      ri:@v
      s) r (A       R
      _) ramh       raU
 
-     
+
 .group s
         s          s         // broad
    L01) s          S         // slender
         s (cL01    S
         s (CCL01   S         // slender
         s (pCé     s         // broad
-?1 _t_) s (@
+?1 _t_) s (@ 
         sh         h
         sh (CL01   h
         sh (L01    h;
         s (lL01    S
+    _') s (_       s         // 's in poems etc
+     _) sain (@P4  s,an
 
-        
 .group t
         t          t[        // broad
    L01) t          c         // slender
 ?1   _) t (_L01    c
   L01C) t          tS        // slender after consonant
         t (CL01    tS        // slender with following consonant before vowels
-?1 _d_) t (@
+?1 _d_) t (@ 
         th         h
         th (L01    h;
   L01C) th         h
         thne (_    h@nE
      A) th (_                // silent th at word end
 
-     
+
 .group u
         u          U#
         ua         u@
         uai (d     ui
         uá         u:'A:
         ui         I
+        ui (s      U
+        ui (sce_   I
         uinn (_    'i:n
         uinti      U#'i:ntI
     _b) uí         wi:
    _bh) uí         wi:
      g) uí         wi:
+    gh) uí         wi:
         umh        u:
    L03) ui         @I
     _d) u (l_      O#
     gh) ui (gh_    @i:
         uí         i:
         uachai     'ux@
+     _) uimhir (C@P6 ,IvIR
+
 
-        
 .group ú
         ú          u:
         únmh       u:nv
index f77a850..1da8c83 100644 (file)
 
 // Numbers
 // devanagari numbers are changed to latin characters before translation
-_0        s'u:n.jV
+_0        S'u:nj@-
 _1        'e:k
 _2        d'o:
 _3        t'i:n
-_4        c:'a:r:
+_4        c'a:r
 _5        'pa~c
-_6        c#'@2
+_6        c#'VH
 _7        s'a:t
 _8        'a:t.#
 _9        n'O:
 ?3  _9    n'aU
 
 _10       d'Vs
-_11       gj'a:r-ah
-_12       b'a:rah
-_13       t'e:r@2h
-_14       c#'O:d@2h
-_15       p'Vndr@2h
-_16       s'o:l@2h
-_17       sVtr@2h
-_18       a:t#:arah
+_11       gj'a:*VH
+_12       b'a:rVH
+_13       t'e:rVH
+_14       c'O:dVH
+_15       p'VndrVH
+_16       s'o:lVH
+_17       sVtrVh
+_18       Vt.#'a:rVH
 _19       Unn'Is
 
 _20       b'i:s
-_21       Ik:'Is
-_22       b'a:Is
-_23       t'ue:Is
-_24       c'O:bIs
-_25       p@c:'Is
-_26       c#@bb'i:rs
-_27       s@t:'a:Is
-_28       at#:'a:Is
-_29       ,Unt'Is
+_21       Ik:'is
+_22       b'a:is
+_23       t'e:is
+_24       c'O:bis
+_25       p'Vc:is
+_26       c#Vbb'is
+_27       s@t:'a:is
+_28       at#:'a:is
+_29       'Untis
 _30       t'i:s
 
-_31       Ik@t:'Is
-_32       b'at:'I'S
-_33       tE~t'Is      // E~ ?
-_34       cO~t'Is
-_35       pE~t'Is
-_36       c#aT'tIs
-_37       sE~t'Is
-_38       art'Is
-_39       Unta:l'Is
-
-_40       ca:l'Is
-_41       Ikta:l'Is
-_42       baIa:l'Is
-_43       tE~ta:l'Is
-_44       cO:wa:l'Is
-_45       paI'nta:l'Is
-_46       c#hIja:l'Is
-_47       sE~ta:l'Is
-_48       arta:l'Is
-_49       'Un^ca:s
-
-_50       p@c'a:s
+_31       Ik@t'is
+_32       b'at:is
+_33       t'E~tis      // E~ ?
+_34       c'O~tis
+_35       p'E~tis
+_36       c#'Vt:is
+_37       s'E~tis
+_38       'Vrtis
+_39       Unt'a:lis
+
+_40       c'a:lis
+_41       Ikt'a:lis
+_42       baI'a:lis
+_43       tE~t'a:lis
+_44       cO:v'a:lis
+_45       paInt'a:lis
+_46       c#Ij'a:lis
+_47       sE~t'a:lis
+_48       Vrt'a:lis
+_49       'Unca:s
+
+_50       pVc'a:s
 _51       Ikj'a:wVn
 _52       b'a:wVn
-_53       t'IrpVn
-_54       c'Ou:wVn
-_55       p'ac#pVn
-_56       c#h@p:'Vn
-_57       santa:'w@n
-_58       at#:a:'w@n
-_59       Uns'Vt#
+_53       t'Ire:pVn
+_54       c'O:wVn
+_55       p'VcpVn
+_56       c#'Vp:Vn
+_57       sVt'a:w@n
+_58       at.#:'a:w@n
+_59       'UnsVt.#
 
 _60       s'a:t.#
-_61       'Iks@t.#
-_62       b'a:s@t.#
-_63       t'Irs@t.#
-_64       cO:'s@t.#
-_65       paI's@t.#
-_66       c#'Ija:s@t.#
-_67       s'Vrs@t.#
-_68       ars@t.#
-_69       Un@h,at:'Vr:
-
-_70       sat:'Vr:
-_71       Ik#at:'Vr:
-_72       b@hat:'Vr:
-_73       tIhat:'Vr:
-_74       cO:hat:'Vr:
-_75       pac#,at:'Vr:
-_76       c#Ihat:'Vr:
-_77       s@t@hat:'Vr:
-_78       at#hat:'Vr:
-_79       ,Un^Ia:s'i:
-
-_80       ,Vss'i:
-_81       Ikja:s'i
-_82       baIa:s'i
-_83       tIra:s'i
-_84       cO:ra:s'i
-_85       pI'ca:s'i
-_86       c#Ija:s'i
-_87       sVt:a:s'i
-_88       at#:a:s'i
-_89       nVwa:s'i
-
-_90       nVb:'e:
-_91       Ikj'a:n@we:
-_92       b'a:n@we:
-_93       tIr'a:n@we:
-_94       cO:r'a:m@we:
-_95       p@c'a:n@we:
-_96       c#Ij'a:n@we:
-_97       s@t:'a:n@we:
-_98       at#:'a:n@we:
-_99       nIn^j'a:n@we:
+_61       'IksVt.#
+_62       b'a:sVt.#
+_63       t'Ire:sVt.#
+_64       c'O~sVt.#
+_65       p'E~sVt.#
+_66       c#Ij'a:sVt.#
+_67       s'Vr.sVt.#
+_68       Vr.sVt.#
+_69       'UnVht:Vr
+
+_70       s'Vt:Vr
+_71       'IkHVt:Vr
+_72       'bVhVt:Vr
+_73       t'IhVt:Vr
+_74       cO:H'Vt:Vr
+_75       pVcH'Vt:Vr
+_76       c#IH'Vt:Vr
+_77       sVtH'Vt:Vr
+_78       VtH'Vt:Vr
+_79       Un'a:si
+
+_80       'Vssi:
+_81       Ikj'a:si
+_82       bVj'a:si
+_83       tIr'a:si
+_84       cO:r'a:si
+_85       pVc'a:si
+_86       c#Ij'a:si
+_87       sVt:'a:si
+_88       at#:'a:si
+_89       nVw'a:si
+
+_90       n'Vb:e:
+_91       Ik:j'a:n@be:
+_92       b'a:n@be:
+_93       tIr'a:n@be:
+_94       cO:r'a:m@be:
+_95       pVnc'a:n@be:
+_96       c#Ij'a:n@be:
+_97       sVt:'a:n@be:
+_98       Vt#:'a:n@be:
+_99       nIn^j'a:n@be:
 
 _0C    s'O:
-_0M1   h@J,a:r
+_0M1   h'VJa:r
 _0M2   l'a:k#
-_0M3   k@ro:r.V
-_0M4   'Vr@b
-_0M5   k#'Vr@b
-_dpt      _d@s@ml'o:_        // ?? what is Hi for "." ?
+_0M3   k@r'o:r.V
+_0M4   'VrVb
+_0M5   k#'VrVb
+_dpt      _d@s@ml'o:_   
 
 // Single consonants
 क      k@
index 992967d..eb43fe0 100644 (file)
 
 .group ै
         ै          E:        // ?? [aI] [E:] [&:]
+        ैं         E~ 
         ै (ँ       E~ 
         ैं (_      E~
         ैँ (_      E~
         क़         qV
         क़ (B      q
 
+        क्क         k:V   // kk -> k:
+        क्क (B      k:
         क्ष          kSV
         क्ष (B       kS
         
         ट          t.V
         ट (B       t.
         ट (्य      t.:
+        ट्ट          t.:V    // t.t. -> t.:
+        ट्ट (B       t.:
+        ट्ठ          t.#:V    // t.t.# -> t.#:
+        ट्ठ (B       t.#:
 
 .group ठ
         ठ          t.#V
         ठ (B       t.#
-
+        
+        ठ्ठ          t.#:V   // t.#t.# -> t.#:
+        ठ्ठ (B       t.#:
+        
 .group ड
         ड          d.V
         ड (B       d.
         त (B       t
         त (्य      t:
 
+        त्त          t:V   // tt -> t:
+        त्त (B       t:
+        
 .group थ
         थ          t#V
         थ (B       t#
         प          pV
         प (B       p
         प (्य      p:
+        
+        प्प         p:V      // pp -> p:
+        प्प (B      p:
 
 .group फ
         फ          p#V
index 6b07d71..97a0984 100644 (file)
@@ -2,6 +2,8 @@
 // This file is UTF8 encoded 
 // Spelling-to-phoneme words for Armenian
 
+// ?1  West Armenian
+
 // names of letters
 _ա    aIb
 բ     ben
@@ -20,7 +22,7 @@ _ը   '@t#
 կ     ken
 հ     ho
 ձ     dza
-ղ     r"ad
+ղ     r"at
 ճ     ce
 մ     men
 յ     hi
@@ -30,15 +32,16 @@ _ը '@t#
 չ     tSa
 պ     pe
 ջ     dZe
-ռ     **a
+ռ     R2a
 ս     se
 վ     vev
 տ     tyn
 ր     re
-ց     tso
+ց     ts#o
 ւ     hyn
 փ     p#yr
 ք     k#e
+և     jev
 _օ    o
 ֆ     fe
 
@@ -52,6 +55,24 @@ d    di
 e      e
 f      ef
 
+// symbols
+$      dolar
+%      տոկոս $text
+*      աստղանիշ $text
++      գումարած $text
+=      հավասար $text
+
+
+_՝    b'ut#
+_՞    harts#ak'an
+_՛    S'eSt
+_։    verdZak'et  // U+0589
+_:     verdZak'et
+_,     storak'et
+_.     midZak'et
+_֊    jent#amn'a  // hyphen
+_՜    bats#akantSut#j'un
+_՟    pat'iw
 
 
 // numbers
@@ -82,5 +103,41 @@ _dpt        _sto**ak'el_
 
 
 // function words
+ես   $u+  // pronouns
+դու $u+
+եք   $u+
+Դուք       $u+
+նա   $u+
+այն $u+
+մենք       $u+
+նրանք     $u+
+
+դուք       $u+
+ենք $u+
+են   $u+
+
+այդ $u+
+այս $u+
+դա   $u+
+որ   $u+
+էր   $u+
+
+մի   $u+
+է     $u+
+
+հետ $u+  // prepositions
+
+եվ   $u+  // and
+իսկ $u+ $brk  // and, but
+կամ $u+  // or
+որը $u+  // which
+       
+կարող     $u+  // can
+
+       
+
 
 
+// exceptions
+ով   ov
+ովքեր     ovk#er
index 09453c2..a0ef602 100644 (file)
@@ -2,8 +2,10 @@
 //  (consonants are changed for Armenian-West in the voice file "hy-west")
 // This file is UTF-8 encoded
 
+// ?1  West Armenian
+
 .L01 բ գ թ կ պ տ ք
-.L02 ու այ իւ իյ ոյ               // other vowel sounds
+.L02 ու այ իւ իյ ոյ    ա ե ը ի ո օ     //  vowel sounds
 
 // ligature
 .replace
@@ -12,7 +14,7 @@
 
 .group ա
         ա        a
-        այ       aI
+        այ (K    aI
         այ (_    a
 
 .group բ
@@ -41,7 +43,7 @@
 .group է
         է        e
         էօ       W
-        էյ       eI
+        էյ (K    eI
 
 .group ը
         ը        @
@@ -57,7 +59,7 @@
         ի        i
         իւ       y
         իւ (_    iv
-        իյ       i@
+        իյ (K    i@
 
 .group լ
         լ        l
@@ -97,8 +99,9 @@
    L02) մ (_     m
 
 .group յ
-        յ        h       // ?? [j]
+     _) յ        h       // ?? [j]
      _) յ (C     h@
+        յ        j
 
 .group ն
         ն        n
      _) ջ (C     dZ@
 
 .group ռ
-        ռ        **
-     _) ռ (C     **@
+        ռ        R2
+     _) ռ (C     R2@
 
 .group ս
         ս        s
 
 .group ր
         ր        r
+   L02) ր (L02   *
      _) ր (C     r@
      C) ր (_     @r
    L02) ր (_     r
         ֆ        f
      _) ֆ (C     f@
 
-.group
-        $      dol@
 
 
index 6f36f22..11635ee 100644 (file)
@@ -1,4 +1,5 @@
-// Nepali Language.\r
+\r
+// Nepali Language.\r
 // This ne_rules file is prepared by Him Prasad Gautam < himjee@yahoo.com >.\r
 // This file is UTF-8 encoded.\r
 \r
 .group आ\r
        आ     a:\r
        आँ  a~''\r
-       आइ  a:I\r
-       आउ  a:U\r
-       आऊ  a:U'\r
 \r
 .group इ\r
 \r
 .group ा\r
        ा     a:,k'a::r@ // If not followed to a Consonant.\r
        C) ा  a:\r
-       ाव  aU\r
        C) ाँ       a~'\r
 \r
 .group ि\r
 \r
 // The Latin letter a-z are automatically translated into English.\r
 \r
-\r
index bc53e93..c3cfbe8 100644 (file)
@@ -36,6 +36,8 @@ _s    Es
 _t     te:
 
 _cap   h'o:fdlEt@r
+_sub   s'8pskrIpt||
+_sup   s'yp@rskrIpt||
 _?A    l'Et@r
 _??    s'imbo:l
 
@@ -112,7 +114,7 @@ _6X z'Est@x
 _7X    z'e:v@nt@x
 _8X    t'Axt@x
 _9X    n'e:g@nt@x
-_0C    h'OndErt
+_0C    h'Ond@rt
 _0M1   d'WyzEnt
 _0M2   m'iljun
 _0M3   m'iljArt
@@ -377,6 +379,7 @@ keten               $alt
 loochen                $alt
 oefen          $alt
 open           $alt
+reden          $alt
 regen          $alt
 reken          $alt
 schepen                $alt
@@ -1098,6 +1101,7 @@ gijzel            $alt
 gispel         $alt
 gniffel                $alt
 goochel                $alt
+googel         $alt
 gorgel         $alt
 grabbel                $alt
 grendel                $alt
@@ -1404,6 +1408,7 @@ vondel            $alt
 accessoire      aksEsw'ar@
 accessoires     aksEsw'ar@s
 actiepunt      Aksip8nt
+actieve                Akt'iv@
 adhesie                Ath'e:zi
 agenda         $2
 aldus          Ald'8s
@@ -1453,6 +1458,7 @@ december  $2
 desillusie     dEsIlyzi
 dieet          $2
 diesel         diz@l
+diner          din'e:
 //discussie    $2
 divers         div'Ers
 diftongering    dIft,ON'e:rIN
@@ -1462,6 +1468,7 @@ eensgelijks       e:nsQ@l'EIks
 elfstedentocht ,Elf'ste:d@ntoQt
 embouchuur     A~buS'yr   // embouchure
 enorm          $2
+enquête               A~k'Et@ $alt2
 erosie         e:r'o:zi
 eucharistie    $4
 explosie       $2
@@ -1486,6 +1493,8 @@ invasie           $2
 januari                $3
 kadaster       $2
 leesregel      le:sre:Q@l
+lunch          l8nS
+lunches                l8nS@s
 mangat         $alt3
 materie                ma:t'e:ri
 maatregel      ma:tre:Q@l $alt2
@@ -1531,6 +1540,7 @@ ongerieflijk      $3
 partijvoorzitters $2
 periferie      pI:rifI:r'i
 pistache       pist'AS
+privilege      privil'e:Z@ $alt2
 proces         $2
 projectielen    $3
 renaissance    rEne:s'A~s@
@@ -1548,6 +1558,7 @@ serie             sI:ri
 sms'jes                EsEm'Es_j@s
 spektakel      $2
 tegennatuur    $4
+tralie         $1
 travestie      $3
 verderop       $3
 vergezicht     vErQ@zIxt
@@ -1556,6 +1567,7 @@ verrekijker       vEr@kEIk@r
 verste         vErst@
 verte          vErt@
 volledig       $2
+voordeel       $1
 vrouwengek     $alt3
 waarschijnlijk $2
 wanen          v#a:n@n
index 76eb12b..9431fd8 100644 (file)
 
         @@C) a (_         =a:
           _) aan (@P3     'a:n
-          @) aar (_S3    a:r
-          @) aard (_S4   a:rt
+          &) aar (_S3     a:r
+          &) aard (_S4    a:rt
              aa (rd_      'a:
              aa (C_       'a:
           z) aa (m_       a:
           t) a (bleau     a:
           @) abel (_      'a:b@l
           @) abele (_     'a:b@l@
+          @) ace (_       e:s       // ?? interface
           m) ach (in      %a:S
           _) actie (@P5   'Aksi
           _) af (C@P2     'Af
           _) be (zem      be:
           _) be (zig      be:
           _) beu          bY:
+          _) bezoekers (@P9 b@z'uk@rs
 
 
 .group c
           @) ci (ë        S
              ci (o        S
              ck           k
+             
+             ces (_       s'Es
              coach        ko:tS
-
           _) computer (@P8 kOmpj'ut@r 
           _) congres      kOnQr'Es
+          _) concentratie (@P12 kOnsEntr'a:tsi
              co (ncert    k%O
 
 
           &) end (_       @nd
           &) ende (_S1    @
           &) enden (_S2   @n
-             eden         e:d@n
+             eden (_        e:d@n  // ?? 
           @) ent (_       'Ent
           @) ent (e_      'Ent
           @) ent (en_     'Ent
          @z) es (_S1      s  
           @) es (_S2qd    'Es   // double the previous vowel
           @) es (_$w_alt2S1 s   // just remove 's'
+         @) e (s_$p_alt2+S1 s
         KAC) es (_S2e     @s
          mb) es (_S1      s
          nd) es (_S1      s
           @) eur (_       'Y:r
 
           &) e (nB@       E2
+          &) e (ntig      @
          _p) e (nibel     e:
          id) e (nt        E
        pres) e (nt        E
              er (ij_      @r
         tol) er (abel     @r
         mis) er (abel     @r
+       hond) er (d_       @r
           _) erger        ErQ@r  // ergeren
           &) era (_       @ra:
           @) er (aar_     @r
           &) er (C@       E2r
 
+.group ê
+             ê            E
 
 .group f
              f            f
           @) gi (eus      Z
           @) gi (euz      Z
        reli) gi (eu       Qij
+          _) goog (el     gu:g
 
        
 .group ge
           _) ge (@P2      Q@
              ge (bied     Q@
+          _) gebruikers (@P10 Q@br'Wyk@rs
           _) gee          Qe:
           _) gei          QEI
              gener (aal   Q,e:n@r
           &) ika (_       =ika:
           &) iko (_       =iko:
           _) in (C@P2     'In
-//        _) in (gP2      'In
           _) in (do       In
              ine (_       'in@
              ines (_      'in@s
+          _) inn (@P2 'I    // ?? inneren
+          _) inter        Int@r
              io (nage     iO
              io (de_       i'o:
              iodes (_      i'o:d@s
           @) isme (_      'Ism@
           @) ist (_       'Ist
           @) isten (_     'Ist@n
-_) inn (@P2 'I    // ?? inneren
 
 .group j
              j            j
+             
+          _) jaar (@P4    j'a:r
+             jaar (lijk   ja:r
              jou (rna     Zu
 
 
@@ -478,6 +492,8 @@ _) inn (@P2 'I    // ?? inneren
           &) lijker (_S6  l@k@r
           &) lijkere (_S7  l@k@r@
           &) lijkheid (_S8 l@khEIt
+          &) lijkheden (_S9 l@khe:d@n
+//          &) lijks@ (_    l@ks@
           &) lijkst (_S6  l@kst
           &) lijkste (_S7  l@kst@
 
@@ -497,6 +513,7 @@ _) inn (@P2 'I    // ?? inneren
 
             management    ma:nIdZm@nt
          _) mee (@P3      m'e:
+         _) mee (rC       mI:
             menu (_       m@ny
          _) mi (cro       mi
          _) mi (s@        m%I
@@ -513,6 +530,7 @@ _) inn (@P2 'I    // ?? inneren
          _) mis (loP3     m'Is
          _) mis (tA       m'Is
          _) misver (@     m'Isf@r
+         _) muziek (@P6   myz'ik
 
 .group n
              n            n
@@ -527,6 +545,7 @@ _) inn (@P2 'I    // ?? inneren
           _) na (C@N      n'a:
           _) na (C%       nA
           _) na (cht      nA
+          _) najaars (@P7 n'a:ja:rs
           _) narci (s     n%ArsI
           _) na (rc       n%A
           _) na (der      na:
@@ -539,10 +558,11 @@ _) inn (@P2 'I    // ?? inneren
              na (vig      n%a:
           _) na (vr       na:
           _) na (volg@    n%a:
-          _) noord (@P5   no:rd
           _) nieuws (@P6  n'iws
          @@) nis (_S3    nIs
          @@) nisen (_S5  nIs@n
+          _) noord (@P5   no:rd
+          _) notitie (@P7 no:t'itsi
 
 
 .group o
@@ -586,6 +606,7 @@ _) inn (@P2 'I    // ?? inneren
          tr) ou (vail     u
              ouve (rtu    uvE
           _) over (@P4    ,o:v@r
+          _) overigen     o:v@r@Q@n
           _) overheid     'o:v@rhEIt
            t) ou  (r          u:
 
@@ -644,21 +665,25 @@ _) inn (@P2 'I    // ?? inneren
           C) r (A         r
              rr          *r
 
-             recherch     r@SErS
-             revanch      r@vA~nS
              route        rut@  // route(s)
 
 .group re
           _) re (geren    r@
           _) re (geer     r@
+          _) regel        re:Q@l
           _) re (cent     r@
           _) re (cept     r@
           _) re (ceptief  re:
+          _) re (ces      r@
           _) re (clam     r@
+          _) register     r@Q'Ist@r
+             reme (die    r@m'e:
           _) re (serve_   r@
           _) re (cord     re'
-         _) regering     r@Q'I:rIN
+          _) regering     r@Q'I:rIN
              repre (saill re:pre:
+             recherch     r@SErS
+             revanch      r@vA~nS
 
 
 .group s
@@ -695,6 +720,7 @@ _) inn (@P2 'I    // ?? inneren
         CAr) sie (_       =zi
 
           _) stads (@P5   st'Ats
+          _) stage (@P5   st'a:Z@
           _) standaard (@P9 st'Anda:rt
           _) start (@P5   st'Art
           @) straat (_S6 stra:t
@@ -789,7 +815,9 @@ _) inn (@P2 'I    // ?? inneren
           _) verkeers (@P8 v@rk'I:rs
 //          _) verge (@P5   vErg@
 //          _) verge (le    v@rQ'e:
+          _) voorjaars (@P9 v'O:rja:rs
           _) voort (@P5   v'O:rt
+          _) vrijwilligers (@P13 vrEIv#'Il@Q@rs
 
 
 .group w
@@ -813,8 +841,10 @@ _) inn (@P2 'I    // ?? inneren
           _) weg (@P3     v#'EQ
           _) weg (en      v#e:Q
           _) weg (e_      v#e:Q  // bewegelijk
+          _) werk (@P4    v#'Erk
           _) west (@P4    v#Est
-          _) wr           vr
+          _) woon (@P4    v#'o:n
+          _) wr (@        vr
 
 
 .group x
index 5a160b5..f44574b 100644 (file)
      ੱ) ਯ (_       j:
 
 .group ਰ
-        ਰ          RV
-        ਰ (B       R
-     @) ਰ (_       R
-     ੱ) ਰ          R:V
-     ੱ) ਰ (B       R:
-     ੱ) ਰ (_       R:
+        ਰ          rV
+        ਰ (B       r
+     @) ਰ (_       r
+     ੱ) ਰ          r:V
+     ੱ) ਰ (B       r:
+     ੱ) ਰ (_       r:
 
 .group ਲ
         ਲ          lV
index 4299e9b..8e3eb0a 100644 (file)
@@ -69,6 +69,8 @@ v     ve       // not Roman numbers
 x      Sis#
 
 _cap   maI'uskulU
+_sub   ||subskR'itU
+_sup   ||sob*eskR'itU
 _?A    l'etR&_
 _??    s'imbolU_
 _#32   esp'asU
@@ -81,9 +83,10 @@ _#9  tab
 +      maIs#           $max3
 %      pors'eINtU      $max3
 &      _'e_
-@      &x'ob&
+@      ax'ob&
 ¤     'eU*U
 €    'eU*U
+£     l'ibR&
 §     p&*'agRafU
 
 
@@ -128,10 +131,10 @@ _¡       ,eskl&mas,&U~,iNvertS'id&
 _¿    ,iNtex,ogas,&U~,iNvertS'id&
 
 _"     'abRi;'asp&||d'upl&s#
-?1          O*@-din'almaskul'i~nU
-?2   _º       o*@-dZin'almaskul'i~nU
-?1          O*@-din'alfemin'i~nU
-?2   _ª       o*@-dZin'alfemin'i~nU
+?1   º        O*@-din'almaskul'i~nU
+?2   º        o*@-dZin'aUmaskul'i~nU
+?1   ª        O*@-din'alfemin'i~nU
+?2   ª        o*@-dZin'aUfemin'i~nU
 °     gR'aU
 
 
@@ -185,7 +188,7 @@ _8X oIt'eINt&
 ?2   _9X       nov'eINt&
 _1C0   s'eIN
 ?1_0C  s'eINtus#
-?2_0C  s'eINtUs#
+?2_0C  s'eINtUz
 _1C    s'eINtu
 ?1_2C  duz'eINtus#
 ?2_2C  duz'eINtUz
@@ -296,10 +299,10 @@ unts      $abbrev
 usb    $abbrev
 
 
-dr     $dot
-dra    $dot
-mr     $dot
-mrs    $dot
+dr     dowtor  $dot
+dra    dowt'o*&        $dot
+mr     m'ister $dot
+mrs    m'irsys $dot
 prof   pR'Of   $dot
 profº pR,ofes'or
 profª pR,ofes'o*&
@@ -313,7 +316,7 @@ sr  $dot
 // articles
 o      $u+     $nounf
 a      $u+     $nounf
-os     Us      $u+     $nounf
+os     $u+     $nounf
 as     $u+     $nounf
 ?1 a    & $u+   $nounf
 
@@ -409,7 +412,7 @@ aos $u      $nounf
 para   $u              // for,to
 pro    pRU     $u      $nounf
 pra    $u      $nounf
-pros   pRUs    $u      $nounf
+pros   $u      $nounf
 pras   $u      $nounf
 prò   $u      $nounf
 prà   $u      $nounf
@@ -431,7 +434,7 @@ com $u              // with
 // conjunctions
 ?1     e       i $u    // and
 ?2     e       i $u   // and
-se     $u+     $verbf          // if
+se     $u+             // if
 
 
 ?2     mas     $u      // but
@@ -597,10 +600,10 @@ pôde     $u+
 pudemos        $u+
 puderam        $u+
 
-poderei        $u3+
-poderá        $u3+
-poderemos      $u+
-poderão       $u+
+poderei        p%ode*eI $u+
+poderá        p%ode*a $u+
+poderemos      p%ode*'emUs $u+
+podeão        p%ode*&U~ $u+
 
 
        // ir - to go  (used to make future tense)
@@ -641,6 +644,7 @@ jamais      $u+     $verbf
 abacaxi                abakaSy
 abordo         $alt
 aborto         $alt  $verb
+absorta                $alt2
 acerto         $alt2 $noun
 acertos                $alt2
 acocho         $alt2 $noun
@@ -653,11 +657,14 @@ aeroporto $alt2
 aeroportos     $alt
 alcateia       $alt
 alcova         $alt2
+alegro         $alt2 $noun
 alferes                $alt
 almoço                $alt $verb
 ameba          $alt
 amores         $alt2
 amorno         $alt
+amuleto                $alt2
+ampere         $alt
 ampola         $alt2
 ampulheta      $alt2
 andorra                $alt2
@@ -674,6 +681,7 @@ arrocho             $alt2 $noun
 arroto         $alt2 $noun
 arroz          $alt2
 assembleia     $alt
+assopro                $alt2 $noun
 ateia          $alt
 aterro         $alt2
 aterro         $alt $verb
@@ -684,12 +692,16 @@ azeda             $alt $verb
 azedo          $alt $verb
 bairro         b'aIxU
 baqueta                $alt2
+banqueta       $alt2
+banquete       $alt2
+bastonete      $alt2
 beco           $alt2
 besta          $alt2
 bilhete                $alt2
+bissulfeto     $alt2
 boca           $alt2
 boceta         $alt2
-bochecha       $alt2
+bofe           $alt
 bojo           $alt2
 boleia         $alt
 bolero         $alt
@@ -716,6 +728,7 @@ caixeta             $alt2
 camelha                $alt
 camelo         $alt2
 camiseta       $alt2
+canaleta       $alt2
 canhoto                $alt2
 cantora                $alt2
 capacete       $alt2
@@ -747,6 +760,7 @@ chovesse    $alt2
 chupeta                $alt2
 clamores       $alt2
 clero          $alt
+cloreto                $alt2
 coche          $alt2
 coco           $alt2
 cofre          $alt
@@ -765,6 +779,7 @@ concordo    $alt
 conforto       $alt  $verb
 console                $alt2 $noun
 consolo                $alt2 $noun
+constroem      $alt
 controle       $alt2 $noun
 controles      $alt2
 controles      $alt $verb
@@ -779,6 +794,7 @@ corpos              $alt
 corto          $alt
 corveta                $alt2
 corvos         $alt
+costeleta      $alt2
 coto           $alt2
 cotovelo       $alt2
 cratera                $alt
@@ -786,7 +802,7 @@ crede               $alt2
 credo          $alt
 crepe          $alt
 decore         $alt
-decoro $alt2 $noun
+decoro         $alt2 $noun
 degelo         $alt2
 desapego       $alt2 $noun
 descordo       $alt
@@ -796,6 +812,8 @@ desespero   $alt2
 desespero      $alt $verb
 desfecho       $alt2
 desmantelo     $alt2 $noun
+despojo                $alt2 $noun
+despojos       $alt
 desporto       $alt2
 desportos      $alt
 desprezo       $alt2 $noun
@@ -810,13 +828,13 @@ dez               $alt
 diarreia       $alt
 diego          $alt2
 discordo       $alt
+dissabores     $alt2
 dispneia       dZIspyn'EI&
 dobro          $alt2
 dobro          $alt $verb
 doce           $alt2
 doutora                $alt2
 doze           $alt2
-droga          $alt
 dueto          $alt2
 elixir         eliSir
 emprego                $alt2 $noun
@@ -828,10 +846,9 @@ engordo            $alt
 enredo         $alt  $verb
 enrosco                $alt  $verb
 enterro                $alt2 $noun
-entorto        $alt
-entroso        $alt
+entorto                $alt
+entroso                $alt
 envelope       $alt
-envolto                $alt2
 enxaqueca      $alt2
 enxerto                $alt2 $noun
 epopeia                $alt
@@ -860,14 +877,14 @@ estorvo           $alt  $verb
 estrela                $alt2
 estrofe                $alt
 estrogonofe    $alt
-eta    $alt2
+eta            $alt2
 etiqueta       $alt2
 europa         $alt
 europeia       $alt
 exagero                $alt $verb
 explore                $alt
 faceta         $alt2
-falangeta              $alt2
+falangeta      $alt2
 farofa         $alt
 farolete       $alt2
 febre          $alt
@@ -876,8 +893,9 @@ feitora             $alt2
 fezes          $alt
 filete         $alt2
 ?1 fixe                fiSy
+flerte         $alt2 $noun
 foda           $alt2 $verb
-fodo   $alt2
+fodo           $alt2
 fogos          $alt
 foguete                $alt2
 foice          $alt2
@@ -885,8 +903,8 @@ folheto             $alt2
 fora           $alt
 fora           $alt2 $verb
 forca          $alt2
-força         $alt2 $noun
-forças                $alt2
+força         $alt2
+força         $alt $verb
 forço         $alt
 formos         $alt2
 forro          $alt $verb
@@ -902,15 +920,15 @@ gelo              $alt2
 gelo           $alt $verb
 genebra                $alt
 gesso          $alt2
-gloso  $alt
+gloso          $alt
 gonorreia      $alt
-gol    gow
+gol            gow
 golpe          $alt
 gorda          $alt2
 gorjeta                $alt2
 gosto          $alt $verb
 gota           $alt2
-governo        $alt2
+governo                $alt2
 governo                $alt $verb
 gozo           $alt2 $noun
 graveto                $alt2
@@ -924,11 +942,11 @@ hoje              $alt2
 horrores       $alt2
 humores                $alt2
 ideia          $alt
-imberbe                $alt
 interesse      $alt2
 interesse      $alt $verb
 iodo           $alt2
 ioga           $alt
+jereba         $alt
 jogo           $alt2
 jogo           $alt $verb
 jogos          $alt
@@ -942,14 +960,15 @@ lepra             $alt
 leste          $alt2 $verb
 ?2   lhe       l^y
 lingueta       $alt2
+lisboeta               $alt2
 lodo           $alt2
-logro  $alt
+logro          $alt
 lopes          $alt
 macete         $alt2
 maior          $alt
 maleta         $alt2
 maniçoba      $alt
-marieta        $alt2
+marieta                $alt2
 marreta                $alt2
 megera         $alt
 melhor         $alt
@@ -967,7 +986,6 @@ modelo              $alt $verb
 moeda          $alt
 moem           $alt
 mofo           $alt $verb
-moleta         $alt2
 molho          $alt2 $noun
 monera         $alt
 morcego                $alt2
@@ -976,6 +994,7 @@ moreia              $alt
 mortos         $alt
 motora         $alt2
 mui            mwi
+muleta         $alt2
 mureta         $alt2
 mutreta                $alt2
 namoro         $alt2 $noun
@@ -1001,21 +1020,27 @@ pachorra        $alt2
 paexa          paeSa
 paella         pa'el^&
 palacete       $alt2
+paleta         $alt2
 palheta                $alt2
 panfleto       $alt2
 pangeia                $alt
 pantera                $alt
+papoco         $alt2 $noun
 parede         $alt2
 pastora                $alt2
+peba           $alt
 pedra          $alt
 pela           $alt $verb
 pelo           $alt2
 pelo           $alt $verb
+pereba         $alt
 peroba         $alt
+peseta         $alt2
 peso           $alt $verb
 piloto         $alt2 $noun
 pintora                $alt2
 pior           $alt
+pipoco         $alt2 $noun
 pirueta                $alt2
 plaqueta       $alt2
 plateia                $alt
@@ -1023,8 +1048,9 @@ plebeia           $alt
 polca          $alt
 pompeia                $alt
 porcos         $alt
-porque $alt2
+porque         $alt2
 porra          $alt2
+porreta                $alt2
 porrete                $alt2
 porto          $alt2
 portos         $alt
@@ -1033,15 +1059,18 @@ povos           $alt
 poxa           p'oS&
 primavera      $alt
 primores       $alt2
-proso  $alt
+proso          $alt
 prosopopeia    $alt
+proveta                $alt2
 quarteto       $alt2
 queda          $alt
 quede          $alt2
+quitinete      $alt
 quinteto       $alt2
-ramalhete              $alt2
+ramalhete      $alt2
 raposa         $alt2
 recomeço      $alt $verb
+reconstroem    $alt
 recordo                $alt
 recorto                $alt
 rede           $alt2
@@ -1053,22 +1082,25 @@ refresco        $alt  $verb
 rego           $alt2 $noun
 reitora                $alt2
 relevo         $alt2 $noun
-remoem $alt
+remoem         $alt
 remorso                $alt
 renovo         $alt $verb
 retorno                $alt $verb
 reuva          x'EUv&
 rigores                $alt2
+risoto         $alt2
 rock           $alt
 roem           $alt
 rola           $alt2 $noun
+roleta         $alt2
+rolete         $alt2
 rolo           $alt2 $noun
 rota           $alt2
 rota           $alt $noun
-rubores        $alt2
+rubores                $alt2
 rumores                $alt2
-sabonete               $alt2
-sabores        $alt2
+sabonete       $alt2
+sabores                $alt2
 saibro         s'aIbRU
 saleta         $alt2
 sarjeta                $alt2
@@ -1094,10 +1126,12 @@ sossego         $alt2 $noun
 suborno                $alt  $verb
 sufoco         $alt2 $noun
 sufocos                $alt2
+sulfeto                $alt2
+sulfureto      $alt2
 super          s'Uper
 suporto                $alt
 suor           swOr
-sutiã sutSi'&~N
+sutiã         sutSi'&~N
 tapete         $alt2
 temores                $alt2
 tempero                $alt2 $noun
@@ -1105,18 +1139,19 @@ tenores         $alt2
 terrores       $alt2
 teta           $alt2
 toga           $alt
-topo           $alt  $verb
+topo           $alt2 $noun
 torno          $alt  $verb
 tornozelo      $alt2
 torre          $alt2 $noun
 torres         $alt2
 torro          $alt
 tortos         $alt
-toso   $alt
-transtorno             $alt $verb
+toso           $alt
+transtorno     $alt $verb
 traqueia       $alt
 travesso       $alt2
 tremores       $alt2
+treta          $alt2
 trevo          $alt2
 troco          $alt2 $noun
 tropa          $alt
@@ -1125,6 +1160,7 @@ trombeta  $alt2
 tumores                $alt2
 valeta         $alt2
 vanessa                $alt2
+vareta         $alt2
 vera           $alt
 verbete                $alt2
 violeta                $alt2
@@ -1191,7 +1227,7 @@ drivers  dR'aIveRs
 laptop lEptOp
 ?1 line       l'ain
    layout     l'eI,aUt
-?2        logo        l'OgU
+   ?2   login  logiN
 ?1 lock       l'Ok
    mail       m'eIl
         mails        m'eIls
@@ -1210,6 +1246,7 @@ python     p'aIT&~N
 ?1 readme     r'i:dmi:
 ?1 sapi       s,ap'i
 ?1 scanner    sk'En&r
+sky   sk'ay
 shake  S'eIk
 ?1 shift      S'ift
 ?1 scroll     sk:r'ol
@@ -1221,13 +1258,16 @@ símbolo        s'imbolU
 ?4 símbolo    s'iNbolU
 ?2   software   s'Oftwe@-
 ?1 space      sp'eIsy
+?2 space      sp'eIs
 ?1 sporting   sp'Ort,ing
  tab        t'aby
  tablet  t'ablet
 ?1 telemóvel  t,El,Em'OvEl
 ?1 telemóveis t,El,Em'OveIs#
 ?1 up         &p
-?1 upload     &pl'oud
+update         &pd'eIt
+upgrade                &pgR'eId
+upload         &pl'oud
 ?2        web        w'Eb
 ?1 yahoo      'i,ah'u
 ?2 yahoo      iah'u
@@ -1235,14 +1275,14 @@ símbolo        s'imbolU
 
 
 // common person names
-alan       'al@n
+alan       'al@N
 louis       _^_FR
 
 
 // foreign product names
 ?1 access      'aks,Es
 ?1 adobe       &d'Oby
-   android &ndR'Oid
+   android &NdR'Oid
 apple  'Epow
 chrome  kR'owmi
    debian      d'Ebj&~N
@@ -1347,7 +1387,6 @@ antonio   &~nt'onIU
 ?1   cleverson    kl'Evyrs&N
 ?2   cleverson    kl'EversoN
 ?1   elton        'Elt&N
-?2 elton       'EUton
 emerson 'emE*@-soN
 ?1   halison      &l'is&N
 klein       kl'aIn      // Very common on southern Brazil.
index 8cd02d3..df45259 100644 (file)
@@ -90,6 +90,8 @@
    óCC) a (CA_     &
     óC) a (CCA_    &
     úC) a (CA_     &
+?2      ation (_   'eIS&~N
+?2      action (_  'EkS&~N
 
 
 .group â
 ?2      d (i       dZ
 ?2      d (í       dZ
 ?2      d (e_      dZ
+?2   A) de (o_     dZj
 
 
 .group e
 
      i) e (r_      E
     @s) e (r_      E
-     u) e (r_      E
+    qu) e (r_      E
 
     ib) e (rL04_   E
      d) e (rL04_   E
     @s) e (rL04_   E
 
     sp) e (rL04_   E
-
      f) e (rL02_   E
 
         e (quL02_  E
-
+        e (rbL04_  E
         e (rgL04_  E
 
         e (rsL04_  E
         e (sL02_   E
 
         e (ssL04_  E
-
+        e (ss_     E         // stress and english words
+?2      ection (_  'EkS&~N
+?2      ee (n_     i
         e (stL04_  E
 
         e (strL04_ E
 ?1   l) e (ta      'E        // eg: bicicleta, atleta.
 
     sf) e (ra_     E         // esfera, biosfera
+    ef) e (tuL02_  e
      t) e (tra     E
 
     âC) e (CA_     e
     óC) e (Ca_     e
    óCC) e (CA_     e
     úC) e (CA_     e
+    úC) el (_      eU
 
 //sort
     _d) e (L05_    E
@@ -417,38 +423,42 @@ _atrev) e (L07_    e
 _corro) e (L07_    e
 _interromp) e (L07_ e
 _troux) e (L07_    E
+  _ens) e (bL03_   E
+_amanc) e (bL03_   E
     qu) e (brL04_  E
   _cel) e (brL04_  E
+ _boch) e (chL04_  e
    _ex) e (crL04_  E
   _enr) e (dL01_   E
-    _n) eu (trL03_ 'eU
     _v) e (dL03_   E
   _arr) e (dL03_   E
  _depr) e (dL03_   E
  _hosp) e (dL03_   E
+_enver) e (dL03_   E
    _gr) e (gL03_   e
   _gal) e (gL03_   e
   _pel) e (gL03_   e
     _n) e (grL03_  e
-   _ch) e (guL02_  e
   estr) ei (L04_   EI
     _r) e (jL03_   E
   _inv) e (jL04_   E
+?2      el (ton_   'EU
     tr) e (pL04_   E         // es-
   _dec) e (pL04_   E
    _in) e (ptL03_  E
     ad) e (quL04_  E
-  _imp) e (rL03_   E
   _sev) e (rL03_   E
  _reit) e (rL03_   E
  _sinc) e (rL03_   E
     _g) e (rL04_   E
     _z) e (rL04_   E
     qu) e (rL04_   E         // re-
+   _on) e (rL04_   E
    _op) e (rL04_   E
    gen) e (rL04_   E         // de- re-
   _alt) e (rL04_   E
   _enc) e (rL04_   E
+  _imp) e (rL04_   E
   _min) e (rL04_   E
   _sug) e (rL04_   E
   _sup) e (rL04_   E
@@ -464,14 +474,16 @@ _adult) e (rL04_   E
 _persev) e (rL04_  E
 _recup) e (rL04_   E
 _refrig) e (rL04_  E
-    _v) e (rbL03_  E
    _ex) e (rcL02_  E
  _alic) e (rcL02_  E
     _p) e (rdL02_  E
     _l) e (rdL03_  E
     _h) e (rdL04_  E
+  _des) e (rdL04_  E
+s_colh) e (res_    E
      _) e (rgL03_  e
    _re) e (rgL03_  e
+   _so) e (rgL03_  e
   _bez) e (rrL03_  e
      v) e (rtL03_  e         // con- re- in-
     _f) e (rvL03_  e
@@ -496,6 +508,7 @@ _refrig) e (rL04_  E
 _obsol) e (tL03_   e
   _sol) e (trL03_  E
   _pen) e (trL04_  E
+    _n) eu (trL03_ 'eU
     _d) e (vL03_   e
    scr) e (vL03_   e         // e- in- pre- ree- de-
   _atr) e (vL03_   e
@@ -639,7 +652,8 @@ _entorp) e (çL03_  e
 ?1   _) i (ntern   'i        //inter
 ?1   @) ing (_     _^_EN
 ?1   @) ings (_    _^_EN
-        ilton      'iUtoN
+?2      il (ton_   'iU
+?2      i (rton_   'i
 
 
 .group í
@@ -718,7 +732,9 @@ _entorp) e (çL03_  e
         o (s_      =U
      _) o (_C      U
      _) o (_A      u
-
+?2   _) os (_      Us
+?2   _) os (_A     Uz
+?2   _) os (_G     Uz
         ou         ow
         oi         oI
         oi ($w_alt OI
@@ -738,7 +754,6 @@ _entorp) e (çL03_  e
         o (quL02_  O
 
    A_l) o (_       U
-     p) o (dL04_   O
 
         o (g_      O
         o (gs_     O
@@ -824,9 +839,8 @@ _entorp) e (çL03_  e
 ?1 interr) o (g       u         // eg: interrogação
 ?1   f) o (rmulá   u         // eg: formulário, formulários.
 ?1   v) o (lt      O
-
-        o (Cuem_   o
-        o (CCuem_  o
+        o (luem_   o
+        o (ssuem_  o
     êC) o (CA_     o
    êCC) o (CA_     o
     ôC) o (CA_     o
@@ -841,6 +855,7 @@ _entorp) e (çL03_  e
    óCC) o (CA_     o
     úC) o (CA_     o
    úCC) o (CA_     o
+?2      otion (_   'owS&~N
 
 //sort
     _f) o (L05_    o
@@ -855,10 +870,11 @@ _pormen) o (L05_   O
     _m) o (fL01_   O
     _m) o (fL02_   O
     _s) o (frL02_  O
+     l) o (gL04_   O         // dialoga, etc.
      r) o (gL04_   O         // inter-
+     v) o (gL04_   O         // advoga, etc.
     _j) o (gL04_   O
     af) o (gL04_   O         // des-
-  _adv) o (gL04_   O
   _ref) o (gL04_   O
    _ap) oi (L01_   OI
    _ap) oi (L02_   OI
@@ -868,11 +884,15 @@ _pormen) o (L05_   O
   _emp) o (lgL04_  O
      _) o (lhL04_  O
      m) o (lhL04_  O
+  _env) o (ltL03_  o
    ent) o (pL02_   O
     _c) o (pL03_   O
+    _t) o (pL04_   O
   _ens) o (pL04_   O
   _gal) o (pL04_   O
     _s) o (prL04_  O
+   _al) o (prL04_  O
+  _ass) o (prL04_  O
      _) o (ptL04_  O
      p) o (rL02_   o
   _dev) o (rL02_   O
@@ -881,19 +901,20 @@ _pormen) o (L05_   O
  _inod) o (rL03_   O
 _inson) o (rL03_   O
 _comem) o (rL04    O
+ _enam) o (rL04_   O
 _aprim) o (rL04_   O
 _remem) o (rL04_   O
      f) o (rmL03_  O
      c) o (rrL01_  o         // incorra, corra, etc.
     _m) o (rrL01_  o
      p) o (rtL03_  O         // im- trans- de- re- com- a- ex-
-     t) o (rçL01_  O         // con-
+     t) o (rçL03_  o         // con-
     _r) o (snL04_  O
     _c) o (spL02_  O
   _enr) o (squL02_ O
      p) ostos (_   Ost=Us#   // dispostos etc.
   _gar) o (tL03_   o
-  _mar) o (tL03_   O
+  _mar) o (tL03_   o
  _escr) o (tL03_   o
    _ch) o (vL01_   o
     pr) o (vL03_   O
@@ -902,6 +923,7 @@ _remem) o (rL04_   O
     _r) o (çL03_   O
     tr) o (çL03_   O         // des-
    _ad) o (çL03_   O
+  _emp) o (çL03_   O
   _end) o (çL03_   O
 //endsort
 
@@ -1044,6 +1066,7 @@ _remem) o (rL04_   O
 ?2      t (e_      tS
 ?1      th         _^_EN
 ?1      tion (_    _^_EN
+?2   A) te (o_     tSj
 
 
 .group u
@@ -1055,6 +1078,8 @@ _remem) o (rL04_   O
         u (a       u
      g) u (a+      w
      q) u (a+      w
+        u (eC      u
+        u (ei      u
      r) u (_A      u
         u (L04_    'u
 
@@ -1062,6 +1087,8 @@ _remem) o (rL04_   O
         ui (_      'uI
         u (iu      w
         u (iCK     u
+        u (éC      u
+        u (íC      u
         uy         uI
         ul (K      uw
         u (lh+     u
@@ -1074,6 +1101,7 @@ _remem) o (rL04_   O
 
      g) u (Y 
     _m) ui (tA_    'wiN
+?2      ution (_   'uS&~N
 
 
 .group ú
index 61480f8..6c67ef9 100644 (file)
@@ -69,6 +69,8 @@ _tld  s_v'l-novkoU
 
 // character names
 _cap   vel^ke:
+_sub   d,olni:||'indeks||
+_sup   h,oRni:||'indeks||
 _??    simbol
 _#9    t'ab
 _#32   'medzeRa
@@ -76,76 +78,100 @@ _?A        znak
 
 *      hviezda $max3
 +      plus    $max3
-=      Rovna:sa        $max3
+=      Rovna:||sa      $max3
 @      zavina:tS
 &      ampeRsand
 #      kRi:Zik $max3
 
 _!     vi:kRitSn^i:k
-_"     u:vodzovki
+_"     u:vodzowki
 _$     dola:R
 _'     apostRof
 _(     za:tvoRka
 _)     zatvoRit;
 _,     tSiaRka
-_-     poml-tSka
-__     podtSiaRknutie
+_-     spojovn^i:k
+__     podtSiaRkovn^i:k
 _.     bodka
-_/     lomeno
+_/     lomka
 _:     dvojbodka
 _;     bodkotSiaRka
 _<     menSi:
-_>     vetSSi:
+_>     v&tSSi:
 _?     ota:zn^ik
-_[     hRanata:||za:tvoRka
-_\     opatSne:||lomeno
-_]     hRanata:||zatvoRit;
-_^     stRieZka
+_[     hRanata:||z'a:tvoRka
+_\     opatSna:||l'omka
+_]     hRanata:||z'atvoRit;
+_^     voka:n^
 _`     aktsent
-_{     zloZena:||za:tvoRka
-_|     zvisla:||tSiaRa
-_}     zloZena:||zatvoRit;
+_{     zloZena:||z'a:tvoRka
+_|     zvisla:||tS'iaRa
+_}     zloZena:||z'atvoRit;
 _~     vl-novka
-_     tvr-da:m'edzeRa    // U+00A0  no-break-space
-_¡    obra:t;eni:v'i:kRitSn^i:k
-_¦    pReRuSena:'tSiaRa
-_ª    hoRni:indeks'a:
-_«    dvojita:lomena:||za:tvoRka
-_­    mekka:poml-tSka
-_²    nadRuhu:
-_³    natRetju
-_´    dl:Zen^
-_·    bodka'vpRostRjedku
-_¸    tsedila
-_¹    napRvu:
-_»    dvojita:lomena:||zatvoRit;
-_¿    obRa:t;eni:'ota:zn^ik
-_â\80\93    dl-ha:'poml-tSka
-_â\80\98    l^ava:'u:vodzovka
-_â\80\99    prava:'u:vodzovka
-_â\80\9c    horne:'u:vodzovki
-_â\80\9d    dolne:'u:vodzovki
-_â\80¡    dvojiti:kRi:Z
-_â\80¢    odRa:Zka
-_â\80£    tRojuholni:kova:'odRa:Zka
+_      tvr-da:||m'edzeRa    // U+00A0  no-break-space
+_¡    obra:t;eni:||v'i:kRitSn^i:k
+_¦    pReRuSena:||tS'iaRa
+_¨    pRehla:ska
+_«    dvojita:||l'omena:||z'a:tvoRka
+_­    Rozd;el^ovn^i:k
+_´    dl:Zen^
+_·    bodka||'v||pRostRjedku
+_¸    tsedila
+_»    dvojita:||l'omena:||z'atvoRit;
+_¿    obRa:t;eni:||'ota:zn^ik
+_–   poml-tSka
+_‘   hoRne:||j'ednoduche:||'u:vodzowki
+_’   odsuvn^i:k
+_â\80\9c   hoRne:||'u:vodzowki
+_â\80\9d   dvojita:||h'oRna:||'opatSna:||'u:vodzowka
+_â\80\9e   dolne:||'u:vodzowki
+_â\80\9a   dolne:||j'ednoduche:||'u:vodzowki
+_â\80¡   dvojkRi:Z
+_â\80¢   odRa:Zka
+_â\80£   odRa:Zka||t'Rojuholn^i:k
+_â\81\83   odRa:Zka||'v||tvaRe||p'oml-tSki
 ‰    pRomile
 €    euRo
 §     paRagRaf
 ÷     d;eleno
 ×     kRa:t
 °     stupn^ou
-¢     tsentou
-£     libjeR
-¤     znatSkameni
+¢     tsent
+£     libRa
+¤     mena
+©     kopiRajt
+®     Registrovane:
+¥     jen
 −    mi:nus
-±     plus'mi:nus
-µ     mu:
-¼     Stvr-tina
+±     plus||m'i:nus
+µ     mi:
+¼     Stvr-t;ina
 ½     polovitsa
-¾     tri_Stvr-tini
-¬     logitske:not
-æ     a'e:
-þ     poml-tSkanad
+¾     t'@-*i||S'tvr-t;ini
+¬     logitski:||z'a:poR
+æ     otvoRene:||'e:
+þ     soRn
+¯     pRuh||n'at
+ð     ed
+ƒ     floRe:n
+_†   kRi:Z
+_≈   pRibliZn^e||sa||R'ovna:
+_≠   n^eRovna:||s'a
+_≤   menSi:||'alebo||sa||R'ovna:
+_≥   v&tSSi:||'alebo||sa||R'ovna:
+_√   dRuha:||'odmotsn^ina
+_∛   tRet;ia||'odmotsn^ina
+_∞   n^ekon^etSno
+_■   tSieRni||S'tvoRets
+_□   bieli||S'tvoRets
+_◆   tSieRni||d'iamant
+_○   bieli||kR'uh
+_●   tSieRni||kR'uh
+_◦   odRa:Zka||'v||tvaRe||b'ielej||b'odki
+_✓   zaSkr-tnut;ie
+_✔   tutSne:||z'aSkr-tnut;ie
+_➔   Si:pka||'vpRavo
+_➢   odRa:Zka||'v||tvaRe||S'i:pki
 
 
 // Numbers
index 65b62ff..521910f 100644 (file)
@@ -31,7 +31,7 @@ q     ku
 w      dv#'ojniv,@
 x      iks
 y      'ipsilon
-ć     m'ehkitS,@
+ć     m'ehki||tS,@
 đ     dZ@
 
 ä     $accent
@@ -48,13 +48,13 @@ _0  n'itS
 _1     'Ena
 _2     dv#'a
 _3     tR'i
-_4     St'iRi
+_4     St'i*i
 _5     p'et
-_6     S'est
-_7     s'edem
-_8     'osem
-_9     d'evet
-_10    d'eset
+_6     S'Est
+_7     s'edEm
+_8     'Os@m
+_9     d@v'Et
+_10    d@s'Et
 _11    'e'najst
 _12    dv#'anajst
 _13    tR'inajst
@@ -62,16 +62,16 @@ _14 St'iRinajst
 _15    p'etnajst
 _16    S'estnajst
 _17    s'edemnajst
-_18    'osemnajst
-_19    d'evetnajst
-_2X    dv#'ajset
-_3X    tR'ideset
-_4X    St'iRideset
-_5X    p'etdeset
-_6X    S'estdeset
-_7X    s'edemdeset
-_8X    'osemdeset
-_9X    d'evetdeset
+_18    'Osemnajst
+_19    d'evEtnajst
+_2X    dv#'ajsEt
+_3X    tR'id@sEt
+_4X    St'i*id@sEt
+_5X    p'etd@sEt
+_6X    S'estd@sEt
+_7X    s'edemd@sEt
+_8X    'Os@md@sEt
+_9X    d'evEtd@sEt
 _2C    dv'esto
 _0C    sto
 _0M1   t'isotS
index 182b78d..9986c0d 100644 (file)
@@ -17,6 +17,9 @@
 .group č
         č        tS
 
+.group ć
+        ć        tS;
+        
 .group d
         d        d
         dz       dz
 .group r
         r        R
         rr       R
+     A) r (A     *
 
      K) r (K     @R
 
         v (-A+   v    // preposition 'v' before a vowel
      A) v (K     w
      K) v (K     %u
+     K) v (r     v
    L01) v (A     v#
 
 
index af36187..b08cb81 100644 (file)
@@ -43,16 +43,16 @@ _?A haRf
 //_lig 
 _acu   vURg'UimI
 _ac2   tS'IftvURg'UimI 
-_brv   k@s'altmaimI
+_brv   k@s'aLtmaimI
 _ced   h'aRf
 _cir   Sapk'a
-_dia   Umla'Ut
+_dia   UmLa'Ut
 _dot   YstnOkt'a
 _grv   'aksanimI
 _hac   t'ERsSapk'a
 _mcn   uz'atmaimI
 _ogo   ogon'Ek
-_rng   halk'a
+_rng   haLk'a
 //_stk 
 _tld   tIld'E
 
@@ -60,7 +60,7 @@ _tld  tIld'E
 // symbols
 _.     nOkt'a
 _,     vIRJ'Yl
-_;     nOktal'@vIRJ'Yl
+_;     nOktaL'@vIRJ'Yl
 _:     ik'InOkt'a
 _…   'YtSnOkt'a
 _?     soR'UiSa*et,I
@@ -73,7 +73,7 @@ _'    apOstR'Of
 _^     IndZ'EltmEiSa*et'I
 &      _!v'E
 _&     v'EiSa*et'I
-_@     kUjRUkl'U'a
+_@     kUjRUkL'U'a
 _\     t'ERs||ej,IktSIzg'I
 _(     atSpa*ant'Ez
 _)     kapapa*ant'Ez
@@ -84,9 +84,9 @@ _‘  tEkt@Rn'ak
 §     tSEnJ'El
 °     de*edZ'E
 _#     dij'Ez
-_~     jaklaS'@k
-__     ,alttSIzg'I
-*      j'@ld@z         $max3
+_~     jakLaS'@k
+__     ,aLttSIzg'I
+*      j'@Ld@z         $max3
 =      ESIt            $max3
 %      jYzdE           $max3
 +      aRt@            $max3
@@ -99,7 +99,7 @@ _2    ic'i
 _3     'ytS
 _4     d'WRt
 _5     b'ES
-_6     alt'@
+_6     aLt'@
 _7     jed'i
 _8     sec'Iz
 _9     d'okuz
@@ -111,7 +111,7 @@ _2X jiRm'i
 _3X    ot'uz
 _4X    k'@Rk
 _5X    ell'i
-_6X    altm'@S
+_6X    aLtm'@S
 _7X    jetm'iS
 _8X    seks'En
 _9X    doks'an
@@ -260,13 +260,13 @@ Düzce $1
 Edirne $2
 Hakkari $1
 Hatay $1
-Iğdır $1
-İngiltere $3
-İskenderun $2 
+ığdır $1
+ingiltere $3
+iskenderun $2 
 Isparta $2
-İstanbul $2
-İsveç $1
-İzmir $1
+istanbul $2
+isveç $1
+izmir $1
 Kastamonu $1
 Kayseri $1
 Kilis $1
index aa03ae1..8ae8490 100644 (file)
@@ -9,8 +9,10 @@
 // ?1  mbrola voices
 
 
-// unvoiced consonants
-.L01 ç f h k p q s ş t 
+.L01 ç f h k p q s ş t   // unvoiced consonants
+
+.L02 ı a o u   // back vowels
+.L03 i e ö ü î â ô û  // not-back vowels
 
 .replace
 `      '
@@ -23,7 +25,7 @@
      @) acak (_S4  adZak
      @) acakmış (_S7   adZakm%@S
      @) ayım (_S4  aj@m
-     @) alım (_S4  al@m
+     @) alım (_S4  aL@m
      @) asın (_S4  as@n
 
      @) avru (pa avr'u
 
 .group c
         c        dZ
+        ce (_S2  dZ%E
 
 .group ç
         ç        tS
+        çe (_S2  tS%E
 
 .group d
         d        d
        dın (_S3   d@n
        dınız (_S5 d@n@z
        dı (_S2    d@
-       dılar (_S5 d@laR
+       dılar (_S5 d@LaR
        dum (_S3   dum
        duk (_S3   duk
        dun (_S3   dun
        dunuz (_S5 dunuz
        du (_S2    du
-       dular (_S5 dular
+       dular (_S5 duLar
        düm (_S3   dym
        dük (_S3   dyk
        dün (_S3   dyn
 
 .group g
         g        g
-        g (i     J
-        g (e     J
-        g (ü     J
-        g (ö     J
+        g (L03   J
+   L03) g (K     J
+
 
 .group ğ
         ğ        Q
-     A) ğ        :||
-?1   A) ğ        G     // mbrola
+     A) ğ        : 
+?1   A) ğ (+     G     // mbrola
+
+     a) ğa       :
+     o) ğo       :
+     u) ğu       :
+     ö) ğö       :
+     ü) ğü       :
      i) ğ        j
      e) ğ        j
 
+     
 .group h
         h        h
 
      @) ıyor (_S4  @j%oR
      @) ın (_S2  @n
 
+.group î
+        î        @
 
+        
 .group j
         j        Z
 
 .group k
         k        k
-        k (i     c
-        k (e     c
-        k (ü     c
-        k (ö     c
+        k (L03   c
+   L03) k (K     c
 
        ken (_S3  %cen
 
 
 .group l
         l        l
+        l (L02   L
+   L02) l (K     L
 
-       la (_S2  %la
+       la (_S2  %La
        le (_S2  %le
 
-       lar (_S3  laR
+       lar (_S3  LaR
        ler (_S3  leR
 
        li (_S2  li
-       lı (_S2  l@
-       lu (_S2  lu
+       lı (_S2  L@
+       lu (_S2  Lu
        lü (_S2  ly
 
        lik (_S3  lik
-       lık (_S3  l@k
-       luk (_S3  luk
+       lık (_S3  L@k
+       luk (_S3  Luk
        lük (_S3  lyk
 
 
 .group r
         r        R
      A) r (A     *
+     ğ) r (A     *
 
        ra (_S2  %Ra
        re (_S2  %Re
        yunuz (_S5  %junuz
        yünüz (_S5  %jynyz
 
-       yla (_S3  %jla
+       yla (_S3  %jLa
        yle (_S3  %jle
 
        yacak (_S5  jadZak
        yecekmiş (_S8   jedZekm%iS
 
        yayım (_S5  jaj@m
-       yalım (_S5  jal@m
+       yalım (_S5  jaL@m
        yasın (_S5  jas@n
        yeyim (_S5  jejim
        yelim (_S5  jelim
index 2c7eb3e..e0479fb 100644 (file)
@@ -79,40 +79,48 @@ ỵ ỵ
 //================================\r
 .L01 t c ne nd k x s nt ch th me te le ce ny ry e o u re nch de p pe ph sh v ve ge\r
 .L02 n\r
-\r
+.L03 t ch nh\r
 \r
 .group b\r
         b          b\r
      _) b          _b\r
 //b($w_alt2 _^_EN\r
-\r
+        \r 
+
 .group c\r
         c          g         //k\r
         c (_       kh\r
-        ch         c         // try [tS;] [tS] [c]\r
+     _) ch         tS;       // try [tS;] [tS] [c] c     \r
+?2   _) ch         c\r
+?1   _) ch         c         \r
+        ch (_      c         \r
         ce (_      _^_EN\r
      _) cl         _^_EN\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+
 .group d\r
         d          J^        // try [z] [J] [dZ] [dZ;] [J^]\r
         d (_       _^_EN\r
-\r
-        \r
-        \r
+        \r 
+        \r 
+        \r 
+
 .group đ\r
         đ          d\r
      _) đ          _d\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+
 .group f\r
         //f          f\r
      _) f          _^_EN\r
         f (_       _^_EN\r
-        \r
\r
+        \r 
+        \r 
+
 .group g\r
         g          Q         // try [g] [Q]\r
         gh         Q         // or [g]  [Q]\r
@@ -131,110 +139,134 @@ ỵ     ỵ
         giệc       J^'iE6kh\r
      _) gol        _^_EN\r
      _) gat        _^_EN     \r
-        ght (_     _^_EN        \r
\r
-\r
+        ght (_     _^_EN     \r
+        \r 
+        \r 
+
 .group h\r
         h          h\r
-        \r
\r
+        \r 
+        \r 
+
 .group j\r
         j          Z\r
-\r
-\r
+        \r 
+        \r 
+
 .group k\r
         k          k\r
         //k (_       kh\r
         kh         x\r
         k (_       _^_EN\r
-        \r
\r
+        \r 
+        \r 
+
 .group l\r
         l          l\r
         l (_       _^_EN\r
         le (_      _^_EN\r
-\r
-        \r
+        \r 
+        \r 
+
 .group m\r
         m          m\r
-        \r
-\r
+        \r 
+        \r 
+
 .group n\r
         n          n\r
 ?1      n (_       N         //n\r
+?2      n (_       N\r
         ng         N\r
         ngh        N\r
         nh         n^\r
         nd (_      _^_EN\r
-\r
-        \r
+        \r 
+        \r 
+
 .group ñ\r
         ñ          n^\r
-        \r
\r
+        \r 
+        \r 
+
 .group p\r
         p          p\r
         ph         f\r
-        \r
\r
+        \r 
+        \r 
+
 .group q\r
         q          k\r
         q (_       kh\r
         qu         w         //kw\r
-        \r
-\r
+        \r 
+        \r 
+
 .group r\r
-        r          z.        // try [z] [z.] [r] [z;]\r
+        r          z         // try [z] [z.] [r] [z;]\r
+?2      r          Q         \r
+?1      r          z.        \r
         r (_       _^_EN\r
         rm (_      _^_EN\r
-\r
-        \r
+        \r 
+        \r 
+
 .group s\r
         s          s.        // try [s.] [s] [S]\r
      _) sh         _^_EN\r
         s (_       _^_EN\r
         st (_      _^_EN\r
         se (_      _^_EN\r
-\r
-        \r
+        \r 
+        \r 
+
 .group t\r
         t          t[\r
-?1      t (_       g\r
+?1      t (_       kh\r
+?2      t (_       kh        \r
         th         t\r
-        tr         cr        // try [cr] [tr] [tS;] [tS] [c] [dZ] [dz;]\r
+        tr         tS        //cr        // try [cr] [tr] [tS;] [tS] [c] [dZ] [dz;]\r
+?1      tr         cr        \r
+?2      tr         c         \r
         ts (_      _^_EN\r
         te (_      _^_EN\r
         th (_      _^_EN\r
         tt (_      _^_EN\r
-\r
-        \r
+        \r 
+        \r 
+
 .group v\r
         v          v\r
+?2      v          J^        \r
         ve (_      _^_EN     \r
-        \r
\r
+        \r 
+        \r 
+
 .group w\r
         w          w\r
      _) w          _^_EN\r
         w (_       _^_EN\r
-        \r
\r
+        \r 
+        \r 
+
 .group x\r
         x          s\r
         x (_       _^_EN\r
-\r
-\r
+        \r 
+        \r 
+
 .group z\r
         z          z\r
         z (_       _^_EN\r
-\r
-        \r
+        \r 
+        \r 
 //================================\r
 //  Vowels\r
 //================================\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+
 .group a\r
         a          a:\r
         ai         a:I\r
@@ -244,6 +276,8 @@ ỵ ỵ
         aĩ         a:I5\r
         aị         a:I6\r
         ay         aI\r
+?2      ay         a:I       \r
+        \r 
         aỳ         aI2\r
         aý         aI3\r
         aỷ         aI4\r
@@ -256,6 +290,7 @@ ỵ ỵ
         aõ         a:U5\r
         aọ         a:U6\r
         au         aU\r
+?2      au         a:U\r
         aù         aU2\r
         aú         aU3\r
         aủ         aU4\r
@@ -263,120 +298,145 @@ ỵ     ỵ
         aụ         aU6\r
         a (L01     _^_EN\r
         ai (L02    _^_EN\r
-\r
-        \r
+        \r 
+        \r 
+
 .group à\r
         à          a:2\r
         ài         a:I2\r
         ày         aI2\r
+?2      ày         a:I2\r
+        \r 
+        \r 
+        \r 
+        \r 
         ào         a:U2\r
         àu         aU2\r
-        \r
\r
+?2      àu         a:U2\r
+        \r 
+
 .group á\r
         á          a:3\r
         ái         a:I3\r
         áy         aI3\r
         áo         a:U3\r
         áu         aU3\r
-        \r
\r
+?2      áu         a:U3      \r
+?2      áy         a:I3\r
+
 .group ả\r
         ả          a:4\r
         ải         a:I4\r
         ảy         aI4\r
         ảo         a:U4\r
         ảu         aU4\r
-        \r
\r
+?2      ảu         a:U4      \r
+?2      ảy         a:I4      \r
+
 .group ã\r
         ã          a:5\r
         ãi         a:I5\r
         ãy         aI5\r
         ão         a:U5\r
         ãu         aU5\r
-        \r
\r
+?2      ãu         a:U5      \r
+?2      ãy         a:I5\r
+
 .group ạ\r
         ạ          a:6\r
         ại         a:I6\r
         ạy         aI6\r
         ạo         a:U6\r
         ạu         aU6\r
-        \r
\r
+?2      ạu         a:U6      \r
+?2      ạy         a:I6      \r
+        \r 
 //================================\r
 .group ă\r
         ă          a\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+
 .group ằ\r
         ằ          a2\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+
 .group ắ\r
         ắ          a3\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+
 .group ẳ\r
         ẳ          a4\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+
 .group ẵ\r
         ẵ          a5\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+
 .group ặ\r
         ặ          a6\r
-        \r
\r
+        \r 
+        \r 
 //=================================\r
 .group â\r
         â          @\r
         ây         @I\r
         âu         @U1       \r
-        \r
\r
-\r
+?2      â (L03     a         \r
+?1      â (L03     a         \r
+        \r 
+        \r 
+
 .group ầ\r
         ầ          @2\r
         ầy         @I2\r
         ầu         @U2\r
-        \r
\r
-\r
+?2      ầ (L03     a2        \r
+?1      ầ (L03     a2        \r
+        \r 
+        \r 
+
 .group ấ\r
         ấ          @3\r
         ấy         @I3\r
         ấu         @U3\r
-        \r
\r
-\r
+?2      ấ (L03     a3        \r
+?1      ấ (L03     a3        \r
+        \r 
+        \r 
+
 .group ẩ\r
         ẩ          @4\r
         ẩy         @I4\r
         ẩu         @U4\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+
 .group ẫ\r
         ẫ          @5\r
         ẫy         @I5\r
         ẫu         @U5\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+
 .group ậ\r
         ậ          @6\r
         ậy         @I6\r
         ậu         @U6\r
-        \r
\r
+?2      ậ (L03     a6        \r
+?1      ậ (L03     a6        \r
+        \r 
 //===========================\r
 .group e\r
         e          E\r
@@ -388,76 +448,89 @@ ỵ       ỵ
         eọ         EU6\r
         e (L01     _^_EN\r
         ey (_      _^_EN\r
-\r
-        \r
+        \r 
+        \r 
+
 .group è\r
         è          E2\r
         èo         EU2\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+
 .group é\r
         é          E3\r
         éo         EU3\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+
 .group ẻ\r
         ẻ          E4\r
         ẻo         EU4\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+
 .group ẽ\r
         ẽ          E5\r
         ẽo         EU5\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+
 .group ẹ\r
         ẹ          E6\r
         ẹo         EU6\r
-        \r
\r
+        \r 
+        \r 
 //============================\r
-\r
+        \r 
+
 .group ê\r
         ê          e\r
         êu         eU1\r
-        \r
\r
-\r
+?2      ê (L03     @:        \r
+?2      ê (L02     @:        \r
+        \r 
+
 .group ề\r
         ề          e2\r
         ều         eU2\r
-        \r
\r
-\r
+?2      ề (L03     @:2       \r
+?2      ề (L02     @:2\r
+        \r 
+
 .group ế\r
         ế          e3\r
         ếu         eU3\r
-        \r
\r
-\r
+        \r 
+?2      ế (L03     @:3\r
+?2      ế (L02     @:3\r
+
 .group ể\r
         ể          e4\r
         ểu         eU4\r
-        \r
\r
-\r
+?2      ể (L03     @:4       \r
+?2      ể (L02     @:4       \r
+        \r 
+
 .group ễ\r
         ễ          e5\r
         ễu         eU5\r
-        \r
\r
-\r
+?2      ễ (L03     @:5       \r
+?2      ễ (L02     @:5\r
+        \r 
+
 .group ệ\r
         ệ          e6\r
         ệu         eU6\r
-\r
\r
+?2      ệ (L03     @:6\r
+?2      ệ (L02     @:6\r
+        \r 
 //============================\r
-\r
+        \r 
+
 .group i\r
         i          i\r
         //i (A       j\r
@@ -486,45 +559,60 @@ ỵ       ỵ
         iễu        iU5\r
         iệu        iU6\r
         i (L01     _^_EN\r
-\r
-        \r
+?2      i (L03     @         \r
+?1      i (L03     @\r
+?2      i (L02     @         \r
+
 .group ì\r
         ì          i2\r
         ì (A       j2\r
         ìa         i@2\r
         ìu         iU2\r
-        \r
\r
+?2      ì (L03     @2        \r
+?1      ì (L03     @2        \r
+?2      ì (L02     @2\r
+
 .group í\r
         í          i3\r
         í (A       j3\r
         ía         i@3\r
         íu         iU3\r
-        \r
\r
+?2      í (L03     @3        \r
+?1      í (L03     @3\r
+?2      í (L02     @3\r
+
 .group ỉ\r
         ỉ          i4\r
         ỉ (A       j4\r
         ỉa         i@4\r
         ỉu         iU4\r
-        \r
\r
+?2      ỉ (L03     @4        \r
+?1      ỉ (L03     @4\r
+?2      ỉ (L02     @4        \r
+        \r 
+
 .group ĩ\r
         ĩ          i5\r
         ĩ (A       j5\r
         ĩa         i@5\r
         ĩu         iU5\r
-        \r
\r
+?2      ĩ (L03     @5        \r
+?1      ĩ (L03     @5\r
+?2      ĩ (L02     @5        \r
+        \r 
+
 .group ị\r
         ị          i6\r
         ị (A       j6\r
         ịa         i@6\r
         ịu         iU6\r
-        \r
\r
+?2      ị (L03     @6        \r
+?1      ị (L03     @6\r
+?2      ị (L02     @6\r
+        \r 
 //=========================\r
-\r
+        \r 
+
 .group o\r
         o          O\r
         oa         o@        // modify oa sound  example: hoa,khoa // o (A       w\r
@@ -537,142 +625,165 @@ ỵ     ỵ
         ong        O#\r
         oe         o&        // Adding  oe sound  example: lóe sáng,toét mắt\r
         o (L01     _^_EN\r
-        \r
-        \r
+        oai        Oi        // oai sound\r
+        oại        Oi6\r
+        oài        Oi2\r
+        oái        Oi3\r
+        oải        Oi4\r
+        oãi        Oi5\r
+        \r 
+
 .group ò\r
         ò          O2\r
         òi         OI2\r
         òa         o@2       //ò (A       w2\r
         òng        O#2\r
         òe         o&2\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+
 .group ó\r
         ó          O3\r
         ói         OI3\r
         óa         o@3       //ó (A       w3\r
         óng        O#3\r
         óe         o&3\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+
 .group ỏ\r
         ỏ          O4\r
         ỏi         OI4\r
         ỏa         o@4       //ỏ (A       w4\r
         ỏng        O#4\r
         ỏe         o&4\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+
 .group õ\r
         õ          O5\r
         õi         OI5\r
         õa         o@5       //õ (A       w5\r
         õng        O#5\r
         õe         o&5\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+
 .group ọ\r
         ọ          O6\r
         ọi         OI6\r
         ọa         o@6       //ọ (A       w6\r
         ọng        O#6\r
         ọe         o&6\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
 //=============================\r
-\r
+        \r 
+
 .group ô\r
         ô          o\r
         ôi         oI\r
         ông        o#        // ông sound\r
-        \r
\r
+?2      ôi         O-        //south dialect \r
+        \r 
+
 .group ồ\r
         ồ          o2\r
         ồi         oI2\r
         ồng        o#2\r
-        \r
\r
-\r
+?2      ồi         O-2       \r
+        \r 
+        \r 
+
 .group ố\r
         ố          o3\r
         ối         oI3\r
         ống        o#3\r
-        \r
\r
-\r
+?2      ối         O-3       \r
+        \r 
+        \r 
+
 .group ổ\r
         ổ          o4\r
         ổi         oI4\r
         ổng        o#4\r
-        \r
\r
-\r
+?2      ổi         O-4       \r
+        \r 
+        \r 
+
 .group ỗ\r
         ỗ          o5\r
         ỗi         oI5\r
         ỗng        o#5\r
-        \r
\r
-\r
+        \r 
+?2      ỗi         O-5\r
+        \r 
+
 .group ộ\r
         ộ          o6\r
         ội         oI6\r
         ộng        o#6\r
-        \r
\r
-        \r
+?2      ội         O-6       \r
+        \r 
+        \r 
 //=============================\r
-\r
+        \r 
+
 .group ơ\r
         ơ          @:\r
         ơi         @:I\r
         ơu         @:U\r
-        \r
\r
-\r
+?2      ơi         @-        //south dialect \r
+        \r 
+        \r 
+
 .group ờ\r
         ờ          @:2\r
         ời         @:I2\r
         ờu         @:U2\r
-        \r
\r
-\r
+?2      ời         @-2       \r
+        \r 
+        \r 
+
 .group ớ\r
         ớ          @:3\r
         ới         @:I3\r
         ớu         @:U3\r
-        \r
\r
-\r
+?2      ới         @-3       \r
+        \r 
+        \r 
+
 .group ở\r
         ở          @:4\r
         ởi         @:I4\r
         ởu         @:U4\r
-        \r
\r
-\r
+?2      ởi         @-4       \r
+        \r 
+        \r 
+
 .group ỡ\r
         ỡ          @:5\r
         ỡi         @:I5\r
         ỡu         @:U5\r
-        \r
\r
-\r
+?2      ỡi         @-5       \r
+        \r 
+        \r 
+
 .group ợ\r
         ợ          @:6\r
         ợi         @:I6\r
         ợu         @:U6\r
-        \r
\r
-\r
+?2      ợi         @-6       \r
+        \r 
+        \r 
 //=============================\r
-\r
+        \r 
+
 .group u\r
         u          u\r
         u (A       w\r
@@ -705,54 +816,60 @@ ỵ       ỵ
         u (L01     _^_EN\r
         ui (L01    _^_EN\r
         ua (L01    _^_EN\r
-        \r
-        \r
+?2      u          u-        \r
+        \r 
+
 .group ù\r
         ù          u2\r
         ù (A       w2\r
         ùi         uI2\r
         ùa         u@2\r
                //ùng        u#2\r
-        \r
\r
-\r
+        \r 
+?2      ù          u-2       \r
+        \r 
+
 .group ú\r
         ú          u3\r
         ú (A       w3\r
         úi         uI3\r
         úa         u@3\r
                //úng        u#3\r
-        \r
\r
-\r
+?2      ú          u-3       \r
+        \r 
+        \r 
+
 .group ủ\r
         ủ          u4\r
         ủ (A       w4\r
         ủi         uI4\r
         ủa         u@4\r
                //ủng        u#4\r
-        \r
\r
-\r
+        \r 
+?2      ủ          u-4       \r
+        \r 
+
 .group ũ\r
         ũ          u5\r
         ũ (A       w5\r
         ũi         uI5\r
         ũa         u@5\r
                //ũng        u#5\r
-        \r
\r
-\r
+?2      ũ          u-5       \r
+        \r 
+        \r 
+
 .group ụ\r
         ụ          u6\r
         ụ (A       w6\r
         ụi         uI6\r
         ụa         u@6\r
                //ụng        u#6\r
-        \r
\r
+?2      ụ          u-6       \r
+        \r 
 //=============================\r
-\r
+        \r 
+
 .group ư\r
         ư          y\r
         ưi         yI\r
@@ -776,50 +893,56 @@ ỵ       ỵ
         ưởu        y@w4\r
         ưỡu        y@w5\r
         ượu        y@w6\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+
 .group ừ\r
         ừ          y2\r
         ừi         yI2\r
         ừa         y@2\r
         ừu         yw2\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+
 .group ứ\r
         ứ          y3\r
         ứi         yI3\r
         ứa         y@3\r
         ứu         yw3\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+
 .group ử\r
         ử          y4\r
         ửi         yI4\r
         ửa         y@4\r
         ửu         yw4\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+
 .group ữ\r
         ữ          y5\r
         ữi         yI5\r
         ữa         y@5\r
         ữu         yw5\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+
 .group ự\r
         ự          y6\r
         ựi         yI6\r
         ựa         y@6\r
         ựu         yw6\r
-        \r
\r
+        \r 
+        \r 
 //=============================\r
-\r
+        \r 
+
 .group y\r
         y          i\r
        // y (A       j\r
@@ -836,49 +959,55 @@ ỵ       ỵ
         yễ         i@5\r
         yệ         i@6\r
       //  yêu        i@U\r
-        \r
+        \r 
         y (L01     _^_EN\r
-\r
+        \r 
+
 .group ỳ\r
         ỳ          i2\r
         ỳ (A       j2\r
         ỳa         i@2\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+
 .group ý\r
         ý          i3\r
         ý (A       j3\r
         ýa         i@3\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+
 .group ỷ\r
         ỷ          i4\r
         ỷ (A       j4\r
         ỷa         i@4\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+
 .group ỹ\r
         ỹ          i5\r
         ỹ (A       j5\r
         ỹa         i@5\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+
 .group ỵ\r
         ỵ          i6\r
         ỵ (A       j6\r
         ỵa         i@6\r
-        \r
\r
+        \r 
+        \r 
 //=============================\r
-\r
+        \r 
+
 .group 0xce   // Greek letters\r
 // 0xce is the first byte of the utf-8 code for these characters\r
-        \r
\r
+        \r 
+        \r 
         α          a:1n_|f'a:1\r
         ά          a:1n_|f'a:1\r
         β          b'e1_|t['a:1\r
@@ -898,12 +1027,13 @@ ỵ      ỵ
         ν          nw'i1\r
         ξ          s'i7\r
         ο          o1_|m'i1_|kz.'O7n\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+
 .group 0xcf   // Greek letters\r
-        \r
\r
+        \r 
+        \r 
         π          p'i1\r
         ρ          z.'o1\r
         σ          s'i3c_|m'a:1\r
@@ -917,11 +1047,12 @@ ỵ      ỵ
         ω          o1_|m'e1_|Q'a:7\r
         ώ          o1_|m'e1_|Q'a:7\r
         ό          o1_|m'i1_|kz.'O7n\r
-        \r
\r
-        \r
\r
-\r
+        \r 
+        \r 
+        \r 
+        \r 
+        \r 
+
 .group\r
         %          f'@2n||cr'am\r
         !          _:c'@3m_|t'a:7n_:\r
@@ -932,14 +1063,14 @@ ỵ      ỵ
         !=         x'o#_|_b'a2N_\r
         >=         l'@:3n_|h'@:1n_|hw,a6kh_b'a2N\r
         <=         n^'O4_|h'@:1n_|hw,a6kh_b'a2N\r
-        \r
\r
+        \r 
+        \r 
     __) - (_D      cr'y2\r
     A_) - (_D      _\r
     C_) - (_D      _\r
-        \r
+        \r 
         .          c'@3m_\r
         . (.       _:\r
     \.) .          \r
-        \r
\r
+        \r 
+        \r 
index 62196d8..b2e3cd9 100644 (file)
Binary files a/include/espeak/espeak-data/af_dict and b/include/espeak/espeak-data/af_dict differ
index 8ed67c8..ae1653a 100644 (file)
Binary files a/include/espeak/espeak-data/an_dict and b/include/espeak/espeak-data/an_dict differ
diff --git a/include/espeak/espeak-data/az_dict b/include/espeak/espeak-data/az_dict
new file mode 100644 (file)
index 0000000..e49c57a
Binary files /dev/null and b/include/espeak/espeak-data/az_dict differ
index 2b66258..79a49c6 100644 (file)
Binary files a/include/espeak/espeak-data/bg_dict and b/include/espeak/espeak-data/bg_dict differ
index 5336913..44893f0 100644 (file)
Binary files a/include/espeak/espeak-data/bn_dict and b/include/espeak/espeak-data/bn_dict differ
index f06f372..bfb9908 100644 (file)
Binary files a/include/espeak/espeak-data/ca_dict and b/include/espeak/espeak-data/ca_dict differ
index f7e4c44..7a1dca1 100644 (file)
Binary files a/include/espeak/espeak-data/cs_dict and b/include/espeak/espeak-data/cs_dict differ
index 1faec44..ee4be2e 100644 (file)
Binary files a/include/espeak/espeak-data/cy_dict and b/include/espeak/espeak-data/cy_dict differ
index 703e1a5..475e9ba 100644 (file)
Binary files a/include/espeak/espeak-data/da_dict and b/include/espeak/espeak-data/da_dict differ
index 69bdbe6..fd84fb0 100644 (file)
Binary files a/include/espeak/espeak-data/de_dict and b/include/espeak/espeak-data/de_dict differ
index a423fc2..fb661fd 100644 (file)
Binary files a/include/espeak/espeak-data/en_dict and b/include/espeak/espeak-data/en_dict differ
index acf12a9..1f75c9c 100644 (file)
Binary files a/include/espeak/espeak-data/eo_dict and b/include/espeak/espeak-data/eo_dict differ
index 08d22ba..57acc0c 100644 (file)
Binary files a/include/espeak/espeak-data/es_dict and b/include/espeak/espeak-data/es_dict differ
index 0618947..36501b2 100644 (file)
Binary files a/include/espeak/espeak-data/et_dict and b/include/espeak/espeak-data/et_dict differ
index 8764370..5f0fa0e 100644 (file)
Binary files a/include/espeak/espeak-data/fa_dict and b/include/espeak/espeak-data/fa_dict differ
index 352b675..17bf66e 100644 (file)
Binary files a/include/espeak/espeak-data/fi_dict and b/include/espeak/espeak-data/fi_dict differ
index dbb6e5b..8d97f8d 100644 (file)
Binary files a/include/espeak/espeak-data/fr_dict and b/include/espeak/espeak-data/fr_dict differ
index 9a1192f..36332ff 100644 (file)
Binary files a/include/espeak/espeak-data/ga_dict and b/include/espeak/espeak-data/ga_dict differ
index d199a66..827b44d 100644 (file)
Binary files a/include/espeak/espeak-data/hbs_dict and b/include/espeak/espeak-data/hbs_dict differ
index c00f4ac..2b04802 100644 (file)
Binary files a/include/espeak/espeak-data/hi_dict and b/include/espeak/espeak-data/hi_dict differ
index ad955fc..c113d45 100644 (file)
Binary files a/include/espeak/espeak-data/hu_dict and b/include/espeak/espeak-data/hu_dict differ
index 24bffef..6d2c8ad 100644 (file)
Binary files a/include/espeak/espeak-data/hy_dict and b/include/espeak/espeak-data/hy_dict differ
index 23bbe9b..5bd43b7 100644 (file)
Binary files a/include/espeak/espeak-data/id_dict and b/include/espeak/espeak-data/id_dict differ
index b4c4a19..477ef7e 100644 (file)
Binary files a/include/espeak/espeak-data/is_dict and b/include/espeak/espeak-data/is_dict differ
index f56c84a..f365745 100644 (file)
Binary files a/include/espeak/espeak-data/it_dict and b/include/espeak/espeak-data/it_dict differ
index 9aec299..ac2a952 100644 (file)
Binary files a/include/espeak/espeak-data/jbo_dict and b/include/espeak/espeak-data/jbo_dict differ
index 818cc39..0cf221e 100644 (file)
Binary files a/include/espeak/espeak-data/ka_dict and b/include/espeak/espeak-data/ka_dict differ
index 57562ef..21df84c 100644 (file)
Binary files a/include/espeak/espeak-data/kn_dict and b/include/espeak/espeak-data/kn_dict differ
index fc04fba..17ee6f1 100644 (file)
Binary files a/include/espeak/espeak-data/ku_dict and b/include/espeak/espeak-data/ku_dict differ
index 77a9ebe..9faecc4 100644 (file)
Binary files a/include/espeak/espeak-data/la_dict and b/include/espeak/espeak-data/la_dict differ
index 620a56e..1e2daa7 100644 (file)
Binary files a/include/espeak/espeak-data/lt_dict and b/include/espeak/espeak-data/lt_dict differ
index 5c6d83b..158cf7b 100644 (file)
Binary files a/include/espeak/espeak-data/lv_dict and b/include/espeak/espeak-data/lv_dict differ
index 91dbdc4..a682135 100644 (file)
Binary files a/include/espeak/espeak-data/mk_dict and b/include/espeak/espeak-data/mk_dict differ
index 20203b4..8a3b036 100644 (file)
Binary files a/include/espeak/espeak-data/ms_dict and b/include/espeak/espeak-data/ms_dict differ
index 4aa564c..b550602 100644 (file)
Binary files a/include/espeak/espeak-data/ne_dict and b/include/espeak/espeak-data/ne_dict differ
index 78350b3..212bcef 100644 (file)
Binary files a/include/espeak/espeak-data/nl_dict and b/include/espeak/espeak-data/nl_dict differ
index 7b33c64..aaf0301 100644 (file)
Binary files a/include/espeak/espeak-data/no_dict and b/include/espeak/espeak-data/no_dict differ
index ad7d58c..dc1bcdb 100644 (file)
Binary files a/include/espeak/espeak-data/pa_dict and b/include/espeak/espeak-data/pa_dict differ
index 615966a..b39bfe8 100644 (file)
Binary files a/include/espeak/espeak-data/pap_dict and b/include/espeak/espeak-data/pap_dict differ
index 2f6f176..92e363c 100644 (file)
Binary files a/include/espeak/espeak-data/phondata and b/include/espeak/espeak-data/phondata differ
index 0f0f24f..3a7f242 100644 (file)
@@ -175,652 +175,658 @@ S  0x0c124  r3/@tap
 S  0x0c268  d/tap1
 S  0x0c32c  d/tap3
 S  0x0c430  d/dr
-S  0x0c4b4  r3/@tap_rfx
-S  0x0c5f8  b/xb
-S  0x0c6bc  klatt/b
-W  0x0c780  x/b_
-W  0x0cb98  x/b
-S  0x0ccfc  b/b_
-S  0x0cdc0  b/b@2
-S  0x0cec4  b/b@
-S  0x0cfc8  b/ba
-S  0x0d0cc  b/be
-S  0x0d1d0  b/bi
-S  0x0d2d4  b/bo
-S  0x0d3d8  b/bu
-S  0x0d4dc  b/b
-S  0x0d5e0  d/xd
-S  0x0d6a4  d/d_
-W  0x0d768  x/d_
-S  0x0db90  d/d
-W  0x0dc54  x/d
-W  0x0de70  x/d_dnt
-S  0x0e154  dzh/xdzh
-S  0x0e218  dzh/dzh_
-W  0x0e2dc  x/dzh_
-S  0x0ed14  dzh/dzh
-W  0x0edd8  x/dzh
-W  0x0f1e4  x/dz_pzd
-S  0x0f644  dzh/xdz_pzd
-S  0x0f708  klatt/dz_pzd_
-S  0x0f7cc  klatt/dz_pzd
-S  0x0f890  dzh/dz_pzd_
-S  0x0f954  dzh/dz_pzd
-S  0x0fa18  g/xg
-S  0x0fadc  g/g_
-W  0x0fba0  x/g_
-S  0x0ff60  g/g
-W  0x10024  x/g2
-S  0x102ac  klatt/v_
-W  0x10370  vocw/v
-S  0x10c70  klatt/bh
-S  0x10d34  voc/v_
-S  0x10df8  voc/bh
-S  0x10ebc  klatt/v
-S  0x10f80  voc/v
-S  0x11084  voc/v#_
-S  0x11148  voc/v#
-S  0x1124c  voc/dh_
-W  0x11310  vocw/dh
-S  0x11c18  voc/dh
-S  0x11cdc  voc/z_
-W  0x11da0  ufric/s_
-S  0x12854  voc/z
-S  0x12918  klatt/zh_
-W  0x129dc  vocw/zh
-S  0x13344  klatt/zh
-S  0x13408  voc/zh_
-S  0x134cc  voc/zh
-W  0x13590  vocw/zh_rfx
-S  0x13e20  voc/z_pzd_
-W  0x13ee4  ufric/s_pzd_
-S  0x149e8  voc/z_pzd
-W  0x14aac  ufric/s_pzd
-W  0x153e4  ufric/sh_pzd_
-W  0x15eac  ufric/sh_pzd
-S  0x167e0  voc/j
-W  0x168e4  ufric/ch
-S  0x16ffc  klatt/qqh_
-W  0x170c0  vocw/Q_
-S  0x178cc  klatt/qqh
-W  0x17990  vocw/Q
-S  0x1819c  voc/Q_
-S  0x18260  voc/Q
-S  0x18324  voc/Q_ulv
-W  0x18428  ufric/xx
-W  0x18f24  ustop/p_
-W  0x19734  ustop/pr
-W  0x19b7c  ustop/p_unasp
-W  0x19ea8  ustop/pl
-W  0x1a2a0  ustop/p
-W  0x1a610  ustop/t_
-W  0x1aad0  ustop/tr
-W  0x1b230  ustop/t_dnt
-W  0x1b640  ustop/t
-W  0x1ba74  ustop/t_hi
-W  0x1be10  ustop/tsh_
-W  0x1c750  ustop/tsh
-W  0x1cd90  ustop/ts_pzd
-W  0x1d494  ustop/t_pzd
-W  0x1d8e0  ustop/c
-W  0x1db90  ustop/k_
-W  0x1e04c  ustop/kr
-W  0x1e68c  ustop/ki
-W  0x1ec54  ustop/kl
-W  0x1f284  ustop/k_unasp
-W  0x1f758  ustop/k
-W  0x1fc2c  ustop/q
-W  0x1fd98  ustop/q_u
-W  0x1feb8  ufric/f_
-W  0x20988  ufric/f
-W  0x21178  ufric/th_
-W  0x219f8  ufric/th
-W  0x22290  ufric/s!
-W  0x22b40  ufric/s
-W  0x232e0  ufric/sh_
-W  0x23d90  ufric/sh
-W  0x24740  ufric/sh_rfx
-W  0x250dc  ufric/l#
-W  0x25b20  ufric/ch_
-W  0x26448  ufric/x
-W  0x26dac  ufric/x_hr
-W  0x276c0  h/h@
-W  0x27c14  h/ha
-W  0x28290  h/he
-W  0x28924  h/hi
-W  0x28ebc  h/ho
-W  0x29578  h/hu
-W  0x29c9c  h/h_
-W  0x2a348  ustop/ts_
-W  0x2aca8  ustop/ts
-S  0x2b704  d/xdz
-W  0x2b7c8  ustop/p_unasp_
-W  0x2b904  ustop/p_asp
-W  0x2be08  ustop/t_short
-W  0x2c04c  ustop/ts_pzd_
-W  0x2c510  ustop/ts_pzd2
-W  0x2c844  ustop/k_asp
-W  0x2cf48  ustop/k_asp_e
-W  0x2d6b0  ustop/k_asp_a
-W  0x2df34  ufric/s_continue
-S  0x2e6e4  vowel/a#
-S  0x2e7e8  vowel/a_2
-S  0x2e8ec  vowel/ee_1
-S  0x2ea30  vowel/o
-S  0x2eb74  vowel/oo_4
-S  0x2ec78  vowel/u_bck
-S  0x2ed7c  vowel/uu_2
-S  0x2ee80  vowel/y
-S  0x2efc4  vowel/y#
-S  0x2f0c8  vdiph/au_4
-S  0x2f24c  vdiph/eu
-S  0x2f390  vdiph2/iu
-S  0x2f514  vdiph/ai
-S  0x2f658  vdiph/ei
-S  0x2f79c  vdiph/eei
-S  0x2f920  vdiph/oi
-S  0x2fae4  vdiph/ui
-S  0x2fc28  w/w2
-W  0x2fcec  ustop/t_dnt2
-S  0x2ff44  klatt/x_tap
-S  0x30008  klatt/tap2
-S  0x300cc  d/x_tap
-S  0x30190  d/tap2
-W  0x30254  x/g2_
-S  0x30614  r2/r2@
-S  0x306d8  r2/r2a
-S  0x3079c  r2/r2e
-S  0x308a0  r2/r2i
-S  0x30964  r2/r2o
-S  0x30a28  r2/r2u
-S  0x30aec  vowel/@_6
-S  0x30bf0  vwl_en/@L
-S  0x30cb4  vowel/a_8
-S  0x30db8  vowel/a#_3
-S  0x30ebc  vowel/ee_5
-S  0x30fc0  vowel/ii_2
-S  0x310c4  vowel/ii_4
-S  0x311c8  vowel/ii_7
-S  0x312cc  vowel/0
-S  0x313d0  vowel/V_2
-S  0x314d4  vowel/uu
-S  0x315d8  vowel/aa_2
-S  0x3175c  vowel/3_en
-S  0x318a0  w/wi2
-S  0x319a4  vowel/i_en
-S  0x31ae8  vowel/oo_en
-S  0x31c2c  vwl_en/u_L
-S  0x31d70  vdiph2/uw_2
-S  0x31eb4  vdiph/au
-S  0x32038  vdiph/@u_en
-S  0x321bc  vdiph/ai_2
-S  0x32380  vdiph/ooi
-S  0x32544  vdiph2/ii@
-S  0x326c8  vdiph2/8@
-S  0x3280c  vdiph2/uu@
-S  0x32990  vwl_en/aI@
-S  0x32b54  vwl_en/aU@
-S  0x32cd8  vowelr/V_r
-S  0x32e1c  vowelr/V3_r
-S  0x32f60  vnasal/aa_n2
-S  0x330a4  vnasal/oo_n2
-S  0x331e8  vowel/@_3
-S  0x332ac  vowel/@_fr
-S  0x33370  vowel/ee
-S  0x33474  vowel/ii
-S  0x33578  vowel/e_2
-S  0x3367c  vowel/0_2
-S  0x33780  vowel/o-_2
-S  0x33884  vowel/aa_5
-S  0x339c8  vowel/3_2
-S  0x33b0c  vowel/oo_1
-S  0x33c50  vwl_en_n/O@
-S  0x33d54  vdiph2/uw_4
-S  0x33e98  vdiph/eeu_3
-S  0x33fdc  vdiph/ae_2
-S  0x34160  vdiph2/ee@
-S  0x342a4  vdiph2/i@
-S  0x34468  vwl_en_us/3_us
-S  0x3456c  vowel/@_4
-S  0x34630  vowel/@_low2
-S  0x346f4  vnasal/ee_n2
-S  0x34838  vwl_en_us/a
-S  0x3493c  vwl_en_us/ee
-S  0x34a40  vowel/ii#_3
-S  0x34b44  vowel/ii#
-S  0x34c48  vowel/ii_final
-S  0x34d4c  vowel/aa_8
-S  0x34e50  vowel/V_6
-S  0x34f54  vowel/8_2
-S  0x35058  vwl_en_us/ar
-S  0x351dc  vwl_en_us/3_us2
-S  0x35320  vwl_en_us/oor
-S  0x354a4  vowel/0_3
-S  0x355a8  vwl_en_us/or
-S  0x356ec  vowel/aa#
-S  0x357f0  vdiph2/uw_6
-S  0x35934  vdiph/aoo
-S  0x35a78  vdiph/8u
-S  0x35bbc  vdiph/aae
-S  0x35d40  vdiph2/ei_4
-S  0x35e84  vdiph/ooi_3
-S  0x36008  vwl_en_us/er
-S  0x3618c  vwl_en_us/ir
-S  0x36310  vwl_en_us/ur
-S  0x36454  vwl_en_us/ai@
-S  0x365d8  vwl_en_us/ai3
-S  0x3679c  vwl_en_us/aU@
-S  0x36960  vowel/V
-S  0x36a64  vowel/a_3
-S  0x36b68  vowel/e_e
-S  0x36c6c  vowel/e#
-S  0x36d70  vowel/e_5
-S  0x36e74  vowel/oo_2
-S  0x36f78  vowel/V_4
-S  0x3707c  vowel/u#_4
-S  0x37180  vowelr/aa_r
-S  0x37344  vowelr/e_r
-S  0x374c8  vowel/i_5
-S  0x375cc  vowelr/oo_r
-S  0x376d0  vowel/u#
-S  0x377d4  vdiph/au#
-S  0x37918  vowel/o_3
-S  0x37a5c  vwl_en/aI@_2
-S  0x37be0  vdiph/ai_7
-S  0x37d64  vdiph/0i_2
-S  0x37ee8  vdiph2/e@
-S  0x3802c  vowelr/i_r
-S  0x38170  vdiph2/u#@
-S  0x382b4  vwl_en/@L_2
-S  0x383b8  vowel/@_low
-S  0x3847c  vowel/&
-S  0x38580  vowel/e_mid
-S  0x38684  vowel/V_3
-S  0x38788  vowel/o-_3
-S  0x3888c  vwl_en_rp/aa
-S  0x389d0  vowel/3_3
-S  0x38b14  vowel/uu#_2
-S  0x38c18  vdiph/au_3
-S  0x38d9c  vdiph/@u_2
-S  0x38ee0  vdiph/ai_6
-S  0x390a4  vdiph2/ei_2
-S  0x391e8  vdiph2/ee@_2
-S  0x3932c  vwl_en_rp/i@
-S  0x394b0  vowel/o_mid
-S  0x395b4  vwl_en_rp/aU@
-S  0x39738  vowel/ii_6
-S  0x397fc  vdiph2/ei_3
-S  0x39940  vdiph/@u
-S  0x39a84  vdiph/Vu_2
-S  0x39c08  vdiph/@i_3
-S  0x39d4c  vdiph2/i@_2
-S  0x39ed0  vwl_en/ooi@
-S  0x3a094  vowel/@_fnt
-S  0x3a198  vowel/uu_bck
-S  0x3a29c  vowel/i_fnt
-S  0x3a3a0  vdiph2/o_oo
-S  0x3a4e4  vdiph/aau_2
-S  0x3a628  vdiph2/ie
-S  0x3a76c  vwl_af/r@
-S  0x3a830  vwl_af/@
-S  0x3a8f4  vowel/e_mid2
-S  0x3a9f8  vwl_af/I
-S  0x3aabc  vowel/oo_3
-S  0x3ab80  vowel/oe
-S  0x3ac84  vowel/uu_3
-S  0x3ad48  l/L_eL_af
-S  0x3ae0c  vowel/ee_3
-S  0x3aed0  vowel/aa_3
-S  0x3afd4  vdiph/i@_2
-S  0x3b158  vowel/i_3
-S  0x3b25c  vdiph2/o@
-S  0x3b3e0  vowel/y_3
-S  0x3b4e4  vdiph2/iu_3
-S  0x3b6a8  vdiph/Vu
-S  0x3b82c  vdiph/ai_4
-S  0x3b9b0  vdiph/aai_2
-S  0x3bb74  vdiph/@i_2
-S  0x3bcb8  vdiph/ooi_2
-S  0x3be7c  vdiph/oi_2
-S  0x3c040  vdiph/ui_2
-S  0x3c1c4  vdiph/y#y_2
-S  0x3c348  vdiph2/y#@
-S  0x3c48c  vnasal/aa_n3
-S  0x3c5d0  vnasal/e_n
-S  0x3c6d4  vnasal/o_n2
-W  0x3c818  ufric/x2
-S  0x3d170  vowel/ee_2
-S  0x3d274  vowel/ii_3
-S  0x3d378  vowel/i#
-S  0x3d47c  vowel/o_2
-S  0x3d5c0  vdiph2/iu_4
-S  0x3d704  vdiph/ui_3
-S  0x3d888  vowel/a_4
-S  0x3d98c  vdiph/@u_3
-S  0x3db10  vdiph2/u@
-S  0x3dc94  vowel/aa_6
-S  0x3ddd8  vowel/i_2
-S  0x3dedc  vdiph/aau_6
-S  0x3e060  vdiph/ai_5
-S  0x3e1a4  vowel/e_8
-S  0x3e2a8  vowel/yy_4
-S  0x3e3ac  l/l_3
-S  0x3e430  j/_j_short
-S  0x3e4b4  vdiph2/i@_3
-S  0x3e638  vwl_de/uu_@
-S  0x3e77c  vnasal/aa_n4
-Q  0x3e8c0  de
-S  0x3e8d0  vdiph/eei_2
-S  0x3ea14  vowel/i_4
-S  0x3eb18  vowel/aa_9
-S  0x3ec1c  vowel/u_2
-S  0x3ed20  vowel/uu_4
-S  0x3ee24  vdiph/aai_3
-S  0x3efa8  vdiph/&i
-S  0x3f0ec  vdiph/y#i
-S  0x3f230  vdiph/ui_4
-S  0x3f374  vdiph/yi
-S  0x3f4b8  vdiph/aau
-S  0x3f63c  vdiph/ou
-S  0x3f780  vdiph/eu_2
-S  0x3f8c4  vdiph2/iu_2
-S  0x3fa48  vdiph/&y
-S  0x3fb8c  vdiph/eey
-S  0x3fcd0  vdiph/y#y
-S  0x3fe14  vdiph2/iy
-S  0x3ff58  vdiph2/uo
-S  0x4009c  vdiph2/y-y#
-S  0x401e0  r3/r_trill_short
-W  0x402e4  h/hu_fi
-S  0x40bd4  vowel/aa
-S  0x40cd8  vowel/e_7
-S  0x40ddc  vowel/ee#_2
-S  0x40ee0  vowel/i_8
-S  0x40fe4  vowel/i_7
-S  0x410e8  vowel/i#_7
-S  0x411ec  vowel/u_bck2
-S  0x412f0  vowel/u_bck3
-S  0x413f4  vowel/u_5
-S  0x414f8  vowel/8_7
-S  0x415fc  vowel/8_4
-S  0x41700  vdiph/@i
-W  0x41844  ufric/s_pal
-S  0x420f8  d/xd_pzd
-W  0x421bc  x/d_pzd
-S  0x425d0  vwl_fr/y2r
-S  0x42654  vwl_fr/e_2r
-S  0x426d8  vwl_fr/aa2r
-S  0x4275c  vwl_fr/ee2r
-S  0x42820  vwl_fr/oo2r
-S  0x428e4  vwl_fr/@2r
-S  0x42968  vwl_fr/a2r
-S  0x429ec  vwl_fr/e2r
-S  0x42a70  vwl_fr/i2r
-S  0x42af4  vwl_fr/o2r
-S  0x42b78  vwl_fr/u2r
-S  0x42bfc  vwl_fr/re2
-S  0x42c80  vwl_fr/r@2
-S  0x42d04  vwl_fr/raa
-S  0x42d88  vwl_fr/ree
-S  0x42e0c  vwl_fr/ry
-S  0x42e90  vwl_fr/rw
-S  0x42f14  vwl_fr/roo
-S  0x42f98  vwl_fr/rj
-S  0x4301c  vwl_fr/r@
-S  0x430a0  vwl_fr/ra
-S  0x43124  vwl_fr/re
-S  0x431a8  vwl_fr/ri
-S  0x4322c  vwl_fr/ro
-S  0x432b0  vwl_fr/ru
-S  0x43334  vwl_fr/r
-S  0x433b8  vwl_fr/trr
-S  0x4347c  vwl_fr/rr
-S  0x43500  vwl_fr/r_@
-S  0x43584  vwl_fr/r_a
-S  0x43608  vwl_fr/r_e
-S  0x4368c  vwl_fr/r_i
-S  0x43710  vwl_fr/r_o
-S  0x43794  vwl_fr/r_u
-S  0x43818  vwl_fr/r_y
-S  0x4389c  vwl_fr/r_n
-S  0x43960  vwl_fr/r_
-S  0x439e4  vwl_fr/tr
-S  0x43ae8  vwl_fr/br
-S  0x43bec  vwl_fr/lo
-S  0x43c70  l/l_y
-S  0x43cf4  vowel/@_hgh
-S  0x43db8  vowel/a_7
-S  0x43ebc  vwl_fr/j
-S  0x43fc0  vowel/o_8
-S  0x44104  vowel/o_mid2
-S  0x44208  vwl_fr/wa
-S  0x442cc  vnasal/W_n
-S  0x44410  vnasal/o_n4
-S  0x44554  b/xbr
-S  0x44618  b/br
-S  0x4469c  d/xdr
-S  0x44760  g/xgr
-S  0x44824  g/gr
-W  0x448e8  x/g
-S  0x44ba8  n/n_long_
-W  0x44c6c  ustop/t_short_
-Q  0x44ef8  fr
-S  0x44fac  vnasal/ee_n
-S  0x450f0  vowel/yy
-S  0x451f4  vdiph/ae
-S  0x45338  vwl_fr/@R2
-S  0x4543c  vowel/o_6
-S  0x45540  vowel/a#_2
-S  0x45644  vowel/a#_4
-S  0x45748  vdiph/y#y_3
-S  0x4584c  vdiph/ou_4
-S  0x45990  vdiph2/yu
-S  0x45b14  voc/Q_less
-W  0x45bd8  vocw/Q2
-S  0x464a4  vowel/@_bck
-S  0x465a8  vowel/i_6
-S  0x466ac  vdiph/ee-e
-S  0x467f0  vowel/a_5
-S  0x468f4  vnasal/i_n2
-S  0x469f8  vnasal/ii_n
-S  0x46afc  vnasal/&_n
-S  0x46c00  vnasal/V_n
-S  0x46d04  vnasal/o_n
-S  0x46e48  vnasal/u_n
-S  0x46f4c  vdiph/aau_3
-S  0x470d0  d/xd3
-S  0x47194  g2/xg
-W  0x47258  ustop/percus02
-S  0x47588  vowel/&_2
-S  0x4768c  vowel/oo_5
-S  0x47790  vdiph/aai
-S  0x47914  vdiph/Vi
-E  0x47a98  envelope/p_512
-S  0x47b18  vowel/ii_5
-S  0x47c1c  vowel/u_6
-S  0x47d20  vowel/u#_3
-S  0x47e24  vdiph/ai_8
-S  0x47fa8  voc/murmur1
-S  0x480ec  vowel/y#_2
-S  0x481f0  vowel/e_3
-S  0x482f4  vwl_ru/ee
-S  0x48438  vdiph2/ea
-S  0x4857c  vdiph2/uaa
-S  0x48700  vdiph2/ie_2
-S  0x48844  vdiph/ou_2
-S  0x48988  vdiph/eei_3
-W  0x48acc  ustop/ts2
-S  0x48f9c  vowel/ee#
-S  0x490a0  vowel/ii#_2
-S  0x491a4  vnasal/ee_u_n
-S  0x49328  vnasal/oo_n3
-S  0x494ac  vowel/ee_6
-W  0x49570  r3/rz_cs
-S  0x4a01c  voc/zh_2
-S  0x4a0e0  vdiph/oou
-W  0x4a224  ufric/sh3
-W  0x4abb8  ustop/tsh2
-W  0x4b2c4  ustop/ts_pzd3
-S  0x4b944  dzh/dzh2
-W  0x4ba08  ustop/t_sr
-S  0x4bd40  d/d_dnt
-W  0x4be04  ufric/ch_sr
-W  0x4c9e4  ufric/x_sr
-W  0x4d264  ufric/sh_pzd2
-W  0x4ddb4  ustop/ts_sr
-W  0x4e570  ustop/tsh_sr
-W  0x4ee88  x/g3
-S  0x4f070  vwl_ro/mi
-S  0x4f1b4  vwl_ru/ii-
-S  0x4f278  vwl_ru/ii
-S  0x4f37c  vwl_ru/ii#
-S  0x4f440  vwl_ru/i#
-S  0x4f544  vwl_ru/e
-S  0x4f648  vwl_ru/E#
-S  0x4f74c  vwl_ru/E@
-S  0x4f850  vwl_ru/o
-S  0x4f954  vwl_ru/oo
-S  0x4fa18  vwl_ru/u
-S  0x4fb1c  vwl_ru/u#
-S  0x4fc60  vwl_ru/u#u
-S  0x4fda4  vwl_ru/8
-S  0x4fe68  vwl_ru/ju
-S  0x4ff6c  vwl_ru/ja
-S  0x500f0  vwl_ru/a
-S  0x501f4  vwl_ru/aa
-S  0x502f8  r3/r_ru2
-W  0x503fc  r3/r_ru
-S  0x50700  vowel/y_2
-S  0x50844  vdiph/eeu_2
-S  0x50988  voc/v2
-S  0x50a4c  vowel/a_6
-S  0x50b50  vnasal/i_n
-S  0x50c54  vnasal/a#_n2
-S  0x50d58  vnasal/a#_n
-S  0x50e5c  vnasal/a#u_n
-S  0x50fa0  vnasal/oi_n
-S  0x51164  vdiph/0i
-S  0x51328  vdiph/eeu
-S  0x5146c  vowel/i#_5
-S  0x51570  vwl_fr/@R
-S  0x51674  vwl_ro/li
-S  0x51778  vwl_ro/ni
-S  0x5187c  vwl_ro/ii-
-S  0x51940  vowel/o-_4
-S  0x51a44  vdiph/ii
-S  0x51c08  vdiph/i#i
-S  0x51d4c  vdiph2/uw_3
-S  0x51e90  vdiph2/eo
-S  0x52014  vdiph2/e_u
-S  0x52158  vdiph2/oa
-S  0x5229c  d/tap_i
-S  0x52360  d/tap
-W  0x52424  ustop/t_unasp2
-S  0x52530  vowel/y_5
-S  0x52674  vowel/yy_3
-S  0x52778  vowel/u#_2
-S  0x5287c  vowel/oe_4
-S  0x52940  vowel/aa_4
-W  0x52a44  ufric/sx_sv
-S  0x5328c  vowel/y_4
-S  0x53390  vowel/oe_2
-S  0x53494  vwl_no/y#
-S  0x53598  vwl_no/&
-S  0x5369c  vwl_no/u#
-S  0x537a0  vwl_no/u#2
-S  0x538e4  vdiph/ai_3
-S  0x53a28  vwl_no/y#y
-S  0x53b6c  vwl_no/au-
-S  0x53d30  vowel/y##
-S  0x53e34  vowel/y#_3
-S  0x53f38  vdiph/ou_3
-S  0x5403c  vdiph/y#i_2
-S  0x54180  m/m#_
-S  0x54284  n/n#_
-S  0x54388  n^/n^#_
-S  0x5448c  nn/nn#_
-W  0x54590  ufric/tl#
-S  0x54ef8  r3/r#_
-E  0x54f7c  envelope/p_level
-E  0x54ffc  envelope/p_fall
-E  0x5507c  envelope/p_rise
-E  0x550fc  envelope/p_fallrise
-E  0x5517c  envelope/p_214
-E  0x551fc  envelope/vi_5amp
-E  0x5527c  envelope/vi_6amp
-S  0x552fc  vietnam/a
-S  0x55440  vowel/u#_5
-S  0x55544  vowel/@_2
-S  0x55648  vdiph/u-i
-S  0x5578c  vdiph/aau_4
-S  0x55910  vdiph2/ii@_3
-S  0x55a94  vnasal/&u_n
-S  0x55bd8  vietnam/oe
-S  0x55d1c  vietnam/ie_2
-W  0x55e60  vietnam/_c
-S  0x5602c  l/l_vi
-W  0x56130  vietnam/th
-W  0x56720  vietnam/tr
-W  0x56a10  vietnam/dd
-W  0x56fb4  vietnam/ch
-S  0x57510  vwl_zh/ang
-S  0x57714  vwl_zh/aang
-S  0x57958  vdiph/au_2
-S  0x57adc  vwl_zh/eng
-S  0x57ce0  vwl_zh/ing
-S  0x57f24  vwl_zh/ng
-S  0x58068  vwl_zh/oeng
-S  0x5822c  vwl_zh/ong
-S  0x583b0  vwl_zh/ung
-S  0x58534  vowel/8_3
-E  0x58638  envelope/i_risefall
-S  0x586b8  nn/nn2_
-W  0x5877c  ustop/k_unasp_
-W  0x58a38  ustop/tsh_pzd_unasp
-W  0x59288  ustop/tsh_pzd
-W  0x59dc8  ustop/ts_unasp
-W  0x5a640  ustop/ts_rfx_unasp
-W  0x5b22c  ustop/ts_rfx
-S  0x5bf0c  vwl_zh/a_n
-S  0x5c010  vwl_zh/aau
-S  0x5c154  vowel/i#_6
-S  0x5c258  vwl_zh/iaa
-S  0x5c39c  vwl_zh/iaau
-S  0x5c520  vwl_zh/ie
-S  0x5c664  vdiph2/iioo
-S  0x5c7a8  vwl_zh/iou
-S  0x5c92c  vowel/8
-S  0x5ca30  vwl_zh/uaa
-S  0x5cb74  vwl_zh/uai
-S  0x5ccf8  vwl_zh/uei
-S  0x5ce7c  vwl_zh/uo
-S  0x5d000  vwl_zh/y&
-S  0x5d144  vwl_zh/yee
-S  0x5d288  vdiph2/y@
-S  0x5d3cc  vowel/u#_7
-S  0x5d4d0  vowel/8_5
-S  0x5d5d4  vowel/o_7
-S  0x5d6d8  vowel/uu#
-S  0x5d7dc  vowel/8_6
-S  0x5d8e0  vowel/ee_4
-S  0x5d9e4  vdiph/ooi_4
-S  0x5db28  vdiph2/ye
-S  0x5dc6c  l/l_front_
-S  0x5ddb0  l/l_front
-S  0x5deb4  l/l_4
-S  0x5df78  r/a_
-S  0x5e03c  vowel/o_5
-S  0x5e140  r/aa
-W  0x5e244  ustop/k_asp_u
-E  0x5ea74  envelope/i_risefall2
-W  0x5eaf4  ufric/tlh
-S  0x60010  vowel/e_6
-W  0x60114  ustop/tsh_unasp
-W  0x605d4  ustop/k_ejc
-S  0x60d84  vwl_tn/r@
-S  0x60e48  vwl_tn/@
-S  0x60f0c  vwl_tn/I
-S  0x60fd0  vdiph2/ii@_2
-S  0x61154  vowel/ii_8
-S  0x61258  vowel/y#_4
-W  0x6135c  ustop/t_unasp
+S  0x0c4b4  r3/@tap_rfx_
+S  0x0c5f8  r3/@tap_rfx
+S  0x0c73c  b/xb
+S  0x0c800  klatt/b
+W  0x0c8c4  x/b_
+W  0x0ccdc  x/b
+S  0x0ce40  b/b_
+S  0x0cf04  b/b@2
+S  0x0d008  b/b@
+S  0x0d10c  b/ba
+S  0x0d210  b/be
+S  0x0d314  b/bi
+S  0x0d418  b/bo
+S  0x0d51c  b/bu
+S  0x0d620  b/b
+S  0x0d724  d/xd
+S  0x0d7e8  d/d_
+W  0x0d8ac  x/d_
+S  0x0dcd4  d/d
+W  0x0dd98  x/d
+W  0x0dfb4  x/d_dnt
+S  0x0e298  dzh/xdzh
+S  0x0e35c  dzh/dzh_
+W  0x0e420  x/dzh_
+S  0x0ee58  dzh/dzh
+W  0x0ef1c  x/dzh
+W  0x0f328  x/dz_pzd
+S  0x0f788  dzh/xdz_pzd
+S  0x0f84c  klatt/dz_pzd_
+S  0x0f910  klatt/dz_pzd
+S  0x0f9d4  dzh/dz_pzd_
+S  0x0fa98  dzh/dz_pzd
+S  0x0fb5c  g/xg
+S  0x0fc20  g/g_
+W  0x0fce4  x/g_
+S  0x100a4  g/g
+W  0x10168  x/g2
+S  0x103f0  klatt/v_
+W  0x104b4  vocw/v
+S  0x10db4  klatt/bh
+S  0x10e78  voc/v_
+S  0x10f3c  voc/bh
+S  0x11000  klatt/v
+S  0x110c4  voc/v
+S  0x111c8  voc/v#_
+S  0x1128c  voc/v#
+S  0x11390  voc/dh_
+W  0x11454  vocw/dh
+S  0x11d5c  voc/dh
+S  0x11e20  voc/z_
+W  0x11ee4  ufric/s_
+S  0x12998  voc/z
+S  0x12a5c  klatt/zh_
+W  0x12b20  vocw/zh
+S  0x13488  klatt/zh
+S  0x1354c  voc/zh_
+S  0x13610  voc/zh
+W  0x136d4  vocw/zh_rfx
+S  0x13f64  voc/z_pzd_
+W  0x14028  ufric/s_pzd_
+S  0x14b2c  voc/z_pzd
+W  0x14bf0  ufric/s_pzd
+W  0x15528  ufric/sh_pzd_
+W  0x15ff0  ufric/sh_pzd
+S  0x16924  voc/j
+W  0x16a28  ufric/ch
+S  0x17140  klatt/qqh_
+W  0x17204  vocw/Q_
+S  0x17a10  klatt/qqh
+W  0x17ad4  vocw/Q
+S  0x182e0  voc/Q_
+S  0x183a4  voc/Q
+S  0x18468  voc/Q_ulv
+W  0x1856c  ufric/xx
+W  0x19068  ustop/p_
+W  0x19878  ustop/pr
+W  0x19cc0  ustop/p_unasp
+W  0x19fec  ustop/pl
+W  0x1a3e4  ustop/p
+W  0x1a754  ustop/t_
+W  0x1ac14  ustop/tr
+W  0x1b374  ustop/t_dnt
+W  0x1b784  ustop/t
+W  0x1bbb8  ustop/t_hi
+W  0x1be84  ustop/tsh_
+W  0x1c7c4  ustop/tsh
+W  0x1ce04  ustop/ts_pzd
+W  0x1d508  ustop/t_pzd
+W  0x1d954  ustop/c
+W  0x1dc04  ustop/k_
+W  0x1e0c0  ustop/kr
+W  0x1e700  ustop/ki
+W  0x1ecc8  ustop/kl
+W  0x1f2f8  ustop/k_unasp
+W  0x1f7cc  ustop/k
+W  0x1fca0  ustop/q
+W  0x1fe0c  ustop/q_u
+W  0x1ff2c  ufric/f_
+W  0x209fc  ufric/f
+W  0x211ec  ufric/th_
+W  0x21a6c  ufric/th
+W  0x22304  ufric/s!
+W  0x22bb4  ufric/s
+W  0x23354  ufric/sh_
+W  0x23e04  ufric/sh
+W  0x247b4  ufric/sh_rfx
+W  0x25150  ufric/l#
+W  0x25b94  ufric/ch_
+W  0x264bc  ufric/x_
+W  0x27018  ufric/x_hr
+W  0x2792c  h/h@
+W  0x27e80  h/ha
+W  0x284fc  h/he
+W  0x28b90  h/hi
+W  0x29128  h/ho
+W  0x297e4  h/hu
+W  0x29f08  h/h_
+W  0x2a5b4  ustop/ts_
+W  0x2af14  ustop/ts
+S  0x2b970  d/xdz
+W  0x2ba34  ustop/p_unasp_
+W  0x2bb70  ustop/p_asp
+W  0x2c074  ustop/t_short
+W  0x2c2b8  ustop/ts_pzd_
+W  0x2c77c  ustop/ts_pzd2
+W  0x2cab0  ustop/k_asp
+W  0x2d1b4  ustop/k_asp_e
+W  0x2d91c  ustop/k_asp_a
+W  0x2e1a0  ufric/s_continue
+S  0x2e950  vowel/a#
+S  0x2ea54  vowel/a_2
+S  0x2eb58  vowel/ee_1
+S  0x2ec9c  vowel/o
+S  0x2ede0  vowel/oo_4
+S  0x2eee4  vowel/u_bck
+S  0x2efe8  vowel/uu_2
+S  0x2f0ec  vowel/y
+S  0x2f230  vowel/y#
+S  0x2f334  vdiph/au_4
+S  0x2f4b8  vdiph/eu
+S  0x2f5fc  vdiph2/iu
+S  0x2f780  vdiph/ai
+S  0x2f8c4  vdiph/ei
+S  0x2fa08  vdiph/eei
+S  0x2fb8c  vdiph/oi
+S  0x2fd50  vdiph/ui
+S  0x2fe94  w/w2
+W  0x2ff58  ustop/t_dnt2
+S  0x301b0  klatt/x_tap
+S  0x30274  klatt/tap2
+S  0x30338  d/x_tap
+S  0x303fc  d/tap2
+W  0x304c0  x/g2_
+S  0x30880  r2/r2@
+S  0x30944  r2/r2a
+S  0x30a08  r2/r2e
+S  0x30b0c  r2/r2i
+S  0x30bd0  r2/r2o
+S  0x30c94  r2/r2u
+S  0x30d58  vowel/@_6
+S  0x30e5c  vwl_en/@L
+S  0x30f20  vowel/a_8
+S  0x31024  vowel/a#_3
+S  0x31128  vowel/ee_5
+S  0x3122c  vowel/ii_2
+S  0x31330  vowel/ii_4
+S  0x31434  vowel/ii_7
+S  0x31538  vowel/0
+S  0x3163c  vowel/V_2
+S  0x31740  vowel/uu
+S  0x31844  vowel/aa_2
+S  0x319c8  vowel/3_en
+S  0x31b0c  w/wi2
+S  0x31c10  vowel/i_en
+S  0x31d54  vowel/oo_en
+S  0x31e98  vwl_en/u_L
+S  0x31fdc  vdiph2/uw_2
+S  0x32120  vdiph/au
+S  0x322a4  vdiph/@u_en
+S  0x32428  vdiph/ai_2
+S  0x325ec  vdiph/ooi
+S  0x327b0  vdiph2/ii@
+S  0x32934  vdiph2/8@
+S  0x32a78  vdiph2/uu@
+S  0x32bfc  vwl_en/aI@
+S  0x32dc0  vwl_en/aU@
+S  0x32f44  vowelr/V_r
+S  0x33088  vowelr/V3_r
+S  0x331cc  vnasal/aa_n2
+S  0x33310  vnasal/oo_n2
+S  0x33454  vowel/@_3
+S  0x33518  vowel/@_fr
+S  0x335dc  vowel/ee
+S  0x336e0  vowel/ii
+S  0x337e4  vowel/e_2
+S  0x338e8  vowel/0_2
+S  0x339ec  vowel/o-_2
+S  0x33af0  vowel/aa_5
+S  0x33c34  vowel/3_2
+S  0x33d78  vowel/oo_1
+S  0x33ebc  vwl_en_n/O@
+S  0x33fc0  vdiph2/uw_4
+S  0x34104  vdiph/eeu_3
+S  0x34248  vdiph/ae_2
+S  0x343cc  vdiph2/ee@
+S  0x34510  vdiph2/i@
+S  0x346d4  vwl_en_us/3_us
+S  0x347d8  vowel/@_4
+S  0x3489c  vowel/@_low2
+S  0x34960  vnasal/ee_n2
+S  0x34aa4  vwl_en_us/a
+S  0x34ba8  vwl_en_us/ee
+S  0x34cac  vowel/ii#_3
+S  0x34db0  vowel/ii#
+S  0x34eb4  vowel/ii_final
+S  0x34fb8  vowel/aa_8
+S  0x350bc  vowel/V_6
+S  0x351c0  vowel/8_2
+S  0x352c4  vwl_en_us/ar
+S  0x35448  vwl_en_us/3_us2
+S  0x3558c  vwl_en_us/oor
+S  0x35710  vowel/0_3
+S  0x35814  vwl_en_us/or
+S  0x35958  vowel/aa#
+S  0x35a5c  vdiph2/uw_6
+S  0x35ba0  vdiph/aoo
+S  0x35ce4  vdiph/8u
+S  0x35e28  vdiph/aae
+S  0x35fac  vdiph2/ei_4
+S  0x360f0  vdiph/ooi_3
+S  0x36274  vwl_en_us/er
+S  0x363f8  vwl_en_us/ir
+S  0x3657c  vwl_en_us/ur
+S  0x366c0  vwl_en_us/ai@
+S  0x36844  vwl_en_us/ai3
+S  0x36a08  vwl_en_us/aU@
+S  0x36bcc  vowel/V
+S  0x36cd0  vowel/a_3
+S  0x36dd4  vowel/e_e
+S  0x36ed8  vowel/e#
+S  0x36fdc  vowel/e_5
+S  0x370e0  vowel/oo_2
+S  0x371e4  vowel/V_4
+S  0x372e8  vowel/u#_4
+S  0x373ec  vowelr/aa_r
+S  0x375b0  vowelr/e_r
+S  0x37734  vowel/i_5
+S  0x37838  vowelr/oo_r
+S  0x3793c  vowel/u#
+S  0x37a40  vdiph/au#
+S  0x37b84  vowel/o_3
+S  0x37cc8  vwl_en/aI@_2
+S  0x37e4c  vdiph/ai_7
+S  0x37fd0  vdiph/0i_2
+S  0x38154  vdiph2/e@
+S  0x38298  vowelr/i_r
+S  0x383dc  vdiph2/u#@
+S  0x38520  vwl_en/@L_2
+S  0x38624  vowel/@_low
+S  0x386e8  vowel/&
+S  0x387ec  vowel/e_mid
+S  0x388f0  vowel/V_3
+S  0x389f4  vowel/o-_3
+S  0x38af8  vwl_en_rp/aa
+S  0x38c3c  vowel/3_3
+S  0x38d80  vowel/uu#_2
+S  0x38e84  vdiph/au_3
+S  0x39008  vdiph/@u_2
+S  0x3914c  vdiph/ai_6
+S  0x39310  vdiph2/ei_2
+S  0x39454  vdiph2/ee@_2
+S  0x39598  vwl_en_rp/i@
+S  0x3971c  vowel/o_mid
+S  0x39820  vwl_en_rp/aU@
+S  0x399a4  vowel/ii_6
+S  0x39a68  vdiph2/ei_3
+S  0x39bac  vdiph/@u
+S  0x39cf0  vdiph/Vu_2
+S  0x39e74  vdiph/@i_3
+S  0x39fb8  vdiph2/i@_2
+S  0x3a13c  vwl_en/ooi@
+S  0x3a300  vowel/@_fnt
+S  0x3a404  vowel/uu_bck
+S  0x3a508  vowel/i_fnt
+S  0x3a60c  vdiph2/o_oo
+S  0x3a750  vdiph/aau_2
+S  0x3a894  vdiph2/ie
+S  0x3a9d8  vwl_af/r@
+S  0x3aa9c  vwl_af/@
+S  0x3ab60  vowel/e_mid2
+S  0x3ac64  vwl_af/I
+S  0x3ad28  vowel/oo_3
+S  0x3adec  vowel/oe
+S  0x3aef0  vowel/uu_3
+S  0x3afb4  l/L_eL_af
+S  0x3b078  vowel/ee_3
+S  0x3b13c  vowel/aa_3
+S  0x3b240  vdiph/i@_2
+S  0x3b3c4  vowel/i_3
+S  0x3b4c8  vdiph2/o@
+S  0x3b64c  vowel/y_3
+S  0x3b750  vdiph2/iu_3
+S  0x3b914  vdiph/Vu
+S  0x3ba98  vdiph/ai_4
+S  0x3bc1c  vdiph/aai_2
+S  0x3bde0  vdiph/@i_2
+S  0x3bf24  vdiph/ooi_2
+S  0x3c0e8  vdiph/oi_2
+S  0x3c2ac  vdiph/ui_2
+S  0x3c430  vdiph/y#y_2
+S  0x3c5b4  vdiph2/y#@
+S  0x3c6f8  vnasal/aa_n3
+S  0x3c83c  vnasal/e_n
+S  0x3c940  vnasal/o_n2
+W  0x3ca84  ufric/x2
+S  0x3d3dc  vowel/ee_2
+S  0x3d4e0  vowel/ii_3
+S  0x3d5e4  vowel/i#
+S  0x3d6e8  vowel/o_2
+S  0x3d82c  vdiph2/iu_4
+S  0x3d970  vdiph/ui_3
+S  0x3daf4  vowel/a_4
+S  0x3dbf8  vdiph/@u_3
+S  0x3dd7c  vdiph2/u@
+S  0x3df00  vowel/aa_6
+S  0x3e044  vowel/i_2
+S  0x3e148  vdiph/aau_6
+S  0x3e2cc  vdiph/ai_5
+S  0x3e410  vowel/e_8
+S  0x3e514  vowel/yy_4
+S  0x3e618  l/l_3
+S  0x3e69c  j/_j_short
+S  0x3e720  vdiph2/i@_3
+S  0x3e8a4  vwl_de/uu_@
+S  0x3e9e8  vnasal/aa_n4
+Q  0x3eb2c  de
+S  0x3eb3c  vdiph/eei_2
+S  0x3ec80  vowel/i_4
+S  0x3ed84  vowel/aa_9
+S  0x3ee88  vowel/u_2
+S  0x3ef8c  vowel/uu_4
+S  0x3f090  vdiph/aai_3
+S  0x3f214  vdiph/&i
+S  0x3f358  vdiph/y#i
+S  0x3f49c  vdiph/ui_4
+S  0x3f5e0  vdiph/yi
+S  0x3f724  vdiph/aau
+S  0x3f8a8  vdiph/ou
+S  0x3f9ec  vdiph/eu_2
+S  0x3fb30  vdiph2/iu_2
+S  0x3fcb4  vdiph/&y
+S  0x3fdf8  vdiph/eey
+S  0x3ff3c  vdiph/y#y
+S  0x40080  vdiph2/iy
+S  0x401c4  vdiph2/uo
+S  0x40308  vdiph2/y-y#
+S  0x4044c  r3/r_trill_short
+W  0x40550  h/hu_fi
+S  0x40e40  vowel/aa
+S  0x40f44  vowel/e_7
+S  0x41048  vowel/ee#_2
+S  0x4114c  vowel/i_8
+S  0x41250  vowel/i_7
+S  0x41354  vowel/i#_7
+S  0x41458  vowel/u_bck2
+S  0x4155c  vowel/u_bck3
+S  0x41660  vowel/u_5
+S  0x41764  vowel/8_7
+S  0x41868  vowel/8_4
+S  0x4196c  vdiph/@i
+W  0x41ab0  ufric/s_pal
+S  0x42364  d/xd_pzd
+W  0x42428  x/d_pzd
+S  0x4283c  vwl_fr/y2r
+S  0x428c0  vwl_fr/e_2r
+S  0x42944  vwl_fr/aa2r
+S  0x429c8  vwl_fr/ee2r
+S  0x42a8c  vwl_fr/oo2r
+S  0x42b50  vwl_fr/@2r
+S  0x42bd4  vwl_fr/a2r
+S  0x42c58  vwl_fr/e2r
+S  0x42cdc  vwl_fr/i2r
+S  0x42d60  vwl_fr/o2r
+S  0x42de4  vwl_fr/u2r
+S  0x42e68  vwl_fr/re2
+S  0x42eec  vwl_fr/r@2
+S  0x42f70  vwl_fr/raa
+S  0x42ff4  vwl_fr/ree
+S  0x43078  vwl_fr/ry
+S  0x430fc  vwl_fr/rw
+S  0x43180  vwl_fr/roo
+S  0x43204  vwl_fr/rj
+S  0x43288  vwl_fr/r@
+S  0x4330c  vwl_fr/ra
+S  0x43390  vwl_fr/re
+S  0x43414  vwl_fr/ri
+S  0x43498  vwl_fr/ro
+S  0x4351c  vwl_fr/ru
+S  0x435a0  vwl_fr/r
+S  0x43624  vwl_fr/trr
+S  0x436e8  vwl_fr/rr
+S  0x4376c  vwl_fr/r_@
+S  0x437f0  vwl_fr/r_a
+S  0x43874  vwl_fr/r_e
+S  0x438f8  vwl_fr/r_i
+S  0x4397c  vwl_fr/r_o
+S  0x43a00  vwl_fr/r_u
+S  0x43a84  vwl_fr/r_y
+S  0x43b08  vwl_fr/r_n
+S  0x43bcc  vwl_fr/r_
+S  0x43c50  vwl_fr/tr
+S  0x43d54  vwl_fr/br
+S  0x43e58  vwl_fr/lo
+S  0x43edc  l/l_y
+S  0x43f60  vowel/@_hgh
+S  0x44024  vowel/a_7
+S  0x44128  vwl_fr/j
+S  0x4422c  vowel/o_8
+S  0x44370  vowel/o_mid2
+S  0x44474  vwl_fr/wa
+S  0x44538  vnasal/W_n
+S  0x4467c  vnasal/o_n4
+S  0x447c0  b/xbr
+S  0x44884  b/br
+S  0x44908  d/xdr
+S  0x449cc  g/xgr
+S  0x44a90  g/gr
+W  0x44b54  x/g
+S  0x44e14  n/n_long_
+W  0x44ed8  ustop/t_short_
+Q  0x45164  fr
+S  0x45218  vnasal/ee_n
+S  0x4535c  vowel/yy
+S  0x45460  vdiph/ae
+S  0x455a4  vwl_fr/@R2
+S  0x456a8  vowel/o_6
+S  0x457ac  vowel/a#_2
+S  0x458b0  vowel/a#_4
+S  0x459b4  vdiph/y#y_3
+S  0x45ab8  vdiph/ou_4
+S  0x45bfc  vdiph2/yu
+S  0x45d80  voc/Q_less
+W  0x45e44  vocw/Q2
+S  0x46710  vowel/@_bck
+S  0x46814  vdiph/ee-e
+S  0x46958  vowel/a_5
+S  0x46a5c  vnasal/i_n2
+S  0x46b60  vnasal/ii_n
+S  0x46c64  vnasal/&_n
+S  0x46d68  vnasal/V_n
+S  0x46e6c  vnasal/o_n
+S  0x46fb0  vnasal/u_n
+S  0x470b4  vdiph/aau_3
+S  0x47238  d/xd3
+W  0x472fc  ustop/th_rfx
+W  0x47a90  ustop/tsh_unasp
+S  0x47f50  g2/xg
+W  0x48014  ustop/percus02
+S  0x48344  vowel/i_6
+S  0x48448  vowel/&_2
+S  0x4854c  vowel/oo_5
+W  0x48650  ustop/tsh_asp
+S  0x492b8  vdiph/aai
+S  0x4943c  vdiph/Vi
+E  0x495c0  envelope/p_512
+S  0x49640  vowel/ii_5
+S  0x49744  vowel/u_6
+S  0x49848  vowel/u#_3
+S  0x4994c  vdiph/ai_8
+S  0x49ad0  voc/murmur1
+S  0x49c14  vowel/y#_2
+S  0x49d18  vowel/e_3
+S  0x49e1c  vwl_ru/ee
+S  0x49f60  vdiph2/ea
+S  0x4a0a4  vdiph2/uaa
+S  0x4a228  vdiph2/ie_2
+S  0x4a36c  vdiph/ou_2
+S  0x4a4b0  vdiph/eei_3
+W  0x4a5f4  ustop/ts2
+S  0x4aac4  vowel/ee#
+S  0x4abc8  vowel/ii#_2
+S  0x4accc  vnasal/ee_u_n
+S  0x4ae50  vnasal/oo_n3
+S  0x4afd4  vowel/ee_6
+W  0x4b098  r3/rz_cs
+S  0x4bb44  voc/zh_2
+S  0x4bc08  vdiph/oou
+W  0x4bd4c  ufric/sh3
+W  0x4c6e0  ustop/tsh2
+W  0x4cdec  ustop/ts_pzd3
+S  0x4d46c  dzh/dzh2
+W  0x4d530  ustop/t_sr
+S  0x4d868  d/d_dnt
+W  0x4d92c  ufric/ch_sr
+W  0x4e50c  ufric/x_sr
+W  0x4ed8c  ufric/sh_pzd2
+W  0x4f8dc  ustop/ts_sr
+W  0x50098  ustop/tsh_sr
+W  0x509b0  x/g3
+S  0x50b98  vwl_ro/mi
+S  0x50cdc  vwl_ru/ii-
+S  0x50da0  vwl_ru/ii
+S  0x50ea4  vwl_ru/ii#
+S  0x50f68  vwl_ru/i#
+S  0x5106c  vwl_ru/e
+S  0x51170  vwl_ru/E#
+S  0x51274  vwl_ru/E@
+S  0x51378  vwl_ru/o
+S  0x5147c  vwl_ru/oo
+S  0x51540  vwl_ru/u
+S  0x51644  vwl_ru/u#
+S  0x51788  vwl_ru/u#u
+S  0x518cc  vwl_ru/8
+S  0x51990  vwl_ru/ju
+S  0x51a94  vwl_ru/ja
+S  0x51c18  vwl_ru/a
+S  0x51d1c  vwl_ru/aa
+S  0x51e20  r3/r_ru2
+W  0x51f24  r3/r_ru
+S  0x52228  vowel/y_2
+S  0x5236c  vdiph/eeu_2
+S  0x524b0  voc/v2
+S  0x52574  vowel/a_6
+S  0x52678  vnasal/i_n
+S  0x5277c  vnasal/a#_n2
+S  0x52880  vnasal/a#_n
+S  0x52984  vnasal/a#u_n
+S  0x52ac8  vnasal/oi_n
+S  0x52c8c  vdiph/0i
+S  0x52e50  vdiph/eeu
+S  0x52f94  vowel/i#_5
+S  0x53098  vwl_fr/@R
+S  0x5319c  vwl_ro/li
+S  0x532a0  vwl_ro/ni
+S  0x533a4  vwl_ro/ii-
+S  0x53468  vowel/o-_4
+S  0x5356c  vdiph/ii
+S  0x53730  vdiph/i#i
+S  0x53874  vdiph2/uw_3
+S  0x539b8  vdiph2/eo
+S  0x53b3c  vdiph2/e_u
+S  0x53c80  vdiph2/oa
+S  0x53dc4  d/tap_i
+S  0x53e88  d/tap
+W  0x53f4c  ustop/t_unasp2
+S  0x54058  vowel/y_5
+S  0x5419c  vowel/yy_3
+S  0x542a0  vowel/u#_2
+S  0x543a4  vowel/oe_4
+S  0x54468  vowel/aa_4
+W  0x5456c  ufric/sx_sv
+S  0x54db4  vowel/y_4
+S  0x54eb8  vowel/oe_2
+S  0x54fbc  vwl_no/y#
+S  0x550c0  vwl_no/&
+S  0x551c4  vwl_no/u#
+S  0x552c8  vwl_no/u#2
+S  0x5540c  vdiph/ai_3
+S  0x55550  vwl_no/y#y
+S  0x55694  vwl_no/au-
+S  0x55858  vowel/y##
+S  0x5595c  vowel/y#_3
+S  0x55a60  vdiph/ou_3
+S  0x55b64  vdiph/y#i_2
+S  0x55ca8  m/m#_
+S  0x55dac  n/n#_
+S  0x55eb0  n^/n^#_
+S  0x55fb4  nn/nn#_
+W  0x560b8  ufric/tl#
+S  0x56a20  r3/r#_
+E  0x56aa4  envelope/p_level
+E  0x56b24  envelope/p_fall
+E  0x56ba4  envelope/p_rise
+E  0x56c24  envelope/p_fallrise
+E  0x56ca4  envelope/p_214
+E  0x56d24  envelope/vi_5amp
+E  0x56da4  envelope/vi_6amp
+S  0x56e24  vowel/u#_5
+S  0x56f28  vowel/@_2
+S  0x5702c  vdiph/&i_2
+S  0x57170  vdiph/u-i
+S  0x572b4  vdiph/aau_4
+S  0x57438  vdiph2/ii@_3
+S  0x575bc  vnasal/&u_n
+S  0x57700  vietnam/oe
+S  0x57844  vietnam/ie_2
+S  0x57988  vowel/u_3
+W  0x57a8c  vietnam/_c
+S  0x57c58  l/l_vi
+W  0x57d5c  vietnam/th
+W  0x5834c  vietnam/tr
+W  0x5863c  vietnam/dd
+W  0x58be0  vietnam/ch
+S  0x5913c  vietnam/a
+S  0x59280  vowel/o_5
+S  0x59384  vwl_zh/ang
+S  0x59588  vwl_zh/aang
+S  0x597cc  vdiph/au_2
+S  0x59950  vwl_zh/eng
+S  0x59b54  vwl_zh/ing
+S  0x59d98  vwl_zh/ng
+S  0x59edc  vwl_zh/oeng
+S  0x5a0a0  vwl_zh/ong
+S  0x5a224  vwl_zh/ung
+S  0x5a3a8  vowel/8_3
+E  0x5a4ac  envelope/i_risefall
+S  0x5a52c  nn/nn2_
+W  0x5a5f0  ustop/k_unasp_
+W  0x5a8ac  ustop/tsh_pzd_unasp
+W  0x5b0fc  ustop/tsh_pzd
+W  0x5bc3c  ustop/ts_unasp
+W  0x5c4b4  ustop/ts_rfx_unasp
+W  0x5d0a0  ustop/ts_rfx
+S  0x5dd80  vwl_zh/a_n
+S  0x5de84  vwl_zh/aau
+S  0x5dfc8  vowel/i#_6
+S  0x5e0cc  vwl_zh/iaa
+S  0x5e210  vwl_zh/iaau
+S  0x5e394  vwl_zh/ie
+S  0x5e4d8  vdiph2/iioo
+S  0x5e61c  vwl_zh/iou
+S  0x5e7a0  vowel/8
+S  0x5e8a4  vwl_zh/uaa
+S  0x5e9e8  vwl_zh/uai
+S  0x5eb6c  vwl_zh/uei
+S  0x5ecf0  vwl_zh/uo
+S  0x5ee74  vwl_zh/y&
+S  0x5efb8  vwl_zh/yee
+S  0x5f0fc  vdiph2/y@
+S  0x5f240  vowel/u#_7
+S  0x5f344  vowel/8_5
+S  0x5f448  vowel/o_7
+S  0x5f54c  vowel/uu#
+S  0x5f650  vowel/8_6
+S  0x5f754  vowel/ee_4
+S  0x5f858  vdiph/ooi_4
+S  0x5f99c  vdiph2/ye
+S  0x5fae0  l/l_front_
+S  0x5fc24  l/l_front
+S  0x5fd28  l/l_4
+S  0x5fdec  r/a_
+S  0x5feb0  r/aa
+W  0x5ffb4  ustop/k_asp_u
+E  0x607e4  envelope/i_risefall2
+W  0x60864  ufric/tlh
+S  0x61d80  vowel/e_6
+S  0x61e84  vowel/&_3
+W  0x61f88  ustop/k_ejc
+S  0x62738  vwl_tn/r@
+S  0x627fc  vwl_tn/@
+S  0x628c0  vwl_tn/I
+S  0x62984  vdiph2/ii@_2
+S  0x62b08  vowel/ii_8
+S  0x62c0c  vowel/y#_4
+W  0x62d10  ustop/t_unasp
index 879884a..81cffcd 100644 (file)
Binary files a/include/espeak/espeak-data/phonindex and b/include/espeak/espeak-data/phonindex differ
index 72a7cd6..d172087 100644 (file)
Binary files a/include/espeak/espeak-data/phontab and b/include/espeak/espeak-data/phontab differ
index c37f3a0..3175b04 100644 (file)
Binary files a/include/espeak/espeak-data/pl_dict and b/include/espeak/espeak-data/pl_dict differ
index 933f108..33ebb00 100644 (file)
Binary files a/include/espeak/espeak-data/pt_dict and b/include/espeak/espeak-data/pt_dict differ
index 9a8b410..c4d6eac 100644 (file)
Binary files a/include/espeak/espeak-data/ro_dict and b/include/espeak/espeak-data/ro_dict differ
index d807a26..8f13a25 100644 (file)
Binary files a/include/espeak/espeak-data/ru_dict and b/include/espeak/espeak-data/ru_dict differ
index c615877..9208423 100644 (file)
Binary files a/include/espeak/espeak-data/sk_dict and b/include/espeak/espeak-data/sk_dict differ
index e8f441e..5249b43 100644 (file)
Binary files a/include/espeak/espeak-data/sl_dict and b/include/espeak/espeak-data/sl_dict differ
index 049ffee..9eb5117 100644 (file)
Binary files a/include/espeak/espeak-data/sq_dict and b/include/espeak/espeak-data/sq_dict differ
index 1a2dc7e..ae21dd5 100644 (file)
Binary files a/include/espeak/espeak-data/sv_dict and b/include/espeak/espeak-data/sv_dict differ
index 9b0f4b6..16e2cbc 100644 (file)
Binary files a/include/espeak/espeak-data/sw_dict and b/include/espeak/espeak-data/sw_dict differ
index ca90d50..87d6be1 100644 (file)
Binary files a/include/espeak/espeak-data/ta_dict and b/include/espeak/espeak-data/ta_dict differ
index 00cd55c..3bc6fa4 100644 (file)
Binary files a/include/espeak/espeak-data/tr_dict and b/include/espeak/espeak-data/tr_dict differ
index ebd11d1..a7a3121 100644 (file)
Binary files a/include/espeak/espeak-data/vi_dict and b/include/espeak/espeak-data/vi_dict differ
index e3cab09..bf6f5f0 100644 (file)
@@ -3,6 +3,8 @@ language hy-west
 language hy  8
 gender male
 
+dictrules 1
+
 // change consonants for West Armenian pronunciation
 replace 00 b  p#
 replace 00 d  t#
@@ -16,5 +18,5 @@ replace 00 ts dz
 replace 00 c  dZ
 replace 00 k  g
 
-replace 00 ** R  // ??
-replace 00 r  R
+replace 00 R2 R  // ??
+
diff --git a/include/espeak/espeak-data/voices/asia/vi-sgn b/include/espeak/espeak-data/voices/asia/vi-sgn
new file mode 100644 (file)
index 0000000..07c4a12
--- /dev/null
@@ -0,0 +1,12 @@
+name vietnam_sgn
+language vi-sgn
+phonemes vi-sgn
+dictrules 2
+gender male
+
+words 1
+pitch 82 118   //80 118
+//breath   75 75 60 40 15 10
+ //breathw  150 150 200 200 400 400
+ voicing 90  //18
+ flutter  20
index 27e5f8b..30d32e0 100644 (file)
@@ -1,4 +1,4 @@
-name Irish Gaeilge
+name irish-gaeilge
 language ga
 
 dictrules 1  // fix for eclipsis
index 64a073d..10d6271 100644 (file)
@@ -4,4 +4,5 @@ language pt
 gender male
 
 dictrules 2
+stressLength 200 115 230 230 0 0 250 270
 
diff --git a/include/espeak/espeak-data/voices/test/az b/include/espeak/espeak-data/voices/test/az
new file mode 100644 (file)
index 0000000..6fdf382
--- /dev/null
@@ -0,0 +1,3 @@
+name azerbaijani-test
+language az
+
index d79b02e..3fc87de 100644 (file)
Binary files a/include/espeak/linux_32bit/shared_library/libespeak.so.1.1.47 and b/include/espeak/linux_32bit/shared_library/libespeak.so.1.1.47 differ
index 1cc15bc..d39dba8 100644 (file)
@@ -55,6 +55,9 @@ Revision 7  24.Dec.2011
   Changed espeak_EVENT structure to add id.string[] for phoneme mnemonics.
   Added espeakINITIALIZE_PHONEME_IPA option for espeak_Initialize() to report phonemes as IPA names.
 
+Revision 8  26.Apr.2013
+  Added function espeak_TextToPhonemes().
+
 */
          /********************/
          /*  Initialization  */
@@ -94,7 +97,7 @@ typedef struct {
                char string[8];    // used for phoneme names (UTF8). Terminated by a zero byte unless the name needs the full 8 bytes.
        } id;
 } espeak_EVENT;
-/* 
+/*
    When a message is supplied to espeak_synth, the request is buffered and espeak_synth returns. When the message is really processed, the callback function will be repetedly called.
 
 
@@ -102,16 +105,16 @@ typedef struct {
 
    In PLAYBACK mode, the callback function is called as soon as an event happens.
 
-   For example suppose that the following message is supplied to espeak_Synth: 
+   For example suppose that the following message is supplied to espeak_Synth:
    "hello, hello."
 
 
    * Once processed in RETRIEVAL mode, it could lead to 3 calls of the callback function :
 
    ** Block 1:
-   <audio data> + 
+   <audio data> +
    List of events: SENTENCE + WORD + LIST_TERMINATED
+
    ** Block 2:
    <audio data> +
    List of events: WORD + END + LIST_TERMINATED
@@ -148,11 +151,11 @@ typedef enum {
 
 typedef enum {
        /* PLAYBACK mode: plays the audio data, supplies events to the calling program*/
-       AUDIO_OUTPUT_PLAYBACK, 
+       AUDIO_OUTPUT_PLAYBACK,
 
        /* RETRIEVAL mode: supplies audio data and events to the calling program */
        AUDIO_OUTPUT_RETRIEVAL,
+
        /* SYNCHRONOUS mode: as RETRIEVAL but doesn't return until synthesis is completed */
        AUDIO_OUTPUT_SYNCHRONOUS,
 
@@ -199,7 +202,7 @@ extern "C"
 ESPEAK_API void espeak_SetSynthCallback(t_espeak_callback* SynthCallback);
 /* Must be called before any synthesis functions are called.
    This specifies a function in the calling program which is called when a buffer of
-   speech sound data has been produced. 
+   speech sound data has been produced.
 
 
    The callback function is of the form:
@@ -288,7 +291,7 @@ ESPEAK_API espeak_ERROR espeak_Synth(const void *text,
       start of the text.
 
    position_type:  Determines whether "position" is a number of characters, words, or sentences.
-      Values: 
+      Values:
 
    end_position:  If set, this gives a character position at which speaking will stop.  A value
       of zero indicates no end position.
@@ -299,6 +302,7 @@ ESPEAK_API espeak_ERROR espeak_Synth(const void *text,
          espeakCHARS_8BIT     The 8 bit ISO-8859 character set for the particular language.
          espeakCHARS_AUTO     8 bit or UTF8  (this is the default)
          espeakCHARS_WCHAR    Wide characters (wchar_t)
+         espeakCHARS_16BIT    16 bit characters.
 
       espeakSSML   Elements within < > are treated as SSML elements, or if not recognised are ignored.
 
@@ -307,13 +311,13 @@ ESPEAK_API espeak_ERROR espeak_Synth(const void *text,
       espeakENDPAUSE  If set then a sentence pause is added at the end of the text.  If not set then
          this pause is suppressed.
 
-   unique_identifier: message identifier; helpful for identifying later 
+   unique_identifier: message identifier; helpful for identifying later
      data supplied to the callback.
 
    user_data: pointer which will be passed to the callback function.
 
-   Return: EE_OK: operation achieved 
-           EE_BUFFER_FULL: the command can not be buffered; 
+   Return: EE_OK: operation achieved
+           EE_BUFFER_FULL: the command can not be buffered;
              you may try after a while to call the function again.
           EE_INTERNAL_ERROR.
 */
@@ -336,8 +340,8 @@ ESPEAK_API espeak_ERROR espeak_Synth_Mark(const void *text,
 
    For the other parameters, see espeak_Synth()
 
-   Return: EE_OK: operation achieved 
-           EE_BUFFER_FULL: the command can not be buffered; 
+   Return: EE_OK: operation achieved
+           EE_BUFFER_FULL: the command can not be buffered;
              you may try after a while to call the function again.
           EE_INTERNAL_ERROR.
 */
@@ -350,8 +354,8 @@ ESPEAK_API espeak_ERROR espeak_Key(const char *key_name);
    If key_name is a single character, it speaks the name of the character.
    Otherwise, it speaks key_name as a text string.
 
-   Return: EE_OK: operation achieved 
-           EE_BUFFER_FULL: the command can not be buffered; 
+   Return: EE_OK: operation achieved
+           EE_BUFFER_FULL: the command can not be buffered;
              you may try after a while to call the function again.
           EE_INTERNAL_ERROR.
 */
@@ -360,10 +364,10 @@ ESPEAK_API espeak_ERROR espeak_Key(const char *key_name);
 extern "C"
 #endif
 ESPEAK_API espeak_ERROR espeak_Char(wchar_t character);
-/* Speak the name of the given character 
+/* Speak the name of the given character
 
-   Return: EE_OK: operation achieved 
-           EE_BUFFER_FULL: the command can not be buffered; 
+   Return: EE_OK: operation achieved
+           EE_BUFFER_FULL: the command can not be buffered;
              you may try after a while to call the function again.
           EE_INTERNAL_ERROR.
 */
@@ -420,7 +424,7 @@ ESPEAK_API espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int valu
       espeakRANGE:   pitch range, range 0-100. 0-monotone, 50=normal
 
       espeakPUNCTUATION:  which punctuation characters to announce:
-         value in espeak_PUNCT_TYPE (none, all, some), 
+         value in espeak_PUNCT_TYPE (none, all, some),
          see espeak_GetParameter() to specify which characters are announced.
 
       espeakCAPITALS: announce capital letters by:
@@ -432,8 +436,8 @@ ESPEAK_API espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int valu
 
       espeakWORDGAP:  pause between words, units of 10mS (at the default speed)
 
-   Return: EE_OK: operation achieved 
-           EE_BUFFER_FULL: the command can not be buffered; 
+   Return: EE_OK: operation achieved
+           EE_BUFFER_FULL: the command can not be buffered;
              you may try after a while to call the function again.
           EE_INTERNAL_ERROR.
 */
@@ -455,8 +459,8 @@ ESPEAK_API espeak_ERROR espeak_SetPunctuationList(const wchar_t *punctlist);
 
    punctlist:  A list of character codes, terminated by a zero character.
 
-   Return: EE_OK: operation achieved 
-           EE_BUFFER_FULL: the command can not be buffered; 
+   Return: EE_OK: operation achieved
+           EE_BUFFER_FULL: the command can not be buffered;
              you may try after a while to call the function again.
           EE_INTERNAL_ERROR.
 */
@@ -477,6 +481,35 @@ ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream);
 #ifdef __cplusplus
 extern "C"
 #endif
+ESPEAK_API void espeak_TextToPhonemes(const void *text, char *buffer, int size, int textmode, int phonememode);
+/* Translates text into phonemes.  Call espeak_SetVoiceByName() first, to select a language.
+   text: The text to translate, terminated by a zero character.
+
+   buffer: Output buffer for the phoneme translation.
+
+   size: Size of the output buffer in bytes.
+
+   textmode: Type of character codes, one of:
+         espeakCHARS_UTF8     UTF8 encoding
+         espeakCHARS_8BIT     The 8 bit ISO-8859 character set for the particular language.
+         espeakCHARS_AUTO     8 bit or UTF8  (this is the default)
+         espeakCHARS_WCHAR    Wide characters (wchar_t)
+         espeakCHARS_16BIT    16 bit characters.
+
+   phonememode: bits0-3:
+      0= just phonemes.
+      1= include ties (U+361) for phoneme names of more than one letter.
+      2= include zero-width-joiner for phoneme names of more than one letter.
+      3= separate phonemes with underscore characters.
+
+        bits 4-7:
+      0= eSpeak's ascii phoneme names.
+      1= International Phonetic Alphabet (as UTF-8 characters).
+*/
+
+#ifdef __cplusplus
+extern "C"
+#endif
 ESPEAK_API void espeak_CompileDictionary(const char *path, FILE *log, int flags);
 /* Compile pronunciation dictionary for a language which corresponds to the currently
    selected voice.  The required voice should be selected before calling this function.
@@ -501,7 +534,7 @@ typedef struct {
        unsigned char gender;  // 0=none 1=male, 2=female,
        unsigned char age;     // 0=not specified, or age in years
        unsigned char variant; // only used when passed as a parameter to espeak_SetVoiceByProperties
-       unsigned char xx1;     // for internal use 
+       unsigned char xx1;     // for internal use
        int score;       // for internal use
        void *spare;     // for internal use
 } espeak_VOICE;
@@ -546,8 +579,8 @@ ESPEAK_API espeak_ERROR espeak_SetVoiceByName(const char *name);
 /* Searches for a voice with a matching "name" field.  Language is not considered.
    "name" is a UTF8 string.
 
-   Return: EE_OK: operation achieved 
-           EE_BUFFER_FULL: the command can not be buffered; 
+   Return: EE_OK: operation achieved
+           EE_BUFFER_FULL: the command can not be buffered;
              you may try after a while to call the function again.
           EE_INTERNAL_ERROR.
 */
@@ -588,7 +621,7 @@ ESPEAK_API espeak_ERROR espeak_Cancel(void);
    function returns, the audio output is fully stopped and the synthesizer is ready to
    synthesize a new message.
 
-   Return: EE_OK: operation achieved 
+   Return: EE_OK: operation achieved
           EE_INTERNAL_ERROR.
 */
 
@@ -605,7 +638,7 @@ extern "C"
 #endif
 ESPEAK_API espeak_ERROR espeak_Synchronize(void);
 /* This function returns when all data have been spoken.
-   Return: EE_OK: operation achieved 
+   Return: EE_OK: operation achieved
           EE_INTERNAL_ERROR.
 */
 
@@ -614,7 +647,7 @@ extern "C"
 #endif
 ESPEAK_API espeak_ERROR espeak_Terminate(void);
 /* last function to be called.
-   Return: EE_OK: operation achieved 
+   Return: EE_OK: operation achieved
           EE_INTERNAL_ERROR.
 */
 
index d158aba..3c5fd3d 100644 (file)
Binary files a/include/espeak/linux_32bit/speak and b/include/espeak/linux_32bit/speak differ
index 4a922cf..01a4845 100644 (file)
@@ -2,7 +2,7 @@
 \r
 [Setup]\r
 AppName=eSpeak\r
-AppVerName=eSpeak version 1.47.06\r
+AppVerName=eSpeak version 1.47.09\r
 AppCopyright=Licensed under GNU General Public License version 3.   (See file License.txt for details).\r
 WindowVisible=yes\r
 \r
@@ -107,6 +107,10 @@ ne.v1=भित्र्याउन चाहेको आवाजको च
 ne.v2=अथवा यसमा निर्धारण गरिएको आवाजलाई नै चयन गर्ने हो भने ईन्टर कुञ्जीलाई दबाउनु होस् । \r
 ne.v3=आवाजको नाम प्रविष्टी गर्नु होस् , जस्तै: नेपालीका लागि ne, अथवा स्वरको पनि चयन गर्ने हो भने ne+f3\r
 \r
+hi.v1=स्थापना करने के लिए पसन्दिदा आवाजों को चयन करें ।\r
+hi.v2=अगर आप कि चयन इसमें निर्दारित आवाज हि  हो तो केवल  ईन्टर कुञ्जी दबाए । \r
+hi.v3=आवाज कि   नाम प्रविष्टी करें, जैसा कि हिन्दी के लिए hi, और किसि स्वर भि चयन करना चाहते हो तो hi+f3\r
+\r
 [Code]\r
 var\r
   UILanguage: Integer;\r
index b62f01f..2cc2965 100644 (file)
@@ -1,7 +1,7 @@
 \r
 [Setup]\r
 AppName=eSpeakEdit\r
-AppVerName=eSpeakEdit version 1.47.06\r
+AppVerName=eSpeakEdit version 1.47.09\r
 DefaultDirName={pf}\eSpeak\r
 DefaultGroupName=eSpeak\r
 OutputBaseFilename=setup_espeakedit\r
index eb4e140..fe054cc 100644 (file)
@@ -133,6 +133,7 @@ MNEM_TAB mnem_flags[] = {
        {"$stem",    0x30},   // must have a suffix
        {"$atend",   0x31},   // use this pronunciation if at end of clause
        {"$atstart", 0x32},   // use this pronunciation at start of clause
+       {"$native",  0x33},   // not if we've switched translators
 
        // doesn't set dictionary_flags
        {"$?",        100},   // conditional rule, followed by byte giving the condition number
@@ -700,9 +701,9 @@ static int compile_line(char *linebuf, char *dict_line, int *hash)
                        ix = utf8_in(&c2,p);
                        if(c2 == 0)
                                break;
-                       if(iswupper(c2))
+                       if(iswupper2(c2))
                        {
-                               utf8_out(towlower(c2),p);
+                               utf8_out(towlower2(c2),p);
                        }
                        else
                        {
index 7a4df03..cf33a6f 100644 (file)
@@ -520,7 +520,7 @@ void DecodePhonemes(const char *inptr, char *outptr)
 unsigned short ipa1[96] = {
        0x20,0x21,0x22,0x2b0,0x24,0x25,0x0e6,0x2c8,0x28,0x27e,0x2a,0x2b,0x2cc,0x2d,0x2e,0x2f,
        0x252,0x31,0x32,0x25c,0x34,0x35,0x36,0x37,0x275,0x39,0x2d0,0x2b2,0x3c,0x3d,0x3e,0x294,
-       0x259,0x251,0x3b2,0xe7,0xf0,0x25b,0x46,0x262,0x127,0x26a,0x25f,0x4b,0x29f,0x271,0x14b,0x254,
+       0x259,0x251,0x3b2,0xe7,0xf0,0x25b,0x46,0x262,0x127,0x26a,0x25f,0x4b,0x26b,0x271,0x14b,0x254,
        0x3a6,0x263,0x280,0x283,0x3b8,0x28a,0x28c,0x153,0x3c7,0xf8,0x292,0x32a,0x5c,0x5d,0x5e,0x5f,
        0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x261,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,
        0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x303,0x7f
@@ -629,10 +629,13 @@ char *WritePhMnemonic(char *phon_out, PHONEME_TAB *ph, PHONEME_LIST *plist, int
 
 
 
-void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa)
-{//=========================================================================
-       /* Can be called after a clause has been translated into phonemes, in order
+void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int phoneme_mode)
+{//===============================================================================
+       /* Called after a clause has been translated into phonemes, in order
           to display the clause in phoneme mnemonic form.
+
+          phoneme_mode  bits 0-3: 0=only phoneme names, 1=ties, 2=ZWJ, 3=underscore separator
+                        bit  4:   0=eSpeak phoneme names, 1=IPA
        */
 
        int  ix;
@@ -645,6 +648,8 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa)
        char *buf;
        int count;
        int flags;
+       int use_ipa;
+       int use_tie;
        int separate_phonemes = 0;
        char phon_buf[30];
        char phon_buf2[30];
@@ -653,15 +658,16 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa)
        static const char *stress_chars = "==,,''";
        static const int char_tie[] = {0x0361, 0x200d};  // combining-double-inverted-breve, zero-width-joiner
 
-       if(use_ipa >= 4)
+       use_ipa = phoneme_mode & 0x10;
+       use_tie = phoneme_mode & 0x0f;
+
+       if(use_tie >= 3)
        {
                // separate individual phonemes with underscores
                separate_phonemes = '_';
-               if(use_ipa == 5)
-                       use_ipa = 0;
-               else
-                       use_ipa = 1;
+               use_tie = 0;
        }
+
        if(phon_out != NULL)
        {
                for(ix=1; ix<(n_phoneme_list-2); ix++)
@@ -669,13 +675,19 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa)
                        buf = phon_buf;
 
                        plist = &phoneme_list[ix];
+
+                       WritePhMnemonic(phon_buf2, plist->ph, plist, use_ipa, &flags);
                        if(plist->newword)
                                *buf++ = ' ';
                        else
                        {
                                if((separate_phonemes != 0) && (ix > 1))
                                {
-                                       *buf++ = separate_phonemes;
+                                       utf8_in(&c, phon_buf2);
+                                       if((c < 0x2b0) || (c > 0x36f))  // not if the phoneme starts with a superscript letter
+                                       {
+                                               *buf++ = separate_phonemes;
+                                       }
                                }
                        }
 
@@ -707,17 +719,16 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa)
                        }
 
                        flags = 0;
-                       WritePhMnemonic(phon_buf2, plist->ph, plist, use_ipa, &flags);
                        count = 0;
                        for(p=phon_buf2; *p != 0;)
                        {
                                p += utf8_in(&c, p);
-                               if(use_ipa > 1)
+                               if(use_tie > 0)
                                {
                                        // look for non-inital alphabetic character, but not diacritic, superscript etc.
-                                       if((count>0) && !(flags & (1 << (count-1))) && ((c < 0x2b0) || (c > 0x36f)) && iswalpha(c))
+                                       if((count>0) && !(flags & (1 << (count-1))) && ((c < 0x2b0) || (c > 0x36f)) && iswalpha2(c))
                                        {
-                                               buf += utf8_out(char_tie[use_ipa-2], buf);
+                                               buf += utf8_out(char_tie[use_tie-1], buf);
                                        }
                                }
                                buf += utf8_out(c, buf);
@@ -909,7 +920,13 @@ int Unpronouncable(Translator *tr, char *word, int posn)
 
                if(count==0)
                        c1 = c;
-               count++;
+
+               if((c == '\'') && (tr->langopts.param[LOPT_UNPRONOUNCABLE] == 3))
+               {
+                       // don't count apostrophe
+               }
+               else
+                       count++;
 
                if(IsVowel(tr, c))
                {
@@ -917,7 +934,7 @@ int Unpronouncable(Translator *tr, char *word, int posn)
                        break;
                }
 
-               if((c != '\'') && !iswalpha(c))
+               if((c != '\'') && !iswalpha2(c))
                        return(0);
        }
 
@@ -2096,7 +2113,7 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_
                                        break;
 
                                case RULE_NONALPHA:
-                                       if(!iswalpha(letter_w))
+                                       if(!iswalpha2(letter_w))
                                        {
                                                add_points = (21-distance_right);
                                                post_ptr += letter_xbytes;
@@ -2340,7 +2357,7 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_
                                        break;
 
                                case RULE_NONALPHA:
-                                       if(!iswalpha(letter_w))
+                                       if(!iswalpha2(letter_w))
                                        {
                                                add_points = (21-distance_right);
                                                pre_ptr -= letter_xbytes;
@@ -2657,7 +2674,7 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c
                                                if(tr->letter_bits_offset > 0)
                                                {
                                                        // not a Latin alphabet, switch to the default Latin alphabet language
-                                                       if((letter <= 0x241) && iswalpha(letter))
+                                                       if((letter <= 0x241) && iswalpha2(letter))
                                                        {
                                                                sprintf(phonemes,"%c%s",phonSWITCH,tr->langopts.ascii_language);
                                                                return(0);
@@ -2963,8 +2980,9 @@ int TransposeAlphabet(Translator *tr, char *text)
                        *p2++ = (acc << (8-bits));
                }
                *p2 = 0;
-               strcpy(text, buf);
-               return((p2 - buf) | 0x40);  // bit 6 indicates compressed characters
+               ix = p2 - buf;
+               memcpy(text, buf, ix);
+               return(ix | 0x40);  // bit 6 indicates compressed characters
        }
        else
        {
@@ -3258,6 +3276,11 @@ static const char *LookupDict2(Translator *tr, const char *word, const char *wor
                                continue;
                        }
                }
+               if(dictionary_flags2 & FLAG_NATIVE)
+               {
+                       if(tr != translator)
+                               continue;    // don't use if we've switched translators
+               }
                if(dictionary_flags & FLAG_ALT2_TRANS)
                {
                        // language specific
index 9d9ef20..8484201 100644 (file)
@@ -602,6 +602,77 @@ int NonAsciiNumber(int letter)
        return(-1);
 }
 
+#define L_SUB 0x4000   // subscript
+#define L_SUP 0x8000   // superscript
+
+static const char *modifiers[] = {NULL, "_sub", "_sup", NULL};
+
+// this list must be in ascending order
+static unsigned short derived_letters[] = {
+       0x00aa, 'a'+L_SUP,
+       0x00b2, '2'+L_SUP,
+       0x00b3, '3'+L_SUP,
+       0x00b9, '1'+L_SUP,
+       0x00ba, 'o'+L_SUP,
+       0x02b0, 'h'+L_SUP,
+       0x02b1, 0x266+L_SUP,
+       0x02b2, 'j'+L_SUP,
+       0x02b3, 'r'+L_SUP,
+       0x02b4, 0x279+L_SUP,
+       0x02b5, 0x27b+L_SUP,
+       0x02b6, 0x281+L_SUP,
+       0x02b7, 'w'+L_SUP,
+       0x02b8, 'y'+L_SUP,
+       0x02c0, 0x294+L_SUP,
+       0x02c1, 0x295+L_SUP,
+       0x02e0, 0x263+L_SUP,
+       0x02e1, 'l'+L_SUP,
+       0x02e2, 's'+L_SUP,
+       0x02e3, 'x'+L_SUP,
+       0x2070, '0'+L_SUP,
+       0x2071, 'i'+L_SUP,
+       0x2074, '4'+L_SUP,
+       0x2075, '5'+L_SUP,
+       0x2076, '6'+L_SUP,
+       0x2077, '7'+L_SUP,
+       0x2078, '8'+L_SUP,
+       0x2079, '9'+L_SUP,
+       0x207a, '+'+L_SUP,
+       0x207b, '-'+L_SUP,
+       0x207c, '='+L_SUP,
+       0x207d, '('+L_SUP,
+       0x207e, ')'+L_SUP,
+       0x207f, 'n'+L_SUP,
+       0x2080, '0'+L_SUB,
+       0x2081, '1'+L_SUB,
+       0x2082, '2'+L_SUB,
+       0x2083, '3'+L_SUB,
+       0x2084, '4'+L_SUB,
+       0x2085, '5'+L_SUB,
+       0x2086, '6'+L_SUB,
+       0x2087, '7'+L_SUB,
+       0x2088, '8'+L_SUB,
+       0x2089, '9'+L_SUB,
+       0x208a, '+'+L_SUB,
+       0x208b, '-'+L_SUB,
+       0x208c, '='+L_SUB,
+       0x208d, '('+L_SUB,
+       0x208e, ')'+L_SUB,
+       0x2090, 'a'+L_SUB,
+       0x2091, 'e'+L_SUB,
+       0x2092, 'o'+L_SUB,
+       0x2093, 'x'+L_SUB,
+       0x2094, 0x259+L_SUB,
+       0x2095, 'h'+L_SUB,
+       0x2096, 'k'+L_SUB,
+       0x2097, 'l'+L_SUB,
+       0x2098, 'm'+L_SUB,
+       0x2099, 'n'+L_SUB,
+       0x209a, 'p'+L_SUB,
+       0x209b, 's'+L_SUB,
+       0x209c, 't'+L_SUB,
+       0,0};
+
 
 static const char *hex_letters[] = {"'e:j","b'i:","s'i:","d'i:","'i:","'ef"};  // names, using phonemes available to all languages
 
@@ -617,8 +688,10 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control)
        int letter;
        int len;
        int ix;
+       int c;
        char *p2;
        char *pbuf;
+       const char *modifier;
        ALPHABET *alphabet;
        int al_offset;
        int al_flags;
@@ -626,7 +699,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control)
        int number;
        int phontab_1;
        int speak_letter_number;
-       char capital[20];
+       char capital[30];
        char ph_buf[80];
        char ph_buf2[80];
        char ph_alphabet[80];
@@ -648,21 +721,55 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control)
        if(control & 2)
        {
                // include CAPITAL information
-               if(iswupper(letter))
+               if(iswupper2(letter))
                {
                        Lookup(tr, "_cap", capital);
                }
        }
        letter = towlower2(letter);
-
        LookupLetter(tr, letter, word[n_bytes], ph_buf, control & 1);
 
+       if(ph_buf[0] == 0)
+       {
+               // is this a subscript or superscript letter ?
+               for(ix=0; (c = derived_letters[ix]) != 0; ix+=2)
+               {
+                       if(c > letter)
+                               break;
+                       if(c == letter)
+                       {
+                               c = derived_letters[ix+1];
+                               letter = c & 0x3fff;
+                               if((modifier = modifiers[c >> 14]) != NULL)
+                               {
+                                       Lookup(tr, modifier, capital);
+                                       if(capital[0] == 0)
+                                       {
+                                               capital[2] = SetTranslator2("en");   // overwrites previous contents of translator2
+                                               Lookup(translator2, modifier, &capital[3]);
+                                               if(capital[3] != 0)
+                                               {
+                                                       capital[0] = phonPAUSE;
+                                                       capital[1] = phonSWITCH;
+                                                       len = strlen(&capital[3]);
+                                                       capital[len+3] = phonSWITCH;
+                                                       capital[len+4] = phontab_1;
+                                                       capital[len+5] = 0;
+                                               }
+                                       }
+                               }
+                       }
+               }
+               LookupLetter(tr, letter, word[n_bytes], ph_buf, control & 1);
+       }
+
        if(ph_buf[0] == phonSWITCH)
        {
                strcpy(phonemes,ph_buf);
                return(0);
        }
 
+
        if((ph_buf[0] == 0) && ((number = NonAsciiNumber(letter)) > 0))
        {
                // convert a non-ascii number to 0-9
@@ -794,7 +901,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control)
                        speak_letter_number = 1;
                        if(!(al_flags & AL_NO_SYMBOL))
                        {
-                               if(iswalpha(letter))
+                               if(iswalpha2(letter))
                                        Lookup(translator, "_?A", ph_buf);
 
                                if((ph_buf[0]==0) && !iswspace(letter))
@@ -2244,8 +2351,8 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
                if((tr->langopts.numbers & NUM_NOPAUSE) && (next_char == ' '))
                        utf8_in(&next_char,p);
 
-               if(!iswalpha(next_char) && (thousands_exact==0))
-//             if(!iswalpha(next_char) && !((wtab[thousandplex].flags & FLAG_HYPHEN_AFTER) && (thousands_exact != 0)))
+               if(!iswalpha2(next_char) && (thousands_exact==0))
+//             if(!iswalpha2(next_char) && !((wtab[thousandplex].flags & FLAG_HYPHEN_AFTER) && (thousands_exact != 0)))
                        strcat(ph_out,str_pause);  // don't add pause for 100s,  6th, etc.
        }
 
index d8c5f0c..2fcc5d8 100644 (file)
@@ -92,6 +92,7 @@ static const unsigned short punct_chars[] = {',','.','?','!',':',';',
   0x061f,  // Arabic ?
   0x06d4,  // Arabic .
 
+  0x0df4,  // Singhalese Kunddaliya
   0x0f0d,  // Tibet Shad
   0x0f0e,
 
@@ -142,6 +143,7 @@ static const unsigned int punct_attributes [] = { 0,
   CLAUSE_QUESTION,   // Arabic question mark
   CLAUSE_PERIOD,     // Arabic full stop
 
+  CLAUSE_PERIOD+0x8000,     // Singhalese period
   CLAUSE_PERIOD+0x8000,     // Tibet period
   CLAUSE_PARAGRAPH,
 
@@ -213,50 +215,91 @@ const int param_defaults[N_SPEECH_PARAM] = {
    0,     // voice type
 };
 
-#ifdef NEED_WCHAR_FUNCTIONS
 
-// additional Latin characters beyond the Latin1 character set
-#define MAX_WALPHA  0x233
-// indexed by character - 0x100
-// 0=not alphabetic, 0xff=lower case, 0xfe=special case
+// additional Latin characters beyond the ascii character set
+#define MAX_WALPHA  0x24f
+// indexed by character - 0x80
+// 0=not alphabetic, 0xff=lower case, 0xfe=no case, 0xfd=use wchar_tolower
 //   other=value to add to upper case to convert to lower case
-static unsigned char walpha_tab[MAX_WALPHA-0xff] = {
-      1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,  // 100
-      1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,  // 110
-      1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,  // 120
-   0xfe,0xff,   1,0xff,   1,0xff,   1,0xff,0xff,   1,0xff,   1,0xff,   1,0xff,   1,  // 130
-   0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,0xff,   1,0xff,   1,0xff,   1,0xff,  // 140
-      1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,  // 150
-      1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,  // 160
-      1,0xff,   1,0xff,   1,0xff,   1,0xff,0xff,   1,0xff,   1,0xff,   1,0xff,0xff,  // 170
-   0xff, 210,   1,0xff,   1,0xff, 206,   1,0xff, 205, 205,   1,0xff,0xff,  79, 202,  // 180
-    203,   1,0xff, 205, 207,0xff, 211, 209,   1,0xff,0xff,0xff, 211, 213,0xff, 214,  // 190
-      1,0xff,   1,0xff,   1,0xff, 218,   1,0xff, 218,0xff,0xff,   1,0xff, 218,   1,  // 1a0
-   0xff, 217, 217,   1,0xff,   1,0xff, 219,   1,0xff,0xff,0xff,   1,0xff,0xff,0xff,  // 1b0
-   0xff,0xff,0xff,0xff,   2,   1,0xff,   2,   1,0xff,   2,   1,0xff,   1,0xff,   1,  // 1c0
-   0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,0xff,   1,0xff,  // 1d0
-      1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,  // 1e0
-   0xff,   2,   1,0xff,   1,0xff,0xff,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,  // 1f0
-      1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,  // 200
-      1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,  // 210
-   0xff,   0,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,   1,0xff,  // 220
-      1,0xff,   1,0xff };    // 230
+static unsigned char walpha_tab[MAX_WALPHA-0x7f] = {
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, // 080
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, // 090
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0, 0xfe,    0,    0,    0,    0,    0, // 0a0
+    0,    0,    0,    0,    0, 0xff,    0,    0,    0,    0, 0xfe,    0,    0,    0,    0,    0, // 0b0
+   32,   32,   32,   32,   32,   32,   32,   32,   32,   32,   32,   32,   32,   32,   32,   32, // 0c0
+   32,   32,   32,   32,   32,   32,   32,    0,   32,   32,   32,   32,   32,   32,   32, 0xff, // 0d0
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // 0e0
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,    0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // 0f0
+    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff, // 100
+    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff, // 110
+    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff, // 120
+ 0xfd, 0xff,    1, 0xff,    1, 0xff,    1, 0xff, 0xfe,    1, 0xff,    1, 0xff,    1, 0xff,    1, // 130
+ 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff, 0xfe,    1, 0xff,    1, 0xff,    1, 0xff, // 140
+    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff, // 150
+    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff, // 160
+    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff, 0xfd,    1, 0xff,    1, 0xff,    1, 0xff, 0xff, // 170
+ 0xff,  210,    1, 0xff,    1, 0xff,  206,    1, 0xff,  205,  205,    1, 0xff, 0xfe,   79,  202, // 180
+  203,    1, 0xff,  205,  207, 0xff,  211,  209,    1, 0xff, 0xff, 0xfe,  211,  213, 0xff,  214, // 190
+    1, 0xff,    1, 0xff,    1, 0xff,  218,    1, 0xff,  218, 0xfe, 0xfe,    1, 0xff,  218,    1, // 1a0
+ 0xff,  217,  217,    1, 0xff,    1, 0xff,  219,    1, 0xff, 0xfe, 0xfe,    1, 0xff, 0xfe, 0xff, // 1b0
+ 0xfe, 0xfe, 0xfe, 0xfe,    2, 0xff, 0xff,    2, 0xff, 0xff,    2, 0xff, 0xff,    1, 0xff,    1, // 1c0
+ 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff, 0xff,    1, 0xff, // 1d0
+    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff, // 1e0
+ 0xfe,    2, 0xff, 0xff,    1, 0xff, 0xfd, 0xfd,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff, // 1f0
+    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff, // 200
+    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff, // 210
+ 0xfd, 0xfe,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff, // 220
+    1, 0xff,    1, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfd,    1, 0xff, 0xfd, 0xfd, 0xfe, // 230
+ 0xfe,    1, 0xff, 0xfd,   69,   71,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff,    1, 0xff}; // 240
+
+static const short wchar_tolower[] = {
+       0x130, 0x069,
+       0x178, 0x0ff,
+       0x1f6, 0x195,
+       0x1f7, 0x1bf,
+       0x220, 0x19e,
+       0x23a, 0x2c65,
+       0x23d, 0x19a,
+       0x23e, 0x2c66,
+       0x243, 0x180,
+       0,0 };
+
+static const short wchar_toupper[] = {
+       0x0b5, 0x39c,
+       0x0df, 0x0df,
+       0x0ff, 0x178,
+       0x131, 0x049,
+       0x17f, 0x053,
+       0x180, 0x243,
+       0x195, 0x1f6,
+       0x19a, 0x23d,
+       0x19e, 0x220,
+       0x1bf, 0x1f7,
+       0x1c6, 0x1c4,
+       0x1c9, 0x1c7,
+       0x1cc, 0x1ca,
+       0x1dd, 0x18e,
+       0x1f3, 0x1f1,
+       0,0 };
+
+
+#ifdef NEED_WCHAR_FUNCTIONS
 
 // use ctype.h functions for Latin1 (character < 0x100)
 int iswalpha(int c)
 {
-       if(c < 0x100)
+       if(c < 0x80)
                return(isalpha(c));
        if((c > 0x3040) && (c <= 0xa700))
                return(1);  // japanese, chinese characters
        if(c > MAX_WALPHA)
                return(0);
-       return(walpha_tab[c-0x100]);
+       return(walpha_tab[c-0x80]);
 }
 
 int iswdigit(int c)
 {
-       if(c < 0x100)
+       if(c < 0x80)
                return(isdigit(c));
        return(0);
 }
@@ -271,50 +314,67 @@ int iswalnum(int c)
 int towlower(int c)
 {
        int x;
-       if(c < 0x100)
+       int ix;
+
+       if(c < 0x80)
                return(tolower(c));
-       if((c > MAX_WALPHA) || ((x = walpha_tab[c-0x100])==0xff))
-               return(c);  // already lower case
-       if(x == 0xfe)
+
+       if((c > MAX_WALPHA) || ((x = walpha_tab[c-0x80]) >= 0xfe))
+               return(c);
+
+       if(x == 0xfd)
        {
-               // special cases
-               if(c == 0x130)   // uppercase i-dot
-                       return('i');
+               // special cases, lookup translation table
+               for(ix=0; wchar_tolower[ix] != 0; ix+=2)
+               {
+                       if(wchar_tolower[ix] == c)
+                               return(wchar_tolower[ix+1]);
+               }
        }
        return(c + x);  // convert to lower case
 }
 
 int towupper(int c)
 {
-       // check whether the previous character code is the upper-case equivalent of this character
-       if(tolower(c-1) == c)
-               return(c-1);  // yes, use it
+       int ix;
+       // check whether a previous character code is the upper-case equivalent of this character
+       if(towlower(c-32) == c)
+               return(c-32); // yes, use it
+       if(towlower(c-1) == c)
+               return(c-1);
+       for(ix=0; wchar_toupper[ix] != 0; ix+=2)
+       {
+               if(wchar_toupper[ix] == c)
+                       return(wchar_toupper[ix+1]);
+       }
        return(c);  // no
 }
 
 int iswupper(int c)
 {
        int x;
-       if(c < 0x100)
+       if(c < 0x80)
                return(isupper(c));
-       if(((c > MAX_WALPHA) || (x = walpha_tab[c-0x100])==0) || (x == 0xff))
+       if(((c > MAX_WALPHA) || (x = walpha_tab[c-0x80])==0) || (x == 0xff))
                return(0);
        return(1);
 }
 
 int iswlower(int c)
 {
-       if(c < 0x100)
+       if(c < 0x80)
                return(islower(c));
-       if((c > MAX_WALPHA) || (walpha_tab[c-0x100] != 0xff))
+       if((c > MAX_WALPHA) || (walpha_tab[c-0x80] != 0xff))
                return(0);
        return(1);
 }
 
 int iswspace(int c)
 {
-       if(c < 0x100)
+       if(c < 0x80)
                return(isspace(c));
+       if(c == 0xa0)
+               return(1);
        return(0);
 }
 
@@ -366,23 +426,96 @@ float wcstod(const wchar_t *str, wchar_t **tailptr)
 }
 #endif
 
+
+// use internal data for iswalpha up to U+024F
+// iswalpha() on Windows is unreliable  (U+AA, U+BA).
+int iswalpha2(int c)
+{
+       if(c < 0x80)
+               return(isalpha(c));
+       if((c > 0x3040) && (c <= 0xa700))
+               return(1);  // japanese, chinese characters
+       if(c > MAX_WALPHA)
+               return(iswalpha(c));
+       return(walpha_tab[c-0x80]);
+}
+
+int iswlower2(int c)
+{
+       if(c < 0x80)
+               return(islower(c));
+       if(c > MAX_WALPHA)
+               return(iswlower(c));
+       if(walpha_tab[c-0x80] == 0xff)
+               return(1);
+       return(0);
+}
+
+int iswupper2(int c)
+{
+       int x;
+       if(c < 0x80)
+               return(isupper(c));
+       if(c > MAX_WALPHA)
+               return(iswupper(c));
+       if(((x = walpha_tab[c-0x80]) > 0) && (x < 0xfe))
+               return(1);
+       return(0);
+}
+
 int towlower2(unsigned int c)
 {
+       int x;
+       int ix;
+
        // check for non-standard upper to lower case conversions
        if(c == 'I')
        {
-               if(translator->translator_name == L('t','r'))
+               if(translator->langopts.dotless_i)
                {
                        c = 0x131;   // I -> ı
                }
        }
-#ifdef __WIN32__
-       if(c == 0x130)   // uppercase i-dot
-               return('i');
-#endif
-       return(towlower(c));
+
+       if(c < 0x80)
+               return(tolower(c));
+
+       if(c > MAX_WALPHA)
+               return(towlower(c));
+
+       if((x = walpha_tab[c-0x80]) >= 0xfe)
+               return(c);   // this is not an upper case letter
+
+       if(x == 0xfd)
+       {
+               // special cases, lookup translation table
+               for(ix=0; wchar_tolower[ix] != 0; ix+=2)
+               {
+                       if(wchar_tolower[ix] == (int)c)
+                               return(wchar_tolower[ix+1]);
+               }
+       }
+       return(c + x);  // convert to lower case
 }
 
+int towupper2(unsigned int c)
+{
+       int ix;
+       if(c > MAX_WALPHA)
+               return(towupper(c));
+
+       // check whether a previous character code is the upper-case equivalent of this character
+       if(towlower2(c-32) == (int)c)
+               return(c-32); // yes, use it
+       if(towlower2(c-1) == (int)c)
+               return(c-1);
+       for(ix=0; wchar_toupper[ix] != 0; ix+=2)
+       {
+               if(wchar_toupper[ix] == (int)c)
+                       return(wchar_toupper[ix+1]);
+       }
+       return(c);  // no
+}
 
 static int IsRomanU(unsigned int c)
 {//================================
@@ -2260,7 +2393,7 @@ f_input = f_in;  // for GetC etc
                                        c2 = ' ';
                                }
                                else
-                               if((c2 == '/') || iswalpha(c2))
+                               if((c2 == '/') || iswalpha2(c2))
                                {
                                        // check for space in the output buffer for embedded commands produced by the SSML tag
                                        if(ix > (n_buf - 20))
@@ -2443,10 +2576,10 @@ f_input = f_in;  // for GetC etc
                        }
                }
 
-               if(iswupper(c1))
+               if(iswupper2(c1))
                {
                        tr->clause_upper_count++;
-                       if((option_capitals == 2) && (sayas_mode == 0) && !iswupper(cprev))
+                       if((option_capitals == 2) && (sayas_mode == 0) && !iswupper2(cprev))
                        {
                                char text_buf[40];
                                char text_buf2[30];
@@ -2463,7 +2596,7 @@ f_input = f_in;  // for GetC etc
                        }
                }
                else
-               if(iswalpha(c1))
+               if(iswalpha2(c1))
                        tr->clause_lower_count++;
 
                if(option_phoneme_input)
@@ -2532,8 +2665,8 @@ if(option_ssml) parag=1;
 
                                if(!iswspace(c1))
                                {
-                                       if(!IsAlpha(c1) || !iswlower(c1))
-//                                     if(iswdigit(c1) || (IsAlpha(c1) && !iswlower(c1)))
+                                       if(!IsAlpha(c1) || !iswlower2(c1))
+//                                     if(iswdigit(c1) || (IsAlpha(c1) && !iswlower2(c1)))
                                        {
                                                UngetC(c2);
                                                ungot_char2 = c1;
@@ -2632,7 +2765,7 @@ if(option_ssml) parag=1;
 
                                if(nl_count==0)
                                {
-                                       if((c1 == ',') && (cprev == '.') && (tr->translator_name == L('h','u')) && iswdigit(cprev2) && (iswdigit(c_next) || (iswlower(c_next))))
+                                       if((c1 == ',') && (cprev == '.') && (tr->translator_name == L('h','u')) && iswdigit(cprev2) && (iswdigit(c_next) || (iswlower2(c_next))))
                                        {
                                                // lang=hu, fix for ordinal numbers, eg:  "december 2., szerda", ignore ',' after ordinal number
                                                c1 = CHAR_COMMA_BREAK;
@@ -2651,7 +2784,7 @@ if(option_ssml) parag=1;
                                                        }
                                                        else
                                                        {
-                                                               if (iswlower(c_next) || (c_next=='-'))     // hyphen is needed for lang-hu (eg. 2.-kal)
+                                                               if (iswlower2(c_next) || (c_next=='-'))     // hyphen is needed for lang-hu (eg. 2.-kal)
                                                                        is_end_clause = 0;      // only if followed by lower-case, (or if there is a XML tag)
                                                        }
                                                }
@@ -2660,7 +2793,7 @@ if(option_ssml) parag=1;
                                                {
                                                        is_end_clause = 0;    // eg. u.s.a.'s
                                                }
-                                               if(iswlower(c_next))
+                                               if(iswlower2(c_next))
                                                {
                                                        // next word has no capital letter, this dot is probably from an abbreviation
 //                                                     c1 = ' ';
index 6c5d6bc..c0d197c 100644 (file)
@@ -1164,6 +1164,17 @@ ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream)
 }   //  end of espeak_SetPhonemes
 
 
+ESPEAK_API void espeak_TextToPhonemes(const void *text, char *buffer, int size, int textmode, int phonememode)
+{//==============================================================================================================
+       /* phoneme_mode  bits 0-3: 0=only phoneme names, 1=ties, 2=ZWJ, 3=underscore separator
+                        bits 4-7:   0=eSpeak phoneme names, 1=IPA
+       */
+       option_multibyte = textmode & 7;
+       TranslateClause(translator, NULL, text, NULL, NULL);
+       GetTranslatedPhonemeString(buffer, size, phonememode);
+}
+
+
 ESPEAK_API void espeak_CompileDictionary(const char *path, FILE *log, int flags)
 {//=============================================================================
        ENTER("espeak_CompileDictionary");
index 1cc15bc..d39dba8 100644 (file)
@@ -55,6 +55,9 @@ Revision 7  24.Dec.2011
   Changed espeak_EVENT structure to add id.string[] for phoneme mnemonics.
   Added espeakINITIALIZE_PHONEME_IPA option for espeak_Initialize() to report phonemes as IPA names.
 
+Revision 8  26.Apr.2013
+  Added function espeak_TextToPhonemes().
+
 */
          /********************/
          /*  Initialization  */
@@ -94,7 +97,7 @@ typedef struct {
                char string[8];    // used for phoneme names (UTF8). Terminated by a zero byte unless the name needs the full 8 bytes.
        } id;
 } espeak_EVENT;
-/* 
+/*
    When a message is supplied to espeak_synth, the request is buffered and espeak_synth returns. When the message is really processed, the callback function will be repetedly called.
 
 
@@ -102,16 +105,16 @@ typedef struct {
 
    In PLAYBACK mode, the callback function is called as soon as an event happens.
 
-   For example suppose that the following message is supplied to espeak_Synth: 
+   For example suppose that the following message is supplied to espeak_Synth:
    "hello, hello."
 
 
    * Once processed in RETRIEVAL mode, it could lead to 3 calls of the callback function :
 
    ** Block 1:
-   <audio data> + 
+   <audio data> +
    List of events: SENTENCE + WORD + LIST_TERMINATED
+
    ** Block 2:
    <audio data> +
    List of events: WORD + END + LIST_TERMINATED
@@ -148,11 +151,11 @@ typedef enum {
 
 typedef enum {
        /* PLAYBACK mode: plays the audio data, supplies events to the calling program*/
-       AUDIO_OUTPUT_PLAYBACK, 
+       AUDIO_OUTPUT_PLAYBACK,
 
        /* RETRIEVAL mode: supplies audio data and events to the calling program */
        AUDIO_OUTPUT_RETRIEVAL,
+
        /* SYNCHRONOUS mode: as RETRIEVAL but doesn't return until synthesis is completed */
        AUDIO_OUTPUT_SYNCHRONOUS,
 
@@ -199,7 +202,7 @@ extern "C"
 ESPEAK_API void espeak_SetSynthCallback(t_espeak_callback* SynthCallback);
 /* Must be called before any synthesis functions are called.
    This specifies a function in the calling program which is called when a buffer of
-   speech sound data has been produced. 
+   speech sound data has been produced.
 
 
    The callback function is of the form:
@@ -288,7 +291,7 @@ ESPEAK_API espeak_ERROR espeak_Synth(const void *text,
       start of the text.
 
    position_type:  Determines whether "position" is a number of characters, words, or sentences.
-      Values: 
+      Values:
 
    end_position:  If set, this gives a character position at which speaking will stop.  A value
       of zero indicates no end position.
@@ -299,6 +302,7 @@ ESPEAK_API espeak_ERROR espeak_Synth(const void *text,
          espeakCHARS_8BIT     The 8 bit ISO-8859 character set for the particular language.
          espeakCHARS_AUTO     8 bit or UTF8  (this is the default)
          espeakCHARS_WCHAR    Wide characters (wchar_t)
+         espeakCHARS_16BIT    16 bit characters.
 
       espeakSSML   Elements within < > are treated as SSML elements, or if not recognised are ignored.
 
@@ -307,13 +311,13 @@ ESPEAK_API espeak_ERROR espeak_Synth(const void *text,
       espeakENDPAUSE  If set then a sentence pause is added at the end of the text.  If not set then
          this pause is suppressed.
 
-   unique_identifier: message identifier; helpful for identifying later 
+   unique_identifier: message identifier; helpful for identifying later
      data supplied to the callback.
 
    user_data: pointer which will be passed to the callback function.
 
-   Return: EE_OK: operation achieved 
-           EE_BUFFER_FULL: the command can not be buffered; 
+   Return: EE_OK: operation achieved
+           EE_BUFFER_FULL: the command can not be buffered;
              you may try after a while to call the function again.
           EE_INTERNAL_ERROR.
 */
@@ -336,8 +340,8 @@ ESPEAK_API espeak_ERROR espeak_Synth_Mark(const void *text,
 
    For the other parameters, see espeak_Synth()
 
-   Return: EE_OK: operation achieved 
-           EE_BUFFER_FULL: the command can not be buffered; 
+   Return: EE_OK: operation achieved
+           EE_BUFFER_FULL: the command can not be buffered;
              you may try after a while to call the function again.
           EE_INTERNAL_ERROR.
 */
@@ -350,8 +354,8 @@ ESPEAK_API espeak_ERROR espeak_Key(const char *key_name);
    If key_name is a single character, it speaks the name of the character.
    Otherwise, it speaks key_name as a text string.
 
-   Return: EE_OK: operation achieved 
-           EE_BUFFER_FULL: the command can not be buffered; 
+   Return: EE_OK: operation achieved
+           EE_BUFFER_FULL: the command can not be buffered;
              you may try after a while to call the function again.
           EE_INTERNAL_ERROR.
 */
@@ -360,10 +364,10 @@ ESPEAK_API espeak_ERROR espeak_Key(const char *key_name);
 extern "C"
 #endif
 ESPEAK_API espeak_ERROR espeak_Char(wchar_t character);
-/* Speak the name of the given character 
+/* Speak the name of the given character
 
-   Return: EE_OK: operation achieved 
-           EE_BUFFER_FULL: the command can not be buffered; 
+   Return: EE_OK: operation achieved
+           EE_BUFFER_FULL: the command can not be buffered;
              you may try after a while to call the function again.
           EE_INTERNAL_ERROR.
 */
@@ -420,7 +424,7 @@ ESPEAK_API espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int valu
       espeakRANGE:   pitch range, range 0-100. 0-monotone, 50=normal
 
       espeakPUNCTUATION:  which punctuation characters to announce:
-         value in espeak_PUNCT_TYPE (none, all, some), 
+         value in espeak_PUNCT_TYPE (none, all, some),
          see espeak_GetParameter() to specify which characters are announced.
 
       espeakCAPITALS: announce capital letters by:
@@ -432,8 +436,8 @@ ESPEAK_API espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int valu
 
       espeakWORDGAP:  pause between words, units of 10mS (at the default speed)
 
-   Return: EE_OK: operation achieved 
-           EE_BUFFER_FULL: the command can not be buffered; 
+   Return: EE_OK: operation achieved
+           EE_BUFFER_FULL: the command can not be buffered;
              you may try after a while to call the function again.
           EE_INTERNAL_ERROR.
 */
@@ -455,8 +459,8 @@ ESPEAK_API espeak_ERROR espeak_SetPunctuationList(const wchar_t *punctlist);
 
    punctlist:  A list of character codes, terminated by a zero character.
 
-   Return: EE_OK: operation achieved 
-           EE_BUFFER_FULL: the command can not be buffered; 
+   Return: EE_OK: operation achieved
+           EE_BUFFER_FULL: the command can not be buffered;
              you may try after a while to call the function again.
           EE_INTERNAL_ERROR.
 */
@@ -477,6 +481,35 @@ ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream);
 #ifdef __cplusplus
 extern "C"
 #endif
+ESPEAK_API void espeak_TextToPhonemes(const void *text, char *buffer, int size, int textmode, int phonememode);
+/* Translates text into phonemes.  Call espeak_SetVoiceByName() first, to select a language.
+   text: The text to translate, terminated by a zero character.
+
+   buffer: Output buffer for the phoneme translation.
+
+   size: Size of the output buffer in bytes.
+
+   textmode: Type of character codes, one of:
+         espeakCHARS_UTF8     UTF8 encoding
+         espeakCHARS_8BIT     The 8 bit ISO-8859 character set for the particular language.
+         espeakCHARS_AUTO     8 bit or UTF8  (this is the default)
+         espeakCHARS_WCHAR    Wide characters (wchar_t)
+         espeakCHARS_16BIT    16 bit characters.
+
+   phonememode: bits0-3:
+      0= just phonemes.
+      1= include ties (U+361) for phoneme names of more than one letter.
+      2= include zero-width-joiner for phoneme names of more than one letter.
+      3= separate phonemes with underscore characters.
+
+        bits 4-7:
+      0= eSpeak's ascii phoneme names.
+      1= International Phonetic Alphabet (as UTF-8 characters).
+*/
+
+#ifdef __cplusplus
+extern "C"
+#endif
 ESPEAK_API void espeak_CompileDictionary(const char *path, FILE *log, int flags);
 /* Compile pronunciation dictionary for a language which corresponds to the currently
    selected voice.  The required voice should be selected before calling this function.
@@ -501,7 +534,7 @@ typedef struct {
        unsigned char gender;  // 0=none 1=male, 2=female,
        unsigned char age;     // 0=not specified, or age in years
        unsigned char variant; // only used when passed as a parameter to espeak_SetVoiceByProperties
-       unsigned char xx1;     // for internal use 
+       unsigned char xx1;     // for internal use
        int score;       // for internal use
        void *spare;     // for internal use
 } espeak_VOICE;
@@ -546,8 +579,8 @@ ESPEAK_API espeak_ERROR espeak_SetVoiceByName(const char *name);
 /* Searches for a voice with a matching "name" field.  Language is not considered.
    "name" is a UTF8 string.
 
-   Return: EE_OK: operation achieved 
-           EE_BUFFER_FULL: the command can not be buffered; 
+   Return: EE_OK: operation achieved
+           EE_BUFFER_FULL: the command can not be buffered;
              you may try after a while to call the function again.
           EE_INTERNAL_ERROR.
 */
@@ -588,7 +621,7 @@ ESPEAK_API espeak_ERROR espeak_Cancel(void);
    function returns, the audio output is fully stopped and the synthesizer is ready to
    synthesize a new message.
 
-   Return: EE_OK: operation achieved 
+   Return: EE_OK: operation achieved
           EE_INTERNAL_ERROR.
 */
 
@@ -605,7 +638,7 @@ extern "C"
 #endif
 ESPEAK_API espeak_ERROR espeak_Synchronize(void);
 /* This function returns when all data have been spoken.
-   Return: EE_OK: operation achieved 
+   Return: EE_OK: operation achieved
           EE_INTERNAL_ERROR.
 */
 
@@ -614,7 +647,7 @@ extern "C"
 #endif
 ESPEAK_API espeak_ERROR espeak_Terminate(void);
 /* last function to be called.
-   Return: EE_OK: operation achieved 
+   Return: EE_OK: operation achieved
           EE_INTERNAL_ERROR.
 */
 
index e329872..3570547 100644 (file)
@@ -35,8 +35,8 @@
 #include "translate.h"
 #include "wave.h"
 
-const char *version_string = "1.47.06  15.Apr.13";
-const int version_phdata  = 0x014701;
+const char *version_string = "1.47.09  29.Apr.13";
+const int version_phdata  = 0x014709;
 
 int option_device_number = -1;
 FILE *f_logespeak = NULL;
index 303c563..7fec4d8 100644 (file)
@@ -1953,20 +1953,14 @@ int SpeakNextClause(FILE *f_in, const void *text_in, int control)
 
        if((option_phonemes > 0) || (phoneme_callback != NULL))
        {
-               int use_ipa = 0;
+               int phoneme_mode = 0;
                if(option_phonemes >= 3)
-                       use_ipa = option_phonemes-2;   // 1=ipa, 2=ipa with tie, 3=ipa with ZWJ, 4=ipa with separators
+                       phoneme_mode = 0x10 + option_phonemes-3;   // 0x10=ipa, 0x11=ipa with tie, 0x12=ipa with ZWJ, 0x13=ipa with separators
 
-               GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), use_ipa);
+               GetTranslatedPhonemeString(translator->phon_out, sizeof(translator->phon_out), phoneme_mode);
                if(option_phonemes > 0)
                {
                        fprintf(f_trans,"%s\n",translator->phon_out);
-
-                       if(!iswalpha(0x010d))
-                       {
-                               // check that c-caron is recognized as an alphabetic character
-                               fprintf(stderr,"Warning: Accented letters are not recognized, eg: U+010D\nSet LC_CTYPE to a UTF-8 locale\n");
-                       }
                }
                if(phoneme_callback != NULL)
                {
index 6621f99..31084a4 100644 (file)
@@ -79,7 +79,7 @@ ALPHABET alphabets [] = {
     {"_ar",    OFFSET_ARABIC,   0x600, 0x6ff,  0, 0},
     {"_dv",    OFFSET_THAANA,   0x780, 0x7bf,  0, 0},
     {"_hi",    OFFSET_DEVANAGARI, 0x900, 0x97f,L('h','i'), AL_WORDS},
-    {"_bn",    OFFSET_BENGALI,  0x0980, 0x9ff, L('b','n'), 0},
+    {"_bn",    OFFSET_BENGALI,  0x0980, 0x9ff, L('b','n'), AL_WORDS},
     {"_gur",   OFFSET_GURMUKHI, 0xa00, 0xa7f,  L('p','a'), AL_WORDS},
     {"_gu",    OFFSET_GUJARATI, 0xa80, 0xaff,  0, 0},
     {"_or",    OFFSET_ORIYA,    0xb00, 0xb7f,  0, 0},
@@ -87,7 +87,7 @@ ALPHABET alphabets [] = {
     {"_te",    OFFSET_TELUGU,   0xc00, 0xc7f,  L('t','e'), 0},
     {"_kn",    OFFSET_KANNADA,  0xc80, 0xcff,  L('k','n'), AL_WORDS},
     {"_ml",    OFFSET_MALAYALAM,0xd00, 0xd7f,  L('m','l'), AL_WORDS},
-    {"_si",    OFFSET_SINHALA,  0xd80, 0xdff,  0, 0},
+    {"_si",    OFFSET_SINHALA,  0xd80, 0xdff,  L('s','i'), AL_WORDS},
     {"_th",    OFFSET_THAI,     0xe00, 0xe7f,  0, 0},
     {"_lo",    OFFSET_LAO,      0xe80, 0xeff,  0, 0},
     {"_ti",    OFFSET_TIBET,    0xf00, 0xfff,  0, 0},
@@ -844,6 +844,7 @@ Translator *SelectTranslator(const char *name)
                        tr->langopts.stress_rule = STRESSPOSN_1L;
                        tr->langopts.numbers = 1;
                        tr->langopts.accents = 2;  // 'capital' after letter name
+                       tr->langopts.param[LOPT_UNPRONOUNCABLE] = 3;  // don't count apostrophe
                }
                break;
 
@@ -971,7 +972,7 @@ SetLengthMods(tr,3);  // all equal
                        SetLetterBits(tr,LETTERGP_VOWEL2,hy_vowels);
                        SetLetterBits(tr,LETTERGP_C,hy_consonants);
                        tr->langopts.max_initial_consonants = 6;
-                       tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED;
+                       tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_OMIT_1_HUNDRED;
                //      tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1;   // disable check for unpronouncable words
                }
                break;
@@ -1289,6 +1290,7 @@ SetLengthMods(tr,3);  // all equal
                        ResetLetterBits(tr,0x2);
                        SetLetterBits(tr,1,"bcdfgjkmnpqstvxz");      // B  hard consonants, excluding h,l,r,w,y
                        tr->langopts.param[LOPT_ALT] = 2;      // call ApplySpecialAttributes2() if a word has $alt or $alt2
+                       tr->langopts.accents = 2;  // 'capital' after letter name
                }
                break;
 
@@ -1520,6 +1522,7 @@ SetLengthMods(tr,3);  // all equal
 
                        tr->langopts.stress_rule = 7;   // stress on the last syllable, before any explicitly unstressed syllable
                        tr->langopts.stress_flags = S_NO_AUTO_2;  //no automatic secondary stress
+                       tr->langopts.dotless_i = 1;
                        tr->langopts.param[LOPT_SUFFIX] = 1;
 
                        if(name2 == L('a','z'))
index 2e876cd..9c68534 100644 (file)
@@ -384,9 +384,12 @@ int IsAlpha(unsigned int c)
                0
        };
 
-       if(iswalpha(c))
+       if(iswalpha2(c))
                return(1);
 
+       if(c < 0x300)
+               return(0);
+
        if((c >= 0x901) && (c <= 0xdf7))
        {
                // Indic scripts: Devanagari, Tamil, etc
@@ -621,7 +624,7 @@ int IsAllUpper(const char *word)
        while((*word != 0) && !isspace2(*word))
        {
                word += utf8_in(&c, word);
-               if(!iswupper(c))
+               if(!iswupper2(c))
                        return(0);
        }
        return(1);
@@ -1050,7 +1053,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt
                        }
                }
 
-               if((wflags & FLAG_ALL_UPPER) && (word_length > 1)&& iswalpha(first_char))
+               if((wflags & FLAG_ALL_UPPER) && (word_length > 1)&& iswalpha2(first_char))
                {
                        if((option_tone_flags & OPTION_EMPHASIZE_ALLCAPS) && !(dictionary_flags[0] & FLAG_ABBREV))
                        {
@@ -1629,7 +1632,7 @@ if(end_type & SUFX_UNPRON)
                        tr->expect_past--;
        }
 
-       if((word_length == 1) && (tr->translator_name == L('e','n')) && iswalpha(first_char) && (first_char != 'i'))
+       if((word_length == 1) && (tr->translator_name == L('e','n')) && iswalpha2(first_char) && (first_char != 'i'))
        {
 // English Specific !!!!
                // any single letter before a dot is an abbreviation, except 'I'
@@ -1905,7 +1908,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
                        while(*p2 != ' ') p2++;
 
                        utf8_in(&c_word2, p2+1);   // first character of the next word;
-                       if(!iswalpha(c_word2))
+                       if(!iswalpha2(c_word2))
                        {
                                ok =0;
                        }
@@ -2373,9 +2376,9 @@ static int SubstituteChar(Translator *tr, unsigned int c, unsigned int next_in,
 
        // there is a list of character codes to be substituted with alternative codes
 
-       if(iswupper(c_lower = c))
+       if(iswupper2(c_lower = c))
        {
-               c_lower = towlower(c);
+               c_lower = towlower2(c);
                upper_case = 1;
        }
 
@@ -2389,7 +2392,7 @@ static int SubstituteChar(Translator *tr, unsigned int c, unsigned int next_in,
                                new_c = replace_chars[ix+1];
                                break;
                        }
-                       if((word >> 16) == (unsigned int)towlower(next_in))
+                       if((word >> 16) == (unsigned int)towlower2(next_in))
                        {
                                new_c = replace_chars[ix+1];
                                ignore_next = 1;
@@ -2406,14 +2409,14 @@ static int SubstituteChar(Translator *tr, unsigned int c, unsigned int next_in,
                // there is a second character to be inserted
                // don't convert the case of the second character unless the next letter is also upper case
                c2 = new_c >> 16;
-               if(upper_case && iswupper(next_in))
-                       c2 = towupper(c2);
+               if(upper_case && iswupper2(next_in))
+                       c2 = towupper2(c2);
                *insert = c2;
                new_c &= 0xffff;
        }
 
        if(upper_case)
-               new_c = towupper(new_c);
+               new_c = towupper2(new_c);
 
        *wordflags |= FLAG_CHAR_REPLACED;
        return(new_c);
@@ -2477,7 +2480,7 @@ static int TranslateChar(Translator *tr, char *ptr, int prev_in, unsigned int c,
                // look for 'n  and replace by a special character (unicode: schwa)
 
 
-               if(!iswalpha(prev_in))
+               if(!iswalpha2(prev_in))
                {
                        utf8_in(&next2, &ptr[1]);
 
@@ -2907,7 +2910,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
                                        }
                                        else
                                        {
-                                               if(iswupper(c))
+                                               if(iswupper2(c))
                                                        word_flags |= FLAG_FIRST_UPPER;
 
                                                if((prev_out == ' ') && iswdigit(sbuf[ix-2]) && !iswdigit(prev_in))
@@ -2936,7 +2939,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
                                        }
                                }
 
-                               if(iswupper(c))
+                               if(iswupper2(c))
                                {
                                        c = towlower2(c);
 
@@ -2951,13 +2954,13 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
                                        }
                                        else
                                        {
-                                               if((iswlower(prev_in)) && (prev_in != 0xba))  // Windows thinks masc.ordinal (0xba) is lower-case
+                                               if(iswlower2(prev_in))
                                                {
                                                        // lower case followed by upper case in a word
                                                        if(UpperCaseInWord(tr, &sbuf[ix], c) == 1)
                                                        {
                                                                // convert to lower case and continue
-                                                               c = towlower(c);
+                                                               c = towlower2(c);
                                                        }
                                                        else
                                                        {
@@ -2967,7 +2970,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
                                                                //                                                      next_word_flags |= FLAG_NOSPACE;  // problem: prevents FLAG_HAS_DOT being set
                                                        }
                                                }
-                                               else if((c != ' ') && iswupper(prev_in) && iswlower(next_in))
+                                               else if((c != ' ') && iswupper2(prev_in) && iswlower2(next_in))
                                                {
                                                        int next2_in;
                                                        utf8_in(&next2_in,&source[source_index + next_in_nbytes]);
index 41868de..212f06e 100644 (file)
@@ -81,8 +81,9 @@
 #define FLAG_ONLY           0x4000
 #define FLAG_ONLY_S         0x8000
 #define FLAG_STEM          0x10000  // must have a suffix
-#define FLAG_ATEND         0x20000  /* use this pronunciation if at end of clause */
+#define FLAG_ATEND         0x20000  // use this pronunciation if at end of clause
 #define FLAG_ATSTART       0x40000  // use this pronunciation if at start of clause
+#define FLAG_NATIVE        0x80000  // not if we've switched translators
 #define FLAG_LOOKUP_SYMBOL 0x40000000  // to indicate called from Lookup()
 
 #define BITNUM_FLAG_ALLCAPS   0x2a
@@ -542,6 +543,7 @@ typedef struct {
        char tone_numbers;
        char ideographs;      // treat as separate words
        char textmode;          // the meaning of FLAG_TEXTMODE is reversed (to save data when *_list file is compiled)
+       char dotless_i;         // uses letter U+0131
        int testing;            // testing options: bit 1= specify stressed syllable in the form:  "outdoor/2"
        int listx;    // compile *_listx after *list
        const unsigned int *replace_chars;      // characters to be substitutes
@@ -713,9 +715,13 @@ int IsDigit(unsigned int c);
 int IsDigit09(unsigned int c);
 int IsAlpha(unsigned int c);
 int IsVowel(Translator *tr, int c);
+int iswalpha2(int c);
 int isspace2(unsigned int c);
+int iswlower2(int c);
+int iswupper2(int c);
 int towlower2(unsigned int c);
-void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int use_ipa);
+int towupper2(unsigned int c);
+void GetTranslatedPhonemeString(char *phon_out, int n_phon_out, int phoneme_mode);
 const char *WordToString2(unsigned int word);
 ALPHABET *AlphabetFromChar(int c);
 ALPHABET *AlphabetFromName(const char *name);
index 7f4ea60..4eaefca 100644 (file)
@@ -601,7 +601,7 @@ voice_t *LoadVoice(const char *vname, int control)
 
        // which directory to look for a named voice. List of voice names, must end in a space.
        static const char *voices_asia =
-               "bn fa fa-pin hi hy hy-west id ka kn ku ml ms ne pa ta te tr vi vi-hue zh zh-yue ";
+               "az bn fa fa-pin hi hy hy-west id ka kn ku ml ms ne pa ta te tr vi vi-hue vi-sgn zh zh-yue ";
        static const char *voices_europe =
                "an bg bs ca cs cy da de el en en-us es et fi fr fr-be ga hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv ";