From f54876422cb4a37e52c36f2c317d83fd3f22935e Mon Sep 17 00:00:00 2001 From: Valdis Vitolins Date: Sun, 4 Mar 2018 18:45:12 +0200 Subject: [PATCH 01/11] =?UTF-8?q?ru:=20fix=20for=20'=D1=81=D1=87'=20which?= =?UTF-8?q?=20is=20wrongly=20merged?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dictsource/ru_rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dictsource/ru_rules b/dictsource/ru_rules index afaa733a..8919873a 100644 --- a/dictsource/ru_rules +++ b/dictsource/ru_rules @@ -275,7 +275,7 @@ с (сY s; с (тY s; с (ть s - сч S; + с (ч S; с (ш S с (щ s;s; From 096877d92b69a9767af1416c0be80d60c82a0375 Mon Sep 17 00:00:00 2001 From: Valdis Vitolins Date: Sun, 4 Mar 2018 19:08:50 +0200 Subject: [PATCH 02/11] =?UTF-8?q?ru:=20fixes=20for=20'=D0=BB'=20and=20'?= =?UTF-8?q?=D0=BB=D1=8C'=20(especially=20at=20the=20end=20of=20word)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phsource/ph_russian | 40 ++++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/phsource/ph_russian b/phsource/ph_russian index ab8f8e72..daecdf1c 100644 --- a/phsource/ph_russian +++ b/phsource/ph_russian @@ -43,21 +43,41 @@ endphoneme phoneme l - liquid rfx ipa ɭ lengthmod 7 - length 40 - FMT(l^/l_rfx) + length 80 + IF nextPh(isPause) THEN + FMT(l/l_,120) + ELSE + FMT(l/l_,120) + ENDIF endphoneme -phoneme l^ - liquid rfx pzd - ipa ɭ -// lengthmod 7 -length 80 -// FMT(l^/l^) - FMT(l^/l_rfx) +phoneme l^ // From Latvian ļ + liquid + ipa ʎ + lengthmod 7 + Vowelout len=60 lenadd rate + length 80 + + NextVowelStarts + VowelStart(l^/j2@) + VowelStart(l^/j2a) + VowelStart(l^/j2e) + VowelStart(l^/j2i) + VowelStart(l^/j2o) + VowelStart(l^/j2u) + EndSwitch + + IF prevPh(isPause) THEN + FMT(l^/_l^) + ELSEIF nextPh(isPause) THEN + FMT(l^/l^_,120) + ENDIF + + FMT(l^/l^) + endphoneme phoneme s From 10b348be192e64f1e3a9972d9181243b2a8e2414 Mon Sep 17 00:00:00 2001 From: Valdis Vitolins Date: Sun, 4 Mar 2018 19:15:54 +0200 Subject: [PATCH 03/11] ru: consistent formatting applied --- phsource/ph_russian | 283 +++++++++++++++++--------------------------- 1 file changed, 110 insertions(+), 173 deletions(-) diff --git a/phsource/ph_russian b/phsource/ph_russian index daecdf1c..23ff76dd 100644 --- a/phsource/ph_russian +++ b/phsource/ph_russian @@ -1,5 +1,3 @@ - - phoneme g vcd vel stp prevoice voicingswitch k @@ -23,15 +21,11 @@ phoneme p endphoneme - phoneme x vls vel frc lengthmod 3 Vowelin f1=0 f2=2300 200 400 f3=-100 80 Vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20 -// IF nextPh(isPause) THEN -// WAV(ufric/x, 120) -// ENDIF WAV(ufric/x_hr, 30) endphoneme @@ -41,17 +35,16 @@ phoneme k endphoneme - phoneme l - liquid rfx - ipa ɭ - lengthmod 7 - length 80 - IF nextPh(isPause) THEN - FMT(l/l_,120) - ELSE - FMT(l/l_,120) - ENDIF + liquid rfx + ipa ɭ + lengthmod 7 + length 80 + IF nextPh(isPause) THEN + FMT(l/l_,120) + ELSE + FMT(l/l_,120) + ENDIF endphoneme phoneme l^ // From Latvian ļ @@ -77,50 +70,27 @@ phoneme l^ // From Latvian ļ ENDIF FMT(l^/l^) - endphoneme + phoneme s vls alv frc sib -// voicingswitch z lengthmod 3 Vowelin f1=0 f2=1700 -300 300 f3=-100 80 Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 - -// IF nextPh(isPause) THEN -// WAV(ufric/s_) -// ELIF nextPh(p) OR nextPh(t) OR nextPh(k) THEN -// WAV(ufric/s!) -// ENDIF WAV(ufric/s) endphoneme phoneme s; import_phoneme en/s -//CALL en/s endphoneme - -//phoneme n -// vcd pal nas -// FMT(n/nru) -// -// import_phoneme en/n -// length 200 -//endphoneme - phoneme n_ -// vcd pal nas -// FMT(n/nru) - import_phoneme en/n -// length 200 endphoneme - - phoneme n# vcd pal nas pzd ipa ɲ @@ -128,28 +98,28 @@ phoneme n# lengthmod 4 IF KlattSynth THEN - VowelStart(klatt/n^@) - FMT(klatt/n^) + VowelStart(klatt/n^@) + FMT(klatt/n^) ENDIF NextVowelStarts - VowelStart(n^/n^@) - VowelStart(n^/n^a) - VowelStart(n^/n^e) - VowelStart(n^/n^i) - VowelStart(n^/n^o) - VowelStart(n^/n^u) + VowelStart(n^/n^@) + VowelStart(n^/n^a) + VowelStart(n^/n^e) + VowelStart(n^/n^i) + VowelStart(n^/n^o) + VowelStart(n^/n^u) EndSwitch IF prevPh(isPause) THEN - FMT(n^/_n^) + FMT(n^/_n^) ELIF nextPh(isNotVowel) THEN - IF nextPhW(n^) THEN - length 75 - ELIF prevPhW(n^) THEN - length 100 - ENDIF - FMT(n^/n^_) + IF nextPhW(n^) THEN + length 75 + ELIF prevPhW(n^) THEN + length 100 + ENDIF + FMT(n^/n^_) ENDIF endphoneme @@ -165,7 +135,6 @@ phoneme r endphoneme - phoneme ts import_phoneme consonants/ts endphoneme @@ -178,11 +147,11 @@ phoneme dZ; Vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70 IF PreVoicing THEN - FMT(dzh/xdzh) + FMT(dzh/xdzh) ENDIF IF nextPh(isPause2) THEN - FMT(dzh/dzh_) addWav(x/dzh_) + FMT(dzh/dzh_) addWav(x/dzh_) ENDIF endphoneme @@ -197,7 +166,6 @@ phoneme tS; endphoneme - // Palatalized versions of consonants phoneme t @@ -216,10 +184,6 @@ phoneme d; import_phoneme pl/d; endphoneme -//phoneme m; -// import_phoneme ro/m; -//endphoneme - phoneme m; vcd blb nas Vowelout f1=2 f2=1000 -500 -350 f3=-200 80 brk @@ -227,57 +191,37 @@ phoneme m; length 20 IF KlattSynth THEN - Vowelin f1=0 f2=1000 -50 -200 f3=-200 80 - IF nextPh(isPause2) THEN - FMT(klatt/m_) - ENDIF - FMT(klatt/m) + Vowelin f1=0 f2=1000 -50 -200 f3=-200 80 + IF nextPh(isPause2) THEN + FMT(klatt/m_) + ENDIF + FMT(klatt/m) ENDIF - - VowelStart(m/mi) - -// NextVowelStarts -// VowelStart(m/m@) -// VowelStart(m/ma) -// VowelStart(m/me) -// VowelStart(m/mi) -// VowelStart(m/mo) -// VowelStart(m/mu) -// EndSwitch - -// IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN - FMT(m/mj) -// ELIF prevPh(isPause) THEN -// FMT(m/_m) -// ELIF nextPh(isNotVowel) THEN -// FMT(m/m_) -// ENDIF + VowelStart(m/mi) endphoneme - -phoneme I^ // "silent i", palatilizes the preceding consonant +phoneme I^ // "silent i", palatilizes the preceding consonant vwl starttype #i endtype #i unstressed nsy length 70 IF nextPh(isVowel) THEN - ChangePhoneme(;) + ChangePhoneme(;) ENDIF IF prevPh(m;) THEN - FMT(vwl_ro/mi) + FMT(vwl_ro/mi) ENDIF FMT(vwl_ru/ii-) endphoneme - //******************************************************************* // VOWELS //******************************************************************* phoneme i IF prevPh(Z) THEN - ChangePhoneme(y) + ChangePhoneme(y) ENDIF vwl starttype #i endtype #i length 50 @@ -289,10 +233,10 @@ phoneme I# vwl starttype #i endtype #i length 80 IF nextVowel(isMaxStress) THEN - ChangePhoneme(I) + ChangePhoneme(I) ENDIF IF thisPh(isMaxStress) THEN - ChangePhoneme(i) + ChangePhoneme(i) ENDIF FMT(vwl_ru/ii#) endphoneme @@ -310,11 +254,11 @@ phoneme I length 80 IF thisPh(isMaxStress) THEN - IF prevPhW(j) THEN - ChangePhoneme(a) - ELSE - ChangePhoneme(i) - ENDIF + IF prevPhW(j) THEN + ChangePhoneme(a) + ELSE + ChangePhoneme(i) + ENDIF ENDIF FMT(vwl_ru/ii) endphoneme @@ -324,10 +268,10 @@ phoneme I2 vwl starttype #i endtype #i length 80 IF thisPh(isMaxStress) THEN - ChangePhoneme(e) + ChangePhoneme(e) ENDIF IF prevPhW(isPalatal) THEN - ChangePhoneme(I) + ChangePhoneme(I) ENDIF FMT(vwl_ru/ii) endphoneme @@ -337,14 +281,14 @@ phoneme I3 vwl starttype #i endtype #i length 80 IF thisPh(isMaxStress) THEN - IF prevPhW(j) THEN - ChangePhoneme(e) - ELSE - ChangePhoneme(ja) - ENDIF + IF prevPhW(j) THEN + ChangePhoneme(e) + ELSE + ChangePhoneme(ja) + ENDIF ENDIF IF prevPhW(isPalatal) THEN - ChangePhoneme(I) + ChangePhoneme(I) ENDIF FMT(vwl_ru/ii) endphoneme @@ -361,11 +305,11 @@ phoneme E# vwl starttype #e endtype #e length 100 IF thisPh(isMaxStress) THEN - IF prevPhW(j) THEN - ChangePhoneme(e) - ELSE - ChangePhoneme(E) - ENDIF + IF prevPhW(j) THEN + ChangePhoneme(e) + ELSE + ChangePhoneme(E) + ENDIF ENDIF FMT(vwl_ru/E#) endphoneme @@ -375,19 +319,19 @@ phoneme E2 vwl starttype #e endtype #e length 80 IF nextVowel(isMaxStress) THEN - IF prevPh(j) THEN - ChangePhoneme(I3) - ELSE - ChangePhoneme(E#) - ENDIF + IF prevPh(j) THEN + ChangePhoneme(I3) + ELSE + ChangePhoneme(E#) + ENDIF ENDIF IF thisPh(isMaxStress) THEN - IF prevPhW(j) THEN - ChangePhoneme(e) - ELSE - ChangePhoneme(E) - ENDIF + IF prevPhW(j) THEN + ChangePhoneme(e) + ELSE + ChangePhoneme(E) + ENDIF ENDIF FMT(vwl_ru/E@) @@ -398,13 +342,13 @@ phoneme E3 vwl starttype #e endtype #e length 80 IF nextVowel(isMaxStress) THEN - ChangePhoneme(I) + ChangePhoneme(I) ENDIF IF thisPh(isMaxStress) THEN - ChangePhoneme(e) + ChangePhoneme(e) ENDIF IF prevPhW(isPalatal) THEN - ChangePhoneme(E2) + ChangePhoneme(E2) ENDIF FMT(vwl_ru/E@) endphoneme @@ -429,10 +373,10 @@ phoneme O vwl starttype #o endtype #o length 80 IF prevPhW(isPalatal) THEN - ChangePhoneme(8) + ChangePhoneme(8) ENDIF IF thisPh(isMaxStress) THEN - ChangePhoneme(o) + ChangePhoneme(o) ENDIF FMT(vwl_ru/oo) endphoneme @@ -467,16 +411,16 @@ phoneme e vwl starttype #e endtype #e length 100 IF prevPh(Z) THEN - ChangeIfNotStressed(y) - ChangePhoneme(E) + ChangeIfNotStressed(y) + ChangePhoneme(E) ENDIF IF prevPh(S) THEN - ChangeIfNotStressed(y) - ChangePhoneme(E) + ChangeIfNotStressed(y) + ChangePhoneme(E) ENDIF IF prevPh(ts) THEN - ChangeIfNotStressed(y) - ChangePhoneme(E) + ChangeIfNotStressed(y) + ChangePhoneme(E) ENDIF ChangeIfNotStressed(i) FMT(vwl_ru/ee) @@ -491,22 +435,22 @@ endphoneme phoneme ja vwl starttype #i endtype #a IF thisPh(isMaxStress) THEN - length 200 - FMT(vwl_ru/ja) + length 200 + FMT(vwl_ru/ja) ELSE - FMT(vdiph2/ii@) + FMT(vdiph2/ii@) ENDIF endphoneme phoneme ja# vwl starttype #i endtype #a IF thisPh(isMaxStress) THEN - FMT(vowel/&) - // ChangePhoneme(A) + FMT(vowel/&) + // ChangePhoneme(A) ELSE - IF prevPhW(isPalatal) THEN - ChangePhoneme(I) - ENDIF + IF prevPhW(isPalatal) THEN + ChangePhoneme(I) + ENDIF ENDIF // length 200 @@ -520,21 +464,17 @@ phoneme V# vwl starttype #a endtype #@ unstressed length 80 -// IF nextVowel(isMaxStress) THEN - // not needed? because V# is only used at end-of-word -// ChangePhoneme(I3) -// ENDIF IF thisPh(isMaxStress) THEN - IF prevPhW(j) THEN - ChangePhoneme(A) - ELSE - ChangePhoneme(ja) - ENDIF + IF prevPhW(j) THEN + ChangePhoneme(A) + ELSE + ChangePhoneme(ja) + ENDIF ENDIF IF prevPhW(isPalatal) THEN - ChangePhoneme(V) + ChangePhoneme(V) ENDIF FMT(vowel/V_2) @@ -562,21 +502,21 @@ phoneme a IF prevPhW(j) THEN ELSE - IF thisPh(isMaxStress) THEN - IF prevPhW(isPalatal) THEN - ChangePhoneme(ja) - ELSE - ChangePhoneme(A) - ENDIF - ELSE - IF prevPhW(isPalatal) THEN - ChangePhoneme(I) - ENDIF - ENDIF + IF thisPh(isMaxStress) THEN + IF prevPhW(isPalatal) THEN + ChangePhoneme(ja) + ELSE + ChangePhoneme(A) + ENDIF + ELSE + IF prevPhW(isPalatal) THEN + ChangePhoneme(I) + ENDIF + ENDIF ENDIF IF thisPh(isWordEnd) THEN - FMT(vowel/a#_3) + FMT(vowel/a#_3) ENDIF FMT(vwl_ru/aa) endphoneme @@ -588,17 +528,15 @@ phoneme V unstressed IF nextVowel(isMaxStress) THEN - ChangePhoneme(a) + ChangePhoneme(a) ENDIF IF thisPh(isMaxStress) THEN - IF prevPhW(j) THEN - ChangePhoneme(a) -// ELIF prevPhW(isPalatal) THEN -// ChangePhoneme(ja) - ELSE - ChangePhoneme(A) - ENDIF + IF prevPhW(j) THEN + ChangePhoneme(a) + ELSE + ChangePhoneme(A) + ENDIF ENDIF FMT(vowel/V_2) @@ -620,4 +558,3 @@ phoneme R4 FMT(r3/r_ru2) addWav(r3/r_ru, 50) endphoneme - From 33c9e800a3a914880f041c941ecaa30aa1315eac Mon Sep 17 00:00:00 2001 From: Valdis Vitolins Date: Sun, 4 Mar 2018 19:20:36 +0200 Subject: [PATCH 04/11] =?UTF-8?q?ru:=20'=D1=85'=20made=20less=20stressed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phsource/ph_russian | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phsource/ph_russian b/phsource/ph_russian index 23ff76dd..df6a73a7 100644 --- a/phsource/ph_russian +++ b/phsource/ph_russian @@ -26,7 +26,7 @@ phoneme x lengthmod 3 Vowelin f1=0 f2=2300 200 400 f3=-100 80 Vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20 - WAV(ufric/x_hr, 30) + WAV(ufric/x_hr, 5) endphoneme From 00d80691bb48b8e93dd66ffce173e2cf227eb0f4 Mon Sep 17 00:00:00 2001 From: Valdis Vitolins Date: Sun, 4 Mar 2018 19:21:34 +0200 Subject: [PATCH 05/11] ru: stress fixes for pronouns --- dictsource/ru_list | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/dictsource/ru_list b/dictsource/ru_list index 263212b6..cbfe3285 100644 --- a/dictsource/ru_list +++ b/dictsource/ru_list @@ -112,18 +112,17 @@ _, zVpit'aja вас $u+ вы $u+ вы $u+ -его $u+ -её $u+ +его $u2+ +её $u2+ ей $u+ -ему $u+ +ему $u2+ им $u+ ими $u+ их $u+ -меня $u+ +меня $u2+ мне $u+ мной $u+ мы $u+ -мы $u+ нам $u+ нами $u+ нас $u+ @@ -133,14 +132,11 @@ _, zVpit'aja о $u+ обо $u+ он $u+ -он $u+ -она $u+ она $u+ они $u+ -тебе $u+ -тебя $u+ -тобой $u+ -ты $u+ +тебе $u2+ +тебя $u2+ +тобой $u2+ ты $u+ я $u+ From 1e8e037613ba16a15d3268449ce08925eeababb4 Mon Sep 17 00:00:00 2001 From: Valdis Vitolins Date: Sun, 4 Mar 2018 19:32:48 +0200 Subject: [PATCH 06/11] =?UTF-8?q?ru:=20fix=20for=20'=D1=89'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dictsource/ru_rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dictsource/ru_rules b/dictsource/ru_rules index 8919873a..96fc4a1f 100644 --- a/dictsource/ru_rules +++ b/dictsource/ru_rules @@ -399,7 +399,7 @@ .group щ - щ S; + щ StS; щ (бY Z; щ (б Z; щ (бвY Z; From 922a7b0519a6f4500c0d9fa3b08bec755d61c88a Mon Sep 17 00:00:00 2001 From: Valdis Vitolins Date: Sun, 4 Mar 2018 19:56:42 +0200 Subject: [PATCH 07/11] =?UTF-8?q?ru:=20fix=20for=20'=D0=B6=D1=87'=20(?= =?UTF-8?q?=D0=BC=D1=83=D0=B6=D1=87=D0=B8=D0=BD=D0=B0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dictsource/ru_rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dictsource/ru_rules b/dictsource/ru_rules index 96fc4a1f..8a737ba3 100644 --- a/dictsource/ru_rules +++ b/dictsource/ru_rules @@ -152,7 +152,7 @@ ж (ффY S ж (хY S ж (хкY S - жч S; + ж (ч S; .group з з z From b211b419894759f4aaf35835954f78d5cd49caa7 Mon Sep 17 00:00:00 2001 From: Valdis Vitolins Date: Sun, 4 Mar 2018 20:02:58 +0200 Subject: [PATCH 08/11] =?UTF-8?q?ru:=20fix=20for=20'=D0=B7=D0=B5'=20(?= =?UTF-8?q?=D0=9C=D0=B5=D0=B4=D1=83=D0=B7=D0=B5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dictsource/ru_rules | 1 + 1 file changed, 1 insertion(+) diff --git a/dictsource/ru_rules b/dictsource/ru_rules index 8a737ba3..1e15be21 100644 --- a/dictsource/ru_rules +++ b/dictsource/ru_rules @@ -159,6 +159,7 @@ з (Y z; з (_ s з (дY z; + з (е z з (ж Z з (зY_ s; з (зY z; From 024ba81d1412e9aae62b1973d2911c4caf655c12 Mon Sep 17 00:00:00 2001 From: Valdis Vitolins Date: Sun, 4 Mar 2018 20:03:52 +0200 Subject: [PATCH 09/11] =?UTF-8?q?ru:=20some=20common=20names=20where=20'?= =?UTF-8?q?=D0=B5'=20is=20written=20instead=20of=20'=D1=91'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dictsource/ru_list | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dictsource/ru_list b/dictsource/ru_list index cbfe3285..ffa28e9c 100644 --- a/dictsource/ru_list +++ b/dictsource/ru_list @@ -235,6 +235,12 @@ _с Es ю ju я ja +// Common names where 'е' is written instead of 'ё' +еще jIStS;'8 +(не о чем) n^i||o||tS'im +чем tS;'8m +ее jIj'8 + // exceptions радио r'ad;Io From 021e9ea6ca484291bbb34ad493c5a419acc84c7e Mon Sep 17 00:00:00 2001 From: Valdis Vitolins Date: Sun, 4 Mar 2018 21:23:29 +0200 Subject: [PATCH 10/11] =?UTF-8?q?ru:=20shortened=20rule=20for=20..=D0=B5?= =?UTF-8?q?=D0=B3=D0=BE=20at=20the=20end=20of=20word,=20which=20is=20spell?= =?UTF-8?q?ed=20as=20iv'o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dictsource/ru_rules | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/dictsource/ru_rules b/dictsource/ru_rules index 1e15be21..76eafb2f 100644 --- a/dictsource/ru_rules +++ b/dictsource/ru_rules @@ -93,13 +93,8 @@ г (ффY k г (хY k г (хкY k - _е) г (о_ v - е) г (ося_ v + е) г (о_ v _мно) г (о_ g - _мое) г (о_ v - _не) г (о_ v - _се) г (о v - _твое) г (о_ v .group д д d From f5539fc5fb2f8bf40d35a287ec08dad71c624d4c Mon Sep 17 00:00:00 2001 From: Valdis Vitolins Date: Sun, 4 Mar 2018 21:35:44 +0200 Subject: [PATCH 11/11] =?UTF-8?q?ru:=20hard/soft=20'=D1=8A/=D1=8C'=20are?= =?UTF-8?q?=20silent?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dictsource/ru_rules | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dictsource/ru_rules b/dictsource/ru_rules index 76eafb2f..4b45cd6c 100644 --- a/dictsource/ru_rules +++ b/dictsource/ru_rules @@ -410,13 +410,13 @@ щ (з Z; .group ъ - ъ (Y j + ъ (Y _| .group ы ы y .group ь - ь (Y j + ь (Y _| .group э э E2