Browse Source

[1.40.07]

*_list files. Ad feature for ordinal numbers (for some languages).
*_list files. Allow hyphenated word groups to start with a number.
*_list files. Allow "words" of symbols to contain brackets (move check for bracket characters to after the *_list lookup).
--punct option. Fix some unnecessary pauses when speaking punctuation names.


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@215 d46cf337-b52f-0410-862d-fd96e6ae7743
master
jonsd 16 years ago
parent
commit
0d3e23ef39

+ 88
- 9
dictsource/af_list View File

@@ -105,6 +105,55 @@ _stk str'e@p
_tld t'Ild@

// symbols
_' tik
_" hA:l_|A:n
_- kOp@lte@k@n
__ leIn
_? frA:x2te@k@n
_: dWb@lpWnt
_; kOmapWnt
_, kOma
_| afstre@p
_( lINshaki
_) r&x2shaki
_[ lINs||blOkhaki
_] r&x2s||blOkhaki
_{ lINs||krWlhaki
_} r&x2s||krWlhaki
_< kleIn@r_|as
_> x2ro@t@r_|as

= _x2@l'eIk_ $max3
* st&r $max3
+ pl'Ws $max3
. pWnt $max3
~ tIld@ $max3
% p@rs'Ent $max3
# nOm@r $max3
& _|amp&rsant
£ pO:nt
€ Y@ru
/ stre@p $max3
@ beI_:
\ trystre@p

¥ jEn
§ afde@l@N
¶ parax2rA:f
¶¶ parax2rA:v@
¤ mWnte@k@n
© kup'ir&x2
° x2rA:d@
− minWs
± plWs_OfminWs
µ mikru
× mA:l
÷ x2@de@ldY@r
♯ krYys
♭ mOl
¼ @kwart
½ @halv@
¾ drikwart
⅓ d&:rd@
⅔ tw,e@d'&:rd@s

@@ -146,7 +195,16 @@ _0and _!En
_dpt 'pWnt
_roman rum'eIns@


// ordinal numbers
_ord d@ // default suffix
_ord20 st@ // for 20,30,etc
_1o _'e@rst@
_2o tw'e@d@
_3o d'&:rd@
_7o s'e@v@nd@
_8o _'ax2st@
_9o ne@x2@nd@
_0Co h'On@rtst@



@@ -158,7 +216,6 @@ algerië alx2'e@re@:@-
antwerpen antv&rp@n
babilon babilOn
bangladesj baNglad'ES
bastille bast'il
bellevue b&lvju:
bermuda $2
bethlehem bEt_liEm
@@ -166,6 +223,7 @@ boedapest budapEst
boekarest bukarEst
bolivië bul'Ivi:@
bonnievale _^_EN
bordeaux bOrd'@U
brittanje $2
brooklyn _^_EN
burundi bur'undi
@@ -174,6 +232,7 @@ carolina karul'ina
ceres se@r@s
cesaréa s@s@ri:ja
ceylon s@lOn
chicago _^_EN
china S'ina
clanwilliam kl&:nw'ili@m
colenso kul'E:ns@U
@@ -215,6 +274,7 @@ kuruman kuruman
kwa kwa $u $only // KwaZulu, etc.
lesotho l@sutu
limpopo l@mpo@po@
(los angeles) lOs_'andZ@li:z
macedonië mas@d'o@ni@
madagaskar madax2'askar
majuba maj'uba
@@ -240,6 +300,8 @@ robertson _^_EN
sahara sah'A:ra
secunda s@kunda
senekal se@n@kal
seychelle seIS'&l@
seychelles seIS'&lz
singapoer siNgapur
soshanguve sOSaNg'u:vE
soweto suw'E:tu
@@ -276,10 +338,12 @@ André 'andreI
annette an'Et
antoinette antun'Et
barbara bA:b@ra
bea bi:ja
benjamin bEndZ@m@n
bennett bEn@t
bester b'Est@r
beyers beI@rs
blignault blIx2n@Ut
blomerus blum'e@rWs
botha bo@ta
bouwer b@U@r
@@ -289,7 +353,9 @@ breytenbach breIt@nbax2
brouwer bruw'&:r
caesar siz@r
carl kA:r@L
casanova kasan'o@va
cecil sEs@l
cecile s@si:l
cecilia s@si:lia
charl SA:l
charles _^_EN
@@ -300,6 +366,7 @@ conradie $2
chris krIs
christo krIstu
christoffel kr@stOf@l
christiaan krIstiA:n
christian krIstian
christelle kr@st&l
christina kr@stina
@@ -313,7 +380,7 @@ david _^_EN
(da vinci) da||v'intSi
debora d@bo@ra
debussy d@bus'i:
de d@
de d@ $only
(de la) d@||la $u // de la Rey/de la Bat, etc.
der d@r
derick dErik
@@ -388,7 +455,7 @@ labuschagne labWsk'ax2ni
langenhoven laN@nho@f@n
lasarus lA:s@r%Ws
lategan lA:t@x2an
le l@
le l@ $only
leandra li'andra
leonardo liu:n'ardu
levi le@fi
@@ -400,6 +467,7 @@ mbeki mbE:ki
magdalena $3
malan mal'an
malherbe mal'&rb@
marelie mar@li
margaret _^_EN
margaretha marx2ar'e@ta
marguerite mA:g@r'i:t
@@ -416,6 +484,7 @@ mefistofeles mEfist'o@f@l@s
melanie m@lA:ni
meraai m@rAI
messias m@sijas
metusalem m@t'ysalEm
michael _^_EN
michelle miS'&l
michiel $2
@@ -439,6 +508,7 @@ pierre p'e@r
petronella pe@trun'&la
petrus pe@trWs
phoebe fi:bi
picasso pik'asu
quixote kix2'OtE
rachmaninoff rax2m'aninOf
rademeyer rA:d@meI@r
@@ -466,6 +536,7 @@ schutte skWt@
sebastian s@bastian
servaas s@rfA:s
shakespeare _^_EN
sigmund sigmunt
sophia suf'i:ja
sophie _^_EN
stephan ste@fan
@@ -503,7 +574,8 @@ schalkwyk skalkveIk
schreiner SraIn@r
tony t@Uni
trichardt trix2A:rt

vivaldi viv'aldi
viviers v@v@je@
khumalo kum'A:lu
zuma zu:ma

@@ -513,10 +585,13 @@ boeing _^_EN
centaurus $2
checkers tSEk@rs
chrysler kraIsl@r
citroên s@trun
ferrari f@rA:ri
martini mart'i:ni
naspers nasp&rs
toyota $2
venda vEnda
volvo vOlvu
wimpy wImpi

// article
@@ -634,7 +709,7 @@ my $u $verbf
jou $u $only $verbf
hom $u $verbf
haar $u $only $verbf
se Es@ $capital
se Es@ $capital $only

dis $u

@@ -702,13 +777,14 @@ camembert kam@mb'&:r
camouflage kamufl'A:Z
capita kapita
casino kas'i:n@U
cedille s@dIl@
charisma kar'Isma
chemikalieë $3
crescendo kr@SEndu

dadelik dA:d@lIk
darem dar@m
dekade dEk'A:d@
dekreling dEkre@l@N
deurentyd dy@r@nteIt
deurgaans $1
deurkruis $2
@@ -724,6 +800,7 @@ dusver dWsf&r
eenkeer $1
efesiër if'e@si@r
effense Ef@ns@
eks Eks
ekself %&ks'&lf
elders &ld@rs
elite il'i:t
@@ -802,10 +879,12 @@ jawoord jA:vo@rt
jupiter jupit@r

kafee kaf'e@
kameraderie kam@rA:d@r'i
katswink katsv@nk
kaviaar kavi'A:r
klaasvakie $2
knapsekêrel knaps@k&:r@l
kolossense kOl@s'e~ns@
komaan kOmA:n
konkawe kOnk'A:v@
konte $1
@@ -861,7 +940,6 @@ negering n@x2e@r@N
netjies nE:icis
netjiese nEicis@
netsowel nEtso@v&l
neurone nY@r'o@n@
nikswerd nIksv&:rt
nimmermeer $1
nirvana n@rvA:na
@@ -976,6 +1054,7 @@ stilswye $1
suburbia sWb'Wrbija

tanga taNga
tango taNx2u
tenminste $2
terdeë $2
terug t@-rWx2
@@ -1023,7 +1102,7 @@ volte $1
voluit fOl_Yyt
voorgee fo@rx2e@
voorkeer $1
voorkom $2
voorkom $2 $only
voormalige fo@rm'A:l@x2@
//voorsien $2
voorwaar $2

+ 88
- 68
dictsource/af_rules View File

@@ -1,4 +1,4 @@
//maintainer: Willem van der Walt
//maintainer: Willem van der Walt
// email: [email protected]
// tel: +27 12 8413996
// Meraka Institute, CSIR
@@ -24,6 +24,7 @@
&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
&r) a (_ %a // short final a in words ending in -ra: infra/mantra/sentra, etc.
Cbr) a (_ A: // long a: blommetjies-/kantbra
&dr) a (_ A: // exceptwrds ending in -dra: ingedra/oorgedra, etc.
_) a (lA %a //short unstressed a for words starting with Al
i) a (tieC %a //words containing iatief/w short unstressed a
@@ -61,6 +62,7 @@
ara (bi %arA: // fix 1st a sound and stress: Arabië/Arabies/-e
ara (bier %ar%a // Stress and a sounds: Arabier/-e
C) are (CA A:r@ // e sound: amptenaredom/blaredak/garebiltong/haredos/jarelange
K) ar (puis %ar // fix stress: (h)arpuis and compounds
Cel) ary ar'eI // move default stress: bedelary/bottelary/dobbelary/huigelary/smokkelary...
@@@smokkel) ary %ar%eI // default stress: diamant-/drank-/dwelm-/goud-/kokaïensmokkelary, etc.
amarula %am%arul%a // fix stress and a sounds: amarula and compounds
@@ -70,6 +72,7 @@
arm (last %ar@-m // move default stress: armlastig/-e
C) asie 'A:si
@@@@) asie A:s%i
C%C) asie A:si // restore default stress: bok-/dikmelkkasie and similar
oub) asie A:si // restore default stress: oubasie/-s
@form) asie A:si // restore default stress to compounds ending in -formasie: graniet-/grond-/rotsformasie, etc.
pl) asie A:s%i // restore default stress: gemeenplasies/gemeenskapsplasies and similar
@@ -86,7 +89,7 @@
a (Cie A: // apies/middagslapie
a (Cy %a
a (CA A:
_) aka %ak@ //akademie etc.
aka (de@ %ak@ // (sport-/leierskaps)akademie/akademies/akadeem/akademe
akkedi %ak@dI //akkedis and compounds
akkommo (d %ak%Om@ // fix stress and vowel sounds: akkommodasie/akkommodeer/-derend
a (kkoord %a // move default stress: akkoord/-e and compounds
@@ -358,6 +361,7 @@
angleer aNle@r // hangleer/slangleer and compounds
angola A~Nx2'o@la //Angola, Angolabos etc.
angol (e %A~Nx2%ul //Angolese etc.
angora %aNgO:r%a // angora(trui-/wol, etc.)
_) ann (a@ %an // move default stress: annaal/annale
g) an (_ _^_EN //if it ends in gan it is English
C) anette (_ %anEt // Janette/Sanette
@@ -407,13 +411,14 @@
@) ba (ren b'A: // onrusbarend/opsienbarend and derivatives
ba (retK b%a // move default stress and shorten a sound: baret/-te
ba (riton ba // shorten a sound: bariton and compounds
ba (rok b%a // fix stress and a sound: barok and compounds
barok bar''Ok_ // fix stress and a sound: barok/-instrumente/-agtig
baro (meter bar%u // fix a and o sounds: barometer and compounds
ba (ron b%a // fix stress and a sound: baron/-ne and compounds
_) ba (sa b%a fix stress and 1st a sound: basalt and compounds
ba (sili b%a // fix stress and 1st a sound: basilie/-kruit, etc.
ba (sieli b%a // fix stress and 1st a sound: basielie/-kruit, etc.
basotho b%asut%u // fix stress and vowel sounds: Basotho/-0ponie and similar
basi (s bA:s@ // basis and compounds
bastille b%asti:l // Bastille and compounds like Bastilledag
batal (jon b%at%al // shorten 1st a sound, moved stress: bataljon and compounds
ba (tik b%a // fix stress and a sound: batik/-doek/-kuns/-werk
bbe (rr b@ // fix e sound: rubberrand/-ranke/-ring/-roller, etc.
@@ -444,6 +449,7 @@

baba bA:ba
baba (tjie bA:baI // fix 2nd a sound: babatjie/-s
_) bad (A bat_ // shorten a sound, pause: bad-/afloop/artikel/olie/oord/uitloop
baklei b@kl'eI // baklei/er
_) bak (o bak_ // fix a sound and stress: bakoor/bakore
balaklava b%al%aklA:v%a // fix stress, a and v sounds: balaklava and compounds
@@ -465,6 +471,7 @@
bara (k bar'a
bar (bA b%ar // barbaar/barbare and derivatives/barbier and compounds
bastion bastiOn // -tion not English: bastion/-s and compounds
_) bate b''A:t@ // fix stress and e sound: batefinansiering/-portefeulje and many others
batte (ry b%at@ // move default stress: battery/-e and compounds: batterysuur...

bibli (oC b@bl%i:% // biblioteek and compounds/biblioteke/bibliofiel/bibliografie...
@@ -516,6 +523,8 @@
bul (ga b%ul // fix stress and u sound: Bulgaarse/Bulgare
bulle (tin b%ul@ // fix stress and u sound: bulletin and compounds
bur (lesk b%Wr // move default stress: burlesk/-e
buro b%yro@ // fix stress and o sound: burohoof and similar
bur (okra b%yr // fix stress for burokraat/-krate/-krasie/-kraties
bybel beIb@l // to correct pronunc. of e in compounds
byder (C@ b%eId@r // byderhand/-s/byderwets
by (een b%eI_ // move default stress: byeen/byeenkoms/-te, etc.
@@ -555,6 +564,7 @@
bed (k bEt // bedkassie/bedkaartjie/bedkatel/bedkussing
bed (l bEt // bedlamp/bedliggie/dubbelbedlaken
bed (m bEt // bedmaats/bedmatjie, etc.
bed (p bEt // fix e sound: bedpan/-ne/-poot, etc.
bed (rand bEt // fix e and first d sounds
bed (s bEt // bedsitkamer/bedsprei/gebedsdag
bed (t bE // fix e and d sounds: bedtafeltjie/bedtyd
@@ -601,6 +611,7 @@
bering b'e@r@N // ontbering/inhibering/inkubering
o) bering b@r@N // versobering
C) bering b@r@N // verorbering/versombering
ont) bering be@r@N // fix e sound in compounds like slaapontbering
skrob) bering b'e@r@N // skrobbering

beu (C bY@ // beur/beuke/beul
@@ -614,6 +625,7 @@
besem be@s@m
besering =b@se@r@N // besering/s/kniebesering...
bete (_ be@t@ // fix stress and e sound: (af)gebete/diabete
dia) betes (@ be@t@s // fix stress and e sound: diabetisleier/-middel, etc.
beter b'e@t@r
beties be@tis // fix e sounds: diabeties/-e
betlehe (m bEtl%i%E // fix stress and vowel sounds: Betlehem/-mer
@@ -635,6 +647,7 @@
cha (risma k%a // fix stress and ch and 1st a sounds: charismaties/-e
chau (C S%@U // chauffeer/chauffeur/-s/chauvinis/-me/-ties
cheddar tSEd@r // fix ch and a sounds: cheddar(kaas)
chemika (li x2%e@m%ikA: // for compounds of chemikalieë
cholera ko@l@ra_ // fix e sound: cholera/-epidemie and similarcompounds
cholesterol k%OlEst@-r%Ol // cholesterol and many compounds
ch (l k // chloor and compounds
@@ -663,6 +676,7 @@
daaren (te d%A:r@n // fix stress and e sound: daarenteen/daarenteë
daarop (v d%A:r%Op // move default stress: daaropvolgend/-e
aan) dag (tig d'ax2 // accent on dag
A) d (agtig t_ // fix d sound in words like oerwoudagtig and similar
daniël dA:ni@l // fix stress: Daniël(skuil)
dani (gh d'A:n@ // -hoedanigheid/hoedanighede/onderdanigheid
@) dant d'ant // dant takes stress: kommandant/pruimedant
@@ -675,6 +689,9 @@
_) de (klass de@ // deklassifikasie/gedeklassifiseer
de (klinA d%E // fix 1st e sound: deklinasie/deklineer/-nering and compounds
de (krimina d%e@ // fix e sound: (ge)dekriminaliseer/dekriminalisering, etc.
kun) dele (K d@lE // fix e sounds: Aardryks-/wiskundeles/-se, etc.
onder) dele (@ de@l@_ // fix e sound: onderdelebedryf/-pakhuis, etc.
voor) dele (@ de@l@_ // fix e sound: voordelefonds and similar
_) dele (gA d@l@ // fix stress and e sounds: delegeer/delegasie
@) de (ment d@ // fix e sound: amendement/bombardement/rendement
de (moCr d%E // demokraat/demokrasie/-ë/demokraties/demografie
@@ -844,6 +861,7 @@
@) d (t // drop d: breedte/handtekening/rondte/rondtrek...
du (et d%u:w // fix stress and -ue-sound: (klavier)duet/-te, etc.
@n) d (uit t_ // fix d sound and insert short break: enduit/handuit and similar
dwelm (_ dw&l@-m // fix d and e sounds in compounds like wonderdwelm
@) dwes tv'Es // noordwes/te/lik/e suidwes/te/lik/e
@) dwese tve@s@ // leedwese/vakbondwese
@) dwillig tv'Il@x2 // d sound and stress: kwaadwillig/bereidwillig
@@ -863,6 +881,7 @@
narkos) e (C @ // fix e sound: narkosedood/-gas/-masker/-middel/-rekords, etc.
ooi) e (C @ // fix e sound: dooiepunt/ooievaar and similar
trol) e (C@ @ // fix e sound in compounds: kontrolebank/-doeleindes/-kamer/-lys/-maatreël/-rekening...
voorrad) e (C @ // fix e sound: voorradedepot/-konvooi and similar
@C) e (aCC @_ // fix e sound: doodseise-/manne-/ongevalle-/troepeafdeling/slakkeafval/handearbeid
C) e (marie @ //anemarie, lisemarie etc.
n) eke (_ @k@ //anneke Heineke etc.
@@ -903,6 +922,7 @@
Cien) e (rC@ @ // fix e sound: opsienersamp/tienerstatus and many similar compounds
@) erts (_ _&rts // fix e sound of many compounds ending in erts
@p) e (rtjie @ // fix e sound: helpertjies/wegkruipertjie
C) e (maat @ // fix e sound: onderdele-/platemaatskappy and similar
@C) e (male_ @ // fix e sound: enemale/telkemale
C) e (man @ // e sound: briewemandjie/derdemannetjie/dowemansdeur/semantiek/semanties/Weideman
C) e (mm++ E // geelkoperemmer/wateremmer
@@ -975,6 +995,7 @@
@C) eps (+ Eps // fix e sound: biseps/triseps and similar
Celm) e (tK @ // fix e sound: helmet/pelmet and compounds
@C) e (taal @ // fix e sound: ape-/burokrate-/diewe-/engele-/gode-/leke-/siele-/skoliere-/tweetaal...
Cd) e (tr @ // fix e sound: teveldetrekking/vreugdetraan/voogdetrust/waardetrust
@k) e (tt@+ E // menseketting/etikette
sp) e (lonk @ // spelonk/rowerspelonk/spelonkagtig etc.
_k) e (ndh =E // but bekendheid/onbekendheid
@@ -1013,6 +1034,7 @@
e (klipK %e@ // fix stress and e sound: eklips/eklipties
e (kono@ %E // 1st e: ekonome/ekonomie/ekonomies/ekonoom
&) ekon (o@ _%Ek%un // fix stress and vowel sounds in compounds like: groepekonoom/handelsekonome
eksamin (A %Eks%am%in // fix stress and vowel sounds: eksaminator/eksaminering(sproses)
eksege (CA %Eks@x2e@ // fix stress and e sounds: eksegese/eksegeties/-e
ekse (llenC %Eks@ // fix 2nd e sound: eksellensie/-s/eksellent/-e
ekspli (siet %Ekspl@ // fix stress and i sound: eksplisiet/-e
@@ -1225,6 +1247,7 @@
werp) e (rsA @ // fix e sound: ontwerpersolie/-sonbril/-uitrusting
lew) e (ns @
&d) e (r@+ @ // not initial or final syllable
skuld) erke _&rkE // fix e sound: skulderkentennis/-erkenning
@C) e (reë @ // fix e sound: geelperskereën/tropereën, etc.
@d) e (rnst+ & // but fix e sound in doodernstig/-e
&t) e (r@ @
@@ -1393,6 +1416,7 @@
fakul (teit f%ak%Wl // fix stress and a sound: fakulteit/-e and many compounds
fa (lanks fa // shorten 1st a: falanks/-e
fami (liA f%ami // fix stress and a sound: familie and compounds/familiêr/-e
fa (nati f%a // fix stress and a sound: fanaties/-e
fan (fare f%an // move default stress: fanfare/-s
fanta (sA f%ant%a // fantaseer/fantasie
fari (seër f%ar%i // fix stress and a sound: Fariseër/-s
@@ -1444,7 +1468,9 @@
fos (fa f%Os // move default stress: fosfaat/fosfate
fo (ssiel f%O // move default stress: fossiel/-e and compounds
foto fo@tu
fotoge (nie f%o@t%ux2e@ // fix stress and e sound: fotogenies/-e
fo (togra fo@ // move default stress: fotograaf and similar
fra (giel fr%a // fix stress and a sound: fragiel/-e
_) fran (CisCA fr%an // fix stress and a sound: Fransiskus/Franciscus/Francisca
fre (kwen fr%i // fix stress and 1st e sound: frekwensie/-s and compounds
freud frOId // Freud/Freudiaans/-e
@@ -1573,6 +1599,7 @@
ge (kk x2&
ge (kh x2&
ge (kt x2& // fix e sound: gektalery
gekw (ord x2&kv // fix stress, e and w sounds: gekwordens/gekwording
genade x2@nA:d@ // correct 2nd e in compounds: genadedood, etc.
genad (etjie x2@nA:d // correct 2nd e in genadetjie
_) ge (rC x2& // gerf/gerwe/gert/gerber
@@ -1641,6 +1668,7 @@
@C) hal (sA h'al // reikhalsend/waaghalsig
hal (sstar h%al // move default stress:
hal (ve@ h%al // move default stress: halveer/halvering/gehalveerde, etc.
hamer hA:m@r // fix e sound: hameragtig/hamerend/-e
hand (o hant? // fix d sound: handopsteek/handoplegging
_) hane (C hA:n@ // hanekam/hanekraai/hanepoot/hanetree
haper hA:p@r // fix e sound: haperend/hapering/-e
@@ -1710,6 +1738,7 @@
he (g h&
heid (_S4 heIt
herinner h&r'In@r // herinner/-ing/-e|s
hetero (@@P6 h%Et@-r%u // fix stress and vowel sounds: many compounds: heteroseksueel/-ele/-aliteit, etc.
hia (sint h%ij%a // fix stress: hiasint/-e and compounds
_) hi (bis h%i // move default stress: hibiskus/-se and compounds
higië (nA h%ix2%ie@
@@ -1805,6 +1834,7 @@
indwing Indw@N // fix d sound: indwing/-ing
in (een @n // ineengedoke/ineengekrimp/ineenstorting and many similar
_) in (ent ''In_ // fix stress, i sound, pause: inent/-ing
infan (ti @nf%an // fix stress: infantiel/-e
in (fek @n // move default stress: infeksie/-s and compounds
infor (ma @nf%Or // move default stress: informant/-e/informasie
in (formeP2 'In // fix e sound: informele
@@ -2041,6 +2071,7 @@
kieser (@ kis@r // fix e sound: kiesertal/-weerstand/kieserskorps/-lys/-opkoms...
kikoe (joe k%iku: // fix stress, lengthen oe: kikoejoe and compounds
kilimandjaro k%il@m%andZA:ru // fix stress and vowel and "dj" sounds: kilimandjaro and compounds
_) kilo kil%u // fix o sound in compounds: kilogram/-liter/-meter
kker (A k@r // swakkerig/blikkerig/flikkerend/flikkering
klaarblyklik klA:rbl'eIkl@k // klaarblyklik/e
klande (sti kl%and@ // move default stress: klandestien/-e
@@ -2084,6 +2115,7 @@
kre (diet kr@ // move default stress: krediet/-kaart/-balans, etc.
kre (dit kr%E // fix e sound: krediteer/akkreditasie
kreme (tart kr@m@ // fix stress and e sounds: kremetart and compounds
_) kre (o kr%i // fix stress and e sound: Kreool/Kreole/Kreoolse
_) kre (pe@ kr@ // fix stress and 1ste sound: krepeer/-krepering
krimi (nA kr@m@' // krimineel/kriminele/diskrimineer
kri (oel kr%i // move default stress: krioel and derivatives
@@ -2110,9 +2142,11 @@
_) kwar (tA kw%ar // move default stress: kwartaal/kwartier
kwart (eeu kwart_ // stress and short break: kwarteeu(-fees/-viering...)
kwartel kwart@l_ // restore default stress: kwartel/-eier/-s and similar
kwarte (t kw%artE // fix stress and e sound: (stryk)kwartet/-te
kwa (tryn kw%a // move default stress: kwatryn/-e/kwatrynvorm
kwela kwE:la // fix vowel sounds: kwela/-dans, etc.
_) kwik (A kwIk_ // fix i sound: kwikinhoud/-oksied
kwinte (t kw@ntE // fix stress and e sound: (stryk)kwintet/-te
kwi (tans kw@ // move default stress: kwitansie and compounds


@@ -2123,11 +2157,12 @@
kabel kA:b@l //stress and e sound
kabeljou kab@lj'@U //kabeljou and compounds

kabinet k%ab%inEt // kabinet/drankkabinet/kabinetsvergadering
kabine (t k%ab%inE // kabinet/drankkabinet/-te/kabinetsvergadering
_) ka (d@ k%a // stress and 1st a: kadawer-/kadet-/kado/kadot(jie)/kadriel,etc.
ka (der kA: // restore stress on long a: kader/-s and compounds
kad (mium kad // fix stress and d sound: kadmium and compounds
kafe (te k%af@ // fix stress and vowel sounds: kafeteria and compounds
kafe (ï k%af%i // fix stress and vowel sounds: kafeïene and compounds
ka (jak k%a // fix stress and 1st a sound: kajak/-ke/-vaarder
kake (C kA:k@ // kakebeen/skakelaar/skakelbord/skakelfunksie
kalahari kalah'A:ri // stress: Kalahari/-sand/-woestyn
@@ -2142,6 +2177,7 @@
ka (mas k%a // fix stress and 1st a sound: kamas/-te and compounds
kamer kA:m@r // compounds: kamerindeling/kamerorkes, etc.
kamera kam@ra
kamer (atjie kam@r // fix a sound: kameratjie and compounds
kamerade k%am@rA:d@ // stress: kamerade/skeepskamerade
kameraa kam@r'A:
kamer (C kA:m@r // kamerdeur/eetkamermat/sitkamervenster
@@ -2164,7 +2200,7 @@
kape (la@ k%ap@ // fix e sound: kapelaan/kapelane and compounds
kaper (jol k%ap@r // fix stress and a sound: kaperjolle and compounds
kapi (ta k%ap%i // fix stress and 1st a sound: kapitaal and compounds/kapitalis/-me/-ties
_) ka (poC k%a // move default stress and shorten a: kapok and compounds/kapot
_) kapo (C k%apO // move default stress and shorten a: kapok and compounds/kapot
kap (tein k%ap // kaptein/kapteinskap/skeepskaptein
kapsule k%apsyl@ // stress and e sound: kapsule/-fabriek/-vorm, etc.
kara (byn k%ar%a // fix stress and a sounds: karabyn/-e and compounds
@@ -2175,6 +2211,7 @@
kar (does k%ar // move default stress: kardoes and compounds
karme (naadj k%arm@ // fix stress and e sound: karmenaadjie and compounds
karmosyn k%arm%useIn // fix stress and o sound: karmosyn and compounds
karna (val k%arn%a // fix stress and 2nd a sound: karnaval and compounds
kar (nuffel k%ar // move default stress: (ge)karnuffel/-de
kara (koel k%ar%a // fix stress and a sounds: karakoel and compounds
kara (va k%ar@ // move default stress: karavaan/karavane
@@ -2273,7 +2310,7 @@
konnek k%unEk // fix stress and vowel sounds: konneksie/-s and compounds
konkel kONk@l // restore default stress and fix [N] sound: konkelaar/konkelwerk, etc.
konsen (tr k%Ons@n // fix stress and e sound: konsentreer/konsentrerend/konsentrasie
konsen (trie k%OnsEn // fix stress and e sound: konsentries/-e
konsen (trie k%Ons''En // fix stress and e sound: konsentries/-e
konsertina k%Ons@rtin%a // fix stress and vowel sounds: konsertina/-musiek and similar
konside (rA k%Ons@d@ // fix vowel sounds: konsiderasie/konsidereer
konsist k%Ons@st // konsistorie and compounds/konsistensie
@@ -2300,7 +2337,9 @@
kosme (tiek k%Osm@ // move default stress: kosmetiek and compounds
kos (met k%Os // move default stress: kosmeties/-e
koste kOst@ // fix e sound in compounds: kostemodel/-ontleding/laekostelugdiens
kos (term kOs // fix e sound: kosterm/-e
kos (tu k%Os // move default stress: kostuum and compounds
kouka (sië k%ukA: // fix stress and vowel sounds: Koukasiër/-s
kou (sa@ k%@U // move default stress: kousaal/-ale
koö k%o@O // koördinasie/koöpsie, etc.

@@ -2419,6 +2458,7 @@
m m
m (m
@) marie (_ m%ar'i //names ending in marie fix a and stress.
mari (tiem m%ar@ // fix stress and vowel sounds: maritiem/-e
macedo (nA m%as@do@ // fix stress and vowel sounds: Macedonië/Macedóniër/-s
machiave m%ak%i%avE // fix stress, vowel and v sounds: Machiavelliaans/-e
made (lie m%A:d@ // fix stress and e sound: madeliefie/-s/watermadeliefies
@@ -2431,6 +2471,7 @@
ma (griet m%a // move default stress: Magriet/-e/-jie
ma (hA m%a // mahoniehout/-lessenaar and similar/mahala
majesteitli m%A:j@steItl@ // move default stress: majesteitlik/-e/-heid
majestu m%A:j@st%y // fix stress: majestueus/-e
makaber m%akA:b@r // fix stress and vowel sounds: makaber/-e/-heid
maka (paan m%ak%a // fix stress and a sounds: Makapaan/-s/-grot and compounds
@) makie (sie mak'i // fix a sound and stress: bol(le)makiesie/-slanery
@@ -2460,9 +2501,9 @@
manu (sk ,many
_) ma (rA m%a // short, unstressed a: Marietjie/Marina/Marinda/Marita/Maree/marog
marat (on mar%at // fix stress and a sounds: maraton and compounds
marath (on mar%at // fix stress, a sound, drop h: marathon and compounds
marathon mar%at%On_ // fix stress, a sound, drop h: marathon and compounds: marathonatleet, etc.
marga (ri m%arx2%a // fix stress and a sound: margarien and compounds
marine m%arin@ // marine and compounds
marine (K m%arin@ // marine and compounds
mario (net m%ar%i%u // fix stress and vowel sounds: marionet/-te and compounds
ma (ritz m%a' // fix stress: Maritz/Pietermaritsburg
marmelade m%arm@lA:d@ // fix stress and e sounds: marmelade and compounds
@@ -2588,6 +2629,7 @@
mede (plig m%e@d@ // move stress: medepligtige
media mi:dia // compounds of media
medisi (na@ m%Ed@s%i // fix stress and vowel sounds: medisinaal/-nale
medi (tA m%Ed%i // fix e sound: mediteer/meditering/meditasie
medite (rre m%Ed%it@ // fix stress and vowel sounds: mediterreens/-e
me (dium mi: // fix e sound
_) me (duC m@ // fix stress and e sound: medulla/medusa
@@ -2623,6 +2665,7 @@
_) melodi (eu m%El%ud%i //melodieus
_) melodie mElud'i
_) melo (dr m'Elu //melodrama etc.
memora (bili m%Em%Or%a // fix vowel sounds and stress: (sport)memorabilia and similar
_) metel me@t@l // vermetel/-e/-es/-heid...
ment m'Ent
mental (iteit m,Ental // fix stress: mentaliteit/sentimentaliteit and compounds
@@ -2633,6 +2676,7 @@
me (rrie mE // fix e sound: merrie/-s/perdemerrie and similar compounds
AAs) mes (_ mEs // fix last e sound in compounds like kombuismes
Cs) mes (_ mEs // fix last e sound in compounds like slagtersmes
tafel) mes (_ mEs // fix final e sound: tafelmes
_) mes (aan mEs_ // fix e sound, pause: mesaanval/-ler
metaa (C m@tA: // fix stress and e sound: metaal/metaan and compounds
metale m@t'A:l@
@@ -2674,6 +2718,7 @@
@) nges (_ N@s // banges/langes/dinges
@) ng (itis_ Nx2 // brongitis/faringitis/laringitis
_) na (C_ n'a //three-letter words starting with na
na (boots nA: // long a in compounds: klank-/vlugnabootser, etc.
na (burig n%A: // move default stress: naburig/-e/-heid
na (ï n%a_ // naïef/naïewe/naïwiteit
@) na (lis n%a // shorten a sound: joernalis/-te/-tiek
@@ -2722,10 +2767,12 @@
neo (li n%i%u // fix stress and vowel sounds: neolities/-e/neolitikum
ner (veu n%&r // move default stress: nerveus/-e
@C) nes (_ nEs // fix final e sound: doringnes/aasvoëlnes/kalkoennes/hamerkopnes/reiernes/kiewietnes
by) nes nEs // fix e sound: (perde)bynes/te
net (agtig nEt_ // fix e sound: (vis)netagtig/-e
_) net (o nEt_ // fix o sound: netonderrok/-klere
_) netto nEt%u // fix o sound: nettobalans/-skuldboek and many such compounds
net (werk nEt // fix e sound in compounds: kern-/rugsteun-/selfoon-/teen-/telefoon-/vastelynnetwerk
neuro (CA n%Y@ro@ // move default stress: neurone/neurose/-s
neute nY@t@ // fix connecting e sound: neutedop/neutekraker
neu (tr n%Y@ // move default stress: neutraal/neutrale
_) nguni Ngu:ni // Nguni/-beeste/-tale
@@ -2985,6 +3032,8 @@
@) oties 'o@tis // antibioties/eksoties/eroties/neuroties
@) otomie (_N %o@t%um'i // fix o sounds and stress of medical terms: laparotomie, etc.
@) otomie (ë %o@t%um'i: // fix o sounds and stress of plurals of medical terms: leukotomieë/nefrotomieë, etc.
_) outo (@P4 @Utu // fix stress and o sound: outomaat/-mate/-maties/outomobiel, etc.
out (okra %@Ut // to handle outokraat and derivatives
oux 'u //in surnames like tredoux, leroux etc.
_) o (va@ %o@ // move default stress: ovaal/ovale/ovaalvormig
ovari (otomi %o@v%A:r%i // fix stress, v and vowel sounds: ovariotomie
@@ -3130,7 +3179,7 @@
_) oor (denk %o@r // move default stress: oordenk/-ing/-s
oordrewe o@rdr'e@v@ // stress: oordrewe/oordrewenheid
oor (dink %o@r // move default stress
oor (doen %o@r // move default stress
_) oor (doen %o@r // move default stress
oor (donder %o@r // move default stress: oordonder/-ing
oor (draag %o@r // move default stress: oordraagbaar/-lik, etc.
_) oor (dryC %o@r // move default stress: oordryf/oordrywing
@@ -3161,6 +3210,7 @@
oor (rompel %o@r // move default stress
oorsaaklik %o@rsA:kl@k // fix stress: oorsaaklik/-e/-heid
oor (sigt %o@r // move default stress: oorsigtelik/oorsigtig/-e
oor (sigtyd o@r // restore default stress: oorsigtydperk/-e
_) oor (skadu %o@r // move default stress: oorskadu/-wing
_) oor (skat %o@r // move default stress: oorskat/-te/-ting
oor (skry %o@r // stress: oorskry/-ding and compounds
@@ -3221,15 +3271,15 @@
paro (di p%ar%u // fix stress and vowel sounds: parodie and compounds
parti (tu p%art@ // fix stress and i sound: partituur/partiture and compounds
pase (lla p%as& // fix stress and a sound: pasella(tjie) and compounds
pa (sifi p%a // shorten a sound: pasifis/-me/-ties/-e
pa (stel p%a // move default stress: pastel(kleur) and similar compounds
pa (tat p@ // patat/warmpatat/wurgpatat
patie (KN p%at'i //words ending in patie has stress at end + a sound/simpatiek
@) paties p'A:tis // fix stress and a sound: simpaties/-e
para (C ,para //paralel, paragraaf etc.
parade (K p@rA:d@ // parade and compounds
_) par (C@ p%ar // (ge)parkeer/parkeerplek/party(keer/maal...)/parfuum/parmantig
_) par (CA p%ar // (ge)parkeer/parkeerplek/party(keer/maal...)/parfuum/parmantig
parke (raad park@ // fix stress and e sound: Parkeraad(slid, etc.)
pars (C pars // restore default stress: parsbalie/-kuip/-tyd, etc.
_) pas (AA pas // pasaangeër/pasoortreding
pas (op p%as // pasop/pasoppens
passa (sier p%as%a // stress: passasier and compounds
@@ -3412,7 +3462,7 @@
prominen prOmin'En // prominent/e/prominensie
propag ,prOpax2

prosedure prOs@d'yr@
prose (dure pr%Os@ // (regs)prosedure/prosedureel/-rele
prosti (tu pr%Ost@ // fix stress and i sound: prostituut/prostitute/prostitusie and compounds
protes prut'Es
protes (te_N pr%utEs // proteste, but prevent breaking protestering
@@ -3549,6 +3599,7 @@
re (pliek r@ // fix stress and e sound: repliek and compounds
re (produ r%e@ // fix stress and e sound: reproduksie/reproduseer
rep (tiel r%Ep // move default stress: reptiel/-e and compounds
reses (_ r@sEs // fix stress and e sound: (hof-/vakansie)reses
reso (nA r%Es%u // fix stress and e sound: resonant/-e/resonansie/resoneer
re (spon r@ // fix stress and e sound: respons/-e/-ie/respondent, etc.
_) re (spyt r@ // fix stress and e sound: respyt/-dae/-tydperk
@@ -3604,6 +3655,7 @@
sangere (K s%aN@rE //sangeres and compounds: opera-/popsangeres
o) s (_ s // exceptions to rule: @@@) s (_S1 s
u) s (_ s // exceptions to rule: @@@) s (_S1 s
s (chemi s // split s/ch: watersuiweringschemikalieë and similar compounds
sch S
s (chaos s // split s/ch: regs-/verkeerschaos
sh (_ _^_EN
@@ -3630,6 +3682,7 @@
sili (nd s@lI // silinder(s)/silinderkoppe
si (llabA s@
si (napK s@ // fix stress and i sound: sinaps/-esinapties
_) sin (dro s@n // move default stress: sindroom/sindrome
sin (ja s@n // move default stress: sinjaal/sinjale
_) si (noC s@ // fix stress and i sound: sinode and compounds/sinops/sinop;ties
sino (niem s,in%u // fix stress and vowel sounds: sinoniem/-e
@@ -3778,6 +3831,7 @@
sma (rag sm%a // fix stress and a sound: smarag/-te
snaper (ing snA:p@r // fix stress and vowel sounds: versnapering/-e/-s and compounds
snel (_ sn&l // fix e: aansnel/agternasnel/blitssnel/heengesnel/koppesnel/nasnel/verbysnel
_) snel (A sn''&l_ // fix e sound, pause: snelaanval/-instrument/-ontwikkelende/-oorgang, etc.
sodom (iet s,o@dOm // fix stress
_) soeda (n s%uda // fix stress: Soedan/Soedanese
soet (sappi s%ut // move default stress: soetsappig/-e/-heid
@@ -3872,12 +3926,14 @@
dwerg) ste (r st& // fix e sound: dwergster/-re
nd) ste (r st& // fix e sound: aandster/oggendster
pool) ste (r st& // fix e sound: poolster
prent) ste (r st& // fix e sound: rolprentster/-re
see) ste (r st& // fix e sound: seester/-re/seesterpunte and similar compounds
sepie) ste (r st& // fix e sound: sepiester/-re
sewe) ste (r st& // fix e sound: sewester and compounds
visie) ste (r st& // fix e sound: televisiester/-re
_) ste (ri st%E // fix stress and e sound: steriel/-e/steriliteit
ster (-hotel st&r // fix e sound: een-/twee-/drie-/vier-/vyfster-hotel
ster (hotel st&r // fix e sound: een-/twee-/drie-/vier-/vyfsterhotel
stimu (lA st@m%y // move default stress and fix i sound: stimuleer/stimulering/stimulasie
_) sub (a sWb_ // subagent/subartikel/subatomies, etc.
sub (li s%Wb // move default stress: subliem/-e
@@ -3901,7 +3957,7 @@
_) sw sw // fix w sound: words beginning with sw-: swerweling/swetend
swaar (lyw sw%A:r // move default stress: swaarlywig/-e/-heid
swaar (moed sw%A:r // move default stress: swaarmoedig/-e/-heid
swag sv'ax2
swag (K sv'ax2
swa (hili sw%a // fix stress and a sound: swahili/-'s
_) swam (A@ swam_ // shorten a sound: swamagtig/-etend/-infeksie
swart (gal sw%art // move default stress: swartgallig
@@ -3917,7 +3973,7 @@

.group st
D_) ste st@ //ste after numbers 22ste etc.
_) staats st''A:ts // force stress: staatsadministrasie/-advokaat/-akkreditasie, etc.
_) staat (s st''A:t // force stress: staatsadministrasie/-advokaat/-akkreditasie, etc.
_) sta (bi@ st%a // fix stress and a sound: (on)stabiel/-e/stabiliseer/(on)stabiliteit
sta (dion stA: // fix a sound: stadion and many compounds
stalag (Ciet st%al%ax2 // fix stress and 1st a sound: stalagmiet/stalagtiet/-e
@@ -3966,6 +4022,7 @@
sterretjie st'&rici
sterwens (@ st&rv@ns_ // fix 2nd e sound and insert paus: sterwensuur/-kreet/-nood and similar
ste (m stE // eliminate one m in derivatives like stemming
ste (maat st@ // fix e sound: -dienstemaatskappy/-e and similar
ste (mark st@ // fix e sound: (hoër/laer/middel)inkomstemark/-te, etc.
stempel stEmp@l // fix 2nd e sound: stempelband/-datum/-gereedskap/-hamer/-jaar/-letter...
@) stemperame s_tEmp@-r%amE // fix vowel sounds and stress: dobbelaars-/kunstenaarstemperament, etc.
@@ -4009,7 +4066,8 @@
tafe (re t%af@ // fix vowel sounds: tafereel/taferele and compounds
taiwa (n t%aIwa // fix stress and w and a sounds: Taiwan/Taiwanese
taksider (m t%aks%id%&r // fix stress and e sound: taksidermie/taksidermis/-te
ta (lent t%a // fix stress and a sound: talent/-e/-jie
talent t%alEnt // fix stress and a sound: talent/-e/musiek-/kunstalent
talen (tjie t%alEiN // fix -entjie: (kuns-/musiek)talentjie
@) talig t'A:l@x2 // Anderstalig/tweetalig
@) ta (lis t%a // shorten a sound: hospitalisasie/kapitalisme/katalisator and similar
_) ta (ma t%a // tamatie and compounds
@@ -4252,7 +4310,7 @@
teltjie t@lki
@) tel (o t@l // hartelose/besluiteloos/gedagtelose
tendens t%Ende~ns // fix stress and e sounds: tendens/-e and compounds
&) tert (A t@rt // fix e sound: agtertoe/foltertuig/gietertuit/kilometertoelae/lastertaal/letterteken
&) tert (A@ t@rt // fix e sound: agtertoe/foltertuig/gietertuit/kilometertoelae/lastertaal/letterteken
&) tert (r t@rt // fix e sound: pleistertroffel/venstertralie/ystertralies/ystertrap
&s) tert (aan t&:rt // fix e sound: swa(w)elstertaandpak/-ke
&s) tert (e_ t&:rt // fix e sound: swa(w)elsterte/vissterte
@@ -4314,6 +4372,7 @@
uitgee (+ 'Yytx2e@ // se rule: _) uitge (@P5 Yytx2@
uit (huisig %Yyt // move stress: uithuisig/-e/-heid
uiting Yyt@N // remove break and fix ng: uiting/-e/-svermoë and similar compounds
ui (tjie Yy // "uit" not prefix here: uitjie/-s
uitme (kaar %Yytm@ // move default stress: uitmekaar breek/gaan/loop/, etc.
uit (munten %Yyt // move stress: uitmuntend/-e
uit (sluiten %Yyt // move default stress: uitsluitend/-e
@@ -4352,8 +4411,9 @@
.group v
v f
v (v
@) vaardig f'A:rd@x2 // diensvaardig/hulpvaardig/onboetvaardig/strydvaardig
@) vaardig f'A:rd@x2 // diensvaardig/hulpvaardig/onboetvaardig/strydvaardig
uit) vaardig fA:rd@x2 // but uitvaardig
ver) vaardig fA:rd@x2 // default stress: onderdelevervaardiger and similar
va (doek fa // stress on 1st slb.: vadoek/-e
vagina vax2ina // fix v sound and shorten a sound: vagina/-s
vagin (A@ v%ax2%in // move default stress: vaginale and similar
@@ -4372,6 +4432,8 @@
vari (A v%ar%i // fix v sound and stress: variasie/-s/varieer
vaseline v%as@lin // fix stress, v and vowel sounds: vaseline/-bottel, etc.
vasste (l fast& // fix e sound: vasstel(ling/-lende)
_) vat (A@ fat_ // fix a sound: vatafstand/-orgaan
vate (C fA:t@ // fix e sound: vatefabriek/-maker
vati (kaan f%at%i // fix stress and shorten a sound: vatikaan and derivatives and compounds
@) ve (_ _^_EN //words ending in ve is English
veel (duid f%e@l // move default stress: veelduidig/-e/veelduidend/-e
@@ -4396,6 +4458,7 @@
vere (sto fe@r@ // avoid ver prefix: verestoffer/-s and compounds
verversing f@rf'&rs@N //verversing and compounds
vere (_ fe@r@ // fix e sound: vere and compounds ending in vere
ve (st fE // fix e sound: huweliksbevestiger/-bevestiging
_) vet (A fEt_ // fix e sound, pause: vetafskeiding/-olie/-oplossing, etc.
vete (ra f%Et@ // fix stress and e sounds: veteraan/-ane and compounds
veter (K fe@t@r // (skoen)veter/-s, etc.
@@ -4535,6 +4598,7 @@
_) voor (delig f%o@r // move default stress: voordelig/-e
_) voorge (@P6 f'o@rx2@
_) voor (komA f%o@r // move default stress: voorkomende/voorkomer/voorkoming and compounds
voor (komba f%o@r // move default stress: voorkombaar/-heid/-bare
voor (sie f%o@r // move default stress: voorsien/-ing
voorskrifteli (k f%o@rskrIft@l@ // move default stress: voorskriftelik/-e/-heid
voorspe (lK fo@rsp'& // voorspel/voorspelling/voorspelbaar/onvoorspelbaar
@@ -4580,6 +4644,7 @@
nd) w v // aandwandeling/brandweer/eindwedstryd/grondwet/grondwal
Cod) w v // fix w sound: godwelgevallig/godweet/godwees
k) w w
volks) w v // fix w sound: Volkswagen/volkswelsyn/-weldoener, etc.
k) w (And v // fix w sound: buikwand/rukwinde
s) w w
@s) w (aan v // fix w sound: groot-/kleinheids-/hoogmoeds-/liefdes-/vervolgingswaan
@@ -4668,8 +4733,9 @@
@s) w (An_ v // plurals of the above in -de: de treate
_) wan (AP3 v''an_ // wanorde/wanopvatting/wanaanpassing/winindruk/wanadministrasie/wanaangewend
@t) w (and v // fix w sound: bloedvatwand/grotwand/hartwand
C) wag vax2 // fix w sound: bokwagter/skildwag and compounds/veldwagter
C) wag (K vax2 // fix w sound: bokwagter/skildwag and compounds/veldwagter
k) wagga wax2a // fix w sound: kwagga/bergkwagga, etc.
wal (kure v%al // move default stress: Walkure/-s
wange (drag vanx2@ // (jeug)wangedrag and similar
wankel (moed v%aNk@l // move default stress: wankelmoedig/-e/-heid
wanordeli (k v%an_Ord@l@ // move default stress: wanordelik/-e/-heid
@@ -4732,6 +4798,7 @@

wn _^_EN // names containing town/Brackendowns/Brown
_) wol (A vOl_ // fix o sound, insert short break: wol(onderbaadjie/-broek/-hemp/-klere)/-olie
wol (vin v%Ol // move default stress: wolvin/-ne
worth _^_EN
wood (+ _^_EN // English: Woodstock/Goodwood/Lynnwood
woongewes vo@nx2@vEs // fix stress and e sounds: woongewes/-te
@@ -4852,60 +4919,13 @@
ûe W:@ // brûe/rû
ý '!eI // extra stress: jý/mý/sý and similar
ñ _^_ES // words containing ñ are Spanish: senñor/-a/-ita

// punctuation
! _:eItrup_:
!) !
$ dOl@r
% p@rs'Ent
& _|amp&rsant
£ pO:nt
€ Y@ru
/ stre@p
@ beI_:
\\ trystre@p

// punctuation, but don't speak multiple occurrances
= _:x2@l'eIk_:
= (==
=) = (=
==) = (_ _::

* st&r
*) * (*
**
**) * (_ _::

+ pl'Ws
_) ++ (_ plWspl'Ws
\+\+\+) + // ignore + after the first 3

__) - (_D minWs
A_) - (_D _
C_) - (_D _
--) -

. pWnt
. (. _:
\.) .
~ tIld@

// extra symbols
¥ jEn
§ afde@l@N
¶ parax2rA:f
¶¶ parax2rA:v@
¤ mWnte@k@n
© kup'ir&x2
° x2rA:d@
− minWs
± plWs_OfminWs
µ mikru
¼ @kwart
½ @halv@
¾ drikwart
× mA:l
÷ x2@de@ldY@r
♯ krYys
♭ mOl




+ 10
- 1
dictsource/de_list View File

@@ -124,9 +124,18 @@ _1M2 _'aIn@||mIlI'o:n
_0M3 ||mIlI'a*d@n
_1M3 _'aIn@||mIlI'a*d@
_0M4 bIlI'o:n
_0and ||Unt
_0and ||_|Unt
_dpt _kOma

// ordinal numbers
_ord t@ // default ending
_ord20 st@ // 20,30,etc
_1o _'e:*st@
_3o dr'It@
_7o z'i:bt@
_8o _'axt@
_0Co 'hUnd3tst@

// Abbreviations
//==============
a.a.o A:A:o:

+ 81
- 2
dictsource/dict_phonemes View File

@@ -15,6 +15,20 @@ n N p r s S t T
tS v w x x2 z Z


Dictionary bn_dict

& a a: a~ e E e~ i
I i: i:~ i~ l- o O o:
O~ o~ r- U u u: u:~ u~
V

* b B bh c C ch d
d. d.h dh g gh h j J
Jh k kh l m n N n.
n^ p ph Q r r. s S
s. t t. t.h th tS x z


Dictionary ca_dict

@ a a# aI e E E2 i
@@ -53,6 +67,20 @@ p r s S t T v w
x z


Dictionary kn_dict

a a: aI aU e E e: i
I i: o o: r- u u: V
y

: b bh c ch d d. d.h
dh dZ f g gh h j J
Jh k kh l l. m n N
n. n^ p ph R R2 s S
s. S; t t. t.h th tS v
w z


Dictionary de_dict

3 @ @- a A A: aI aU
@@ -246,6 +274,47 @@ s S t tS v w x z
Z


Dictionary ml_dict

a a: aI aU e E e: i
I i: o o: r- u u: V
y

: b bh c ch d d. d.h
dh dZ f g gh h j J
Jh k kh l l. m n N
n. n^ p ph R R2 s s.
S; t t. t.h th tS v w
z z.


Dictionary ne_dict

@ @/ @2 @3 a aI aU a~
e E eI eU e~ E~ i I
i~ l- o O o: oI oU O~
o~ r- u uI u~ V VI VU
V~

- : b bh c ch d d.
d.h dh f g gh h H j
J Jh k kh l l. m n
N n. n^ p ph Q q r
r. s S s. t T t. t.h
th v w x z z.


Dictionary om_dict

a A a# a: E e E# I
I# i: O O# o: U U# u:

** : b B c` d D d`
dZ f g h j k k` l
m n n^ p p` R s S
s2 t t` tS v w z


Dictionary ku_dict

8 a e E E# eI eU i
@@ -292,6 +361,16 @@ N n^ p r R s S t
tS ts tS; v x z Z


Dictionary rw_dict

a e i o u

* : b B c d dZ f
g h j J k l m n
N n^ p q R s S S;
t tS v w x z


Dictionary nl_dict

8 @ @- A a: E e: EI
@@ -458,8 +537,8 @@ Dictionary zh_dict

@ @r a A ai Au E ei
i i. i[ iA iE io iou N-
o o- ou u u@ ua uai uei
uo y y& y@ yE yi yu
o o- ong ou u u@ ua uai
uei uo y y& y@ yE yi yu

; C f h j k kh l
L m n N p ph r R

+ 22
- 9
dictsource/en_list View File

@@ -102,7 +102,6 @@ _#32 speIs
_  hA@dspeIs // U+00A0 no-break-space
_! Ekskl@m'eIS@n
_" kwoUts
_# haS
_$ d0l3
_% p3s'Ent
?5 _% pVRs'Ent
@@ -178,6 +177,7 @@ _‴ trIp@LpraIm
_‼ Ekskla2m'eIS@nz
_₠ jU@roU

# haS $max3
@ _at_
& _and
\ bakstroUk $max3
@@ -186,8 +186,8 @@ _₠ jU@roU
?3 / slaS $max3
* ast@rIsk $max3
% p3sEnt $max3
= _:i:kw@Lz_: $max3
?5 % pVRs'Ent $max3
= _:i:kw@Lz_: $max3
¢ sEnts
£ paUnd
¥ jEn
@@ -303,10 +303,13 @@ _0M3 b'Ili@n
_dpt pOInt
_roman roUm@n_

(1 st) f3:st
(2 nd) sEk@nd
(3 rd) T3:d
(5 th) fIT
_ord T // default ending
_ord20 @T // for 20,30,etc
_1o f'3:st
_2o s'Ek@nd
_3o T'3:d
_5o f'IT
_0Co h'Vndr@dT


// ABBREVIATIONS
@@ -338,6 +341,7 @@ ibm $abbrev
ie aIi:_! $pause $only
i.e aIi:_! $pause
irc $abbrev
(km ²) skw,e@kIl'0mIt3z
lbs paUndz
LBS $abbrev
ltd lImI2tI2d
@@ -815,7 +819,7 @@ concise k0ns'aIs
cone koUn
conflict $1 $onlys
conflict $verb
conger k0ng3
conger k0Ng3
conscience k0nS@ns
construct $1 $onlys
construct $verb
@@ -1382,6 +1386,7 @@ mammoth mam@T
mandate $2 $verb
manganese $1
manger meIndZ3
mangetout m0nZt'u:
manhour manaU@
mankind $2
maneuver m@nu:v3
@@ -1665,6 +1670,7 @@ prestige prEst'i:Z
?3 pretense pri:tEns
pretext pri:tEkst
pretty prItI
privation praIv'eIS@n
privilege prIvI2lI2dZ
privy prIvI
prix pri:
@@ -1847,6 +1853,7 @@ satan seIt@n
satanist seIt@nIst
saucepan sO:sp@n
saudi saUdI
saute sO:teI
says sEz
schema ski:m@
shallow SaloU
@@ -1884,8 +1891,10 @@ sentient sEnti@nt
sequester $2
sequine si:kwI2n
series si:ri:z
serenade sErI2n'eId
serene s@ri:n
sergeant sA@dZ@nt
sesame sEsa2mI
settee $2
severe sI2v'i@3 $only
severely sI2v'i@3lI2 $verbf
@@ -2550,8 +2559,10 @@ Michael maIk@L
Michele mI2SEl
Michelle mI2SEl
Miguel mi:Q'El
Mohammad moUh'amId
Muhammad moUh'amId
Minerva mI2n3:v@
Mohamed moUh'amI2d
Mohammad moUh'amI2d
Muhammad moUh'amI2d
Moira mOIr@
Natalie nata2li
Nathan neIT@n
@@ -2604,6 +2615,7 @@ Disney dIznI
Patel pa2tEl
Primavera pri:m@v'e@r@
Prentice prEntIs
Reid ri:d
Reuter rOIt3
Ubuntu u:b'u:ntu:
Yaesu jeIsu:
@@ -2746,6 +2758,7 @@ aren't ,A@nt $pastf $strend2
weren't ,w3:nt $pastf $strend2

will $u+ $only $verbf $strend2
will $noun
(will to) wIlt@5
would $u+ $verbf $only $strend2
(would have) w%Udh%a2v $pastf

+ 12
- 7
dictsource/en_rules View File

@@ -30,6 +30,7 @@
// ?8 Use full vowel, not schwa in some word endings

.L01 l r
.L02 i y

.replace
ff ff // ligature
@@ -856,10 +857,10 @@
area e@ri@
arest (_ e@r@st
ar (en ar
p) are (nth @rE
p) are (nthe @rE
c) ar (eer ar
c) are (C@ e@
p) are (nt e@r@
p) ar (ent e@r
pp) ar (enC ar
sp) ar (enC ar
ar' (nt A@
@@ -1700,6 +1701,7 @@
e (meou i:
_C) e (mur i:
&) e (n @
&r) e (n E
Ah) e (n E
ll) e (nge I
e (o I2
@@ -1900,6 +1902,7 @@

.group ei
l) eice (st E
eich aIx
eigh eI
l) eigh i:
sl) eigh eI
@@ -3557,12 +3560,16 @@
@) o (ist oU
oix (_ wa
o (ky_ oU
?3 g) o (ng O
?3 r) o (ng O
?3 s) o (ng O
t) o (ngu V
&) oped (_ @pd
c) oped (_ oUpd
_) o (per 0
_) ope (n oUp@
un) ope (n oUp@
@) opol (i '0p@L
@) opol (L02 '0p@l
opolitan @p'0lIt@n
oppor (tu %0p3
opp (res @p
@@ -3753,9 +3760,6 @@
_) one (r oUn@
m) on (ey Vn
und) one (_ Vn
?3 g) ong ON
?3 r) ong ON
?3 s) ong ON
?!3 m) ong (er VNg
on (i_ 'oUn
&) onism (_ =@nIz@m
@@ -4395,6 +4399,7 @@
rehen rIh'En
_) re (i@P2 r,i:
_) rei (l raI
_) rei (c raI
_) rele (g rElI2
rele (nt rI2lE
rele (v rElI
@@ -4804,7 +4809,7 @@
u (lul V
h) u (man ju:
u (me ju:
r) ument @m@nt
r) um (ent @m
fl) uor u:3
u (o ju:
@) uous =ju:@s

+ 7
- 3
dictsource/fr_list View File

@@ -24,7 +24,7 @@

// 2006-11-18 Gilles Casse <[email protected]>
//
// Updated 2008-12-09 Michel Such <[email protected]>
// Updated 2009-01-14 Michel Such <[email protected]>
//
// * Numbers, a few abbreviations and exceptions.
//
@@ -111,6 +111,7 @@ _# djEz
_' a2postr'Of
_( 'uvR@-parA~t'Ez
_) f'Erm parA~t'Ez
_* asterisk:
_, virgyl
_- tirE
_. _|pw%E~
@@ -143,9 +144,9 @@ _§ sEksj'O~
@ arobaz
% pursA~ $max3
* asterisk: $max3
& _e
& e $u $brk
_& _e_komErsj'al
+ plys $max3
+ plys $max3
~ tilde
€ @ro
¢ sEnt
@@ -596,6 +597,7 @@ montréal mO~real
(qu'est ce que) kEsk@ $u
absent absA~
admin admin
adsltv $abbrev
airbus E2rbys
auvent ovA~
bien bjE~n2 $u+
@@ -622,6 +624,7 @@ hélas elas $u+
iris iris
laser lazEr
malus malys
mapper _^_en
mars mars
mieux mj'Y $u+
ours urs
@@ -629,6 +632,7 @@ parangon parA~gO~
phallus falys
polder pOldEr
premier pr@mjer2
(program files) pr,o2gram||f'ajlz
scanner skaner2
scanner skanWr $noun
souris suri

+ 4
- 3
dictsource/fr_rules View File

@@ -23,7 +23,7 @@

// 2006-11-18 Gilles Casse <[email protected]>
//
// Updated: 2008-12-09 Michel Such <[email protected]>
// Updated: 2009-01-14 Michel Such <[email protected]>
//

// Letter classes:
@@ -119,6 +119,7 @@
cch k // bacchanale
cc (Y ks // accéder
cc k // occuper
_) c (d se
_) ch (arism k // charisme, charismatique
_) ch (irop k // chiroptère
a) ch (_ k // almanach
@@ -244,6 +245,7 @@ _) ç' (P2v s
A) e (rA // remerciera
gu) e (rA @
qu) e (rA @
v) e (lop @-
@) em (me a // patiemment
em (b A~ // décembre
em (mACC A~ // emmancher
@@ -679,7 +681,6 @@ _) half _^_en
Cr) i (é i:
Cr) i (er_ i:
rr) i (er_ j
dr) iver a2jvWr
C) ien (t_ i
dév) ien (t_ i
t) ien (K_ jE~ // tient
@@ -735,8 +736,8 @@ _) half _^_en
ind (_ _^_en // find, mind
_C) ind (er_ _^_en // finder, reminder
_AC) ind (er_ _^_en // finder, reminder
// ink _^_en // link
ize (X _^_en // realize
dr) i (ve _^_en


.group î

+ 29
- 6
dictsource/hu_list View File

@@ -4,12 +4,11 @@
// Conditional rules:
// ?1 speak "i" as Roman number


// Numbers

_0 nullA
_1 EJ
_2 kEttY:
_2 kEt:Y:
_3 ha:R2om
_4 ne:J
_5 Yt
@@ -43,7 +42,30 @@ _1M3 ke:tmillia:R2d
_0M4 billio:
_1M4 billio:
_2M4 ke:tbillio:
_dpt ||_vEss2Y:_
_dpt ||_v,Ess2Y:_

_0Z1 tizAd // tenths
_0Z2 sa:zAd // hundredths
_0Z3 EzR2Ed
_0Z4 ti:zEzR2Ed


// ordinal numbers
_ord Edik
_1o ElSY:
_2o ma:Sodik
_3o hAR2_mAdik
_4o nEJEdik
_5o YtYdik
_6o hAtodik
_7o hEtEdik
_8o n^oltsAdik
_9o kilEntsEdik
_10o tizEdik
_12o tizENkEt:Edik
_20o husAdik
_0Co sa:zAdik


// accent names
_lig ligAtu:R2A
@@ -355,6 +377,7 @@ ny En^
% sa:zAle:k $max3
+ plus $max3
= EJEnlY:Se:g $max3
# sa:mjEl $max3
@ kukAts
& e:SjEl
€ EuR2o
@@ -364,6 +387,7 @@ ny En^
^ hia:n^
° fokjEl
Ft foR2int
\ viss2ApER2 $max3

_, vEss2Y:
_; pontoSvEss2Y:
@@ -382,15 +406,14 @@ _[ s'YglEtES||z'a:R2o:
_] s'YglEtES||z'a:R2o:
_{ k'AptSoS||z'a:R2o:
_} k'AptSoS||z'a:R2o:
_# sa:mjEl
_… ha:R2_mASpont
_• di:spont
_\ viss2ApER2

// Main Exceptions List
//=====================

nato na:to:


$textmode
(1-én) elsején


+ 4
- 3
dictsource/hu_rules View File

@@ -232,17 +232,18 @@ _nyílá) s S
_o) sló slo:
tojá) s S

sz (öld Sz
va) s (zabl S||
_) semmelweiss sEmmElvEjs
_) semmelweis sEmmElvEjs
_) semmelweiß sEmmElvEjs
engel) s s
mu) ss (olini ss2
_) saar sa:R2

_wa) sh (ing S

sz (öld Sz
va) s (zabl S||
egé) szs (ég S


.group t
_) t (_ te:

+ 63
- 4
dictsource/lv_list View File

@@ -85,7 +85,20 @@ _0M1 t'u:kstuo:Si
_1M1 t'u:kstuo:tis
_0M2 m'iljo:ni
_1M2 m'iljo:ns
_dpt k'uomats_
_dpt k'omats_

// ordinal numbers
_ord ais // default ending
_1o p'iR2mais
_2o 'otR2ais
_3o tR'eSais
_4o tS'etuRtais
_5o p'iektais
_6o s'estais
_7o s'epti:tais
_8o 'astotais
_9o d'evi:tais
_0Co s'imtais


// accent names (Mostly English names, please fix)
@@ -95,7 +108,7 @@ _ac2 d'ubultsakju:t
_brv 'i:suma
_ced s'edi:la
_cir d'iakR2itiska:
_dia 'umlaut
_dia 'umlauts
_dot p'unkts
_grv gR2'a:v
_hac h'atSek
@@ -292,7 +305,6 @@ janv janva:R2is
jūl ju:lijs
jūn ju:nijs
lp lapa
lpp lappuse
lat lati:n^u
latv latvieSu
Ls lati $capital
@@ -322,12 +334,59 @@ sv sve:tais
st sant
šķ SciR2a

// words with [o]
// words with [o]
adadžo $alt
aikido $alt
anno $alt
automoto $alt
bandžo $alt
bendžo $alt
bingo $alt
bolero $alt
bravo $alt
bruno $alt
bruto $alt
depo $alt
dingo $alt
domino $alt
džudo $alt
čello $alt
embargo $alt
esperanto $alt
facto $alt
fiasko $alt
foto $alt
hallo $alt
hugo $alt
indigo $alt
inkognito $alt
intermeco $alt
kakao $alt
kastro $alt
kazino $alt
microsoft $alt
moto $alt
lego $alt
lumbago $alt
maestro $alt
metro $alt
moto $alt
odo $alt
oto $alt
panno $alt
pianīno $alt
rančo $alt
retro $alt
rokoko $alt
roks $alt
sambo $alt
solfedžo $alt
sonera $alt
triko $alt
trimo $alt
uno $alt
veto $alt
žabo $alt




+ 432
- 129
dictsource/lv_rules
File diff suppressed because it is too large
View File


+ 8
- 0
dictsource/zh_rules View File

@@ -172,11 +172,19 @@ language).

.group o
o o

ou ou
o1u ou55
o2u ou35
o3u ou214
o4u ou51

ong (K ong
o1ng (K ong55
o2ng (K ong35
o3ng (K ong214
o4ng (K ong51

y) o io
y) ou iou
y) o1u iou55

+ 225
- 5
phsource/compile_report
File diff suppressed because it is too large
View File


BIN
phsource/n/n_ View File


+ 1
- 2
phsource/ph_hungarian View File

@@ -101,8 +101,7 @@ phoneme ts
vowelin f1=0 f2=1700 -300 300 f3=-100 80
vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
lengthmod 2
wave ustop/ts
before _ ustop/ts_
wave ustop/ts // don't use ustop/ts_ (before non-vowel)
endphoneme



+ 9
- 3
phsource/ph_zh View File

@@ -70,7 +70,7 @@ phoneme ph
vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11
vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22
lengthmod 2
wave ustop/p_
wave ustop/p_asp
endphoneme

phoneme m //not clear before some vowel
@@ -134,7 +134,7 @@ phoneme kh
vowelin f1=1 f2=1700 0 200 f3=-300 80 f4
vowelout f1=1 f2=1700 0 200 f3=-300 80 f4 rms=30
lengthmod 2
wave ustop/k_
wave ustop/k_asp%80
endphoneme

phoneme tS;
@@ -274,7 +274,7 @@ endphoneme

phoneme @r //tmp use V3_r
vowel starttype (@) endtype (@)
length 250
length 350
formants vowelr/V3_r
endphoneme

@@ -360,6 +360,12 @@ phoneme ou
formants vdiph/8u
endphoneme

phoneme ong
vowel starttype (o) endtype (o)
length 500
formants vwl_zh/ong
endphoneme

phoneme u //try more before N
vowel starttype (u) endtype (u)
length 250

+ 20
- 0
phsource/phonemes View File

@@ -1341,3 +1341,23 @@ phonemetable hy base
include ph_armenian


phonemetable rw base2
include ph_kinyarwanda

phonemetable ml hi
include ph_malayalam

phonemetable kn hi
include ph_kannada

phonemetable bn hi
include ph_bengali

phonemetable ne hi
include ph_nepali

phonemetable mr hi
include ph_mathari

phonemetable om base
include ph_oromo

BIN
phsource/voc/vj View File


BIN
phsource/vowel/ii_final View File


BIN
phsource/vwl_en_us/3_us2 View File


+ 2
- 6
src/compiledata.cpp View File

@@ -876,12 +876,8 @@ int Compile::LoadWavefile(FILE *f, const char *fname)
max = -sample;

}
if(max > 1)
{
scale_factor = (max / 127) + 1;
}
else
scale_factor = 0;

scale_factor = (max / 127) + 1;

//fprintf(f_errors," sample len=%d max=%4x shift=%d\n",length,max,scale_factor);


+ 21
- 2
src/compiledict.cpp View File

@@ -203,6 +203,7 @@ static int compile_line(char *linebuf, char *dict_line, int *hash)
int flag_offset;
int length;
int multiple_words = 0;
int multiple_numeric_hyphen = 0;
char *multiple_string = NULL;
char *multiple_string_end = NULL;
@@ -343,7 +344,14 @@ step=1; // TEST
case 1:
if((c == '-') && (word[0] != '_'))
{
flag_codes[n_flag_codes++] = BITNUM_FLAG_HYPHENATED;
if(isdigit(word[0]))
{
multiple_numeric_hyphen = 1;
}
else
{
flag_codes[n_flag_codes++] = BITNUM_FLAG_HYPHENATED;
}
c = ' ';
}
if(isspace2(c))
@@ -530,8 +538,14 @@ step=1; // TEST
}
else
{
dict_line[length++] = 80 + multiple_words;
dict_line[length++] = 80 + multiple_words + multiple_numeric_hyphen; // if numeric, count a hyphen as an extra word
ix = multiple_string_end - multiple_string;
if(multiple_numeric_hyphen)
{
// the first part is numeric, so keep the hyphen to match on
dict_line[length++] = '-';
dict_line[length++] = ' ';
}
memcpy(&dict_line[length],multiple_string,ix);
length += ix;
}
@@ -1303,6 +1317,11 @@ static int compile_lettergroup(char *input, FILE *f_out)
fputc(RULE_GROUP_START,f_out);
fputc(RULE_LETTERGP2,f_out);
fputc(group + 'A', f_out);
if(letterGroupsDefined[group] != 0)
{
fprintf(f_log,"%5d: lettergroup L%.2d is already defined\n",linenum,group);
error_count++;
}
letterGroupsDefined[group] = 1;

n_items = 0;

+ 9
- 1
src/dictionary.cpp View File

@@ -542,7 +542,7 @@ void GetTranslatedPhonemeString(char *phon_out, int n_phon_out)

if(plist->synthflags & SFLAG_SYLLABLE)
{
if((stress = plist->tone) > 1)
if((stress = plist->stresslevel) > 1)
{
if(stress > 5) stress = 5;
phon_out[phon_out_ix++] = stress_chars[stress];
@@ -2550,6 +2550,14 @@ int TranslateRules(Translator *tr, char *p_start, char *phonemes, int ph_size, c
return(0);
}
#endif

// is it a bracket ?
if(IsBracket(letter))
{
if(pre_pause < 4)
pre_pause = 4;
}

// no match, try removing the accent and re-translating the word
if((letter >= 0xc0) && (letter <= 0x241) && ((ix = remove_accent[letter-0xc0]) != 0))
{

+ 1
- 1
src/espeak.cpp View File

@@ -466,7 +466,7 @@ int main (int argc, char **argv)
break;

case 0x104: // --voices
espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,0,NULL,0);
espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,0,data_path,0);
DisplayVoices(stdout,optarg);
exit(0);


+ 0
- 2
src/extras.cpp View File

@@ -1163,7 +1163,6 @@ void Test2()


const char* text1 = "Hello world. Testing.";
extern void TestCompile2(void);

void TestTest(int control)
{//=======================
@@ -1178,7 +1177,6 @@ void TestTest(int control)
//CharsetToUnicode("ISO-8859-4");
//CharsetToUnicode("ISCII");

//TestCompile2();
return;

if(control==2)

+ 11
- 11
src/intonation.cpp View File

@@ -734,12 +734,12 @@ static void CalcPitches_Tone(Translator *tr, int clause_tone)
p = &phoneme_list[0];
for(ix=0; ix<n_phoneme_list; ix++, p++)
{
if((p->type == phVOWEL) && (p->tone >= 4))
if((p->type == phVOWEL) && (p->stresslevel >= 4))
{
if(count_stressed == 0)
final_stressed = ix;

if(p->tone >= 4)
if(p->stresslevel >= 4)
{
final_stressed = ix;
count_stressed++;
@@ -747,7 +747,7 @@ static void CalcPitches_Tone(Translator *tr, int clause_tone)
}
}

phoneme_list[final_stressed].tone = 7;
phoneme_list[final_stressed].stresslevel = 7;

// language specific, changes to tones
if(tr->translator_name == L('v','i'))
@@ -813,7 +813,7 @@ static void CalcPitches_Tone(Translator *tr, int clause_tone)
if((tph->mnemonic == 0x3535 ) || (tph->mnemonic == 0x3135))
{
// change sentence final tone 1 or 4 to stress 6, not 7
phoneme_list[final_stressed].tone = 6;
phoneme_list[final_stressed].stresslevel = 6;
}
}

@@ -840,7 +840,7 @@ static void CalcPitches_Tone(Translator *tr, int clause_tone)
p->tone_ph = PhonemeCode2('4','4');

// tone 5 is unstressed (shorter)
p->tone = 1; // diminished stress
p->stresslevel = 1; // diminished stress
}
}

@@ -859,7 +859,7 @@ static void CalcPitches_Tone(Translator *tr, int clause_tone)
{
tone_ph = p->tone_ph;

if(p->tone != 1) // TEST, consider all syllables as stressed
if(p->stresslevel != 1) // TEST, consider all syllables as stressed
{
if(ix == final_stressed)
{
@@ -924,9 +924,9 @@ void CalcPitches(Translator *tr, int clause_type)
syllable_tab[n_st].flags = 0;
syllable_tab[n_st].env = PITCHfall;
syllable_tab[n_st].nextph_type = phoneme_list[ix+1].type;
syllable_tab[n_st++].stress = p->tone; // stress level
syllable_tab[n_st++].stress = p->stresslevel;

if(p->tone >= 4)
if(p->stresslevel >= 4)
n_primary++;
}
else
@@ -1051,7 +1051,7 @@ void CalcPitches(Translator *tr, int clause_type)
for(ix=ph_start; ix < ph_end; ix++)
{
p = &phoneme_list[ix];
p->tone = syllable_tab[st_ix].stress;
p->stresslevel = syllable_tab[st_ix].stress;
if(p->synthflags & SFLAG_SYLLABLE)
{
@@ -1071,7 +1071,7 @@ void CalcPitches(Translator *tr, int clause_type)
p->env = PITCHrise;
}
else
if(p->tone > 5)
if(p->stresslevel > 5)
p->env = syl->env;

if(p->pitch1 > p->pitch2)
@@ -1092,7 +1092,7 @@ if(p->tone_ph)

if(syl->flags & SYL_EMPHASIS)
{
p->tone |= 8; // emphasized
p->stresslevel |= 8; // emphasized
}
st_ix++;

+ 142
- 61
src/numbers.cpp View File

@@ -893,39 +893,54 @@ static int LookupThousands(Translator *tr, int value, int thousandplex, char *ph
static int LookupNum2(Translator *tr, int value, int control, char *ph_out)
{//========================================================================
// Lookup a 2 digit number
// control bit 0: use special form of '1'
// control bit 0: tens and units (use special form of '1')
// control bit 1: ordinal number
// control bit 2: use feminine form of '2'
// control bit 3: speak zero tens

int found;
int ix;
int units;
int used_and=0;
int found_ordinal = 0;
int next_phtype;
char string[12]; // for looking up entries in de_list
char string[12]; // for looking up entries in *_list
char ph_tens[50];
char ph_digits[50];
char ph_and[12];
char ph_ordinal[12];

if((value == 1) && (control & 1))
{
if(Lookup(tr, "_1a", ph_out) != 0)
return(0);
}
// is there a special pronunciation for this 2-digit number
found = 0;

if(control & 4)
{
sprintf(string,"_%df",value);
found = Lookup(tr, string, ph_digits);
}
if(control & 2)
{
sprintf(string,"_%do",value);
if((found = Lookup(tr, string, ph_digits)) != 0)
{
found_ordinal = 1;
}
}

if(found == 0)
{
if((value == 1) && (control & 1))
{
if(Lookup(tr, "_1a", ph_out) != 0)
return(0);
}
sprintf(string,"_%d",value);
found = Lookup(tr, string, ph_digits);
}

// no, speak as tens+units
if((control & 2) && (value < 10))

if((control & 8) && (value < 10))
{
// speak leading zero
Lookup(tr, "_0", ph_tens);
@@ -934,49 +949,70 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out)
{
if(found)
{
strcpy(ph_out,ph_digits);
return(0);
ph_tens[0] = 0;
}

if((value % 10) == 0)
{
sprintf(string,"_%d0",value / 10);
found = Lookup(tr, string, ph_tens);
}
if(!found)
else
{
sprintf(string,"_%dX",value / 10);
Lookup(tr, string, ph_tens);
}
units = (value % 10);

if((value % 10) == 0)
{
strcpy(ph_out,ph_tens);
return(0);
}
if((control & 2) && ((units == 0) || (tr->langopts.numbers & 0x10)))
{
sprintf(string,"_%dXo",value / 10);
if(Lookup(tr, string, ph_tens) != 0)
{
found_ordinal = 1;
}
}
if(found_ordinal == 0)
{
sprintf(string,"_%dX",value / 10);
Lookup(tr, string, ph_tens);
}

found = 0;
units = (value % 10);
if(control & 4)
{
// is there a variant form of this number?
sprintf(string,"_%df",units);
found = Lookup(tr, string, ph_digits);
}
if(found == 0)
{
sprintf(string,"_%d",units);
Lookup(tr, string, ph_digits);
ph_digits[0] = 0;
if(units > 0)
{
found = 0;
if(control & 4)
{
// is there a variant form of this number?
sprintf(string,"_%df",units);
found = Lookup(tr, string, ph_digits);
}
if((control & 2) && ((tr->langopts.numbers & 0x10) == 0))
{
// ordinal
sprintf(string,"_%do",units);
if((found = Lookup(tr, string, ph_digits)) != 0)
{
found_ordinal = 1;
}
}
if(found == 0)
{
sprintf(string,"_%d",units);
Lookup(tr, string, ph_digits);
}
}
}
}

if(tr->langopts.numbers & 0x30)
ph_ordinal[0] = 0;
if((control & 2) && (found_ordinal == 0))
{
if((value >= 20) && (((value % 10) == 0) || (tr->langopts.numbers & 0x10)))
Lookup(tr, "_ord20", ph_ordinal);
if(ph_ordinal[0] == 0)
Lookup(tr, "_ord", ph_ordinal);
}

if((tr->langopts.numbers & 0x30) && (ph_tens[0] != 0) && (ph_digits[0] != 0))
{
Lookup(tr, "_0and", ph_and);
if(tr->langopts.numbers & 0x10)
sprintf(ph_out,"%s%s%s",ph_digits,ph_and,ph_tens);
sprintf(ph_out,"%s%s%s%s",ph_digits, ph_and, ph_tens, ph_ordinal);
else
sprintf(ph_out,"%s%s%s",ph_tens,ph_and,ph_digits);
sprintf(ph_out,"%s%s%s%s",ph_tens, ph_and, ph_digits, ph_ordinal);
used_and = 1;
}
else
@@ -993,7 +1029,7 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out)
ph_tens[ix] = 0;
}
}
sprintf(ph_out,"%s%s",ph_tens,ph_digits);
sprintf(ph_out,"%s%s%s",ph_tens, ph_digits, ph_ordinal);
}

if(tr->langopts.numbers & 0x100)
@@ -1015,9 +1051,11 @@ static int LookupNum2(Translator *tr, int value, int control, char *ph_out)
} // end of LookupNum2


static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null, int thousandplex, int prev_thousands)
{//====================================================================================================================
static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null, int thousandplex, int control)
{//=============================================================================================================
// Translate a 3 digit number
// control bit 0, previous thousands
// bit 1, ordinal number
int found;
int hundreds;
int x;
@@ -1039,7 +1077,16 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null
ph_thousands[0] = 0;
ph_thousand_and[0] = 0;

Lookup(tr, "_0C", ph_100);
found = 0;
if((control & 2) && ((value % 100) == 0))
{
// ordinal number, with no tens or units
found = Lookup(tr, "_0Co", ph_100);
}
if(found == 0)
{
Lookup(tr, "_0C", ph_100);
}

if(((tr->langopts.numbers & 0x0800) != 0) && (hundreds == 19))
{
@@ -1073,7 +1120,7 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null
ph_digits[0] = 0;
if(hundreds > 0)
{
if((tr->langopts.numbers & 0x100000) && (prev_thousands || (ph_thousands[0] != 0)))
if((tr->langopts.numbers & 0x100000) && ((control & 1) || (ph_thousands[0] != 0)))
{
Lookup(tr, "_0and", ph_thousand_and);
}
@@ -1111,7 +1158,7 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null
ph_hundred_and[0] = 0;
if((tr->langopts.numbers & 0x40) && ((value % 100) != 0))
{
if((value > 100) || (prev_thousands && (thousandplex==0)))
if((value > 100) || ((control & 1) && (thousandplex==0)))
{
Lookup(tr, "_0and", ph_hundred_and);
}
@@ -1121,16 +1168,15 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null
buf2[0] = 0;
value = value % 100;

if(value == 0)
{
if(suppress_null == 0)
Lookup(tr, "_0", buf2);
}
else
if((value != 0) || (suppress_null == 0))
{
x = 0;
if(thousandplex==0)
{
x = 1; // allow "eins" for 1 rather than "ein"
if(control & 2)
x = 3; // ordinal number
}
else
{
if(tr->langopts.numbers2 & (1 << thousandplex))
@@ -1150,6 +1196,9 @@ static int LookupNum3(Translator *tr, int value, char *ph_out, int suppress_null
} // end of LookupNum3


static const char *ordinalstr_en[] = {"th","st","nd","rd",NULL,};
static const char *ordinalstr_af[] = {"de","ste",NULL,};
static const char **ordinal_strings[] = {NULL, ordinalstr_en, ordinalstr_af};

static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned int *flags, int wflags)
{//====================================================================================================
@@ -1166,10 +1215,15 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
int thousandplex = 0;
int thousands_inc = 0;
int prev_thousands = 0;
int ordinal = 0;
int this_value;
static int prev_value;
int decimal_count;
int max_decimal_count;
int decimal_mode;
int len;
const char *p;
const char **pp;
char string[12]; // for looking up entries in de_list
char buf1[100];
char ph_append[50];
@@ -1182,6 +1236,30 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
n_digits = ix;
value = this_value = atoi(word);

if((tr->langopts.numbers & 0x10000) && (word[ix] == '.'))
{
// ordinal number
ordinal = 2;
word[ix] = ' ';
}
else
if(tr->langopts.ordinals)
{
// ordinal numbers are recognized by letters after the number
ix++;
pp = ordinal_strings[tr->langopts.ordinals];
while((p = *pp++) != NULL)
{
len = strlen(p);
if((word[ix+len] == ' ') && (memcmp(&word[ix], p, len) == 0))
{
ordinal = 2;
memset(&word[ix], ' ', len);
break;
}
}
}

ph_append[0] = 0;
ph_buf2[0] = 0;

@@ -1200,7 +1278,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
}
}

if((word[0] == '0') && (prev_thousands == 0) && (word[1] != tr->langopts.decimal_sep))
if((word[0] == '0') && (prev_thousands == 0) && (word[1] != ' ') && (word[1] != tr->langopts.decimal_sep))
{
if((n_digits == 2) && (word[3] == ':') && isdigit(word[5]) && isspace(word[7]))
{
@@ -1278,7 +1356,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
Lookup(tr, "_.", ph_append);
}

LookupNum3(tr, value, ph_buf, suppress_null, thousandplex, prev_thousands);
LookupNum3(tr, value, ph_buf, suppress_null, thousandplex, prev_thousands | ordinal);
if((thousandplex > 0) && (tr->langopts.numbers2 & 0x200))
sprintf(ph_out,"%s%s%s",ph_append,ph_buf2,ph_buf); // say "thousands" before its number
else
@@ -1296,7 +1374,7 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
if(decimal_count > 1)
{
max_decimal_count = 2;
switch(tr->langopts.numbers & 0xe000)
switch(decimal_mode = (tr->langopts.numbers & 0xe000))
{
case 0x8000:
max_decimal_count = 5;
@@ -1318,18 +1396,21 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned
break;

case 0x2000:
case 0xa000:
// Italian decimal fractions
if((decimal_count < 4) || ((decimal_count==4) && (word[n_digits] != '0')))
if(decimal_count <= 4)
{
LookupNum3(tr, atoi(&word[n_digits]), buf1, 0,0,0);
strcat(ph_out,buf1);
if(word[n_digits]=='0')
LookupNum3(tr, atoi(&word[n_digits]), ph_buf, 0,0,0);
if((word[n_digits]=='0') || (decimal_mode == 0xa000))
{
// decimal part has leading zeros, so add a "hundredths" or "thousandths" suffix
sprintf(string,"_0Z%d",decimal_count);
Lookup(tr, string, buf1);
strcat(ph_out,buf1);
if(Lookup(tr, string, buf1) == 0)
break; // revert to speaking single digits

strcat(ph_buf,buf1);
}
strcat(ph_out,ph_buf);
n_digits += decimal_count;
}
break;

+ 1
- 1
src/phonemelist.cpp View File

@@ -628,7 +628,7 @@ void MakePhonemeList(Translator *tr, int post_pause, int start_sentence)
phlist[ix].type = ph->type;
phlist[ix].env = PITCHfall; // default, can be changed in the "intonation" module
phlist[ix].synthflags = plist2->synthflags | switched_language;
phlist[ix].tone = plist2->stress & 0xf;
phlist[ix].stresslevel = plist2->stress & 0xf;
phlist[ix].tone_ph = plist2->tone_number;
phlist[ix].sourceix = 0;


+ 2
- 2
src/prosodydisplay.cpp View File

@@ -136,11 +136,11 @@ void ProsodyDisplay::SelectPh(int index)
if((p == NULL) || (p->ph == NULL)) return;

emphasized = "";
if(p->tone & 8)
if(p->stresslevel & 8)
emphasized = "*";

sprintf(buf,"Stress %s%d Amp %2d LenMod %2d Pitch %3d %3d [env=%d] Flags %.2x ",
emphasized,p->tone&0x7,p->amp,p->length,p->pitch1,p->pitch2,p->env,p->ph->phflags);
emphasized,p->stresslevel&0x7,p->amp,p->length,p->pitch1,p->pitch2,p->env,p->ph->phflags);
wxLogStatus(wxString(buf,wxConvLocal));
}


+ 6
- 4
src/readclause.cpp View File

@@ -862,8 +862,10 @@ static int AnnouncePunctuation(Translator *tr, int c1, int c2, char *buf, int bu

if(c1 == '-')
return(CLAUSE_NONE); // no pause
if(bufix > 0)
return(CLAUSE_SHORTCOMMA);
if((strchr_w(punct_close,c1) != NULL) && !iswalnum(c2))
return(CLAUSE_COLON);
return(CLAUSE_SHORTFALL+4);
if(iswspace(c2) && strchr_w(punct_stop,c1)!=NULL)
return(punct_attributes[lookupwchar(punct_chars,c1)]);
@@ -2029,7 +2031,7 @@ f_input = f_in; // for GetC etc
}
}
else
if((c1 == '<') && (ssml_ignore_l_angle != '<'))
if((c1 == '<') && (ssml_ignore_l_angle != '<') && ((c2 == '/') || iswalpha(c2)))
{
// SSML Tag
n_xml_buf = 0;
@@ -2300,10 +2302,10 @@ if(option_ssml) parag=1;
if((nl_count==0) && (c1 == '.'))
{
if(iswdigit(cprev) && (tr->langopts.numbers & 0x10000))
if(iswdigit(cprev) && (tr->langopts.numbers & 0x10000) && islower(c2))
{
// dot after a number indicates an ordinal number
c2 = ' ';
c2 = '.';
continue;
}
if(iswlower(c2))

+ 2
- 2
src/setlengths.cpp View File

@@ -298,8 +298,8 @@ void CalcLengths(Translator *tr)
{
prev = &phoneme_list[ix-1];
p = &phoneme_list[ix];
stress = p->tone & 0x7;
emphasized = p->tone & 0x8;
stress = p->stresslevel & 0x7;
emphasized = p->stresslevel & 0x8;

next = &phoneme_list[ix+1];


+ 1
- 0
src/speak.cpp View File

@@ -676,6 +676,7 @@ int main (int argc, char **argv)
break;

case 0x104: // --voices
init_path(argv[0],data_path);
DisplayVoices(stdout,optarg2);
exit(0);


+ 2
- 2
src/synthdata.cpp View File

@@ -35,7 +35,7 @@
#include "translate.h"
#include "wave.h"

const char *version_string = "1.40 22.Dec.08";
const char *version_string = "1.40.07 13.Jan.09";
const int version_phdata = 0x014000;

int option_device_number = -1;
@@ -46,7 +46,7 @@ int current_phoneme_table;
PHONEME_TAB *phoneme_tab[N_PHONEME_TAB];
unsigned char phoneme_tab_flags[N_PHONEME_TAB]; // bit 0: not inherited

unsigned int *phoneme_index=NULL;
static unsigned int *phoneme_index=NULL;
char *spects_data=NULL;
unsigned char *wavefile_data=NULL;
static unsigned char *phoneme_tab_data = NULL;

+ 1
- 1
src/synthesize.cpp View File

@@ -1394,7 +1394,7 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume)

case phVOWEL:
ph = p->ph;
stress = p->tone & 0xf;
stress = p->stresslevel & 0xf;

// vowel transition from the preceding phoneme
vowel_transition0 = vowel_transition[0];

+ 1
- 1
src/synthesize.h View File

@@ -183,7 +183,7 @@ typedef struct {
typedef struct {
PHONEME_TAB *ph;
unsigned char env; // pitch envelope number
unsigned char tone;
unsigned char stresslevel;
unsigned char type;
unsigned char prepause;
unsigned char amp;

+ 4
- 1
src/tr_languages.cpp View File

@@ -263,6 +263,7 @@ Translator *SelectTranslator(const char *name)
SetLetterVowel(tr,'y'); // add 'y' to vowels
tr->langopts.numbers = 0x8d1 + NUM_ROMAN;
tr->langopts.ordinals = 2;
tr->langopts.accents = 1;
}
break;
@@ -344,6 +345,7 @@ Translator *SelectTranslator(const char *name)

tr->langopts.stress_rule = 0;
tr->langopts.numbers = 0x841 + NUM_ROMAN;
tr->langopts.ordinals = 1;
tr->langopts.param[LOPT_COMBINE_WORDS] = 2; // allow "mc" to cmbine with the following word
}
break;
@@ -554,7 +556,7 @@ Translator *SelectTranslator(const char *name)
tr->langopts.param[LOPT_IT_DOUBLING] = 1;
tr->langopts.param[LOPT_COMBINE_WORDS] = 99; // combine some prepositions with the following word

tr->langopts.numbers = 0x1009 + NUM_ROMAN;
tr->langopts.numbers = 0x1009 + 0xa000 + NUM_ROMAN + 0x10000;
SetLetterVowel(tr,'y');
tr->langopts.spelling_stress = 1;
SetLengthMods(tr,3); // all equal
@@ -1038,6 +1040,7 @@ SetLengthMods(tr,3); // all equal
break;

default:
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words
break;
}


+ 19
- 5
src/translate.cpp View File

@@ -74,6 +74,7 @@ static int word_emphasis = 0; // set if emphasis level 3 or 4

static int prev_clause_pause=0;
static int max_clause_pause = 0;
int pre_pause;


// these were previously in translator class
@@ -641,6 +642,7 @@ int TranslateWord(Translator *tr, char *word1, int next_pause, WORD_TAB *wtab)
found = LookupDictList(tr, &word1, phonemes, dictionary_flags, FLAG_ALLOW_TEXTMODE, wtab); // the original word
if(dictionary_flags[0] & FLAG_TEXTMODE)
{
first_char = word1[0];
stress_bits = dictionary_flags[0] & 0x7f;
found = LookupDictList(tr, &word1, phonemes, dictionary_flags2, 0, wtab); // the text replacement
if(dictionary_flags2[0]!=0)
@@ -1172,7 +1174,7 @@ strcpy(phonemes2,phonemes);
if(dictionary_flags[1] & FLAG_NOUNF)
{
/* not expecting a verb next */
tr->expect_noun = 3;
tr->expect_noun = 2;
tr->expect_verb = 0;
tr->expect_verb_s = 0;
tr->expect_past = 0;
@@ -1942,7 +1944,6 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t
int next_in;
int char_inserted=0;
int clause_pause;
int pre_pause=0;
int pre_pause_add=0;
int word_mark = 0;
int all_upper_case=FLAG_ALL_UPPER;
@@ -1972,13 +1973,13 @@ void *TranslateClause(Translator *tr, FILE *f_text, const void *vp_input, int *t
int tone;
int tone2;


p_textinput = (char *)vp_input;
p_wchar_input = (wchar_t *)vp_input;

embedded_ix = 0;
embedded_read = 0;
option_phoneme_input &= ~2; // clear bit 1 (temporary indication)
pre_pause = 0;

if((clause_start_char = count_characters) < 0)
clause_start_char = 0;
@@ -2409,12 +2410,15 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
}
}
else
#ifdef deleted
// Brackets are now recognised in TranslateRules()
if(IsBracket(c))
{
pre_pause_add = 4;
c = ' ';
}
else
#endif
if(lookupwchar(breaks,c) != 0)
{
c = ' '; // various characters to treat as space
@@ -2636,10 +2640,13 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
}
}
}
pn[0] = ' ';
pn[1] = 0;
word = pw;

// include the next few characters, in case there are an ordinal indicator
pn[0] = ' ';
memcpy(pn+1, pw, 5);
pn[5] = 0;

for(pw = &number_buf[1]; pw < pn;)
{
TranslateWord2(tr, pw, &words[ix], words[ix].pre_pause,0 );
@@ -2650,8 +2657,15 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
}
else
{
pre_pause = 0;
dict_flags = TranslateWord2(tr, word, &words[ix], words[ix].pre_pause, words[ix+1].pre_pause);

if(pre_pause > words[ix+1].pre_pause)
{
words[ix+1].pre_pause = pre_pause;
pre_pause = 0;
}

if(dict_flags & FLAG_SPELLWORD)
{
// redo the word, speaking single letters

+ 4
- 1
src/translate.h View File

@@ -175,7 +175,8 @@
#define CLAUSE_VOICE 0 + 0x24000
#define CLAUSE_PERIOD 35 + 0x80000
#define CLAUSE_COMMA 20 + 0x41000
#define CLAUSE_SHORTCOMMA 5 + 0x41000
#define CLAUSE_SHORTCOMMA 4 + 0x41000
#define CLAUSE_SHORTFALL 4 + 0x40000
#define CLAUSE_QUESTION 35 + 0x82000
#define CLAUSE_EXCLAMATION 40 + 0x83000
#define CLAUSE_COLON 30 + 0x40000
@@ -363,6 +364,7 @@ typedef struct {
int max_roman;
int thousands_sep;
int decimal_sep;
int ordinals;

// bit 0, accent name before the letter name, bit 1 "capital" after letter name
int accents;
@@ -496,6 +498,7 @@ extern int end_character_position;
extern int clause_start_char;
extern int clause_start_word;
extern char *namedata;
extern int pre_pause;




Loading…
Cancel
Save