From daaa9ddbb7bad5f670a65f34ebce20bff35c5660 Mon Sep 17 00:00:00 2001 From: jonsd Date: Sun, 15 Jul 2007 16:02:08 +0000 Subject: [PATCH] [1.27.10] Added inverse conditional rules in *_list and *_rules. eg. ?!3 "if rule 3 is NOT set". lang=en-r, adjusted vowels. Moved single characters (eg. % @) from *_list to *_rules so they can be used in combinations (eg. %-). git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@65 d46cf337-b52f-0410-862d-fd96e6ae7743 --- dictsource/af_list | 21 +++++-- dictsource/af_rules | 100 +++++++++++++++++++++++++++------ dictsource/cs_list | 17 ------ dictsource/cs_rules | 19 ++++++- dictsource/de_list | 10 ---- dictsource/de_rules | 15 ++++- dictsource/en_list | 7 +-- dictsource/en_rules | 2 +- dictsource/fr_list | 20 ------- dictsource/fr_rules | 22 +++++++- dictsource/hu_list | 6 -- dictsource/hu_rules | 8 ++- docs/dictionary.html | 17 +++++- phsource/compile_report | 24 ++++---- phsource/j/jo | Bin 1630 -> 1630 bytes phsource/ph_english_us | 87 ++++++++++++++-------------- phsource/ph_hungarian | 2 +- phsource/vdiph/8u | Bin 12676 -> 12676 bytes phsource/vdiph/ai_3 | Bin 6238 -> 6240 bytes phsource/vdiph/au_2 | Bin 8540 -> 8540 bytes phsource/vwl_en_us/3_us | Bin 7204 -> 1348 bytes phsource/vwl_en_us/@r_us | Bin 1349 -> 1349 bytes phsource/vwl_en_us/V | Bin 6237 -> 6237 bytes phsource/vwl_en_us/a | Bin 6237 -> 6237 bytes phsource/vwl_en_us/aai | Bin 0 -> 2319 bytes phsource/vwl_en_us/ar | Bin 0 -> 2154 bytes phsource/vwl_en_us/ee | Bin 1166 -> 5202 bytes phsource/vwl_en_us/{er2 => ei} | Bin 6238 -> 6238 bytes phsource/vwl_en_us/er | Bin 6238 -> 6238 bytes phsource/vwl_en_us/ii | Bin 6238 -> 6238 bytes phsource/vwl_en_us/ir | Bin 6238 -> 6238 bytes phsource/vwl_en_us/oo | Bin 0 -> 1267 bytes phsource/vwl_en_us/oor | Bin 0 -> 2481 bytes phsource/vwl_en_us/or | Bin 2480 -> 2480 bytes src/compiledict.cpp | 25 ++++++++- src/dictionary.cpp | 32 +++++++++-- src/setlengths.cpp | 2 +- src/synthdata.cpp | 2 +- src/tr_languages.cpp | 3 +- src/translate.cpp | 14 +++-- 40 files changed, 295 insertions(+), 160 deletions(-) create mode 100644 phsource/vwl_en_us/aai create mode 100644 phsource/vwl_en_us/ar rename phsource/vwl_en_us/{er2 => ei} (55%) create mode 100644 phsource/vwl_en_us/oo create mode 100644 phsource/vwl_en_us/oor diff --git a/dictsource/af_list b/dictsource/af_list index de8778e2..c5b07599 100755 --- a/dictsource/af_list +++ b/dictsource/af_list @@ -1,4 +1,4 @@ -//maintainer: Willem van der Walt +//maintainer: Willem van der Walt // email: wvdwalt@csir.co.za // tel: +27 12 8413996 // Meraka Institute, CSIR @@ -126,12 +126,18 @@ christo krIstu christian krIstian christine kr@st'i:n coetzee kuts'e@ +cronjé krOnj'e@ debora d@bo@ra der d@r deventer d'e@v@nt@r +du $u +(du plessis) du||pl@s'i +(du preez) d@||pr'e@ +(du toit) d@||toI elize il'i:z esegiël is'e@x2i_@l estelle %ist&l +etienne Eti@n eugene judZ'i:n eugène yZ'En farao fA:ro@ @@ -172,13 +178,13 @@ mostert m'Ost@rt mozart mo@tsart naomi na_'o@mi natasha n%at'aSa +naudé nOd'e@ paul p@Ul paulus p@UlWs philip fIl@p pierre p'e@r petrus pe@trWs phoebe fi:bi -preez pr'e@ rachmaninoff rax2m'aninOf rebekka r@bEka ronel run'&l @@ -186,7 +192,9 @@ rousseau r@s@U roux r'u schalk sk'alk scheepers ske@p@rs +schoeman skuman schoor sko@r +schutte skWt@ shakespeare _^_EN tania tanja terblanche t@rblA:nS @@ -197,12 +205,12 @@ marais mar'E: mandela mand'E:la celliers sIlj'e@ joubert jub'&:r -plessis pl@s'i +scarlatti $2 schalkwyk skalkveIk +schreiner SraIn@r tony t@Uni xhosa kO:za -toit toI khumalo kum'A:lu @@ -295,7 +303,6 @@ voor $u $strend2 // misc unstressed de d@ -du $u dat $u $strend te t@ nie $unstressend @@ -514,6 +521,7 @@ ongewoons $1 onkunde $1 onmag $1 onmin $1 +oplaas $2 onraad $1 onrus $1 oorkom $2 @@ -527,6 +535,7 @@ patriotisme patri|ut'Ism@ penorent pEno@rEnt per pIr persent p@rsEnt +pinotage pinut'A:Z prakseer $2 program prux2r'am @@ -541,7 +550,7 @@ rukkerig rWk@r@x2 samelewing sA:m@l,e@v@N sedert se@d@rt sektore $2 -sinteties $2 +skares skA:r@s skepsele skEps@l@ s'n s'@n sobere s'o@b@r@ diff --git a/dictsource/af_rules b/dictsource/af_rules index 77643a6d..86af7ec7 100755 --- a/dictsource/af_rules +++ b/dictsource/af_rules @@ -1,4 +1,4 @@ -//maintainer: Willem van der Walt +//maintainer: Willem van der Walt // email: wvdwalt@csir.co.za // tel: +27 12 8413996 // Meraka Institute, CSIR @@ -12,11 +12,13 @@ .group a _C) a (Cie_ 'A: a A: + AC) a (_ %a // short final a in words like: Eva/Pieta/(su)sara + %C) a (_ %a // short final a in words like: Bella/Betta/gogga + &d) a (_ %a // short, unstressed a after d at end of word: soda/padda... and compounds i) a (_ %a // a short and unstressed in words ending in ia: laboratoria/millennia a (C a C) a (Csier %a // (ge)finansier/kassier j) a (pan %a //japan first a sound and stress - C) abie 'A:bi abo (C %abO // move default stress and fix a and o sounds: abominasie/abonnement/aborsie _) a (bC %a // abdy/ablatief/ablusie/abstrak, etdc. @@ -39,8 +41,9 @@ akkedis a%k@d'Is //akkedis and compounds ae A: //should be A:@ but sounds wrong konst) abel A:b@l //exception for konstabel in compounds - t) abel %ab'&l //tabelopskrif temperatuurtabel etc. - t) abell %ab'&l //tabelle fix double l + t) abel %ab&l //tabelopskrif temperatuurtabel etc. + spekt) abel 'A:b@l // respektabel/-e/-heid/-ste + t) abell %ab&l //tabelle fix double l w) a (tering A: //watering exception to the rest C) a (tering %a //short unstressed a before tering formatering etc. except watering ai aI @@ -312,7 +315,8 @@ bek (_ b&k // exception to be (C%+ bE beken b@kEn // 2nd e sound: oorbekend/welbekende @) beker (_ be@k@r // compounds ending with -beker - bell b&l // inbeller/oorbelle/seepbelle + r) bel b&l // fix e sound: deurbel/oorbel + bell (+ b&l // inbeller/oorbelle/seepbelle _) bel (C b&l // Belgies/belhamel bere (_ be@r@ //tediebere pandabere etc. beste (_ bEst@ // fix e sound: beste/allerbeste/naasbeste/-s @@ -411,7 +415,7 @@ direk d%irEk // direk/-sie/-te/-theid/indirek... dirig (e d@r@x2 // fix stress and i sounds: dirigeer/dirigent and compounds diskre (s d@skrE // fix stress and e sound: diskresie/diskresionêre - &) de (_S2 d@ + divide (nd d@v@dE //dividende etc. &) des (_ d@s d (_N t // dj c // palatal stop @@ -444,8 +448,11 @@ dominee (_ d'o@m@ni domin (A dOmin' // domineer/dominering _) dom (ACC dOm // fix o sound: domastrant/domonnosel and derivitives + dosi (s do@s@ // fix stress: (oor)dosis/-se; excep. to rule of stress on -is @) d (C t // oudste/benoudste/goudstad/steeds/Sweeds + ge) dw dw// fix d sound: rondgedwaal/deurgedwarrel/deurgedwing, etc. @) ds (_ ts // fix d sound of wrds ending in -ds: buitentyds, etc. + oo) d (r t // fix d sound: broodrooster/doodryp/loodreg/noodroep p) d (C d // oopdwing/koopdwang ver) d (C d // verdwyn; see rule: @) d (C t @) dd d // beddens/bedding @@ -518,6 +525,7 @@ @) eer 'e@r // this string most often has stress h) eer e@r // words containing heer take default stress: allesoorheersende sf) eer e@r // sfeer at end of compounds does not take stress: atmosfeer, etc. + sk) eer e@r // words kontaining skeer take default stress: af/glad/kort/raakgeskeer Cs) eer e@r // words containing seer (meaning pain) take default stress w) eer e@r // stress may vary in words containing weer: lugafweer/donderweer u) eer 'e@r // aktueer/konstrueer/salueer, etc. @@ -584,6 +592,7 @@ %C) e (C @ // (d)warrelwind/slakkepas ll) e (lK & // parallel/-le @s) e (l@ @ // e sound in words like borselkop/voedselaanvulling and many similar + @s) e (lfde '& //fix dieselfde Cs) e (lf & // e sound in words like terselfdertyd/vanselfsprekend Cs) e (lle_ & // e sound in words like bloedselle/limfselle/stamselle/tronkselle AC) e (lh @ // e sound in words like edelheid/ydelheid/kreupelheid @@ -596,6 +605,7 @@ &) e (lC_ @ @m) e (ld & // aanmeld/voormeld Csp) e (ld & // fix e sound: borsspeld/haakspeld/doekspeld, etc. + Csp) e (ls & // fix e sound: jakkalspels/penspels/lamspels and similar elagtig @l'ax2t@x2 // beuselagtig/e/heid/buffelagtig... ener (gi %En@r // energie/energiek/e ele (ment El@ // element/e/klankelement @@ -629,6 +639,7 @@ breip) e (n E // fix e sound in breipen/-ne &) e (n_ @ &) e (nC_ @ + &) e (nde_ @ // fix penultimate e sound: sinkende/drinkende/klinkende &) e (ng_ E erf) e (nis @ //erfenis/kultuurerfenis/verderfenis @@ -740,7 +751,7 @@ CoeC) e (C @ //fix e in boetedoening, boedelbelasting and many others orr) e (l @ //fix e in borrel, orrel, korrel in compounds intell) e (k %E //intellek, and friends - p) e (ring 'e@ //imansipering and others e sound and stress + p) e (ring 'e@ //emansipering and others e sound and stress roep) e (ring 'e@ //groepering e sound and stress eval (u %iv%al // evaluasie/evalueer/evaluering CAt) e (gn & //fix e in mikrotegnologie and others @@ -902,6 +913,7 @@ her (eva h&r? // fix e sound: herevalueer... hersen h&rs@n // restore default stress and fix 2nd e sound: hersenskim/-me/-mig/hersenskudding hertog (in h%&rt%Ox2 // fix stress and o sound: (aarts/groot)hertogin/-ne and similar + hertzog h&rtsOx2 // fix stress and o sound: hertzog/-isme/-koekies _) her (uit h''&r_ // restore stress to 1st slb.: heruitgawe/-gee/-saai/-sending hel h&l _) helde h'&ld@ // heldedade/heldedood/heldemoed... @@ -934,7 +946,8 @@ _) in (a@ In_ //inasem inagneming etc. _) iese (C ,is@ // iesegrimmig and derivitives ieus i'Y@s // this ending always takes stress - C) i (g @// figuur/figure/stoksielsaligalleenA + C) i (g @ // figuur/figure/stoksielsaligalleenA + X) i (gK+ I // fix stress: (ont)stig/-ting/ontwrig _ant) i (C i // fix i sounds an words like: antichris/antidoot/antiklimaks, etc. ps) i (gA i // i sound in words like psigiater/psigoloog, etc. s) i (gC I // stress: sigverlies/opsigte @@ -1029,6 +1042,7 @@ iër (@ i'e@r // kopiëring/subsidiërende fn) is (A @s_ // fix i sound: begrafnisete/-ondernemer/-onkoste AC) is (_ 'Is // aktivis/humanis/kommunis/pianis/solis/violis/kompromis + pub) is (_ @s // restore defaultstress: pubis, excep. to: AC) is (_ en) is (K @s // stress: beduidenis/bekentenis/gevangenis, etc. kris) is @s // fix stress: krisis and compounds pol) is (_ @s // polis and compounds @@ -1306,6 +1320,7 @@ manier m@ni:r //manier and compounds manu (sk ,many marine m%arin@ // marine and compounds + ma (ritz m%a' // fix stress: Maritz/Pietermaritsburg marmelade m%arm@lA:d@ // fix stress and e sounds: marmelade and compounds mar (sje m%ar // move default stress: marsjeer and derivitives mas (biek m%as // move default stress: masbieker/-s @@ -1494,6 +1509,8 @@ nuan (seer n%y%an // fix stress: (ge)nuanseer/-d nuus (kierig n%ys // move default stress: nuuskierig/-heid nuwer (wet n%yv@r // move default stress: nuwerwets/-e + @Cer) ny (_ n'eI // move default stress: lekkerny/raserny/slawerny + @Cer) ny (e n'eI // move default stress: gekkernye/lekkernye/sotternye .group o @@ -1516,6 +1533,7 @@ _) ordent %OrdEnt // move default stress: ordentlik/-e/-er/-ste/-heid orie o@ri oriu 'o@riW + _) or (ka %Or // move default stress: orkaan/orkane/orkaanwaarskuwing... orkes %OrkEs // orkes and compounds _) os (moC %Os // move default stress: osmose/osmoties/-e @@ -1636,6 +1654,7 @@ _) on (@P2 %On ondeur %Ond%y@r // ondeurdagte/ondeurdringbaar/ondergrondelik + _) on (fiks On // stress on 1st slb.: onfiks/-e/-heid onheil ''OnheIl // stress: onheil/e/onheilbringer/onheilsvoorspelling onheil (ig %Onh'eIl // stress: onheilig/e onheil (spel %Onh%eIl // stress: onheilspellend/e @@ -1647,8 +1666,14 @@ onteenseg Onte@ns'&x2 // onteenseglik/e _) ontel %Ont&l // ontelbaar/ontelbare/ontelbaarheid on (toe %On // ontoereikend/heid + on (tugtig %On // fix stress and avoid ont prefix: ontugtig/-e/-heid + on (tug On // stress on 1st slb and avoid ont prefix: ontug/-pleger... on (tyd %On // ontydig and derivitives _) on (wAs 'On // onwis/onwys + _) onweer Onve@r // stress on 1st slb.: onweer/-snag/-swolke... + _) onweer (l %Onv%e@r // but onweerlegbaar/-bare/-baarheid + _) onweer (spr %Onv%e@r // onweerspreekbaar/onweerspreeklike/onweersproke + _) onweer (staan %Onv%e@r // onweerstaanbaar/-bare/-baarheid _) onge (@P4 Onx2@ _) ongees %Onx2%e@s // ongeesdriftig; see rule: _) onge (@P4 Onx2@ _) ongeloofli (k Onx2@l'o@fl@ // to avoid "lik" suffix retranslation of "ongeloof" @@ -1704,12 +1729,14 @@ oor (heers %o@r // move default stress oorkoepel o@rk'up@l // stress and pronunc. of el: oorkoepelend/oorkoepeling _) oorlede o@rl'e@d@ // stress oorlede/ne/s + oorle (wing o@rl''e@ // stress on 2nd slb.: oorlewing/-sekuriteit/-situasie oor (reed %o@r // move default stress oor (redA %o@r // move default stress: oorredingskrag oor (rompel %o@r // move default stress oor (sk %o@r // stress: oorskadu/oorskat/oorskrei _) oor (skiet o@r // stress on 1st slb.: oorskiet and compounds oor (spronk %o@r // move default stress: (on)oorspronklik and compounds + oor (stur %o@r // move default stress: oorsturig/-e/-heid oor (tr %o@r // oortree/oortreding/oortref oor (tuig %o@r // oortuig/oortuiging/oortuigende _) oor (vleuel %o@r // move default stress: oorvleuel/-ing @@ -1728,7 +1755,8 @@ pakke (t p%akE // pakket/-te and compounds panga paNga // fix g sound: panga/-s _) pan (to p%an // move default stress: pantoffel and compounds/pantoen - papaja pap'AIa //papaja and compounds + papaja p%ap'A:ia //papaja and compounds + papawer p%apA:v@r // move default stress: papawer/-s and compounds pam (C p%am // move default stress: pamflet/pampoen/pampoentjies and compounds pam (pa pam // restore default stress: pampas and compounds pape (gaai p%ap@ //papegaai and compounds: stress, a and e sounds @@ -1736,6 +1764,7 @@ pantser pants@r // fix e sound in compounds starting with pantser pa (pier p%a // papier and compounds parle (ment p%arl@ // move default stress and fix e sound: parlement and compounds, eg. + parti (tu p%art@ // fix stress and i sound: partituur/partiture and compounds pa (tat p@ // patat/warmpatat/wurgpatat patie (K p%at'i //words ending in patie has stress at end + a sound/simpatiek para (C ,para //paralel, paragraaf etc. @@ -1771,7 +1800,9 @@ per (so p@r // persoon/persone perso (neel p%&rs%u // personeel and compounds pervers p@rf&rs // pervers/perversie + _) pi (la p%i // move default stress: pilaar/pilare/pilatus pi (sto p@ // pistool/pistole and compounds + pizza pitsa // fix zz sound: pizza and compounds pla (fon pl%a // plafon and many compounds _) pla (kka pl%a // move default stress: plakkaat/plakkate plane (tA pl%an@' // planetarium/interplanetêr @@ -1781,14 +1812,18 @@ plig plIx2 // fix i sound: dienspligontduiker/pliguitvoering @) pligtig pl'Ix2t@x2 // pligtig in compounds takes stress: dienspligtige, etc. pof (add pOf_ // fix o sound: (konings)pofadder/-s + po (liep p%u // fix stress and o sound: poliep/-e/-agtig and compounds of poliep polisie pul'isi politiek pOl@t'ik popu ,pOpy _) por (C %pOr //portret portaal etc. + por (sie pOr // restore default stress: porsie/-s/-tjie portu (ge p%Ort%y // fix stress: Portugees/Portugese _) pos (a pOs //posadres/posadministrasie _) post (K p'@Ust- //post where it means after + _) post (u p%Ost // move default stress: postuur/posture/postuum and compounds of postuur _) prak (tyk pr%ak // stress: praktyk and compounds + pre (lud pr@ // fix stress and e sound: prelude/-s/(ge)preludeer pre (mier pr@ // move default stress and fix e sound: premier and compounds pre (sA pr@ // president/presies/present pre (se_ pre@ // fix e sound of words ending in -prese @@ -1802,6 +1837,7 @@ profesie prOf@s'i // fix vowel sounds and move stress pro (CA pr%u // probeer/produk/proses/professie/provinsie prokie pro@k%i //sprokie and compounds + proposi pr%Op@zi // stress, o and s sounds: (besigheids)proposisie/-si, etc. prosa pr'o@sa //prosa and compounds proses (_ prus'Es //proses at end of word @@ -1820,6 +1856,7 @@ pub (li p%Wb puntener p%Wnt@ne@r // stress and 2nd e sound: puntenerig and derivitives + pu (pil p%y // move default stress: pupil/-le and compounds .group q @@ -1827,6 +1864,7 @@ q (q qu _^_EN // words containing qu are English + quix (otie kw%iks // avoid translation by English rules: quixoties/-e .group r @@ -1847,6 +1885,8 @@ _) ra (pport r%a // fix stress: rapport/skoolrapport/rapportryer rasse ras@ // e sound of compounds starting with rasse ribbe (tj r'Ibi + rinne (w r@n@ // move default stress: (ge/ver)rinneweer/-de/-der + ritme rItm@ // fix e sound in ritmes/ritmespeler ritu (A r@t%y // ritueel/rituele/ritualisties _) rol (A rOl? // oprolaksie/roloorvleueling roetine r%utin@ // stress: roetine/-basis/-besoek/-kontrole... @@ -1862,11 +1902,11 @@ rivier r@f'i:r _) ri (g rI // stress on 1st slb.: rigting/-loos/-vas, etc. rond (r rOnt // grondreuk/grondrel/rondreis/-rol/-ry - rugby r'Wgbi - ru (moer r%W // fix stress and u sound: rumoer/-ig/-heid rondom rOnt_%Om // rondom/rondomheen/rondomstaner rolprent rOlprEnt // rolprent/rolprentvertoning and other compounds - + ru (briek r%W // move default stress: rubriek/-skrywer, etc. + rugby rWgbi + ru (moer r%W // fix stress and u sound: rumoer/-ig/-heid .group re rea (ks r%ia // reaksie/s/skokreaksie rea (C r%i%a // reageer/realis/me|ties @@ -1878,6 +1918,7 @@ reden (ACA r@d@n' // redenasie/s _) redi (gA r%Ed%i // redigeer/geredigeer/-de/ongeredigeerde refor (m r@f%Or // gereformeerde/reformering/reformasie + regime (_ r@Zi:m // regime/-s and compounds reg (ist r@x2 // registrasie/-nommer/register/bevolkingsregister regverdig r&x2f'&rd@x2 // regverdig/onregverdige/regverdigheid - verwyder uit af_list re (kru r@ // move stress from 1st slb @@ -1885,6 +1926,7 @@ rele (van r@l@ // relevansie/relevant and derivitives re (nA r@ // move stress from 1st slb.: renoster reper (kus r%e@p@r // stress: reperkussie/-s + re (produ r%e@ // fix stress and e sound: reproduksie/reproduseer repu (t r%Epy // move stress from 1st slb rewol (u r%Ev%Wl //rewolusie and friends rewolwer r@v'Olv@r //rewolwer and friends @@ -1926,6 +1968,8 @@ sch S sh (_ S sj S + sjampanje S%ampanj@ // move default stress: sjampanje and compounds + sjerrie SEri // fix e sound: sjerrie and compounds sjokolade SOk@l'A:d@ // sjokolade and compounds s (japie s // dorpsjapie/plaasjapie/stadsjapie @) sj (aar sj // diensjaar/lewensjaar/begrotingsjaar @@ -1934,19 +1978,24 @@ sig (a@ s@x2 // sigaar/sigare/sigaardosie siklu (s siklW // siklus and many compounds sili (nd s@lI // silinder(s)/silinderkoppe + sinteties s@nte@tis // sinteties/e/fotosinteties/-e si (viel s@ // move default stress and fix i sound: siviel/-e s (iën S sending (_ sEnd@N //fix sending at word end saamge (P6 s'A:mx2@ // saamgepers/-de/saamgetel/saamgeêet + saamgee sA:mx2e@ // fix ee in saamgee; see rule: saamge (P6 sabot (A s%ab%ut // sabotasie/saboteer salaris s@lA:r@s // salaris/aanvangsalaris/salarisskaal/-uitbetaling salon salOn // eetsalon/haarkappersalon + _) sam (b s%am // move default stress: sambok/-kke/sambreel/sambrele and compounds _) same (@P4 s'A:m@ // samekoms/sameswering samel (C sA:m@l // versamelde: see rule:_) same (@P4 s'A:m@ samen (+ sA:m@n // gesamentlik/-e + _) sar (d s%ar // sardien/-blikkie/sardinies/sardyne sar (kA s%ar // move default stress: sarkasme/sarkasties/sarkoom sa (tir s%a // move default stress: satire/satiries/-e + _) schu (C Su // fix u sound: Schubert/Schultz/Schumann/Schumacher _) sede se@d@ // sede/-s|-preek seker se@k@r // versekering/sekerheid/onsekerheid/sekere se (ko s@ // sekond/sekonde/sekondes/sekondant @@ -1956,16 +2005,21 @@ &) sele (_ s'e@l@ no) sele (_ s@l@ // e sounds in onnosele + self (stan s%&lf // move default stress: selfstandig/-e/-heid seli (ba s%El%i // move default stress and fix e sound: selibaat/selibate @) sel (wig s'&l // stress: (ver)eenselwig and derivitives _) semen (t s@mEn // sementtafel/blad/vierkant semi (na s%Em%i // seminaar/seminare/seminarium sening se@n@N // sening/haaksening/heupsening + _) senior s''i:ni@r // default stress; fix vowl sounds: senior and compounds starting with senior + senior (itei s%i:n%i%Or // fix vowel sounds: senioriteit sen (trale s%En // exception to default stress rule + _) ser (e@ s@r // fix stress and 1st e sound: sereen/serene sere (moni s%Er@ // seremonie/-meester/huwelikseremonie/seremonieel ser (sant s@r // move default stress: sersant and compounds ser (vet s@r // servet and compounds, e.g. servetring + ses (uur sEs_ // fix e sound and insert short break: sesuur/-nuus, etc. setel (K se@t@l // setel and compounds; to avoid "=tel" suffix sete (ne_ se@t@ // fix e sound: besetenes/aangesetene/ingesetene siaal Si'A:l // potensiaal/provinsiaal @@ -1982,6 +2036,7 @@ skan (da sk%an // move default stress: skandaal/skandale/skandalig and compounds _) skar (C sk%ar // move default stress: skarlaken/skarminkel/skarnier and many compounds skarrel skar@l // restore default stress: (ge)skarrel/-ing + _) ske (let sk@ // fix stress and 1st e sound: skelet and compounds skemer ske@m@r // fix 2nd e in many compounds and derivitives of skemer- sker (muts sk%&r // move default stress: (ge)skermutsel/skermutseling/-e skilder (y sk@ld@r // move stress to y: skildery and compounds like skilderymuseum @@ -2014,7 +2069,11 @@ @) sief (_ s'if // massief/aggressief/passief/intensief @) siewe (_ s'iv@ // massiewe/aggressiewe/passiewe/intensiewe _) sieke sik@ // siekeboeg/-fonds/-lys/-lokaal/-loon + si (llabe s@ // move default stress: sillabe/-s silwer sIlv@r // silwerskoon/silwerware/compounds of silwer + sim (bo s@m // move default stress: simbool/simbole/simbolies/-e + simbo (liek s@mb%u // fix stress and vowel sounds: simboliek and compounds + simpo (siA s@mpo@ // fix stress and o sound: simposium/simposia and compounds // sioe Si'u si (o Si // fisiologie/-logiese/-loog sio (ne Siu' // emosioneel/emosionele/rasioneel/rasionele, etc. @@ -2046,7 +2105,7 @@ @) sug (tig s'Wx2 // eersugtig/onbaatsugtig/onselfsugtig, etc. sukses s%WksEs // sukses/suksesse/suksesvol/reusesukses su (mmier s%W // move default stress: sumier/-e - su (san s%u // fix stress and u sound: susan/-na + su (saC s%u // fix stress and u sound: susan/-na/susara swag sv'ax2 swart (gal sw%art // move default stress: swartgallig swerk sv&rk @@ -2059,6 +2118,7 @@ stapel stA:p@l // fix e sound: (op)stapeling/stapelaar staties st'A:tis steding ste@d@N // besteding and compounds + C) steker ste@k@r // e sound: (aan/dop/kwaad/rugsteker/-s/-y, etc. wor) stel st@l //worstel e sound in compounds @) stel (iC st@l // eersteling/gunsteling/wellusteling/worsteling/eerstelig and compounds @) ste (llen st'& // belangstellendes/gerusstellend/regstellende/teleurstellend @@ -2137,7 +2197,7 @@ toneel t%une@l toege (wing t'ux2e@ // exception to _) toege (@P5 tux2@ _) toege (@P5 t'ux2@ - + toe (laatba t%u // move default stress: (on)toelaatbaar/-bare/-baarheid toer (@ t%ur // move default stress: toeris/-te/compounds of toernooi toere tu:r@ // restore default stress toe (vallig t%u // exception to default stress rule @@ -2160,6 +2220,7 @@ tuin (ier t%Yyn // move default stress: tuinier and compounds tussen tWs@n // tussenin/tussenbeide/tussenganger tuur t'yr + parti) tuur ty:r // compounds ending with partituur take default stress: musiekpartituur s) tuur ty:r // "uur" in stuur takes default stress: weggestuur @) ty (dig t'eI // gelyktydig/vroegtydig @@ -2192,7 +2253,7 @@ _) ter (l t@r // move default stress: terloops/-e @) term (_ t&r@ // correct pronunciation of e @) terme (_ t&rm@ // correct pronunciation of 1st e - sin) te (ti te@ //sintetiseer, compounds and derivitives + sin) te (ti te@ //sintetiseer, compounds and derivitives tern (K t'&:r@-n //lantern ekstern etc. tern (e_ t'&rn // interne/eksterne _) ter (nA t@r // terneergedruk/ternouernood @@ -2216,7 +2277,7 @@ tes (_ t@s - &) tel (_S3 t@l + &) tel (_ t@l teleur t@lY@r // teleur/teleurstelling/teleurgesteld &) tels (_S4 t@ls sleu) tel t@l //sleutel in compounds @@ -2271,7 +2332,8 @@ uitgee (+ 'Yytx2e@ // se rule: _) uitge (@P5 Yytx2@ uitsonderli (k %YytsOn@rl@ // move default stress: uitsonderlik/-e vs. uitsonder uit (sorteer ''Yyt // remove stress from -eer and place on 1st slb - uitstaande %YytstA:nd@ // move default stress + uitspreekl %Yytspre@kl // fix stress and avoid -lik suffix: onuitspreeklik/-e + uitstaan (C %YytstA:n // move default stress: uitstaande/onuitstaanbaar/-bare uit (steken %Yyt // move default stress uit (spatt %Yyt // move default stress _) uitge (@P5 'Yytx2@ // words beginning with uitge have stress on 1st slb @@ -2314,6 +2376,7 @@ ven (yn f@n // venyn/venynig ver f@r virtu v@rtS%y //virtueel virtuose etc. fix v and t sounds and assure lack of stress + ver (kyker f'&:r //verkyker and compounds _) ver (@P3 f@r verant (w f@r%ant // (on)verantwoordelik/-heid/verantwoording verende f'e@r@nd@ @@ -2468,6 +2531,8 @@ @) ws (_N _^_EN @) w (_N _^_EN @) werste vIrst@ + k) w (oA v // fix w sound: dankwoord/werkwoord/skoonmaakwoede/spreekwoord + @C) w (oCC v // fix w sound: kubiekwortel/steekwond/onafhanklikwording/republiekwording/varkwors woe (styn v%u // move default stress: woestyn and compounds wolke vOlk@ // nimbuswolke/wolkekrabber woorde vo@rd@ @@ -2484,6 +2549,7 @@ .group z z z z (z + t) z s // fix s sound: britz/fritz/hertz and similar .group diff --git a/dictsource/cs_list b/dictsource/cs_list index a838baa3..99609fa1 100644 --- a/dictsource/cs_list +++ b/dictsource/cs_list @@ -48,23 +48,6 @@ y ipsilon _z zet ž Zet -: dv'ojtetSka -% pRotsento -+ plus -€ eURo -@ zavina:tS -& ampr-sent -# gR^i:Zek -/ lomeno -\\ beksleS -! vigR^itSn^i:k -° stupen^ -× kRa:t -÷ Jeleno -§ paRagRaf -~ tilda -^ zdR^i:Ska -© k'opiRajt _#9 t'ap _#32 m'ezeRa // space diff --git a/dictsource/cs_rules b/dictsource/cs_rules index 5073bcff..ca0286f1 100644 --- a/dictsource/cs_rules +++ b/dictsource/cs_rules @@ -632,7 +632,24 @@ _flegma) ti ti ŕ r- ü i - $ dola:R + $ dola:R + : dv'ojtetSka + % pRotsento + + plus + € eURo + @ zavina:tS + & ampr-sent + # gR^i:Zek + / lomeno + \\ beksleS + ! vigR^itSn^i:k + ° stupen^ + × kRa:t + ÷ Jeleno + § paRagRaf + ~ tilda + ^ zdR^i:Ska + © k'opiRajt . tetSka . (. _: diff --git a/dictsource/de_list b/dictsource/de_list index fce3d3ea..bb687550 100644 --- a/dictsource/de_list +++ b/dictsource/de_list @@ -17,16 +17,6 @@ _. pUnkt _, kOma -€ OY*o: -£ paUnd -% p@-*o:ts'Ent -& Unt -@ kl'ame:*,af@ -# nUm3 -+ plUs -= glaIC -~ tIld@ -\ bEkslES _| paIp _: d'Op@lp,UNkt diff --git a/dictsource/de_rules b/dictsource/de_rules index 1bdaa673..a2f2cff6 100644 --- a/dictsource/de_rules +++ b/dictsource/de_rules @@ -1131,8 +1131,19 @@ š S ž Z - , (D kOma - $ dOl'A: + , (D kOma + $ dOl'A: + € OY*o: + £ paUnd + % p@-*o:ts'Ent + & Unt + @ kl'ame:*,af@ + # nUm3 + + plUs + = glaIC + ~ tIld@ + \ bEkslES + . pUnkt . (. _: diff --git a/dictsource/en_list b/dictsource/en_list index 9fd92034..72bf012c 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -11,7 +11,7 @@ // Conditional rules // ?2 Use long 'a' in 'bath' // ?3 General American -// ?4 Not General American +// ?!3 Not General American // ?5 split [3:] er [3:], ir [IR], ur [VR] // ?6 'one' = [wVn], 'of' = [Vv] // ?7 Scottish @@ -134,8 +134,7 @@ _0C h'Vndr@d _0M1 T'aUz@nd _0M2 m'Ili@n _0M3 b'Ili@n -_0and @n -?3 _0and +?!3 _0and @n _dpt pOInt _roman roUm@n_ @@ -1462,7 +1461,7 @@ rapport rap'o@ rarest re@r@st rascal raask@L ratatouille rat@t'u:I2 -rather rA:D3 +?!3 rather rA:D3 ratio reISI2oU rationale raS@n'al ravine r@vi:n diff --git a/dictsource/en_rules b/dictsource/en_rules index fd5e0eb2..913f5d5b 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -23,7 +23,7 @@ // Conditional rules // ?2 Use long 'a' in 'bath' // ?3 General American -// ?4 Not General American +// ?!3 Not General American // ?5 split [3:] er [3:], ir [IR], ur [VR] // ?6 'one' = [wVn], 'of' = [Vv] // ?7 Scottish diff --git a/dictsource/fr_list b/dictsource/fr_list index abe9314c..5203e3b3 100755 --- a/dictsource/fr_list +++ b/dictsource/fr_list @@ -33,26 +33,6 @@ _y i:gR'Ek // character names -! Eksklamassj'O~ -$ dOlaR -@ aRobas -% puRsA~ -& _e -+ plys -~ tilde -€ @Ro -¢ sEnt -¥ i;En -£ livR -° d@gRe -± pl'yz_'u_mw'E~ -× myltip@-lj'e_p'aR -÷ diviz'e_p'aR -¼ W~_k'aR -½ W~_d@m'i -¾ tRw'a k'aR -© _^_EN -® R@ZistR'@d_m'aRk //_cap k,ap@-t@L diff --git a/dictsource/fr_rules b/dictsource/fr_rules index 1a177f2a..17b0c48e 100755 --- a/dictsource/fr_rules +++ b/dictsource/fr_rules @@ -502,7 +502,7 @@ alc) oo (l O // alcool z) oo o // zoo - oo u // pool + oo (X u // pool _gal) op (_ o // galop _sir) op (_ o // sirop @@ -772,3 +772,23 @@ // symbols that are normally spoken when reading text , (D pilk:u + ! Eksklamassj'O~ + $ dOlaR + @ aRobas + % puRsA~ + & _e + + plys + ~ tilde + € @Ro + ¢ sEnt + ¥ i;En + £ livR + ° d@gRe + ± pl'yz_'u_mw'E~ + × myltip@-lj'e_p'aR + ÷ diviz'e_p'aR + ¼ W~_k'aR + ½ W~_d@m'i + ¾ tRw'a k'aR + © _^_EN + ® R@ZistR'@d_m'aRk diff --git a/dictsource/hu_list b/dictsource/hu_list index 3a3368b0..df8b1dad 100644 --- a/dictsource/hu_list +++ b/dictsource/hu_list @@ -323,13 +323,7 @@ ly Ellipsilon ny En^ _. pont -% sa:zAle:k -@ kukAts -€ EuR2o -+ plus -§ pAR2AgR2AfuS Ft foR2int -$ dolla:R2 diff --git a/dictsource/hu_rules b/dictsource/hu_rules index fff4c463..48450745 100644 --- a/dictsource/hu_rules +++ b/dictsource/hu_rules @@ -143,7 +143,7 @@ _minde) gy (ik J: ly j lly jj - A) lj (A lj_| + A) lj (A ljj C) ly (_ li _kéth) ly li @@ -320,6 +320,12 @@ _szára) zs (ág zS ñ n^ ø Y + % sa:zAle:k + @ kukAts + € EuR2o + + plus + § pAR2AgR2AfuS + . pont . (. _: \.) . diff --git a/docs/dictionary.html b/docs/dictionary.html index f7182161..6b43ff14 100644 --- a/docs/dictionary.html +++ b/docs/dictionary.html @@ -529,11 +529,21 @@ The dictionary list is searched from bottom to top. The first match that satisf then if "to" is at the end of the clause, we get [tu:], if not then we get [t@].

 


-

4.5 Numbers and Character Names

-

4.5.1 Letter names

+

4.5 Conditional Rules

+Rules in a _rules file and entries in a _list file can be made conditional. They apply only to some voices. This can be useful to specify different pronunciations for different variants of a language (dialects or accents).

+Conditional rules have   ?   and a condition number at the start if the line in the _rules or _list file. This means that the rule only applies of that condition number is specified in a dictrules line in the voice file.

+If the rule starts with   ?!   then the rule only applies if the condition number is not specified in the voice file. eg.

+

+   ?3     can't     kant    // only use this if the voice has:  dictrules 3
+   ?!3    rather    rA:D3   // only use if the voice doesn't have:  dictrules 3
+
+ +

 


+

4.6 Numbers and Character Names

+

4.6.1 Letter names

The names of individual letters can be given either in the _rules or _list file. Sometimes an individual letter is also used as a word in the language and its pronunciation as a word differs from its letter name. If so, it should be listed in the _list file, preceded by an underscore, to give the letter name (as distinct from its pronunciation as a word). eg. in English:
   _a   eI
-

4.5.2 Numbers

+

4.6.2 Numbers

The operation the TranslateNumber() function is controlled by the language's langopts.numbers option. This constructs spoken numbers from fragments according to various options which can be set for each language. The number fragments are given in the _list file.

+ diff --git a/phsource/compile_report b/phsource/compile_report index c9f6dc74..e33396a0 100644 --- a/phsource/compile_report +++ b/phsource/compile_report @@ -306,7 +306,7 @@ 1 vdiph/ae fr_ca 1 vdiph/ae_2 en_n 8 vdiph/ai base2 eo sk hr mk it pt vi - 3 vdiph/ai_2 en_us cy + 2 vdiph/ai_2 cy 1 vdiph/ai_3 no 1 vdiph/ai_4 af 2 vdiph/ai_5 de la @@ -320,8 +320,8 @@ 6 vdiph/au_4 base2 cy eo sk it is 1 vdiph/ee-e hi 4 vdiph/eei en de pt vi - 2 vdiph/eei_2 eo fi - 3 vdiph/eei_3 en_us en_rp sk + 3 vdiph/eei_2 en_us eo fi + 2 vdiph/eei_3 en_rp sk 1 vdiph/eei_4 nl 3 vdiph/eeu pt vi zhy 2 vdiph/eeu_2 la pt_pt @@ -412,7 +412,7 @@ 4 vowel/& en_rp fi hi sv 4 vowel/0 base2 en hi pt 4 vowel/0_2 en_n en_wm pt_pt sw - 5 vowel/0_3 en_us en_sc en_rp hu + 4 vowel/0_3 en_us en_sc en_rp hu 2 vowel/@_2 fr 6 vowel/@_3 en_sc de hi 1 vowel/3_2 en_n @@ -429,7 +429,7 @@ 12 vowel/a#_3 en en_n en_us en_wm de hi ru pt_pt vi zhy 4 vowel/a_4 en_wm el vi 3 vowel/a_5 it sv sw - 7 vowel/aa en_us fi fr_ca no zhy + 5 vowel/aa fi fr_ca no zhy 1 vowel/aa# fi 3 vowel/aa_2 en cy 1 vowel/aa_3 af @@ -437,6 +437,7 @@ 2 vowel/aa_5 en_n 2 vowel/aa_6 de 1 vowel/aa_7 nl + 2 vowel/aa_8 en_us 3 vowel/a_en en fr 1 vowel/@_bck hi 15 vowel/e base2 en en_n af cy eo fr hr mk it la pt ++ @@ -501,9 +502,8 @@ 5 vowel/u# en en_sc 6 vowel/u_2 fi fr sk hr mk ro 1 vowel/u#_2 sv - 1 vowel/u_3 ro + 2 vowel/u_3 en_us ro 1 vowel/u#_3 en_n - 1 vowel/u_4 en_us 2 vowel/u#_4 en_sc 1 vowel/u_5 sw 3 vowel/u_6 en_rp pt_pt @@ -549,16 +549,18 @@ 1 vwl_en_rp/oo en_rp 1 vwl_en/u en 4 vwl_en/u_L en en_n en_us en_rp - 1 vwl_en_us/3_us en_us + 2 vwl_en_us/3_us en_us 2 vwl_en_us/a en_us - 2 vwl_en_us/ar2 en_us + 1 vwl_en_us/aai en_us + 2 vwl_en_us/ar en_us 1 vwl_en_us/ee en_us 1 vwl_en_us/er en_us 1 vwl_en_us/i_final3 en_us 2 vwl_en_us/ii en_us 2 vwl_en_us/ir en_us en_sc - 4 vwl_en_us/or en_us en_sc - 1 vwl_en_us/@r_us en_us + 1 vwl_en_us/oo en_us + 1 vwl_en_us/oor en_us + 3 vwl_en_us/or en_us en_sc 1 vwl_en_us/ur en_us 1 vwl_en_us/V en_us 2 vwl_en_wm/aa en_wm diff --git a/phsource/j/jo b/phsource/j/jo index 29fda4ce138f409abe210b841b86eeedfc1b5b1c..e4730ab6a0f5a1f574a6aeab814d18a36b063514 100644 GIT binary patch delta 49 xcmcb|bB|}j1QrFEJIs@FSY$SCFku98T)>>oEKFLAObRla4VW#!bQa4OMgVKj4FmuH delta 49 zcmcb|bB|}j1eONLJIs@FSY$SCFkxg#kaPiaHnT8kF)}@n+-$&X0j9H9zAyp+l0^>~ diff --git a/phsource/ph_english_us b/phsource/ph_english_us index 531e08fd..e38fab4f 100644 --- a/phsource/ph_english_us +++ b/phsource/ph_english_us @@ -10,17 +10,18 @@ phoneme @ // Schwa formants vowel/@ unstressed linkout r- - length 140 + length 130 endphoneme phoneme 3 // Schwa, used for rhotic schwa in American vowel starttype (@) endtype (@) - formants vwl_en_us/@r_us + formants vwl_en_us/3_us +// formants vowel/3_2 unstressed linkout r- beforevowel @ - length 175 + length 180 endphoneme @@ -37,7 +38,7 @@ phoneme @5 // Schwa, changes to U before a vowel formants vowel/@ unstressed beforevowelpause U - length 140 + length 130 endphoneme @@ -52,35 +53,33 @@ endphoneme phoneme a vowel starttype (a) endtype (@) - length 200 + length 190 formants vwl_en_us/a reduceto a2 0 endphoneme +phoneme aa // 'bath' etc. + vowel starttype (a) endtype (@) + length 190 + formants vwl_en_us/a + linkout r- +endphoneme + + phoneme a2 vowel starttype (@) endtype (@) unstressed - length 150 + length 140 formants vowel/a#_3 linkout r- endphoneme -phoneme aa // 'bath' etc. - vowel starttype (a) endtype (@) - length 200 - formants vwl_en_us/a -// formants vowel/a_2 - linkout r- -endphoneme - - phoneme E vowel starttype (e) endtype (e) length 160 formants vwl_en_us/ee -// formants vowel/ee_2 reduceto I 0 endphoneme @@ -92,6 +91,7 @@ phoneme I linkout ; endphoneme + phoneme I2 vowel starttype (i) endtype (i) unstressed @@ -111,15 +111,15 @@ endphoneme phoneme 0 vowel starttype (o) endtype (o) - length 190 - formants vowel/aa + length 180 + formants vowel/aa_8 reduceto @ 0 endphoneme phoneme V vowel starttype (a) endtype (@) - length 150 + length 170 formants vwl_en_us/V // formants vowel/V_2 reduceto @ 0 @@ -128,31 +128,32 @@ endphoneme phoneme U vowel starttype (o) endtype (o) - length 150 + length 140 formants vowel/8_2 endphoneme phoneme A: vowel starttype (a) endtype (a) - length 210 - formants vowel/aa - before r vwl_en_us/ar2 + length 200 + formants vowel/aa_8 + before r vwl_en_us/ar linkout r- endphoneme phoneme A@ // Used for [A:] when followed by 'r', becomes [A:]+[r] in American vowel starttype (a) endtype (@) - length 250 - formants vwl_en_us/ar2 + length 240 + formants vwl_en_us/ar appendph r endphoneme phoneme 3: vowel starttype (@) endtype (@) - length 230 + length 220 +// formants vwl_en_us/@r_us2 formants vwl_en_us/3_us // reduceto @ 0 linkout r- @@ -161,7 +162,7 @@ endphoneme phoneme i: vowel starttype (i) endtype (i) - length 165 + length 160 formants vowel/i_en after w w/wi2 linkout ; @@ -170,7 +171,7 @@ endphoneme phoneme O: vowel starttype (o) endtype (o) - length 210 + length 200 formants vowel/0_3 before r vwl_en_us/or reduceto @ 0 @@ -180,7 +181,7 @@ endphoneme phoneme O@ vowel starttype (o) endtype (@) length 240 - formants vwl_en_us/or + formants vwl_en_us/oor appendph r endphoneme @@ -196,57 +197,57 @@ endphoneme phoneme O vowel starttype (o) endtype (o) length 150 - formants vowel/0_3 + formants vwl_en_us/oo reduceto @ 0 endphoneme phoneme u: vowel starttype (u) endtype (u) - length 190 - formants vowel/u_4 + length 170 + formants vowel/u_3 before l/2 vwl_en/u_L-40+l/L2_uL endphoneme phoneme aU vowel starttype (a) endtype (u) - length 210 + length 200 formants vdiph/au_2 endphoneme phoneme oU vowel starttype (@) endtype (u) - length 230 + length 210 formants vdiph/8u endphoneme phoneme aI vowel starttype (a) endtype (i) - length 220 - formants vdiph/ai_2 + length 210 + formants vwl_en_us/aai endphoneme phoneme eI vowel starttype (e) endtype (i) - length 220 - formants vdiph/eei_3 + length 210 + formants vdiph/eei_2 endphoneme phoneme OI vowel starttype (o) endtype (i) - length 230 + length 220 formants vdiph/ooi endphoneme phoneme e@ vowel starttype (e) endtype (@) - length 260 + length 250 formants vwl_en_us/er appendph r endphoneme @@ -254,7 +255,7 @@ endphoneme phoneme i@ vowel starttype (i) endtype (@) - length 240 + length 220 formants vwl_en_us/ir appendph r endphoneme @@ -262,7 +263,7 @@ endphoneme phoneme U@ vowel starttype (@) endtype (@) - length 240 + length 220 formants vwl_en_us/ur linkout r- endphoneme @@ -301,7 +302,7 @@ phoneme t# // reduced [t] as in "city" vowelin f1=0 f2=1700 -300 300 f3=-100 80 vowelout f1=0 f2=1700 -300 300 f3=-100 80 lengthmod 5 - wave x/d%80 + wave x/d%90 endphoneme diff --git a/phsource/ph_hungarian b/phsource/ph_hungarian index 5f2f4f42..490ec955 100644 --- a/phsource/ph_hungarian +++ b/phsource/ph_hungarian @@ -62,7 +62,7 @@ endphoneme phoneme a: vowel starttype (a) endtype (a) - length 260 + length 270 formants vowel/a endphoneme diff --git a/phsource/vdiph/8u b/phsource/vdiph/8u index 2e9226070083aa71349bd2776012ade239b6be9f..e4c4049605700dcc4f221f672718ea85ea873f89 100644 GIT binary patch delta 142 zcmZokZb{zI!78c2H{fQk1B@2@ X0zk9ZFH^agCJ_4w=L*3Gj1X}bo)SJ7`^Luh&1^`z tn2FG3!Es}AHv3(6$p=hp1V2Fy)nLsLH(-WXmM}SyU!2irb0z;{K>$m$C-ndT delta 152 zcmccPbjN8znBhw%88IuS2aF6raDuf)>H^agCJ;M;bA{joMu_+;?h-y2yJTbgW;P^U t%tYw2;3(Og&3>0%@&(fx!B0>_ZCG=}4VWR88B9*(7iYBCT*?1f5CBeXC&2&! diff --git a/phsource/vwl_en_us/3_us b/phsource/vwl_en_us/3_us index 003970620dd9ea0f1c8248aea9122bbd4bd93103..bccb47d3040feaa623e03a03e894a0c533c4532f 100644 GIT binary patch literal 1348 zcmd^;%TE(g6o)^WK8C)F3Pqq&(JDT$0U|^m9VpdW5-Dk;hzlPfMiX_RG0}xdb)yT7 z8~y|rZrr(aZCJQq>9QOD1`=a}zdOU=7)^|Bos)C!x#!$_JNKJk8}&-L*{CcBfw8L( z9|T!b=6~$amz}8{eD7tuwVEnR@~!QcV7(0#17=CPgRcI7qMqpxnf1VmQ?FX2+8u6v zJx<)sx3-6q#Ju`opB?t{N4bJdan~Oma`P(JSmhPZXmE@3@+LQV&Jz|WGszhysBn?G z#?zcqJgKpwd0D+BN)*^f4+9(_PmTetZ|ofiBJtqH0ubB`C|G{Ys$R>a@} zk9k8&R7OQ;lw%aJxgw&oA~-IeQEx$Glir4@F)bqJxXoS0q_}ypnp0flGEceBlo*caenV1JL9=;r zo|Ep19GCV^h}@*|MOj4}oRZtxv0r!3I!erngrONFNLVqgj$s)iB#xFWB(6r85%ptE zH=$K&>9SkiE5ccQ9dlYt=frfL{#-IcHmaS!qw6v@@dt53_pJP9x|=?_Yd*T;KDu}G P${x|Qe$>nV2fE(@itM9a literal 7204 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 diff --git a/phsource/vwl_en_us/@r_us b/phsource/vwl_en_us/@r_us index bac4c0b4a6aab50943f802ae64c6fbf483569a01..2476b91d3b04a8dd861eee988785bf5c09d9c9c3 100644 GIT binary patch delta 344 zcmX@gb(Cv@KI4{&2BJa!3=9n4|93Dja4cgoU;=U&9y0C_)L?qR2x4cm28h-$MS#U) zI242)Fhay#cr5rK?C<~o@CNX}#C4=K*d|WD6O;nfd%>Q3QyCc0O`Uv{@k3w$&{#c= zI))IAMNr3HWIQ3{0Cj8#>jp6&sAD&=-+?-ifx(4m2OrFVe|Q&g!`N=pKQ^;5^D?^F vfsHL;VBnm`B*qNnFdSgKAshiU)`nF;LI%p_V4uMY(+&&+Bx5K4WO@ex#luWM delta 338 zcmX@gb(Cv@KI4gr2BJYJ3=9n4|CccAV4KGz#th^z{9t6@i(q=d2x14Yp5Q;k*al{E zu)pBA#&`|P-os33YBfO;?3moNlyAxym?3^O%_ zRX{=pY6A!R3|^RSps9Q?b_w6)a2Bn}4;inxgaQrI;~>VcC2V*MdpG$xvrZ7mWgx={ T`*#T&Hvcj(p!;_+JM#koA8St* diff --git a/phsource/vwl_en_us/V b/phsource/vwl_en_us/V index 5f52e505078a25689dce66e69cec918b1f814ee5..74c045ca6cf71d9ad336cc01649259e89e5f43da 100644 GIT binary patch delta 538 zcmca>aMwT}IKb68B-k~Ok%56BjEy0FqkuC@#u)|%?iEZcn9ee-Vd!9r5SzkufhmL4 zmEi_Ug=7TN1I8B|ZyA1Y3h+H(e83pYca&iT&jSGv8)yat7k>clvve`n{{v}baA00zTL@ zu;xIx!-@mp4jT@zJD7ov+I*a29&>#ZiltAOj>0W1VD*H1{ws$7Bh2%Q_=Fir^Zft+ zFwg%NT_~m_!78<1T18e?Zi(EH%};oGnd==<9PyUv3EUCItf6p6{O2%&JK`EtUzCi;>?aU%B~%KrTA~aMwT}IKb68B-k~Ok%56BjEy04qkuC@#!ZG0?l(+pn9nk;VVKPHL9~%6f+>U5 zmEj*tlB5ySEyfodZyCh7!uTFAK41*yJIZjG=OI6c4K#z{9p6h182hZWIxCD_A!o(J z!L)}7q((zI6wKbdo284n{y#{F!GU>=Z6TPolaYxb1?qCKwYV&c9dCc_?OLsGT;=Bs<{1c|54B1Q$!lgjZ7qEIV z=&?46=>R?dl|z8>Jm*#(kjEDB2{WGMdBh9zzvx0S9SK&c{n9G3vT{r0j%aMwT}IKb68B-k~Ok%56Bk&Pi`qkuC@S_C5l_XZXjruR(xj5C-Rgd&(OFh#IV zVVJVHd2z}xHgGlwK45&nc$$ZS`2ep6FNnR5PmysazXlhG4K$BIL3Rc+j9nq8 z#sp()D1+FWcd{&Fu7}z6gUJ+bS0L*QxLxj?e;8nP-R1es1hZ=kpA?c^W*i8+1OyOv z2{1zJdcgRB!;+svbfIL6>@$Uj$~9`+G}^VEYMb@-G7e!oLg*VE=BuBhbhW0E*aw{{R30 delta 480 zcmca>aMwT}IKb68B-k~Ok%56Bk&Pi{qkuC@+H(d5o;%FSEbp2087-I@1bLV>nIl-I zFi5a5h{iDWFnMvxFa~fj2v{+>FrDUMU_Q*t!1sXh0pmVCMaE|S_Z%QL&^(4>XiTtgYe-n^4#8FM|%t{+UMaJvFoXTa@p=lsI}v+FL;Zzh;sTll1q>@wp( z*d-uQ0qCKZ%iJ%ncN^F_wv1B_`%l+wMvEKfbRkFQw#I|yl+n0i^&x8@FxHF zd7pF0`JMmszDJJ?K2$zBI1&IbIe99K=O{LRJnP1BJ@G5GpqD_!L`hsIj8ip)0J2?Rt>3n*+tyf$wWHpYp-RI6}sk3Tc_#kuI*a) zpoG2X#SmV_`*;UmbDYK~_FyOOL?^am2fDBukKqKL(~*oq|obAsPV zG%(_bamcp=o5MnY>tPi#w-G^zt5McO88#!#T8agf8VTi>w;RERANe zODK*B5=hmzVwL&7JXIAjba-eFQ24w zU#%k%NH<=2WlHW9aSi(K*$pXm~ShXKV@DiB~u@?`Jm$;?MKSF|K!@g?%YRQj9E` zNU@$QrB_pEWF$G)v4xcDRA`u0in; z-wCr6hwOP0DXykDgr-Dem93u3t|%dtrQ>B6aH%CH#ARszCQw?x^v#4KA8EkrK_ ze0?idrnt{_^F8L+zw&(T)UE7J@mCw4zC(3$hTfE2u*lk8a_l4DKI(SXrRlvERyDHb zF6vH3UfrXW_e;`I5pobd79A!hg*eXUFzJwx(h=rlNXDW&B}B=p?2`UzqW8}T?;^Pn z>rGaQf8~y)^)G(RD0-gtVU_L1&qi*F$+K!fQ~p_zT{O-_ri=o001M%YebJaw`DLeK zYl1+ZyBN}1djG2B>!sWDewuuH$!i}e*OOEeBStn2L&$-aba8{rzGwkVhwUZW= z({t1k&8$lES5EL9966G2=CyLCD4EEPC>^Zn$l0Rl1eptQO_LM0nyyb;&K+GH=8C*A Thxd{_>_XX$zwg|+4kkuYPR=?1`^|T6a(?{3 z?<_7%jGbGYIO|Ee_*_hv*mwT<(VIITovz2Gc(ymHy2bj8SF+Ej*dY1d<{r}{5ov4B zmeZSwx?W9%x~hYjP)kn~>w2ZTuFJiFJ|tiFYFelDn%>i-Zs>i@=uY*h$mr2N?N^_A zHN=?GS$-QMcS3XI&gvLB9coiMvrh$;bq8-`lx8+FO~n}vYEpu|NfD(`?Tl{iRi|>~ zrCF1#O)jtU=j$&o*-_<3e_OX571;>Hj@UGjG3N5q+fs7PTXU?gd;RS*-u+I099b^R z))-z&C>wJ7BDIrt>iZ!OnUvIqmjbr0Se_eM1Mw@{^g|Rd8^tg-uH?0QkPHQ+` zr!^ekjaE^2L1GYhUDZo^O5f{4E$9>k`#DqIvFd`{0JJJ_d;~{L!fX;&r`aEHwDPcs zL9GC(1I&VRTMmM)d?g2kM(3Rjt8r=J%SE!f-LFaKzzkUl@?wtH4^OT+4u13(KfvTi z)&l{rFg8PE!A0x5s@1x?s@2_jNp)V*ZoCF?$S@8&qbu-wUSH``Jw}}!$0uEk5{@Y_ znt2|=SBtPb3EeT?m_i?ecHU7)vFE7UPG-UR$K07`wnHsTP81qZXr%aBYt3IJ$l9|- zTATxuWHqX?{Z`Mjj)Wim`9&wF$Mrx!EQ}ekpxZ6$v&JPZzo5aLj6(t?pRIJyWaiZdfbo0?x9y5g~hAXQhX1v>s5 zw5FLe3?G(3-_O9c4To7Rw>d5mXjqrGI*a2Yb6CQ8$-2AUj4gQ5>ecR0%WC8XH5J$2 D6QY8e0fCxd# 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 A*8l(j diff --git a/phsource/vwl_en_us/er2 b/phsource/vwl_en_us/ei similarity index 55% rename from phsource/vwl_en_us/er2 rename to phsource/vwl_en_us/ei index 96a51339ed2f9b2d05b4719517c1fd94725a7b9b..5292771b3a27c194a287cb962fcc925c6ee6539d 100644 GIT binary patch delta 697 zcmZwFL1+^}7zN-rvzyKAI=hWE5gOAF2*xE8EK)qyifz?a#TubST1!ic3GG2dB%Ts- z@X|&Lv7(^GLoN!6cD+=*^d@4}Lq&416cH(U$w3cV2+r)Lp@_FP13UjWZ)d%8z0*pa z?K^fp)i*=|Ol6;2NtL`P5AjgGTWk!n*ML!=1$vw=phhyG3aOB+Rt58Kw$@3VEb045 zO-FEpY>Pn zUt+I3l~(pY^^z+43uQguZJhSq7rrBO5h+qMXM}G=TL5R%JS==G`VWj6v+h6p##c}> zi-t7avo@7K)B81HMK2opjR* yP7s(Gab~}kM;8N+h_7GjzmPV(w^HZ7ao4onx%1X##b`leE)a{1Q0GJNrt%lm*1W6$ delta 601 zcmca-aL<4*IKb68B-k~OiGhJ3wP+)s77OEv$$>nQsooqP7-n!xVd7zSXPU}zg2_QZ zhG_|7CfiMh2W&U^4lqw)+Qcc%xPjAx?*Zcj#;ZI#847qeaDvz(d~;d2_)oBc*bEFl z90}4BfGiN(%&$UDjS0eLV9-!j+q|8nhnb1x1JFj{Y$k>Ppd%O5ti+}Z(TA%g?kWcGCs7T7JKnW13b2ZjS2^O#OC+cV8$IKVVR=mBE{ zQv};ohEr@3q8FGVm=1Ej2Dt<%{($ir&p`$c-Uk98_DsGP%m|nCx+F*ous~eJz<_W` zuL~#yZVP~1a&LD9#D2C(7vDf#vH%z=(mo{&JJ{wii80$TEn(nbV&IPe`pJ#0o?#0s z1HTNAy^HfJLk{~34v_i(cz!ZW;I;tA!UVno<`O;wXlO7nBuLL--h4r%kD1jTWZUF$ N5%r*GuuW9A0RT0Fsv7_R diff --git a/phsource/vwl_en_us/er b/phsource/vwl_en_us/er index 1a494f8fe0a554fe1d7849d244210371d1c12b59..344d6d070c4a1e44f6d1c86e1ca4262a1cd3f736 100644 GIT binary patch delta 132 zcmca-aL-^v0t=(V=0p~57Dk25xg0=BVsj-ABa1Qv$2=x6W;>=O3>-`h{1HqK7~R=0p~57DkQDxg0=Bb#o;TBa8A5ws}lq%yvvm7&w?1_#>DeFuJkT pGi+gH;FkficX57Y$eBD>K%A+BZ}T>R6U^FC3?NX#K$5;W%m9`IAz=Uj diff --git a/phsource/vwl_en_us/ii b/phsource/vwl_en_us/ii index 2f84047e1a8e1b6b6f8294f0157397fb6aa586e8..1af77b1c8859b36347a3bb55a369c3e9c5faed64 100644 GIT binary patch delta 312 zcmca-aL-_aA4{M+0|-oE$mMEa;$TW+>}8n1$RJV1Si|Vb;m?r6&LH%a@e5-$*KP(4 zE(Sq6rg=kP^ z!*D}vd1rzR**t~g5_4cYiX)O33m8^1nus?89T5rCuL5;MJ=Zq|3#cPJdDp-lp~N4} zh;T%93D6Of=d;LezQVJF*&E@ra)t|x3}Vw6r!&TJcr)x^gZOL$moj4j)X*s2Rd7Sy S_$`}6+NutYLKJ@MrkJ&LHxD@d0Bs*KP(Q zt^^@_rg=-pd*qP3mE1w&X8CD z)E^1d-^i{Z{06AMp6eUKAI=&99iV-Vl z(i=A)7TC=k2(cJuYz|{R+}I=zAGopITy=0`vw2s;jm_iVgk-FM0La+$BK^z&ujW9X delta 256 zcmca-aL+(6IKb68B-k~OiGhJ3vxto$cB7yx3uD9Pa2943&Um086VnuihRw+w%q(0{ zKrRCVkjpi>fJcP)0y~4q1I7o8^<3W=-fW)8^N=|(1t_mjT*9z}Z61>ta~fkg0|yfW ze+1J5#yAddhApfN{4zlH1TJO99QGF+Ak9&{s~9G5TX2HdZu}NZe|QbpL2Qss3DPq* y9~Rin92gDaF~E$?VXTK6o5bM*H@2Ir4sL8V?`pWQdHkD@j1>?78GBx&pBVrS&q7TA diff --git a/phsource/vwl_en_us/oo b/phsource/vwl_en_us/oo new file mode 100644 index 0000000000000000000000000000000000000000..e0496fa124773765a5dbff03e395c02edbb212c7 GIT binary patch literal 1267 zcmds0O-mb56g?RyW|DCdlgU?;7`5>u6!8Wd@7zkcRGh7pX6gX+ejZS< zNZ|fi-v3*6ZK*r8jazP#%(!GvaHt(C$BHPvD2QEot~>&t)FFN9Ih8mXXfdjus>D@& zs)l>CKgOZv@GY6&s)JXv9g2hVIU5gS5=DH(GPbdXT^z6)LpNTb2}z`oK^C3p!+U&1 z1s^brIpRUQVGN-iFA!(M5JD7RXx7srI<{cA};v}FSqHw^{zWY4Z2uM_YPow9h%6Hj0TKe&G3i1$=P4|U4&Bx#;K z%$%cEy_m)fdrQnkD%Z!ZVRTWc6cvpl0+U%(X=am82C0Zn9YS(1D!Bk_p^k_oqm?U0 z#-ze_m{Q@w<@dRBsgFxB^*+Ub@*Ty#xtw+Ga#rSEXFV6i{;luV6x(xzlC?;d*Wo^~ z8kM};W2-L38r9ob%s+u*&FH6B-qB?XSfYzIu*sP$&|x{=ev0><;N2&r6OwdKDz)QZVjh(u5R)muk=8ACkOfsSl$vO11L*q>P?y^1i)C$Mm#5(VJS(C9P<`MwC{UT50V{ zsuMe-toraD(WD;KagE{2sfBAv^>8)iX7(x0JyBYtnrLx)LNU6XM-^5?4OlVG+qr8% z{TfnUy{waC#Vpu|M8fJ#V4I=C_hFRH|S0jT+wso=2T`U8~+&a4l#jb3wJ= z4%~LU*6WnM8Mx`}wn(nA!n7PcykU=cHyT&Hia(e6xxQjAbq_+?XI;qq_5sc6gs$j< zp4UZvtdj2I?YnvNW{9-GB25I{M738(nX^x)Av{3q!sPLA+!{hho&O%i8;;1v;%d88BJd?7mBO zGDq|x#1_cPA+%+2W+680bd-QWj9%|@F9NX;jO>2P#X4*wW`6S};9@%MXVn2#%Q70h zBr8}}LhRPNZ(VmJN}+3IXE=>*Sew41I9_nhm-WSt_k&5>4dn$DpV`>C&etoR*{~PF z>zmp4c65J3CF4GA+#UAqf;X3buguy(;B%bPcoJEny+ zEen^u5S!OCP&=Uqh_Z{Q)6m^bv~A36Kqnb^G`s9GeMMdVwK!FIunLnwA@?7cCi}QI zPqSmcJLa95J6SbDAG>ws`{Ry9DYUlg41M$ahJnf|K4WG(zx4kwvz@=fOxlW>?c`_l zm0n|)TG0oZa18p0KSk`#D5wQ)DHO0v2OxG@FX<`vyL-@HhARW;q#t$I9@G!JRyY|i z%Rbw=jC+gQ$0D4^XdXw?TNkVfXltjly0|;bQ?1t6(@baA|Gw&2ltRDcoKZ7WeUIVw znc3`e;BvsGS+y(&tXkHoi1ISQdRG;eHml``SFM&suUajOUTK?ZIm%u>Pez{O_z}zw zQWfpL&k()s;0ZWbzNGLLsZ1v|#qReAk>#1w%{YXeU{0JfV;pjdGAh=Loly*1Hu0IK?F*%>uM)ps{F|GT0}P0BlJiMyyt zRcca|8qeE?+CD1bNqx?KHcrjFtcQuAj|j57xwVwbLd%vM)pU}%qk5KE_DztXS>6_y vXWtj5kq*Zy>h>@D-tgp#cCuECo}~W+k0eaT literal 0 HcmV?d00001 diff --git a/phsource/vwl_en_us/or b/phsource/vwl_en_us/or index ad9d4617abfbae799bcd5876b1fbb6efce5bdf78..b44141eae9abcf43db4a44a954eab35ab630c456 100644 GIT binary patch delta 138 zcmdlWyg^tnIKb68B-k~OiGhJ3zleh&YNMbxqwy9X4+I=o?>m4Q3_d{01I%2(z`!|$ zX$nXK!$rmiqB2Y}Aok>gOv*y~9KC!G*d8!GU&22D6rX^)tC`T)w3Bg0|0f`9qRx9 delta 170 zcmdlWyg^tnIKb68B-k~OiGhJ3zleh&W}~1tWBLLh4+I=o?>m4Q3_d_A1)utkg8`hWCj3@G$ug+ diff --git a/src/compiledict.cpp b/src/compiledict.cpp index 1280ad5e..04b10786 100755 --- a/src/compiledict.cpp +++ b/src/compiledict.cpp @@ -161,6 +161,7 @@ int compile_line(char *linebuf, char *dict_line, int *hash) int ix; int step; int n_flag_codes = 0; + int flag_offset; int length; int multiple_words = 0; char *multiple_string = NULL; @@ -189,7 +190,17 @@ int compile_line(char *linebuf, char *dict_line, int *hash) if((c == '?') && (step==0)) { + // conditional rule, allow only if the numbered condition is set for the voice + flag_offset = 100; + p++; + if(*p == '!') + { + // allow only if the numbered condition is NOT set + flag_offset = 132; + p++; + } + ix = 0; if(isdigit(*p)) { @@ -201,7 +212,7 @@ int compile_line(char *linebuf, char *dict_line, int *hash) ix = ix*10 + (*p-'0'); p++; } - flag_codes[n_flag_codes++] = ix+100; + flag_codes[n_flag_codes++] = ix + flag_offset; c = *p; } @@ -859,7 +870,17 @@ char *compile_rule(char *input) if(rule_cond[0] != 0) { ix = -1; - ix = atoi(rule_cond); + if(rule_cond[0] == '!') + { + // allow the rule only if the condition number is NOT set for the voice + ix = atoi(&rule_cond[1]) + 32; + } + else + { + // allow the rule only if the condition number is set for the voice + ix = atoi(rule_cond); + } + if((ix > 0) && (ix < 255)) { output[len++] = RULE_CONDITION; diff --git a/src/dictionary.cpp b/src/dictionary.cpp index 9df5a20b..d6ede2a2 100755 --- a/src/dictionary.cpp +++ b/src/dictionary.cpp @@ -666,7 +666,7 @@ int Translator::IsVowel(int letter) void SetLetterVowel(Translator *tr, int c) {//======================================= - tr->letter_bits[c] = 0x81; // group 0 only + tr->letter_bits[c] = (tr->letter_bits[c] & 0x40) | 0x81; // keep value for group 6 (front vowels e,i,y) } void ResetLetterBits(Translator *tr, int groups) @@ -1773,9 +1773,21 @@ void Translator::MatchRule(char *word[], const char *group, char *rule, MatchRec case RULE_CONDITION: /* conditional rule, next byte gives condition number */ condition_num = *rule++; - if((dict_condition & (1L << condition_num))==0) - failed = 1; + + if(condition_num >= 32) + { + // allow the rule only if the condition number is NOT set + if((dict_condition & (1L << (condition_num-32))) != 0) + failed = 1; + } else + { + // allow the rule only if the condition number is set + if((dict_condition & (1L << condition_num)) == 0) + failed = 1; + } + + if(!failed) match.points++; // add one point for a matched conditional rule break; } @@ -2677,8 +2689,18 @@ int Translator::LookupDict2(char *word, char *word2, char *phonetic, unsigned in if(flag >= 100) { // conditional rule - if((dict_condition & (1 << (flag-100))) == 0) - condition_failed = 1; + if(flag >= 132) + { + // fail if this condition is set + if((dict_condition & (1 << (flag-132))) != 0) + condition_failed = 1; + } + else + { + // allow only if this condition is set + if((dict_condition & (1 << (flag-100))) == 0) + condition_failed = 1; + } } else if(flag > 64) diff --git a/src/setlengths.cpp b/src/setlengths.cpp index 110d662f..11520fb8 100755 --- a/src/setlengths.cpp +++ b/src/setlengths.cpp @@ -389,7 +389,7 @@ void Translator::CalcLengths() if(p->type == phLIQUID) { p->length = speed1; -p->pitch1 = p->pitch2 - 20; // post vocalic [r/] +//p->pitch1 = p->pitch2 - 20; // post vocalic [r/] } if(next->type == phVSTOP) diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 57015613..0aa7e0d4 100755 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.27.09 12.Jul.07"; +const char *version_string = "1.27.10 15.Jul.07"; const int version_phdata = 0x012701; int option_device_number = -1; diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index 889853dc..7ffbf8e7 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -317,8 +317,7 @@ Translator *SelectTranslator(const char *name) case L('h','u'): // Hungarian { static int stress_amps_hu[8] = {17,17, 19,19, 20,24, 24,22 }; - static int stress_lengths_hu[8] = {185,190, 190,190, 0,0, 210,220}; -// static int stress_lengths_hu[8] = {180,180, 200,190, 0,0, 210,225}; + static int stress_lengths_hu[8] = {185,195, 195,190, 0,0, 210,220}; static const unsigned int replace_chars_hu[] = {0xd4,0xf4,0xdb,0xfb,0}; static const unsigned int replacement_chars_hu[] = {0x150,0x151,0x170,0x171,0}; // allow o,u-circumflex for o,u-double-acute diff --git a/src/translate.cpp b/src/translate.cpp index 728a5f1e..35313ebc 100755 --- a/src/translate.cpp +++ b/src/translate.cpp @@ -713,6 +713,7 @@ if((wmark > 0) && (wmark < 8)) length = 999; while(((length < 3) && (length > 0))|| (word_length > 1 && Unpronouncable(word))) { + char *p; // This word looks "unpronouncable", so speak letters individually until we // find a remainder that we can pronounce. word += TranslateLetter(word,phonemes,0); @@ -722,13 +723,15 @@ if((wmark > 0) && (wmark < 8)) strcpy(word_phonemes,phonemes); return(0); } - if(memcmp(word,"'s ",3) == 0) + + p = &word[word_length-3]; + if(memcmp(p,"'s ",3) == 0) { // remove a 's suffix and pronounce this separately (not as an individual letter) add_plural_suffix = 1; - word[0] = ' '; - word[1] = ' '; - break; + p[0] = ' '; + p[1] = ' '; + last_char = p[-1]; } length=0; @@ -1903,7 +1906,8 @@ if((c == '/') && (langopts.testing & 2) && isdigit(next_in) && IsAlpha(prev_out) { if(!IsAlpha(prev_out) || (langopts.ideographs && (c >= 0x3000))) { - letter_count = 0; + if(prev_out != '\'') + letter_count = 0; // don't reset count for an apostrophy within a word if((prev_out != ' ') && (prev_out != '\'')) {