Allow .txt release for *_rules and *_list files. Rules lookup, consider multi-byte characters when calculating matchign points. Fix bug in Roman Number translation. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@232 d46cf337-b52f-0410-862d-fd96e6ae7743master
@@ -220,17 +220,21 @@ amanzimtoti $4 | |||
antwerpen antv&rp@n | |||
babilon babilOn | |||
bangladesj baNglad'ES | |||
barcelona bars@l'o@na | |||
barkly _^_EN | |||
bellevue b&lvju: | |||
bermuda $2 | |||
bethlehem bEt_liEm | |||
boedapest budapEst | |||
boekarest bukarEst | |||
bogotá bOgOt'A: | |||
bolivië bul'Ivi:@ | |||
bonnievale _^_EN | |||
bordeaux bOrd'@U | |||
boston _^_EN | |||
brittanje $2 | |||
brooklyn _^_EN | |||
(buenos aires) bwEnOs_'aIrEs | |||
burundi bur'undi | |||
caledon kalidOn | |||
carolina karul'ina | |||
@@ -246,6 +250,7 @@ colesberg ko@lsb&rx2 | |||
constantia $2 | |||
christiana kr@stij'A:na | |||
damaskus d@maskWs | |||
denemarke de@n@mark@ | |||
djakarta dZak'arta | |||
doebaai $2 | |||
duitswes dYytsv'Es | |||
@@ -253,6 +258,7 @@ ermelo &rm@lo@ | |||
franschhoek frA~nsh'uk | |||
gadara x2@dA:ra | |||
galilea x2al@l'i:a | |||
genève Z@nE:v | |||
germiston _^_EN | |||
getsémané x2Ets'e@mani | |||
gonubie g@nu:bi | |||
@@ -268,6 +274,7 @@ hirosjima hiruS'ima | |||
israel IsraI:l | |||
italië it'A:li;@ | |||
jeffreysbaai dZEfrisb'AI | |||
junín x2un'in | |||
kalafong kalaf'ON | |||
kanada kanad%a | |||
kanaän kA:nA:an | |||
@@ -302,14 +309,21 @@ moorreesburg mur'e@sbWrx2 | |||
europa Y@r'o@pa | |||
nigel _^_EN | |||
nineve nIn@fi | |||
oklahoma @Ukl@h'@Uma | |||
outeniekwa @Ut@n'ikwa | |||
oxford _^_EN | |||
palermo pal'&rmu | |||
pelindaba p&l@nd'A:ba | |||
perú p@ru | |||
piketberg p@kEtb&rx2 | |||
portugal pOrtyx2al | |||
potchefstroom pOtSIfstr'o@m | |||
rhône _^_FR | |||
richardsbaai ritS@dsb'AI | |||
robertson _^_EN | |||
sahara sah'A:ra | |||
salvador salvadO:r | |||
santiago santi;'A:gu | |||
secunda s@kunda | |||
senekal se@n@kal | |||
seychelle seIS'&l@ | |||
@@ -334,6 +348,7 @@ washington _^_EN | |||
wellington wEliNt@n | |||
wolseley wulsli | |||
uganda ug'anda | |||
uruguay urugwaI | |||
zimbabwe zI:mb'ab_wE | |||
zulu zulu // Kwazulu-Natal | |||
@@ -353,7 +368,9 @@ annalet anal'Et | |||
André 'andreI | |||
annette an'Et | |||
antoinette antun'Et | |||
archimedes arx2im'e@dEs | |||
aristoteles arist'o@t@lEs | |||
arthur _^_EN | |||
badenhorst bA:d@nhOrst | |||
barbara bA:b@ra | |||
basson $2 | |||
@@ -376,6 +393,7 @@ bredenkamp bre@d@nkamp | |||
bruwer bruw'&:r | |||
caesar siz@r | |||
carl kA:r@L | |||
carlyle _^_EN | |||
carol _^_EN | |||
casanova kasan'o@va | |||
cecil sEs@l | |||
@@ -415,7 +433,9 @@ derick dErik | |||
deventer d'e@v@nt@r | |||
diana dij'A:na | |||
donaldson _^_EN | |||
dostojewski dOstOj'Evski | |||
du $u | |||
duncan daNk@-n | |||
(du pisanie) du||pis'A:ni | |||
(du plessis) du||pl@s'i | |||
(du plooy) d@||ploI | |||
@@ -442,6 +462,7 @@ farao fA:ro@ | |||
ferreira f@r&:r@ | |||
filemon f'il@mOn | |||
fischer fiS@r | |||
flaubert _^_FR | |||
floris $1 | |||
fouché fuS'e@ | |||
fourie fur'i | |||
@@ -457,8 +478,10 @@ gerhardus $2 | |||
gertruida $2 | |||
gilbert _^_EN | |||
gloria glO:ria | |||
gordon _^_EN | |||
grange x2rA:nsi | |||
grové x2ruv'e@ | |||
gulliver _^_EN | |||
gustav gustaf | |||
guy _^_EN | |||
hamlet _^_EN | |||
@@ -472,6 +495,7 @@ henry _^_EN | |||
herklaas $1 | |||
herkules $1 | |||
hilde hild@ | |||
ibsen ibs@n | |||
ilse 'ilz@ | |||
ingrid iNgr@d | |||
isabel is@b&l | |||
@@ -490,6 +514,8 @@ jordaan $2 | |||
joris $1 | |||
josef jo@s@f | |||
josephina jo@s@f'ina | |||
josé _^_ES | |||
juan x2wan | |||
juanita juan'ita | |||
julia _^_EN | |||
khayyam kaj'am | |||
@@ -510,6 +536,7 @@ levi le@fi | |||
liesbet lisbEt | |||
louis luI | |||
louise luw'i:z | |||
lukas lukas | |||
mackintosh _^_EN | |||
madelene mad@l'e@n | |||
mbeki mbE:ki | |||
@@ -533,6 +560,7 @@ mary _^_EN | |||
mathilda mat'Ilda | |||
matteus mat'i:Ws | |||
matthee mat'e@ | |||
mattheüs mat'i:Ws | |||
matthéüs mat'i:Ws | |||
maureen _^_EN | |||
mefistofeles mEfist'o@f@l@s | |||
@@ -566,9 +594,10 @@ petronella pe@trun'&la | |||
petrus pe@trWs | |||
phoebe fi:bi | |||
picasso pik'asu | |||
piketberg pik'Etb&rx2 | |||
pinokkio pin'Oki;u | |||
pretorius pr@to@riWs | |||
pythagoras pit'A:x2o@ras | |||
quijote kix2'OtE | |||
quixote kix2'OtE | |||
rachmaninoff rax2m'aninOf | |||
rademeyer rA:d@meI@r | |||
@@ -607,6 +636,7 @@ sophia suf'i:ja | |||
sophie _^_EN | |||
stephan ste@fan | |||
stephanus st@fA:nWs | |||
stevenson _^_EN | |||
strauss straUs | |||
stockenström stOk@nstro@m | |||
suzanne suz'A:n | |||
@@ -624,6 +654,7 @@ totius to@SiWs | |||
trudie trudi | |||
versfeld f&rsf< | |||
veronica _^_EN | |||
victor _^_EN | |||
victoria _^_EN | |||
viljoen $2 | |||
villiers vIli@rs | |||
@@ -668,6 +699,7 @@ peugeot pW:Z@U | |||
porsche pOrS@ | |||
port pOrt $1 | |||
rover _^_EN | |||
sorbonne _^_FR | |||
sotho su:tu | |||
toyota $2 | |||
venda vEnda | |||
@@ -905,12 +937,14 @@ effense Ef@ns@ | |||
eks Eks | |||
ekself %&ks'&lf | |||
elders &ld@rs | |||
elementale El@mEnt'A:l@ | |||
elite il'i:t | |||
encore A~NkO:r | |||
enige e@nIx2@ | |||
eone $2 | |||
era e@ra | |||
erger &rg@r | |||
ergering &rg@r@N | |||
espeak i:;spi:k | |||
(et cetera) Ets'Et@ra | |||
euro Y@ru | |||
@@ -934,6 +968,7 @@ geldelike x2&ld@l@k@ | |||
genade $2 | |||
genesis x2e@n@s@s | |||
//gesamentlik x2@sA:m@ntl@k | |||
gentleman _^_EN | |||
gewellys x2e@v@lleIs | |||
gladiator x2ladi'A:tOr | |||
globale x2lo@b'A:l@ | |||
@@ -973,6 +1008,7 @@ impromptu impr'Omptu | |||
inagneming @nax2ne@m@N | |||
indien Indin $verb | |||
induna ind'u:na | |||
infame @nfA:m@ | |||
ingevolge $3 | |||
inkatha iNk'A:ta | |||
inkluis $2 | |||
@@ -1008,6 +1044,7 @@ lokaas lOk_A:s | |||
londense lOnd@ns@ | |||
lord _^_EN | |||
luidop lYyt_Op | |||
lykwaak leIkvA:k | |||
macaroni makar'o@ni | |||
madame mad'A:m | |||
@@ -1065,6 +1102,7 @@ ommekeer Om@ke@r | |||
omrede $2 | |||
omtrent Omtr'Ent | |||
onbegrip $1 | |||
onbruik $1 | |||
onderrig On@r'Ix2 $verb | |||
ondersoek $3 $verb | |||
onderweg $3 | |||
@@ -1150,6 +1188,7 @@ sedertdien $3 | |||
sektore $2 | |||
sinagoge s@n@x2o@x2@ | |||
senatore s@nat'o@r@ | |||
siesta si;'Esta | |||
singenot sInx2@nOt | |||
sir _^_EN | |||
skepsele skEps@l@ | |||
@@ -1205,7 +1244,6 @@ veraf f&r_af | |||
verafgeleë f&rafx2@le@@ | |||
verby f@rbeI | |||
verdere f&rd@r@ | |||
vererger f@r&rg@r | |||
ver f'&:r | |||
vereduifie fe@r@dYyfi | |||
verg f&rx2 |
@@ -89,7 +89,7 @@ Y: | |||
* : ; b C C2 d D | |||
dZ f g h j k l m | |||
n N p pF r s S t | |||
tS ts v x z Z | |||
tS ts v w x z Z | |||
Dictionary el_dict | |||
@@ -612,3 +612,16 @@ oi ong ou u ui yu | |||
b c d f g h j k | |||
l m n N p r s t | |||
tS v w z | |||
Dictionary ur_dict | |||
@ a a: aI aU E e: i | |||
I i: O o: U u: | |||
: b bh c ch d D d. | |||
dh dh. dZ f g gh H j | |||
J Jh k kh l m n N | |||
p ph Q q R r. s S | |||
s. t T t. th th. v x | |||
z Z z. |
@@ -567,7 +567,7 @@ antigen $1 | |||
antihero $1 | |||
antilog $1 | |||
antimatter $1 | |||
antinomy ant'In@mI | |||
antimony $2 | |||
antioch $1 | |||
antipathy ant'Ip@TI | |||
antiphonal ant'If@n@L | |||
@@ -1347,6 +1347,7 @@ japan dZ@pan | |||
jasmine dZazmIn | |||
jesus dZi:z@s | |||
joky dZoUkI | |||
jour ZU@ // french | |||
jukebox dZu:kb0ks | |||
july dZu:l'aI | |||
@@ -2606,10 +2607,12 @@ Dinah daIn@ | |||
Dominic d0mI2nIk | |||
Donaghy d0n'hi: | |||
Doris d0rIs | |||
Dorothy dO@r@Ti | |||
Dougall du:g@L | |||
Dylan dIl@n | |||
Edith i:dIT | |||
Elizabeth I2lIz@b@T | |||
Emily EmI2lI | |||
Emma Em@ | |||
Emmy EmI | |||
Etheridge ET@-rIdZ |
@@ -4004,7 +4004,6 @@ | |||
r) ouge u:Z | |||
_) ough O: | |||
ough (t O: | |||
ough (* OI | |||
ough oU | |||
b) ough aU | |||
b) ough (t O: | |||
@@ -4447,6 +4446,7 @@ | |||
_) re (emP2 r%i: | |||
_) re (enP2 r%i: | |||
_) re (eqP2 r%i: | |||
_) re (esP2 r%i: | |||
_) re (exP2 r%i: | |||
referend rEf@r'End | |||
re (fug rE | |||
@@ -5102,7 +5102,7 @@ | |||
?5 ss) wor (d wVR | |||
wor (th_ w3: | |||
?5 wor (th_ wVR | |||
s) w (ick | |||
As) w (ick | |||
.group x | |||
_) x (C Eks | |||
@@ -5123,7 +5123,6 @@ | |||
_) y (n@ V | |||
_) y (s@ V | |||
C) y (abl I2 | |||
y (y | |||
y (C I | |||
C) y %I | |||
y (ar j |
@@ -825,6 +825,39 @@ velem $unstressend | |||
velünk $unstressend | |||
veletek $unstressend | |||
velük $unstressend | |||
közt $unstressend | |||
hiszik $unstressend | |||
hiszitek $unstressend | |||
önt $unstressend | |||
benn $unstressend | |||
kinn $unstressend | |||
kés $unstressend | |||
néz $unstressend | |||
vont $unstressend | |||
fiút $unstressend | |||
von $unstressend | |||
nézett $unstressend | |||
rám $unstressend | |||
rád $unstressend | |||
mód $unstressend | |||
győz $unstressend | |||
repült $unstressend | |||
ül $unstressend | |||
gyújt $unstressend | |||
hajt $unstressend | |||
köp $unstressend | |||
látni $unstressend | |||
sült $unstressend | |||
roncs $unstressend | |||
is $unstressend | |||
fut $unstressend | |||
ló $unstressend | |||
véljük $unstressend | |||
vélik $unstressend | |||
vélem $unstressend | |||
véled $unstressend | |||
véli $unstressend | |||
vélitek $unstressend | |||
// word pairs | |||
@@ -31,7 +31,7 @@ | |||
biz (A biz, // bizalmas etc. | |||
biedermeier bi:dER2ma:jER2 | |||
_) batthiány bAc:a:n^i | |||
_) batthiány bAc:a:n^i | |||
.group c | |||
c ts | |||
@@ -147,7 +147,8 @@ hierar) ch (i h | |||
rövi) d (zárlat d | |||
sarja) d (zik d | |||
nyála) d (z d | |||
ren) dsz (erint d|s | |||
ren) dsz (erint d|s | |||
szaba) d (szájú d | |||
.group dz | |||
fogó) dz (kod ts | |||
@@ -276,6 +277,7 @@ _minde) gy (ik J: | |||
e) gy (sínű J | |||
e) gy (sor J | |||
né) gy (sor J | |||
e) gy (es-egyedül J //need one J phoneme with this word, not J: phoneme | |||
.group h | |||
h h | |||
@@ -291,8 +293,8 @@ _minde) gy (ik J: | |||
.group í | |||
í i: | |||
íts i:tS: | |||
ítsd i:tSd | |||
ítsd i:tSd | |||
t) í (zen i | |||
t) í (zet i | |||
v) í (zen i | |||
@@ -410,9 +412,11 @@ negyve) n (yard n | |||
pero) n (jegy n | |||
ö) n (járó n | |||
tulajdo) n (jog n | |||
ko) nn (ektor n //connector word, we spokening one n letter, not two n letter | |||
ko) nn (ektor n //connector word, we spokening one n letter, not two n letter | |||
me) nj (_S2 n^ | |||
be) nn (szülött n | |||
éle) n (jár n | |||
magá) n (jelleg n | |||
.group o | |||
o o | |||
@@ -453,7 +457,7 @@ ko) nn (ektor n //connector word, we spokening one n letter, not two n letter | |||
_) richa (rd R2iCa: | |||
_) richá (rd R2iCa: | |||
reichsmarschall R2EjsmAR2SAl: | |||
?!2 _) roose (velt R2u:z@ | |||
?!2 _) roose (velt R2u:z | |||
.group s | |||
@@ -635,6 +639,12 @@ köhögé) ssz (erű Ss | |||
vi) ssz (hang s | |||
felelő) ss (ég S | |||
égzengé) ssz (erű Ss | |||
világo) ssz (ürke Ss | |||
motoro) ssz (emüveg Ss | |||
bőgé) ssz (erű Ss | |||
kavará) ssz (erű Ss | |||
_sa) ssz (eg Ss | |||
.group sz | |||
sz s | |||
@@ -796,20 +806,23 @@ passzá) t (szél t | |||
épüle) t (sarok t | |||
mene) t (sor t | |||
skó) t (sapka t | |||
lé) t (jogosultsága t | |||
bérle) t (jegy t | |||
csapa) t (játék t | |||
ese) t (jog t | |||
fejeze) t (jel t | |||
ké) t (jegyű t | |||
krike) tt (játék t: | |||
mene) t (jegy t | |||
szüne) t (jel t | |||
ú) t (jelző t | |||
ú) t (jog t | |||
gondola) t (jel t | |||
helyze) t (jel t | |||
lé) t (jogosultsága t | |||
bérle) t (jegy t | |||
csapa) t (játék t | |||
ese) t (jog t | |||
fejeze) t (jel t | |||
ké) t (jegyű t | |||
krike) tt (játék t: | |||
mene) t (jegy t | |||
szüne) t (jel t | |||
ú) t (jelző t | |||
ú) t (jog t | |||
gondola) t (jel t | |||
helyze) t (jel t | |||
folyama) t (sáv t | |||
ada) t (szolgáltat t | |||
_ú) t (sáv t | |||
négyze) t (centi t | |||
.group ts | |||
ts (_S2 tS //general rule with word end of ts letters | |||
@@ -819,6 +832,7 @@ helyze) t (jel t | |||
já) tsz ts: | |||
já) tssz ts: | |||
já) tsz (m ts | |||
já) tsz (hat ts | |||
tsz (_S3 ts: | |||
tsz (é ts: | |||
tsz (o ts: | |||
@@ -884,6 +898,7 @@ indula) tsz (ó t|s | |||
.group ú | |||
ú u: | |||
h) ú (szan u | |||
.group ü | |||
ü y | |||
@@ -893,6 +908,7 @@ indula) tsz (ó t|s | |||
.group ű | |||
ű y: | |||
t) ű (zijáték y | |||
.group v | |||
v v | |||
@@ -993,16 +1009,18 @@ találko) z (t s | |||
nehé) z (súly z | |||
raj) z (szeg z | |||
raj) z (szög z | |||
pén) z (t s | |||
rende) z (ked s | |||
kocká) z (tat s | |||
hibá) z (tat s | |||
különbö) z (tet s | |||
válto) z (tat s | |||
válto) z (tass s | |||
tájéko) z (tat s | |||
tájéko) z (tass s | |||
pén) z (t s | |||
rende) z (ked s | |||
kocká) z (tat s | |||
hibá) z (tat s | |||
különbö) z (tet s | |||
válto) z (tat s | |||
válto) z (tass s | |||
tájéko) z (tat s | |||
tájéko) z (tass s | |||
mé) z (szín z | |||
bi) z (tat s | |||
rá) z (kód s | |||
.group |
@@ -206,7 +206,7 @@ tamil தமிழ் $text | |||
போனஸ் $alt | |||
போகி $alt | |||
பாபா ba:ba: | |||
புத்த buddV | |||
//புத்த buddV | |||
// initial த as [d] | |||
@@ -246,6 +246,9 @@ tamil தமிழ் $text | |||
கட $alt | |||
கோ $alt | |||
கதி $alt | |||
கோபி $alt | |||
கச்சாமி $alt | |||
குரு $alt | |||
பப pVpV |
@@ -39,6 +39,9 @@ | |||
க்க (B kk | |||
ற்) க _kV | |||
ற்) க (B _k | |||
ட்) க kV | |||
ட்) க (B k | |||
க (ிரு k | |||
க (ீத g | |||
க (ஜ gV | |||
@@ -55,7 +58,6 @@ | |||
_) க (ாந்த g | |||
_) க (ுண்ட g | |||
_) க (ோபுர g | |||
_) க (ுரு g | |||
_) க (ுகன g | |||
_) க (ணபதி gV | |||
_) க (ணீர gV | |||
@@ -66,13 +68,28 @@ | |||
_) க (தியில் gV | |||
_) க (டிகார gV | |||
வி) க்ட (ோரியா kt. // victoria | |||
க (ோப g | |||
க (ாரன k | |||
க (ாரர k | |||
_) க (ோபம k | |||
_) கோப (ித்து ko:b | |||
_) க (ோபப் k | |||
_) க (ெட்டி g | |||
_) க (வண gV | |||
_) க (ோகுல g | |||
கோப (ால go:p | |||
_) க (ோபிய g | |||
_) க (ோபிநா g | |||
_) க (ோபிசெட் g | |||
_) க (ூடலூர g | |||
_) க (ுடியாத்த g | |||
_) க (வன gV | |||
_) க (ுருவின g | |||
_) க (ுருவிட g | |||
_) க (ுருக்கள g | |||
_) க (ுருவோட g | |||
_) க (ுருவுடை g | |||
_) க (ுருரா g | |||
_) க (ுருநா g | |||
_) க (ுருவாய g | |||
.group ங | |||
@@ -99,9 +116,13 @@ | |||
_) ச (ிட் tS | |||
_) ச (ின் tS | |||
_) ச (ேரி tS | |||
_) ச (ப்பாத்தி tSV | |||
_) சிரு (ஷ்டி sri | |||
ச (ாந்தி s. | |||
ச (ண்மு s.V | |||
.group ஜ | |||
ஜ dZV | |||
@@ -154,6 +175,7 @@ | |||
_) த (ுஷ் d | |||
_) த (க்ஷிணா dV | |||
_) த (ண்ட dV | |||
_) த (ண்டவாள tV | |||
_) த (ருமி dV | |||
_) த (ர்பை dV | |||
_) த (ாவா d | |||
@@ -167,7 +189,7 @@ | |||
_) த (ினுச d | |||
_) த (ாராவி d | |||
_) த (ர்க dV | |||
_) த (ான d | |||
// _) த (ான d | |||
_) த (ேக d | |||
_) த (ேக்கு t | |||
_) த (ேக்கிலை t | |||
@@ -222,12 +244,49 @@ | |||
_) த (ன்ராஜ dV | |||
_) த (ாராபுர d | |||
_) த (டி_மாட dV | |||
_) த (ேவன d | |||
_) த (ேவி d | |||
_) த (ேவர்க d | |||
_) த (ேவதை d | |||
_) த (ேவாம்ச d | |||
_) த (ிவ்ய d | |||
_) த (ிண்டிவன d | |||
_) த (ுறை d | |||
_) த (ிண்டுக்கல d | |||
_) த (மயந்தி dV | |||
_) த (ுரோண d | |||
_) த (ுரியோதனன d | |||
_) த (ுச்சாதனன d | |||
_) த (ிரௌபதி d | |||
யு) த்த ddV | |||
யு) த்த(B dd | |||
பு) த்த (ி dd | |||
பு) த்த (ியி dd | |||
பு) த்த (ர ddV | |||
பு) த்த (ன ddV | |||
_சாந்) த (ி t | |||
_சும) த (ி t | |||
_வசந்) த (ி t | |||
_சுகந்) த (ி t | |||
_வனி) த (ா t | |||
_சுனி) த (ா t | |||
_ல) த (ா t | |||
பிரேமல) த (ா t | |||
_ரேவ) த (ி t | |||
_வினி) த (ா t | |||
_வசந்) த tV | |||
_பார்வ) த (ி t | |||
பிரபாவ) த (ி t | |||
_கோம) த (ி t | |||
_பிர) த (ீ t | |||
_) திரு (ஷ்டி dri | |||
_) திரு (திரா dri | |||
_) துர (ோண tr | |||
_) திர (ௌபதி tr | |||
.group ந | |||
ந nV | |||
@@ -264,46 +323,46 @@ | |||
த) ப (ா p | |||
த) ப (B b | |||
பத (ி pVt | |||
@) பத (ி pVt | |||
ப (ுர p | |||
ப (ால p | |||
ப (ாள p | |||
ம்) ப (ா b | |||
_) ப (ால b | |||
_) ப (ால் p | |||
// _) ப (ால b | |||
_) ப (ால் p | |||
_) ப (ாலின் p | |||
_) ப (ாலை p | |||
_) ப (ாலில் p | |||
// _) ப (ாலில் p | |||
_) ப (ாலுடன் p | |||
_) ப (ாலினுடைய p | |||
// _) ப (ாலினுடைய p | |||
_) ப (ாலாபிஷேக p | |||
_) ப (ாலு b | |||
_) ப (ானு b | |||
_) ப (ீம b | |||
_) ப (ாலு b | |||
_) ப (ானு b | |||
_) ப (ீம b | |||
_) ப (காசுர bV | |||
_) ப (ோஜ b | |||
_) ப (தில bV | |||
_) ப (ஜ bV | |||
_) ப (ோஜ b | |||
_) ப (தில bV | |||
_) ப (ஜ bV | |||
_) ப (ைரவ b | |||
_) ப (யம bV | |||
_) ப (யம bV | |||
_) ப (ார்கவி b | |||
_) ப (ூதேவி b | |||
_) ப (ம்பாய bV | |||
_) ப (ாதுஷா b | |||
_) ப (க்த bV | |||
_) ப (லம bV | |||
_) ப (க்த bV | |||
_) ப (லம bV | |||
_) ப (லவான bV | |||
_) ப (ிராமண b | |||
_) ப (ிரம்ம b | |||
_) ப (ம்பர bV | |||
_) ப (லூன bV | |||
_) ப (ூமி b | |||
_) ப (ம்பர bV | |||
_) ப (லூன bV | |||
_) ப (ூமி b | |||
_) ப (ூலோக b | |||
_) ப (ூகோல b | |||
_) ப (ூத b | |||
_) ப (ூத b | |||
_) ப (ுதன b | |||
_) ப (லி bV | |||
_) ப (கவான bV | |||
@@ -321,9 +380,44 @@ | |||
_) ப (ோபால b | |||
_) ப (ெங்களூர b | |||
_) ப (ூபாள b | |||
_) ப (ுத்த b | |||
_) புத்த(K buddV | |||
_) புத் (தJ_புத+ put | |||
_) ப (னியன bV | |||
கோ) ப (ி p | |||
_) ப (ாலச b | |||
_) ப (ாலக b | |||
_) ப (ாலமு b | |||
_) ப (ாலதண் b | |||
_) ப (ூவுலக b | |||
_) ப (ிரகஸ்பதி b | |||
_) ப (ிரகதீ b | |||
_) ப (ொம்மை b | |||
_) ப (ொம்மல b | |||
_) ப (ாக்கி b | |||
_) ப (ஸ bV | |||
_) ப (ாஷை b | |||
_) ப (ிரம்மை b | |||
_) ப (ாரம b | |||
_) ப (ங்களா bV | |||
_) ப (ங்கம bV | |||
_) ப (ுட்டி b | |||
_) பிர (ம்மன brV | |||
_) பிர (ாமணன br | |||
_) பிர (கஸ்பதி brV | |||
_) பிர (கதீ brV | |||
_) பிர (கலாதன prV | |||
_) பிர (காஷ prV | |||
_) பிர (காச prV | |||
_) பிர (சாத prV | |||
_) பிர (ே pr | |||
_) பிரு (கன்நளை bri | |||
_) பிர (சாந்தி prV | |||
_) பிர (ம்மை brV | |||
_) பிர (சன்ன prV | |||
_) பிர (ச்சனை prV | |||
_) பிர (ப prV | |||
_) பிர (தீ prV | |||
// musical notes |
@@ -24,6 +24,7 @@ | |||
/* This is the header file for the library version of espeak */ | |||
/* */ | |||
/*************************************************************/ | |||
#define ESPEAK_API __declspec(dllexport) | |||
#include <stdio.h> | |||
@@ -151,7 +152,7 @@ typedef enum { | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
int espeak_Initialize(espeak_AUDIO_OUTPUT output, int buflength, const char *path, int options); | |||
ESPEAK_API int espeak_Initialize(espeak_AUDIO_OUTPUT output, int buflength, const char *path, int options); | |||
/* Must be called before any synthesis functions are called. | |||
output: the audio data can either be played by eSpeak or passed back by the SynthCallback function. | |||
@@ -170,7 +171,7 @@ typedef int (t_espeak_callback)(short*, int, espeak_EVENT*); | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
void espeak_SetSynthCallback(t_espeak_callback* SynthCallback); | |||
ESPEAK_API void espeak_SetSynthCallback(t_espeak_callback* SynthCallback); | |||
/* Must be called before any synthesis functions are called. | |||
This specifies a function in the calling program which is called when a buffer of | |||
speech sound data has been produced. | |||
@@ -198,7 +199,7 @@ int SynthCallback(short *wav, int numsamples, espeak_EVENT *events); | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
void espeak_SetUriCallback(int (*UriCallback)(int, const char*, const char*)); | |||
ESPEAK_API void espeak_SetUriCallback(int (*UriCallback)(int, const char*, const char*)); | |||
/* This function may be called before synthesis functions are used, in order to deal with | |||
<audio> tags. It specifies a callback function which is called when an <audio> element is | |||
encountered and allows the calling program to indicate whether the sound file which | |||
@@ -239,7 +240,7 @@ int UriCallback(int type, const char *uri, const char *base); | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
espeak_ERROR espeak_Synth(const void *text, | |||
ESPEAK_API espeak_ERROR espeak_Synth(const void *text, | |||
size_t size, | |||
unsigned int position, | |||
espeak_POSITION_TYPE position_type, | |||
@@ -295,7 +296,7 @@ espeak_ERROR espeak_Synth(const void *text, | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
espeak_ERROR espeak_Synth_Mark(const void *text, | |||
ESPEAK_API espeak_ERROR espeak_Synth_Mark(const void *text, | |||
size_t size, | |||
const char *index_mark, | |||
unsigned int end_position, | |||
@@ -319,7 +320,7 @@ espeak_ERROR espeak_Synth_Mark(const void *text, | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
espeak_ERROR espeak_Key(const char *key_name); | |||
ESPEAK_API espeak_ERROR espeak_Key(const char *key_name); | |||
/* Speak the name of a keyboard key. | |||
If key_name is a single character, it speaks the name of the character. | |||
Otherwise, it speaks key_name as a text string. | |||
@@ -333,7 +334,7 @@ espeak_ERROR espeak_Key(const char *key_name); | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
espeak_ERROR espeak_Char(wchar_t character); | |||
ESPEAK_API espeak_ERROR espeak_Char(wchar_t character); | |||
/* Speak the name of the given character | |||
Return: EE_OK: operation achieved | |||
@@ -378,7 +379,7 @@ typedef enum { | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int value, int relative); | |||
ESPEAK_API espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int value, int relative); | |||
/* Sets the value of the specified parameter. | |||
relative=0 Sets the absolute value of the parameter. | |||
relative=1 Sets a relative value of the parameter. | |||
@@ -414,7 +415,7 @@ espeak_ERROR espeak_SetParameter(espeak_PARAMETER parameter, int value, int rela | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
int espeak_GetParameter(espeak_PARAMETER parameter, int current); | |||
ESPEAK_API int espeak_GetParameter(espeak_PARAMETER parameter, int current); | |||
/* current=0 Returns the default value of the specified parameter. | |||
current=1 Returns the current value of the specified parameter, as set by SetParameter() | |||
*/ | |||
@@ -422,7 +423,7 @@ int espeak_GetParameter(espeak_PARAMETER parameter, int current); | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
espeak_ERROR espeak_SetPunctuationList(const wchar_t *punctlist); | |||
ESPEAK_API espeak_ERROR espeak_SetPunctuationList(const wchar_t *punctlist); | |||
/* Specified a list of punctuation characters whose names are to be spoken when the | |||
value of the Punctuation parameter is set to "some". | |||
@@ -437,7 +438,7 @@ espeak_ERROR espeak_SetPunctuationList(const wchar_t *punctlist); | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
void espeak_SetPhonemeTrace(int value, FILE *stream); | |||
ESPEAK_API void espeak_SetPhonemeTrace(int value, FILE *stream); | |||
/* Controls the output of phoneme symbols for the text | |||
value=0 No phoneme output (default) | |||
value=1 Output the translated phoneme symbols for the text | |||
@@ -449,7 +450,7 @@ void espeak_SetPhonemeTrace(int value, FILE *stream); | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
void espeak_CompileDictionary(const char *path, FILE *log, int flags); | |||
ESPEAK_API void espeak_CompileDictionary(const char *path, FILE *log, int flags); | |||
/* Compile pronunciation dictionary for a language which corresponds to the currently | |||
selected voice. The required voice should be selected before calling this function. | |||
@@ -502,19 +503,19 @@ typedef struct { | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec); | |||
ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec); | |||
/* Reads the voice files from espeak-data/voices and creates an array of espeak_VOICE pointers. | |||
The list is terminated by a NULL pointer | |||
If voice_spec is NULL then all voices are listed. | |||
If voice spec is given, then only the voices which are compatible with the voice_spec | |||
If voice spec is give, then only the voices which are compatible with the voice_spec | |||
are listed, and they are listed in preference order. | |||
*/ | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
espeak_ERROR espeak_SetVoiceByName(const char *name); | |||
ESPEAK_API espeak_ERROR espeak_SetVoiceByName(const char *name); | |||
/* Searches for a voice with a matching "name" field. Language is not considered. | |||
"name" is a UTF8 string. | |||
@@ -527,7 +528,7 @@ espeak_ERROR espeak_SetVoiceByName(const char *name); | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
espeak_ERROR espeak_SetVoiceByProperties(espeak_VOICE *voice_spec); | |||
ESPEAK_API espeak_ERROR espeak_SetVoiceByProperties(espeak_VOICE *voice_spec); | |||
/* An espeak_VOICE structure is used to pass criteria to select a voice. Any of the following | |||
fields may be set: | |||
@@ -547,7 +548,7 @@ espeak_ERROR espeak_SetVoiceByProperties(espeak_VOICE *voice_spec); | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
espeak_VOICE *espeak_GetCurrentVoice(void); | |||
ESPEAK_API espeak_VOICE *espeak_GetCurrentVoice(void); | |||
/* Returns the espeak_VOICE data for the currently selected voice. | |||
This is not affected by temporary voice changes caused by SSML elements such as <voice> and <s> | |||
*/ | |||
@@ -555,7 +556,7 @@ espeak_VOICE *espeak_GetCurrentVoice(void); | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
espeak_ERROR espeak_Cancel(void); | |||
ESPEAK_API espeak_ERROR espeak_Cancel(void); | |||
/* Stop immediately synthesis and audio output of the current text. When this | |||
function returns, the audio output is fully stopped and the synthesizer is ready to | |||
synthesize a new message. | |||
@@ -568,14 +569,14 @@ espeak_ERROR espeak_Cancel(void); | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
int espeak_IsPlaying(void); | |||
ESPEAK_API int espeak_IsPlaying(void); | |||
/* Returns 1 if audio is played, 0 otherwise. | |||
*/ | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
espeak_ERROR espeak_Synchronize(void); | |||
ESPEAK_API espeak_ERROR espeak_Synchronize(void); | |||
/* This function returns when all data have been spoken. | |||
Return: EE_OK: operation achieved | |||
EE_INTERNAL_ERROR. | |||
@@ -584,7 +585,7 @@ espeak_ERROR espeak_Synchronize(void); | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
espeak_ERROR espeak_Terminate(void); | |||
ESPEAK_API espeak_ERROR espeak_Terminate(void); | |||
/* last function to be called. | |||
Return: EE_OK: operation achieved | |||
EE_INTERNAL_ERROR. | |||
@@ -594,7 +595,7 @@ espeak_ERROR espeak_Terminate(void); | |||
#ifdef __cplusplus | |||
extern "C" | |||
#endif | |||
const char *espeak_Info(void* ptr); | |||
ESPEAK_API const char *espeak_Info(void* ptr); | |||
/* Returns the version number string. | |||
The parameter is for future use, and should be set to NULL | |||
*/ |
@@ -2085,6 +2085,7 @@ wxString CompileAllDictionaries() | |||
wxString filename; | |||
wxFileName fname; | |||
wxString dictstr; | |||
wxString filetype; | |||
wxString report = _T(""); | |||
int err; | |||
int errors = 0; | |||
@@ -2135,18 +2136,32 @@ wxString CompileAllDictionaries() | |||
fprintf(f_phused,"Phonemes which are used in the *_rules and *_list files\n"); | |||
} | |||
bool cont = dir.GetFirst(&filename, _T("*_rules"), wxDIR_FILES); | |||
bool cont = dir.GetFirst(&filename, _T("*_rules*"), wxDIR_FILES); | |||
while ( cont ) | |||
{ | |||
fname = wxFileName(filename); | |||
filetype = fname.GetName().AfterLast('_'); | |||
if((filetype != _T("rules")) && (filetype != _T("rules.txt"))) | |||
{ | |||
cont = dir.GetNext(&filename); | |||
continue; | |||
} | |||
dictstr = fname.GetName().BeforeLast('_'); | |||
strcpy(dictname,dictstr.mb_str(wxConvLocal)); | |||
dict_count++; | |||
strcpy(voicename,dictname); | |||
// read the *_rules file to see if a phoneme table is specified though a voice name | |||
sprintf(path,"%s%s_rules",path_dsource,dictname); | |||
if((f_in = fopen(path,"r")) != NULL) | |||
sprintf(path,"%s%s_rules.txt",path_dsource,dictname); | |||
if((f_in = fopen(path,"r")) == NULL) | |||
{ | |||
sprintf(path,"%s%s_rules",path_dsource,dictname); | |||
f_in = fopen(path,"r"); | |||
} | |||
if(f_in != NULL) | |||
{ | |||
unsigned int ix; | |||
unsigned int c; |
@@ -690,9 +690,14 @@ static int compile_dictlist_file(const char *path, const char* filename) | |||
text_mode = 0; | |||
sprintf(fname,"%s%s",path,filename); | |||
// try with and without '.txt' extension | |||
sprintf(fname,"%s%s.txt",path,filename); | |||
if((f_in = fopen(fname,"r")) == NULL) | |||
return(-1); | |||
{ | |||
sprintf(fname,"%s%s",path,filename); | |||
if((f_in = fopen(fname,"r")) == NULL) | |||
return(-1); | |||
} | |||
fprintf(f_log,"Compiling: '%s'\n",fname); | |||
@@ -860,6 +865,9 @@ static void copy_rule_string(char *string, int &state) | |||
case 'X': | |||
c = RULE_NOVOWELS; | |||
break; | |||
case 'J': | |||
c = RULE_SKIPCHARS; | |||
break; | |||
case 'L': | |||
// expect two digits | |||
c = *p++ - '0'; | |||
@@ -1659,14 +1667,18 @@ int CompileDictionary(const char *dsource, const char *dict_name, FILE *log, cha | |||
if(f_log == NULL) | |||
f_log = stderr; | |||
// try with and without '.txt' extension | |||
sprintf(path,"%s%s_",dsource,dict_name); | |||
sprintf(fname_in,"%srules",path); | |||
f_in = fopen_log(fname_in,"r"); | |||
if(f_in == NULL) | |||
sprintf(fname_in,"%srules.txt",path); | |||
if((f_in = fopen(fname_in,"r")) == NULL) | |||
{ | |||
if(fname_err) | |||
strcpy(fname_err,fname_in); | |||
return(-1); | |||
sprintf(fname_in,"%srules",path); | |||
if((f_in = fopen_log(fname_in,"r")) == NULL) | |||
{ | |||
if(fname_err) | |||
strcpy(fname_err,fname_in); | |||
return(-1); | |||
} | |||
} | |||
sprintf(fname_out,"%s%c%s_dict",path_home,PATHSEP,dict_name); |
@@ -1648,7 +1648,7 @@ static char *DecodeRule(const char *group_chars, int group_length, char *rule) | |||
static char output[60]; | |||
static char symbols[] = {' ',' ',' ',' ',' ',' ',' ',' ',' ', | |||
'@','&','%','+','#','S','D','Z','A','L',' ',' ',' ',' ',' ','N','K','V',' ','T','X','?','W'}; | |||
'@','&','%','+','#','S','D','Z','A','L','!',' ','?','?','J','N','K','V','?','T','X','?','W'}; | |||
static char symbols_lg[] = {'A','B','C','H','F','G','Y'}; | |||
@@ -1998,7 +1998,8 @@ static void MatchRule(Translator *tr, char *word[], int group_length, char *rule | |||
if((letter == rb) || ((letter==(unsigned char)REPLACED_E) && (rb=='e'))) | |||
{ | |||
add_points = 21; | |||
if((letter & 0xc0) != 0x80) | |||
add_points = 21; // don't add point for non-initial UTF-8 bytes | |||
consumed++; | |||
} | |||
else | |||
@@ -2148,6 +2149,27 @@ static void MatchRule(Translator *tr, char *word[], int group_length, char *rule | |||
} | |||
break; | |||
case RULE_SKIPCHARS: | |||
{ | |||
// Used for lang=Tamil, used to match on the next word after an unknown word ending | |||
// only look until the end of the word (including the end-of-word marker) | |||
// Jx means 'skip characters until x', where 'x' may be '_' for 'end of word' | |||
char *p = post_ptr + letter_xbytes; | |||
char *p2 = p; | |||
int rule_w; // skip characters until this | |||
utf8_in(&rule_w,rule); | |||
while((letter_w != rule_w) && (letter_w != RULE_SPACE)) | |||
{ | |||
p2 = p; | |||
p += utf8_in(&letter_w,p); | |||
} | |||
if(letter_w == rule_w) | |||
{ | |||
post_ptr = p2; | |||
} | |||
} | |||
break; | |||
case RULE_INC_SCORE: | |||
add_points = 20; // force an increase in points | |||
break; | |||
@@ -2180,10 +2202,11 @@ static void MatchRule(Translator *tr, char *word[], int group_length, char *rule | |||
default: | |||
if(letter == rb) | |||
{ | |||
if(letter == RULE_SPACE) | |||
add_points = (21-distance_right); | |||
else | |||
if((letter & 0xc0) != 0x80) | |||
{ | |||
// not for non-initial UTF-8 bytes | |||
add_points = (21-distance_right); | |||
} | |||
} | |||
else | |||
failed = 1; | |||
@@ -2348,7 +2371,13 @@ static void MatchRule(Translator *tr, char *word[], int group_length, char *rule | |||
if(letter == RULE_SPACE) | |||
add_points = 4; | |||
else | |||
add_points = (21-distance_left); | |||
{ | |||
if((letter & 0xc0) != 0x80) | |||
{ | |||
// not for non-initial UTF-8 bytes | |||
add_points = (21-distance_left); | |||
} | |||
} | |||
} | |||
else | |||
failed = 1; |
@@ -1344,14 +1344,19 @@ void FormatDictionary(const char *dictname) | |||
const int tab2 = 18; | |||
const int tab3 = 28; | |||
sprintf(fname_in,"%s/%s_rules",path_dsource,dictname); | |||
sprintf(fname_out,"%s_formatted",fname_in); | |||
// try with and without '.txt' extension | |||
sprintf(fname_in,"%s/%s_rules.txt",path_dsource,dictname); | |||
if((f_in = fopen(fname_in,"r")) == NULL) | |||
{ | |||
wxLogError(_T("Can't open rules file: ") + wxString(fname_in,wxConvLocal)); | |||
return; | |||
sprintf(fname_in,"%s/%s_rules",path_dsource,dictname); | |||
if((f_in = fopen(fname_in,"r")) == NULL) | |||
{ | |||
wxLogError(_T("Can't open rules file: ") + wxString(fname_in,wxConvLocal)); | |||
return; | |||
} | |||
} | |||
sprintf(fname_out,"%s/%s_rules_formatted",path_dsource,dictname); | |||
if((f_out = fopen(fname_out,"w")) == NULL) | |||
{ | |||
wxLogError(_T("Can't write to file: ") + wxString(fname_out,wxConvLocal)); |
@@ -813,6 +813,8 @@ int TranslateRoman(Translator *tr, char *word, char *ph_out, WORD_TAB *wtab) | |||
prev = 0; | |||
subtract = 0x7fff; | |||
ph_out[0] = 0; | |||
flags[0] = 0; | |||
flags[1] = 0; | |||
if((tr->langopts.numbers & NUM_ROMAN_CAPITALS) && !(wtab[0].flags & FLAG_ALL_UPPER)) | |||
return(0); |
@@ -92,6 +92,9 @@ static const unsigned short punct_chars[] = {',','.','?','!',':',';', | |||
0x055e, // Armenian question | |||
0x055b, // Armenian emphasis mark | |||
0x0b1b, // Arabic ; | |||
0x061f, // Arabic ? | |||
0x1362, // Ethiopic period | |||
0x1363, | |||
0x1364, | |||
@@ -131,6 +134,9 @@ static const unsigned int punct_attributes [] = { 0, | |||
CLAUSE_QUESTION + PUNCT_IN_WORD, // Armenian question | |||
CLAUSE_PERIOD + PUNCT_IN_WORD, // Armenian emphasis mark | |||
CLAUSE_SEMICOLON, // Arabic ; | |||
CLAUSE_QUESTION, // Arabic question mark | |||
CLAUSE_PERIOD, // Ethiopic period | |||
CLAUSE_COMMA, // Ethiopic comma | |||
CLAUSE_SEMICOLON, // Ethiopic semicolon | |||
@@ -570,6 +576,7 @@ static const char *LookupSpecial(Translator *tr, const char *string, char* text_ | |||
char phonemes2[55]; | |||
char *string1 = (char *)string; | |||
flags[0] = flags[1] = 0; | |||
if(LookupDictList(tr,&string1,phonemes,flags,0,NULL)) | |||
{ | |||
SetWordStress(tr, phonemes, flags, -1, 0); | |||
@@ -2406,14 +2413,11 @@ if(option_ssml) parag=1; | |||
// Because of an xml tag, we are waiting for the | |||
// next non-blank character to decide whether to end the clause | |||
// i.e. is dot followed by an upper-case letter? | |||
if(c1 == '\n') | |||
{ | |||
// end_clause_after_tag &= ~CLAUSE_DOT; | |||
} | |||
if(!iswspace(c1)) | |||
{ | |||
if(iswdigit(c1) || (IsAlpha(c1) && !iswlower(c1))) | |||
if(!IsAlpha(c1) || !iswlower(c1)) | |||
// if(iswdigit(c1) || (IsAlpha(c1) && !iswlower(c1))) | |||
{ | |||
UngetC(c2); | |||
ungot_char2 = c1; |
@@ -35,7 +35,7 @@ | |||
#include "translate.h" | |||
#include "wave.h" | |||
const char *version_string = "1.42.02 30.Nov.09"; | |||
const char *version_string = "1.42.03 08.Dec.09"; | |||
const int version_phdata = 0x014200; | |||
int option_device_number = -1; |
@@ -279,7 +279,6 @@ Translator *SelectTranslator(const char *name) | |||
break; | |||
case L('a','r'): // Arabic | |||
case L('u','r'): // Urdu | |||
tr->letter_bits_offset = OFFSET_ARABIC; | |||
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||
break; | |||
@@ -538,7 +537,7 @@ Translator *SelectTranslator(const char *name) | |||
tr->langopts.stress_rule = 6; // stress on last heaviest syllable, excluding final syllable | |||
tr->langopts.stress_flags = 0x10004; // use 'diminished' for unstressed final syllable | |||
tr->langopts.numbers = NUM_SWAP_TENS; | |||
tr->langopts.break_numbers = 0x24924aa8; // for languages which have numbers for 100,000 and 100,00,000, eg Hindi | |||
tr->langopts.break_numbers = 0x14aa8; // for languages which have numbers for 100,000 and 100,00,000, eg Hindi | |||
tr->letter_bits_offset = OFFSET_DEVANAGARI; | |||
if(name2 == L('p','a')) | |||
@@ -1034,6 +1033,13 @@ SetLengthMods(tr,3); // all equal | |||
} | |||
break; | |||
case L('u','r'): // Urdu | |||
tr->letter_bits_offset = OFFSET_ARABIC; | |||
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words | |||
tr->langopts.numbers = NUM_SWAP_TENS; | |||
tr->langopts.break_numbers = 0x52a8; // for languages which have numbers for 100,000 and 100,00,000, eg Hindi | |||
break; | |||
case L('v','i'): // Vietnamese | |||
{ | |||
static const short stress_lengths_vi[8] = {150, 150, 180, 180, 210, 230, 230, 240}; |
@@ -135,18 +135,19 @@ | |||
#define RULE_LINENUM 8 // next 2 bytes give a line number, for debugging purposes | |||
#define RULE_SPACE 32 // ascii space | |||
#define RULE_SYLLABLE 9 | |||
#define RULE_STRESSED 10 | |||
#define RULE_DOUBLE 11 | |||
#define RULE_INC_SCORE 12 | |||
#define RULE_DEL_FWD 13 | |||
#define RULE_ENDING 14 | |||
#define RULE_SYLLABLE 9 // @ | |||
#define RULE_STRESSED 10 // & | |||
#define RULE_DOUBLE 11 // % | |||
#define RULE_INC_SCORE 12 // + | |||
#define RULE_DEL_FWD 13 // # | |||
#define RULE_ENDING 14 // S | |||
#define RULE_DIGIT 15 // D digit | |||
#define RULE_NONALPHA 16 // Z non-alpha | |||
#define RULE_LETTERGP 17 // A B C H F G Y letter group number | |||
#define RULE_LETTERGP2 18 // L + letter group number | |||
#define RULE_CAPITAL 19 // word starts with a capital letter | |||
#define RULE_CAPITAL 19 // ! word starts with a capital letter | |||
#define RULE_REPLACEMENTS 20 // section for character replacements | |||
#define RULE_SKIPCHARS 23 // J | |||
#define RULE_NO_SUFFIX 24 // N | |||
#define RULE_NOTVOWEL 25 // K | |||
#define RULE_IFVERB 26 // V |