From b0b351467e5e3e16db1a5e939de494456ff911fd Mon Sep 17 00:00:00 2001 From: Danil <81031453+Kostenkov-2021@users.noreply.github.com> Date: Tue, 15 Sep 2026 03:20:14 +0300 Subject: [PATCH 1/5] Fix Russian speech rules and expand tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To clarify the Russian mathematical terminology, the names of letters, the reading of rare symbols, integrals and geometric objects. Correct the matching of service words, numerical forms of units of measurement, and phrases for reviewing matrices and tables. Add compatibility with 19 character groups and fix MathJax arrow matches. Extend SimpleSpeak and ClearSpeak checks in the following modes Terse, Medium, and Verbose, including designed alphabets, MathType symbols, chemical designations, and capital letter settings. Update markers of confirmed transfers to T, OT, and SPELL. To keep the MathType U+F220–U+F236 table unconfirmed: a reliable character match has not yet been established. --- Rules/Languages/ru/ClearSpeak_Rules.yaml | 356 +- Rules/Languages/ru/SharedRules/calculus.yaml | 27 +- Rules/Languages/ru/SharedRules/default.yaml | 382 +- Rules/Languages/ru/SharedRules/general.yaml | 430 +- Rules/Languages/ru/SharedRules/geometry.yaml | 16 +- .../ru/SharedRules/linear-algebra.yaml | 31 +- Rules/Languages/ru/SimpleSpeak_Rules.yaml | 170 +- Rules/Languages/ru/definitions.yaml | 70 +- Rules/Languages/ru/navigate.yaml | 336 +- Rules/Languages/ru/overview.yaml | 33 +- Rules/Languages/ru/unicode-full.yaml | 6154 +++++++++-------- Rules/Languages/ru/unicode.yaml | 524 +- tests/Languages/ru/ClearSpeak/functions.rs | 8 + tests/Languages/ru/ClearSpeak/menclose.rs | 48 +- tests/Languages/ru/ClearSpeak/mroot.rs | 4 +- tests/Languages/ru/ClearSpeak/sets.rs | 30 + .../ru/ClearSpeak/symbols_and_adornments.rs | 16 +- tests/Languages/ru/SimpleSpeak/geometry.rs | 36 + .../ru/SimpleSpeak/linear_algebra.rs | 27 +- tests/Languages/ru/SimpleSpeak/mfrac.rs | 4 +- tests/Languages/ru/alphabets.rs | 9 + tests/Languages/ru/intent.rs | 9 + tests/Languages/ru/mtable.rs | 2 +- tests/Languages/ru/navigate.rs | 91 + tests/Languages/ru/shared.rs | 20 +- tests/Languages/ru/units.rs | 20 +- 26 files changed, 4556 insertions(+), 4297 deletions(-) diff --git a/Rules/Languages/ru/ClearSpeak_Rules.yaml b/Rules/Languages/ru/ClearSpeak_Rules.yaml index 0815c96c5..87bb9cdfd 100644 --- a/Rules/Languages/ru/ClearSpeak_Rules.yaml +++ b/Rules/Languages/ru/ClearSpeak_Rules.yaml @@ -4,7 +4,7 @@ match: "string-length(.)=1 and contains('ABCDEFGHIJKLMNOPQRSTUVWXYZ', text()) and $ClearSpeak_Functions='None' and following-sibling::*[1][.='⁢' and @data-function-guess]" replace: - x: "translate(text(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')" - - t: "большое" + - T: "большое" - name: pause tag: "!*" @@ -30,33 +30,33 @@ tag: mn match: "starts-with(text(), '-')" replace: - - t: "минус" + - T: "минус" - x: "translate(text(), '-_', '')" - name: even-number-text tag: mtext match: "contains(., 'even') and contains(., 'number')" replace: - - t: "икс — чётное число" + - T: "икс — чётное число" - name: default tag: square-root match: "." replace: + - T: "квадратный корень" - test: if: "$Verbosity!='Terse'" - then: [t: ""] - - t: "квадратный корень" - - test: - if: "$Verbosity!='Terse'" - then: [t: "из"] + then: [T: "из"] else: [pause: short] + - test: + if: "not(IsNode(*[1], 'simple'))" + then: [T: "выражения"] - x: "*[1]" - test: - if: "$ClearSpeak_Roots = 'RootEnd' or $ClearSpeak_Roots = 'PosNegSqRootEnd'" then: - pause: short - - t: "конец корня" + - T: "конец корня" - pause: medium - else_if: "IsNode(*[1], 'simple')" then: @@ -73,9 +73,6 @@ tag: root match: "." replace: - - test: - if: "$Verbosity!='Terse'" - then: [t: ""] - test: if: "parent::m:minus and preceding::m:square-root and $ClearSpeak_Roots = 'PosNegSqRootEnd'" then: [pause: short] @@ -86,22 +83,25 @@ if: "*[2][self::m:mn and not(contains(., '.'))]" then_test: - if: "*[2][.='2']" - then: [t: "квадратный корень"] + then: [T: "квадратный корень"] - else_if: "*[2][.='3']" - then: [t: "кубический корень"] - - else: [t: "корень", x: "ToOrdinal(*[2])", t: "степени"] + then: [T: "кубический корень"] + - else: [T: "корень", x: "ToOrdinal(*[2])", T: "степени"] else: - - t: "корень степени" + - T: "корень степени" - x: "*[2]" - test: if: "$Verbosity!='Terse'" - then: [t: "из"] + then: [T: "из"] + - test: + if: "not(IsNode(*[1], 'simple'))" + then: [T: "выражения"] - x: "*[1]" - test: if: "$ClearSpeak_Roots = 'RootEnd' or $ClearSpeak_Roots = 'PosNegSqRootEnd'" then: - pause: short - - t: "конец корня" + - T: "конец корня" - pause: medium else_test: if: IsNode(*[1], 'simple') @@ -122,8 +122,8 @@ - bookmark: "@id" - test: if: "self::m:minus" - then: [t: "минус"] - else: [t: "плюс"] + then: [T: "минус"] + else: [T: "плюс"] - test: if: "self::m:minus and *[1][self::m:root] and $ClearSpeak_Roots = 'PosNegSqRootEnd'" then: [pause: short] @@ -140,14 +140,14 @@ - x: "*[1]" - test: if: "BaseNode(*[2])[contains(@data-intent-property, ':unit')] and BaseNode(*[2])[.='h' or .='hr' or .='Hr']" - then: [t: "в"] + then: [T: "в"] else_test: if: "BaseNode(*[2])[contains(@data-intent-property, ':unit')]" - then: [t: "на"] - else: [t: "разделить на"] + then: [T: "на"] + else: [T: "разделить на"] - test: if: "BaseNode(*[2])[contains(@data-intent-property, ':unit')] and BaseNode(*[2])[.='mi']" - then: [t: "милю"] + then: [T: "милю"] else: [x: "*[2]"] - name: common-fraction @@ -179,7 +179,7 @@ else: [x: "*[1]"] - test: if: "*[2][.='83']" - then: [t: "восемьдесят третьих"] + then: [T: "восемьдесят третьих"] else: [x: "ToOrdinal(*[2], true(), $IsPlural)"] - name: fraction-over-simple @@ -195,18 +195,18 @@ - test: if: "$Verbosity!='Terse'" then: [ot: ""] - - t: "дробь" + - T: "дробь" - x: "*[1]" - test: if: "$ClearSpeak_Fractions='Auto' and $Verbosity='Medium' and *[1][self::m:mrow and (*[2][.='('] or (*[2][.='⁡'] and *[3][IsBracketed(., '(', ')')]))] and *[2][self::m:mn]" - then: [t: "на"] - else: [t: "разделить на"] + then: [T: "на"] + else: [T: "разделить на"] - x: "*[2]" - test: if: "$ClearSpeak_Fractions='OverEndFrac' or ($ClearSpeak_Fractions='EndFrac' and not( ($ClearSpeak_Fractions='Auto' or $ClearSpeak_Fractions='Ordinal' or $ClearSpeak_Fractions='EndFrac') and *[1][*[1][self::m:mn][not(contains(., '.')) and ($ClearSpeak_Fractions='Ordinal' or text()<20)] and *[2][self::m:mn][not(contains(., '.')) and ($ClearSpeak_Fractions='Ordinal' or (2<= text() and text()<=10))] ] and *[2][*[1][self::m:mn][not(contains(., '.')) and ($ClearSpeak_Fractions='Ordinal' or text()<20)] and *[2][self::m:mn][not(contains(., '.')) and ($ClearSpeak_Fractions='Ordinal' or (2<= text() and text()<=10))] ] ) )" then: - pause: short - - t: "конец дроби" + - T: "конец дроби" - pause: short - name: fraction-over-text @@ -227,13 +227,13 @@ - ")" replace: - x: "*[1]" - - t: "на" + - T: "на" - x: "*[2]" - test: if: "$ClearSpeak_Fractions='EndFrac' or $ClearSpeak_Fractions='OverEndFrac'" then: - pause: short - - t: "конец дроби" + - T: "конец дроби" - pause: short - name: default @@ -241,17 +241,17 @@ match: "." replace: - ot: "" - - t: "дробь, числитель:" + - T: "дробь, числитель:" - x: "*[1]" - pause: medium - - t: "знаменатель:" + - T: "знаменатель:" - x: "*[2]" - pause: long - test: if: "$ClearSpeak_Fractions='EndFrac' or $ClearSpeak_Fractions='GeneralEndFrac'" then: - pause: short - - t: "конец дроби" + - T: "конец дроби" - pause: short - name: ClearSpeak-function-inverse @@ -261,15 +261,17 @@ - test: - if: $ClearSpeak_Trig = 'TrigInverse' then: - - t: "обратный" + - T: "обратный" - x: "*[1]" - else_if: "*[1][.='sin']" - then: [bookmark: "*[2]/@id", t: "арксинус"] - - else_if: "*[1][.='cos' or .='cosh']" - then: [bookmark: "*[2]/@id", t: "ареакосинус"] + then: [bookmark: "*[2]/@id", T: "арксинус"] + - else_if: "*[1][.='cos']" + then: [bookmark: "*[2]/@id", T: "арккосинус"] + - else_if: "*[1][.='cosh']" + then: [bookmark: "*[2]/@id", T: "ареакосинус"] - else_if: "*[1][.='tan' or .='tg']" - then: [bookmark: "*[2]/@id", t: "арктангенс"] - else: [bookmark: "*[2]/@id", t: "обратный", x: "*[1]"] + then: [bookmark: "*[2]/@id", T: "арктангенс"] + else: [bookmark: "*[2]/@id", T: "обратный", x: "*[1]"] - name: function-squared-or-cubed tag: power @@ -281,8 +283,8 @@ - bookmark: "*[2]/@id" - test: if: "*[2][.='2']" - then: [t: "в квадрате"] - else: [t: "в кубе"] + then: [T: "в квадрате"] + else: [T: "в кубе"] - name: function-power tag: power @@ -291,18 +293,18 @@ replace: - x: "*[1]" - bookmark: "*[2]/@id" - - t: "в" + - T: "в" - test: - if: "*[2][self::m:mn][.='4']" - then: [t: "четвёртой"] + then: [T: "четвёртой"] - else_if: "*[2][self::m:mn][not(contains(., '.'))]" then: [x: "ToOrdinal(*[2])"] else: - - t: "степени" + - T: "степени" - x: "*[2]" - test: if: "*[2][self::m:mn][not(contains(., '.'))]" - then: [t: "степени"] + then: [T: "степени"] - name: AfterPower-nested tag: power @@ -311,17 +313,17 @@ - "*[2][self::m:power or self::m:power or self::m:mrow[m:power]]" replace: - x: "*[1]" - - t: "в степени (показатель:" + - T: "в степени (показатель:" - x: "*[2]" - pause: short - - t: "конец показателя)" + - T: "конец показателя)" - name: AfterPower-default tag: power match: "$ClearSpeak_Exponents = 'AfterPower'" replace: - x: "*[1]" - - t: "в степени" + - T: "в степени" - test: if: "*[2][self::m:mn][contains(., '.')]" then: [x: "*[2]/text()"] @@ -333,7 +335,7 @@ replace: - x: "*[1]" - bookmark: "*[2]/@id" - - t: "в квадрате" + - T: "в квадрате" - name: cubed tag: power @@ -341,7 +343,7 @@ replace: - x: "*[1]" - bookmark: "*[2]/@id" - - t: "в кубе" + - T: "в кубе" - name: simple-integer tag: power @@ -353,14 +355,14 @@ then: - test: if: "*[2][.='2']" - then: [t: "во"] - else: [t: "в"] + then: [T: "во"] + else: [T: "в"] - x: "ToOrdinal(*[2])" - test: if: "$ClearSpeak_Exponents != 'Ordinal'" - then: [t: "степени"] + then: [T: "степени"] else: - - t: "в степени" + - T: "в степени" - x: "*[2]" - name: simple-negative-integer @@ -371,7 +373,7 @@ - " ]" replace: - x: "*[1]" - - t: "в степени" + - T: "в степени" - x: "*[2]" - name: simple-var @@ -379,7 +381,7 @@ match: "*[2][self::m:mi][string-length(.)=1]" replace: - x: "*[1]" - - t: "в степени" + - T: "в степени" - x: "*[2]" - name: nested-squared-or-cubed @@ -395,7 +397,7 @@ - " ]" replace: - x: "*[1]" - - t: "в степени" + - T: "в степени" - x: "*[2]" - name: nested-negative-squared-or-cubed @@ -413,8 +415,8 @@ - " ]" replace: - x: "*[1]" - - t: "в степени" - - t: "минус" + - T: "в степени" + - T: "минус" - x: "*[2]/*[1]" - name: nested-var-squared-or-cubed @@ -434,7 +436,7 @@ - " ]" replace: - x: "*[1]" - - t: "в степени" + - T: "в степени" - x: "*[2]" - name: nested-negative-var-squared-or-cubed @@ -456,7 +458,7 @@ - " ]" replace: - x: "*[1]" - - t: "в степени" + - T: "в степени" - x: "*[2]" - name: default-exponent-power @@ -465,17 +467,17 @@ - "*[2][self::m:power or self::m:power or self::m:mrow[m:power]]" replace: - x: "*[1]" - - t: "в степени (показатель:" + - T: "в степени (показатель:" - x: "*[2]" - pause: short - - t: "конец показателя)" + - T: "конец показателя)" - name: default tag: power match: "." replace: - x: "*[1]" - - t: "в степени" + - T: "в степени" - test: if: "*[2][self::m:mn][contains(., '.')]" then: [x: "*[2]/text()"] @@ -488,28 +490,28 @@ - test: if: "ancestor::*[name()='set']" then: - - t: "модуль" + - T: "модуль" - x: "*[1]" - pause: medium else: - test: if: "$Verbosity!='Terse'" - then: [t: ""] + then: [T: ""] - test: if: "$ClearSpeak_AbsoluteValue = 'Cardinality'" - then: [t: "мощность множества"] - else: [t: "модуль"] - - t: "из" + then: [T: "мощность множества"] + else: [T: "модуль"] + - T: "из" - x: "*[1]" - test: if: "$ClearSpeak_AbsoluteValue = 'AbsEnd'" then: - pause: short - - t: "конец" + - T: "конец" - test: if: "$ClearSpeak_AbsoluteValue = 'Cardinality'" - then: [t: "мощности множества"] - else: [t: "модуля"] + then: [T: "мощности множества"] + else: [T: "модуля"] - pause: short - name: set @@ -518,69 +520,69 @@ replace: - test: - if: "count(*)=0" - then: [t: "пустое множество"] + then: [T: "пустое множество"] - else_if: "count(*)=2" then: - test: if: "$Verbosity!='Terse'" - then: [t: ""] - - t: "пустое множество" + then: [T: ""] + - T: "пустое множество" - else_if: "count(*)>=7 and *[2][.='∈'] and *[4][.=':' or .='|' or .='∣']" then: - test: if: "$Verbosity!='Terse'" - then: [t: ""] - - t: "множество" + then: [T: ""] + - T: "множество" - test: if: $ClearSpeak_Sets != 'woAll' - then: [t: "всех"] + then: [T: "всех"] - x: "*[1]" - test: - if: "$ClearSpeak_SetMemberSymbol='Belongs'" then: - pause: short - - t: "входящих в" + - T: "входящих в" - test: - if: "*[3][.='ℤ']" - then: [t: "целые числа"] + then: [T: "целые числа"] - else: [x: "*[3]"] - else_if: "$ClearSpeak_SetMemberSymbol='Element'" then: - pause: short - - t: "являющихся элементами" + - T: "являющихся элементами" - test: - if: "*[3][.='ℤ']" - then: [t: "целых чисел"] + then: [T: "целых чисел"] - else: [x: "*[3]"] - else_if: "$ClearSpeak_SetMemberSymbol='Auto' or $ClearSpeak_SetMemberSymbol='Member'" then: - pause: short - - t: "принадлежащих" + - T: "принадлежащих" - test: - if: "*[3][.='ℤ']" - then: [t: "целым числам"] + then: [T: "целым числам"] - else: [x: "*[3]"] - else: - - t: "из" + - T: "из" - test: - if: "*[3][.='ℤ']" - then: [t: "целых чисел"] + then: [T: "целых чисел"] - else: [x: "*[3]"] - pause: short - - t: "таких что" + - T: "таких что" - x: "*[position()>4]" - else_if: "count(*)=3 and *[1][self::m:mrow and count(*)=3 and *[2][.='∈']] and *[2][.='|' or .='∣']" then: - test: if: "$Verbosity!='Terse'" - then: [t: ""] - - t: "множество" + then: [T: ""] + - T: "множество" - test: if: $ClearSpeak_Sets != 'woAll' - then: [t: "всех"] + then: [T: "всех"] - x: "*[1]" - pause: short - - t: "таких что" + - T: "таких что" - test: - if: "*[3][self::m:mrow and count(*)=2 and *[2][self::m:mtext[contains(., 'even number')]]]" then: [x: "*[3]/*[2]"] @@ -589,29 +591,29 @@ then: - test: if: "$Verbosity!='Terse'" - then: [t: ""] - - t: "множество" + then: [T: ""] + - T: "множество" - test: if: $ClearSpeak_Sets != 'woAll' - then: [t: "всех"] + then: [T: "всех"] - test: if: "*[1]/*[1][self::m:mi[.='x']]" - then: [t: "икс"] + then: [T: "икс"] else: [x: "*[1]/*[1]"] - test: if: "*[1]//*[.='∈']" - then: [t: "таких что"] - else: [t: "таких, что"] + then: [T: "таких что"] + else: [T: "таких, что"] - test: - if: "*[1]/*[3][self::m:mrow and count(*)=3 and *[1][self::m:mi[.='x']]]" then: - - t: "икс" + - T: "икс" - x: "*[1]/*[3]/*[2]" - x: "*[1]/*[3]/*[3]" - else_if: "*[1]/*[3][self::m:mrow and count(*)=3 and *[1]//*[name()='absolute-value']]" then: - - t: "модуль" - - t: "икс" + - T: "модуль" + - T: "икс" - pause: medium - x: "*[1]/*[3]/*[2]" - x: "*[1]/*[3]/*[3]" @@ -622,8 +624,8 @@ then: - test: if: "$Verbosity!='Terse'" - then: [t: ""] - - t: "множество" + then: [T: ""] + - T: "множество" - x: "*[1]" - name: ClearSpeak-intervals @@ -633,17 +635,17 @@ tag: [open-interval, open-closed-interval, closed-interval, closed-open-interval] match: "." replace: - - t: "интервал от" + - T: "интервал от" - test: if: "$is_intervals_start_infinity" - then: [t: "минус бесконечности"] + then: [T: "минус бесконечности"] else: [x: "*[1]"] - - t: "до" + - T: "до" - test: - if: "*[2][self::m:plus and count(*)=1 and *[1][.='∞']]" - then: [t: "плюс бесконечности"] + then: [T: "плюс бесконечности"] - else_if: "*[2][.='∞']" - then: [t: "бесконечности"] + then: [T: "бесконечности"] else: [x: "*[2]"] - pause: short - test: @@ -651,17 +653,20 @@ then: - test: if: "starts-with(name(.), 'open')" - then: [t: "не включая"] - else: [t: "включая"] - - x: "*[1]" + then: [T: "не включая"] + else: [T: "включая"] + - with: + variables: + - SpeechOverrides_CapitalLetters: "IfThenElse($SpeechOverrides_CapitalLetters='' and $Impairment='Blindness' and *[1][self::m:mi and string-length(.)=1], 'заглавную', $SpeechOverrides_CapitalLetters)" + replace: [x: "*[1]"] - test: if: "not($is_intervals_start_infinity or $is_intervals_end_infinity)" then_test: - if: "name(.)='open-interval'" - then: [t: "и"] + then: [T: "и"] - else_if: "name(.)='closed-interval'" - then: [t: "и"] - else: [pause: short, t: "но"] + then: [T: "и"] + else: [pause: short, T: "но"] - test: if: not($is_intervals_end_infinity) then: @@ -670,9 +675,12 @@ then: - test: if: "name(.) = 'open-interval' or name(.) = 'closed-open-interval'" - then: [t: "не включая"] - else: [t: "включая"] - - x: "*[2]" + then: [T: "не включая"] + else: [T: "включая"] + - with: + variables: + - SpeechOverrides_CapitalLetters: "IfThenElse($SpeechOverrides_CapitalLetters='' and $Impairment='Blindness' and *[2][self::m:mi and string-length(.)=1], 'заглавную', $SpeechOverrides_CapitalLetters)" + replace: [x: "*[2]"] - name: binomial-frac-vector tag: matrix @@ -680,9 +688,9 @@ - "$ClearSpeak_Matrix = 'Combinatorics' and " - "count(*[1]/*)=1 and count(*)=2" replace: - - t: "число сочетаний из" + - T: "число сочетаний из" - x: "*[1]/*[1]/*" - - t: "по" + - T: "по" - x: "*[2]/*[1]/*" - name: ClearSpeak-default @@ -691,12 +699,12 @@ variables: [NextLineIsContinuedRow: "following-sibling::*[1][contains(@data-intent-property, ':continued-row:')]"] replace: - pause: medium - - t: "строка" + - T: "строка" - x: "count(preceding-sibling::*)+1" - test: if: .[self::m:mlabeledtr] then: - - t: "с меткой" + - T: "с меткой" - x: "*[1]/*" - pause: short - pause: medium @@ -723,7 +731,7 @@ match: "count(*)=3 and *[1][self::m:mn] and *[2][self::m:mo][.='⁤'] and *[3][self::m:fraction]" replace: - x: "*[1]" - - t: "целых" + - T: "целых" - x: "*[3]" - name: equality-with-none-implied-times @@ -790,31 +798,31 @@ if: "$log_is_simple" then_test: - if: "*[1][.='log']" - then: [t: "логарифм"] + then: [T: "логарифм"] - else_if: $ClearSpeak_Log = 'LnAsNaturalLog' - then: [t: "натуральный логарифм"] - else: [t: "эл эн"] + then: [T: "натуральный логарифм"] + else: [T: "эл эн"] else: - test: if: "$Verbosity!='Terse' and not(log_is_simple)" - then: [t: ""] + then: [T: ""] - test: - if: "*[1][.='log']" - then: [t: "логарифм"] + then: [T: "логарифм"] - else_if: $ClearSpeak_Log = 'LnAsNaturalLog' - then: [t: "натуральный логарифм"] - else: [t: "эл эн"] - - t: "от" + then: [T: "натуральный логарифм"] + else: [T: "эл эн"] + - T: "от" - x: "*[3]" - name: ClearSpeak-log-with-base tag: mrow match: "count(*)=3 and *[1][self::m:logarithm-with-base] and *[2][.='⁡']" replace: - - t: "логарифм" + - T: "логарифм" - x: "*[3]" - pause: short - - t: "по основанию" + - T: "по основанию" - x: "*[1]/*[1]" - name: trig-function-noninteger-power @@ -825,7 +833,7 @@ replace: - x: "*[1]/*[1]" - x: "*[3]" - - t: "в степени" + - T: "в степени" - x: "*[1]/*[2]" - name: simple-parens-after-apply-or-times @@ -843,7 +851,7 @@ - "parent::*[self::m:mrow and IsBracketed(., '(', ')') and preceding-sibling::*[1][.='⁢' and @data-function-guess]]" replace: - x: "*[1]" - - t: "запятая" + - T: "запятая" - x: "*[3]" - name: function-argument-parens @@ -859,13 +867,13 @@ then: [pause: short] - test: if: "ancestor-or-self::*[contains(@data-intent-property, ':literal:')]" - then: [t: "открывающая круглая скобка"] + then: [T: "открывающая круглая скобка"] else_test: - if: ".//m:mo[.='|' or .='∣' or .='∩'] or .//m:mtext[contains(., 'and')] or .//*[contains(name(.), 'given')]" - then: [t: "открывающая круглая скобка"] + then: [T: "открывающая круглая скобка"] - else_if: "ancestor::*[self::m:fraction] and not(IsNode(*[2], 'simple'))" - then: [t: "скобка открывается"] - - else: [t: "скобка открывается"] + then: [T: "скобка открывается"] + - else: [T: "скобка открывается"] - test: if: ".//m:mo[.='|' or .='∣' or .='∩'] or .//m:mtext[contains(., 'and')] or .//*[contains(name(.), 'given')]" then: [pause: short] @@ -875,13 +883,13 @@ then: [pause: short] - test: if: "ancestor-or-self::*[contains(@data-intent-property, ':literal:')]" - then: [t: "закрывающая круглая скобка"] + then: [T: "закрывающая круглая скобка"] else_test: - if: ".//m:mo[.='|' or .='∣' or .='∩'] or .//m:mtext[contains(., 'and')] or .//*[contains(name(.), 'given')]" - then: [t: "закрывающая круглая скобка"] + then: [T: "закрывающая круглая скобка"] - else_if: "ancestor::*[self::m:fraction] and not(IsNode(*[2], 'simple'))" - then: [t: "скобка закрывается"] - - else: [t: "скобка закрывается"] + then: [T: "скобка закрывается"] + - else: [T: "скобка закрывается"] - test: if: "following-sibling::*[1][.='+' or .='=']" then: [pause: medium] @@ -897,8 +905,8 @@ then: [pause: medium] - test: if: "$ClearSpeak_ImpliedTimes='MoreImpliedTimes'" - then: [t: "скобка открывается"] - else: [t: "скобка открывается"] + then: [T: "скобка открывается"] + else: [T: "скобка открывается"] - test: if: "*[2][self::m:fraction]" then: [pause: medium] @@ -908,8 +916,8 @@ then: [pause: short] - test: if: "$ClearSpeak_ImpliedTimes='MoreImpliedTimes'" - then: [t: "скобка закрывается"] - else: [t: "скобка закрывается"] + then: [T: "скобка закрывается"] + else: [T: "скобка закрывается"] - name: ClearSpeak-multi-line tag: [piecewise, system-of-equations, lines] @@ -927,33 +935,33 @@ - if: "($ClearSpeak_MultiLineLabel = 'Auto' and self::m:piecewise) or $ClearSpeak_MultiLineLabel = 'Case'" then_test: if: "$LineCount = 1" - then: [t: "случай"] - else: [t: "случая"] + then: [T: "случай"] + else: [T: "случая"] - else_if: "$ClearSpeak_MultiLineLabel = 'Auto' or $ClearSpeak_MultiLineLabel = 'Line' or $ClearSpeak_MultiLineLabel = 'None'" then_test: if: "$LineCount = 1" - then: [t: "строка"] - else: [t: "строки"] + then: [T: "строка"] + else: [T: "строки"] - else_if: "$ClearSpeak_MultiLineLabel = 'Constraint'" then_test: if: "$LineCount = 1" - then: [t: "ограничение"] - else: [t: "ограничения"] + then: [T: "ограничение"] + else: [T: "ограничения"] - else_if: "$ClearSpeak_MultiLineLabel = 'Equation'" then_test: if: "$LineCount = 1" - then: [t: "уравнение"] - else: [t: "уравнения"] + then: [T: "уравнение"] + else: [T: "уравнения"] - else_if: "$ClearSpeak_MultiLineLabel = 'Row'" then_test: if: "$LineCount = 1" - then: [t: "строка"] - else: [t: "строки"] + then: [T: "строка"] + else: [T: "строки"] - else_if: "$ClearSpeak_MultiLineLabel = 'Step'" then_test: if: "$LineCount = 1" - then: [t: "шаг"] - else: [t: "шага"] + then: [T: "шаг"] + else: [T: "шага"] - pause: short - x: "*" - pause: long @@ -969,22 +977,22 @@ - pause: medium - test: - if: "($ClearSpeak_MultiLineLabel = 'Auto' and parent::m:piecewise) or $ClearSpeak_MultiLineLabel = 'Case'" - then: [t: "случай"] + then: [T: "случай"] - else_if: "$ClearSpeak_MultiLineLabel = 'Auto' or $ClearSpeak_MultiLineLabel = 'Line'" - then: [t: "строка"] + then: [T: "строка"] - else_if: "$ClearSpeak_MultiLineLabel = 'Constraint'" - then: [t: "ограничение"] + then: [T: "ограничение"] - else_if: "$ClearSpeak_MultiLineLabel = 'Equation'" - then: [t: "уравнение"] + then: [T: "уравнение"] - else_if: "$ClearSpeak_MultiLineLabel = 'Row'" - then: [t: "строка"] + then: [T: "строка"] - else_if: "$ClearSpeak_MultiLineLabel = 'Step'" - then: [t: "шаг"] + then: [T: "шаг"] - x: "count(preceding-sibling::*[not(contains(@data-intent-property, ':continued-row:'))]) + 1" - test: if: "self::m:mlabeledtr" then: - - t: "с меткой" + - T: "с меткой" - x: "*[1]/*" - test: - if: "$ClearSpeak_MultiLineLabel='None'" @@ -1004,8 +1012,8 @@ replace: test: if: "$ClearSpeak_ImpliedTimes = 'None'" - then: [t: ""] - else: [t: "умножить на"] + then: [T: ""] + else: [T: "умножить на"] - name: no-times tag: mo @@ -1050,7 +1058,7 @@ - " IsBracketed(., '(', ')') or IsBracketed(., '[', ']') or IsBracketed(., '|', '|')]" - " )" replace: - - t: "умножить на" + - T: "умножить на" - test: if: "@data-function-guess and following-sibling::*[1][self::m:mrow and IsBracketed(., '(', ')')] and not($ClearSpeak_Functions='None')" then: [pause: short] @@ -1081,22 +1089,22 @@ then: [pause: short] - test: if: "IsBracketed(., '[', ']')" - then: [t: "квадратная скобка открывается"] + then: [T: "квадратная скобка открывается"] else_test: if: "ancestor-or-self::*[contains(@data-intent-property, ':literal:')] or .//m:mo[.='|' or .='∩'] or .//*[contains(., 'and')]" - then: [t: "открывающая круглая скобка"] - else: [t: "скобка открывается"] + then: [T: "открывающая круглая скобка"] + else: [T: "скобка открывается"] - x: "*[2]" - test: if: "IsBracketed(., '(', ')') and .//m:mo[.='+' or .='-' or .='−']" then: [pause: short] - test: if: "IsBracketed(., '[', ']')" - then: [t: "квадратная скобка закрывается"] + then: [T: "квадратная скобка закрывается"] else_test: if: "ancestor-or-self::*[contains(@data-intent-property, ':literal:')] or .//m:mo[.='|' or .='∩'] or .//*[contains(., 'and')]" - then: [t: "закрывающая круглая скобка"] - else: [t: "скобка закрывается"] + then: [T: "закрывающая круглая скобка"] + else: [T: "скобка закрывается"] - test: if: "following-sibling::*[1][.='+' or .='=']" then: [pause: medium] diff --git a/Rules/Languages/ru/SharedRules/calculus.yaml b/Rules/Languages/ru/SharedRules/calculus.yaml index cda63fbab..dff383462 100644 --- a/Rules/Languages/ru/SharedRules/calculus.yaml +++ b/Rules/Languages/ru/SharedRules/calculus.yaml @@ -25,15 +25,12 @@ then: [T: "див"] # phrase('div' is short for divergence) else: [T: "дивергенция"] # phrase('divergence of' this function from the mean) - test: - if: "$Verbosity!='Terse' and *[1][self::m:mi[contains('ABCDEFGHIJKLMNOPQRSTUVWXYZ', text())]]" - then: [T: "заглавной"] + if: "not(IsNode(*[1], 'simple'))" + then: [T: "выражения"] - test: if: "not(IsNode(*[1], 'leaf'))" then: [pause: short] - - test: - if: "$Verbosity!='Terse' and *[1][self::m:mi[contains('ABCDEFGHIJKLMNOPQRSTUVWXYZ', text())]]" - then: [x: "translate(*[1], 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')"] - else: [x: "*[1]"] + - x: "*[1]" - name: curl tag: curl @@ -41,15 +38,12 @@ replace: - T: "ротор" # phrase(the 'curl of' a field) - test: - if: "$Verbosity!='Terse' and *[1][self::m:mi[contains('ABCDEFGHIJKLMNOPQRSTUVWXYZ', text())]]" - then: [T: "заглавной"] + if: "not(IsNode(*[1], 'simple'))" + then: [T: "выражения"] - test: if: "not(IsNode(*[1], 'leaf'))" then: [pause: short] - - test: - if: "$Verbosity!='Terse' and *[1][self::m:mi[contains('ABCDEFGHIJKLMNOPQRSTUVWXYZ', text())]]" - then: [x: "translate(*[1], 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')"] - else: [x: "*[1]"] + - x: "*[1]" - name: gradient tag: gradient @@ -60,12 +54,9 @@ then: [T: "градиент"] # phrase(the hill has a 'gradient of' five percent) else: [T: "набла"] # phrase(the delete key is labeled 'del') - test: - if: "$Verbosity!='Terse' and *[1][self::m:mi[contains('ABCDEFGHIJKLMNOPQRSTUVWXYZ', text())]]" - then: [T: "заглавной"] + if: "not(IsNode(*[1], 'simple'))" + then: [T: "выражения"] - test: if: "not(IsNode(*[1], 'leaf'))" then: [pause: short] - - test: - if: "$Verbosity!='Terse' and *[1][self::m:mi[contains('ABCDEFGHIJKLMNOPQRSTUVWXYZ', text())]]" - then: [x: "translate(*[1], 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')"] - else: [x: "*[1]"] + - x: "*[1]" diff --git a/Rules/Languages/ru/SharedRules/default.yaml b/Rules/Languages/ru/SharedRules/default.yaml index 36a1a1de3..250f5fa8c 100644 --- a/Rules/Languages/ru/SharedRules/default.yaml +++ b/Rules/Languages/ru/SharedRules/default.yaml @@ -6,33 +6,33 @@ replace: - x: "*[1]" - pause: short - - t: "открывающая круглая скобка" + - T: "открывающая круглая скобка" - pause: short - x: "*[3]" - x: "*[4]" - x: "*[5]" - pause: short - - t: "закрывающая круглая скобка" + - T: "закрывающая круглая скобка" - name: probability-given-bracketed tag: [math, mrow] match: "*[1][self::m:mi[.='P']] and *[last()][IsBracketed(., '(', ')') and .//m:mo[.='|']]" replace: - - t: "пэ большое" + - T: "пэ большое" - pause: short - - t: "скобка открывается" + - T: "скобка открывается" - pause: short - test: - if: "*[last()]//*[self::m:mi[.='A']]" - then: [t: "а большое"] + then: [T: "а большое"] - else: [x: "*[last()]//*[self::m:mo[.='|']]/preceding-sibling::*[1]"] - x: "*[last()]//*[self::m:mo[.='|']]" - test: - if: "*[last()]//*[self::m:mi[.='B']]" - then: [t: "бэ большое"] + then: [T: "бэ большое"] - else: [x: "*[last()]//*[self::m:mo[.='|']]/following-sibling::*[1]"] - pause: short - - t: "скобка закрывается" + - T: "скобка закрывается" - name: vector-cross-product tag: [math, mrow] @@ -40,7 +40,7 @@ replace: - test: - if: "*[1][.='u']" - then: [t: "у"] + then: [T: "у"] - else: [x: "*[1]"] - x: "*[2]" - x: "*[3]" @@ -49,10 +49,10 @@ tag: [math, mrow] match: "count(*)=2 and *[1][name()='limit'] and *[2][name()='fraction' or name()='mfrac' or .//*[name()='fraction' or name()='mfrac']]" replace: - - t: "предел при" + - T: "предел при" - x: "*[1]/*[1]" - pause: short - - t: "от" + - T: "от" - test: if: "$Impairment='LearningDisability'" then: [pause: medium] @@ -63,10 +63,10 @@ tag: mrow match: "count(*)=3 and *[1][name()='limit'] and *[2][.='\u2061'] and *[3][name()='fraction' or name()='mfrac']" replace: - - t: "предел при" + - T: "предел при" - x: "*[1]/*[1]" - pause: short - - t: "от" + - T: "от" - test: if: "$Impairment='LearningDisability'" then: [pause: medium] @@ -100,18 +100,18 @@ tag: mrow match: "not(*)" replace: - - t: "полем" # say nothing -- placeholder + - T: "полем" # say nothing -- placeholder - name: limit-approach tag: mrow match: "parent::m:limit and count(*)=3 and *[2][.='→' or .='↗']" replace: - x: "*[1]" - - t: "стремящемся к" + - T: "стремящемся к" - x: "*[3]" - test: if: "*[2][.='↗']" - then: [t: "снизу"] + then: [T: "снизу"] - name: probability-given tag: mrow @@ -119,13 +119,13 @@ replace: - x: "*[1]" - pause: short - - t: "открывающая круглая скобка" + - T: "открывающая круглая скобка" - pause: short - x: "*[3]" - x: "*[4]" - x: "*[5]" - pause: short - - t: "закрывающая круглая скобка" + - T: "закрывающая круглая скобка" - name: literal-function-application tag: mrow @@ -135,13 +135,13 @@ replace: - x: "*[1]" - pause: short - - t: "открывающая круглая скобка" + - T: "открывающая круглая скобка" - test: if: "*[3]/*[2]" then: [x: "*[3]/*[2]"] else: [x: "*[3]"] - pause: short - - t: "закрывающая круглая скобка" + - T: "закрывающая круглая скобка" - name: literal-perpendicular-row tag: mrow @@ -194,30 +194,30 @@ - if: "$SpeechStyle='ClearSpeak' and $ClearSpeak_SetMemberSymbol='Belongs'" then: - pause: short - - t: "входящих в" + - T: "входящих в" - else_if: "$SpeechStyle='ClearSpeak' and $ClearSpeak_SetMemberSymbol='Element'" then: - pause: short - - t: "являющихся элементами" + - T: "являющихся элементами" - else_if: "$SpeechStyle='ClearSpeak' and ($ClearSpeak_SetMemberSymbol='Member')" then: - pause: short - - t: "принадлежащих" - - else: [t: "из"] + - T: "принадлежащих" + - else: [T: "из"] - test: - if: "*[3][.='ℕ']" - then: [t: "натуральных чисел"] + then: [T: "натуральных чисел"] - else_if: "*[3][.='ℤ']" then_test: - if: "$SpeechStyle='ClearSpeak' and $ClearSpeak_SetMemberSymbol='Belongs'" - then: [t: "целые числа"] + then: [T: "целые числа"] - else_if: "$SpeechStyle='ClearSpeak' and $ClearSpeak_SetMemberSymbol='Member'" - then: [t: "целым числам"] - - else: [t: "целых чисел"] + then: [T: "целым числам"] + - else: [T: "целых чисел"] - else_if: "*[3][.='ℚ']" - then: [t: "рациональных чисел"] + then: [T: "рациональных чисел"] - else_if: "*[3][.='ℝ']" - then: [t: "действительных чисел"] + then: [T: "действительных чисел"] - else: [x: "*[3]"] - pause: short @@ -236,26 +236,26 @@ - if: "$SpeechStyle='ClearSpeak' and $ClearSpeak_SetMemberSymbol='Belongs'" then: - pause: short - - t: "входящему в" + - T: "входящему в" - else_if: "$SpeechStyle='ClearSpeak' and $ClearSpeak_SetMemberSymbol='In'" - then: [t: "из"] + then: [T: "из"] - else_if: "$SpeechStyle='ClearSpeak' and ($ClearSpeak_SetMemberSymbol='Auto' or $ClearSpeak_SetMemberSymbol='Member')" then: - pause: short - - t: "принадлежащему" + - T: "принадлежащему" - else: - pause: short - - t: "являющемуся элементом" + - T: "являющемуся элементом" - test: - if: "*[3][.='ℤ']" then_test: - if: "$SpeechStyle='ClearSpeak' and $ClearSpeak_SetMemberSymbol='Belongs'" - then: [t: "целые числа"] + then: [T: "целые числа"] - else_if: "$SpeechStyle='ClearSpeak' and ($ClearSpeak_SetMemberSymbol='Auto' or $ClearSpeak_SetMemberSymbol='Member')" - then: [t: "целым числам"] - - else: [t: "целых чисел"] + then: [T: "целым числам"] + - else: [T: "целых чисел"] - else_if: "*[3][.='ℚ']" - then: [t: "рациональных чисел"] + then: [T: "рациональных чисел"] - else: [x: "*[3]"] - pause: short @@ -267,19 +267,19 @@ - pause: short - test: - if: "$SpeechStyle='ClearSpeak' and $ClearSpeak_SetMemberSymbol='Belongs'" - then: [t: "не входит в"] + then: [T: "не входит в"] - else_if: "$SpeechStyle='ClearSpeak' and $ClearSpeak_SetMemberSymbol='Element'" - then: [t: "не является элементом"] + then: [T: "не является элементом"] - else_if: "$SpeechStyle='ClearSpeak'" - then: [t: "не принадлежит"] - - else: [t: "не является элементом"] + then: [T: "не принадлежит"] + - else: [T: "не является элементом"] - test: - if: "*[3][.='ℝ'] and $SpeechStyle='ClearSpeak' and $ClearSpeak_SetMemberSymbol='Belongs'" - then: [t: "действительные числа"] + then: [T: "действительные числа"] - else_if: "*[3][.='ℝ'] and $SpeechStyle='ClearSpeak' and $ClearSpeak_SetMemberSymbol!='Element'" - then: [t: "действительным числам"] + then: [T: "действительным числам"] - else_if: "*[3][.='ℝ']" - then: [t: "действительных чисел"] + then: [T: "действительных чисел"] - else: [x: "*[3]"] - name: probability-chain @@ -288,30 +288,30 @@ replace: - x: "*[1]/*[1]" - pause: medium - - t: "открывающая круглая скобка" + - T: "открывающая круглая скобка" - pause: short - x: "*[1]/*[3]/*[2]" - pause: medium - - t: "закрывающая круглая скобка" + - T: "закрывающая круглая скобка" - pause: medium - x: "*[2]" - pause: medium - x: "*[3]/*[1]" - pause: short - - t: "открывающая круглая скобка" + - T: "открывающая круглая скобка" - pause: short - x: "*[3]/*[3]/*[2]" - pause: medium - - t: "закрывающая круглая скобка" + - T: "закрывающая круглая скобка" - pause: medium - x: "*[4]" - pause: short - x: "*[5]/*[1]/*[1]" - - t: "от" + - T: "от" - x: "*[5]/*[1]/*[3]/*[2]" - pause: short - x: "*[5]/*[3]/*[1]" - - t: "от" + - T: "от" - x: "*[5]/*[3]/*[3]/*[2]" - name: modified-variable-product @@ -416,7 +416,7 @@ tag: mtext match: "normalize-space(.)='and' or contains(., 'and')" replace: - - t: "и" + - T: "и" - name: english-if tag: mtext @@ -425,7 +425,7 @@ - test: if: "ancestor::m:mtd" then: [pause: short] - - t: "если" + - T: "если" - name: even-number-text tag: mtext @@ -433,8 +433,8 @@ replace: - test: if: "$SpeechStyle='ClearSpeak'" - then: [t: "— чётное число"] - else: [t: "икс — чётное число"] + then: [T: "— чётное число"] + else: [T: "икс — чётное число"] - name: fraction-text-terms tag: [mi, mtext] @@ -442,30 +442,30 @@ replace: - test: - if: ".='rise'" - then: [t: "подъём"] + then: [T: "подъём"] - else_if: ".='run'" - then: [t: "длину"] + then: [T: "длину"] - else_if: ".='miles'" - then: [t: "мили"] - - else: [t: "галлона"] + then: [T: "мили"] + - else: [T: "галлона"] - name: perpendicular-to tag: mo match: "@intent='perpendicular-to' or .='perpendicular to'" replace: - - t: "перпендикулярно" + - T: "перпендикулярно" - name: set-builder-such-that tag: mo match: ".=':' and ancestor::*[self::m:set] and preceding-sibling::*[.='ℤ' or .='ℕ' or (self::m:mrow and *[2][.='∈'])]" replace: - - t: "таких что" + - T: "таких что" - name: perpendicular-to-intent-node tag: "*" match: "@intent='perpendicular-to' or .='perpendicular to' or contains(name(.), 'perpendicular')" replace: - - t: "перпендикулярно" + - T: "перпендикулярно" - name: default tag: [mo, mtext] @@ -474,6 +474,23 @@ - bookmark: "@id" - x: "text()" +- name: inflected-capital-letter + tag: mi + match: + - "string-length(.)=1 and" + - "(parent::*[self::m:trace or self::m:dimension or self::m:homomorphism or self::m:kernel or self::m:norm or self::m:determinant or self::m:real-part or self::m:imaginary-part or self::m:laplacian or self::m:divergence or self::m:curl or self::m:gradient or self::m:subscripted-norm or self::m:limit or self::m:line-segment or self::m:ray or self::m:open-interval or self::m:closed-interval or self::m:open-closed-interval or self::m:closed-open-interval or self::m:binomial or self::m:pochhammer or self::m:square-root or self::m:root or self::m:absolute-value] or parent::m:large-op or parent::m:logarithm-with-base or (parent::m:power and preceding-sibling::*) or (parent::m:fraction and preceding-sibling::* and IsNode(../*[1], 'simple') and IsNode(., 'simple')) or (parent::m:apply-function and preceding-sibling::*) or (parent::m:evaluate and preceding-sibling::*) or preceding-sibling::*[1][.='⁡'] or parent::m:mrow[IsBracketed(., '(', ')') and count(*)=3 and parent::*[self::m:kernel or self::m:homomorphism]])" + replace: + - bookmark: "@id" + - with: + variables: + - RuCapitalWord: "IfThenElse((parent::m:ray or parent::m:fraction) and preceding-sibling::*, 'заглавную', 'заглавной')" + - RuInflectCapital: "not(parent::m:large-op and not(preceding-sibling::*)) and not(parent::m:line-segment and $Verbosity!='Verbose') and not(parent::m:ray and $Verbosity!='Verbose') and not($Verbosity='Terse' and (parent::m:square-root or (parent::m:root and not(preceding-sibling::*))))" + replace: + - with: + variables: + - SpeechOverrides_CapitalLetters: "IfThenElse($RuInflectCapital and $SpeechOverrides_CapitalLetters='' and $Impairment='Blindness', $RuCapitalWord, $SpeechOverrides_CapitalLetters)" + replace: [x: "text()"] + - name: default tag: mi match: "." @@ -481,68 +498,68 @@ - bookmark: "@id" - test: - if: "text()='perpendicular-to' or text()='perpendicular to' or text()='perpendicular_to'" - then: [t: "перпендикулярно"] + then: [T: "перпендикулярно"] - else_if: "text()='A' and parent::*[self::m:mrow and IsBracketed(., '(', ')') and count(*)=3 and preceding-sibling::*[2][self::m:mi[.='P']]]" - then: [t: "заглавной а"] + then: [T: "заглавной а"] - else_if: "text()='B' and parent::*[self::m:mrow and IsBracketed(., '(', ')') and count(*)=3 and preceding-sibling::*[2][self::m:mi[.='P']]]" - then: [t: "заглавной бэ"] + then: [T: "заглавной бэ"] - else_if: "text()='e' and parent::*[self::m:power or self::m:msup][*[1][text()='e']]" - then: [t: "е"] + then: [T: "е"] - else_if: "text()='g' and following-sibling::*[1][.='⁡' or (.='⁢' and @data-function-guess)]" - then: [t: "же"] + then: [T: "же"] - else_if: "$SpeechStyle='SimpleSpeak' and (text()='n' or text()='k') and parent::*[self::m:mrow and count(*)=3 and *[2][.='+'] and *[3][self::m:mn]] and ancestor::*[name()='fraction']" then_test: - if: "text()='n'" - then: [t: "эн"] - - else: [t: "ка"] + then: [T: "эн"] + - else: [T: "ка"] - else_if: "text()='n' and parent::*[self::m:mrow and parent::*[self::m:power] and count(*)>1]" - then: [t: "эн"] + then: [T: "эн"] - else_if: "(text()='n' or text()='k') and ancestor::*[name()='binomial']" then_test: - if: "text()='n'" - then: [t: "эн"] - - else: [t: "ка"] + then: [T: "эн"] + - else: [T: "ка"] - else_if: "text()='i' and (ancestor::*[self::m:large-op] or ancestor::*[preceding-sibling::*[1][self::m:large-op or IsInDefinition(., 'LargeOperators') or .//*[self::m:large-op or IsInDefinition(., 'LargeOperators')]]] or preceding-sibling::*[1][self::m:large-op or IsInDefinition(., 'LargeOperators')])" - then: [t: "и"] + then: [T: "и"] - else_if: "text()='n' and (ancestor::*[self::m:large-op] or ancestor::*[preceding-sibling::*[1][self::m:large-op or IsInDefinition(., 'LargeOperators') or .//*[self::m:large-op or IsInDefinition(., 'LargeOperators')]]] or preceding-sibling::*[1][self::m:large-op or IsInDefinition(., 'LargeOperators')])" - then: [t: "эн"] + then: [T: "эн"] - else_if: "text()='d' and preceding-sibling::*[1][.='⁢'] and following-sibling::*[1][.='⁢']" - then: [t: "д"] + then: [T: "д"] - else_if: "text()='b' and parent::*[self::m:mover or self::m:modified-variable]" - then: [t: "б"] + then: [T: "б"] - else_if: "text()='x' and ancestor::*[self::m:limit]" - then: [t: "икс"] + then: [T: "икс"] - else_if: "text()='x' and (($SpeechStyle='ClearSpeak' and ancestor::*[name()='set']) or (ancestor::*[name()='set' and not(.//*[.='∈'])] and ancestor::*[self::m:mrow and *[2][.=':']]))" - then: [t: "икс"] + then: [T: "икс"] - else_if: "text()='i' and $SpeechStyle='ClearSpeak' and ancestor-or-self::*[following-sibling::*[.='∉']]" - then: [t: "и"] + then: [T: "и"] - else_if: "text()='i' and (parent::*[self::m:binomial or self::m:pochhammer] or (parent::*[self::m:mmultiscripts] and preceding-sibling::*) or (parent::*[self::m:indexed-by or self::m:msub or self::m:power[@data-from-mathml='msubsup']] and preceding-sibling::*) or parent::*[self::m:mrow and parent::*[self::m:indexed-by or self::m:msub or self::m:power[@data-from-mathml='msubsup']] and preceding-sibling::*])" - then: [t: "и"] + then: [T: "и"] - else_if: "text()='j' and (parent::*[self::m:binomial or self::m:pochhammer] or (parent::*[self::m:mmultiscripts] and preceding-sibling::*) or (parent::*[self::m:indexed-by or self::m:msub or self::m:power[@data-from-mathml='msubsup']] and preceding-sibling::*) or parent::*[self::m:mrow and parent::*[self::m:indexed-by or self::m:msub or self::m:power[@data-from-mathml='msubsup']] and preceding-sibling::*])" - then: [t: "джей"] + then: [T: "йот"] - else_if: "text()='k' and (parent::*[self::m:binomial or self::m:pochhammer] or (parent::*[self::m:mmultiscripts] and preceding-sibling::*) or (parent::*[self::m:indexed-by or self::m:msub or self::m:power[@data-from-mathml='msubsup']] and preceding-sibling::*) or parent::*[self::m:mrow and parent::*[self::m:indexed-by or self::m:msub or self::m:power[@data-from-mathml='msubsup']] and preceding-sibling::*])" - then: [t: "ка"] + then: [T: "ка"] - else_if: "text()='l' and (parent::*[self::m:binomial or self::m:pochhammer] or (parent::*[self::m:mmultiscripts] and preceding-sibling::*) or (parent::*[self::m:indexed-by or self::m:msub or self::m:power[@data-from-mathml='msubsup']] and preceding-sibling::*) or parent::*[self::m:mrow and parent::*[self::m:indexed-by or self::m:msub or self::m:power[@data-from-mathml='msubsup']] and preceding-sibling::*])" - then: [t: "эль"] + then: [T: "эль"] - else_if: "text()='m' and (parent::*[self::m:binomial or self::m:pochhammer] or (parent::*[self::m:mmultiscripts] and preceding-sibling::*) or (parent::*[self::m:indexed-by or self::m:msub or self::m:power[@data-from-mathml='msubsup']] and preceding-sibling::*) or parent::*[self::m:mrow and parent::*[self::m:indexed-by or self::m:msub or self::m:power[@data-from-mathml='msubsup']] and preceding-sibling::*])" - then: [t: "эм"] + then: [T: "эм"] - else_if: "text()='n' and (parent::*[self::m:binomial or self::m:pochhammer] or (parent::*[self::m:mmultiscripts] and preceding-sibling::*) or (parent::*[self::m:indexed-by or self::m:msub or self::m:power[@data-from-mathml='msubsup']] and preceding-sibling::*) or parent::*[self::m:mrow and parent::*[self::m:indexed-by or self::m:msub or self::m:power[@data-from-mathml='msubsup']] and preceding-sibling::*])" - then: [t: "эн"] + then: [T: "эн"] - else_if: "string-length(.)=1 and contains('ABCDEFGHIJKLMNOPQRSTUVWXYZ', text()) and ancestor::*[preceding-sibling::*[1][self::m:large-op or IsInDefinition(., 'LargeOperators')]]" then: - x: "translate(text(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')" - - t: "большое" + - T: "большое" - else_if: "string-length(.) = 1 and text() != '_'" # need unicode.tdl to kick in for single letter tokens then: [x: "text()"] - else_if: "@data-chem-element" # NavMode=Character needs this - then: [spell: "text()", pause: "short"] + then: [SPELL: "text()", pause: "short"] else: [x: "translate(., '-_\u00A0', ' ')"] # from intent literals or from extra spaces added (which get deleted) - name: default tag: ms match: "." replace: - - t: "строка" # phrase('the string' is long) + - T: "строка" # phrase('the string' is long) - pause: short - x: "text()" @@ -590,7 +607,7 @@ - "not(ancestor::*[name() != 'mrow'][1]/self::m:fraction)" # FIX: can't test for mrow -- what should be used??? replace: - x: "*[1]" - - t: "разделить на" # phrase("the fraction x 'over' y") + - T: "разделить на" # phrase("the fraction x 'over' y") - x: "*[2]" - pause: short @@ -598,13 +615,13 @@ tag: mfrac match: "." replace: - - t: "дробь, числитель:" # phrase("'start' fraction x over y end of fraction") + - T: "дробь, числитель:" # phrase("'start' fraction x over y end of fraction") - pause: short - x: "*[1]" - test: if: "not(IsNode(*[1],'leaf'))" then: [pause: short] - - t: "знаменатель:" # phrase("the fraction x 'over' y") + - T: "знаменатель:" # phrase("the fraction x 'over' y") - test: if: "not(IsNode(*[2],'leaf'))" then: [pause: short] @@ -612,7 +629,7 @@ - pause: short - test: if: "$Impairment = 'Blindness'" - then: [t: "конец дроби"] # phrase("start of fraction x over y 'end over'") + then: [T: "конец дроби"] # phrase("start of fraction x over y 'end over'") - pause: medium @@ -621,15 +638,15 @@ tag: msqrt match: "." replace: - - t: "квадратный корень" + - T: "квадратный корень" - test: if: "$Verbosity!='Terse'" - then: [t: "из"] # phrase("the root 'of' x") + then: [T: "из"] # phrase("the root 'of' x") - x: "*[1]" - pause: short - test: if: "not(IsNode(*[1],'leaf')) or $Impairment = 'Blindness'" - then: [t: "конец корня"] # phrase("root of x 'end root symbol'") + then: [T: "конец корня"] # phrase("root of x 'end root symbol'") # not sure what really should be said for these since we should not assume they are square roots - name: literal-default @@ -638,19 +655,19 @@ replace: - test: - if: "*[2][.='2']" - then: [t: "квадратный корень"] + then: [T: "квадратный корень"] - else_if: "*[2][.='3']" - then: [t: "кубический корень"] + then: [T: "кубический корень"] - else: - - t: "корень степени" # phrase("the 'root with index' 3 of 5") + - T: "корень степени" # phrase("the 'root with index' 3 of 5") - x: "*[2]" - pause: short - - t: "из" # phrase("the root 'of' x") + - T: "из" # phrase("the root 'of' x") - x: "*[1]" - pause: short - test: if: "not(IsNode(*[1],'leaf')) or $Impairment = 'Blindness'" - then: [t: "конец корня"] # phrase("root of x 'end root symbol'") + then: [T: "конец корня"] # phrase("root of x 'end root symbol'") - name: simple-sub @@ -667,7 +684,7 @@ match: "count(*)=2 and *[2][self::m:mrow and *[2][.='⁣']]" replace: - x: "*[1]" - - t: "с индексом" # phrase(x 'sub' 2) + - T: "с индексом" # phrase(x 'sub' 2) - x: "*[2]" - pause: short @@ -676,7 +693,7 @@ match: "count(*)=2 and parent::*[self::m:power]" replace: - x: "*[1]" - - t: "нижний индекс" + - T: "нижний индекс" - x: "*[2]" - pause: short @@ -698,7 +715,7 @@ - x: "*[1]" - test: if: "not($Verbosity='Terse' and *[2][self::m:mn and not(translate(., '.,', '')!=.)])" # just say "x 1" for terse vs "x sub 1" - then: [t: "нижний индекс"] # phrase(x 'sub' 2) + then: [T: "нижний индекс"] # phrase(x 'sub' 2) - x: "*[2]" @@ -710,7 +727,7 @@ - test: if: "name(.)='msubsup'" then: - - t: "нижний индекс" # phrase(x 'sub' 2) + - T: "нижний индекс" # phrase(x 'sub' 2) - x: "*[2]" - test: if: "*[last()][translate(., '′″‴⁗†‡°*', '')='']" @@ -718,21 +735,21 @@ else_test: if: "ancestor-or-self::*[contains(@data-intent-property, ':literal:')]" # FIX: is this test necessary? then: - - t: "верхний индекс" # phrase(x 'super' 2) + - T: "верхний индекс" # phrase(x 'super' 2) - x: "*[last()]" - test: if: "not(IsNode(*[last()], 'simple')) or $Impairment = 'Blindness'" - then: [t: "конец верхнего индекса"] # phrase(x super 2 'end of super') + then: [T: "конец верхнего индекса"] # phrase(x super 2 'end of super') else: - test: if: "$Verbosity='Verbose'" - then: [t: "верхний индекс"] - else: [t: "в степени"] + then: [T: "верхний индекс"] + else: [T: "в степени"] - x: "*[last()]" - test: if: "$Verbosity='Verbose'" - then: [t: "конец верхнего индекса"] - else: [t: "конец степени"] + then: [T: "конец верхнего индекса"] + else: [T: "конец степени"] - name: default tag: munder @@ -740,11 +757,11 @@ replace: - test: if: "not(IsNode(*[1], 'leaf'))" - then: [t: "количество"] # phrase(phrase(x 'quantity' with y above it) + then: [T: "количество"] # phrase(phrase(x 'quantity' with y above it) - x: "*[1]" - - t: "с" # phrase(x 'with' z below it) + - T: "с" # phrase(x 'with' z below it) - x: "*[2]" - - t: "ниже" # phrase(x with z 'below' it) + - T: "ниже" # phrase(x with z 'below' it) - name: diacriticals tag: mover @@ -759,11 +776,11 @@ replace: - test: if: "not(IsNode(*[1], 'leaf'))" - then: [t: "количество"] # phrase(phrase(the 'quantity' x plus 1 with y above it) + then: [T: "количество"] # phrase(phrase(the 'quantity' x plus 1 with y above it) - x: "*[1]" - - t: "с" # phrase(x modified 'with' y above it) + - T: "с" # phrase(x modified 'with' y above it) - x: "*[2]" - - t: "с" # phrase(x modified 'with' y above it) + - T: "с" # phrase(x modified 'with' y above it) - name: default tag: munderover @@ -771,13 +788,13 @@ replace: - test: if: "not(IsNode(*[1], 'leaf'))" - then: [t: "количество"] # phrase(the 'quantity' x plus 1 with y above it) + then: [T: "количество"] # phrase(the 'quantity' x plus 1 with y above it) - x: "*[1]" - - t: "с" # phrase(x modified 'with' y above it) + - T: "с" # phrase(x modified 'with' y above it) - x: "*[2]" - - t: "ниже и" # phrase(x modified with y 'below and' y above it) + - T: "ниже и" # phrase(x modified with y 'below and' y above it) - x: "*[3]" - - t: "выше" # phrase(x modified with y 'above' it) + - T: "выше" # phrase(x modified with y 'above' it) - name: default # Here we support up to 2 prescripts and up to 4 postscripts -- that should cover all reasonable cases @@ -804,9 +821,9 @@ - test: # only bother announcing if there is more than one prescript if: "count($Prescripts) > 2" then: - - t: "с" # phrase(substitute x 'with' y) + - T: "с" # phrase(substitute x 'with' y) - x: "count($Prescripts) div 2" - - t: "индексами перед" + - T: "индексами перед" - pause: short - test: if: "not($Prescripts[1][self::m:none])" @@ -815,7 +832,7 @@ - x: "$Prescripts[1]" - test: if: "not($Prescripts[1][self::m:none] or $Prescripts[2][self::m:none])" - then: [t: "и"] # phrase(10 is greater than 8 'and' less than 15) + then: [T: "и"] # phrase(10 is greater than 8 'and' less than 15) - test: if: "not($Prescripts[2][self::m:none])" then: @@ -832,7 +849,7 @@ - x: "$Prescripts[3]" - test: if: "not($Prescripts[3][self::m:none] or $Prescripts[4][self::m:none])" - then: [t: "и"] # phrase(10 is grater than 8 'and' less than 15) + then: [T: "и"] # phrase(10 is grater than 8 'and' less than 15) - test: if: "not($Prescripts[4][self::m:none])" then: @@ -841,7 +858,7 @@ - test: if: "count($Prescripts) > 4" # give up and just dump them out so at least the content is there then: - - t: "и далее" + - T: "и далее" - test: if: "not($Prescripts[5][self::m:none])" then: @@ -849,7 +866,7 @@ - x: "$Prescripts[5]" - test: if: "not($Prescripts[5][self::m:none] or $Prescripts[6][self::m:none])" - then: [t: "и"] + then: [T: "и"] - test: if: "not($Prescripts[6][self::m:none])" then: @@ -862,7 +879,7 @@ - x: "$Prescripts[7]" - test: if: "not($Prescripts[7][self::m:none] or $Prescripts[8][self::m:none])" - then: [t: "и"] + then: [T: "и"] - test: if: "not($Prescripts[8][self::m:none])" then: @@ -881,10 +898,10 @@ then: - test: if: "$Prescripts" - then: [pause: short, t: "и"] # phrase(10 is greater than 8 'and' less than 15) - - t: "с" # phrase(substitute x 'with' y) + then: [pause: short, T: "и"] # phrase(10 is greater than 8 'and' less than 15) + - T: "с" # phrase(substitute x 'with' y) - x: "count($Postscripts) div 2" - - t: "индексами после" + - T: "индексами после" - pause: short - test: if: "not($Postscripts[1][self::m:none])" @@ -893,7 +910,7 @@ - x: "$Postscripts[1]" - test: if: "not($Postscripts[1][self::m:none] or $Postscripts[2][self::m:none])" - then: [t: "и"] # phrase(10 is greater than 8 'and' less than 15) + then: [T: "и"] # phrase(10 is greater than 8 'and' less than 15) - test: if: "not($Postscripts[2][self::m:none])" then: @@ -909,7 +926,7 @@ - x: "$Postscripts[3]" - test: if: "not($Postscripts[3][self::m:none] or $Postscripts[4][self::m:none])" - then: [t: "и"] # phrase(10 is greater than 8 'and' less than 15) + then: [T: "и"] # phrase(10 is greater than 8 'and' less than 15) - test: if: "not($Postscripts[4][self::m:none])" then: @@ -925,7 +942,7 @@ - x: "$Postscripts[5]" - test: if: "not($Postscripts[5][self::m:none] or $Postscripts[6][self::m:none])" - then: [t: "и"] # phrase(10 is greater than 8 'and' less than 15) + then: [T: "и"] # phrase(10 is greater than 8 'and' less than 15) - test: if: "not($Postscripts[6][self::m:none])" then: @@ -941,7 +958,7 @@ - x: "$Postscripts[7]" - test: if: "not($Postscripts[7][self::m:none] or $Postscripts[8][self::m:none])" - then: [t: "и"] # phrase(10 is less than 15 'and' greater than 5) + then: [T: "и"] # phrase(10 is less than 15 'and' greater than 5) - test: if: "not($Postscripts[8][self::m:none])" then: @@ -950,7 +967,7 @@ - test: if: "count($Postscripts) > 8" # give up and just dump them out so at least the content is there then: - - t: "и далее" + - T: "и далее" - test: if: "not($Postscripts[9][self::m:none])" then: @@ -958,7 +975,7 @@ - x: "$Postscripts[9]" - test: if: "not($Postscripts[9][self::m:none] or $Postscripts[10][self::m:none])" - then: [t: "и"] + then: [T: "и"] - test: if: "not($Postscripts[10][self::m:none])" then: @@ -970,18 +987,18 @@ variables: [IsColumnSilent: false()] match: "." replace: - - t: "стол с" # phrase(the 'table with' 3 rows) + - T: "стол с" # phrase(the 'table with' 3 rows) - x: count(*) - test: if: count(*)=1 - then: [t: "строкой"] # phrase(the table with 1 'row') - else: [t: "строками"] # phrase(the table with 3 'rows') - - t: "и " # phrase(the table with 3 rows 'and' 4 columns) + then: [T: "строкой"] # phrase(the table with 1 'row') + else: [T: "строками"] # phrase(the table with 3 'rows') + - T: "и " # phrase(the table with 3 rows 'and' 4 columns) - x: "count(*[1]/*)" - test: if: "count(*[1]/*)=1" - then: [t: "столбцом"] # phrase(the table with 3 rows and 1 'column') - else: [t: "столбцами"] # phrase(the table with 3 rows and 4 'columns') + then: [T: "столбцом"] # phrase(the table with 3 rows and 1 'column') + else: [T: "столбцами"] # phrase(the table with 3 rows and 4 'columns') - pause: long - x: "*" @@ -992,12 +1009,12 @@ match: "." replace: - pause: medium - - t: "строка" # phrase(the first 'row' of a matrix) + - T: "строка" # phrase(the first 'row' of a matrix) - x: "count(preceding-sibling::*)+1" - test: if: .[self::m:mlabeledtr] then: - - t: "с меткой" # phrase(the line 'with label' first equation) + - T: "с меткой" # phrase(the line 'with label' first equation) - x: "*[1]/*" - pause: short - pause: medium @@ -1016,7 +1033,7 @@ # if: not($IsColumnSilent) and ($ClearSpeak_Matrix = 'SpeakColNum' or count(preceding-sibling::*) != 0) if: "not($IsColumnSilent)" then: - - t: "столбец" # phrase(the first 'column' of the matrix) + - T: "столбец" # phrase(the first 'column' of the matrix) - x: "count(preceding-sibling::*)+1" - pause: medium - x: "*" @@ -1035,7 +1052,7 @@ tag: menclose match: "@notation='box' and *[self::m:mtext and .=' ']" replace: - - t: "пустое поле" # phrase(the 'empty box' contains no values) + - T: "пустое поле" # phrase(the 'empty box' contains no values) - name: default # The ordering below is the order in which words come out when there is more than one value @@ -1045,108 +1062,108 @@ replace: - test: if: ".[contains(concat(' ', normalize-space(@notation), ' '), ' box ')]" - then: [t: "рамка", pause: short] # phrase(the 'box' around the expression) + then: [T: "рамка", pause: short] # phrase(the 'box' around the expression) - test: if: ".[contains(@notation,'roundedbox')]" - then: [t: "скругленная рамка", pause: short] # phrase(the 'round box' around the expression) + then: [T: "скругленная рамка", pause: short] # phrase(the 'round box' around the expression) - test: if: ".[contains(@notation,'circle')]" - then: [t: "окружность", pause: short] # phrase(the 'circle' around the expression) + then: [T: "окружность", pause: short] # phrase(the 'circle' around the expression) - test: if: ".[ contains(concat(' ', normalize-space(@notation), ' '), ' left ') or contains(concat(' ', normalize-space(@notation), ' '), ' right ') or contains(@notation,'top') or contains(@notation,'bottom') ]" then: - test: if: ".[contains(concat(' ', normalize-space(@notation), ' '), ' left ')]" - then: [t: "линия слева", pause: short] # phrase(line on 'left' of the expression) + then: [T: "линия слева", pause: short] # phrase(line on 'left' of the expression) - test: if: ".[contains(concat(' ', normalize-space(@notation), ' '), ' right ')]" - then: [t: "линия справа", pause: short] # phrase(line on 'right' of the expression) + then: [T: "линия справа", pause: short] # phrase(line on 'right' of the expression) - test: if: ".[contains(@notation,'top')]" - then: [t: "линия сверху", pause: short] # phrase(line on 'top' of the expression) + then: [T: "линия сверху", pause: short] # phrase(line on 'top' of the expression) - test: if: ".[contains(@notation,'bottom')]" - then: [t: "снизу", pause: short] # phrase(line on the 'bottom' of the expression) + then: [T: "снизу", pause: short] # phrase(line on the 'bottom' of the expression) - test: if: ".[ contains(@notation,'updiagonalstrike') or contains(@notation,'downdiagonalstrike') or contains(@notation,'verticalstrike') or contains(@notation,'horizontalstrike') ]" then: - test: if: ".[contains(@notation,'updiagonalstrike') and contains(@notation,'downdiagonalstrike')]" - then: [t: "икс", pause: short] # seems better to say 'x cross out' than 'up diagonal, down diagonal cross out' + then: [T: "икс", pause: short] # seems better to say 'x cross out' than 'up diagonal, down diagonal cross out' else: - test: if: ".[contains(@notation,'updiagonalstrike')]" - then: [t: "диагональ вверх", pause: short] # phrase(the line runs 'up diagonal') + then: [T: "диагональ вверх", pause: short] # phrase(the line runs 'up diagonal') - test: if: ".[contains(@notation,'downdiagonalstrike')]" - then: [t: "диагональ вниз", pause: short] # phrase(the line runs 'down diagonal') + then: [T: "диагональ вниз", pause: short] # phrase(the line runs 'down diagonal') - test: if: ".[contains(@notation,'verticalstrike')]" - then: [t: "вертикальная", pause: short] # phrase(the line is 'vertical') + then: [T: "вертикальная", pause: short] # phrase(the line is 'vertical') - test: if: ".[contains(@notation,'horizontalstrike')]" - then: [t: "горизонтальная", pause: short] # phrase(the line is 'horizontal') - - t: "перечёркивание" # phrase(please 'cross out' the incorrect answer) + then: [T: "горизонтальная", pause: short] # phrase(the line is 'horizontal') + - T: "перечёркивание" # phrase(please 'cross out' the incorrect answer) - pause: short - test: if: ".[contains(@notation,'uparrow')]" - then: [t: "стрелка вверх", pause: short] # phrase(direction is shown by the 'up arrow') + then: [T: "стрелка вверх", pause: short] # phrase(direction is shown by the 'up arrow') - test: if: ".[contains(concat(' ', normalize-space(@notation), ' '), ' downarrow ')]" - then: [t: "стрелка вниз", pause: short] # phrase(the trend is shown by the 'down arrow') + then: [T: "стрелка вниз", pause: short] # phrase(the trend is shown by the 'down arrow') - test: if: ".[contains(@notation,'leftarrow')]" - then: [t: "стрелка влево", pause: short] # phrase(the 'left arrow' indicates going back) + then: [T: "стрелка влево", pause: short] # phrase(the 'left arrow' indicates going back) - test: if: ".[contains(concat(' ', normalize-space(@notation), ' '), ' rightarrow ')]" - then: [t: "стрелка вправо", pause: short] # phrase(the 'right arrow' indicates moving forward) + then: [T: "стрелка вправо", pause: short] # phrase(the 'right arrow' indicates moving forward) - test: if: ".[contains(@notation,'northeastarrow')]" - then: [t: "стрелка на северо-восток", pause: short] # phrase(direction is indicated by the 'northeast arrow') + then: [T: "стрелка на северо-восток", pause: short] # phrase(direction is indicated by the 'northeast arrow') - test: if: ".[contains(concat(' ', normalize-space(@notation), ' '), ' southeastarrow ')]" - then: [t: "стрелка на юго-восток", pause: short] # phrase(direction is shown by the 'southeast arrow') + then: [T: "стрелка на юго-восток", pause: short] # phrase(direction is shown by the 'southeast arrow') - test: if: ".[contains(concat(' ', normalize-space(@notation), ' '), ' southwestarrow ')]" - then: [t: "стрелка на юго-запад", pause: short] # phrase(direction is shown by the 'southwest arrow') + then: [T: "стрелка на юго-запад", pause: short] # phrase(direction is shown by the 'southwest arrow') - test: if: ".[contains(@notation,'northwestarrow')]" - then: [t: "стрелка на северо-запад", pause: short] # phrase(direction is shown by the 'northwest arrow') + then: [T: "стрелка на северо-запад", pause: short] # phrase(direction is shown by the 'northwest arrow') - test: if: ".[contains(@notation,'updownarrow')]" - then: [t: "двунаправленная вертикальная стрелка", pause: short] # phrase(upward movement is indicated by the 'double ended vertical arrow') + then: [T: "двунаправленная вертикальная стрелка", pause: short] # phrase(upward movement is indicated by the 'double ended vertical arrow') - test: if: ".[contains(@notation,'leftrightarrow')]" - then: [t: "двунаправленная горизонтальная стрелка", pause: short] # phrase(progress is indicated by the 'double ended horizontal arrow') + then: [T: "двунаправленная горизонтальная стрелка", pause: short] # phrase(progress is indicated by the 'double ended horizontal arrow') - test: if: ".[contains(@notation,'northeastsouthwestarrow')]" - then: [t: "двунаправленная диагональная стрелка вверх", pause: short] # phrase(trend is indicated by the 'double ended up diagonal arrow') + then: [T: "двунаправленная диагональная стрелка вверх", pause: short] # phrase(trend is indicated by the 'double ended up diagonal arrow') - test: if: ".[contains(@notation,'northwestsoutheastarrow')]" - then: [t: "двунаправленная диагональная стрелка вниз", pause: short] # phrase(trend is indicated by the 'double ended down diagonal arrow') + then: [T: "двунаправленная диагональная стрелка вниз", pause: short] # phrase(trend is indicated by the 'double ended down diagonal arrow') - test: if: ".[contains(@notation,'actuarial')]" - then: [t: "актуарный символ", pause: short] # phrase(the 'actuarial symbol' represents a specific quantity) + then: [T: "актуарный символ", pause: short] # phrase(the 'actuarial symbol' represents a specific quantity) - test: if: ".[contains(@notation,'madrub')]" - then: [t: "арабский символ факториала", pause: short] # phrase(the 'arabic factorial symbol' represents a factorial operation) + then: [T: "арабский символ факториала", pause: short] # phrase(the 'arabic factorial symbol' represents a factorial operation) - test: if: ".[contains(@notation,'phasorangle')]" - then: [t: "угол фазы", pause: short] # phrase(the 'phasor angle' is used to measure electrical current) + then: [T: "угол фазы", pause: short] # phrase(the 'phasor angle' is used to measure electrical current) - test: if: ".[contains(@notation,'longdiv') or not(@notation) or normalize-space(@notation) ='']" # default - then: [t: "знак деления уголком", pause: short] # phrase(the 'long division symbol' indicates a long division calculation) + then: [T: "знак деления уголком", pause: short] # phrase(the 'long division symbol' indicates a long division calculation) - test: if: ".[contains(@notation,'radical')]" - then: [t: "квадратный корень", pause: short] # phrase(5 is the 'square root' of 25) - - t: "содержащее" # phrase(parentheses are 'enclosing' part of the equation) + then: [T: "квадратный корень", pause: short] # phrase(5 is the 'square root' of 25) + - T: "внутри" # Invariant wording also works for combined enclosure notations. - test: if: "*[self::m:mtext and .=' ']" - then: [t: "пространство"] # otherwise there is complete silence # phrase(there is a 'space' between the words) + then: [T: "пространство"] # otherwise there is complete silence # phrase(there is a 'space' between the words) else: [x: "*"] - test: if: "$Impairment = 'Blindness' and ( $SpeechStyle != 'SimpleSpeak' or not(IsNode(*[1], 'leaf')) )" - then: [t: "конец"] # phrase(reached the 'end enclosure' point) + then: [T: "конец"] # phrase(reached the 'end enclosure' point) - pause: short - name: semantics @@ -1166,7 +1183,7 @@ match: . replace: - x: "*[1]" - - t: "от" # phrase(the function sine 'applied to' x plus y) + - T: "от" # phrase(the function sine 'applied to' x plus y) - x: "*[2]" @@ -1250,7 +1267,10 @@ - test: if: "$Verbosity != 'Terse' and not(contains(@data-intent-property, ':literal:')) and not(count(*)=2 and (IsInDefinition(*[1], 'TrigFunctionNames') or IsInDefinition(name(.), 'TerseFunctionNames')) and IsNode(*[2], 'simple'))" - then: [t: "от", pause: auto] # phrase(sine 'of' 5) + then: [T: "от", pause: auto] # phrase(sine 'of' 5) + - test: + if: "count(*)=1 and not(contains(@data-intent-property, ':literal:')) and not(IsNode(*[1], 'simple')) and not(*[1][IsBracketed(., '(', ')') and count(*)=3 and IsNode(*[2], 'simple')])" + then: [T: "выражения"] - insert: nodes: "*" replace: @@ -1271,7 +1291,7 @@ tag: "*" match: "contains(name(.), 'perpendicular')" replace: - - t: "перпендикулярно" + - T: "перпендикулярно" - name: default-text # unknown leaf -- just speak the text -- could be a literal intent diff --git a/Rules/Languages/ru/SharedRules/general.yaml b/Rules/Languages/ru/SharedRules/general.yaml index 13db9ffba..497d372aa 100644 --- a/Rules/Languages/ru/SharedRules/general.yaml +++ b/Rules/Languages/ru/SharedRules/general.yaml @@ -5,7 +5,7 @@ match: "string-length(.)=1 and contains('ABCDEFGHIJKLMNOPQRSTUVWXYZ', text()) and ancestor::*[self::m:large-op]" replace: - x: "translate(text(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')" - - t: "большое" + - T: "большое" - name: leading-negative-plus tag: mrow @@ -27,20 +27,20 @@ - bookmark: "*[2]/@id" - test: - if: "*[2][.='+']" - then: [t: "положительные"] # phrase(set of all 'positive' integers less than 10) - else: [t: "отрицательные"] # phrase(set of all 'negative' integers less than minus 10) + then: [T: "положительные"] # phrase(set of all 'positive' integers less than 10) + else: [T: "отрицательные"] # phrase(set of all 'negative' integers less than minus 10) - bookmark: "*[1]/@id" - test: - if: "*[1][.='ℂ']" - then: [t: "комплексные числа"] # phrase('complex numbers' consist of two parts) + then: [T: "комплексные числа"] # phrase('complex numbers' consist of two parts) - else_if: "*[1][.='ℕ']" - then: [t: "натуральные числа"] # phrase('natural numbers' are numbers from 1 to infinity) + then: [T: "натуральные числа"] # phrase('natural numbers' are numbers from 1 to infinity) - else_if: "*[1][.='ℚ']" - then: [t: "рациональные числа"] # phrase('rational numbers' are the fraction of 2 integers) + then: [T: "рациональные числа"] # phrase('rational numbers' are the fraction of 2 integers) - else_if: "*[1][.='ℝ']" - then: [t: "действительные числа"] # phrase('real numbers' can be both positive and negative) + then: [T: "действительные числа"] # phrase('real numbers' can be both positive and negative) - else_if: "*[1][.='ℤ']" - then: [t: "целые числа"] # phrase(positive 'integers' are natural numbers above 0) + then: [T: "целые числа"] # phrase(positive 'integers' are natural numbers above 0) else: [x: "*[1][text()]"] # shouldn't happen - name: dimension-number-sets @@ -52,19 +52,19 @@ - bookmark: "*[1]/@id" - test: - if: "*[1][.='ℂ']" - then: [t: "цэ"] # phrase(the letter 'C' used to represent complex number) + then: [T: "цэ"] # phrase(the letter 'C' used to represent complex number) - else_if: "*[1][.='ℕ']" - then: [t: "эн"] # phrase(the letter 'N' may represent natural numbers) + then: [T: "эн"] # phrase(the letter 'N' may represent natural numbers) - else_if: "*[1][.='ℚ']" - then: [t: "ку"] # phrase(the letter 'Q' may represent rational numbers) + then: [T: "ку"] # phrase(the letter 'Q' may represent rational numbers) - else_if: "*[1][.='ℝ']" - then: [t: "эр"] # phrase(the letter 'R' may represent real numbers) + then: [T: "эр"] # phrase(the letter 'R' may represent real numbers) - else_if: "*[1][.='ℤ']" then: - test: if: "$SpeechStyle='ClearSpeak'" - then: [t: "зэт"] - else: [t: "зэт"] + then: [T: "зэт"] + else: [T: "зэт"] else: [x: "*[1][text()]"] # shouldn't happen - bookmark: "*[2]/@id" - x: "*[2]" @@ -76,15 +76,15 @@ - bookmark: "@id" - test: - if: ".='ℂ'" - then: [t: "комплексные числа"] # phrase('the complex numbers' include 2 parts) + then: [T: "комплексные числа"] # phrase('the complex numbers' include 2 parts) - else_if: ".='ℕ'" - then: [t: "натуральные числа"] # phrase('the natural numbers' begin at 1) + then: [T: "натуральные числа"] # phrase('the natural numbers' begin at 1) - else_if: ".='ℚ'" - then: [t: "рациональные числа"] # phrase('the rational numbers' are the fraction of 2 integers) + then: [T: "рациональные числа"] # phrase('the rational numbers' are the fraction of 2 integers) - else_if: ".='ℝ'" - then: [t: "действительные числа"] # phrase('the real numbers' can be both positive and negative) + then: [T: "действительные числа"] # phrase('the real numbers' can be both positive and negative) - else_if: ".='ℤ'" - then: [t: "целые числа"] # phrase('the integers' are natural numbers above 0) + then: [T: "целые числа"] # phrase('the integers' are natural numbers above 0) else: [x: "text()"] # shouldn't happen - name: real-part @@ -92,14 +92,20 @@ match: "." replace: - bookmark: "@id" - - t: "действительная часть" # phrase('the real part' of a complex number does not include the imaginary part) + - T: "действительная часть" # phrase('the real part' of a complex number does not include the imaginary part) + - test: + if: "count(*)>0" + then: [x: "*"] - name: imaginary-part tag: imaginary-part match: "." replace: - bookmark: "@id" - - t: "комплексная часть" # phrase('the imaginary part' is part of a complex number) + - T: "мнимая часть" # phrase('the imaginary part' is part of a complex number) + - test: + if: "count(*)>0" + then: [x: "*"] # rules on scripted vertical bars ('evaluated at') - name: evaluated-at-2 @@ -108,7 +114,7 @@ replace: - x: "*[1]" - pause: auto - - t: "вычисленное при" # phrase(results were 'evaluated at' a given point) + - T: "вычисленное при" # phrase(results were 'evaluated at' a given point) - pause: auto - x: "*[2]" @@ -118,20 +124,20 @@ replace: - x: "*[1]" - pause: short - - t: "вычисленное при" # phrase(results were 'evaluated at' this point) + - T: "вычисленное при" # phrase(results were 'evaluated at' this point) - pause: auto - x: "*[3]" - - t: "минус то же выражение, вычисленное при" # phrase(this result is 'minus the same expression evaluated at' an earlier point) + - T: "минус то же выражение, вычисленное при" # phrase(this result is 'minus the same expression evaluated at' an earlier point) - x: "*[2]" - name: limit tag: limit match: "count(*)=1 and following-sibling::*" replace: - - t: "предел при" + - T: "предел при" - x: "*[1]" - pause: short - - t: "от" + - T: "от" - test: if: "following-sibling::*[1][self::*[name()='fraction' or name()='mfrac'] or .//*[name()='fraction' or name()='mfrac']]" then_test: @@ -143,10 +149,10 @@ tag: limit match: "count(*)=2" replace: - - t: "предел при" + - T: "предел при" - x: "*[1]" - pause: short - - t: "от" + - T: "от" - test: if: "$Impairment='LearningDisability'" then: [pause: medium] @@ -157,50 +163,50 @@ tag: binomial match: "count(*)=2" replace: - - t: "число сочетаний из" + - T: "число сочетаний из" - test: if: "*[1][self::m:mrow and count(*)=3 and *[1][self::m:mi[.='n' or .='k']] and *[2][.='+'] and *[3][self::m:mn]]" then: - test: - if: "*[1]/*[1][.='n']" - then: [t: "эн"] - - else: [t: "ка"] + then: [T: "эн"] + - else: [T: "ка"] - x: "*[1]/*[2]" - x: "*[1]/*[3]" else: [x: "*[1]"] - - t: "по" + - T: "по" - test: if: "*[2][self::m:mrow and count(*)=3 and *[1][self::m:mi[.='n' or .='k']] and *[2][.='+'] and *[3][self::m:mn]]" then: - test: - if: "*[2]/*[1][.='n']" - then: [t: "эн"] - - else: [t: "ка"] + then: [T: "эн"] + - else: [T: "ка"] - x: "*[2]/*[2]" - x: "*[2]/*[3]" else: [x: "*[2]"] - test: if: "not(IsNode(*[2], 'simple'))" - then: [t: "конец числа сочетаний"] + then: [T: "конец числа сочетаний"] - name: permutation # Not a default because the order of the args is reversed tag: pochhammer match: "count(*)=2 and contains(@data-intent-property, ':infix:')" replace: - - t: "число размещений из" + - T: "число размещений из" - x: "*[1]" - - t: "по" + - T: "по" - x: "*[2]" - name: numeric-half-open-interval tag: closed-open-interval match: "count(*)=2 and *[1][self::m:mn] and *[2][.//m:mi[.='π'] or .='π']" replace: - - t: "полуинтервал" - - t: "от" + - T: "полуинтервал" + - T: "от" - x: "*[1]" - - t: "до" + - T: "до" - x: "*[2]" - name: intervals @@ -209,36 +215,32 @@ replace: - test: - if: "name(.)='open-interval'" - then: [t: "открытый интервал"] + then: [T: "открытый интервал"] - else_if: "name(.)='closed-interval'" - then: [t: "закрытый интервал"] + then: [T: "закрытый интервал"] - else_if: "name(.)='open-closed-interval'" - then: [t: "открыто-закрытый интервал"] - else: [t: "закрыто-открытый интервал"] - - t: "от" + then: [T: "открыто-закрытый интервал"] + else: [T: "закрыто-открытый интервал"] + - T: "от" - test: if: "*[1][self::m:minus and count(*)=1 and *[1][.='∞']]" - then: [t: "минус бесконечности"] + then: [T: "минус бесконечности"] else: [x: "*[1]"] - - t: "до" + - T: "до" - test: - if: "*[2][self::m:plus and count(*)=1 and *[1][.='∞']]" - then: [t: "плюс бесконечности"] + then: [T: "плюс бесконечности"] - else_if: "*[2][.='∞']" - then: [t: "бесконечности"] + then: [T: "бесконечности"] else: [x: "*[2]"] - name: default-point tag: point match: "count(*)=2" replace: - - test: - if: "$Verbosity!='Terse'" - then: - - t: "а" # phrase('the' square root of 25 equals 5) - - t: "точка" # phrase(a decimal 'point' indicates the fraction component of a number) + - T: "точка" # phrase(a decimal 'point' indicates the fraction component of a number) - x: "*[1]" - - t: "запятую" # phrase(use a 'comma' to divide large numbers or as a decimal point) + - T: "запятая" - x: "*[2]" - name: bigop-both @@ -246,14 +248,14 @@ match: "count(*) = 3" replace: - x: "*[1]" - - t: "от" # phrase(subtracting 5 'from' 10 gives 5) + - T: "от" # phrase(subtracting 5 'from' 10 gives 5) - x: "*[2]" - - t: "до" # phrase(adding 6 'to' 6 equals 12) + - T: "до" # phrase(adding 6 'to' 6 equals 12) - x: "*[3]" - test: if: "following-sibling::*" then: - - t: "от" # phrase(the square root 'of' 25 equals 5) + - T: "от" # phrase(the square root 'of' 25 equals 5) - test: - if: "*[1][.='∫']" then: [pause: short] @@ -265,15 +267,15 @@ match: "count(*)=2" replace: - x: "*[1]" - - t: "по" # phrase(2 'over' 3 equals two thirds) + - T: "по" # phrase(2 'over' 3 equals two thirds) - test: if: "*[1][.='∫'] and *[2][.='ℝ']" - then: [t: "действительным числам"] + then: [T: "действительным числам"] else: [x: "*[2]"] - test: if: "following-sibling::*" then: - - t: "от" # phrase(the square root 'of' 25 equals 5) + - T: "от" # phrase(the square root 'of' 25 equals 5) - test: - if: "*[1][.='∫']" then: [pause: medium] @@ -300,7 +302,7 @@ - x: "*[1]" - test: if: "*[1][.='∫']" - then: [t: "от"] # phrase(the square root 'of' 25 equals 5) + then: [T: "от"] # phrase(the square root 'of' 25 equals 5) - x: "*[2]" - name: repeating-decimal @@ -308,8 +310,8 @@ match: "." replace: - x: "*[1]" - - t: "с повторяющимися цифрами" # phrase('with repeating digits') - - spell: "*[2]" + - T: "с повторяющимися цифрами" # phrase('with repeating digits') + - SPELL: "*[2]" - name: msubsup-skip-super # handles single, double, etc., prime @@ -319,16 +321,16 @@ - x: "*[1]" - test: if: "$Verbosity='Verbose'" - then: [t: "нижний индекс"] # phrase(a 'subscript' may be used to indicate an index) - else: [t: "нижний индекс"] # phrase(the result is 'sub' optimal) + then: [T: "нижний индекс"] # phrase(a 'subscript' may be used to indicate an index) + else: [T: "нижний индекс"] # phrase(the result is 'sub' optimal) - x: "*[2]" - test: if: "not(IsNode(*[2],'leaf') and $Impairment = 'Blindness')" then: - test: if: "$Verbosity='Verbose'" - then: [t: "конец нижнего индекса"] # phrase(this is the 'end subscript' position) - else: [t: "конец нижнего индекса"] # phrase(this is the 'end sub' position) + then: [T: "конец нижнего индекса"] # phrase(this is the 'end subscript' position) + else: [T: "конец нижнего индекса"] # phrase(this is the 'end sub' position) - pause: short else_test: if: "*[2][self::m:mi]" # need a pause in "x sub k prime" so the prime is not associated with the 'k' @@ -337,8 +339,8 @@ if: "name(.)='say-super'" then_test: if: "$Verbosity='Verbose'" - then: [t: "верхний индекс"] # phrase(a 'superscript' number indicates raised to a power) - else: [t: "верхний индекс"] # phrase(this is a 'super' set of numbers) + then: [T: "верхний индекс"] # phrase(a 'superscript' number indicates raised to a power) + else: [T: "верхний индекс"] # phrase(this is a 'super' set of numbers) - x: "*[3]" - pause: short @@ -347,10 +349,10 @@ - name: unit-terse tag: unit # audit-ignore: spell text() is an operation, not untranslated speech text. - match: "$Verbosity = 'Terse' and string-length(.)=1" + match: "$Verbosity = 'Terse'" replace: - bookmark: "@id" - - spell: "text()" + - SPELL: "text()" # the order of matching is # 1. does it match the base of an SI unit @@ -369,6 +371,10 @@ )" - Prefix: "''" - Word: "''" + - QuantityNode: "preceding-sibling::*[1][self::m:mn] | preceding-sibling::*[1][.='⁢']/preceding-sibling::*[1][self::m:mn]" + - QuantityText: "translate(translate(string($QuantityNode), $BlockSeparators, ''), $DecimalSeparators, '.')" + - Quantity: "number(translate($QuantityText, '-−+', ''))" + - UnitForm: "''" replace: - bookmark: "@id" - test: @@ -406,35 +412,31 @@ - set_variables: - Word: "text()" - # somewhat complicated logic to avoid spaces around "-" as in "centi-grams" vs "centi - grams" -- probably doesn't matter + # Select the counted form before joining the SI prefix. NaN means no numeric count. - test: - if: "$Prefix = ''" + - if: "$Quantity=$Quantity and contains($QuantityText, '.')" then: + - set_variables: [UnitForm: "DefinitionValue($Word, 'Speech', 'UnitFractionalForms')"] - test: - - if: "$IsSingular" - # HACK: '\uF8FE' is used internally for the concatenation char by 'ct' -- this gets the prefix concatenated to the base - then: [x: "$Word"] - - else_if: "DefinitionValue($Word, 'Speech', 'PluralForms') != ''" - then: [x: "DefinitionValue($Word, 'Speech', 'PluralForms')"] - else: [x: "$Word", ct: "с"] - else: - - x: "$Prefix" - - ct: "-" - - test: - - if: "$IsSingular" - # HACK: '\uF8FE' is used internally for the concatenation char by 'ct' -- this gets the prefix concatenated to the base - then: [x: "concat('\uF8FE', $Word)"] - - else_if: "$Word='грамм' and not(preceding-sibling::*[1][self::m:mn])" - then: [x: "concat('\uF8FE', 'граммы')"] - - else_if: "DefinitionValue($Word, 'Speech', 'PluralForms') != ''" - then: [x: "concat('\uF8FE', DefinitionValue($Word, 'Speech', 'PluralForms'))"] - else: [x: "concat('\uF8FE', $Word)", ct: "с"] + if: "$UnitForm=''" + then: [set_variables: [UnitForm: "DefinitionValue($Word, 'Speech', 'PluralForms')"]] + - else_if: "($Quantity mod 10 = 1 and $Quantity mod 100 != 11) or (not($Quantity=$Quantity) and $IsSingular)" + then: [set_variables: [UnitForm: "$Word"]] + - else_if: "$Quantity=$Quantity and not($Quantity mod 10 >= 2 and $Quantity mod 10 <= 4 and not($Quantity mod 100 >= 12 and $Quantity mod 100 <= 14))" + then: [set_variables: [UnitForm: "DefinitionValue($Word, 'Speech', 'UnitManyForms')"]] + - else_if: "not($Quantity=$Quantity) and $Prefix!='' and $Word='грамм'" + then: [set_variables: [UnitForm: "'граммы'"]] + else: [set_variables: [UnitForm: "DefinitionValue($Word, 'Speech', 'PluralForms')"]] + - test: + if: "$UnitForm=''" + then: [set_variables: [UnitForm: "$Word"]] + - x: "concat($Prefix, $UnitForm)" # need to reverse the order of speech: $ 3 -> 3 dollars - name: currency tag: mrow - # audit-ignore: parity placeholder; ru definitions.yaml does not define - # CurrencySymbols yet, so enabling this would change runtime behavior. + # audit-ignore: parity placeholder; currency number agreement is not audited yet. + # Keep disabled until the complete Russian currency phrase is implemented. match: "false()" variables: # If the amount is singular, we don't add the plural ending. @@ -455,7 +457,7 @@ match: ".='sin'" replace: - bookmark: "@id" - - t: "синус" # phrase(the 'sine' of the angle) + - T: "синус" # phrase(the 'sine' of the angle) - name: cos tag: mi match: ".='cos'" @@ -463,26 +465,26 @@ - bookmark: "@id" - test: if: "$Verbosity='Terse'" - then: [t: "кос"] # phrase('cos' is the abbreviation for cosine) - else: [t: "косинус"] # phrase(find the 'cosine' in a right-angle triangle) + then: [T: "кос"] # phrase('cos' is the abbreviation for cosine) + else: [T: "косинус"] # phrase(find the 'cosine' in a right-angle triangle) - name: tan tag: mi match: ".='tan' or .='tg'" replace: - bookmark: "@id" - - t: "тангенс" + - T: "тангенс" - name: sec tag: mi match: ".='sec'" replace: - bookmark: "@id" - - t: "секанс" + - T: "секанс" - name: csc tag: mi match: ".='csc'" replace: - bookmark: "@id" - - t: "косеканс" + - T: "косеканс" - name: cot tag: mi match: ".='cot'" @@ -490,8 +492,8 @@ - bookmark: "@id" - test: if: "$Verbosity='Terse'" - then: [t: "котангенс"] # phrase(find the 'cotangent' in a right-angle triangle) - else: [t: "котангенс"] # phrase(the 'cotangent' is the reciprocal of the tangent) + then: [T: "котангенс"] # phrase(find the 'cotangent' in a right-angle triangle) + else: [T: "котангенс"] # phrase(the 'cotangent' is the reciprocal of the tangent) - name: sinh tag: mi @@ -500,8 +502,8 @@ - bookmark: "@id" - test: if: "$Verbosity='Terse'" - then: [t: "синч"] # phrase(the word 'sinch' is an abbreviation for hyperbolic sine) - else: [t: "гиперболический синус"] # phrase(the 'hyperbolic sine' is used in mathematics) + then: [T: "синч"] # phrase(the word 'sinch' is an abbreviation for hyperbolic sine) + else: [T: "гиперболический синус"] # phrase(the 'hyperbolic sine' is used in mathematics) - name: cosh tag: mi match: ".='cosh'" @@ -509,8 +511,8 @@ - bookmark: "@id" - test: if: "$Verbosity='Terse'" - then: [t: "гиперболический косинус"] # phrase('cosh' is an abbreviation of hyperbolic cosine) - else: [t: "гиперболический косинус"] # phrase(the 'hyperbolic cosine' is a mathematical function) + then: [T: "гиперболический косинус"] # phrase('cosh' is an abbreviation of hyperbolic cosine) + else: [T: "гиперболический косинус"] # phrase(the 'hyperbolic cosine' is a mathematical function) - name: tanh tag: mi match: ".='tanh'" @@ -518,8 +520,8 @@ - bookmark: "@id" - test: if: "$Verbosity='Terse'" - then: [t: "танч"] # phrase('tanch' is shorthand for hyperbolic tangent) - else: [t: "гиперболический тангенс"] # phrase('hyperbolic tangent' is a mathematical function) + then: [T: "танч"] # phrase('tanch' is shorthand for hyperbolic tangent) + else: [T: "гиперболический тангенс"] # phrase('hyperbolic tangent' is a mathematical function) - name: sech tag: mi match: ".='sech'" @@ -527,8 +529,8 @@ - bookmark: "@id" - test: if: "$Verbosity='Terse'" - then: [t: "шек"] # phrase('sheck' is shorthand for hyperbolic secant) - else: [t: "гиперболический секанс"] # phrase('hyperbolic secant' is a mathematical function) + then: [T: "шек"] # phrase('sheck' is shorthand for hyperbolic secant) + else: [T: "гиперболический секанс"] # phrase('hyperbolic secant' is a mathematical function) - name: csch tag: mi match: ".='csch'" @@ -536,8 +538,8 @@ - bookmark: "@id" - test: if: "$Verbosity='Terse'" - then: [t: "гиперболический косеканс"] # phrase('cosheck' is shorthand for hyperbolic cosecant) - else: [t: "гиперболический косеканс"] # phrase('hyperbolic cosecant' is a mathematical function) + then: [T: "гиперболический косеканс"] # phrase('cosheck' is shorthand for hyperbolic cosecant) + else: [T: "гиперболический косеканс"] # phrase('hyperbolic cosecant' is a mathematical function) - name: coth tag: mi match: ".='coth'" @@ -545,8 +547,8 @@ - bookmark: "@id" - test: if: "$Verbosity='Terse'" - then: [t: "гиперболический котангенс"] # phrase('cotanch' is shorthand for hyperbolic cotangent) - else: [t: "гиперболический котангенс"] # phrase(the 'hyperbolic cotangent' is a mathematical function) + then: [T: "гиперболический котангенс"] # phrase('cotanch' is shorthand for hyperbolic cotangent) + else: [T: "гиперболический котангенс"] # phrase(the 'hyperbolic cotangent' is a mathematical function) - name: trig-name-sequence-canonical tag: mrow @@ -649,8 +651,8 @@ - bookmark: "@id" - test: if: "$Verbosity='Terse'" - then: [t: "эксп"] # phrase('exp' means exponential function) - else: [t: "экспонента"] # phrase('exponential' function) + then: [T: "эксп"] # phrase('exp' means exponential function) + else: [T: "экспонента"] # phrase('exponential' function) - name: covariance tag: mi match: ".='Cov'" @@ -658,8 +660,8 @@ - bookmark: "@id" - test: if: "$Verbosity='Terse'" - then: [t: "ков"] # phrase('Cov' is shorthand for the covariance function) - else: [t: "ковариация"] # phrase('covariance' function) + then: [T: "ков"] # phrase('Cov' is shorthand for the covariance function) + else: [T: "ковариация"] # phrase('covariance' function) - name: log # handle both log and ln (if in an mrow, 'intents' are used) @@ -669,10 +671,10 @@ - bookmark: "@id" - test: - if: ".= 'log'" - then: [t: "логарифм"] # phrase(the 'log' function is used in mathematics) + then: [T: "логарифм"] # phrase(the 'log' function is used in mathematics) - else_if: "$Verbosity='Terse'" - then: [t: "эл эн"] - else: [t: "натуральный логарифм"] # phrase(the 'natural log' function is used in mathematics) + then: [T: "эл эн"] + else: [T: "натуральный логарифм"] # phrase(the 'natural log' function is used in mathematics) - name: multi-line @@ -691,17 +693,17 @@ - if: "self::m:piecewise" then_test: if: "$LineCount = 1" - then: [t: "случай"] - else: [t: "случая"] # phrase(this is the first 'case' of three cases) + then: [T: "случай"] + else: [T: "случая"] # phrase(this is the first 'case' of three cases) - else_if: "self::m:system-of-equations" then_test: if: "$LineCount = 1" - then: [t: "уравнение"] - else: [t: "уравнения"] # phrase(this is the first 'equation' of three equations) + then: [T: "уравнение"] + else: [T: "уравнения"] # phrase(this is the first 'equation' of three equations) else_test: if: "$LineCount = 1" - then: [t: "строка"] - else: [t: "строки"] # phrase(this is the first 'line' of three lines) + then: [T: "строка"] + else: [T: "строки"] # phrase(this is the first 'line' of three lines) - pause: short - x: "*" - pause: long @@ -718,15 +720,15 @@ - pause: medium - test: - if: "parent::m:piecewise" - then: [t: "случай"] # phrase('case' 1 of 10 cases) + then: [T: "случай"] # phrase('case' 1 of 10 cases) - else_if: "parent::m:system-of-equations" - then: [t: "уравнение"] # phrase('equation' 1 of 10 equations) - else: [t: "строка"] # phrase('line 1 of 10 lines) + then: [T: "уравнение"] # phrase('equation' 1 of 10 equations) + else: [T: "строка"] # phrase('line 1 of 10 lines) - x: "count(preceding-sibling::*[not(contains(@data-intent-property, ':continued-row:'))]) + 1" - test: if: "self::m:mlabeledtr" then: - - t: "с меткой" # phrase(the diagram is complete 'with label') + - T: "с меткой" # phrase(the diagram is complete 'with label') - x: "*[1]/*" - test: if: "not(contains(@data-intent-property, ':continued-row:'))" @@ -772,10 +774,10 @@ replace: - test: if: "self::m:determinant" # just need to check the first bracket since we know it must be (, [, or | - then: [t: "определитель"] # phrase(the 2 by 2 'determinant')) - else: [t: "матрица"] # phrase(the 2 by 2 'matrix') - - t: "1 на 1" # phrase(the '1 by 1' matrix) - - t: "с элементом" # phrase(the 2 by 2 matrix 'with entry' x) + then: [T: "определитель"] # phrase(the 2 by 2 'determinant')) + else: [T: "матрица"] # phrase(the 2 by 2 'matrix') + - T: "1 на 1" # phrase(the '1 by 1' matrix) + - T: "с элементом" # phrase(the 2 by 2 matrix 'with entry' x) - x: "*[1]/*" # simpler reading methods for special case matrices @@ -784,9 +786,9 @@ # select all the non-zero entries -- if there are none of them, then it is a zero matrix match: "not( */*/*[not(self::m:mn and .= 0)] )" replace: - - t: "нулевая матрица" # phrase(the 2 by 2 'zero matrix') + - T: "нулевая матрица" # phrase(the 2 by 2 'zero matrix') - x: count(*) - - t: "на" # phrase(the 1 'by' 2 matrix) + - T: "на" # phrase(the 1 'by' 2 matrix) - x: count(*[self::m:mtr][1]/*) - pause: long @@ -800,9 +802,9 @@ - " [count(../preceding-sibling::*)!=count(../../preceding-sibling::*) or .!= 1]" - " )" replace: - - t: "единичная матрица" # phrase(the 2 by 2 'identity matrix') + - T: "единичная матрица" # phrase(the 2 by 2 'identity matrix') - x: count(*) - - t: "на" # phrase(the 1 'by' 2 matrix) + - T: "на" # phrase(the 1 'by' 2 matrix) - x: count(*[self::m:mtr][1]/*) - pause: long @@ -816,9 +818,9 @@ - " [count(../preceding-sibling::*)!=count(../../preceding-sibling::*)]" - " )" replace: - - t: "диагональная матрица" # phrase(the 2 by 2 'diagonal matrix') + - T: "диагональная матрица" # phrase(the 2 by 2 'diagonal matrix') - x: count(*) - - t: "на" # phrase(the 1 'by' 2 matrix) + - T: "на" # phrase(the 1 'by' 2 matrix) - x: count(*[self::m:mtr][1]/*) - pause: long - insert: @@ -841,10 +843,10 @@ replace: - test: if: "$ClearSpeak_Matrix = 'Vector' or $ClearSpeak_Matrix = 'EndVector'" - then: [t: "вектор-столбец"] - else: [t: "матрица-столбец"] + then: [T: "вектор-столбец"] + else: [T: "матрица-столбец"] - x: count(*) - - t: "на 1" # phrase(the 2 'by 1 column' matrix) + - T: "на 1" # phrase(the 2 'by 1 column' matrix) - pause: long - x: "*/*" - test: @@ -852,8 +854,8 @@ then: - test: if: $ClearSpeak_Matrix = 'EndVector' - then: [t: "конец вектора"] # phrase(the 2 column 'vector') - else: [t: "конец матрицы"] # phrase(the 2 by 2 'matrix') + then: [T: "конец вектора"] # phrase(the 2 column 'vector') + else: [T: "конец матрицы"] # phrase(the 2 by 2 'matrix') - name: default-column-matrix tag: matrix @@ -862,15 +864,15 @@ replace: - test: if: "$ClearSpeak_Matrix = 'Vector' or $ClearSpeak_Matrix = 'EndVector'" - then: [t: "вектор-столбец"] - else: [t: "матрица-столбец"] + then: [T: "вектор-столбец"] + else: [T: "матрица-столбец"] - x: "count(*)" - - t: "на 1" # phrase(the 2 'by 1 column' matrix) + - T: "на 1" # phrase(the 2 'by 1 column' matrix) - pause: long - x: "*" # select the rows (mtr) - test: if: "$ClearSpeak_Matrix = 'EndMatrix' or $ClearSpeak_Matrix = 'EndVector'" - then: [t: "конец матрицы"] # phrase(the 'end of matrix' has been reached) + then: [T: "конец матрицы"] # phrase(the 'end of matrix' has been reached) - name: 1x2-or-3-matrix tag: matrix @@ -883,9 +885,9 @@ replace: - test: if: "$ClearSpeak_Matrix = 'Vector' or $ClearSpeak_Matrix = 'EndVector'" - then: [t: "вектор-строка"] - else: [t: "матрица-строка"] - - t: "1 на" # phrase('the 1 by' 2 matrix) + then: [T: "вектор-строка"] + else: [T: "матрица-строка"] + - T: "1 на" # phrase('the 1 by' 2 matrix) - x: count(*/*) - pause: long - x: "*/*" @@ -894,8 +896,8 @@ then: - test: if: $ClearSpeak_Matrix = 'EndMatrix' - then: [t: "конец матрицы"] # phrase(the 2 by 2 'matrix') - else: [t: "конец вектора"] # phrase(the 2 by 1 'vector') + then: [T: "конец матрицы"] # phrase(the 2 by 2 'matrix') + else: [T: "конец вектора"] # phrase(the 2 by 1 'vector') - name: default-row-matrix tag: matrix @@ -904,9 +906,9 @@ replace: - test: if: "$ClearSpeak_Matrix = 'Vector' or $ClearSpeak_Matrix = 'EndVector'" - then: [t: "вектор-строка"] - else: [t: "матрица-строка"] - - t: "1 на" # phrase('the 1 by' 2 matrix) + then: [T: "вектор-строка"] + else: [T: "матрица-строка"] + - T: "1 на" # phrase('the 1 by' 2 matrix) - x: "count(*/*)" - pause: long - pause: medium @@ -916,8 +918,8 @@ then: - test: if: $ClearSpeak_Matrix = 'EndMatrix' - then: [t: "конец матрицы"] # phrase(the 2 by 2 'matrix') - else: [t: "конец вектора"] # phrase(the 2 by 1 'vector') + then: [T: "конец матрицы"] # phrase(the 2 by 2 'matrix') + else: [T: "конец вектора"] # phrase(the 2 by 1 'vector') - name: simple-small-matrix tag: [matrix, determinant] @@ -929,10 +931,10 @@ replace: - test: if: "self::m:determinant" - then: [t: "определитель"] # phrase(the 2 by 2 'determinant') - else: [t: "матрица"] # phrase(the 2 by 2 'matrix') + then: [T: "определитель"] # phrase(the 2 by 2 'determinant') + else: [T: "матрица"] # phrase(the 2 by 2 'matrix') - x: count(*) - - t: "на" # phrase(the 1 'by' 2 matrix) + - T: "на" # phrase(the 1 'by' 2 matrix) - x: count(*[self::m:mtr][1]/*) - pause: long - x: "*" @@ -941,8 +943,8 @@ then: - test: if: "self::m:determinant" - then: [t: "конец определителя"] # phrase(the 2 by 2 'determinant') - else: [t: "конец матрицы"] # phrase(the 2 by 2 'matrix') + then: [T: "конец определителя"] # phrase(the 2 by 2 'determinant') + else: [T: "конец матрицы"] # phrase(the 2 by 2 'matrix') - name: default-matrix tag: [matrix, determinant] @@ -951,10 +953,10 @@ replace: - test: if: "self::m:determinant" - then: [t: "определитель"] # phrase(the 2 by 2 'determinant') - else: [t: "матрица"] # phrase(the 2 by 2 'matrix') + then: [T: "определитель"] # phrase(the 2 by 2 'determinant') + else: [T: "матрица"] # phrase(the 2 by 2 'matrix') - x: "count(*)" - - t: "на" # phrase(the 1 'by' 2 matrix) + - T: "на" # phrase(the 1 'by' 2 matrix) - x: "count(*[self::m:mtr][1]/*)" - pause: long - x: "*" @@ -963,8 +965,8 @@ then: - test: if: "self::m:determinant" - then: [t: "конец определителя"] # phrase(the 2 by 2 'determinant') - else: [t: "конец матрицы"] # phrase(the 2 by 2 'matrix's) + then: [T: "конец определителя"] # phrase(the 2 by 2 'determinant') + else: [T: "конец матрицы"] # phrase(the 2 by 2 'matrix's) - name: chemistry-msub tag: [chemical-formula] @@ -973,10 +975,10 @@ - x: "*[2]" - test: if: "$Verbosity='Verbose'" - then: [t: "нижний индекс"] # phrase(H 'subscript' 2) + then: [T: "нижний индекс"] # phrase(H 'subscript' 2) else_test: if: "$Verbosity='Medium'" - then: [t: "нижний индекс"] # phrase(H 'sub' 2) + then: [T: "нижний индекс"] # phrase(H 'sub' 2) - x: "*[3]" - name: dimension-by @@ -985,7 +987,7 @@ replace: - insert: nodes: "*" - replace: [t: "по", pause: auto] # phrase(3 'by' 5 matrix) + replace: [T: "по", pause: auto] # phrase(3 'by' 5 matrix) - name: chemistry-msup tag: [chemical-formula] @@ -994,10 +996,10 @@ - x: "*[2]" - test: if: "$Verbosity='Verbose'" - then: [t: "верхний индекс"] # phrase(H 'superscript' 2) + then: [T: "верхний индекс"] # phrase(H 'superscript' 2) else_test: if: "$Verbosity='Medium'" - then: [t: "верхний индекс"] # phrase(H 'super' 2) + then: [T: "верхний индекс"] # phrase(H 'super' 2) - x: "*[3]" - test: if: "following-sibling::*[1][.='+' or .='-']" # a little lazy -- assumes chemistry superscripts end with + or - @@ -1025,10 +1027,10 @@ then: - test: if: "$Verbosity='Verbose'" - then: [t: "верхний индекс"] # phrase(H 'superscript' 2) + then: [T: "верхний индекс"] # phrase(H 'superscript' 2) else_test: if: "$Verbosity='Medium'" - then: [t: "верхний индекс"] # phrase(H 'super' 2) + then: [T: "верхний индекс"] # phrase(H 'super' 2) - x: "$Prescripts[2]" - pause: "short" - test: @@ -1036,10 +1038,10 @@ then: - test: if: "$Verbosity='Verbose'" - then: [t: "нижний индекс"] # phrase(a 'subscript' may be used to indicate an index) + then: [T: "нижний индекс"] # phrase(a 'subscript' may be used to indicate an index) else_test: if: "$Verbosity='Medium'" - then: [t: "нижний индекс"] # phrase(here is a 'sub' total) + then: [T: "нижний индекс"] # phrase(here is a 'sub' total) - x: "$Prescripts[1]" - pause: "short" - test: @@ -1050,10 +1052,10 @@ then: - test: if: "$Verbosity='Verbose'" - then: [t: "верхний индекс"] # phrase(H 'superscript' 2) + then: [T: "верхний индекс"] # phrase(H 'superscript' 2) else_test: if: "$Verbosity='Medium'" - then: [t: "верхний индекс"] # phrase(H 'super' 2) + then: [T: "верхний индекс"] # phrase(H 'super' 2) - x: "$Prescripts[4]" - pause: "short" - test: @@ -1061,10 +1063,10 @@ then: - test: if: "$Verbosity='Verbose'" - then: [t: "нижний индекс"] # phrase(H 'subscript' 2) + then: [T: "нижний индекс"] # phrase(H 'subscript' 2) else_test: if: "$Verbosity='Medium'" - then: [t: "нижний индекс"] # phrase(H 'sub' 2) + then: [T: "нижний индекс"] # phrase(H 'sub' 2) - x: "$Prescripts[3]" - pause: "short" - x: "*[1]" # base @@ -1076,10 +1078,10 @@ then: - test: if: "$Verbosity='Verbose'" - then: [t: "нижний индекс"] # phrase(phrase(H 'subscript' 2) + then: [T: "нижний индекс"] # phrase(phrase(H 'subscript' 2) else_test: if: "$Verbosity='Medium'" - then: [t: "нижний индекс"] # phrase(phrase(H 'sub' 2) + then: [T: "нижний индекс"] # phrase(phrase(H 'sub' 2) - x: "$Postscripts[1]" - pause: "short" - test: @@ -1087,10 +1089,10 @@ then: - test: if: "$Verbosity='Verbose'" - then: [t: "верхний индекс"] # phrase(H 'superscript' 2) + then: [T: "верхний индекс"] # phrase(H 'superscript' 2) else_test: if: "$Verbosity='Medium'" - then: [t: "верхний индекс"] # phrase(H 'super' 2) + then: [T: "верхний индекс"] # phrase(H 'super' 2) - x: "$Postscripts[2]" - pause: "short" - test: @@ -1101,10 +1103,10 @@ then: - test: if: "$Verbosity='Verbose'" - then: [t: "нижний индекс"] # phrase(H 'subscript' 2) + then: [T: "нижний индекс"] # phrase(H 'subscript' 2) else_test: if: "$Verbosity='Medium'" - then: [t: "нижний индекс"] # phrase(H 'sub' 2) + then: [T: "нижний индекс"] # phrase(H 'sub' 2) - x: "$Postscripts[3]" - pause: "short" - test: @@ -1112,10 +1114,10 @@ then: - test: if: "$Verbosity='Verbose'" - then: [t: "верхний индекс"] # phrase(H 'superscript' 2) + then: [T: "верхний индекс"] # phrase(H 'superscript' 2) else_test: if: "$Verbosity='Medium'" - then: [t: "верхний индекс"] # phrase(H 'super' 2) + then: [T: "верхний индекс"] # phrase(H 'super' 2) - x: "$Postscripts[4]" - pause: "short" - test: @@ -1126,10 +1128,10 @@ then: - test: if: "$Verbosity='Verbose'" - then: [t: "нижний индекс"] # phrase(H 'subscript' 2) + then: [T: "нижний индекс"] # phrase(H 'subscript' 2) else_test: if: "$Verbosity='Medium'" - then: [t: "нижний индекс"] # phrase(H 'sub' 2) + then: [T: "нижний индекс"] # phrase(H 'sub' 2) - x: "$Postscripts[5]" - pause: "short" - test: @@ -1137,10 +1139,10 @@ then: - test: if: "$Verbosity='Verbose'" - then: [t: "верхний индекс"] # phrase(H 'superscript' 2) + then: [T: "верхний индекс"] # phrase(H 'superscript' 2) else_test: if: "$Verbosity='Medium'" - then: [t: "верхний индекс"] # phrase(H 'super' 2) + then: [T: "верхний индекс"] # phrase(H 'super' 2) - x: "$Postscripts[6]" - pause: "short" - test: @@ -1151,10 +1153,10 @@ then: - test: if: "$Verbosity='Verbose'" - then: [t: "нижний индекс"] # phrase(H 'subscript' 2) + then: [T: "нижний индекс"] # phrase(H 'subscript' 2) else_test: if: "$Verbosity='Medium'" - then: [t: "нижний индекс"] # phrase(H 'sub' 2) + then: [T: "нижний индекс"] # phrase(H 'sub' 2) - x: "$Postscripts[7]" - pause: "short" - test: @@ -1162,10 +1164,10 @@ then: - test: if: "$Verbosity='Verbose'" - then: [t: "верхний индекс"] # phrase(H 'superscript' 2) + then: [T: "верхний индекс"] # phrase(H 'superscript' 2) else_test: if: "$Verbosity='Medium'" - then: [t: "верхний индекс"] # phrase(H 'super' 2) + then: [T: "верхний индекс"] # phrase(H 'super' 2) - x: "$Postscripts[8]" - pause: "short" - test: @@ -1183,7 +1185,7 @@ match: "." replace: - bookmark: "@id" - - spell: text() + - SPELL: text() - pause: short - name: chemical-state @@ -1193,12 +1195,12 @@ - bookmark: "*[1]/@id" - test: - if: ".='s'" - then: [t: "твердый"] # phrase(Boron is a 'solid' in its natural state) + then: [T: "твердый"] # phrase(Boron is a 'solid' in its natural state) - else_if: ".='l'" - then: [t: "жидкость"] # phrase(water is a 'liquid') + then: [T: "жидкость"] # phrase(water is a 'liquid') - else_if: ".='g'" - then: [t: "газ"] # phrase(hydrogen is a 'gas' ) - else: [t: "водный"] # phrase(an 'aqueous' solution is contained in water) + then: [T: "газ"] # phrase(hydrogen is a 'gas' ) + else: [T: "водный"] # phrase(an 'aqueous' solution is contained in water) - pause: short - name: chemical-formula-operator-bond @@ -1209,13 +1211,13 @@ - bookmark: "@id" - test: - if: ".='-' or .=':'" - then: [t: "одинарная связь"] # phrase(a 'single bond' is formed when two atoms share one pair of electrons) + then: [T: "одинарная связь"] # phrase(a 'single bond' is formed when two atoms share one pair of electrons) - else_if: ".='=' or .='∷'" - then: [t: "двойная связь"] # phrase(a 'double bond' may occur when two atoms share two pairs of electrons) + then: [T: "двойная связь"] # phrase(a 'double bond' may occur when two atoms share two pairs of electrons) - else_if: ".='≡'" - then: [t: "тройная связь"] # phrase(a 'triple bond' occurs when two atoms share three pairs of electrons) + then: [T: "тройная связь"] # phrase(a 'triple bond' occurs when two atoms share three pairs of electrons) - else_if: ".='≣'" - then: [t: "четырехкратная связь"] # phrase(a 'quadruple bond' occurs when two atoms share four pairs of electrons) + then: [T: "четырехкратная связь"] # phrase(a 'quadruple bond' occurs when two atoms share four pairs of electrons) else: [x: "text()"] - name: chemical-formula-operator @@ -1234,14 +1236,14 @@ - if: ".='→' or .='⟶'" then_test: if: "$Verbosity='Terse'" - then: [t: "образует"] # phrase(hydrogen and oxygen 'forms' water ) - else: [t: "реагирует с образованием"] # phrase(hydrogen and oxygen 'reacts to form' water) + then: [T: "образует"] # phrase(hydrogen and oxygen 'forms' water ) + else: [T: "реагирует с образованием"] # phrase(hydrogen and oxygen 'reacts to form' water) - else_if: ".='⇌' or .='\u1f8d2'" - then: [t: "находится в равновесии с"] # phrase(a reactant 'is in equilibrium with' a product) + then: [T: "находится в равновесии с"] # phrase(a reactant 'is in equilibrium with' a product) - else_if: ".='\u1f8d4'" - then: [t: "находится в равновесии, смещено влево с"] # phrase(the reactant 'is in equilibrium biased to the left with' the product) + then: [T: "находится в равновесии, смещено влево с"] # phrase(the reactant 'is in equilibrium biased to the left with' the product) - else_if: ".='\u1f8d3'" - then: [t: "находится в равновесии, смещено вправо с"] # phrase(the reactant 'is in equilibrium biased to the right with' the product) + then: [T: "находится в равновесии, смещено вправо с"] # phrase(the reactant 'is in equilibrium biased to the right with' the product) else: [x: "*"] - name: chemical-equation-operator @@ -1255,7 +1257,7 @@ tag: none match: "../../*[self::m:chemical-formula or self::m:chemical-nuclide]" replace: - - t: "" # don't say anything + - T: "" # don't say anything - name: ignore-intent-wrapper tag: intent-wrapper diff --git a/Rules/Languages/ru/SharedRules/geometry.yaml b/Rules/Languages/ru/SharedRules/geometry.yaml index b8aa4f2df..0b0031ccc 100644 --- a/Rules/Languages/ru/SharedRules/geometry.yaml +++ b/Rules/Languages/ru/SharedRules/geometry.yaml @@ -7,7 +7,7 @@ - test: if: "$Verbosity='Verbose'" then: - - T: "линейный сегмент от" # phrase('the line segment from' A to B) + - T: "отрезок от" # phrase('the line segment from' A to B) - x: "*[1]" - T: "до" # phrase(the line segment from A 'to' B) - x: "*[2]" @@ -25,9 +25,9 @@ - test: if: "$Verbosity='Verbose'" then: - - T: "луч от " # phrase('the ray from' A to B) + - T: "луч с началом в" - x: "*[1]" - - T: "до" # phrase(the ray from A 'to' B) + - T: "проходящий через" - x: "*[2]" else: - T: "луч" # phrase(the 'ray'A B) @@ -40,9 +40,6 @@ tag: arc match: "count(*)=2" replace: - - test: - if: "$Verbosity='Verbose'" - then: [T: "а"] # phrase('the' arc A B C) - T: "дуга" # phrase(the 'arc' A B C) - x: "translate(*[1], 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')" - T: "большое" @@ -68,13 +65,10 @@ tag: coordinate match: "." replace: - - test: - if: "$Verbosity='Verbose'" - then: [T: "а"] # phrase('the' point at 1, 2) - T: "точка" # phrase(the 'point' at 1, 2) - test: if: "$Verbosity='Verbose'" - then: [T: "в"] # phrase('the' point at 1, 2) + then: [T: "с координатами"] - pause: short - insert: nodes: "*" @@ -82,4 +76,4 @@ - pause: short - test: if: "($SpeechStyle='ClearSpeak' and $Verbosity='Verbose') or not(IsNode(*[last()],'leaf'))" - then: [T: "конечная точка"] # phrase(start point, 'end point') + then: [T: "конец координат"] diff --git a/Rules/Languages/ru/SharedRules/linear-algebra.yaml b/Rules/Languages/ru/SharedRules/linear-algebra.yaml index 5117f3292..8b8d61e4a 100644 --- a/Rules/Languages/ru/SharedRules/linear-algebra.yaml +++ b/Rules/Languages/ru/SharedRules/linear-algebra.yaml @@ -4,15 +4,7 @@ tag: determinant match: "count(*)=1 and not(*[1][self::m:mtr])" replace: - - test: - if: "$Verbosity='Verbose'" - then: - - T: "а" # phrase('the' square root of 25 equals 5) - - T: "определяющий" # phrase(the 'determinant' of a matrix) - - test: - if: "$Verbosity!='Terse'" - then: - - T: "из" # phrase(systems 'of' linear equations) + - T: "определитель" # phrase(the 'determinant' of a matrix) - x: "*[1]" - test: if: "not(IsNode(*[1], 'simple')) and $Impairment = 'Blindness'" @@ -23,14 +15,17 @@ tag: subscripted-norm match: "count(*)=2" replace: - - test: - if: "$Verbosity='Verbose'" - then: - - T: "а" # phrase('the' square root of 25 equals 5) - - x: "*[2]" - T: "норма" # phrase(the 'norm' can be a measure of distance) - - test: - if: "$Verbosity!='Terse'" - then: - - T: "из" # phrase(systems 'of' linear equations) - x: "*[1]" + - T: "с индексом" + - x: "*[2]" + +- name: transpose + tag: transpose + match: "count(*)=1" + replace: + - T: "транспонированная матрица" + - test: + if: "*[1][self::m:mi and string-length(.)=1 and contains('ABCDEFGHIJKLMNOPQRSTUVWXYZ', .)]" + then: [x: "translate(*[1], 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')"] + else: [x: "*[1]"] diff --git a/Rules/Languages/ru/SimpleSpeak_Rules.yaml b/Rules/Languages/ru/SimpleSpeak_Rules.yaml index cd31ebebd..69324ede3 100644 --- a/Rules/Languages/ru/SimpleSpeak_Rules.yaml +++ b/Rules/Languages/ru/SimpleSpeak_Rules.yaml @@ -25,21 +25,21 @@ tag: mn match: "starts-with(text(), '-')" replace: - - t: "минус" # (en: 'minus') + - T: "минус" # (en: 'minus') - x: "translate(text(), '-_', '')" - name: default tag: square-root match: "." replace: + - T: "квадратный корень" # (en: 'square root') - test: if: "$Verbosity!='Terse'" - then: [t: ""] - - t: "квадратный корень" # (en: 'square root') - - test: - if: "$Verbosity!='Terse'" - then: [t: "из"] # (en: 'of') + then: [T: "из"] # (en: 'of') else: [pause: short] + - test: + if: "not(IsNode(*[1], 'simple'))" + then: [T: "выражения"] - x: "*[1]" - test: - if: "IsNode(*[1], 'leaf') or $Impairment != 'Blindness'" @@ -48,7 +48,7 @@ then: [pause: medium] else: [pause: short] else: - - t: "конец корня" + - T: "конец корня" - test: if: "following-sibling::*" then: [pause: medium] @@ -58,23 +58,23 @@ tag: root match: "." replace: - - test: - if: "$Verbosity!='Terse'" - then: [t: ""] - test: if: "*[2][self::m:mn and not(contains(., '.'))]" then_test: - if: "*[2][.='2']" - then: [t: "квадратный корень"] # (en: 'square root') + then: [T: "квадратный корень"] # (en: 'square root') - else_if: "*[2][.='3']" - then: [t: "кубический корень"] # (en: 'cube root') - - else: [t: "корень", x: "ToOrdinal(*[2])", t: "степени"] # (en: 'root') + then: [T: "кубический корень"] # (en: 'cube root') + - else: [T: "корень", x: "ToOrdinal(*[2])", T: "степени"] # (en: 'root') else: - - t: "корень степени" # (en: 'root') + - T: "корень степени" # (en: 'root') - x: "*[2]" - test: if: "$Verbosity!='Terse'" - then: [t: "из"] # (en: 'of') + then: [T: "из"] # (en: 'of') + - test: + if: "not(IsNode(*[1], 'simple'))" + then: [T: "выражения"] - x: "*[1]" - test: - if: "IsNode(*[1], 'leaf') or $Impairment != 'Blindness'" @@ -83,7 +83,7 @@ then: [pause: medium] else: [pause: short] else: - - t: "конец корня" + - T: "конец корня" - test: if: "following-sibling::*" then: [pause: medium] @@ -118,7 +118,7 @@ - else: [x: "*[1]"] - test: if: "*[2][.='83']" - then: [t: "восемьдесят третьих"] + then: [T: "восемьдесят третьих"] else: [x: "ToOrdinal(*[2], true(), $IsPlural)"] # extra args specify fractional ordinal and whether it is plural @@ -133,11 +133,11 @@ - x: "*[1]" - test: if: "BaseNode(*[2])[.='h' or .='hr' or .='Hr']" - then: [t: "в"] - else: [t: "на"] + then: [T: "в"] + else: [T: "на"] - test: if: "BaseNode(*[2])[.='mi']" - then: [t: "милю"] + then: [T: "милю"] else: [x: "*[2]"] - name: simple-text-fraction @@ -145,7 +145,7 @@ match: "*[1][.='rise'] and *[2][.='run']" replace: - x: "*[1]" - - t: "на" + - T: "на" - x: "*[2]" - pause: short @@ -159,7 +159,7 @@ - "not(ancestor::*[name() != 'mrow'][1]/self::m:fraction)" # FIX: can't test for mrow -- what should be used??? replace: - x: "*[1]" - - t: "разделить на" # (en: 'over') + - T: "разделить на" # (en: 'over') - x: "*[2]" - pause: short @@ -169,35 +169,35 @@ replace: - x: "*[1]" - pause: short - - t: "делить на" + - T: "делить на" - x: "*[2]" - name: limit-fraction tag: fraction match: "ancestor::*[self::m:limit] or ancestor::*[preceding-sibling::*[1][self::m:limit]] or preceding::*[self::m:limit]" replace: - - t: "дроби" + - T: "дроби" - pause: short - x: "*[1]" - pause: short - - t: "делить на" + - T: "делить на" - pause: short - x: "*[2]" - pause: short - - t: "конец дроби" + - T: "конец дроби" - pause: medium - name: default tag: fraction match: "." replace: - - t: "дробь, числитель:" # (en: 'fraction') + - T: "дробь, числитель:" # (en: 'fraction') - x: "*[1]" - pause: short - - t: "знаменатель:" # (en: 'over') + - T: "знаменатель:" # (en: 'over') - x: "*[2]" - pause: short - - t: "конец дроби" # (en: 'end of fraction') + - T: "конец дроби" # (en: 'end of fraction') - pause: medium # rules for functions raised to a power @@ -209,12 +209,12 @@ replace: - test: - if: "*[1][.='sin']" - then: [t: "арксинус"] + then: [T: "арксинус"] - else_if: "*[1][.='cos' or .='cosh']" - then: [t: "арккосинус"] + then: [T: "арккосинус"] - else_if: "*[1][.='tan' or .='tg']" - then: [t: "арктангенс"] - else: [t: "обратная", x: "*[1]"] # (en: 'inverse') + then: [T: "арктангенс"] + else: [T: "обратная", x: "*[1]"] # (en: 'inverse') - name: function-squared-or-cubed tag: power @@ -226,8 +226,8 @@ - bookmark: "*[2]/@id" - test: if: "*[2][.=2]" - then: [t: "в квадрате"] # (en: 'squared') - else: [t: "в кубе"] # (en: 'cubed') + then: [T: "в квадрате"] # (en: 'squared') + else: [T: "в кубе"] # (en: 'cubed') - name: function-power tag: power match: @@ -235,18 +235,18 @@ replace: - x: "*[1]" - bookmark: "*[2]/@id" - - t: "в" + - T: "в" - test: - if: "*[2][self::m:mn][.='4']" - then: [t: "четвёртой"] + then: [T: "четвёртой"] - else_if: "*[2][self::m:mn][not(contains(., '.'))]" then: [x: "ToOrdinal(*[2])"] else: - - t: "степени" + - T: "степени" - x: "*[2]" - test: if: "*[2][self::m:mn][not(contains(., '.'))]" - then: [t: "степени"] # (en: 'power') + then: [T: "степени"] # (en: 'power') # non-function rules for power - name: squared-or-cubed @@ -257,8 +257,8 @@ - bookmark: "*[2]/@id" - test: if: "*[2][.=2]" - then: [t: "в квадрате"] # (en: 'squared') - else: [t: "в кубе"] # (en: 'cubed') + then: [T: "в квадрате"] # (en: 'squared') + else: [T: "в кубе"] # (en: 'cubed') - name: simple-integer tag: power @@ -267,15 +267,15 @@ - x: "*[1]" - test: if: "*[2][.='2']" - then: [t: "во"] - else: [t: "в"] # (en: 'to the') + then: [T: "во"] + else: [T: "в"] # (en: 'to the') - test: if: "*[2][.>=0]" then: {x: "ToOrdinal(*[2])"} else: {x: "*[2]"} - test: if: "*[2][.>=0]" - then: [t: "степени"] + then: [T: "степени"] - name: simple-negative-integer tag: power match: @@ -283,15 +283,15 @@ - " *[1][self::m:mn][not(contains(., '.'))]]" replace: - x: "*[1]" - - t: "в степени" # (en: 'to the') - - t: "минус" + - T: "в степени" # (en: 'to the') + - T: "минус" - x: "*[2]/*[1]" - name: simple-var tag: power match: "*[2][self::m:mi][string-length(.)=1]" replace: - x: "*[1]" - - t: "в степени" # (en: 'to the') + - T: "в степени" # (en: 'to the') - x: "*[2]" - name: simple @@ -299,7 +299,7 @@ match: "IsNode(*[2], 'leaf')" replace: - x: "*[1]" - - t: "в степени" # (en: 'to the') + - T: "в степени" # (en: 'to the') - test: if: "*[2][self::m:mn][contains(., '.')]" then: [x: "concat(substring-before(*[2], '.'), '\uF8FE.\uF8FE', substring-after(*[2], '.'))"] @@ -317,12 +317,12 @@ - " ]" replace: - x: "*[1]" - - t: "в степени" # (en: 'raised to the') + - T: "в степени" # (en: 'raised to the') - x: "*[2]" - test: if: "$Impairment = 'Blindness'" then: - - t: ", конец показателя" # (en: 'end of exponent') + - T: ", конец показателя" # (en: 'end of exponent') - pause: short else: - pause: medium @@ -332,7 +332,7 @@ match: "." replace: - x: "*[1]" - - t: "в степени" # (en: 'raised to the') + - T: "в степени" # (en: 'raised to the') - test: if: "*[2][self::m:mn][contains(., '.')]" then: [x: "concat(substring-before(*[2], '.'), '\uF8FE.\uF8FE', substring-after(*[2], '.'))"] @@ -346,7 +346,7 @@ match: "count(*)=3 and *[1][self::m:mn] and *[2][self::m:mo][.='⁤'] and *[3][self::m:fraction]" replace: - x: "*[1]" - - t: "целых" + - T: "целых" - test: if: "*[3]/*[2][.='83']" then: [x: "*[2]"] @@ -383,13 +383,13 @@ replace: - test: - if: "*[1][.='log']" - then: [t: "логарифм"] + then: [T: "логарифм"] - else_if: "$Verbosity='Terse'" - then: [t: "эл эн"] - else: [t: "натуральный логарифм"] + then: [T: "эл эн"] + else: [T: "натуральный логарифм"] - test: if: "$Verbosity!='Terse'" - then: [t: "от"] + then: [T: "от"] - pause: short - test: if: "count(*)=2" @@ -400,9 +400,9 @@ tag: mrow match: "count(*)=3 and *[1][self::m:logarithm-with-base] and *[2][.='⁡']" replace: - - t: "логарифм по основанию" + - T: "логарифм по основанию" - x: "*[1]/*[1]" - - t: "от" + - T: "от" - test: if: "not(IsNode(*[3], 'simple'))" then: [pause: short] @@ -428,14 +428,14 @@ else: - test: if: "$Verbosity='Terse'" - then: [t: "открывается"] + then: [T: "открывается"] else_test: if: "ancestor-or-self::*[contains(@data-intent-property, ':literal:')]" - then: [t: "открывающая круглая скобка"] + then: [T: "открывающая круглая скобка"] else_test: if: ".//m:mo[.='|' or .='∣' or .='∩'] or .//m:mtext[contains(., 'and')] or .//*[contains(name(.), 'given')]" - then: [t: "открывающая круглая скобка"] - else: [t: "скобка открывается"] + then: [T: "открывающая круглая скобка"] + else: [T: "скобка открывается"] - test: if: ".//m:mo[.='|' or .='∣' or .='∩'] or .//m:mtext[contains(., 'and')] or .//*[contains(name(.), 'given')]" then: [pause: short] @@ -445,14 +445,14 @@ then: [pause: short] - test: if: "$Verbosity='Terse'" - then: [t: "закрывается"] + then: [T: "закрывается"] else_test: if: "ancestor-or-self::*[contains(@data-intent-property, ':literal:')]" - then: [t: "закрывающая круглая скобка"] + then: [T: "закрывающая круглая скобка"] else_test: if: ".//m:mo[.='|' or .='∣' or .='∩'] or .//m:mtext[contains(., 'and')] or .//*[contains(name(.), 'given')]" - then: [t: "закрывающая круглая скобка"] - else: [t: "скобка закрывается"] + then: [T: "закрывающая круглая скобка"] + else: [T: "скобка закрывается"] - test: if: "following-sibling::*[1][.='+' or .='=']" then: [pause: medium] @@ -465,7 +465,7 @@ replace: - x: "*[1]/*[1]" - x: "*[3]" - - t: "в степени" + - T: "в степени" - x: "*[1]/*[2]" - name: exponent-argument-parens @@ -477,7 +477,7 @@ - test: if: "*[2][self::m:fraction]" then: [pause: medium] - - t: "скобка открывается" + - T: "скобка открывается" - test: if: "*[2][self::m:fraction]" then: [pause: short] @@ -485,7 +485,7 @@ - test: if: "*[2][self::m:fraction or .//m:mo[.='+' or .='-' or .='−']]" then: [pause: short] - - t: "скобка закрывается" + - T: "скобка закрывается" - name: set tag: set @@ -496,32 +496,32 @@ then: - test: if: "$Verbosity!='Terse'" - then: [t: ""] - - t: "пустое множество" # (en: 'empty set') + then: [T: ""] + - T: "пустое множество" # (en: 'empty set') - else_if: "count(*[1]/*)=3 and *[1]/*[2][self::m:mo][.=':' or .='|' or .='∣']" then: - test: if: "$Verbosity!='Terse'" - then: [t: ""] - - t: "множество всех" # (en: 'set of all') + then: [T: ""] + - T: "множество всех" # (en: 'set of all') - x: "*[1]/*[1]" - test: if: "*[1]//*[.='∈']" - then: [t: "таких что"] - else: [t: "таких, что"] # (en: 'such that') + then: [T: "таких что"] + else: [T: "таких, что"] # (en: 'such that') - x: "*[1]/*[3]" else: - test: if: "$Verbosity!='Terse'" - then: [t: ""] - - t: "множество" # (en: 'set') + then: [T: ""] + - T: "множество" # (en: 'set') - x: "*[1]" - name: no-times-before-exponential tag: mo match: ".='\u2062' and following-sibling::*[1][(self::m:power or self::m:msup) and *[1][self::m:mi[.='e']]]" replace: - - t: "" + - T: "" - name: no-times-before-exponent-brackets tag: mo @@ -555,7 +555,7 @@ - " IsBracketed(., '(', ')') or IsBracketed(., '[', ']') or IsBracketed(., '|', '|')]" # followed by parens - " )" replace: - - t: "умножить на" # (en: 'times') + - T: "умножить на" # (en: 'times') - test: if: "following-sibling::*[1][self::m:binomial and (not(IsNode(*[1], 'simple')) or not(IsNode(*[2], 'simple')))]" then: [pause: short] @@ -580,22 +580,22 @@ replace: - test: if: "IsBracketed(., '[', ']')" - then: [t: "квадратная скобка открывается"] + then: [T: "квадратная скобка открывается"] else_test: if: "ancestor-or-self::*[contains(@data-intent-property, ':literal:')] or .//m:mo[.='|' or .='∩'] or .//*[contains(., 'and')]" - then: [t: "открывающая круглая скобка"] - else: [t: "скобка открывается"] + then: [T: "открывающая круглая скобка"] + else: [T: "скобка открывается"] - x: "*[2]" - test: if: "IsBracketed(., '(', ')') and .//m:mo[.='+' or .='-' or .='−']" then: [pause: short] - test: if: "IsBracketed(., '[', ']')" - then: [t: "квадратная скобка закрывается"] + then: [T: "квадратная скобка закрывается"] else_test: if: "ancestor-or-self::*[contains(@data-intent-property, ':literal:')] or .//m:mo[.='|' or .='∩'] or .//*[contains(., 'and')]" - then: [t: "закрывающая круглая скобка"] - else: [t: "скобка закрывается"] + then: [T: "закрывающая круглая скобка"] + else: [T: "скобка закрывается"] - test: if: "following-sibling::*[1][.='+' or .='=']" then: [pause: medium] diff --git a/Rules/Languages/ru/definitions.yaml b/Rules/Languages/ru/definitions.yaml index c89178abc..c17e4f1ac 100644 --- a/Rules/Languages/ru/definitions.yaml +++ b/Rules/Languages/ru/definitions.yaml @@ -1,6 +1,35 @@ --- - include: "../../definitions.yaml" +# Traditional Russian names shared by the grouped Latin alphabet rule. +- RussianLatinLetterNames: { + "b": "бэ", + "c": "цэ", + "d": "дэ", + "e": "е", + "f": "эф", + "g": "гэ", + "h": "аш", + "i": "и", + "j": "йот", + "k": "ка", + "l": "эль", + "m": "эм", + "n": "эн", + "o": "о", + "p": "пэ", + "q": "ку", + "r": "эр", + "s": "эс", + "t": "тэ", + "u": "у", + "v": "вэ", + "w": "дубль-вэ", + "x": "икс", + "y": "игрек", + "z": "зэт" + } + # If an "intent" is used, the 'terse:medium:verbose' speech for the intent name is given here for a prefix||infix||postfix||function fixity # If only one ":" is used, it the first part is used for 'terse' and the second part is used for 'medium' and 'verbose' # If no ":"s are used, the same speech is used for all forms @@ -19,7 +48,7 @@ "binomial": "infix=число сочетаний из; по; конец числа сочетаний", # "closed-interval": "other=closed-interval; от,до; end closed-interval", "greatest-common-divisor": "function=нод: нод: наибольший общий делитель", - "imaginary-part": "function=мнимая часть, мнимая часть, мнимая часть", + "imaginary-part": "function=мнимая часть", "least-common-multiple": "function=нок:нок:наименьшее общее кратное", # "large-op": "infix=над || other=от,до", "limit": "prefix=предел при: предел при: предел при", @@ -279,6 +308,11 @@ "19": "девятнадцать", "89": "восемьдесят девять" } +- CurrencySymbols: { + "$": "доллар", "¢": "цент", "€": "евро", "£": "фунт", "₡": "колон", "₤": "лира", "₨": "рупия", + "₩": "вона", "₪": "шекель", "₱": "песо", "₹": "рупия", "₺": "лира", "₿": "биткоин" + } + - PluralForms: { # FIX: this needs to be flushed out "ампер": "ампера", @@ -311,11 +345,11 @@ "джоуль": "джоуля", "катал": "катала", "люмен": "люмена", - "люкс": "люкс", + "люкс": "люкса", "ньютон": "ньютона", "ом": "ома", "паскаль": "паскаля", - "сименс": "сименс", + "сименс": "сименса", "зиверт": "зиверта", "тесла": "теслы", "вольт": "вольта", @@ -363,6 +397,36 @@ "mile per gallon": "miles per gallon", } +- UnitFractionalForms: { + "атомная единица массы": "атомной единицы массы", + "угловая секунда": "угловой секунды", "угловая минута": "угловой минуты", + "астрономическая единица": "астрономической единицы", "световой год": "светового года" + } + +- UnitManyForms: { + "ампер": "ампер", "кандела": "кандел", "кельвин": "кельвинов", "грамм": "граммов", + "метр": "метров", "моль": "молей", "секунда": "секунд", "литр": "литров", + "тонна": "тонн", "дальтон": "дальтонов", "непер": "неперов", + "атомная единица массы": "атомных единиц массы", "электронвольт": "электронвольт", + "радиан": "радиан", "стерадиан": "стерадиан", "год": "лет", "угловая секунда": "угловых секунд", + "бит": "бит", "байт": "байт", "бод": "бод", "беккерель": "беккерелей", "кулон": "кулонов", + "градус Цельсия": "градусов Цельсия", "фарад": "фарад", "грей": "греев", "генри": "генри", + "герц": "герц", "джоуль": "джоулей", "катал": "каталов", "люмен": "люменов", "люкс": "люксов", + "ньютон": "ньютонов", "ом": "ом", "паскаль": "паскалей", "сименс": "сименсов", + "зиверт": "зивертов", "тесла": "тесла", "вольт": "вольт", "ватт": "ватт", "вебер": "веберов", + "миля": "миль", "галлон": "галлонов", "градус": "градусов", "угловая минута": "угловых минут", + "астрономическая единица": "астрономических единиц", "световой год": "световых лет", + "парсек": "парсеков", "ангстрем": "ангстрем", "ферми": "ферми", "гектар": "гектаров", + "децибел": "децибел", "атмосфера": "атмосфер", "бар": "бар", "калория": "калорий", + "кюри": "кюри", "град": "градов", "моляр": "моляров", "рентген": "рентген", + "оборот в минуту": "оборотов в минуту", "эм-аш-о": "эм-аш-о", "дина": "дин", "эрг": "эрг", + "кибибит": "кибибит", "мебибит": "мебибит", "гибибит": "гибибит", "тебибит": "тебибит", + "пебибит": "пебибит", "эксбибит": "эксбибит", "зебибит": "зебибит", "йобибит": "йобибит", + "кибибайт": "кибибайт", "мебибайт": "мебибайт", "гибибайт": "гибибайт", + "тебибайт": "тебибайт", "пебибайт": "пебибайт", "эксбибайт": "эксбибайт", "зебибайт": "зебибайт", "йобибайт": "йобибайт", + "час": "часов", "день": "дней", "неделя": "недель", "минута": "минут" + } + # Lines starting with "#" are a comment # Each definition in this file is of the form # - name: { "...", "..." "..." } diff --git a/Rules/Languages/ru/navigate.yaml b/Rules/Languages/ru/navigate.yaml index 01bc51a76..f056e742b 100644 --- a/Rules/Languages/ru/navigate.yaml +++ b/Rules/Languages/ru/navigate.yaml @@ -48,9 +48,9 @@ - if: "$MatchCounter = 0 and $SayCommand = 'true'" then_test: - if: "self::m:math and starts-with($NavCommand, 'ZoomOut')" - then: [t: "выражение уже показано целиком", pause: "medium"] + then: [T: "выражение уже показано целиком", pause: "medium"] - else_if: "IsNode(., 'leaf') and starts-with($NavCommand, 'ZoomIn')" - then: [t: "достигнута максимальная детализация", pause: "medium"] + then: [T: "достигнута максимальная детализация", pause: "medium"] else: - test: - if: "starts-with($NavCommand, 'Zoom')" @@ -67,25 +67,25 @@ - x: "$Prefix" - test: - if: "$NavCommand = 'ZoomIn'" - then: [t: "внутрь"] # phrase(zoom 'in' to see more details) + then: [T: "внутрь"] # phrase(zoom 'in' to see more details) - else_if: "$NavCommand = 'ZoomInAll'" # HACK: '\uF8FE' is used internally for the concatenation char by 'ct' -- this gets "ed" concatenated to "zoom" - then: [t: "к максимальной детализации"] # phrase(zoom 'out all the way' to see more details) + then: [T: "к максимальной детализации"] # phrase(zoom 'out all the way' to see more details) - else_if: "$NavCommand = 'ZoomOut'" - then: [t: "наружу"] # phrase(zoom 'out' to see more details) + then: [T: "наружу"] # phrase(zoom 'out' to see more details) - else_if: "$NavCommand = 'ZoomOutAll'" # HACK: '\uF8FE' is used internally for the concatenation char by 'ct' -- this gets "ed" concatenated to "zoom" - then: [t: "к выражению целиком"] # phrase(zoom 'out all the way' to see more details) + then: [T: "к выражению целиком"] # phrase(zoom 'out all the way' to see more details) - else_if: "$NavCommand = 'MoveNext' or $NavCommand = 'ReadNext' or $NavCommand = 'DescribeNext'" - then: [t: "вправо"] # phrase(move to the 'right') + then: [T: "вправо"] # phrase(move to the 'right') - else_if: "$NavCommand = 'MovePrevious' or $NavCommand = 'ReadPrevious' or $NavCommand = 'DescribePrevious'" - then: [t: "влево"] # phrase(move to the 'left') + then: [T: "влево"] # phrase(move to the 'left') - else_if: "$NavCommand = 'ReadCurrent' or $NavCommand = 'DescribeCurrent'" - then: [t: "текущий"] # phrase(who is the 'current' president) + then: [T: "текущий"] # phrase(who is the 'current' president) - else_if: "$NavCommand = 'MoveLineStart' or $NavCommand = 'ReadLineStart'" - then: [t: "в начало строки"] # phrase(move 'to start of line') + then: [T: "в начало строки"] # phrase(move 'to start of line') - else_if: "$NavCommand = 'MoveLineEnd' or $NavCommand = 'ReadLineEnd'" - then: [t: "в конец строки"] # phrase(move 'to end of line') + then: [T: "в конец строки"] # phrase(move 'to end of line') - pause: "medium" - set_variables: [MatchCounter: "1"] @@ -106,21 +106,21 @@ replace: - test: - if: "$Move2D = 'in' and count($Child2D/preceding-sibling::*)=0" - then: [t: "в числитель"] # phrase(the 'numerator' of a fraction) + then: [T: "в числитель"] # phrase(the 'numerator' of a fraction) - else_if: "$Move2D = 'in'" - then: [t: "в знаменатель"] # phrase(the 'denominator' of a fraction) + then: [T: "в знаменатель"] # phrase(the 'denominator' of a fraction) - else_if: "$Move2D = 'out of' and count($Child2D/preceding-sibling::*)=0" - then: [t: "из числителя"] + then: [T: "из числителя"] - else_if: "$Move2D = 'out of'" - then: [t: "из знаменателя"] + then: [T: "из знаменателя"] - else_if: "$Move2D = 'end of' and count($Child2D/preceding-sibling::*)=0" - then: [t: "конец числителя"] + then: [T: "конец числителя"] - else_if: "$Move2D = 'end of'" - then: [t: "конец знаменателя"] + then: [T: "конец знаменателя"] - else_if: "$Move2D = 'start of' and count($Child2D/preceding-sibling::*)=0" - then: [t: "начало числителя"] + then: [T: "начало числителя"] - else_if: "$Move2D = 'start of'" - then: [t: "начало знаменателя"] + then: [T: "начало знаменателя"] - pause: "medium" - name: into-or-out-of-msqrt @@ -129,13 +129,13 @@ replace: - test: - if: "$Move2D = 'in'" - then: [t: "в подкоренное выражение"] + then: [T: "в подкоренное выражение"] - else_if: "$Move2D = 'out of'" - then: [t: "из подкоренного выражения"] + then: [T: "из подкоренного выражения"] - else_if: "$Move2D = 'end of'" - then: [t: "конец подкоренного выражения"] + then: [T: "конец подкоренного выражения"] - else_if: "$Move2D = 'start of'" - then: [t: "начало подкоренного выражения"] + then: [T: "начало подкоренного выражения"] - pause: "medium" - name: into-or-out-of-mroot @@ -144,21 +144,21 @@ replace: - test: - if: "$Move2D = 'in' and count($Child2D/preceding-sibling::*)=0" - then: [t: "в подкоренное выражение"] # phrase(the cube 'root' of x) + then: [T: "в подкоренное выражение"] # phrase(the cube 'root' of x) - else_if: "$Move2D = 'in'" - then: [t: "в показатель корня"] # phrase(the 'root index' of x is 3) + then: [T: "в показатель корня"] # phrase(the 'root index' of x is 3) - else_if: "$Move2D = 'out of' and count($Child2D/preceding-sibling::*)=0" - then: [t: "из подкоренного выражения"] + then: [T: "из подкоренного выражения"] - else_if: "$Move2D = 'out of'" - then: [t: "из показателя корня"] + then: [T: "из показателя корня"] - else_if: "$Move2D = 'end of' and count($Child2D/preceding-sibling::*)=0" - then: [t: "конец подкоренного выражения"] + then: [T: "конец подкоренного выражения"] - else_if: "$Move2D = 'end of'" - then: [t: "конец показателя корня"] + then: [T: "конец показателя корня"] - else_if: "$Move2D = 'start of' and count($Child2D/preceding-sibling::*)=0" - then: [t: "начало подкоренного выражения"] + then: [T: "начало подкоренного выражения"] - else_if: "$Move2D = 'start of'" - then: [t: "начало показателя корня"] + then: [T: "начало показателя корня"] - pause: "medium" - name: into-or-out-of-msub @@ -167,21 +167,21 @@ replace: - test: - if: "$Move2D = 'in' and count($Child2D/preceding-sibling::*)=0" - then: [t: "в основание"] # phrase(the 'base' of the power) + then: [T: "в основание"] # phrase(the 'base' of the power) - else_if: "$Move2D = 'in'" - then: [t: "в нижний индекс"] # phrase(x with 'subscript' 2) + then: [T: "в нижний индекс"] # phrase(x with 'subscript' 2) - else_if: "$Move2D = 'out of' and count($Child2D/preceding-sibling::*)=0" - then: [t: "из основания"] + then: [T: "из основания"] - else_if: "$Move2D = 'out of'" - then: [t: "из нижнего индекса"] + then: [T: "из нижнего индекса"] - else_if: "$Move2D = 'end of' and count($Child2D/preceding-sibling::*)=0" - then: [t: "конец основания"] + then: [T: "конец основания"] - else_if: "$Move2D = 'end of'" - then: [t: "конец нижнего индекса"] + then: [T: "конец нижнего индекса"] - else_if: "$Move2D = 'start of' and count($Child2D/preceding-sibling::*)=0" - then: [t: "начало основания"] + then: [T: "начало основания"] - else_if: "$Move2D = 'start of'" - then: [t: "начало нижнего индекса"] + then: [T: "начало нижнего индекса"] - pause: "medium" - name: into-or-out-of-msup @@ -190,21 +190,21 @@ replace: - test: - if: "$Move2D = 'in' and not($Child2D/preceding-sibling::*)" - then: [t: "в основание"] # phrase(the 'base' of the power) + then: [T: "в основание"] # phrase(the 'base' of the power) - else_if: "$Move2D = 'in'" - then: [t: "в верхний индекс"] # phrase(x with 'superscript' 2) # FIX: it would be better to use the word used when reading (power, exponent, ...) + then: [T: "в верхний индекс"] # phrase(x with 'superscript' 2) # FIX: it would be better to use the word used when reading (power, exponent, ...) - else_if: "$Move2D = 'out of' and not($Child2D/preceding-sibling::*)" - then: [t: "из основания"] + then: [T: "из основания"] - else_if: "$Move2D = 'out of'" - then: [t: "из верхнего индекса"] + then: [T: "из верхнего индекса"] - else_if: "$Move2D = 'end of' and not($Child2D/preceding-sibling::*)" - then: [t: "конец основания"] + then: [T: "конец основания"] - else_if: "$Move2D = 'end of'" - then: [t: "конец верхнего индекса"] + then: [T: "конец верхнего индекса"] - else_if: "$Move2D = 'start of' and not($Child2D/preceding-sibling::*)" - then: [t: "начало основания"] + then: [T: "начало основания"] - else_if: "$Move2D = 'start of'" - then: [t: "начало верхнего индекса"] + then: [T: "начало верхнего индекса"] - pause: "medium" - name: into-or-out-of-msubsup @@ -213,29 +213,29 @@ replace: - test: - if: "$Move2D = 'in' and not($Child2D/preceding-sibling::*)" - then: [t: "в основание"] # phrase(the 'base' of the power) + then: [T: "в основание"] # phrase(the 'base' of the power) - else_if: "$Move2D = 'in' and count($Child2D/preceding-sibling::*)=1" - then: [t: "в нижний индекс"] # phrase(x with 'subscript' 2) + then: [T: "в нижний индекс"] # phrase(x with 'subscript' 2) - else_if: "$Move2D = 'in'" - then: [t: "в верхний индекс"] # phrase(x with 'superscript' 2) # FIX: it would be better to use the word used when reading (power, exponent, ...) + then: [T: "в верхний индекс"] # phrase(x with 'superscript' 2) # FIX: it would be better to use the word used when reading (power, exponent, ...) - else_if: "$Move2D = 'out of' and not($Child2D/preceding-sibling::*)" - then: [t: "из основания"] + then: [T: "из основания"] - else_if: "$Move2D = 'out of' and count($Child2D/preceding-sibling::*)=1" - then: [t: "из нижнего индекса"] + then: [T: "из нижнего индекса"] - else_if: "$Move2D = 'out of'" - then: [t: "из верхнего индекса"] + then: [T: "из верхнего индекса"] - else_if: "$Move2D = 'end of' and not($Child2D/preceding-sibling::*)" - then: [t: "конец основания"] + then: [T: "конец основания"] - else_if: "$Move2D = 'end of' and count($Child2D/preceding-sibling::*)=1" - then: [t: "конец нижнего индекса"] + then: [T: "конец нижнего индекса"] - else_if: "$Move2D = 'end of'" - then: [t: "конец верхнего индекса"] + then: [T: "конец верхнего индекса"] - else_if: "$Move2D = 'start of' and not($Child2D/preceding-sibling::*)" - then: [t: "начало основания"] + then: [T: "начало основания"] - else_if: "$Move2D = 'start of' and count($Child2D/preceding-sibling::*)=1" - then: [t: "начало нижнего индекса"] + then: [T: "начало нижнего индекса"] - else_if: "$Move2D = 'start of'" - then: [t: "начало верхнего индекса"] + then: [T: "начало верхнего индекса"] - pause: "medium" - name: into-or-out-of-munder @@ -244,36 +244,36 @@ replace: - test: - if: "$Move2D = 'in'" - then: [t: "в"] + then: [T: "в"] - else_if: "$Move2D = 'out of'" - then: [t: "из"] + then: [T: "из"] - else_if: "$Move2D = 'end of'" - then: [t: "конец"] + then: [T: "конец"] - else_if: "$Move2D = 'start of'" - then: [t: "начало"] + then: [T: "начало"] - test: if: "count($Child2D/preceding-sibling::*)=0" - then: [t: "основание"] # phrase(the 'base' of the power) - else: [t: "нижний предел"] # phrase(the 'lower limit' of the function is zero) + then: [x: "IfThenElse($Move2D='in', 'основание', 'основания')"] # phrase(the 'base' of the power) + else: [x: "IfThenElse($Move2D='in', 'нижний предел', 'нижнего предела')"] # phrase(the 'lower limit' of the function is zero) - pause: "medium" - name: into-or-out-of-mover tag: "*" - match: "$Move2D != '' and @data-from-mathml='mover' or self::m:mover" + match: "$Move2D != '' and (@data-from-mathml='mover' or self::m:mover)" replace: - test: - if: "$Move2D = 'in'" - then: [t: "в"] + then: [T: "в"] - else_if: "$Move2D = 'out of'" - then: [t: "из"] + then: [T: "из"] - else_if: "$Move2D = 'end of'" - then: [t: "конец"] + then: [T: "конец"] - else_if: "$Move2D = 'start of'" - then: [t: "начало"] + then: [T: "начало"] - test: if: "count($Child2D/preceding-sibling::*)=0" - then: [t: "основание"] # phrase(the 'base' of the power) - else: [t: "верхний предел"] # phrase(the 'upper limit' of the function is zero) + then: [x: "IfThenElse($Move2D='in', 'основание', 'основания')"] # phrase(the 'base' of the power) + else: [x: "IfThenElse($Move2D='in', 'верхний предел', 'верхнего предела')"] # phrase(the 'upper limit' of the function is zero) - pause: "medium" - name: into-or-out-of-munderover @@ -282,19 +282,19 @@ replace: - test: - if: "$Move2D = 'in'" - then: [t: "в"] + then: [T: "в"] - else_if: "$Move2D = 'out of'" - then: [t: "из"] + then: [T: "из"] - else_if: "$Move2D = 'end of'" - then: [t: "конец"] + then: [T: "конец"] - else_if: "$Move2D = 'start of'" - then: [t: "начало"] + then: [T: "начало"] - test: - if: "count($Child2D/preceding-sibling::*)=0" - then: [t: "основание"] # phrase(the 'base' of the power) + then: [x: "IfThenElse($Move2D='in', 'основание', 'основания')"] # phrase(the 'base' of the power) - else_if: "count($Child2D/preceding-sibling::*)=1" - then: [t: "нижний предел"] # phrase(the 'lower limit' of the function is zero) - else: [t: "верхний предел"] # phrase(the 'upper limit' of the function is zero) + then: [x: "IfThenElse($Move2D='in', 'нижний предел', 'нижнего предела')"] # phrase(the 'lower limit' of the function is zero) + else: [x: "IfThenElse($Move2D='in', 'верхний предел', 'верхнего предела')"] # phrase(the 'upper limit' of the function is zero) - pause: "medium" - name: into-or-out-of-mmultiscripts @@ -310,34 +310,34 @@ replace: - test: - if: "$Move2D = 'in'" - then: [t: "в"] + then: [T: "в"] - else_if: "$Move2D = 'out of'" - then: [t: "из"] + then: [T: "из"] - else_if: "$Move2D = 'end of'" - then: [t: "конец"] + then: [T: "конец"] - else_if: "$Move2D = 'start of'" - then: [t: "начало"] + then: [T: "начало"] - test: - if: "$NumPrecedingSiblings=0" - then: [t: "основание"] # phrase(the 'base' of the power) + then: [x: "IfThenElse($Move2D='in', 'основание', 'основания')"] # phrase(the 'base' of the power) - else_if: "$Child2D/preceding-sibling::*[self::m:mprescripts]" # are we before mprescripts and hence are postscripts then: - test: # in postscripts -- base shifts by one if: "$NumPrecedingSiblings mod 2 = 0" - then: [t: "нижний индекс"] # phrase(x with 'subscript' 2) - else: [t: "верхний индекс"] # phrase(x with 'superscript' 2) + then: [x: "IfThenElse($Move2D='in', 'нижний индекс', 'нижнего индекса')"] # phrase(x with 'subscript' 2) + else: [x: "IfThenElse($Move2D='in', 'верхний индекс', 'верхнего индекса')"] # phrase(x with 'superscript' 2) else: - test: if: "$NumPrecedingSiblings mod 2 = 0" - then: [t: "верхний левый индекс"] # phrase(x with 'pre-superscript' 2) - else: [t: "нижний левый индекс"] # phrase(x with 'pre-subscript' 2) + then: [x: "IfThenElse($Move2D='in', 'верхний левый индекс', 'верхнего левого индекса')"] # phrase(x with 'pre-superscript' 2) + else: [x: "IfThenElse($Move2D='in', 'нижний левый индекс', 'нижнего левого индекса')"] # phrase(x with 'pre-subscript' 2) - pause: "medium" - name: into-or-out-of-mtd tag: mtd match: "$Move2D = 'in'" replace: - - t: "столбец" # phrase(the first 'column' in the table) + - T: "столбец" # phrase(the first 'column' in the table) - x: "count($Child2D/preceding-sibling::*)+1" - pause: "medium" @@ -345,7 +345,7 @@ tag: [mtr, mlabeledtr] match: "$Move2D = 'in'" replace: - - t: "столбец" + - T: "столбец" - x: "count($Child2D/preceding-sibling::*)+1" - pause: "medium" @@ -384,7 +384,7 @@ if: "$NavVerbosity = 'Verbose'" then: [x: "translate(name(.), '-_', ' ')"] # e.g., "in absolute value" else: - - t: "часть" # phrase(the 'part' of the expression) + - T: "часть" # phrase(the 'part' of the expression) - x: "count($Child2D/preceding-sibling::*) + 1" - pause: "medium" @@ -401,19 +401,19 @@ then: - test: - if: "$PreviousNavCommand = 'ZoomIn'" - then: [t: "отмена перехода внутрь"] # phrase('undo zoom in') + then: [T: "отмена перехода внутрь"] # phrase('undo zoom in') - else_if: "$PreviousNavCommand = 'ZoomOut'" - then: [t: "отмена перехода наружу"] # phrase('undo zoom out') + then: [T: "отмена перехода наружу"] # phrase('undo zoom out') - else_if: "$PreviousNavCommand = 'ZoomInAll'" - then: [t: "отмена перехода к максимальной детализации"] # phrase('undo zooming in all the way') + then: [T: "отмена перехода к максимальной детализации"] # phrase('undo zooming in all the way') - else_if: "$PreviousNavCommand = 'ZoomOutAll'" - then: [t: "отмена перехода к выражению целиком"] # phrase('undo zooming out all the way') + then: [T: "отмена перехода к выражению целиком"] # phrase('undo zooming out all the way') - else_if: "$PreviousNavCommand = 'MovePrevious' or $PreviousNavCommand = 'MovePreviousZoom'" - then: [t: "отмена перемещения влево"] # phrase('undo move left') + then: [T: "отмена перемещения влево"] # phrase('undo move left') - else_if: "$PreviousNavCommand = 'MoveNext' or $PreviousNavCommand = 'MoveNextZoom'" - then: [t: "отмена перемещения вправо"] # phrase('undo move right') + then: [T: "отмена перемещения вправо"] # phrase('undo move right') - else_if: "$PreviousNavCommand = 'None'" - then: [t: "нет предыдущей команды"] # phrase('no previous command') + then: [T: "нет предыдущей команды"] # phrase('no previous command') - pause: "medium" - set_variables: [NavNode: "@id"] @@ -436,7 +436,7 @@ replace: - test: if: "$MatchCounter = 0 and $NavVerbosity != 'Terse'" - then: [t: "достигнута максимальная детализация", pause: "long"] # phrase('zoomed in all of the way') + then: [T: "достигнута максимальная детализация", pause: "long"] # phrase('zoomed in all of the way') - test: if: "$ReadZoomLevel!=-1" then: @@ -719,7 +719,7 @@ variables: [SayCommand: "string($NavVerbosity = 'Verbose')"] replace: [x: "."] # we need to speak it here - - t: "строка" # phrase(the first 'row' of the matrix) + - T: "строка" # phrase(the first 'row' of the matrix) # if we let the speech rules speak the row, it is given just the MathML for the row, so the row # will always be '1' - x: "count(../preceding-sibling::*)+1" - pause: medium @@ -762,12 +762,12 @@ then: - test: - if: "$NavCommand = 'MoveStart'" - then: [t: "перемещение в начало выражения"] # phrase('move to start of math') + then: [T: "перемещение в начало выражения"] # phrase('move to start of math') - else_if: "$NavCommand = 'MoveLineStart'" - then: [t: "перемещение в начало строки"] # phrase('move to start of line') + then: [T: "перемещение в начало строки"] # phrase('move to start of line') - else_if: "$NavCommand = 'MoveEnd'" - then: [t: "перемещение в конец выражения"] # phrase('move to end of math') - else: [t: "перемещение в конец строки"] # "$NavCommand = 'MoveLineEnd'" # phrase('move to end of line') + then: [T: "перемещение в конец выражения"] # phrase('move to end of math') + else: [T: "перемещение в конец строки"] # "$NavCommand = 'MoveLineEnd'" # phrase('move to end of line') - pause: "medium" - test: if: "$NavCommand = 'MoveStart' or $NavCommand = 'MoveLineStart'" @@ -806,8 +806,8 @@ then: - test: if: "$NavCommand = 'MoveLineStart'" - then: [t: "перемещение в начало строки"] # phrase('move to start of line') - else: [t: "перемещение в конец строки"] # "$NavCommand = 'MoveLineEnd'" # phrase('move to end of line') + then: [T: "перемещение в начало строки"] # phrase('move to start of line') + else: [T: "перемещение в конец строки"] # "$NavCommand = 'MoveLineEnd'" # phrase('move to end of line') - pause: "medium" - test: if: "self::m:mrow or @data-from-mathml = 'mrow'" @@ -843,7 +843,7 @@ - "$NavCommand='MoveColumnStart' or $NavCommand='MoveColumnEnd' or" - "$NavCommand='ReadCellCurrent'" replace: - - t: "не в таблице" # phrase('not in table') + - T: "не в таблице" # phrase('not in table') - pause: long - set_variables: [SpeakExpression: "'false'"] @@ -857,12 +857,12 @@ - test: if: "$NavVerbosity = 'Verbose'" then: - - t: "перемещение влево" # phrase('move left') + - T: "перемещение влево" # phrase('move left') - pause: short - test: if: "$NavVerbosity != 'Terse'" then: - - t: "столбец" # phrase(the first 'column' of the table) + - T: "столбец" # phrase(the first 'column' of the table) - x: "count(preceding-sibling::*)" - pause: medium - test: @@ -874,7 +874,7 @@ else: - set_variables: [NavNode: "preceding-sibling::*[1]/*[1]/@id"] else: - - t: "нет предыдущего столбца" # phrase('no previous column' in the table) + - T: "нет предыдущего столбца" # phrase('no previous column' in the table) - set_variables: [SpeakExpression: "'false'"] - name: move-cell-next @@ -887,12 +887,12 @@ - test: if: "$NavVerbosity = 'Verbose'" then: - - t: "перемещение вправо" # phrase('move right') + - T: "перемещение вправо" # phrase('move right') - pause: short - test: if: "$NavVerbosity != 'Terse'" then: - - t: "столбец" # phrase(the first 'column' in the table) + - T: "столбец" # phrase(the first 'column' in the table) - x: "count(preceding-sibling::*)+2" - pause: medium - test: @@ -904,7 +904,7 @@ else: - set_variables: [NavNode: "following-sibling::*[1]/*[1]/@id"] else: - - t: "нет следующего столбца" # phrase('no next column' in the table) + - T: "нет следующего столбца" # phrase('no next column' in the table) - set_variables: [SpeakExpression: "'false'"] - name: move-cell-up @@ -920,15 +920,15 @@ - test: if: "$NavVerbosity = 'Verbose'" then: - - t: "перемещение вверх" # phrase('move up' to previous row in the table) + - T: "перемещение вверх" # phrase('move up' to previous row in the table) - pause: short - test: if: "$NavVerbosity != 'Terse'" then: - - t: "строка" # phrase(the previous 'row' in the table) + - T: "строка" # phrase(the previous 'row' in the table) - x: "count(../preceding-sibling::*)" - pause: short - - t: "столбец" # phrase(the previous 'column' in the table) + - T: "столбец" # phrase(the previous 'column' in the table) - x: "count(preceding-sibling::*)+1" - pause: medium - test: @@ -940,7 +940,7 @@ else: - set_variables: [NavNode: "../preceding-sibling::*[1]/*[$Column]/*[1]/@id"] else: - - t: "нет предыдущей строки" # phrase('no previous row' in the table) + - T: "нет предыдущей строки" # phrase('no previous row' in the table) - set_variables: [SpeakExpression: "'false'"] - name: move-cell-down @@ -956,15 +956,15 @@ - test: if: "$NavVerbosity = 'Verbose'" then: - - t: "перемещение вниз" # phrase('move down to the next row in the table) + - T: "перемещение вниз" # phrase('move down to the next row in the table) - pause: short - test: if: "$NavVerbosity != 'Terse'" then: - - t: "строка" # phrase(the next 'row' in the table) + - T: "строка" # phrase(the next 'row' in the table) - x: "count(../preceding-sibling::*)+2" - pause: short - - t: "столбец" # phrase(the next 'column' in the table) + - T: "столбец" # phrase(the next 'column' in the table) - x: "count(preceding-sibling::*)+1" - pause: medium - test: @@ -976,7 +976,7 @@ else: - set_variables: [NavNode: "../following-sibling::*[1]/*[$Column]/*[1]/@id"] else: - - t: "нет следующей строки" # phrase('no next row' in the table) + - T: "нет следующей строки" # phrase('no next row' in the table) - set_variables: [SpeakExpression: "'false'"] - name: move-cell-up @@ -986,7 +986,7 @@ - test: if: "$NavVerbosity = 'Verbose'" then: - - t: "перейти к предыдущей строке" # phrase('move to previous row' to the previous row in the table) + - T: "перейти к предыдущей строке" # phrase('move to previous row' to the previous row in the table) - pause: medium - test: if: "preceding-sibling::*" @@ -1000,7 +1000,7 @@ else: - set_variables: [NavNode: "preceding-sibling::*[1]/@id"] else: - - t: "нет предыдущей строки" # phrase('no previous row' in the table) + - T: "нет предыдущей строки" # phrase('no previous row' in the table) - set_variables: [SpeakExpression: "'false'"] - name: move-cell-down @@ -1010,7 +1010,7 @@ - test: if: "$NavVerbosity = 'Verbose'" then: - - t: "перейти к следующей строке" # phrase('move to next row' to the next row in the table) + - T: "перейти к следующей строке" # phrase('move to next row' to the next row in the table) - pause: medium - test: if: "following-sibling::*" @@ -1024,7 +1024,7 @@ else: - set_variables: [NavNode: "following-sibling::*[1]/@id"] else: - - t: "нет следующей строки" # phrase('no next row' in the table) + - T: "нет следующей строки" # phrase('no next row' in the table) - set_variables: [SpeakExpression: "'false'"] - name: move-cell-previous @@ -1035,9 +1035,9 @@ - test: if: "$NavVerbosity = 'Verbose'" then: - - t: "перейти к предыдущему столбцу" # phrase('move to previous column' to the previous row in the table) + - T: "перейти к предыдущему столбцу" # phrase('move to previous column' to the previous row in the table) - pause: medium - - t: "нет предыдущего столбца" # phrase('no previous column' in the table) + - T: "нет предыдущего столбца" # phrase('no previous column' in the table) - set_variables: [SpeakExpression: "'false'"] - name: move-cell-next @@ -1048,9 +1048,9 @@ - test: if: "$NavVerbosity = 'Verbose'" then: - - t: "перемещение вверх" # phrase('move up' to the previous row in the table) + - T: "перемещение вверх" # phrase('move up' to the previous row in the table) - pause: medium - - t: "нет следующей строки" # phrase('no next row' in the table) + - T: "нет следующей строки" # phrase('no next row' in the table) - set_variables: [SpeakExpression: "'false'"] - name: default-read-cell @@ -1066,19 +1066,19 @@ - test: if: "$NavVerbosity = 'Verbose'" then: - - t: "прочитать текущую запись" # phrase('read current entry' in the table) + - T: "прочитать текущую запись" # phrase('read current entry' in the table) - pause: medium - test: if: "$NavVerbosity != 'Terse'" then: - - t: "строка" # phrase(the previous 'row' in the table) + - T: "строка" # phrase(the previous 'row' in the table) - x: "count($MTD[1]/../preceding-sibling::*)+1" - - t: "столбец" # phrase(the previous 'column' in the table) + - T: "столбец" # phrase(the previous 'column' in the table) - x: "count($MTD[1]/preceding-sibling::*)+1" - pause: short - set_variables: [NavNode: "$MTD[1]/*[1]/@id"] else: - - t: "не в таблице" # phrase('not in table' or matrix) + - T: "не в таблице" # phrase('not in table' or matrix) - pause: long - set_variables: [SpeakExpression: "'false'"] @@ -1318,7 +1318,7 @@ then: - x: "ancestor::m:mtd[1]" # try again on an mtd node else: - - t: "не в таблице" # phrase('not in table' or matrix) + - T: "не в таблице" # phrase('not in table' or matrix) - pause: long - set_variables: [SpeakExpression: "'false'"] @@ -1429,7 +1429,7 @@ - test: if: "$MatchCounter = 0 and $NavVerbosity = 'Verbose'" then: - - t: "невозможно перемещение вправо" # phrase('cannot move right') + - T: "невозможно перемещение вправо" # phrase('cannot move right') - pause: medium - with: variables: [Move2D: "'end of'", Child2D: "$EdgeNode/*[last()]"] @@ -1447,16 +1447,16 @@ - test: if: "$MatchCounter = 0 and $NavVerbosity = 'Verbose'" then: - - t: "невозможно" # phrase('cannot' move right in expression) + - T: "невозможно" # phrase('cannot' move right in expression) - test: - if: "$NavCommand = 'MoveNext'" - then: [t: "перейти"] # phrase('move' to next entry in table) + then: [T: "перейти"] # phrase('move' to next entry in table) - else_if: "$NavCommand = 'ReadNext'" - then: [t: "чтение"] # phrase('read' next entry in table) - else: [t: "описание"] # phrase('describe' next entry in table) - - t: "вправо" # phrase(move 'right') + then: [T: "чтение"] # phrase('read' next entry in table) + else: [T: "описание"] # phrase('describe' next entry in table) + - T: "вправо" # phrase(move 'right') - pause: short - - t: "конец выражения" # phrase(move 'end of math') + - T: "конец выражения" # phrase(move 'end of math') - pause: long - set_variables: [SpeakExpression: "'false'"] @@ -1501,7 +1501,7 @@ - test: if: "$NavVerbosity = 'Verbose'" then: - - t: "столбец" # phrase(the previous 'column' in the table) + - T: "столбец" # phrase(the previous 'column' in the table) - x: "count(preceding-sibling::*)+2" - pause: short - test: @@ -1626,7 +1626,7 @@ - test: if: "$MatchCounter = 0 and $NavVerbosity = 'Verbose' and $NavCommand = 'MovePrevious'" then: - - t: "невозможно перемещение влево" # phrase('cannot move left' in expression) + - T: "невозможно перемещение влево" # phrase('cannot move left' in expression) - pause: medium - with: variables: [Move2D: "'end of'", Child2D: "$EdgeNode/*[1]"] @@ -1640,7 +1640,7 @@ - "($NavCommand = 'MovePrevious' or $NavCommand = 'ReadPrevious' or $NavCommand = 'DescribePrevious') and" - "(self::m:math or name(EdgeNode(., 'left', 'math'))='math')" replace: - - t: "начало выражения" # phrase('start of math') + - T: "начало выражения" # phrase('start of math') - pause: long - set_variables: [SpeakExpression: "'false'"] @@ -1653,7 +1653,7 @@ - test: if: "$MatchCounter = 0 and $NavVerbosity = 'Verbose'" then: - - t: "невозможно перемещение влево" # phrase('cannot move left') + - T: "невозможно перемещение влево" # phrase('cannot move left') - pause: short - with: variables: [Move2D: "'start of'", Child2D: "."] @@ -1748,7 +1748,7 @@ - test: if: "$NavVerbosity = 'Verbose'" then: - - t: "столбец" # phrase(the first 'column' in the table) + - T: "столбец" # phrase(the first 'column' in the table) - x: "count(preceding-sibling::*)" - pause: short - test: @@ -1834,16 +1834,16 @@ - test: - if: "$NavMode = 'Enhanced'" then: - - t: "символ" # phrase(a mathematical 'character') + - T: "символ" # phrase(a mathematical 'character') - set_variables: [NavMode: "'Character'", ReadZoomLevel: "1"] - else_if: "$NavMode = 'Character'" then: - - t: "простой" # phrase(a 'simple' way to do something) + - T: "простой" # phrase(a 'simple' way to do something) - set_variables: [NavMode: "'Simple'", ReadZoomLevel: "1"] - else: - - t: "улучшенный" # phrase(an 'enhanced' way to do something) + - T: "улучшенный" # phrase(an 'enhanced' way to do something) - set_variables: [NavMode: "'Enhanced'", ReadZoomLevel: "-1"] - - t: "режим" # phrase(a simple 'mode' of use) + - T: "режим" # phrase(a simple 'mode' of use) - pause: long - test: - if: "$NavMode != 'Enhanced'" # potentially need to zoom to the sibling @@ -1859,16 +1859,16 @@ - test: - if: "$NavMode = 'Enhanced'" then: - - t: "простой" # phrase(an 'simple' way to do something) + - T: "простой" # phrase(an 'simple' way to do something) - set_variables: [NavMode: "'Simple'", ReadZoomLevel: "1"] - else_if: "$NavMode = 'Character'" then: - - t: "улучшенный" # phrase(an 'enhanced' way to do something) + - T: "улучшенный" # phrase(an 'enhanced' way to do something) - set_variables: [NavMode: "'Enhanced'", ReadZoomLevel: "-1"] - else: - - t: "символ" # phrase(a mathematical 'character') + - T: "символ" # phrase(a mathematical 'character') - set_variables: [NavMode: "'Character'", ReadZoomLevel: "1"] - - t: "режим" # phrase(a simple 'mode' of use) + - T: "режим" # phrase(a simple 'mode' of use) - pause: long - test: - if: "$NavMode != 'Enhanced'" # potentially need to zoom to the sibling @@ -1884,11 +1884,11 @@ - test: if: "$Overview = 'true'" then: - - t: "проговорить выражение после перемещения" # phrase('speak expression after move') + - T: "проговорить выражение после перемещения" # phrase('speak expression after move') - pause: long - set_variables: [Overview: "'false'"] else: - - t: "обзор выражения после перемещения" # phrase('overview of expression after move') + - T: "обзор выражения после перемещения" # phrase('overview of expression after move') - pause: long - set_variables: [Overview: "'true'"] @@ -1901,9 +1901,9 @@ then: - test: - if: "$NavCommand = 'ReadCurrent'" - then: [t: "читать"] # phrase('read' next entry in table) - else: [t: "описать"] # phrase('describe' next entry in table) - - t: "текущее" # phrase('current' entry in table) + then: [T: "читать"] # phrase('read' next entry in table) + else: [T: "описать"] # phrase('describe' next entry in table) + - T: "текущее" # phrase('current' entry in table) - pause: long - set_variables: [NavNode: "@id"] @@ -1921,13 +1921,13 @@ then: - test: - if: "starts-with($NavCommand, 'Read')" - then: [t: "читать"] # phrase('read' next entry in table) + then: [T: "читать"] # phrase('read' next entry in table) - else_if: "starts-with($NavCommand, 'Describe')" - then: [t: "описать"] # phrase('describe' next entry in table) + then: [T: "описать"] # phrase('describe' next entry in table) - else_if: "starts-with($NavCommand, 'MoveTo')" - then: [t: "перейти к"] # phrase('move to' the next entry in table) - else: [t: "установить"] # phrase('set' the value of the next entry in table) - - t: "заполнитель" # phrase('placeholder' for the value) + then: [T: "перейти к"] # phrase('move to' the next entry in table) + else: [T: "установить"] # phrase('set' the value of the next entry in table) + - T: "заполнитель" # phrase('placeholder' for the value) - x: "$PlaceMarkerIndex" - pause: long - set_variables: [NavNode: "$PlaceMarker"] @@ -1939,7 +1939,7 @@ - test: if: "$NavVerbosity != 'Terse'" then: - - t: "установить заполнитель" # phrase('set placeholder' to the value) + - T: "установить заполнитель" # phrase('set placeholder' to the value) - x: "$PlaceMarkerIndex" - pause: long - set_variables: [NavNode: "@id"] @@ -1971,11 +1971,11 @@ - test: if: "$NavCommand = 'WhereAmI'" then: - - t: "больше внутри ничего нет" # phrase('inside of nothing more') + - T: "больше внутри ничего нет" # phrase('inside of nothing more') - pause: long - set_variables: [SpeakExpression: "'false'"] else: - - t: "внутри" # phrase('inside' a big expression) + - T: "внутри" # phrase('inside' a big expression) - pause: medium - set_variables: [NavNode: "@id"] @@ -1983,7 +1983,7 @@ tag: "*" match: "$NavCommand = 'WhereAmI' or $NavCommand = 'WhereAmIAll'" replace: - - t: "внутри" # phrase('inside' a big expression) + - T: "внутри" # phrase('inside' a big expression) - pause: medium - test: - if: "$NavMode='Enhanced' and parent::*[self::m:mrow and IsBracketed(., '(', ')', false) or IsBracketed(., '[', ']', false)]" diff --git a/Rules/Languages/ru/overview.yaml b/Rules/Languages/ru/overview.yaml index 2341d4042..6e28e274c 100644 --- a/Rules/Languages/ru/overview.yaml +++ b/Rules/Languages/ru/overview.yaml @@ -37,6 +37,9 @@ - test: if: "$Verbosity!='Terse'" then: [T: "из"] + - test: + if: "not(IsNode(*[1], 'simple'))" + then: [T: "выражения"] - x: "*[1]" - name: overview-default @@ -44,25 +47,19 @@ match: "." replace: - test: - if: "*[2][self::m:mn]" - then_test: - - if: "*[2][.='2']" - then: [T: "квадратный корень"] - - else_if: "*[2][.='3']" - then: [T: "кубический корень"] # (en: 'cube root') - - else_if: "*[2][not(contains(., '.'))]" - then: [x: "ToOrdinal(*[2])", T: "корень"] + - if: "*[2][self::m:mn and .='2']" + then: [T: "квадратный корень"] + - else_if: "*[2][self::m:mn and .='3']" + then: [T: "кубический корень"] else: - - test: - if: "*[2][self::m:mi][string-length(.)=1]" - then: - - x: "*[2]" - - pronounce: [{text: "-й"}, {ipa: "j"}, {sapi5: "th"}, {eloquence: "T"}] - else: {x: "*[2]"} - - T: "корень" + - T: "корень степени" + - x: "*[2]" - test: if: "$Verbosity!='Terse'" then: [T: "из"] + - test: + if: "not(IsNode(*[1], 'simple'))" + then: [T: "выражения"] - x: "*[1]" - name: matrix-override @@ -71,10 +68,9 @@ - "*[2][self::m:mtable] and" - "(IsBracketed(., '(', ')') or IsBracketed(., '[', ']') or IsBracketed(., '|', '|'))" replace: - - T: "на" # (en: 'a') - x: count(*[2]/*) - T: "на" # (en: 'by') - - x: count(*[2]/*[self::m:mtr][1]/*) + - x: "count(*[2]/*[1]/*) - count(*[2]/*[1][self::m:mlabeledtr])" - test: if: "*[1][.='|']" # just need to check the first bracket since we know it must be (, [, or | then: [T: "определитель"] # (en: 'determinant') @@ -84,10 +80,9 @@ tag: mtable match: "." replace: - - T: "на" # (en: 'a') - x: count(*) - T: "на" # (en: 'by') - - x: count(*[self::m:mtr][1]/*) + - x: "count(*[1]/*) - count(*[1][self::m:mlabeledtr])" - T: "таблица" # (en: 'table') - name: short-mrow diff --git a/Rules/Languages/ru/unicode-full.yaml b/Rules/Languages/ru/unicode-full.yaml index ae0f67f09..da40e75b4 100644 --- a/Rules/Languages/ru/unicode-full.yaml +++ b/Rules/Languages/ru/unicode-full.yaml @@ -1,196 +1,195 @@ --- - - "¢": [t: "центы"] # 0xa2 - - "£": [t: "фунты"] # 0xa3 - - "¤": [t: "знак валюты"] # 0xa4 - - "¥": [t: "иена"] # 0xa5 - - "¦": [t: "вертикальная черта с разрывом"] # 0xa6 - - "§": [t: "параграф"] # 0xa7 - - "¨": [t: "две точки"] # 0xa8 - - "©": [t: "авторское право"] # 0xa9 - - "ª": [t: "указатель женского рода"] # 0xaa - - "¬": [t: "не"] # 0xac - - "«": [t: "левая двойная угловая кавычка"] # 0xab + - "¢": [T: "центы"] # 0xa2 + - "£": [T: "фунты"] # 0xa3 + - "¤": [T: "знак валюты"] # 0xa4 + - "¥": [T: "иена"] # 0xa5 + - "¦": [T: "вертикальная черта с разрывом"] # 0xa6 + - "§": [T: "параграф"] # 0xa7 + - "¨": [T: "две точки"] # 0xa8 + - "©": [T: "авторское право"] # 0xa9 + - "ª": [T: "указатель женского рода"] # 0xaa + - "¬": [T: "не"] # 0xac + - "«": [T: "левая двойная угловая кавычка"] # 0xab - "¯": # 0xaf - test: if: "ancestor::m:modified-variable and preceding-sibling::*[1][self::m:mi]" - then: [t: "черта"] - else: [t: "линия"] - - "²": [t: "два"] # 0xb2 - - "³": [t: "три"] # 0xb3 - - "´": [t: "акут"] # 0xb4 - - "µ": [t: "микро"] # 0xb5 - - "¹": [t: "один"] # 0xb9 - - "º": [t: "указатель мужского рода"] # 0xb9 + then: [T: "черта"] + else: [T: "линия"] + - "²": [T: "два"] # 0xb2 + - "³": [T: "три"] # 0xb3 + - "´": [T: "акут"] # 0xb4 + - "µ": [T: "микро"] # 0xb5 + - "¹": [T: "один"] # 0xb9 + - "º": [T: "указатель мужского рода"] # 0xb9 - "·": - test: if: "$SpeechStyle != 'ClearSpeak' or $ClearSpeak_MultSymbolDot = 'Auto'" - then: [t: "умножить"] - else: [t: "точка"] + then: [T: "умножить"] + else: [T: "точка"] - "×": # 0xd7 - test: if: "$SpeechStyle != 'ClearSpeak' or $ClearSpeak_MultSymbolX = 'Auto'" - then: [t: "умножить"] + then: [T: "умножить"] else_test: if: $ClearSpeak_MultSymbolX = 'By' - then: [t: "умножить на"] - else: [t: "крест"] - - "÷": [t: "разделить на"] # 0xf7 - - "¡": [t: "перевёрнутый восклицательный знак"] # 0xa1 - - "¶": [t: "знак абзаца"] # 0xb6 - - "¿": [t: "перевёрнутый вопросительный знак"] # 0xbf - - - "ʰ": [t: "модификатор маленькая h"] # 0x2b0 - - "ʱ": [t: "модификатор маленькая h с крюком"] # 0x2b1 - - "ʲ": [t: "модификатор маленькая j"] # 0x2b2 - - "ʳ": [t: "модификатор маленькая r"] # 0x2b3 - - "ʴ": [t: "модификатор маленькая перевёрнутая r"] # 0x2b4 - - "ʵ": [t: "модификатор маленькая перевёрнутая r с крюком"] # 0x2b5 + then: [T: "умножить на"] + else: [T: "крест"] + - "÷": [T: "разделить на"] # 0xf7 + - "¡": [T: "перевёрнутый восклицательный знак"] # 0xa1 + - "¶": [T: "знак абзаца"] # 0xb6 + - "¿": [T: "перевёрнутый вопросительный знак"] # 0xbf + + - "ʰ": [T: "модификатор маленькая h"] # 0x2b0 + - "ʱ": [T: "модификатор маленькая h с крюком"] # 0x2b1 + - "ʲ": [T: "модификатор маленькая j"] # 0x2b2 + - "ʳ": [T: "модификатор маленькая r"] # 0x2b3 + - "ʴ": [T: "модификатор маленькая перевёрнутая r"] # 0x2b4 + - "ʵ": [T: "модификатор маленькая перевёрнутая r с крюком"] # 0x2b5 - "ʶ": # 0x2b6 - - t: "модификатор маленькая перевёрнутая" - - spell: "translate('R', 'R', 'R')" - - - "ʷ": [t: "модификатор маленькая w"] # 0x2b7 - - "ʸ": [t: "модификатор маленькая y"] # 0x2b8 - - "ʹ": [t: "модификатор штрих"] # 0x2b9 - - "ʺ": [t: "модификатор двойной штрих"] # 0x2ba - - "ʻ": [t: "модификатор перевёрнутая запятая"] # 0x2bb - - "ʼ": [t: "модификатор апостроф"] # 0x2bc - - "ʽ": [t: "модификатор обратная запятая"] # 0x2bd - - "ʾ": [t: "модификатор правое полукольцо"] # 0x2be - - "ʿ": [t: "модификатор левое полукольцо"] # 0x2bf - - "ˀ": [t: "модификатор гортанная смычка"] # 0x2c0 - - "ˁ": [t: "модификатор обратная гортанная смычка"] # 0x2c1 - - "˂": [t: "модификатор левый наконечник стрелки"] # 0x2c2 - - "˃": [t: "модификатор правый наконечник стрелки"] # 0x2c3 - - "˄": [t: "модификатор верхний наконечник стрелки"] # 0x2c4 - - "˅": [t: "модификатор нижний наконечник стрелки"] # 0x2c5 - - "ˆ": [t: "модификатор циркумфлекс"] # 0x2c6 - - "ˇ": [t: "гачек"] # 0x2c7 - - "ˈ": [t: "модификатор вертикальная линия"] # 0x2c8 - - "ˉ": [t: "модификатор макрон"] # 0x2c9 - - "ˊ": [t: "модификатор акут"] # 0x2ca - - "ˋ": [t: "модификатор гравис"] # 0x2cb - - "ˌ": [t: "модификатор нижняя вертикальная линия"] # 0x2cc - - "ˍ": [t: "модификатор нижний макрон"] # 0x2cd - - "ˎ": [t: "модификатор нижний гравис"] # 0x2ce - - "ˏ": [t: "модификатор нижний акут"] # 0x2cf - - "ː": [t: "модификатор треугольное двоеточие"] # 0x2d0 - - "ˑ": [t: "модификатор половинное треугольное двоеточие"] # 0x2d1 - - "˒": [t: "модификатор центральное правое полукольцо"] # 0x2d2 - - "˓": [t: "модификатор центральное левое полукольцо"] # 0x2d3 - - "˔": [t: "модификатор верхний таск"] # 0x2d4 - - "˕": [t: "модификатор нижний таск"] # 0x2d5 - - "˖": [t: "модификатор знак плюс"] # 0x2d6 - - "˗": [t: "модификатор знак минус"] # 0x2d7 - - "˘": [t: "брэвэ"] # 0x2d8 - - "˙": [t: "точка"] # 0x2d9 - - "˚": [t: "кольцо сверху"] # 0x2da - - "˛": [t: "огонек"] # 0x2db - - "˜": [t: "маленькая тильда"] # 0x2dc - - "˝": [t: "двойной акут"] # 0x2dd - - "˞": [t: "модификатор ротический крюк"] # 0x2de - - "˟": [t: "модификатор крестообразный акцент"] # 0x2df - - "ˠ": [t: "модификатор маленькая гамма"] # 0x2e0 - - "ˡ": [t: "модификатор маленькая l"] # 0x2e1 - - "ˢ": [t: "модификатор маленькая s"] # 0x2e2 - - "ˣ": [t: "модификатор маленькая x"] # 0x2e3 - - "ˤ": [t: "модификатор маленькая обратная гортанная смычка"] # 0x2e4 - - "˥": [t: "модификатор сверхвысокий тон"] # 0x2e5 - - "˦": [t: "модификатор высокий тон"] # 0x2e6 - - "˧": [t: "модификатор средний тон"] # 0x2e7 - - "˨": [t: "модификатор низкий тон"] # 0x2e8 - - "˩": [t: "модификатор сверхнизкий тон"] # 0x2e9 - - "˪": [t: "модификатор знак уходящего тона инь"] # 0x2ea - - "˫": [t: "модификатор знак уходящего тона ян"] # 0x2eb - - "ˬ": [t: "модификатор озвончение"] # 0x2ec - - "˭": [t: "модификатор отсутствие придыхания"] # 0x2ed - - "ˮ": [t: "модификатор двойной апостроф"] # 0x2ee - - "˯": [t: "модификатор нижний левый наконечник стрелки"] # 0x2ef - - "˰": [t: "модификатор нижний правый наконечник стрелки"] # 0x2f0 - - "˱": [t: "модификатор нижний левый наконечник стрелки"] # 0x2f1 - - "˲": [t: "модификатор нижний правый наконечник стрелки"] # 0x2f2 - - "˳": [t: "модификатор нижнее кольцо"] # 0x2f3 - - "˴": [t: "модификатор средний гравис"] # 0x2f4 - - "˵": [t: "модификатор средний двойной гравис"] # 0x2f5 - - "˶": [t: "модификатор средний двойной акут"] # 0x2f6 - - "˷": [t: "модификатор нижняя тильда"] # 0x2f7 - - "˸": [t: "модификатор приподнятое двоеточие"] # 0x2f8 - - "˹": [t: "модификатор начало высокого тона"] # 0x2f9 - - "˺": [t: "модификатор конец высокого тона"] # 0x2fa - - "˻": [t: "модификатор начало низкого тона"] # 0x2fb - - "˼": [t: "модификатор конец низкого тона"] # 0x2fc - - "˽": [t: "модификатор полка"] # 0x2fd - - "˾": [t: "модификатор открытая полка"] # 0x2fe - - "˿": [t: "модификатор нижняя левая стрелка"] # 0x2ff - - "̀": [t: "гравис"] # 0x300 - - "́": [t: "акут"] # 0x301 - - "̂": [t: "циркумфлекс"] # 0x302 - - "̃": [t: "тильда"] # 0x303 - - "̄": [t: "макрон"] # 0x304 - - "̅": [t: "надчеркивание"] # 0x305 - - "̆": [t: "брэвэ"] # 0x306 - - "̇": [t: "точка сверху"] # 0x307 - - "̈": [t: "две точки"] # 0x308 - - "̉": [t: "крюк сверху"] # 0x309 - - "̊": [t: "кольцо сверху"] # 0x30a - - "̋": [t: "двойной акут"] # 0x30b - - "̌": [t: "гачек"] # 0x30c - - "̍": [t: "вертикальная линия сверху"] # 0x30d - - "̎": [t: "двойная вертикальная линия сверху"] # 0x30e - - "̏": [t: "двойной гравис"] # 0x30f - - "̐": [t: "чандрабинду"] # 0x310 - - "̑": [t: "перевёрнутое бреве"] # 0x311 - - "̒": [t: "перевёрнутая запятая сверху"] # 0x312 - - "̓": [t: "запятая сверху"] # 0x313 - - "̔": [t: "обратная запятая сверху"] # 0x314 - - "̕": [t: "запятая сверху справа"] # 0x315 - - "̖": [t: "гравис снизу"] # 0x316 - - "̗": [t: "акут снизу"] # 0x317 - - "̘": [t: "левый таск снизу"] # 0x318 - - "̙": [t: "правый таск снизу"] # 0x319 - - "̚": [t: "левый угол сверху"] # 0x31a - - "̛": [t: "рожок"] # 0x31b - - "̜": [t: "левое полукольцо снизу"] # 0x31c - - "̝": [t: "верхний таск снизу"] # 0x31d - - "̞": [t: "нижний таск снизу"] # 0x31e - - "̟": [t: "знак плюс снизу"] # 0x31f - - "̠": [t: "знак минус снизу"] # 0x320 - - "̡": [t: "палатализованный крюк снизу"] # 0x321 - - "̢": [t: "ретрофлексный крюк снизу"] # 0x322 - - "̣": [t: "точка снизу"] # 0x323 - - "̤": [t: "диерезис снизу"] # 0x324 - - "̥": [t: "кольцо снизу"] # 0x325 - - "̦": [t: "запятая снизу"] # 0x326 - - "̧": [t: "седиль"] # 0x327 - - "̨": [t: "огонек"] # 0x328 - - "̩": [t: "вертикальная линия снизу"] # 0x329 - - "̪": [t: "мостик снизу"] # 0x32a - - "̫": [t: "перевёрнутая двойная дуга снизу"] # 0x32b - - "̬": [t: "гачек снизу"] # 0x32c - - "̭": [t: "циркумфлекс снизу"] # 0x32d - - "̮": [t: "бреве снизу"] # 0x32e - - "̯": [t: "перевёрнутое бреве снизу"] # 0x32f - - "̰": [t: "тильда снизу"] # 0x330 - - "̱": [t: "макрон снизу"] # 0x331 - - "̲": [t: "нижнее подчёркивание"] # 0x332 - - "̳": [t: "двойное нижнее подчёркивание"] # 0x333 - - "̴": [t: "тильда поверх"] # 0x334 - - "̵": [t: "короткий штрих поверх"] # 0x335 - - "̶": [t: "длинный штрих поверх"] # 0x336 - - "̷": [t: "короткая косая черта поверх"] # 0x337 - - "̸": [t: "длинная косая черта поверх"] # 0x338 - - "̹": [t: "правое полукольцо снизу"] # 0x339 - - "̺": [t: "перевёрнутый мостик снизу"] # 0x33a - - "̻": [t: "квадрат снизу"] # 0x33b - - "̼": [t: "чайка снизу"] # 0x33c - - "̽": [t: "x сверху"] # 0x33d - - "̾": [t: "вертикальная тильда"] # 0x33e - - "̿": [t: "двойное надчёркивание"] # 0x33f - - "̀": [t: "знак тона гравис"] # 0x340 - - "́": [t: "знак тона акут"] # 0x341 - - "͆": [t: "мостик сверху"] # 0x346 + - T: "модификатор: маленькая перевёрнутая заглавная эр" + + - "ʷ": [T: "модификатор маленькая w"] # 0x2b7 + - "ʸ": [T: "модификатор маленькая y"] # 0x2b8 + - "ʹ": [T: "модификатор штрих"] # 0x2b9 + - "ʺ": [T: "модификатор двойной штрих"] # 0x2ba + - "ʻ": [T: "модификатор перевёрнутая запятая"] # 0x2bb + - "ʼ": [T: "модификатор апостроф"] # 0x2bc + - "ʽ": [T: "модификатор обратная запятая"] # 0x2bd + - "ʾ": [T: "модификатор правое полукольцо"] # 0x2be + - "ʿ": [T: "модификатор левое полукольцо"] # 0x2bf + - "ˀ": [T: "модификатор гортанная смычка"] # 0x2c0 + - "ˁ": [T: "модификатор обратная гортанная смычка"] # 0x2c1 + - "˂": [T: "модификатор левый наконечник стрелки"] # 0x2c2 + - "˃": [T: "модификатор правый наконечник стрелки"] # 0x2c3 + - "˄": [T: "модификатор верхний наконечник стрелки"] # 0x2c4 + - "˅": [T: "модификатор нижний наконечник стрелки"] # 0x2c5 + - "ˆ": [T: "модификатор циркумфлекс"] # 0x2c6 + - "ˇ": [T: "гачек"] # 0x2c7 + - "ˈ": [T: "модификатор вертикальная линия"] # 0x2c8 + - "ˉ": [T: "модификатор макрон"] # 0x2c9 + - "ˊ": [T: "модификатор акут"] # 0x2ca + - "ˋ": [T: "модификатор гравис"] # 0x2cb + - "ˌ": [T: "модификатор нижняя вертикальная линия"] # 0x2cc + - "ˍ": [T: "модификатор нижний макрон"] # 0x2cd + - "ˎ": [T: "модификатор нижний гравис"] # 0x2ce + - "ˏ": [T: "модификатор нижний акут"] # 0x2cf + - "ː": [T: "модификатор треугольное двоеточие"] # 0x2d0 + - "ˑ": [T: "модификатор половинное треугольное двоеточие"] # 0x2d1 + - "˒": [T: "модификатор центральное правое полукольцо"] # 0x2d2 + - "˓": [T: "модификатор центральное левое полукольцо"] # 0x2d3 + - "˔": [T: "модификатор верхний таск"] # 0x2d4 + - "˕": [T: "модификатор нижний таск"] # 0x2d5 + - "˖": [T: "модификатор знак плюс"] # 0x2d6 + - "˗": [T: "модификатор знак минус"] # 0x2d7 + - "˘": [T: "брэвэ"] # 0x2d8 + - "˙": [T: "точка"] # 0x2d9 + - "˚": [T: "кольцо сверху"] # 0x2da + - "˛": [T: "огонек"] # 0x2db + - "˜": [T: "маленькая тильда"] # 0x2dc + - "˝": [T: "двойной акут"] # 0x2dd + - "˞": [T: "модификатор ротический крюк"] # 0x2de + - "˟": [T: "модификатор крестообразный акцент"] # 0x2df + - "ˠ": [T: "модификатор маленькая гамма"] # 0x2e0 + - "ˡ": [T: "модификатор маленькая l"] # 0x2e1 + - "ˢ": [T: "модификатор маленькая s"] # 0x2e2 + - "ˣ": [T: "модификатор маленькая x"] # 0x2e3 + - "ˤ": [T: "модификатор маленькая обратная гортанная смычка"] # 0x2e4 + - "˥": [T: "модификатор сверхвысокий тон"] # 0x2e5 + - "˦": [T: "модификатор высокий тон"] # 0x2e6 + - "˧": [T: "модификатор средний тон"] # 0x2e7 + - "˨": [T: "модификатор низкий тон"] # 0x2e8 + - "˩": [T: "модификатор сверхнизкий тон"] # 0x2e9 + - "˪": [T: "модификатор знак уходящего тона инь"] # 0x2ea + - "˫": [T: "модификатор знак уходящего тона ян"] # 0x2eb + - "ˬ": [T: "модификатор озвончение"] # 0x2ec + - "˭": [T: "модификатор отсутствие придыхания"] # 0x2ed + - "ˮ": [T: "модификатор двойной апостроф"] # 0x2ee + - "˯": [T: "модификатор нижний левый наконечник стрелки"] # 0x2ef + - "˰": [T: "модификатор нижний правый наконечник стрелки"] # 0x2f0 + - "˱": [T: "модификатор нижний левый наконечник стрелки"] # 0x2f1 + - "˲": [T: "модификатор нижний правый наконечник стрелки"] # 0x2f2 + - "˳": [T: "модификатор нижнее кольцо"] # 0x2f3 + - "˴": [T: "модификатор средний гравис"] # 0x2f4 + - "˵": [T: "модификатор средний двойной гравис"] # 0x2f5 + - "˶": [T: "модификатор средний двойной акут"] # 0x2f6 + - "˷": [T: "модификатор нижняя тильда"] # 0x2f7 + - "˸": [T: "модификатор приподнятое двоеточие"] # 0x2f8 + - "˹": [T: "модификатор начало высокого тона"] # 0x2f9 + - "˺": [T: "модификатор конец высокого тона"] # 0x2fa + - "˻": [T: "модификатор начало низкого тона"] # 0x2fb + - "˼": [T: "модификатор конец низкого тона"] # 0x2fc + - "˽": [T: "модификатор полка"] # 0x2fd + - "˾": [T: "модификатор открытая полка"] # 0x2fe + - "˿": [T: "модификатор нижняя левая стрелка"] # 0x2ff + - "̀": [T: "гравис"] # 0x300 + - "́": [T: "акут"] # 0x301 + - "̂": [T: "циркумфлекс"] # 0x302 + - "̃": [T: "тильда"] # 0x303 + - "̄": [T: "макрон"] # 0x304 + - "̅": [T: "надчеркивание"] # 0x305 + - "̆": [T: "брэвэ"] # 0x306 + - "̇": [T: "точка сверху"] # 0x307 + - "̈": [T: "две точки"] # 0x308 + - "̉": [T: "крюк сверху"] # 0x309 + - "̊": [T: "кольцо сверху"] # 0x30a + - "̋": [T: "двойной акут"] # 0x30b + - "̌": [T: "гачек"] # 0x30c + - "̍": [T: "вертикальная линия сверху"] # 0x30d + - "̎": [T: "двойная вертикальная линия сверху"] # 0x30e + - "̏": [T: "двойной гравис"] # 0x30f + - "̐": [T: "чандрабинду"] # 0x310 + - "̑": [T: "перевёрнутое бреве"] # 0x311 + - "̒": [T: "перевёрнутая запятая сверху"] # 0x312 + - "̓": [T: "запятая сверху"] # 0x313 + - "̔": [T: "обратная запятая сверху"] # 0x314 + - "̕": [T: "запятая сверху справа"] # 0x315 + - "̖": [T: "гравис снизу"] # 0x316 + - "̗": [T: "акут снизу"] # 0x317 + - "̘": [T: "левый таск снизу"] # 0x318 + - "̙": [T: "правый таск снизу"] # 0x319 + - "̚": [T: "левый угол сверху"] # 0x31a + - "̛": [T: "рожок"] # 0x31b + - "̜": [T: "левое полукольцо снизу"] # 0x31c + - "̝": [T: "верхний таск снизу"] # 0x31d + - "̞": [T: "нижний таск снизу"] # 0x31e + - "̟": [T: "знак плюс снизу"] # 0x31f + - "̠": [T: "знак минус снизу"] # 0x320 + - "̡": [T: "палатализованный крюк снизу"] # 0x321 + - "̢": [T: "ретрофлексный крюк снизу"] # 0x322 + - "̣": [T: "точка снизу"] # 0x323 + - "̤": [T: "диерезис снизу"] # 0x324 + - "̥": [T: "кольцо снизу"] # 0x325 + - "̦": [T: "запятая снизу"] # 0x326 + - "̧": [T: "седиль"] # 0x327 + - "̨": [T: "огонек"] # 0x328 + - "̩": [T: "вертикальная линия снизу"] # 0x329 + - "̪": [T: "мостик снизу"] # 0x32a + - "̫": [T: "перевёрнутая двойная дуга снизу"] # 0x32b + - "̬": [T: "гачек снизу"] # 0x32c + - "̭": [T: "циркумфлекс снизу"] # 0x32d + - "̮": [T: "бреве снизу"] # 0x32e + - "̯": [T: "перевёрнутое бреве снизу"] # 0x32f + - "̰": [T: "тильда снизу"] # 0x330 + - "̱": [T: "макрон снизу"] # 0x331 + - "̲": [T: "нижнее подчёркивание"] # 0x332 + - "̳": [T: "двойное нижнее подчёркивание"] # 0x333 + - "̴": [T: "тильда поверх"] # 0x334 + - "̵": [T: "короткий штрих поверх"] # 0x335 + - "̶": [T: "длинный штрих поверх"] # 0x336 + - "̷": [T: "короткая косая черта поверх"] # 0x337 + - "̸": [T: "длинная косая черта поверх"] # 0x338 + - "̹": [T: "правое полукольцо снизу"] # 0x339 + - "̺": [T: "перевёрнутый мостик снизу"] # 0x33a + - "̻": [T: "квадрат снизу"] # 0x33b + - "̼": [T: "чайка снизу"] # 0x33c + - "̽": [T: "x сверху"] # 0x33d + - "̾": [T: "вертикальная тильда"] # 0x33e + - "̿": [T: "двойное надчёркивание"] # 0x33f + - "̀": [T: "знак тона гравис"] # 0x340 + - "́": [T: "знак тона акут"] # 0x341 + - "͆": [T: "мостик сверху"] # 0x346 - "ΪΫϏ": # 0x3aa, 0x3ab, 0x3cf - test: @@ -205,29 +204,31 @@ if: "$SpeechOverrides_CapitalLetters = ''" then_test: if: "$Impairment = 'Blindness'" - then: [t: "заглавная"] + then: [T: "заглавная"] else: [x: "$SpeechOverrides_CapitalLetters"] - pitch: value: "$CapitalLetters_Pitch" - replace: [spell: "translate('.', 'ΪΫϏ', 'ιυϗ')"] - - t: "с диалитикой" - - "ϊ": [t: "йота с диалитикой"] # 0x3ca - - "ϋ": [t: "ипсилон с диалитикой"] # 0x3cb - - "ό": [t: "омикрон с тоносом"] # 0x3cc - - "ύ": [t: "ипсилон с тоносом"] # 0x3cd - - "ώ": [t: "омега с тоносом"] # 0x3ce - - "ϐ": [t: "бета"] # 0x3d0 - - "ϑ": [t: "тета"] # 0x3d1 - - "ϒ": [t: "ипсилон с крюком"] # 0x3d2 - - "ϓ": [t: "ипсилон с акутом и крюком"] # 0x3d3 - - "ϔ": [t: "ипсилон с диерезисом и крюком"] # 0x3d4 - - "ϕ": [t: "фи"] # 0x3d5 - - "ϖ": [t: "пи"] # 0x3d6 - - "ϗ": [t: "кай"] # 0x3d7 - - "Ϙ": [t: "заглавная архаическая коппа"] # 0x3d8 - - "ϙ": [t: "архаическая коппа"] # 0x3d9 - - "ϵ": [t: "эпсилон"] # 0x3f5 - - "϶": [t: "обратный эпсилон"] # 0x3f6 + replace: [SPELL: "translate('.', 'ΪΫϏ', 'ιυϗ')"] + - test: + if: "'.' != 'Ϗ'" + then: [T: "с диалитикой"] + - "ϊ": [T: "йота с диалитикой"] # 0x3ca + - "ϋ": [T: "ипсилон с диалитикой"] # 0x3cb + - "ό": [T: "омикрон с тоносом"] # 0x3cc + - "ύ": [T: "ипсилон с тоносом"] # 0x3cd + - "ώ": [T: "омега с тоносом"] # 0x3ce + - "ϐ": [T: "бета"] # 0x3d0 + - "ϑ": [T: "тета"] # 0x3d1 + - "ϒ": [T: "ипсилон с крюком"] # 0x3d2 + - "ϓ": [T: "ипсилон с акутом и крюком"] # 0x3d3 + - "ϔ": [T: "ипсилон с диерезисом и крюком"] # 0x3d4 + - "ϕ": [T: "фи"] # 0x3d5 + - "ϖ": [T: "пи"] # 0x3d6 + - "ϗ": [T: "кай"] # 0x3d7 + - "Ϙ": [T: "заглавная архаическая коппа"] # 0x3d8 + - "ϙ": [T: "архаическая коппа"] # 0x3d9 + - "ϵ": [T: "эпсилон"] # 0x3f5 + - "϶": [T: "обратный эпсилон"] # 0x3f6 - "А-Я": # 0x410 - 0x42f - test: if: "$CapitalLetters_Beep" @@ -241,63 +242,63 @@ if: "$SpeechOverrides_CapitalLetters = ''" then_test: if: "$Impairment = 'Blindness'" - then: [t: "заглавная"] + then: [x: "IfThenElse(contains('ЪЬ', '.'), 'заглавный', 'заглавная')"] else: [x: "$SpeechOverrides_CapitalLetters"] - pitch: value: "$CapitalLetters_Pitch" - replace: [spell: "translate('.', 'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ', 'абвгдежзийклмнопрстуфхцчшщъыьэюя')"] - - "а": [t: "а"] # 0x430 - - "б": [t: "бэ"] # 0x431 - - "в": [t: "вэ"] # 0x432 - - "г": [t: "гэ"] # 0x433 - - "д": [t: "дэ"] # 0x434 - - "е": [t: "е"] # 0x435 - - "ж": [t: "жэ"] # 0x436 - - "з": [t: "зэ"] # 0x437 - - "и": [t: "и"] # 0x438 - - "й": [t: "и краткое"] # 0x439 - - "к": [t: "ка"] # 0x43a - - "л": [t: "эль"] # 0x43b - - "м": [t: "эм"] # 0x43c - - "н": [t: "эн"] # 0x43d - - "о": [t: "о"] # 0x43e - - "п": [t: "пэ"] # 0x43f - - "р": [t: "эр"] # 0x440 - - "с": [t: "эс"] # 0x441 - - "т": [t: "тэ"] # 0x442 - - "у": [t: "у"] # 0x443 - - "ф": [t: "эф"] # 0x444 - - "х": [t: "ха"] # 0x445 - - "ц": [t: "цэ"] # 0x446 - - "ч": [t: "чэ"] # 0x447 - - "ш": [t: "ша"] # 0x448 - - "щ": [t: "ща"] # 0x449 - - "ъ": [t: "твёрдый знак"] # 0x44a - - "ы": [t: "ы"] # 0x44b - - "ь": [t: "мягкий знак"] # 0x44c - - "э": [t: "э"] # 0x44d - - "ю": [t: "ю"] # 0x44e - - "я": [t: "я"] # 0x44f - - "؆": [t: "арабско-индийский кубический корень"] # 0x606 - - "؇": [t: "арабско-индийский корень четвёртой степени"] # 0x607 - - "؈": [t: "арабский луч"] # 0x608 - - "‐": [t: "дефис"] # 0x2010 - - "‑": [t: "дефис"] # 0x2011 - - "‒": [t: "цифровое тире"] # 0x2012 - - "–": [t: "короткое тире"] # 0x2013 - - "—": [t: "длинное тире"] # 0x2014 - - "―": [t: "горизонтальная черта"] # 0x2015 - - "‖": [t: "двойная вертикальная линия"] # 0x2016 - - "†": [t: "крестик"] # 0x2020 - - "‡": [t: "двойной крестик"] # 0x2021 - - - " - ": [t: " "] # 0x2000 - 0x2007 + replace: [SPELL: "translate('.', 'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ', 'абвгдежзийклмнопрстуфхцчшщъыьэюя')"] + - "а": [T: "а"] # 0x430 + - "б": [T: "бэ"] # 0x431 + - "в": [T: "вэ"] # 0x432 + - "г": [T: "гэ"] # 0x433 + - "д": [T: "дэ"] # 0x434 + - "е": [T: "е"] # 0x435 + - "ж": [T: "жэ"] # 0x436 + - "з": [T: "зэ"] # 0x437 + - "и": [T: "и"] # 0x438 + - "й": [T: "и краткое"] # 0x439 + - "к": [T: "ка"] # 0x43a + - "л": [T: "эль"] # 0x43b + - "м": [T: "эм"] # 0x43c + - "н": [T: "эн"] # 0x43d + - "о": [T: "о"] # 0x43e + - "п": [T: "пэ"] # 0x43f + - "р": [T: "эр"] # 0x440 + - "с": [T: "эс"] # 0x441 + - "т": [T: "тэ"] # 0x442 + - "у": [T: "у"] # 0x443 + - "ф": [T: "эф"] # 0x444 + - "х": [T: "ха"] # 0x445 + - "ц": [T: "цэ"] # 0x446 + - "ч": [T: "чэ"] # 0x447 + - "ш": [T: "ша"] # 0x448 + - "щ": [T: "ща"] # 0x449 + - "ъ": [T: "твёрдый знак"] # 0x44a + - "ы": [T: "ы"] # 0x44b + - "ь": [T: "мягкий знак"] # 0x44c + - "э": [T: "э"] # 0x44d + - "ю": [T: "ю"] # 0x44e + - "я": [T: "я"] # 0x44f + - "؆": [T: "арабско-индийский кубический корень"] # 0x606 + - "؇": [T: "арабско-индийский корень четвёртой степени"] # 0x607 + - "؈": [T: "арабский луч"] # 0x608 + - "‐": [T: "дефис"] # 0x2010 + - "‑": [T: "дефис"] # 0x2011 + - "‒": [T: "цифровое тире"] # 0x2012 + - "–": [T: "короткое тире"] # 0x2013 + - "—": [T: "длинное тире"] # 0x2014 + - "―": [T: "горизонтальная черта"] # 0x2015 + - "‖": [T: "двойная вертикальная линия"] # 0x2016 + - "†": [T: "крестик"] # 0x2020 + - "‡": [T: "двойной крестик"] # 0x2021 + + - " - ": [T: " "] # 0x2000 - 0x2007 - "•": # 0x2022 - test: if: "@data-chem-formula-op" - then: [t: "точка"] - else: [t: "буллит"] + then: [T: "точка"] + else: [T: "буллит"] - "…": # 0x2026 test: @@ -306,2953 +307,2939 @@ # must be ClearSpeak and $ClearSpeak_Ellipses = 'AndSoOn' # speak '…' as 'and so on...' unless expr starts with '…' - "../*[1][.='…']" - then: [t: "точка точка точка"] + then: [T: "точка точка точка"] else_test: # must have $ClearSpeak_Ellipses = 'AndSoOn' if: "count(following-sibling::*) = 0" - then: [t: "и так далее"] - else: [t: "и так далее вплоть до"] - - - "‰": [t: "промилле"] # 0x2030 - - "‱": [t: "на десять тысяч"] # 0x2031 - - "′": [t: "штрих"] # 0x2032 - - "″": [t: "двойной штрих"] # 0x2033 - - "‴": [t: "тройной штрих"] # 0x2034 - - "‵": [t: "обратный штрих"] # 0x2035 - - "‶": [t: "обратный двойной штрих"] # 0x2036 - - "‷": [t: "обратный тройной штрих"] # 0x2037 - - "‸": [t: "в степени"] # 0x2038 - - "‹": [t: "одинарная левая угловая кавычка"] # 0x2039 - - "›": [t: "одинарная правая угловая кавычка"] # 0x203a + then: [T: "и так далее"] + else: [T: "и так далее вплоть до"] + + - "‰": [T: "промилле"] # 0x2030 + - "‱": [T: "на десять тысяч"] # 0x2031 + - "′": [T: "штрих"] # 0x2032 + - "″": [T: "двойной штрих"] # 0x2033 + - "‴": [T: "тройной штрих"] # 0x2034 + - "‵": [T: "обратный штрих"] # 0x2035 + - "‶": [T: "обратный двойной штрих"] # 0x2036 + - "‷": [T: "обратный тройной штрих"] # 0x2037 + - "‸": [T: "в степени"] # 0x2038 + - "‹": [T: "одинарная левая угловая кавычка"] # 0x2039 + - "›": [T: "одинарная правая угловая кавычка"] # 0x203a - "‼": # 0x203c - test: if: "ancestor-or-self::*[contains(@data-intent-property, ':literal:')]" - then: [t: "двойной восклицательный знак"] # 0x203c - else: [t: "двойной факториал"] # 0x203c + then: [T: "двойной восклицательный знак"] # 0x203c + else: [T: "двойной факториал"] # 0x203c - "⁄": # 0x2044 - test: if: "ancestor-or-self::*[contains(@data-intent-property, ':literal:')]" - then: [t: "крупная косая черта"] # 0x203c - else: [t: "разделить на"] # 0x203c - - "⁅": [t: "левая квадратная скобка с пером"] # 0x2045 - - "⁆": [t: "правая квадратная скобка с пером"] # 0x2046 - - "※": [t: "знак ссылки"] # 0x203b - - "‿": [t: "нижняя лигатура"] # 0x203F - - "⁀": [t: "лигатура"] # 0x2040 - - "⁎": [t: "нижняя звёздочка"] # 0x204e - - "⁏": [t: "обратная точка с запятой"] # 0x204f - - "⁐": [t: "закрыть вплотную"] # 0x2050 - - "⁑": [t: "две вертикальные звёздочки"] # 0x2051 - - "⁒": [t: "коммерческий минус"] # 0x2052 - - "⁗": [t: "четверной штрих"] # 0x2057 - - "⁠": [t: ""] # 0x2060 - - "⁰": [t: "в нулевой степени"] # 0x2070 - - "ⁱ": [t: "в степени i"] # 0x2071 - - "⁴": [t: "в четвёртой степени"] # 0x2074 - - "⁵": [t: "в пятой степени"] # 0x2075 - - "⁶": [t: "в шестой степени"] # 0x2076 - - "⁷": [t: "в седьмой степени"] # 0x2077 - - "⁸": [t: "в восьмой степени"] # 0x2078 - - "⁹": [t: "в девятой степени"] # 0x2079 - - "⁺": [t: "верхний индекс плюс"] # 0x207a - - "⁻": [t: "верхний индекс минус"] # 0x207b - - "⁼": [t: "верхний индекс знак равенства"] # 0x207c - - "⁽": [t: "верхний индекс левая скобка"] # 0x207d - - "⁾": [t: "верхний индекс правая скобка"] # 0x207e - - "ⁿ": [t: "в энной степени"] # 0x207f - - "₀": [t: "нижний индекс ноль"] # 0x2080 - - "₁": [t: "нижний индекс один"] # 0x2081 - - "₂": [t: "нижний индекс два"] # 0x2082 - - "₃": [t: "нижний индекс три"] # 0x2083 - - "₄": [t: "нижний индекс четыре"] # 0x2084 - - "₅": [t: "нижний индекс пять"] # 0x2085 - - "₆": [t: "нижний индекс шесть"] # 0x2086 - - "₇": [t: "нижний индекс семь"] # 0x2087 - - "₈": [t: "нижний индекс восемь"] # 0x2088 - - "₉": [t: "нижний индекс девять"] # 0x2089 - - "₊": [t: "нижний индекс плюс"] # 0x208a - - "₋": [t: "нижний индекс минус"] # 0x208b - - "₌": [t: "нижний индекс знак равенства"] # 0x208c - - "₍": [t: "нижний индекс левая скобка"] # 0x208d - - "₎": [t: "нижний индекс правая скобка"] # 0x208e - - "ₐ": [t: "нижний индекс A"] # 0x2090 - - "ₑ": [t: "нижний индекс E"] # 0x2091 - - "ₒ": [t: "нижний индекс O"] # 0x2092 - - "ₓ": [t: "нижний индекс X"] # 0x2093 - - "ₕ": [t: "нижний индекс H"] # 0x2095 - - "ₖ": [t: "нижний индекс K"] # 0x2096 - - "ₗ": [t: "нижний индекс L"] # 0x2097 - - "ₘ": [t: "нижний индекс M"] # 0x2098 - - "ₙ": [t: "нижний индекс N"] # 0x2099 - - "ₚ": [t: "нижний индекс P"] # 0x209a - - "ₛ": [t: "нижний индекс S"] # 0x209b - - "ₜ": [t: "нижний индекс T"] # 0x209c - - "₠": [t: "евро для расчётов"] # 0x20a0 - - "₡": [t: "колоны"] # 0x20a1 - - "₢": [t: "крузейро"] # 0x20a2 - - "₣": [t: "франк"] # 0x20a3 - - "₤": [t: "лира"] # 0x20a4 - - "₥": [t: "милль"] # 0x20a5 - - "₦": [t: "найра"] # 0x20a6 - - "₧": [t: "песета"] # 0x20a7 - - "₨": [t: "рупии"] # 0x20a8 - - "₩": [t: "вона"] # 0x20a9 - - "₪": [t: "новый шекель"] # 0x20aa - - "₫": [t: "донг"] # 0x20ab - - "€": [t: "евро"] # 0x20ac - - "₭": [t: "кип"] # 0x20ad - - "₮": [t: "тугрик"] # 0x20ae - - "₯": [t: "драхма"] # 0x20af - - "₰": [t: "немецкий пфенниг"] # 0x20b0 - - "₱": [t: "песо"] # 0x20b1 - - "₲": [t: "гуарани"] # 0x20b2 - - "₳": [t: "аустраль"] # 0x20b3 - - "₴": [t: "гривна"] # 0x20b4 - - "₵": [t: "седи"] # 0x20b5 - - "₶": [t: "ливр турнуа"] # 0x20b6 - - "₷": [t: "спесмило"] # 0x20b7 - - "₸": [t: "тенге"] # 0x20b8 - - "₹": [t: "индийская рупия"] # 0x20b9 - - "₺": [t: "турецкая лира"] # 0x20ba - - "⃐": [t: "левый гарпун сверху"] # 0x20d0 - - "⃑": [t: "правый гарпун сверху"] # 0x20d1 - - "⃒": [t: "длинная вертикальная линия поверх"] # 0x20d2 - - "⃓": [t: "короткая вертикальная линия поверх"] # 0x20d3 - - "⃔": [t: "стрелка против часовой стрелки сверху"] # 0x20d4 - - "⃕": [t: "стрелка по часовой стрелке сверху"] # 0x20d5 - - "⃖": [t: "стрелка влево сверху"] # 0x20d6 - - "⃗": [t: "стрелка вправо сверху"] # 0x20d7 - - "⃘": [t: "кольцо поверх"] # 0x20d8 - - "⃙": [t: "кольцо по часовой стрелке поверх"] # 0x20d9 - - "⃚": [t: "кольцо против часовой стрелки поверх"] # 0x20da - - "⃛": [t: "три точки"] # 0x20db - - "⃜": [t: "четыре точки"] # 0x20dc - - "⃝": [t: "обводящий круг"] # 0x20dd - - "⃞": [t: "обводящий квадрат"] # 0x20de - - "⃟": [t: "обводящий ромб"] # 0x20df - - "⃠": [t: "обводящий круг с обратной косой чертой"] # 0x20e0 - - "⃡": [t: "стрелка влево-вправо сверху"] # 0x20e1 - - "⃢": [t: "обводящий экран"] # 0x20e2 - - "⃣": [t: "обводящая клавиша"] # 0x20e3 - - "⃤": [t: "обводящий треугольник остриём вверх"] # 0x20e4 - - "⃥": [t: "обратная косая черта поверх"] # 0x20e5 - - "⃦": [t: "двойной вертикальный штрих"] # 0x20e6 - - "⃧": [t: "символ аннуитета"] # 0x20e7 - - "⃨": [t: "тройная нижняя точка"] # 0x20e8 - - "⃩": [t: "широкий мостик сверху"] # 0x20e9 - - "⃪": [t: "стрелка влево поверх"] # 0x20ea - - "⃫": [t: "длинная двойная косая черта поверх"] # 0x20eb - - "⃬": [t: "правый гарпун с бородкой вниз"] # 0x20ec - - "⃭": [t: "левый гарпун с бородкой вниз"] # 0x20ed - - "⃮": [t: "стрелка влево снизу"] # 0x20ee - - "⃯": [t: "стрелка вправо снизу"] # 0x20ef - - "⃰": [t: "звёздочка сверху"] # 0x20f0 - - "℄": [t: "символ центральной линии"] # 0x2104 - - "℅": [t: "для передачи"] # 0x2105 - - "℆": [t: "каждая"] # 0x2106 - - "ℇ": [t: "постоянная Эйлера"] # 0x2107 - - "℈": [t: "скрупулы"] # 0x2108 - - "℉": [t: "градусы Фаренгейта"] # 0x2109 - - "ℊ": [t: "рукописная g"] # 0x210a + then: [T: "крупная косая черта"] # 0x203c + else: [T: "разделить на"] # 0x203c + - "⁅": [T: "левая квадратная скобка с пером"] # 0x2045 + - "⁆": [T: "правая квадратная скобка с пером"] # 0x2046 + - "※": [T: "знак ссылки"] # 0x203b + - "‿": [T: "нижняя лигатура"] # 0x203F + - "⁀": [T: "лигатура"] # 0x2040 + - "⁎": [T: "нижняя звёздочка"] # 0x204e + - "⁏": [T: "обратная точка с запятой"] # 0x204f + - "⁐": [T: "закрыть вплотную"] # 0x2050 + - "⁑": [T: "две вертикальные звёздочки"] # 0x2051 + - "⁒": [T: "коммерческий минус"] # 0x2052 + - "⁗": [T: "четверной штрих"] # 0x2057 + - "⁠": [T: ""] # 0x2060 + - "⁰": [T: "в нулевой степени"] # 0x2070 + - "ⁱ": [T: "в степени i"] # 0x2071 + - "⁴": [T: "в четвёртой степени"] # 0x2074 + - "⁵": [T: "в пятой степени"] # 0x2075 + - "⁶": [T: "в шестой степени"] # 0x2076 + - "⁷": [T: "в седьмой степени"] # 0x2077 + - "⁸": [T: "в восьмой степени"] # 0x2078 + - "⁹": [T: "в девятой степени"] # 0x2079 + - "⁺": [T: "верхний индекс плюс"] # 0x207a + - "⁻": [T: "верхний индекс минус"] # 0x207b + - "⁼": [T: "верхний индекс знак равенства"] # 0x207c + - "⁽": [T: "верхний индекс левая скобка"] # 0x207d + - "⁾": [T: "верхний индекс правая скобка"] # 0x207e + - "ⁿ": [T: "в энной степени"] # 0x207f + - "₀": [T: "нижний индекс ноль"] # 0x2080 + - "₁": [T: "нижний индекс один"] # 0x2081 + - "₂": [T: "нижний индекс два"] # 0x2082 + - "₃": [T: "нижний индекс три"] # 0x2083 + - "₄": [T: "нижний индекс четыре"] # 0x2084 + - "₅": [T: "нижний индекс пять"] # 0x2085 + - "₆": [T: "нижний индекс шесть"] # 0x2086 + - "₇": [T: "нижний индекс семь"] # 0x2087 + - "₈": [T: "нижний индекс восемь"] # 0x2088 + - "₉": [T: "нижний индекс девять"] # 0x2089 + - "₊": [T: "нижний индекс плюс"] # 0x208a + - "₋": [T: "нижний индекс минус"] # 0x208b + - "₌": [T: "нижний индекс знак равенства"] # 0x208c + - "₍": [T: "нижний индекс левая скобка"] # 0x208d + - "₎": [T: "нижний индекс правая скобка"] # 0x208e + - "ₐ": [T: "нижний индекс A"] # 0x2090 + - "ₑ": [T: "нижний индекс E"] # 0x2091 + - "ₒ": [T: "нижний индекс O"] # 0x2092 + - "ₓ": [T: "нижний индекс X"] # 0x2093 + - "ₕ": [T: "нижний индекс H"] # 0x2095 + - "ₖ": [T: "нижний индекс K"] # 0x2096 + - "ₗ": [T: "нижний индекс L"] # 0x2097 + - "ₘ": [T: "нижний индекс M"] # 0x2098 + - "ₙ": [T: "нижний индекс N"] # 0x2099 + - "ₚ": [T: "нижний индекс P"] # 0x209a + - "ₛ": [T: "нижний индекс S"] # 0x209b + - "ₜ": [T: "нижний индекс T"] # 0x209c + - "₠": [T: "евро для расчётов"] # 0x20a0 + - "₡": [T: "колоны"] # 0x20a1 + - "₢": [T: "крузейро"] # 0x20a2 + - "₣": [T: "франк"] # 0x20a3 + - "₤": [T: "лира"] # 0x20a4 + - "₥": [T: "милль"] # 0x20a5 + - "₦": [T: "найра"] # 0x20a6 + - "₧": [T: "песета"] # 0x20a7 + - "₨": [T: "рупии"] # 0x20a8 + - "₩": [T: "вона"] # 0x20a9 + - "₪": [T: "новый шекель"] # 0x20aa + - "₫": [T: "донг"] # 0x20ab + - "€": [T: "евро"] # 0x20ac + - "₭": [T: "кип"] # 0x20ad + - "₮": [T: "тугрик"] # 0x20ae + - "₯": [T: "драхма"] # 0x20af + - "₰": [T: "немецкий пфенниг"] # 0x20b0 + - "₱": [T: "песо"] # 0x20b1 + - "₲": [T: "гуарани"] # 0x20b2 + - "₳": [T: "аустраль"] # 0x20b3 + - "₴": [T: "гривна"] # 0x20b4 + - "₵": [T: "седи"] # 0x20b5 + - "₶": [T: "ливр турнуа"] # 0x20b6 + - "₷": [T: "спесмило"] # 0x20b7 + - "₸": [T: "тенге"] # 0x20b8 + - "₹": [T: "индийская рупия"] # 0x20b9 + - "₺": [T: "турецкая лира"] # 0x20ba + - "⃐": [T: "левый гарпун сверху"] # 0x20d0 + - "⃑": [T: "правый гарпун сверху"] # 0x20d1 + - "⃒": [T: "длинная вертикальная линия поверх"] # 0x20d2 + - "⃓": [T: "короткая вертикальная линия поверх"] # 0x20d3 + - "⃔": [T: "стрелка против часовой стрелки сверху"] # 0x20d4 + - "⃕": [T: "стрелка по часовой стрелке сверху"] # 0x20d5 + - "⃖": [T: "стрелка влево сверху"] # 0x20d6 + - "⃗": [T: "стрелка вправо сверху"] # 0x20d7 + - "⃘": [T: "кольцо поверх"] # 0x20d8 + - "⃙": [T: "кольцо по часовой стрелке поверх"] # 0x20d9 + - "⃚": [T: "кольцо против часовой стрелки поверх"] # 0x20da + - "⃛": [T: "три точки"] # 0x20db + - "⃜": [T: "четыре точки"] # 0x20dc + - "⃝": [T: "обводящий круг"] # 0x20dd + - "⃞": [T: "обводящий квадрат"] # 0x20de + - "⃟": [T: "обводящий ромб"] # 0x20df + - "⃠": [T: "обводящий круг с обратной косой чертой"] # 0x20e0 + - "⃡": [T: "стрелка влево-вправо сверху"] # 0x20e1 + - "⃢": [T: "обводящий экран"] # 0x20e2 + - "⃣": [T: "обводящая клавиша"] # 0x20e3 + - "⃤": [T: "обводящий треугольник остриём вверх"] # 0x20e4 + - "⃥": [T: "обратная косая черта поверх"] # 0x20e5 + - "⃦": [T: "двойной вертикальный штрих"] # 0x20e6 + - "⃧": [T: "символ аннуитета"] # 0x20e7 + - "⃨": [T: "тройная нижняя точка"] # 0x20e8 + - "⃩": [T: "широкий мостик сверху"] # 0x20e9 + - "⃪": [T: "стрелка влево поверх"] # 0x20ea + - "⃫": [T: "длинная двойная косая черта поверх"] # 0x20eb + - "⃬": [T: "правый гарпун с бородкой вниз"] # 0x20ec + - "⃭": [T: "левый гарпун с бородкой вниз"] # 0x20ed + - "⃮": [T: "стрелка влево снизу"] # 0x20ee + - "⃯": [T: "стрелка вправо снизу"] # 0x20ef + - "⃰": [T: "звёздочка сверху"] # 0x20f0 + - "℄": [T: "символ центральной линии"] # 0x2104 + - "℅": [T: "для передачи"] # 0x2105 + - "℆": [T: "каждая"] # 0x2106 + - "ℇ": [T: "постоянная Эйлера"] # 0x2107 + - "℈": [T: "скрупулы"] # 0x2108 + - "℉": [T: "градусы Фаренгейта"] # 0x2109 + - "ℊ": [T: "рукописная g"] # 0x210a - "ℌℑℨℭ": # 0x210c, 0x2111, 0x2128, 0x212d - - t: "фрактурная" - - spell: "translate('.', 'ℌℑℨℭ', 'HIZC')" + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'фрактурной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'фрактурную', 'фрактурная'))" + - SPELL: "translate('.', 'ℌℑℨℭ', 'HIZC')" - "ℍℙℾℿ": # 0x210d, 0x2119, 0x213e, 0x213f - - t: "двойная" - - spell: "translate('.', 'ℍℙℾℿ', 'HPΓΠ')" + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'двойной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'двойную', 'двойная'))" + - SPELL: "translate('.', 'ℍℙℾℿ', 'HPΓΠ')" - - "ℎ": [t: "постоянная Планка"] # 0x210e - - "ℏ": [t: "h с чертой"] # 0x210f + - "ℎ": [T: "постоянная Планка"] # 0x210e + - "ℏ": [T: "h с чертой"] # 0x210f - "ℐℒ℘ℬℰℱℳ": # 0x2110, 0x2112, 0x2118, 0x2130, 0x2131, 0x2133 - - t: "рукописная" - - spell: "translate('.', 'ℐℒ℘ℬℰℱℳ', 'ILPBEFM')" - - - "ℓ": [t: "рукописная l"] # 0x2113 - - "℔": [t: "фунты"] # 0x2114 - - "№": [t: "номер"] # 0x2116 - - "℥": [t: "унции"] # 0x2125 - - "Ω": [t: "омы"] # 0x2126 - - "℧": [t: "сименсы"] # 0x2127 - - "℩": [t: "перевёрнутая йота"] # 0x2129 - - "K": [t: "кельвин"] # 0x212a - - "Å": [t: "ангстремы"] # 0x212b - - "ℯ": [t: "рукописная e"] # 0x212f + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'рукописной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'рукописную', 'рукописная'))" + - SPELL: "translate('.', 'ℐℒ℘ℬℰℱℳ', 'ILPBEFM')" + + - "ℓ": [T: "рукописная l"] # 0x2113 + - "℔": [T: "фунты"] # 0x2114 + - "№": [T: "номер"] # 0x2116 + - "℥": [T: "унции"] # 0x2125 + - "Ω": [T: "омы"] # 0x2126 + - "℧": [T: "сименсы"] # 0x2127 + - "℩": [T: "перевёрнутая йота"] # 0x2129 + - "K": [T: "кельвин"] # 0x212a + - "Å": [T: "ангстремы"] # 0x212b + - "ℯ": [T: "рукописная e"] # 0x212f # coalesced some chars that use cap letters - - "Ⅎ": - - t: "перевернутая" - - spell: "'F'" - - "⅄": - - t: "перевернутая" - - spell: "'Y'" - - t: "без засечек" - - "℺⅁⅂⅃": # 0x213a, 0x2141, 0x2142, 0x2143 + - "Ⅎ℺⅁⅂⅃⅄": - test: - if: "'.' = '℺'" - then: [t: "повёрнутая"] - - else_if: "'.' = 'Ⅎ'" - then: [t: "перевернутая"] + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'повёрнутой', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'повёрнутую', 'повёрнутая'))"] + - else_if: "'.' = 'Ⅎ' or '.' = '⅄'" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'перевернутой', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'перевернутую', 'перевернутая'))"] - else_if: "'.' = '⅃'" - then: [t: "обратная без засечек"] - else: [t: "перевернутая без засечек"] - - spell: "translate('.', '℺⅁⅂⅃', 'QGLL')" - - - "ℴ": [t: "рукописная o"] # 0x2134 - - "ℵ": [t: "алеф"] # 0x2135 - - "ℶ": [t: "бет"] # 0x2136 - - "ℷ": [t: "гимель"] # 0x2137 - - "ℸ": [t: "далет"] # 0x2138 - - "ℼ": [t: "пи с двойным контуром"] # 0x213c - - "ℽ": [t: "гамма с двойным контуром"] # 0x213d - - "⅀": [t: "n-арное суммирование с двойным контуром"] # 0x2140 - - "⅋": [t: "перевёрнутый амперсанд"] # 0x214b - - "⅌": [t: "на"] # 0x214c - - "ⅎ": [t: "перевёрнутая F"] # 0x214e - - "¼": [t: "одна четвёртая"] # 0x00bc - - "½": [t: "одна вторая"] # 0x00bd - - "¾": [t: "три четвёртых"] # 0x00be - - "⅐": [t: "одна седьмая"] # 0x2150 - - "⅑": [t: "одна девятая"] # 0x2151 - - "⅒": [t: "одна десятая"] # 0x2152 - - "⅓": [t: "одна треть"] # 0x2153 - - "⅔": [t: "две трети"] # 0x2154 - - "⅕": [t: "одна пятая"] # 0x2155 - - "⅖": [t: "две пятых"] # 0x2156 - - "⅗": [t: "три пятых"] # 0x2157 - - "⅘": [t: "четыре пятых"] # 0x2158 - - "⅙": [t: "одна шестая"] # 0x2159 - - "⅚": [t: "пять шестых"] # 0x215a - - "⅛": [t: "одна восьмая"] # 0x215b - - "⅜": [t: "три восьмых"] # 0x215c - - "⅝": [t: "пять восьмых"] # 0x215d - - "⅞": [t: "семь восьмых"] # 0x215e - - "⅟": [t: "единица делить на"] # 0x215f - - "Ⅰ": [t: "I"] # 0x2160 - - "Ⅱ": [t: "I I"] # 0x2161 - - "Ⅲ": [t: "I I I"] # 0x2162 - - "Ⅳ": [t: "I V"] # 0x2163 - - "Ⅴ": [t: "V"] # 0x2164 - - "Ⅵ": [t: "V I"] # 0x2165 - - "Ⅶ": [t: "V I I"] # 0x2166 - - "Ⅷ": [t: "V I I I"] # 0x2167 - - "Ⅸ": [t: "I X"] # 0x2168 - - "Ⅹ": [t: "X"] # 0x2169 - - "Ⅺ": [t: "X I"] # 0x216a - - "Ⅻ": [t: "X I I"] # 0x216b - - "Ⅼ": [t: "L"] # 0x216c - - "Ⅽ": [t: "C"] # 0x216d - - "Ⅾ": [t: "D"] # 0x216e - - "Ⅿ": [t: "M"] # 0x216f - - "ⅰ": [t: "I"] # 0x2170 - - "ⅱ": [t: "I I"] # 0x2171 - - "ⅲ": [t: "I I I"] # 0x2172 - - "ⅳ": [t: "I V"] # 0x2173 - - "ⅴ": [t: "V"] # 0x2174 - - "ⅵ": [t: "V I"] # 0x2175 - - "ⅶ": [t: "V I I"] # 0x2176 - - "ⅷ": [t: "V I I I"] # 0x2177 - - "ⅸ": [t: "I X"] # 0x2178 - - "ⅹ": [t: "X"] # 0x2179 - - "ⅺ": [t: "X I"] # 0x217a - - "ⅻ": [t: "X I I"] # 0x217b - - "ⅼ": [t: "L"] # 0x217c - - "ⅽ": [t: "C"] # 0x217d - - "ⅾ": [t: "D"] # 0x217e - - "ⅿ": [t: "M"] # 0x217f - - "↉": [t: "ноль третьих"] # 0x2189 - - "↔": [t: "стрелка влево-вправо"] # 0x2194 - - "↕": [t: "стрелка вверх-вниз"] # 0x2195 - - "↖": [t: "стрелка на северо-запад"] # 0x2196 + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'обратной без засечек', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'обратную без засечек', 'обратная без засечек'))"] + else: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'перевернутой без засечек', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'перевернутую без засечек', 'перевернутая без засечек'))"] + - SPELL: "translate('.', 'Ⅎ℺⅁⅂⅃⅄', 'FQGLLY')" + - test: + if: "'.' = '⅄'" + then: [T: "без засечек"] + + - "ℴ": [T: "рукописная o"] # 0x2134 + - "ℵ": [T: "алеф"] # 0x2135 + - "ℶ": [T: "бет"] # 0x2136 + - "ℷ": [T: "гимель"] # 0x2137 + - "ℸ": [T: "далет"] # 0x2138 + - "ℼ": [T: "пи с двойным контуром"] # 0x213c + - "ℽ": [T: "гамма с двойным контуром"] # 0x213d + - "⅀": [T: "n-арное суммирование с двойным контуром"] # 0x2140 + - "⅋": [T: "перевёрнутый амперсанд"] # 0x214b + - "⅌": [T: "на"] # 0x214c + - "ⅎ": [T: "перевёрнутая F"] # 0x214e + - "¼": [T: "одна четвёртая"] # 0x00bc + - "½": [T: "одна вторая"] # 0x00bd + - "¾": [T: "три четвёртых"] # 0x00be + - "⅐": [T: "одна седьмая"] # 0x2150 + - "⅑": [T: "одна девятая"] # 0x2151 + - "⅒": [T: "одна десятая"] # 0x2152 + - "⅓": [T: "одна треть"] # 0x2153 + - "⅔": [T: "две трети"] # 0x2154 + - "⅕": [T: "одна пятая"] # 0x2155 + - "⅖": [T: "две пятых"] # 0x2156 + - "⅗": [T: "три пятых"] # 0x2157 + - "⅘": [T: "четыре пятых"] # 0x2158 + - "⅙": [T: "одна шестая"] # 0x2159 + - "⅚": [T: "пять шестых"] # 0x215a + - "⅛": [T: "одна восьмая"] # 0x215b + - "⅜": [T: "три восьмых"] # 0x215c + - "⅝": [T: "пять восьмых"] # 0x215d + - "⅞": [T: "семь восьмых"] # 0x215e + - "⅟": [T: "единица делить на"] # 0x215f + - "Ⅰ": [T: "I"] # 0x2160 + - "Ⅱ": [T: "I I"] # 0x2161 + - "Ⅲ": [T: "I I I"] # 0x2162 + - "Ⅳ": [T: "I V"] # 0x2163 + - "Ⅴ": [T: "V"] # 0x2164 + - "Ⅵ": [T: "V I"] # 0x2165 + - "Ⅶ": [T: "V I I"] # 0x2166 + - "Ⅷ": [T: "V I I I"] # 0x2167 + - "Ⅸ": [T: "I X"] # 0x2168 + - "Ⅹ": [T: "X"] # 0x2169 + - "Ⅺ": [T: "X I"] # 0x216a + - "Ⅻ": [T: "X I I"] # 0x216b + - "Ⅼ": [T: "L"] # 0x216c + - "Ⅽ": [T: "C"] # 0x216d + - "Ⅾ": [T: "D"] # 0x216e + - "Ⅿ": [T: "M"] # 0x216f + - "ⅰ": [T: "I"] # 0x2170 + - "ⅱ": [T: "I I"] # 0x2171 + - "ⅲ": [T: "I I I"] # 0x2172 + - "ⅳ": [T: "I V"] # 0x2173 + - "ⅴ": [T: "V"] # 0x2174 + - "ⅵ": [T: "V I"] # 0x2175 + - "ⅶ": [T: "V I I"] # 0x2176 + - "ⅷ": [T: "V I I I"] # 0x2177 + - "ⅸ": [T: "I X"] # 0x2178 + - "ⅹ": [T: "X"] # 0x2179 + - "ⅺ": [T: "X I"] # 0x217a + - "ⅻ": [T: "X I I"] # 0x217b + - "ⅼ": [T: "L"] # 0x217c + - "ⅽ": [T: "C"] # 0x217d + - "ⅾ": [T: "D"] # 0x217e + - "ⅿ": [T: "M"] # 0x217f + - "↉": [T: "ноль третьих"] # 0x2189 + - "↔": [T: "стрелка влево-вправо"] # 0x2194 + - "↕": [T: "стрелка вверх-вниз"] # 0x2195 + - "↖": [T: "стрелка на северо-запад"] # 0x2196 - "↗": # 0x2197 - test: if: "ancestor::*[2][self::m:limit]" - then: [t: "стремящемся к"] - else: [t: "стрелка на северо-восток"] + then: [T: "стремящемся к"] + else: [T: "стрелка на северо-восток"] - "↘": # 0x2198 - test: if: "ancestor::*[2][self::m:limit]" - then: [t: "стремится сверху"] - else: [t: "стрелка на юго-восток"] - - - "↙": [t: "стрелка на юго-запад"] # 0x2199 - - "↚": [t: "стрелка влево со штрихом"] # 0x219a - - "↛": [t: "стрелка вправо со штрихом"] # 0x219b - - "↜": [t: "волнистая стрелка влево"] # 0x219c - - "↝": [t: "волнистая стрелка вправо"] # 0x219d - - "↞": [t: "стрелка влево с двумя наконечниками"] # 0x219e - - "↟": [t: "стрелка вверх с двумя наконечниками"] # 0x219f - - "↠": [t: "стрелка вправо с двумя наконечниками"] # 0x21a0 - - "↡": [t: "стрелка вниз с двумя наконечниками"] # 0x21a1 - - "↢": [t: "стрелка влево с хвостом"] # 0x21a2 - - "↣": [t: "стрелка вправо с хвостом"] # 0x21a3 - - "↤": [t: "стрелка влево от черты"] # 0x21a4 - - "↥": [t: "стрелка вверх от черты"] # 0x21a5 - - "↦": [t: "стрелка вправо от черты"] # 0x21a6 - - "↧": [t: "стрелка вниз от черты"] # 0x21a7 - - "↨": [t: "стрелка вверх-вниз с основанием"] # 0x21a8 - - "↩": [t: "стрелка влево с крюком"] # 0x21a9 - - "↪": [t: "стрелка вправо с крюком"] # 0x21aa - - "↫": [t: "стрелка влево с петлёй"] # 0x21ab - - "↬": [t: "стрелка вправо с петлёй"] # 0x21ac - - "↭": [t: "волнистая стрелка влево-вправо"] # 0x21ad - - "↮": [t: "стрелка влево-вправо со штрихом"] # 0x21ae - - "↯": [t: "зигзагообразная стрелка вниз"] # 0x21af - - "↰": [t: "стрелка вверх с наконечником влево"] # 0x21b0 - - "↱": [t: "стрелка вверх с наконечником вправо"] # 0x21b1 - - "↲": [t: "стрелка вниз с наконечником влево"] # 0x21b2 - - "↳": [t: "стрелка вниз с наконечником вправо"] # 0x21b3 - - "↴": [t: "стрелка вправо с уголком вниз"] # 0x21b4 - - "↵": [t: "стрелка вниз с уголком влево"] # 0x21b5 - - "↶": [t: "верхняя полуокружность против часовой"] # 0x21b6 - - "↷": [t: "верхняя полуокружность по часовой"] # 0x21b7 - - "↸": [t: "стрелка на северо-запад к длинной черте"] # 0x21b8 - - "↹": [t: "стрелка влево к черте над стрелкой вправо к черте"] # 0x21b9 - - "↺": [t: "круговая стрелка против часовой"] # 0x21ba - - "↻": [t: "круговая стрелка по часовой"] # 0x21bb - - "↼": [t: "левый гарпун вверх"] # 0x21bc - - "↽": [t: "левый гарпун вниз"] # 0x21bd - - "↾": [t: "верхний гарпун вправо"] # 0x21be - - "↿": [t: "верхний гарпун влево"] # 0x21bf - - "⇀": [t: "правый гарпун вверх"] # 0x21c0 - - "⇁": [t: "правый гарпун вниз"] # 0x21c1 - - "⇂": [t: "нижний гарпун вправо"] # 0x21c2 - - "⇃": [t: "нижний гарпун влево"] # 0x21c3 - - "⇄": [t: "стрелка вправо над стрелкой влево"] # 0x21c4 - - "⇅": [t: "стрелка вверх слева от стрелки вниз"] # 0x21c5 - - "⇆": [t: "стрелка влево над стрелкой вправо"] # 0x21c6 - - "⇇": [t: "парные стрелки влево"] # 0x21c7 - - "⇈": [t: "парные стрелки вверх"] # 0x21c8 - - "⇉": [t: "парные стрелки вправо"] # 0x21c9 - - "⇊": [t: "парные стрелки вниз"] # 0x21ca - - "⇋": [t: "левый гарпун над правым гарпуном"] # 0x21cb - - "⇌": [t: "правый гарпун над левым гарпуном"] # 0x21cc - - "⇍": [t: "левая двойная стрелка со штрихом"] # 0x21cd - - "⇎": [t: "двойная стрелка влево-вправо со штрихом"] # 0x21ce - - "⇏": [t: "правая двойная стрелка со штрихом"] # 0x21cf - - "⇐": [t: "левая двойная стрелка"] # 0x21d0 - - "⇑": [t: "верхняя двойная стрелка"] # 0x21d1 - - "⇒": [t: "следует"] # 0x21d2 - - "⇓": [t: "нижняя двойная стрелка"] # 0x21d3 - - "⇔": [t: "тогда и только тогда"] # 0x21d4 - - "⇕": [t: "двойная стрелка вверх-вниз"] # 0x21d5 - - "⇖": [t: "двойная стрелка на северо-запад"] # 0x21d6 - - "⇗": [t: "двойная стрелка на северо-восток"] # 0x21d7 - - "⇘": [t: "двойная стрелка на юго-восток"] # 0x21d8 - - "⇙": [t: "двойная стрелка на юго-запад"] # 0x21d9 - - "⇚": [t: "левая тройная стрелка"] # 0x21da - - "⇛": [t: "правая тройная стрелка"] # 0x21db - - "⇜": [t: "левая волнистая стрелка"] # 0x21dc - - "⇝": [t: "правая волнистая стрелка"] # 0x21dd - - "⇞": [t: "стрелка вверх с двойным штрихом"] # 0x21de - - "⇟": [t: "стрелка вниз с двойным штрихом"] # 0x21df - - "⇠": [t: "левая пунктирная стрелка"] # 0x21e0 - - "⇡": [t: "верхняя пунктирная стрелка"] # 0x21e1 - - "⇢": [t: "правая пунктирная стрелка"] # 0x21e2 - - "⇣": [t: "нижняя пунктирная стрелка"] # 0x21e3 - - "⇤": [t: "стрелка влево к черте"] # 0x21e4 - - "⇥": [t: "стрелка вправо к черте"] # 0x21e5 - - "⇦": [t: "левая белая стрелка"] # 0x21e6 - - "⇧": [t: "верхняя белая стрелка"] # 0x21e7 - - "⇨": [t: "правая белая стрелка"] # 0x21e8 - - "⇩": [t: "нижняя белая стрелка"] # 0x21e9 - - "⇪": [t: "верхняя белая стрелка от черты"] # 0x21ea - - "⇫": [t: "верхняя белая стрелка на пьедестале"] # 0x21eb - - "⇬": [t: "верхняя белая стрелка на пьедестале с горизонтальной чертой"] # 0x21ec - - "⇭": [t: "верхняя белая стрелка на пьедестале с вертикальной чертой"] # 0x21ed - - "⇮": [t: "верхняя белая двойная стрелка"] # 0x21ee - - "⇯": [t: "верхняя белая двойная стрелка на пьедестале"] # 0x21ef - - "⇰": [t: "правая белая стрелка от стены"] # 0x21f0 - - "⇱": [t: "стрелка на северо-запад в угол"] # 0x21f1 - - "⇲": [t: "стрелка на юго-восток в угол"] # 0x21f2 - - "⇳": [t: "белая стрелка вверх-вниз"] # 0x21f3 - - "⇴": [t: "стрелка вправо с маленьким кругом"] # 0x21f4 - - "⇵": [t: "стрелка вниз слева от стрелки вверх"] # 0x21f5 - - "⇶": [t: "три стрелки вправо"] # 0x21f6 - - "⇷": [t: "стрелка влево с вертикальным штрихом"] # 0x21f7 - - "⇸": [t: "стрелка вправо с вертикальным штрихом"] # 0x21f8 - - "⇹": [t: "стрелка влево-вправо с вертикальным штрихом"] # 0x21f9 - - "⇺": [t: "стрелка влево с двойным вертикальным штрихом"] # 0x21fa - - "⇻": [t: "стрелка вправо с двойным вертикальным штрихом"] # 0x21fb - - "⇼": [t: "стрелка влево-вправо с двойным вертикальным штрихом"] # 0x21fc - - "⇽": [t: "левая открытая стрелка"] # 0x21fd - - "⇾": [t: "правая открытая стрелка"] # 0x21fe - - "⇿": [t: "открытая стрелка влево-вправо"] # 0x21ff - - "∀": [t: "для всех"] # 0x2200 + then: [T: "стремится сверху"] + else: [T: "стрелка на юго-восток"] + + - "↙": [T: "стрелка на юго-запад"] # 0x2199 + - "↚": [T: "стрелка влево со штрихом"] # 0x219a + - "↛": [T: "стрелка вправо со штрихом"] # 0x219b + - "↜": [T: "волнистая стрелка влево"] # 0x219c + - "↝": [T: "волнистая стрелка вправо"] # 0x219d + - "↞": [T: "стрелка влево с двумя наконечниками"] # 0x219e + - "↟": [T: "стрелка вверх с двумя наконечниками"] # 0x219f + - "↠": [T: "стрелка вправо с двумя наконечниками"] # 0x21a0 + - "↡": [T: "стрелка вниз с двумя наконечниками"] # 0x21a1 + - "↢": [T: "стрелка влево с хвостом"] # 0x21a2 + - "↣": [T: "стрелка вправо с хвостом"] # 0x21a3 + - "↤": [T: "стрелка влево от черты"] # 0x21a4 + - "↥": [T: "стрелка вверх от черты"] # 0x21a5 + - "↦": [T: "стрелка вправо от черты"] # 0x21a6 + - "↧": [T: "стрелка вниз от черты"] # 0x21a7 + - "↨": [T: "стрелка вверх-вниз с основанием"] # 0x21a8 + - "↩": [T: "стрелка влево с крюком"] # 0x21a9 + - "↪": [T: "стрелка вправо с крюком"] # 0x21aa + - "↫": [T: "стрелка влево с петлёй"] # 0x21ab + - "↬": [T: "стрелка вправо с петлёй"] # 0x21ac + - "↭": [T: "волнистая стрелка влево-вправо"] # 0x21ad + - "↮": [T: "стрелка влево-вправо со штрихом"] # 0x21ae + - "↯": [T: "зигзагообразная стрелка вниз"] # 0x21af + - "↰": [T: "стрелка вверх с наконечником влево"] # 0x21b0 + - "↱": [T: "стрелка вверх с наконечником вправо"] # 0x21b1 + - "↲": [T: "стрелка вниз с наконечником влево"] # 0x21b2 + - "↳": [T: "стрелка вниз с наконечником вправо"] # 0x21b3 + - "↴": [T: "стрелка вправо с уголком вниз"] # 0x21b4 + - "↵": [T: "стрелка вниз с уголком влево"] # 0x21b5 + - "↶": [T: "верхняя полуокружность против часовой"] # 0x21b6 + - "↷": [T: "верхняя полуокружность по часовой"] # 0x21b7 + - "↸": [T: "стрелка на северо-запад к длинной черте"] # 0x21b8 + - "↹": [T: "стрелка влево к черте над стрелкой вправо к черте"] # 0x21b9 + - "↺": [T: "круговая стрелка против часовой"] # 0x21ba + - "↻": [T: "круговая стрелка по часовой"] # 0x21bb + - "↼": [T: "левый гарпун вверх"] # 0x21bc + - "↽": [T: "левый гарпун вниз"] # 0x21bd + - "↾": [T: "верхний гарпун вправо"] # 0x21be + - "↿": [T: "верхний гарпун влево"] # 0x21bf + - "⇀": [T: "правый гарпун вверх"] # 0x21c0 + - "⇁": [T: "правый гарпун вниз"] # 0x21c1 + - "⇂": [T: "нижний гарпун вправо"] # 0x21c2 + - "⇃": [T: "нижний гарпун влево"] # 0x21c3 + - "⇄": [T: "стрелка вправо над стрелкой влево"] # 0x21c4 + - "⇅": [T: "стрелка вверх слева от стрелки вниз"] # 0x21c5 + - "⇆": [T: "стрелка влево над стрелкой вправо"] # 0x21c6 + - "⇇": [T: "парные стрелки влево"] # 0x21c7 + - "⇈": [T: "парные стрелки вверх"] # 0x21c8 + - "⇉": [T: "парные стрелки вправо"] # 0x21c9 + - "⇊": [T: "парные стрелки вниз"] # 0x21ca + - "⇋": [T: "левый гарпун над правым гарпуном"] # 0x21cb + - "⇌": [T: "правый гарпун над левым гарпуном"] # 0x21cc + - "⇍": [T: "левая двойная стрелка со штрихом"] # 0x21cd + - "⇎": [T: "двойная стрелка влево-вправо со штрихом"] # 0x21ce + - "⇏": [T: "правая двойная стрелка со штрихом"] # 0x21cf + - "⇐": [T: "левая двойная стрелка"] # 0x21d0 + - "⇑": [T: "верхняя двойная стрелка"] # 0x21d1 + - "⇒": [T: "следует"] # 0x21d2 + - "⇓": [T: "нижняя двойная стрелка"] # 0x21d3 + - "⇔": [T: "тогда и только тогда"] # 0x21d4 + - "⇕": [T: "двойная стрелка вверх-вниз"] # 0x21d5 + - "⇖": [T: "двойная стрелка на северо-запад"] # 0x21d6 + - "⇗": [T: "двойная стрелка на северо-восток"] # 0x21d7 + - "⇘": [T: "двойная стрелка на юго-восток"] # 0x21d8 + - "⇙": [T: "двойная стрелка на юго-запад"] # 0x21d9 + - "⇚": [T: "левая тройная стрелка"] # 0x21da + - "⇛": [T: "правая тройная стрелка"] # 0x21db + - "⇜": [T: "левая волнистая стрелка"] # 0x21dc + - "⇝": [T: "правая волнистая стрелка"] # 0x21dd + - "⇞": [T: "стрелка вверх с двойным штрихом"] # 0x21de + - "⇟": [T: "стрелка вниз с двойным штрихом"] # 0x21df + - "⇠": [T: "левая пунктирная стрелка"] # 0x21e0 + - "⇡": [T: "верхняя пунктирная стрелка"] # 0x21e1 + - "⇢": [T: "правая пунктирная стрелка"] # 0x21e2 + - "⇣": [T: "нижняя пунктирная стрелка"] # 0x21e3 + - "⇤": [T: "стрелка влево к черте"] # 0x21e4 + - "⇥": [T: "стрелка вправо к черте"] # 0x21e5 + - "⇦": [T: "левая белая стрелка"] # 0x21e6 + - "⇧": [T: "верхняя белая стрелка"] # 0x21e7 + - "⇨": [T: "правая белая стрелка"] # 0x21e8 + - "⇩": [T: "нижняя белая стрелка"] # 0x21e9 + - "⇪": [T: "верхняя белая стрелка от черты"] # 0x21ea + - "⇫": [T: "верхняя белая стрелка на пьедестале"] # 0x21eb + - "⇬": [T: "верхняя белая стрелка на пьедестале с горизонтальной чертой"] # 0x21ec + - "⇭": [T: "верхняя белая стрелка на пьедестале с вертикальной чертой"] # 0x21ed + - "⇮": [T: "верхняя белая двойная стрелка"] # 0x21ee + - "⇯": [T: "верхняя белая двойная стрелка на пьедестале"] # 0x21ef + - "⇰": [T: "правая белая стрелка от стены"] # 0x21f0 + - "⇱": [T: "стрелка на северо-запад в угол"] # 0x21f1 + - "⇲": [T: "стрелка на юго-восток в угол"] # 0x21f2 + - "⇳": [T: "белая стрелка вверх-вниз"] # 0x21f3 + - "⇴": [T: "стрелка вправо с маленьким кругом"] # 0x21f4 + - "⇵": [T: "стрелка вниз слева от стрелки вверх"] # 0x21f5 + - "⇶": [T: "три стрелки вправо"] # 0x21f6 + - "⇷": [T: "стрелка влево с вертикальным штрихом"] # 0x21f7 + - "⇸": [T: "стрелка вправо с вертикальным штрихом"] # 0x21f8 + - "⇹": [T: "стрелка влево-вправо с вертикальным штрихом"] # 0x21f9 + - "⇺": [T: "стрелка влево с двойным вертикальным штрихом"] # 0x21fa + - "⇻": [T: "стрелка вправо с двойным вертикальным штрихом"] # 0x21fb + - "⇼": [T: "стрелка влево-вправо с двойным вертикальным штрихом"] # 0x21fc + - "⇽": [T: "левая открытая стрелка"] # 0x21fd + - "⇾": [T: "правая открытая стрелка"] # 0x21fe + - "⇿": [T: "открытая стрелка влево-вправо"] # 0x21ff + - "∀": [T: "для всех"] # 0x2200 - "∁": # 0x2201 - test: if: "$Verbosity!='Terse'" - then: [ot: "the"] - - t: "дополнение" + then: [OT: "the"] + - T: "дополнение" - "∂": # 0x2202 - test: if: "$Verbosity='Terse'" - then: [t: "частная"] - else: [t: "частная производная"] - - "∃": [t: "существует"] # 0x2203 - - "∄": [t: "не существует"] # 0x2204 - - "∅": [t: "пустое множество"] # 0x2205 + then: [T: "частная"] + else: [T: "частная производная"] + - "∃": [T: "существует"] # 0x2203 + - "∄": [T: "не существует"] # 0x2204 + - "∅": [T: "пустое множество"] # 0x2205 - "∆": # 0x2206 - test: if: "following-sibling::*" then_test: if: "$Verbosity!='Terse'" - then: [t: "лапласиан от"] # "LahPlahsian" sounds better than "laplacian" in speech engines tested - else: [t: "лапласиан"] - else: [t: "лапласиан"] + then: [T: "лапласиан от"] # "LahPlahsian" sounds better than "laplacian" in speech engines tested + else: [T: "лапласиан"] + else: [T: "лапласиан"] - - "∇": [t: "набла"] # 0x2207 + - "∇": [T: "набла"] # 0x2207 - "∉": # 0x2209 # rule is identical to 0x2208 - test: if: "$SpeechStyle != 'ClearSpeak'" - then: [t: "не является элементом"] + then: [T: "не является элементом"] # Several options for speaking elements in ClearSpeak -- they split between being inside a set or not and then the option else_test: if: "../../self::m:set or ../../../self::m:set" # inside a set then_test: - if: $ClearSpeak_SetMemberSymbol = 'Auto' or $ClearSpeak_SetMemberSymbol = 'In' - then: [t: "не в"] + then: [T: "не в"] - else_if: $ClearSpeak_SetMemberSymbol = 'Member' - then: [t: "не является членом"] + then: [T: "не является членом"] - else_if: $ClearSpeak_SetMemberSymbol = 'Element' - then: [t: "не является элементом"] - - else: [t: "не принадлежит"] # $ClearSpeak_SetMemberSymbol = 'Belongs' + then: [T: "не является элементом"] + - else: [T: "не принадлежит"] # $ClearSpeak_SetMemberSymbol = 'Belongs' else_test: - if: $ClearSpeak_SetMemberSymbol = 'Auto' or $ClearSpeak_SetMemberSymbol = 'Member' - then: [t: "не является членом"] + then: [T: "не является членом"] - else_if: $ClearSpeak_SetMemberSymbol = 'Element' - then: [t: "не является элементом"] + then: [T: "не является элементом"] - else_if: $ClearSpeak_SetMemberSymbol = 'In' - then: [t: "не находится в"] - - else: [t: "не принадлежит"] # $ClearSpeak_SetMemberSymbol = 'Belongs' + then: [T: "не находится в"] + - else: [T: "не принадлежит"] # $ClearSpeak_SetMemberSymbol = 'Belongs' - "∊": # 0x220a - test: if: "$SpeechStyle != 'ClearSpeak'" then: - test: if: "$Verbosity!='Terse' and not(parent::m:set)" # "the set x is an element of ..." sounds bad - then: [t: "является"] - - t: "элементом" + then: [T: "является"] + - T: "элементом" # Several options for speaking elements in ClearSpeak -- they split between being inside a set or not and then the option else_test: if: "../../self::m:set or ../../../self::m:set" # inside a set then_test: - if: $ClearSpeak_SetMemberSymbol = 'Auto' or $ClearSpeak_SetMemberSymbol = 'In' - then: [t: "в"] + then: [T: "в"] - else_if: $ClearSpeak_SetMemberSymbol = 'Member' - then: [t: "член"] + then: [T: "член"] - else_if: $ClearSpeak_SetMemberSymbol = 'Element' - then: [t: "элемент"] - - else: [t: "принадлежит"] # $ClearSpeak_SetMemberSymbol = 'Belongs' + then: [T: "элемент"] + - else: [T: "принадлежит"] # $ClearSpeak_SetMemberSymbol = 'Belongs' else_test: - if: $ClearSpeak_SetMemberSymbol = 'Auto' or $ClearSpeak_SetMemberSymbol = 'Member' - then: [t: "является членом"] + then: [T: "является членом"] - else_if: $ClearSpeak_SetMemberSymbol = 'Element' - then: [t: "является элементом"] + then: [T: "является элементом"] - else_if: $ClearSpeak_SetMemberSymbol = 'In' - then: [t: "находится в"] - - else: [t: "принадлежит"] # $ClearSpeak_SetMemberSymbol = 'Belongs' - - "∋": [t: "содержит член"] # 0x220b - - "∌": [t: "не содержит член"] # 0x220c - - "∍": [t: "содержит член"] # 0x220d - - "∎": [t: "конец доказательства"] # 0x220e - - "∏": [t: "произведение"] # 0x220f - - "∐": [t: "копроизведение"] # 0x2210 - - "∑": [t: "сумма"] # 0x2211 - - "−": [t: "минус"] # 0x2212 - - "∓": [t: "минус или плюс"] # 0x2213 - - "∔": [t: "точка плюс"] # 0x2214 - - "∕": [t: "разделить на"] # 0x2215 - - "∖": [t: "разность множеств"] # 0x2216 - - "∗": [t: "умножить"] # 0x2217 - - "∘": [t: "композиция с"] # 0x2218 + then: [T: "находится в"] + - else: [T: "принадлежит"] # $ClearSpeak_SetMemberSymbol = 'Belongs' + - "∋": [T: "содержит член"] # 0x220b + - "∌": [T: "не содержит член"] # 0x220c + - "∍": [T: "содержит член"] # 0x220d + - "∎": [T: "конец доказательства"] # 0x220e + - "∏": [T: "произведение"] # 0x220f + - "∐": [T: "копроизведение"] # 0x2210 + - "∑": [T: "сумма"] # 0x2211 + - "−": [T: "минус"] # 0x2212 + - "∓": [T: "минус или плюс"] # 0x2213 + - "∔": [T: "точка плюс"] # 0x2214 + - "∕": [T: "разделить на"] # 0x2215 + - "∖": [T: "разность множеств"] # 0x2216 + - "∗": [T: "умножить"] # 0x2217 + - "∘": [T: "композиция с"] # 0x2218 - "∙": # 0x2219 - test: if: "@data-chem-formula-op" - then: [t: "точка"] - else: [t: "умножить"] + then: [T: "точка"] + else: [T: "умножить"] - "√": # 0x221a - test: if: "$Verbosity!='Terse'" - then: [ot: "the"] - - t: "квадратный корень из" + then: [OT: "the"] + - T: "квадратный корень из" - "∛": # 0x221b - test: if: "$Verbosity!='Terse'" - then: [ot: "the"] - - t: "кубический корень из" + then: [OT: "the"] + - T: "кубический корень из" - "∜": # 0x221c - test: if: "$Verbosity!='Terse'" - then: [ot: "the"] - - t: "корень четвёртой степени из" + then: [OT: "the"] + - T: "корень четвёртой степени из" - "∝": # 0x221d - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "пропорционально" - - "∞": [t: "бесконечность"] # 0x221e - - "∟": [t: "прямой угол"] # 0x221f - - "∠": [t: "угол"] # 0x2220 - - "∡": [t: "измеренный угол"] # 0x2221 - - "∢": [t: "сферический угол"] # 0x2222 - - "∣": [t: "делит"] # 0x2223 - - "∤": [t: "не делит"] # 0x2224 - - "∧": [t: "и"] # 0x2227 - - "∨": [t: "или"] # 0x2228 - - "∩": [t: "пересечение"] # 0x2229 - - "∪": [t: "объединение"] # 0x222a - - "∫": [t: "интеграл"] # 0x222b - - "∬": [t: "двойной интеграл"] # 0x222c - - "∭": [t: "тройной интеграл"] # 0x222d - - "∮": [t: "контурный интеграл"] # 0x222e - - "∯": [t: "поверхностный интеграл"] # 0x222f - - "∰": [t: "объёмный интеграл"] # 0x2230 - - "∱": [t: "интеграл по часовой"] # 0x2231 - - "∲": [t: "контурный интеграл по часовой"] # 0x2232 - - "∳": [t: "контурный интеграл против часовой"] # 0x2233 - - "∴": [t: "следовательно"] # 0x2234 - - "∵": [t: "потому что"] # 0x2235 + then: [T: "является"] + - T: "пропорционально" + - "∞": [T: "бесконечность"] # 0x221e + - "∟": [T: "прямой угол"] # 0x221f + - "∠": [T: "угол"] # 0x2220 + - "∡": [T: "измеренный угол"] # 0x2221 + - "∢": [T: "сферический угол"] # 0x2222 + - "∣": # 0x2223 + - test: + if: "count(preceding-sibling::*)=1 and count(following-sibling::*)=1 and ../../../*[1][.='P']" + then: [T: "при условии"] + else: [T: "является делителем"] + - "∤": [T: "не является делителем"] # 0x2224 + - "∧": [T: "и"] # 0x2227 + - "∨": [T: "или"] # 0x2228 + - "∩": [T: "пересечение"] # 0x2229 + - "∪": [T: "объединение"] # 0x222a + - "∫": [T: "интеграл"] # 0x222b + - "∬": [T: "двойной интеграл"] # 0x222c + - "∭": [T: "тройной интеграл"] # 0x222d + - "∮": [T: "интеграл по контуру"] # 0x222e + - "∯": [T: "поверхностный интеграл"] # 0x222f + - "∰": [T: "объёмный интеграл"] # 0x2230 + - "∱": [T: "интеграл по часовой стрелке"] # 0x2231 + - "∲": [T: "контурный интеграл по часовой стрелке"] # 0x2232 + - "∳": [T: "контурный интеграл против часовой стрелки"] # 0x2233 + - "∴": [T: "следовательно"] # 0x2234 + - "∵": [T: "потому что"] # 0x2235 - "∶": # 0x2236 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "к" - - "∷": [t: "как"] # 0x2237 - - "∸": [t: "точка минус"] # 0x2238 - - "∹": [t: "имеет избыток по сравнению с"] # 0x2239 + then: [T: "является"] + - T: "к" + - "∷": [T: "как"] # 0x2237 + - "∸": [T: "точка минус"] # 0x2238 + - "∹": [T: "имеет избыток по сравнению с"] # 0x2239 - "∺": # 0x223a - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "геометрически пропорционально" + then: [T: "является"] + - T: "геометрически пропорционально" - "∻": # 0x223b - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "гомотетично" - - "∼": [t: "изменяется с"] # 0x223c - - "∽": [t: "обратная тильда"] # 0x223d + then: [T: "является"] + - T: "гомотетично" + - "∼": [T: "изменяется с"] # 0x223c + - "∽": [T: "обратная тильда"] # 0x223d - "∾": # 0x223e - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "наиболее положительным" - - "∿": [t: "синусоида"] # 0x223f - - "≀": [t: "венок"] # 0x2240 - - "≁": [t: "не тильда"] # 0x2241 - - "≂": [t: "минус тильда"] # 0x2242 + then: [T: "является"] + - T: "наиболее положительным" + - "∿": [T: "синусоида"] # 0x223f + - "≀": [T: "венок"] # 0x2240 + - "≁": [T: "не тильда"] # 0x2241 + - "≂": [T: "минус тильда"] # 0x2242 - "≃": # 0x2243 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "асимптотически равно" + then: [T: "является"] + - T: "асимптотически равно" - "≄": # 0x2244 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "не асимптотически равно" + then: [T: "является"] + - T: "не асимптотически равно" - "≅": # 0x2245 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "конгруэнтно" + then: [T: "является"] + - T: "конгруэнтно" - "≆": # 0x2246 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "приблизительно, но не фактически равно" + then: [T: "является"] + - T: "приблизительно, но не фактически равно" - "≇": # 0x2247 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "не конгруэнтно" + then: [T: "является"] + - T: "не конгруэнтно" - "≈": # 0x2248 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "приблизительно равно" + then: [T: "является"] + - T: "приблизительно равно" - "≉": # 0x2249 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "не приблизительно равно" + then: [T: "является"] + - T: "не приблизительно равно" - "≊": # 0x224a - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "приблизительно равно или равно" - - "≋": [t: "тройная тильда"] # 0x224b - - "≌": [t: "все равны"] # 0x224c + then: [T: "является"] + - T: "приблизительно равно или равно" + - "≋": [T: "тройная тильда"] # 0x224b + - "≌": [T: "все равны"] # 0x224c - "≍": # 0x224d - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "эквивалентно" + then: [T: "является"] + - T: "эквивалентно" - "≎": # 0x224e - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "геометрически эквивалентно" + then: [T: "является"] + - T: "геометрически эквивалентно" - "≏": # 0x224f - test: if: "$Verbosity!='Terse'" - then: [ot: "the"] - - t: "разность" - - "≐": [t: "стремится к пределу"] # 0x2250 + then: [OT: "the"] + - T: "разность" + - "≐": [T: "равно с точкой сверху"] # 0x2250 - "≑": # 0x2251 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "геометрически равно" + then: [T: "является"] + - T: "геометрически равно" - "≒": # 0x2252 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "приблизительно равно или образ" + then: [T: "является"] + - T: "приблизительно равно или образ" - "≓": # 0x2253 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "образ или приблизительно равно" - - "≔": [t: "двоеточие равно"] # 0x2254 - - "≕": [t: "равно двоеточие"] # 0x2255 - - "≖": [t: "кольцо в равно"] # 0x2256 + then: [T: "является"] + - T: "образ или приблизительно равно" + - "≔": [T: "двоеточие равно"] # 0x2254 + - "≕": [T: "равно двоеточие"] # 0x2255 + - "≖": [T: "кольцо в равно"] # 0x2256 - "≗": # 0x2257 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "приблизительно равно" - - "≘": [t: "соответствует"] # 0x2258 - - "≙": [t: "оценивает"] # 0x2259 + then: [T: "является"] + - T: "приблизительно равно" + - "≘": [T: "соответствует"] # 0x2258 + - "≙": [T: "оценивает"] # 0x2259 - "≚": # 0x225a - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "равноугольно" - - "≛": [t: "звезда равно"] # 0x225b - - "≜": [t: "дельта равно"] # 0x225c - - "≝": [t: "определяется как"] # 0x225d + then: [T: "является"] + - T: "равноугольно" + - "≛": [T: "звезда равно"] # 0x225b + - "≜": [T: "дельта равно"] # 0x225c + - "≝": [T: "определяется как"] # 0x225d - "≞": # 0x225e - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "измеряется" - - "≟": [t: "имеет неизвестное отношение с"] # 0x225f + then: [T: "является"] + - T: "измеряется" + - "≟": [T: "имеет неизвестное отношение с"] # 0x225f - "≠": # 0x2260 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "не равно" + then: [T: "является"] + - T: "не равно" - "≡": # 0x2261 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "тождественно равно" + then: [T: "является"] + - T: "тождественно равно" - "≢": # 0x2262 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "не тождественно равно" + then: [T: "является"] + - T: "не тождественно равно" - "≣": # 0x2263 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "строго эквивалентно" - - "≦": [t: "меньше или равно"] # 0x2266 (less than over equal to) фактически ≤ - - "≧": [t: "больше или равно"] # 0x2267 (greater than over equal to) фактически ≥ + then: [T: "является"] + - T: "строго эквивалентно" + - "≦": [T: "меньше или равно"] # 0x2266 (less than over equal to) фактически ≤ + - "≧": [T: "больше или равно"] # 0x2267 (greater than over equal to) фактически ≥ - "≨": # 0x2268 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "меньше, но не равно" + then: [T: "является"] + - T: "меньше, но не равно" - "≩": # 0x2269 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "больше, но не равно" + then: [T: "является"] + - T: "больше, но не равно" - "≪": # 0x226a - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "много меньше" + then: [T: "является"] + - T: "много меньше" - "≫": # 0x226b - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "много больше" + then: [T: "является"] + - T: "много больше" - "≬": # 0x226c - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "между" + then: [T: "является"] + - T: "между" - "≭": # 0x226d - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "не эквивалентно" + then: [T: "является"] + - T: "не эквивалентно" - "≮": # 0x226e - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "не меньше" + then: [T: "является"] + - T: "не меньше" - "≯": # 0x226f - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "не больше" + then: [T: "является"] + - T: "не больше" - "≰": # 0x2270 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "ни меньше, ни равно" + then: [T: "является"] + - T: "ни меньше, ни равно" - "≱": # 0x2271 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "ни больше, ни равно" + then: [T: "является"] + - T: "ни больше, ни равно" - "≲": # 0x2272 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "меньше или эквивалентно" + then: [T: "является"] + - T: "меньше или эквивалентно" - "≳": # 0x2273 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "больше или эквивалентно" + then: [T: "является"] + - T: "больше или эквивалентно" - "≴": # 0x2274 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "ни меньше, ни эквивалентно" + then: [T: "является"] + - T: "ни меньше, ни эквивалентно" - "≵": # 0x2275 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "ни больше, ни эквивалентно" + then: [T: "является"] + - T: "ни больше, ни эквивалентно" - "≶": # 0x2276 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "меньше или больше" + then: [T: "является"] + - T: "меньше или больше" - "≷": # 0x2277 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "больше или меньше" + then: [T: "является"] + - T: "больше или меньше" - "≸": # 0x2278 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "ни меньше, ни больше" + then: [T: "является"] + - T: "ни меньше, ни больше" - "≹": # 0x2279 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "ни больше, ни меньше" - - "≺": [t: "предшествует"] # 0x227a - - "≻": [t: "следует"] # 0x227b - - "≼": [t: "предшествует или равно"] # 0x227c - - "≽": [t: "следует или равно"] # 0x227d - - "≾": [t: "предшествует или эквивалентно"] # 0x227e - - "≿": [t: "следует или эквивалентно"] # 0x227f - - "⊀": [t: "не предшествует"] # 0x2280 - - "⊁": [t: "не следует"] # 0x2281 - - "⊂": # 0x2282 - - test: - if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "подмножеством" - - "⊃": # 0x2283 - - test: - if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "надмножеством" - - "⊄": # 0x2284 - - test: - if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "не подмножеством" - - "⊅": # 0x2285 - - test: - if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "не надмножеством" - - "⊆": # 0x2286 - - test: - if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "подмножеством или равно" - - "⊇": # 0x2287 - - test: - if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "надмножеством или равно" - - "⊈": # 0x2288 - - test: - if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "ни подмножеством, ни равно" - - "⊉": # 0x2289 - - test: - if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "ни надмножеством, ни равно" - - "⊊": [t: "подмножество, но не равно"] # 0x228a - - "⊋": [t: "надмножество, но не равно"] # 0x228b - - "⊌": [t: "мультимножество"] # 0x228c - - "⊍": [t: "умножение мультимножеств"] # 0x228d - - "⊎": [t: "объединение мультимножеств"] # 0x228e - - "⊏": [t: "квадратный образ"] # 0x228f - - "⊐": [t: "квадратный прообраз"] # 0x2290 - - "⊑": [t: "квадратный образ или равно"] # 0x2291 - - "⊒": [t: "квадратный прообраз или равно"] # 0x2292 - - "⊓": [t: "квадратное пересечение"] # 0x2293 - - "⊔": [t: "квадратное объединение"] # 0x2294 - - "⊕": [t: "плюс в круге"] # 0x2295 - - "⊖": [t: "минус в круге"] # 0x2296 - - "⊗": [t: "умножить в круге"] # 0x2297 - - "⊘": [t: "косая черта в круге"] # 0x2298 - - "⊙": [t: "точка в круге"] # 0x2299 - - "⊚": [t: "кольцо в круге"] # 0x229a - - "⊛": [t: "звёздочка в круге"] # 0x229b - - "⊜": [t: "равно в круге"] # 0x229c - - "⊝": [t: "тире в круге"] # 0x229d - - "⊞": [t: "плюс в квадрате"] # 0x229e - - "⊟": [t: "минус в квадрате"] # 0x229f - - "⊠": [t: "умножить в квадрате"] # 0x22a0 - - "⊡": [t: "точка в квадрате"] # 0x22a1 - - "⊢": [t: "доказывает"] # 0x22a2 - - "⊣": [t: "не выводит"] # 0x22a3 - - "⊤": [t: "истина"] # 0x22a4 - - "⊥": # 0x22a5 - - test: - if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "ложь" - - "⊦": [t: "сводится к"] # 0x22a6 - - "⊧": [t: "моделирует"] # 0x22a7 + then: [T: "является"] + - T: "ни больше, ни меньше" + - "≺": [T: "предшествует"] # 0x227a + - "≻": [T: "следует"] # 0x227b + - "≼": [T: "предшествует или равно"] # 0x227c + - "≽": [T: "следует или равно"] # 0x227d + - "≾": [T: "предшествует или эквивалентно"] # 0x227e + - "≿": [T: "следует или эквивалентно"] # 0x227f + - "⊀": [T: "не предшествует"] # 0x2280 + - "⊁": [T: "не следует"] # 0x2281 + - "⊂": [T: "строгое подмножество"] + - "⊃": [T: "строгое надмножество"] + - "⊄": [T: "не является строгим подмножеством"] + - "⊅": [T: "не является строгим надмножеством"] + - "⊆": [T: "подмножество или равно"] + - "⊇": [T: "надмножество или равно"] + - "⊈": [T: "не является подмножеством"] + - "⊉": [T: "не является надмножеством"] + - "⊊": [T: "строгое подмножество"] + - "⊋": [T: "строгое надмножество"] + - "⊌": [T: "мультимножество"] # 0x228c + - "⊍": [T: "умножение мультимножеств"] # 0x228d + - "⊎": [T: "объединение мультимножеств"] # 0x228e + - "⊏": [T: "квадратный образ"] # 0x228f + - "⊐": [T: "квадратный прообраз"] # 0x2290 + - "⊑": [T: "квадратный образ или равно"] # 0x2291 + - "⊒": [T: "квадратный прообраз или равно"] # 0x2292 + - "⊓": [T: "квадратное пересечение"] # 0x2293 + - "⊔": [T: "квадратное объединение"] # 0x2294 + - "⊕": [T: "плюс в круге"] # 0x2295 + - "⊖": [T: "минус в круге"] # 0x2296 + - "⊗": [T: "умножить в круге"] # 0x2297 + - "⊘": [T: "косая черта в круге"] # 0x2298 + - "⊙": [T: "точка в круге"] # 0x2299 + - "⊚": [T: "кольцо в круге"] # 0x229a + - "⊛": [T: "звёздочка в круге"] # 0x229b + - "⊜": [T: "равно в круге"] # 0x229c + - "⊝": [T: "тире в круге"] # 0x229d + - "⊞": [T: "плюс в квадрате"] # 0x229e + - "⊟": [T: "минус в квадрате"] # 0x229f + - "⊠": [T: "умножить в квадрате"] # 0x22a0 + - "⊡": [T: "точка в квадрате"] # 0x22a1 + - "⊢": [T: "доказывает"] # 0x22a2 + - "⊣": [T: "не выводит"] # 0x22a3 + - "⊤": [T: "истина"] # 0x22a4 + - "⊦": [T: "сводится к"] # 0x22a6 + - "⊧": [T: "моделирует"] # 0x22a7 - "⊨": # 0x22a8 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "истинно" - - "⊩": [t: "форсирует"] # 0x22a9 - - "⊪": [t: "тройная вертикальная черта с правым турникетом"] # 0x22aa - - "⊫": [t: "двойная вертикальная черта с двойным правым турникетом"] # 0x22ab - - "⊬": [t: "не доказывает"] # 0x22ac + then: [T: "является"] + - T: "истинно" + - "⊩": [T: "форсирует"] # 0x22a9 + - "⊪": [T: "тройная вертикальная черта с правым турникетом"] # 0x22aa + - "⊫": [T: "двойная вертикальная черта с двойным правым турникетом"] # 0x22ab + - "⊬": [T: "не доказывает"] # 0x22ac - "⊭": # 0x22ad - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "не истинно" - - "⊮": [t: "не форсирует"] # 0x22ae - - "⊯": [t: "отрицание двойной вертикальной черты с двойным правым турникетом"] # 0x22af - - "⊰": [t: "предшествует по отношению"] # 0x22b0 - - "⊱": [t: "следует по отношению"] # 0x22b1 + then: [T: "является"] + - T: "не истинно" + - "⊮": [T: "не форсирует"] # 0x22ae + - "⊯": [T: "отрицание двойной вертикальной черты с двойным правым турникетом"] # 0x22af + - "⊰": [T: "предшествует по отношению"] # 0x22b0 + - "⊱": [T: "следует по отношению"] # 0x22b1 - "⊲": # 0x22b2 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "нормальной подгруппой" - - "⊳": [t: "содержит как нормальную подгруппу"] # 0x22b3 + then: [T: "является"] + - T: "нормальной подгруппой" + - "⊳": [T: "содержит как нормальную подгруппу"] # 0x22b3 - "⊴": # 0x22b4 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "нормальной подгруппой или равно" - - "⊵": [t: "содержит как нормальную подгруппу или равно"] # 0x22b5 + then: [T: "является"] + - T: "нормальной подгруппой или равно" + - "⊵": [T: "содержит как нормальную подгруппу или равно"] # 0x22b5 - "⊶": # 0x22b6 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "прообразом" + then: [T: "является"] + - T: "прообразом" - "⊷": # 0x22b7 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "образом" - - "⊸": [t: "мультиотображение"] # 0x22b8 - - "⊹": [t: "эрмитово сопряжённая матрица"] # 0x22b9 - - "⊺": [t: "интеркалат"] # 0x22ba - - "⊻": [t: "исключающее или"] # 0x22bb - - "⊼": [t: "не-и"] # 0x22bc - - "⊽": [t: "не-или"] # 0x22bd - - "⊾": [t: "прямой угол с дугой"] # 0x22be - - "⊿": [t: "прямоугольный треугольник"] # 0x22bf - - "⋀": [t: "логическое и"] # 0x22c0 - - "⋁": [t: "логическое или"] # 0x22c1 - - "⋂": [t: "пересечение"] # 0x22c2 - - "⋃": [t: "объединение"] # 0x22c3 - - "⋄": [t: "ромб"] # 0x22c4 + then: [T: "является"] + - T: "образом" + - "⊸": [T: "мультиотображение"] # 0x22b8 + - "⊹": [T: "эрмитово сопряжённая матрица"] # 0x22b9 + - "⊺": [T: "интеркалат"] # 0x22ba + - "⊻": [T: "исключающее или"] # 0x22bb + - "⊼": [T: "не-и"] # 0x22bc + - "⊽": [T: "не-или"] # 0x22bd + - "⊾": [T: "прямой угол с дугой"] # 0x22be + - "⊿": [T: "прямоугольный треугольник"] # 0x22bf + - "⋀": [T: "логическое и"] # 0x22c0 + - "⋁": [T: "логическое или"] # 0x22c1 + - "⋂": [T: "пересечение"] # 0x22c2 + - "⋃": [T: "объединение"] # 0x22c3 + - "⋄": [T: "ромб"] # 0x22c4 - "⋅": # 0x22c5 - test: if: "@data-chem-formula-op" - then: [t: "точка"] - else: [t: "умножить"] + then: [T: "точка"] + else: [T: "умножить"] - - "⋆": [t: "умножить"] # 0x22c6 - - "⋇": [t: "деление с умножением"] # 0x22c7 - - "⋈": [t: "бантик"] # 0x22c8 + - "⋆": [T: "умножить"] # 0x22c6 + - "⋇": [T: "деление с умножением"] # 0x22c7 + - "⋈": [T: "бантик"] # 0x22c8 - "⋉": # 0x22c9 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "левым нормальным полупрямым произведением" + then: [T: "является"] + - T: "левым нормальным полупрямым произведением" - "⋊": # 0x22ca - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "правым нормальным полупрямым произведением" + then: [T: "является"] + - T: "правым нормальным полупрямым произведением" - "⋋": # 0x22cb - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "левым полупрямым произведением" + then: [T: "является"] + - T: "левым полупрямым произведением" - "⋌": # 0x22cc - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "правым полупрямым произведением" - - "⋍": [t: "обратная тильда равно"] # 0x22cd - - "⋎": [t: "фигурное логическое или"] # 0x22ce - - "⋏": [t: "фигурное логическое и"] # 0x22cf + then: [T: "является"] + - T: "правым полупрямым произведением" + - "⋍": [T: "обратная тильда равно"] # 0x22cd + - "⋎": [T: "фигурное логическое или"] # 0x22ce + - "⋏": [T: "фигурное логическое и"] # 0x22cf - "⋐": # 0x22d0 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "двойным подмножеством" + then: [T: "является"] + - T: "двойным подмножеством" - "⋑": # 0x22d1 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "двойным надмножеством" + then: [T: "является"] + - T: "двойным надмножеством" - "⋒": # 0x22d2 - test: if: "$Verbosity!='Terse'" - then: [ot: "the"] - - t: "двойное пересечение" + then: [OT: "the"] + - T: "двойное пересечение" - "⋓": # 0x22d3 - test: if: "$Verbosity!='Terse'" - then: [ot: "the"] - - t: "двойное объединение" + then: [OT: "the"] + - T: "двойное объединение" - "⋔": # 0x22d4 - test: if: "$Verbosity!='Terse'" - then: [ot: "the"] - - t: "собственное пересечение" + then: [OT: "the"] + - T: "собственное пересечение" - "⋕": # 0x22d5 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "равно и параллельно" - - "⋖": [t: "меньше с точкой"] # 0x22d6 - - "⋗": [t: "больше с точкой"] # 0x22d7 + then: [T: "является"] + - T: "равно и параллельно" + - "⋖": [T: "меньше с точкой"] # 0x22d6 + - "⋗": [T: "больше с точкой"] # 0x22d7 - "⋘": # 0x22d8 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "очень много меньше" + then: [T: "является"] + - T: "очень много меньше" - "⋙": # 0x22d9 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "очень много больше" + then: [T: "является"] + - T: "очень много больше" - "⋚": # 0x22da - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "меньше, равно или больше" + then: [T: "является"] + - T: "меньше, равно или больше" - "⋛": # 0x22db - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "больше, равно или меньше" + then: [T: "является"] + - T: "больше, равно или меньше" - "⋜": # 0x22dc - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "равно или меньше" + then: [T: "является"] + - T: "равно или меньше" - "⋝": # 0x22dd - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "равно или больше" + then: [T: "является"] + - T: "равно или больше" - "⋞": # 0x22de - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "равно или предшествует" + then: [T: "является"] + - T: "равно или предшествует" - "⋟": # 0x22df - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "равно или следует" - - "⋠": [t: "не предшествует и не равно"] # 0x22e0 - - "⋡": [t: "не следует и не равно"] # 0x22e1 - - "⋢": [t: "не квадратный образ или равно"] # 0x22e2 - - "⋣": [t: "не квадратный прообраз или равно"] # 0x22e3 - - "⋤": [t: "квадратный образ или не равно"] # 0x22e4 - - "⋥": [t: "квадратный прообраз или не равно"] # 0x22e5 + then: [T: "является"] + - T: "равно или следует" + - "⋠": [T: "не предшествует и не равно"] # 0x22e0 + - "⋡": [T: "не следует и не равно"] # 0x22e1 + - "⋢": [T: "не квадратный образ или равно"] # 0x22e2 + - "⋣": [T: "не квадратный прообраз или равно"] # 0x22e3 + - "⋤": [T: "квадратный образ или не равно"] # 0x22e4 + - "⋥": [T: "квадратный прообраз или не равно"] # 0x22e5 - "⋦": # 0x22e6 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "меньше, но не эквивалентно" + then: [T: "является"] + - T: "меньше, но не эквивалентно" - "⋧": # 0x22e7 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "больше, но не эквивалентно" - - "⋨": [t: "предшествует, но не эквивалентно"] # 0x22e8 - - "⋩": [t: "следует, но не эквивалентно"] # 0x22e9 + then: [T: "является"] + - T: "больше, но не эквивалентно" + - "⋨": [T: "предшествует, но не эквивалентно"] # 0x22e8 + - "⋩": [T: "следует, но не эквивалентно"] # 0x22e9 - "⋪": # 0x22ea - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "не нормальной подгруппой" - - "⋫": [t: "не содержит как нормальную подгруппу"] # 0x22eb + then: [T: "является"] + - T: "не нормальной подгруппой" + - "⋫": [T: "не содержит как нормальную подгруппу"] # 0x22eb - "⋬": # 0x22ec - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "не нормальной подгруппой и не равно" - - "⋭": [t: "не содержит как нормальную подгруппу и не равно"] # 0x22ed - - "⋮": [t: "вертикальное многоточие"] # 0x22ee - - "⋯": [t: "точка точка точка"] # 0x22ef - - "⋰": [t: "диагональное многоточие вверх"] # 0x22f0 - - "⋱": [t: "диагональное многоточие"] # 0x22f1 - - "⋲": [t: "элемент с длинным горизонтальным штрихом"] # 0x22f2 - - "⋳": [t: "элемент с вертикальной чертой в конце горизонтального штриха"] # 0x22f3 - - "⋴": [t: "элемент с вертикальной чертой в конце горизонтального штриха"] # 0x22f4 - - "⋵": [t: "элемент с точкой сверху"] # 0x22f5 - - "⋶": [t: "элемент с надчеркиванием"] # 0x22f6 - - "⋷": [t: "элемент с надчеркиванием"] # 0x22f7 - - "⋸": [t: "элемент с подчеркиванием"] # 0x22f8 - - "⋹": [t: "элемент с двумя горизонтальными штрихами"] # 0x22f9 - - "⋺": [t: "содержит с длинным горизонтальным штрихом"] # 0x22fa - - "⋻": [t: "содержит с вертикальной чертой в конце горизонтального штриха"] # 0x22fb - - "⋼": [t: "содержит с вертикальной чертой в конце горизонтального штриха"] # 0x22fc - - "⋽": [t: "содержит с надчеркиванием"] # 0x22fd - - "⋾": [t: "содержит с надчеркиванием"] # 0x22fe - - "⋿": [t: "Z-нотация принадлежность мультимножеству"] # 0x22ff - - "⌀": [t: "диаметр"] # 0x2300 - - "⌁": [t: "электрическая стрелка"] # 0x2301 - - "⌂": [t: "домик"] # 0x2302 - - "⌃": [t: "наконечник стрелки вверх"] # 0x2303 - - "⌄": [t: "наконечник стрелки вниз"] # 0x2304 - - "⌅": [t: "проективный"] # 0x2305 - - "⌆": [t: "перспектива"] # 0x2306 - - "⌇": [t: "волнистая линия"] # 0x2307 - - "⌈": [t: "левый потолок"] # 0x2308 - - "⌉": [t: "правый потолок"] # 0x2309 - - "⌊": [t: "левый пол"] # 0x230a - - "⌋": [t: "правый пол"] # 0x230b - - "⌌": [t: "нижняя правая обрезка"] # 0x230c - - "⌍": [t: "нижняя левая обрезка"] # 0x230d - - "⌎": [t: "верхняя правая обрезка"] # 0x230e - - "⌏": [t: "верхняя левая обрезка"] # 0x230f - - "⌐": [t: "обратный знак отрицания"] # 0x2310 - - "⌑": [t: "квадратная луковица"] # 0x2311 - - "⌒": [t: "дуга"] # 0x2312 - - "⌓": [t: "сегмент"] # 0x2313 - - "⌔": [t: "сектор"] # 0x2314 - - "⌕": [t: "телефонный рекордер"] # 0x2315 - - "⌖": [t: "перекрестие индикатора позиции"] # 0x2316 - - "⌗": [t: "квадрат видеоданных"] # 0x2317 - - "⌘": [t: "знак места интереса"] # 0x2318 - - "⌙": [t: "перевёрнутый знак отрицания"] # 0x2319 - - "⌚": [t: "часы"] # 0x231a - - "⌛": [t: "песочные часы"] # 0x231b - - "⌜": [t: "верхний левый угол"] # 0x231c - - "⌝": [t: "верхний правый угол"] # 0x231d - - "⌞": [t: "нижний левый угол"] # 0x231e - - "⌟": [t: "нижний правый угол"] # 0x231f - - "⌠": [t: "верхняя половина интеграла"] # 0x2320 - - "⌡": [t: "нижняя половина интеграла"] # 0x2321 - - "⌢": [t: "хмурый"] # 0x2322 - - "⌣": [t: "улыбка"] # 0x2323 - - "⌤": [t: "наконечник стрелки вверх между двумя горизонтальными чертами"] # 0x2324 - - "⌥": [t: "клавиша Option"] # 0x2325 - - "⌦": [t: "стереть вправо"] # 0x2326 - - "⌧": [t: "x в прямоугольной рамке"] # 0x2327 - - "⌨": [t: "клавиатура"] # 0x2328 - - "〈": [t: "левая угловая скобка"] # 0x2329 - - "〉": [t: "правая угловая скобка"] # 0x232a - - "⌫": [t: "стереть влево"] # 0x232b - - "⌬": [t: "бензольное кольцо"] # 0x232c - - "⌭": [t: "цилиндричность"] # 0x232d - - "⌮": [t: "профиль по всему контуру"] # 0x232e - - "⌯": [t: "симметрия"] # 0x232f - - "⌰": [t: "полное радиальное биение"] # 0x2330 - - "⌱": [t: "начало размера"] # 0x2331 - - "⌲": [t: "конусность"] # 0x2332 - - "⌳": [t: "уклон"] # 0x2333 - - "⌴": [t: "цековка"] # 0x2334 - - "⌵": [t: "зенковка"] # 0x2335 - - "⌶": [t: "APL двутавр"] # 0x2336 - - "⌽": [t: "APL круговой столбик"] # 0x233d - - "⌿": [t: "APL косая черта"] # 0x233f - - "⍰": [t: "неизвестный ящик"] # 0x2370 - - "⍼": [t: "прямой угол с зигзагообразной стрелкой вниз"] # 0x237c - - "⎔": [t: "шестиугольник"] # 0x2394 - - "⎕": [t: "ящик"] # 0x2395 - - "⎶": [t: "нижняя квадратная скобка над верхней квадратной скобкой"] # 0x23b6 - - "⏜": [t: "верхняя скобка"] # 0x23dc - - "⏝": [t: "нижняя скобка"] # 0x23dd - - "⏞": [t: "верхняя фигурная скобка"] # 0x23de - - "⏟": [t: "нижняя фигурная скобка"] # 0x23df - - "⏠": [t: "верхняя черепашья скобка"] # 0x23e0 - - "⏡": [t: "нижняя черепашья скобка"] # 0x23e1 - - "⏢": [t: "белая трапеция"] # 0x23e2 - - "⏣": [t: "бензол с кругом справа"] # 0x23e3 - - "⏤": [t: "прямолинейность"] # 0x23e4 - - "⏥": [t: "плоскостность"] # 0x23e5 + then: [T: "является"] + - T: "не нормальной подгруппой и не равно" + - "⋭": [T: "не содержит как нормальную подгруппу и не равно"] # 0x22ed + - "⋮": [T: "вертикальное многоточие"] # 0x22ee + - "⋯": [T: "точка точка точка"] # 0x22ef + - "⋰": [T: "диагональное многоточие вверх"] # 0x22f0 + - "⋱": [T: "диагональное многоточие"] # 0x22f1 + - "⋲": [T: "элемент с длинным горизонтальным штрихом"] # 0x22f2 + - "⋳": [T: "элемент с вертикальной чертой в конце горизонтального штриха"] # 0x22f3 + - "⋴": [T: "элемент с вертикальной чертой в конце горизонтального штриха"] # 0x22f4 + - "⋵": [T: "элемент с точкой сверху"] # 0x22f5 + - "⋶": [T: "элемент с надчеркиванием"] # 0x22f6 + - "⋷": [T: "элемент с надчеркиванием"] # 0x22f7 + - "⋸": [T: "элемент с подчеркиванием"] # 0x22f8 + - "⋹": [T: "элемент с двумя горизонтальными штрихами"] # 0x22f9 + - "⋺": [T: "содержит с длинным горизонтальным штрихом"] # 0x22fa + - "⋻": [T: "содержит с вертикальной чертой в конце горизонтального штриха"] # 0x22fb + - "⋼": [T: "содержит с вертикальной чертой в конце горизонтального штриха"] # 0x22fc + - "⋽": [T: "содержит с надчеркиванием"] # 0x22fd + - "⋾": [T: "содержит с надчеркиванием"] # 0x22fe + - "⋿": [T: "Z-нотация принадлежность мультимножеству"] # 0x22ff + - "⌀": [T: "диаметр"] # 0x2300 + - "⌁": [T: "электрическая стрелка"] # 0x2301 + - "⌂": [T: "домик"] # 0x2302 + - "⌃": [T: "наконечник стрелки вверх"] # 0x2303 + - "⌄": [T: "наконечник стрелки вниз"] # 0x2304 + - "⌅": [T: "проективный"] # 0x2305 + - "⌆": [T: "перспектива"] # 0x2306 + - "⌇": [T: "волнистая линия"] # 0x2307 + - "⌈": [T: "левый потолок"] # 0x2308 + - "⌉": [T: "правый потолок"] # 0x2309 + - "⌊": [T: "левый пол"] # 0x230a + - "⌋": [T: "правый пол"] # 0x230b + - "⌌": [T: "нижняя правая обрезка"] # 0x230c + - "⌍": [T: "нижняя левая обрезка"] # 0x230d + - "⌎": [T: "верхняя правая обрезка"] # 0x230e + - "⌏": [T: "верхняя левая обрезка"] # 0x230f + - "⌐": [T: "обратный знак отрицания"] # 0x2310 + - "⌑": [T: "квадратная луковица"] # 0x2311 + - "⌒": [T: "дуга"] # 0x2312 + - "⌓": [T: "сегмент"] # 0x2313 + - "⌔": [T: "сектор"] # 0x2314 + - "⌕": [T: "телефонный рекордер"] # 0x2315 + - "⌖": [T: "перекрестие индикатора позиции"] # 0x2316 + - "⌗": [T: "квадрат видеоданных"] # 0x2317 + - "⌘": [T: "знак места интереса"] # 0x2318 + - "⌙": [T: "перевёрнутый знак отрицания"] # 0x2319 + - "⌚": [T: "часы"] # 0x231a + - "⌛": [T: "песочные часы"] # 0x231b + - "⌜": [T: "верхний левый угол"] # 0x231c + - "⌝": [T: "верхний правый угол"] # 0x231d + - "⌞": [T: "нижний левый угол"] # 0x231e + - "⌟": [T: "нижний правый угол"] # 0x231f + - "⌠": [T: "верхняя половина интеграла"] # 0x2320 + - "⌡": [T: "нижняя половина интеграла"] # 0x2321 + - "⌢": [T: "хмурый"] # 0x2322 + - "⌣": [T: "улыбка"] # 0x2323 + - "⌤": [T: "наконечник стрелки вверх между двумя горизонтальными чертами"] # 0x2324 + - "⌥": [T: "клавиша Option"] # 0x2325 + - "⌦": [T: "стереть вправо"] # 0x2326 + - "⌧": [T: "x в прямоугольной рамке"] # 0x2327 + - "⌨": [T: "клавиатура"] # 0x2328 + - "〈": [T: "левая угловая скобка"] # 0x2329 + - "〉": [T: "правая угловая скобка"] # 0x232a + - "⌫": [T: "стереть влево"] # 0x232b + - "⌬": [T: "бензольное кольцо"] # 0x232c + - "⌭": [T: "цилиндричность"] # 0x232d + - "⌮": [T: "профиль по всему контуру"] # 0x232e + - "⌯": [T: "симметрия"] # 0x232f + - "⌰": [T: "полное радиальное биение"] # 0x2330 + - "⌱": [T: "начало размера"] # 0x2331 + - "⌲": [T: "конусность"] # 0x2332 + - "⌳": [T: "уклон"] # 0x2333 + - "⌴": [T: "цековка"] # 0x2334 + - "⌵": [T: "зенковка"] # 0x2335 + - "⌶": [T: "APL двутавр"] # 0x2336 + - "⌽": [T: "APL круговой столбик"] # 0x233d + - "⌿": [T: "APL косая черта"] # 0x233f + - "⍰": [T: "неизвестный ящик"] # 0x2370 + - "⍼": [T: "прямой угол с зигзагообразной стрелкой вниз"] # 0x237c + - "⎔": [T: "шестиугольник"] # 0x2394 + - "⎕": [T: "ящик"] # 0x2395 + - "⎶": [T: "нижняя квадратная скобка над верхней квадратной скобкой"] # 0x23b6 + - "⏜": [T: "верхняя скобка"] # 0x23dc + - "⏝": [T: "нижняя скобка"] # 0x23dd + - "⏞": [T: "верхняя фигурная скобка"] # 0x23de + - "⏟": [T: "нижняя фигурная скобка"] # 0x23df + - "⏠": [T: "верхняя черепашья скобка"] # 0x23e0 + - "⏡": [T: "нижняя черепашья скобка"] # 0x23e1 + - "⏢": [T: "белая трапеция"] # 0x23e2 + - "⏣": [T: "бензол с кругом справа"] # 0x23e3 + - "⏤": [T: "прямолинейность"] # 0x23e4 + - "⏥": [T: "плоскостность"] # 0x23e5 - "⏦": # 0x23e6 - - spell: "ac" - - t: "ток" - - "⏧": [t: "электрическое пересечение"] # 0x23e7 - - "①": [t: "один в кружке"] - - "⑨": [t: "девять в кружке"] - - "②③④⑤⑥⑦⑧": # 0x2461 - 0x2468 - - t: "в кружке" - - spell: "translate('.', '②③④⑤⑥⑦⑧', '2345678')" - - "⑩": [t: "десять в круге"] # 0x2469 - - "⑪": [t: "одиннадцать в круге"] # 0x246a - - "⑫": [t: "двенадцать в круге"] # 0x246b - - "⑬": [t: "тринадцать в круге"] # 0x246c - - "⑭": [t: "четырнадцать в круге"] # 0x246d - - "⑮": [t: "пятнадцать в круге"] # 0x246e - - "⑯": [t: "шестнадцать в круге"] # 0x246f - - "⑰": [t: "семнадцать в круге"] # 0x2470 - - "⑱": [t: "восемнадцать в круге"] # 0x2471 - - "⑳": [t: "двадцать в круге"] # 0x2473 - - "⑴": [t: "один в скобках"] - - "⑼": [t: "девять в скобках"] - - "⑵⑶⑷⑸⑹⑺⑻": # 0x2475 - 0x247c - - t: "в скобках" - - spell: "translate('.', '⑵⑶⑷⑸⑹⑺⑻', '2345678')" - - "⑽": [t: "десять в скобках"] # 0x247d - - "⑾": [t: "одиннадцать в скобках"] # 0x247e - - "⑿": [t: "двенадцать в скобках"] # 0x247f - - "⒀": [t: "тринадцать в скобках"] # 0x2480 - - "⒁": [t: "четырнадцать в скобках"] # 0x2481 - - "⒂": [t: "пятнадцать в скобках"] # 0x2482 - - "⒃": [t: "шестнадцать в скобках"] # 0x2483 - - "⒄": [t: "семнадцать в скобках"] # 0x2484 - - "⒅": [t: "восемнадцать в скобках"] # 0x2485 - - "⒆": [t: "девятнадцать в скобках"] # 0x2486 - - "⒇": [t: "двадцать в скобках"] # 0x2487 - - "⒈": [t: "один с точкой"] - - "⒐": [t: "девять с точкой"] - - "⒉⒊⒋⒌⒍⒎⒏": # 0x2489 - 0x2490 - - spell: "translate('.', '⒉⒊⒋⒌⒍⒎⒏', '2345678')" - - t: "с точкой" - - "⒑": [t: "десять с точкой"] # 0x2491 - - "⒒": [t: "одиннадцать с точкой"] # 0x2492 - - "⒓": [t: "двенадцать с точкой"] # 0x2493 - - "⒔": [t: "тринадцать с точкой"] # 0x2494 - - "⒕": [t: "четырнадцать с точкой"] # 0x2495 - - "⒖": [t: "пятнадцать с точкой"] # 0x2496 - - "⒗": [t: "шестнадцать с точкой"] # 0x2497 - - "⒘": [t: "семнадцать с точкой"] # 0x2498 - - "⒙": [t: "восемнадцать с точкой"] # 0x2499 - - "⒚": [t: "девятнадцать с точкой"] # 0x249a - - "⒛": [t: "двадцать с точкой"] # 0x249b + - T: "переменный ток" + - "⏧": [T: "электрическое пересечение"] # 0x23e7 + - "①-⑨": + - test: + - if: "'.' = '①'" + then: [T: "один в кружке"] + - else_if: "'.' = '⑨'" + then: [T: "девять в кружке"] + else: + - T: "в кружке" + - SPELL: "translate('.', '②③④⑤⑥⑦⑧', '2345678')" + - "⑩": [T: "десять в круге"] # 0x2469 + - "⑪": [T: "одиннадцать в круге"] # 0x246a + - "⑫": [T: "двенадцать в круге"] # 0x246b + - "⑬": [T: "тринадцать в круге"] # 0x246c + - "⑭": [T: "четырнадцать в круге"] # 0x246d + - "⑮": [T: "пятнадцать в круге"] # 0x246e + - "⑯": [T: "шестнадцать в круге"] # 0x246f + - "⑰": [T: "семнадцать в круге"] # 0x2470 + - "⑱": [T: "восемнадцать в круге"] # 0x2471 + - "⑳": [T: "двадцать в круге"] # 0x2473 + - "⑴-⑼": + - test: + - if: "'.' = '⑴'" + then: [T: "один в скобках"] + - else_if: "'.' = '⑼'" + then: [T: "девять в скобках"] + else: + - T: "в скобках" + - SPELL: "translate('.', '⑵⑶⑷⑸⑹⑺⑻', '2345678')" + - "⑽": [T: "десять в скобках"] # 0x247d + - "⑾": [T: "одиннадцать в скобках"] # 0x247e + - "⑿": [T: "двенадцать в скобках"] # 0x247f + - "⒀": [T: "тринадцать в скобках"] # 0x2480 + - "⒁": [T: "четырнадцать в скобках"] # 0x2481 + - "⒂": [T: "пятнадцать в скобках"] # 0x2482 + - "⒃": [T: "шестнадцать в скобках"] # 0x2483 + - "⒄": [T: "семнадцать в скобках"] # 0x2484 + - "⒅": [T: "восемнадцать в скобках"] # 0x2485 + - "⒆": [T: "девятнадцать в скобках"] # 0x2486 + - "⒇": [T: "двадцать в скобках"] # 0x2487 + - "⒈-⒐": + - test: + - if: "'.' = '⒈'" + then: [T: "один с точкой"] + - else_if: "'.' = '⒐'" + then: [T: "девять с точкой"] + else: + - SPELL: "translate('.', '⒉⒊⒋⒌⒍⒎⒏', '2345678')" + - T: "с точкой" + - "⒑": [T: "десять с точкой"] # 0x2491 + - "⒒": [T: "одиннадцать с точкой"] # 0x2492 + - "⒓": [T: "двенадцать с точкой"] # 0x2493 + - "⒔": [T: "тринадцать с точкой"] # 0x2494 + - "⒕": [T: "четырнадцать с точкой"] # 0x2495 + - "⒖": [T: "пятнадцать с точкой"] # 0x2496 + - "⒗": [T: "шестнадцать с точкой"] # 0x2497 + - "⒘": [T: "семнадцать с точкой"] # 0x2498 + - "⒙": [T: "восемнадцать с точкой"] # 0x2499 + - "⒚": [T: "девятнадцать с точкой"] # 0x249a + - "⒛": [T: "двадцать с точкой"] # 0x249b - "⒜-⒵": # 0x249c - 0x24b5 - - spell: "translate('.', '⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵', 'abcdefghijklmnopqrstuvwxyz')" - - t: "в скобках" + - SPELL: "translate('.', '⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵', 'abcdefghijklmnopqrstuvwxyz')" + - T: "в скобках" - - "Ⓐ-ⓩ": # 0x24b6 - 0x24cf - - spell: "translate('.', 'ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏ', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" - - t: "в кружке" + - "Ⓐ-Ⓩ": # 0x24b6 - 0x24cf + - SPELL: "translate('.', 'ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏ', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" + - T: "в кружке" - "🅐-🅩": # 0x1f150 - 0x1f169 - - t: "в чёрном круге" - - spell: "translate('.', '🅐🅑🅒🅓🅔🅕🅖🅗🅘🅙🅚🅛🅜🅝🅞🅟🅠🅡🅢🅣🅤🅥🅦🅧🅨🅩', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" + - T: "в чёрном круге" + - SPELL: "translate('.', '🅐🅑🅒🅓🅔🅕🅖🅗🅘🅙🅚🅛🅜🅝🅞🅟🅠🅡🅢🅣🅤🅥🅦🅧🅨🅩', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" - "ⓐ-ⓩ": # 0x24d0 - 0x24e9 - - spell: "translate('.', 'ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ', 'abcdefghijklmnopqrstuvwxyz')" - - t: "в кружке" - - "⓪": [t: "ноль в круге"] # 0x24ea - - "⓫": [t: "одиннадцать в чёрном круге"] # 0x24eb - - "⓬": [t: "двенадцать в чёрном круге"] # 0x24ec - - "⓭": [t: "тринадцать в чёрном круге"] # 0x24ed - - "⓮": [t: "четырнадцать в чёрном круге"] # 0x24ee - - "⓯": [t: "пятнадцать в чёрном круге"] # 0x24ef - - "⓰": [t: "шестнадцать в чёрном круге"] # 0x24f0 - - "⓱": [t: "семнадцать в чёрном круге"] # 0x24f1 - - "⓲": [t: "восемнадцать в чёрном круге"] # 0x24f2 - - "⓳": [t: "девятнадцать в чёрном круге"] # 0x24f3 - - "⓴": [t: "двадцать в чёрном круге"] # 0x24f4 - - "⓵": [t: "один в двойном кружке"] - - "⓽": [t: "девять в двойном кружке"] - - "⓶⓷⓸⓹⓺⓻⓼": # 0x24f6 - 0x24fd - - t: "в двойном кружке" - - spell: "translate('.', '⓶⓷⓸⓹⓺⓻⓼', '2345678')" - - "⓾": [t: "десять в двойном круге"] # 0x24fe - - "⓿": [t: "ноль в чёрном круге"] # 0x24ff - - "■": [t: "чёрный квадрат"] # 0x25a0 - - "□": [t: "белый квадрат"] # 0x25a1 - - "▢": [t: "белый квадрат со скруглёнными углами"] # 0x25a2 - - "▣": [t: "белый квадрат, содержащий маленький чёрный квадрат"] # 0x25a3 - - "▤": [t: "квадрат с горизонтальной заливкой"] # 0x25a4 - - "▥": [t: "квадрат с вертикальной заливкой"] # 0x25a5 - - "▦": [t: "квадрат с ортогональной перекрёстной штриховкой"] # 0x25a6 - - "▧": [t: "квадрат с заливкой от верхнего левого к нижнему правому"] # 0x25a7 - - "▨": [t: "квадрат с заливкой от верхнего правого к нижнему левому"] # 0x25a8 - - "▩": [t: "квадрат с диагональной перекрёстной штриховкой"] # 0x25a9 - - "▪": [t: "чёрный маленький квадрат"] # 0x25aa - - "▫": [t: "белый маленький квадрат"] # 0x25ab - - "▬": [t: "чёрный прямоугольник"] # 0x25ac - - "▭": [t: "белый прямоугольник"] # 0x25ad - - "▮": [t: "чёрный вертикальный прямоугольник"] # 0x25ae - - "▯": [t: "белый вертикальный прямоугольник"] # 0x25af - - "▰": [t: "чёрный параллелограмм"] # 0x25b0 - - "▱": [t: "белый параллелограмм"] # 0x25b1 - - "▲": [t: "чёрный треугольник остриём вверх"] # 0x25b2 - - "△": [t: "треугольник"] # 0x25b3 - - "▴": [t: "чёрный маленький треугольник остриём вверх"] # 0x25b4 - - "▵": [t: "белый маленький треугольник остриём вверх"] # 0x25b5 - - "▶": [t: "чёрный треугольник остриём вправо"] # 0x25b6 - - "▷": [t: "белый треугольник остриём вправо"] # 0x25b7 - - "▸": [t: "чёрный маленький треугольник остриём вправо"] # 0x25b8 - - "▹": [t: "белый маленький треугольник остриём вправо"] # 0x25b9 - - "►": [t: "чёрный указатель вправо"] # 0x25ba - - "▻": [t: "белый указатель вправо"] # 0x25bb - - "▼": [t: "чёрный треугольник остриём вниз"] # 0x25bc - - "▽": [t: "белый треугольник остриём вниз"] # 0x25bd - - "▾": [t: "чёрный маленький треугольник остриём вниз"] # 0x25be - - "▿": [t: "белый маленький треугольник остриём вниз"] # 0x25bf - - "◀": [t: "чёрный треугольник остриём влево"] # 0x25c0 - - "◁": [t: "белый треугольник остриём влево"] # 0x25c1 - - "◂": [t: "чёрный маленький треугольник остриём влево"] # 0x25c2 - - "◃": [t: "белый маленький треугольник остриём влево"] # 0x25c3 - - "◄": [t: "чёрный указатель влево"] # 0x25c4 - - "◅": [t: "белый указатель влево"] # 0x25c5 - - "◆": [t: "чёрный ромб"] # 0x25c6 - - "◇": [t: "белый ромб"] # 0x25c7 - - "◈": [t: "белый ромб, содержащий чёрный маленький ромб"] # 0x25c8 - - "◉": [t: "рыбий глаз"] # 0x25c9 - - "◊": [t: "луковица"] # 0x25ca - - "○": [t: "белый круг"] # 0x25cb - - "◌": [t: "пунктирный круг"] # 0x25cc - - "◍": [t: "круг с вертикальной заливкой"] # 0x25cd - - "◎": [t: "мишень"] # 0x25ce - - "●": [t: "чёрный круг"] # 0x25cf - - "◐": [t: "круг с левой половиной чёрной"] # 0x25d0 - - "◑": [t: "круг с правой половиной чёрной"] # 0x25d1 - - "◒": [t: "круг с нижней половиной чёрной"] # 0x25d2 - - "◓": [t: "круг с верхней половиной чёрной"] # 0x25d3 - - "◔": [t: "круг с верхним правым квадрантом чёрным"] # 0x25d4 - - "◕": [t: "круг со всем, кроме верхнего левого квадранта, чёрным"] # 0x25d5 - - "◖": [t: "левая половина чёрного круга"] # 0x25d6 - - "◗": [t: "правая половина чёрного круга"] # 0x25d7 - - "◘": [t: "инверсный буллит"] # 0x25d8 - - "◙": [t: "инверсный белый круг"] # 0x25d9 - - "◚": [t: "верхняя половина инверсного белого круга"] # 0x25da - - "◛": [t: "нижняя половина инверсного белого круга"] # 0x25db - - "◜": [t: "дуга верхнего левого квадранта"] # 0x25dc - - "◝": [t: "дуга верхнего правого квадранта"] # 0x25dd - - "◞": [t: "дуга нижнего правого квадранта"] # 0x25de - - "◟": [t: "дуга нижнего левого квадранта"] # 0x25df - - "◠": [t: "верхняя половина круга"] # 0x25e0 - - "◡": [t: "нижняя половина круга"] # 0x25e1 - - "◢": [t: "чёрный нижний правый треугольник"] # 0x25e2 - - "◣": [t: "чёрный нижний левый треугольник"] # 0x25e3 - - "◤": [t: "чёрный верхний левый треугольник"] # 0x25e4 - - "◥": [t: "чёрный верхний правый треугольник"] # 0x25e5 - - "◦": [t: "композиция"] # 0x25e6 - - "◧": [t: "квадрат с левой половиной чёрной"] # 0x25e7 - - "◨": [t: "квадрат с правой половиной чёрной"] # 0x25e8 - - "◩": [t: "квадрат с верхней левой половиной чёрной"] # 0x25e9 - - "◪": [t: "квадрат с нижней правой половиной чёрной"] # 0x25ea - - "◫": [t: "белый квадрат с биссектрисой"] # 0x25eb - - "◬": [t: "белый треугольник остриём вверх с точкой"] # 0x25ec - - "◭": [t: "треугольник остриём вверх с левой половиной чёрной"] # 0x25ed - - "◮": [t: "треугольник остриём вверх с правой половиной чёрной"] # 0x25ee - - "◯": [t: "большой круг"] # 0x25ef - - "◰": [t: "белый квадрат с верхним левым квадрантом"] # 0x25f0 - - "◱": [t: "белый квадрат с нижним левым квадрантом"] # 0x25f1 - - "◲": [t: "белый квадрат с нижним правым квадрантом"] # 0x25f2 - - "◳": [t: "белый квадрат с верхним правым квадрантом"] # 0x25f3 - - "◴": [t: "белый круг с верхним левым квадрантом"] # 0x25f4 - - "◵": [t: "белый круг с нижним левым квадрантом"] # 0x25f5 - - "◶": [t: "белый круг с нижним правым квадрантом"] # 0x25f6 - - "◷": [t: "белый круг с верхним правым квадрантом"] # 0x25f7 - - "◸": [t: "верхний левый треугольник"] # 0x25f8 - - "◹": [t: "верхний правый треугольник"] # 0x25f9 - - "◺": [t: "нижний левый треугольник"] # 0x25fa - - "◻": [t: "белый средний квадрат"] # 0x25fb - - "◼": [t: "чёрный средний квадрат"] # 0x25fc - - "◽": [t: "белый средне-маленький квадрат"] # 0x25fd - - "◾": [t: "чёрный средне-маленький квадрат"] # 0x25fe - - "◿": [t: "нижний правый треугольник"] # 0x25ff - - "★": [t: "чёрная звезда"] # 0x2605 - - "☆": [t: "белая звезда"] # 0x2606 - - "☉": [t: "солнце"] # 0x2609 - - "☌": [t: "соединение"] # 0x260c - - "☒": [t: "бюллетень с крестиком"] # 0x2612 - - "☽": [t: "растущая луна"] # 0x263d - - "☾": [t: "убывающая луна"] # 0x263e - - "☿": [t: "Меркурий"] # 0x263f - - "♀": [t: "женский"] # 0x2640 - - "♁": [t: "Земля"] # 0x2641 - - "♂": [t: "мужской"] # 0x2642 - - "♃": [t: "Юпитер"] # 0x2643 - - "♄": [t: "Сатурн"] # 0x2644 - - "♅": [t: "Уран"] # 0x2645 - - "♆": [t: "Нептун"] # 0x2646 - - "♇": [t: "Плутон"] # 0x2647 - - "♈": [t: "Овен"] # 0x2648 - - "♉": [t: "Телец"] # 0x2649 - - "♩": [t: "четвертная нота"] # 0x2669 - - "♭": [t: "бемоль"] # 0x266d - - "♮": [t: "бекар"] # 0x266e - - "♯": [t: "диез"] # 0x266f - - "♠": [t: "чёрная масть пики"] # 0x2660 - - "♡": [t: "белая масть червы"] # 0x2661 - - "♢": [t: "белая масть бубны"] # 0x2662 - - "♣": [t: "чёрная масть трефы"] # 0x2663 - - "♤": [t: "белая масть пики"] # 0x2664 - - "♥": [t: "чёрная масть червы"] # 0x2665 - - "♦": [t: "чёрная масть бубны"] # 0x2666 - - "♧": [t: "белая масть трефы"] # 0x2667 - - "⚀": [t: "кость 1"] # 0x2680 - - "⚁": [t: "кость 2"] # 0x2681 - - "⚂": [t: "кость 3"] # 0x2682 - - "⚃": [t: "кость 4"] # 0x2683 - - "⚄": [t: "кость 5"] # 0x2684 - - "⚅": [t: "кость 6"] # 0x2685 - - "⚆": [t: "белый круг с точкой справа"] # 0x2686 - - "⚇": [t: "белый круг с двумя точками"] # 0x2687 - - "⚈": [t: "чёрный круг с точкой справа"] # 0x2688 - - "⚉": [t: "чёрный круг с двумя точками"] # 0x2689 - - "⚪": [t: "средний белый круг"] # 0x26aa - - "⚫": [t: "средний чёрный круг"] # 0x26ab - - "⚬": [t: "средний маленький белый круг"] # 0x26ac - - "⚲": [t: "средний род"] # 0x26b2 - - "✓": [t: "галочка"] # 0x2713 - - "✠": [t: "мальтийский крест"] # 0x2720 - - "✪": [t: "белая звезда в круге"] # 0x272a - - "✶": [t: "шестиконечная чёрная звезда"] # 0x2736 - - "❨": [t: "средний левый круглый орнамент"] # 0x2768 - - "❩": [t: "средний правый круглый орнамент"] # 0x2769 - - "❪": [t: "средний уплощённый левый круглый орнамент"] # 0x276a - - "❫": [t: "средний уплощённый правый круглый орнамент"] # 0x276b - - "❬": [t: "средний левый угловой орнамент"] # 0x276c - - "❭": [t: "средний правый угловой орнамент"] # 0x276d - - "❮": [t: "жирный левый угловой кавычковый орнамент"] # 0x276e - - "❯": [t: "жирный правый угловой кавычковый орнамент"] # 0x276f - - "❰": [t: "жирный левый угловой орнамент"] # 0x2770 - - "❱": [t: "жирный правый угловой орнамент"] # 0x2771 - - "❲": [t: "лёгкий левый черепаший орнамент"] # 0x2772 - - "❳": [t: "лёгкий правый черепаший орнамент"] # 0x2773 - - "❴": [t: "средний левый фигурный орнамент"] # 0x2774 - - "❵": [t: "средний правый фигурный орнамент"] # 0x2775 - - "❶": [t: "один в чёрном круге"] # 0x2776 - - "❷": [t: "два в чёрном круге"] # 0x2777 - - "❸": [t: "три в чёрном круге"] # 0x2778 - - "❹": [t: "четыре в чёрном круге"] # 0x2779 - - "❺": [t: "пять в чёрном круге"] # 0x277a - - "❻": [t: "шесть в чёрном круге"] # 0x277b - - "❼": [t: "семь в чёрном круге"] # 0x277c - - "❽": [t: "восемь в чёрном круге"] # 0x277d - - "❾": [t: "девять в чёрном круге"] # 0x277e - - "❿": [t: "десять в чёрном круге"] # 0x277f - - "➀": [t: "один в круге без засечек"] # 0x2780 - - "➁": [t: "два в круге без засечек"] # 0x2781 - - "➂": [t: "три в круге без засечек"] # 0x2782 - - "➃": [t: "четыре в круге без засечек"] # 0x2783 - - "➄": [t: "пять в круге без засечек"] # 0x2784 - - "➅": [t: "шесть в круге без засечек"] # 0x2785 - - "➆": [t: "семь в круге без засечек"] # 0x2786 - - "➇": [t: "восемь в круге без засечек"] # 0x2787 - - "➈": [t: "девять в круге без засечек"] # 0x2788 - - "➉": [t: "десять в круге без засечек"] # 0x2789 - - "➊": [t: "один в чёрном круге без засечек"] # 0x278a - - "➋": [t: "два в чёрном круге без засечек"] # 0x278b - - "➌": [t: "три в чёрном круге без засечек"] # 0x278c - - "➍": [t: "четыре в чёрном круге без засечек"] # 0x278d - - "➎": [t: "пять в чёрном круге без засечек"] # 0x278e - - "➏": [t: "шесть в чёрном круге без засечек"] # 0x278f - - "➐": [t: "семь в чёрном круге без засечек"] # 0x2790 - - "➑": [t: "восемь в чёрном круге без засечек"] # 0x2791 - - "➒": [t: "девять в чёрном круге без засечек"] # 0x2792 - - "➓": [t: "десять в чёрном круге без засечек"] # 0x2793 - - "➔": [t: "жирная широкая стрелка вправо"] # 0x2794 - - "➕": [t: "жирный знак плюс"] # 0x2795 - - "➖": [t: "жирный знак минус"] # 0x2796 - - "➗": [t: "жирный знак деления"] # 0x2797 - - "➘": [t: "жирная стрелка на юго-восток"] # 0x2798 - - "➙": [t: "жирная стрелка вправо"] # 0x2799 - - "➚": [t: "жирная стрелка на северо-восток"] # 0x279a - - "➛": [t: "стрелка вправо с чертёжным наконечником"] # 0x279b - - "➜": [t: "жирная стрелка вправо с закруглённым наконечником"] # 0x279c - - "➝": [t: "стрелка вправо с треугольным наконечником"] # 0x279d - - "➞": [t: "жирная стрелка вправо с треугольным наконечником"] # 0x279e - - "➟": [t: "пунктирная стрелка вправо с треугольным наконечником"] # 0x279f - - "➠": [t: "жирная пунктирная стрелка вправо с треугольным наконечником"] # 0x27a0 - - "➡": [t: "чёрная стрелка вправо"] # 0x27a1 - - "➢": [t: "трёхмерная стрелка вправо с верхней подсветкой"] # 0x27a2 - - "➣": [t: "трёхмерная стрелка вправо с нижней подсветкой"] # 0x27a3 - - "➤": [t: "чёрный наконечник стрелки вправо"] # 0x27a4 - - "➥": [t: "жирная чёрная изогнутая вниз и вправо стрелка"] # 0x27a5 - - "➦": [t: "жирная чёрная изогнутая вверх и вправо стрелка"] # 0x27a6 - - "➧": [t: "приземистая чёрная стрелка вправо"] # 0x27a7 - - "➨": [t: "жирная чёрная стрелка вправо с вогнутым наконечником"] # 0x27a8 - - "➩": [t: "белая стрелка вправо с правой тенью"] # 0x27a9 - - "➪": [t: "белая стрелка вправо с левой тенью"] # 0x27aa - - "➫": [t: "белая стрелка вправо с задней наклонной тенью"] # 0x27ab - - "➬": [t: "белая стрелка вправо с передней наклонной тенью"] # 0x27ac - - "➭": [t: "белая стрелка вправо с жирной нижней правой тенью"] # 0x27ad - - "➮": [t: "белая стрелка вправо с жирной верхней правой тенью"] # 0x27ae - - "➯": [t: "белая стрелка вправо с нижней правой тенью и зарубкой"] # 0x27af - - "➱": [t: "белая стрелка вправо с верхней правой тенью и зарубкой"] # 0x27b1 - - "➲": [t: "жирная белая стрелка вправо в круге"] # 0x27b2 - - "➳": [t: "белая оперённая стрелка вправо"] # 0x27b3 - - "➴": [t: "чёрная оперённая стрелка на юго-восток"] # 0x27b4 - - "➵": [t: "чёрная оперённая стрелка вправо"] # 0x27b5 - - "➶": [t: "чёрная оперённая стрелка на северо-восток"] # 0x27b6 - - "➷": [t: "жирная чёрная оперённая стрелка на юго-восток"] # 0x27b7 - - "➸": [t: "жирная чёрная оперённая стрелка вправо"] # 0x27b8 - - "➹": [t: "жирная чёрная оперённая стрелка на северо-восток"] # 0x27b9 - - "➺": [t: "стрелка вправо с каплевидным наконечником"] # 0x27ba - - "➻": [t: "жирная стрелка вправо с каплевидным древком"] # 0x27bb - - "➼": [t: "стрелка вправо с клиновидным хвостом"] # 0x27bc - - "➽": [t: "жирная стрелка вправо с клиновидным хвостом"] # 0x27bd - - "➾": [t: "контурная стрелка вправо"] # 0x27be - - "⟀": [t: "трёхмерный угол"] # 0x27c0 - - "⟁": [t: "белый треугольник, содержащий маленький белый треугольник"] # 0x27c1 - - "⟂": # 0x27c2 - - test: - if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "перпендикуляром к" + - SPELL: "translate('.', 'ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ', 'abcdefghijklmnopqrstuvwxyz')" + - T: "в кружке" + - "⓪": [T: "ноль в круге"] # 0x24ea + - "⓫": [T: "одиннадцать в чёрном круге"] # 0x24eb + - "⓬": [T: "двенадцать в чёрном круге"] # 0x24ec + - "⓭": [T: "тринадцать в чёрном круге"] # 0x24ed + - "⓮": [T: "четырнадцать в чёрном круге"] # 0x24ee + - "⓯": [T: "пятнадцать в чёрном круге"] # 0x24ef + - "⓰": [T: "шестнадцать в чёрном круге"] # 0x24f0 + - "⓱": [T: "семнадцать в чёрном круге"] # 0x24f1 + - "⓲": [T: "восемнадцать в чёрном круге"] # 0x24f2 + - "⓳": [T: "девятнадцать в чёрном круге"] # 0x24f3 + - "⓴": [T: "двадцать в чёрном круге"] # 0x24f4 + - "⓵-⓽": + - test: + - if: "'.' = '⓵'" + then: [T: "один в двойном кружке"] + - else_if: "'.' = '⓽'" + then: [T: "девять в двойном кружке"] + else: + - T: "в двойном кружке" + - SPELL: "translate('.', '⓶⓷⓸⓹⓺⓻⓼', '2345678')" + - "⓾": [T: "десять в двойном круге"] # 0x24fe + - "⓿": [T: "ноль в чёрном круге"] # 0x24ff + - "■": [T: "чёрный квадрат"] # 0x25a0 + - "□": [T: "белый квадрат"] # 0x25a1 + - "▢": [T: "белый квадрат со скруглёнными углами"] # 0x25a2 + - "▣": [T: "белый квадрат, содержащий маленький чёрный квадрат"] # 0x25a3 + - "▤": [T: "квадрат с горизонтальной заливкой"] # 0x25a4 + - "▥": [T: "квадрат с вертикальной заливкой"] # 0x25a5 + - "▦": [T: "квадрат с ортогональной перекрёстной штриховкой"] # 0x25a6 + - "▧": [T: "квадрат с заливкой от верхнего левого к нижнему правому"] # 0x25a7 + - "▨": [T: "квадрат с заливкой от верхнего правого к нижнему левому"] # 0x25a8 + - "▩": [T: "квадрат с диагональной перекрёстной штриховкой"] # 0x25a9 + - "▪": [T: "чёрный маленький квадрат"] # 0x25aa + - "▫": [T: "белый маленький квадрат"] # 0x25ab + - "▬": [T: "чёрный прямоугольник"] # 0x25ac + - "▭": [T: "белый прямоугольник"] # 0x25ad + - "▮": [T: "чёрный вертикальный прямоугольник"] # 0x25ae + - "▯": [T: "белый вертикальный прямоугольник"] # 0x25af + - "▰": [T: "чёрный параллелограмм"] # 0x25b0 + - "▱": [T: "белый параллелограмм"] # 0x25b1 + - "▲": [T: "чёрный треугольник остриём вверх"] # 0x25b2 + - "△": [T: "треугольник"] # 0x25b3 + - "▴": [T: "чёрный маленький треугольник остриём вверх"] # 0x25b4 + - "▵": [T: "белый маленький треугольник остриём вверх"] # 0x25b5 + - "▶": [T: "чёрный треугольник остриём вправо"] # 0x25b6 + - "▷": [T: "белый треугольник остриём вправо"] # 0x25b7 + - "▸": [T: "чёрный маленький треугольник остриём вправо"] # 0x25b8 + - "▹": [T: "белый маленький треугольник остриём вправо"] # 0x25b9 + - "►": [T: "чёрный указатель вправо"] # 0x25ba + - "▻": [T: "белый указатель вправо"] # 0x25bb + - "▼": [T: "чёрный треугольник остриём вниз"] # 0x25bc + - "▽": [T: "белый треугольник остриём вниз"] # 0x25bd + - "▾": [T: "чёрный маленький треугольник остриём вниз"] # 0x25be + - "▿": [T: "белый маленький треугольник остриём вниз"] # 0x25bf + - "◀": [T: "чёрный треугольник остриём влево"] # 0x25c0 + - "◁": [T: "белый треугольник остриём влево"] # 0x25c1 + - "◂": [T: "чёрный маленький треугольник остриём влево"] # 0x25c2 + - "◃": [T: "белый маленький треугольник остриём влево"] # 0x25c3 + - "◄": [T: "чёрный указатель влево"] # 0x25c4 + - "◅": [T: "белый указатель влево"] # 0x25c5 + - "◆": [T: "чёрный ромб"] # 0x25c6 + - "◇": [T: "белый ромб"] # 0x25c7 + - "◈": [T: "белый ромб, содержащий чёрный маленький ромб"] # 0x25c8 + - "◉": [T: "рыбий глаз"] # 0x25c9 + - "◊": [T: "луковица"] # 0x25ca + - "○": [T: "белый круг"] # 0x25cb + - "◌": [T: "пунктирный круг"] # 0x25cc + - "◍": [T: "круг с вертикальной заливкой"] # 0x25cd + - "◎": [T: "мишень"] # 0x25ce + - "●": [T: "чёрный круг"] # 0x25cf + - "◐": [T: "круг с левой половиной чёрной"] # 0x25d0 + - "◑": [T: "круг с правой половиной чёрной"] # 0x25d1 + - "◒": [T: "круг с нижней половиной чёрной"] # 0x25d2 + - "◓": [T: "круг с верхней половиной чёрной"] # 0x25d3 + - "◔": [T: "круг с верхним правым квадрантом чёрным"] # 0x25d4 + - "◕": [T: "круг со всем, кроме верхнего левого квадранта, чёрным"] # 0x25d5 + - "◖": [T: "левая половина чёрного круга"] # 0x25d6 + - "◗": [T: "правая половина чёрного круга"] # 0x25d7 + - "◘": [T: "инверсный буллит"] # 0x25d8 + - "◙": [T: "инверсный белый круг"] # 0x25d9 + - "◚": [T: "верхняя половина инверсного белого круга"] # 0x25da + - "◛": [T: "нижняя половина инверсного белого круга"] # 0x25db + - "◜": [T: "дуга верхнего левого квадранта"] # 0x25dc + - "◝": [T: "дуга верхнего правого квадранта"] # 0x25dd + - "◞": [T: "дуга нижнего правого квадранта"] # 0x25de + - "◟": [T: "дуга нижнего левого квадранта"] # 0x25df + - "◠": [T: "верхняя половина круга"] # 0x25e0 + - "◡": [T: "нижняя половина круга"] # 0x25e1 + - "◢": [T: "чёрный нижний правый треугольник"] # 0x25e2 + - "◣": [T: "чёрный нижний левый треугольник"] # 0x25e3 + - "◤": [T: "чёрный верхний левый треугольник"] # 0x25e4 + - "◥": [T: "чёрный верхний правый треугольник"] # 0x25e5 + - "◦": [T: "композиция"] # 0x25e6 + - "◧": [T: "квадрат с левой половиной чёрной"] # 0x25e7 + - "◨": [T: "квадрат с правой половиной чёрной"] # 0x25e8 + - "◩": [T: "квадрат с верхней левой половиной чёрной"] # 0x25e9 + - "◪": [T: "квадрат с нижней правой половиной чёрной"] # 0x25ea + - "◫": [T: "белый квадрат с биссектрисой"] # 0x25eb + - "◬": [T: "белый треугольник остриём вверх с точкой"] # 0x25ec + - "◭": [T: "треугольник остриём вверх с левой половиной чёрной"] # 0x25ed + - "◮": [T: "треугольник остриём вверх с правой половиной чёрной"] # 0x25ee + - "◯": [T: "большой круг"] # 0x25ef + - "◰": [T: "белый квадрат с верхним левым квадрантом"] # 0x25f0 + - "◱": [T: "белый квадрат с нижним левым квадрантом"] # 0x25f1 + - "◲": [T: "белый квадрат с нижним правым квадрантом"] # 0x25f2 + - "◳": [T: "белый квадрат с верхним правым квадрантом"] # 0x25f3 + - "◴": [T: "белый круг с верхним левым квадрантом"] # 0x25f4 + - "◵": [T: "белый круг с нижним левым квадрантом"] # 0x25f5 + - "◶": [T: "белый круг с нижним правым квадрантом"] # 0x25f6 + - "◷": [T: "белый круг с верхним правым квадрантом"] # 0x25f7 + - "◸": [T: "верхний левый треугольник"] # 0x25f8 + - "◹": [T: "верхний правый треугольник"] # 0x25f9 + - "◺": [T: "нижний левый треугольник"] # 0x25fa + - "◻": [T: "белый средний квадрат"] # 0x25fb + - "◼": [T: "чёрный средний квадрат"] # 0x25fc + - "◽": [T: "белый средне-маленький квадрат"] # 0x25fd + - "◾": [T: "чёрный средне-маленький квадрат"] # 0x25fe + - "◿": [T: "нижний правый треугольник"] # 0x25ff + - "★": [T: "чёрная звезда"] # 0x2605 + - "☆": [T: "белая звезда"] # 0x2606 + - "☉": [T: "солнце"] # 0x2609 + - "☌": [T: "соединение"] # 0x260c + - "☒": [T: "бюллетень с крестиком"] # 0x2612 + - "☽": [T: "растущая луна"] # 0x263d + - "☾": [T: "убывающая луна"] # 0x263e + - "☿": [T: "Меркурий"] # 0x263f + - "♀": [T: "женский"] # 0x2640 + - "♁": [T: "Земля"] # 0x2641 + - "♂": [T: "мужской"] # 0x2642 + - "♃": [T: "Юпитер"] # 0x2643 + - "♄": [T: "Сатурн"] # 0x2644 + - "♅": [T: "Уран"] # 0x2645 + - "♆": [T: "Нептун"] # 0x2646 + - "♇": [T: "Плутон"] # 0x2647 + - "♈": [T: "Овен"] # 0x2648 + - "♉": [T: "Телец"] # 0x2649 + - "♩": [T: "четвертная нота"] # 0x2669 + - "♭": [T: "бемоль"] # 0x266d + - "♮": [T: "бекар"] # 0x266e + - "♯": [T: "диез"] # 0x266f + - "♠": [T: "чёрная масть пики"] # 0x2660 + - "♡": [T: "белая масть червы"] # 0x2661 + - "♢": [T: "белая масть бубны"] # 0x2662 + - "♣": [T: "чёрная масть трефы"] # 0x2663 + - "♤": [T: "белая масть пики"] # 0x2664 + - "♥": [T: "чёрная масть червы"] # 0x2665 + - "♦": [T: "чёрная масть бубны"] # 0x2666 + - "♧": [T: "белая масть трефы"] # 0x2667 + - "⚀": [T: "кость 1"] # 0x2680 + - "⚁": [T: "кость 2"] # 0x2681 + - "⚂": [T: "кость 3"] # 0x2682 + - "⚃": [T: "кость 4"] # 0x2683 + - "⚄": [T: "кость 5"] # 0x2684 + - "⚅": [T: "кость 6"] # 0x2685 + - "⚆": [T: "белый круг с точкой справа"] # 0x2686 + - "⚇": [T: "белый круг с двумя точками"] # 0x2687 + - "⚈": [T: "чёрный круг с точкой справа"] # 0x2688 + - "⚉": [T: "чёрный круг с двумя точками"] # 0x2689 + - "⚪": [T: "средний белый круг"] # 0x26aa + - "⚫": [T: "средний чёрный круг"] # 0x26ab + - "⚬": [T: "средний маленький белый круг"] # 0x26ac + - "⚲": [T: "средний род"] # 0x26b2 + - "✓": [T: "галочка"] # 0x2713 + - "✠": [T: "мальтийский крест"] # 0x2720 + - "✪": [T: "белая звезда в круге"] # 0x272a + - "✶": [T: "шестиконечная чёрная звезда"] # 0x2736 + - "❨": [T: "средний левый круглый орнамент"] # 0x2768 + - "❩": [T: "средний правый круглый орнамент"] # 0x2769 + - "❪": [T: "средний уплощённый левый круглый орнамент"] # 0x276a + - "❫": [T: "средний уплощённый правый круглый орнамент"] # 0x276b + - "❬": [T: "средний левый угловой орнамент"] # 0x276c + - "❭": [T: "средний правый угловой орнамент"] # 0x276d + - "❮": [T: "жирный левый угловой кавычковый орнамент"] # 0x276e + - "❯": [T: "жирный правый угловой кавычковый орнамент"] # 0x276f + - "❰": [T: "жирный левый угловой орнамент"] # 0x2770 + - "❱": [T: "жирный правый угловой орнамент"] # 0x2771 + - "❲": [T: "лёгкий левый черепаший орнамент"] # 0x2772 + - "❳": [T: "лёгкий правый черепаший орнамент"] # 0x2773 + - "❴": [T: "средний левый фигурный орнамент"] # 0x2774 + - "❵": [T: "средний правый фигурный орнамент"] # 0x2775 + - "❶": [T: "один в чёрном круге"] # 0x2776 + - "❷": [T: "два в чёрном круге"] # 0x2777 + - "❸": [T: "три в чёрном круге"] # 0x2778 + - "❹": [T: "четыре в чёрном круге"] # 0x2779 + - "❺": [T: "пять в чёрном круге"] # 0x277a + - "❻": [T: "шесть в чёрном круге"] # 0x277b + - "❼": [T: "семь в чёрном круге"] # 0x277c + - "❽": [T: "восемь в чёрном круге"] # 0x277d + - "❾": [T: "девять в чёрном круге"] # 0x277e + - "❿": [T: "десять в чёрном круге"] # 0x277f + - "➀": [T: "один в круге без засечек"] # 0x2780 + - "➁": [T: "два в круге без засечек"] # 0x2781 + - "➂": [T: "три в круге без засечек"] # 0x2782 + - "➃": [T: "четыре в круге без засечек"] # 0x2783 + - "➄": [T: "пять в круге без засечек"] # 0x2784 + - "➅": [T: "шесть в круге без засечек"] # 0x2785 + - "➆": [T: "семь в круге без засечек"] # 0x2786 + - "➇": [T: "восемь в круге без засечек"] # 0x2787 + - "➈": [T: "девять в круге без засечек"] # 0x2788 + - "➉": [T: "десять в круге без засечек"] # 0x2789 + - "➊": [T: "один в чёрном круге без засечек"] # 0x278a + - "➋": [T: "два в чёрном круге без засечек"] # 0x278b + - "➌": [T: "три в чёрном круге без засечек"] # 0x278c + - "➍": [T: "четыре в чёрном круге без засечек"] # 0x278d + - "➎": [T: "пять в чёрном круге без засечек"] # 0x278e + - "➏": [T: "шесть в чёрном круге без засечек"] # 0x278f + - "➐": [T: "семь в чёрном круге без засечек"] # 0x2790 + - "➑": [T: "восемь в чёрном круге без засечек"] # 0x2791 + - "➒": [T: "девять в чёрном круге без засечек"] # 0x2792 + - "➓": [T: "десять в чёрном круге без засечек"] # 0x2793 + - "➔": [T: "жирная широкая стрелка вправо"] # 0x2794 + - "➕": [T: "жирный знак плюс"] # 0x2795 + - "➖": [T: "жирный знак минус"] # 0x2796 + - "➗": [T: "жирный знак деления"] # 0x2797 + - "➘": [T: "жирная стрелка на юго-восток"] # 0x2798 + - "➙": [T: "жирная стрелка вправо"] # 0x2799 + - "➚": [T: "жирная стрелка на северо-восток"] # 0x279a + - "➛": [T: "стрелка вправо с чертёжным наконечником"] # 0x279b + - "➜": [T: "жирная стрелка вправо с закруглённым наконечником"] # 0x279c + - "➝": [T: "стрелка вправо с треугольным наконечником"] # 0x279d + - "➞": [T: "жирная стрелка вправо с треугольным наконечником"] # 0x279e + - "➟": [T: "пунктирная стрелка вправо с треугольным наконечником"] # 0x279f + - "➠": [T: "жирная пунктирная стрелка вправо с треугольным наконечником"] # 0x27a0 + - "➡": [T: "чёрная стрелка вправо"] # 0x27a1 + - "➢": [T: "трёхмерная стрелка вправо с верхней подсветкой"] # 0x27a2 + - "➣": [T: "трёхмерная стрелка вправо с нижней подсветкой"] # 0x27a3 + - "➤": [T: "чёрный наконечник стрелки вправо"] # 0x27a4 + - "➥": [T: "жирная чёрная изогнутая вниз и вправо стрелка"] # 0x27a5 + - "➦": [T: "жирная чёрная изогнутая вверх и вправо стрелка"] # 0x27a6 + - "➧": [T: "приземистая чёрная стрелка вправо"] # 0x27a7 + - "➨": [T: "жирная чёрная стрелка вправо с вогнутым наконечником"] # 0x27a8 + - "➩": [T: "белая стрелка вправо с правой тенью"] # 0x27a9 + - "➪": [T: "белая стрелка вправо с левой тенью"] # 0x27aa + - "➫": [T: "белая стрелка вправо с задней наклонной тенью"] # 0x27ab + - "➬": [T: "белая стрелка вправо с передней наклонной тенью"] # 0x27ac + - "➭": [T: "белая стрелка вправо с жирной нижней правой тенью"] # 0x27ad + - "➮": [T: "белая стрелка вправо с жирной верхней правой тенью"] # 0x27ae + - "➯": [T: "белая стрелка вправо с нижней правой тенью и зарубкой"] # 0x27af + - "➱": [T: "белая стрелка вправо с верхней правой тенью и зарубкой"] # 0x27b1 + - "➲": [T: "жирная белая стрелка вправо в круге"] # 0x27b2 + - "➳": [T: "белая оперённая стрелка вправо"] # 0x27b3 + - "➴": [T: "чёрная оперённая стрелка на юго-восток"] # 0x27b4 + - "➵": [T: "чёрная оперённая стрелка вправо"] # 0x27b5 + - "➶": [T: "чёрная оперённая стрелка на северо-восток"] # 0x27b6 + - "➷": [T: "жирная чёрная оперённая стрелка на юго-восток"] # 0x27b7 + - "➸": [T: "жирная чёрная оперённая стрелка вправо"] # 0x27b8 + - "➹": [T: "жирная чёрная оперённая стрелка на северо-восток"] # 0x27b9 + - "➺": [T: "стрелка вправо с каплевидным наконечником"] # 0x27ba + - "➻": [T: "жирная стрелка вправо с каплевидным древком"] # 0x27bb + - "➼": [T: "стрелка вправо с клиновидным хвостом"] # 0x27bc + - "➽": [T: "жирная стрелка вправо с клиновидным хвостом"] # 0x27bd + - "➾": [T: "контурная стрелка вправо"] # 0x27be + - "⟀": [T: "трёхмерный угол"] # 0x27c0 + - "⟁": [T: "белый треугольник, содержащий маленький белый треугольник"] # 0x27c1 + - "⟂⊥": + - test: + if: "$SpeechStyle = 'LiteralSpeak' and '.' = '⊥'" + then: [T: "ложь"] + else: [T: "перпендикулярно"] - "⟃": # 0x27c3 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "открытым подмножеством" + then: [T: "является"] + - T: "открытым подмножеством" - "⟄": # 0x27c4 - test: if: "$Verbosity!='Terse'" - then: [t: "является"] - - t: "открытым надмножеством" - - "⟅": [t: "левый S-образный разделитель"] # 0x27c5 - - "⟆": [t: "правый S-образный разделитель"] # 0x27c6 - - "⟇": [t: "или с точкой внутри"] # 0x27c7 - - "⟈": [t: "обратная косая перед подмножеством"] # 0x27c8 - - "⟉": [t: "надмножество перед косой"] # 0x27c9 - - "⟊": [t: "вертикальная черта с горизонтальным штрихом"] # 0x27ca - - "⟋": [t: "математическая восходящая диагональ"] # 0x27cb - - "⟌": [t: "длинное деление"] # 0x27cc - - "⟍": [t: "математическая нисходящая диагональ"] # 0x27cd - - "⟎": [t: "квадратное логическое и"] # 0x27ce - - "⟏": [t: "квадратное логическое или"] # 0x27cf - - "⟐": [t: "белый ромб с центральной точкой"] # 0x27d0 - - "⟑": [t: "и с точкой"] # 0x27d1 - - "⟒": [t: "элемент, открывающийся вверх"] # 0x27d2 - - "⟓": [t: "нижний правый угол с точкой"] # 0x27d3 - - "⟔": [t: "верхний левый угол с точкой"] # 0x27d4 - - "⟕": [t: "левое внешнее соединение"] # 0x27d5 - - "⟖": [t: "правое внешнее соединение"] # 0x27d6 - - "⟗": [t: "полное внешнее соединение"] # 0x27d7 - - "⟘": [t: "большой верхний таск"] # 0x27d8 - - "⟙": [t: "большой нижний таск"] # 0x27d9 - - "⟚": [t: "левый и правый двойной турникет"] # 0x27da - - "⟛": [t: "левый и правый таск"] # 0x27db - - "⟜": [t: "левое мультиотображение"] # 0x27dc - - "⟝": [t: "длинный правый таск"] # 0x27dd - - "⟞": [t: "длинный левый таск"] # 0x27de - - "⟟": [t: "верхний таск с кругом сверху"] # 0x27df - - "⟠": [t: "луковица, разделённая горизонтальной линией"] # 0x27e0 - - "⟡": [t: "белый вогнутый ромб"] # 0x27e1 - - "⟢": [t: "белый вогнутый ромб с левой отметкой"] # 0x27e2 - - "⟣": [t: "белый вогнутый ромб с правой отметкой"] # 0x27e3 - - "⟤": [t: "белый квадрат с левой отметкой"] # 0x27e4 - - "⟥": [t: "белый квадрат с правой отметкой"] # 0x27e5 - - "⟦": [t: "левая белая квадратная скобка"] # 0x27e6 - - "⟧": [t: "правая белая квадратная скобка"] # 0x27e7 - - "⟨": [t: "левая угловая скобка"] # 0x27e8 - - "⟩": [t: "правая угловая скобка"] # 0x27e9 - - "⟪": [t: "левая двойная угловая скобка"] # 0x27ea - - "⟫": [t: "правая двойная угловая скобка"] # 0x27eb - - "⟬": [t: "левая белая черепашья скобка"] # 0x27ec - - "⟭": [t: "правая белая черепашья скобка"] # 0x27ed - - "⟮": [t: "левая уплощённая скобка"] # 0x27ee - - "⟯": [t: "правая уплощённая скобка"] # 0x27ef - - "⟰": [t: "верхняя четверная стрелка"] # 0x27f0 - - "⟱": [t: "нижняя четверная стрелка"] # 0x27f1 - - "⟲": [t: "круговая стрелка против часовой с разрывом"] # 0x27f2 - - "⟳": [t: "круговая стрелка по часовой с разрывом"] # 0x27f3 - - "⟴": [t: "стрелка вправо с плюсом в круге"] # 0x27f4 - - "⟵": [t: "длинная стрелка влево"] # 0x27f5 - - "⟶": [t: "длинная стрелка вправо"] # 0x27f6 - - "⟷": [t: "длинная стрелка влево-вправо"] # 0x27f7 - - "⟸": [t: "длинная левая двойная стрелка"] # 0x27f8 - - "⟹": [t: "следует"] # 0x27f9 - - "⟺": [t: "тогда и только тогда"] # 0x27fa - - "⟻": [t: "длинная стрелка влево от черты"] # 0x27fb - - "⟼": [t: "длинная стрелка вправо от черты"] # 0x27fc - - "⟽": [t: "длинная левая двойная стрелка от черты"] # 0x27fd - - "⟾": [t: "длинная правая двойная стрелка от черты"] # 0x27fe - - "⟿": [t: "длинная волнистая стрелка вправо"] # 0x27ff - - "⤀": [t: "стрелка вправо с двумя наконечниками и вертикальным штрихом"] # 0x2900 - - "⤁": [t: "стрелка вправо с двумя наконечниками и двойным вертикальным штрихом"] # 0x2901 - - "⤂": [t: "левая двойная стрелка с вертикальным штрихом"] # 0x2902 - - "⤃": [t: "правая двойная стрелка с вертикальным штрихом"] # 0x2903 - - "⤄": [t: "двойная стрелка влево-вправо с вертикальным штрихом"] # 0x2904 - - "⤅": [t: "стрелка вправо с двумя наконечниками от черты"] # 0x2905 - - "⤆": [t: "левая двойная стрелка от черты"] # 0x2906 - - "⤇": [t: "правая двойная стрелка от черты"] # 0x2907 - - "⤈": [t: "стрелка вниз с горизонтальным штрихом"] # 0x2908 - - "⤉": [t: "стрелка вверх с горизонтальным штрихом"] # 0x2909 - - "⤊": [t: "верхняя тройная стрелка"] # 0x290a - - "⤋": [t: "нижняя тройная стрелка"] # 0x290b - - "⤌": [t: "левая двойная пунктирная стрелка"] # 0x290c - - "⤍": [t: "правая двойная пунктирная стрелка"] # 0x290d - - "⤎": [t: "левая тройная пунктирная стрелка"] # 0x290e - - "⤏": [t: "правая тройная пунктирная стрелка"] # 0x290f - - "⤐": [t: "стрелка вправо с двумя наконечниками и тройным пунктиром"] # 0x2910 - - "⤑": [t: "стрелка вправо с пунктирным стволом"] # 0x2911 - - "⤒": [t: "стрелка вверх к черте"] # 0x2912 - - "⤓": [t: "стрелка вниз к черте"] # 0x2913 - - "⤔": [t: "стрелка вправо с хвостом и вертикальным штрихом"] # 0x2914 - - "⤕": [t: "стрелка вправо с хвостом и двойным вертикальным штрихом"] # 0x2915 - - "⤖": [t: "стрелка вправо с двумя наконечниками и хвостом"] # 0x2916 - - "⤗": [t: "стрелка вправо с двумя наконечниками, хвостом и вертикальным штрихом"] # 0x2917 - - "⤘": [t: "стрелка вправо с двумя наконечниками, хвостом и двойным вертикальным штрихом"] # 0x2918 - - "⤙": [t: "хвост стрелки влево"] # 0x2919 - - "⤚": [t: "хвост стрелки вправо"] # 0x291a - - "⤛": [t: "хвост левой двойной стрелки"] # 0x291b - - "⤜": [t: "хвост правой двойной стрелки"] # 0x291c - - "⤝": [t: "стрелка влево к залитому ромбу"] # 0x291d - - "⤞": [t: "стрелка вправо к залитому ромбу"] # 0x291e - - "⤟": [t: "стрелка влево от черты к залитому ромбу"] # 0x291f - - "⤠": [t: "стрелка вправо от черты к залитому ромбу"] # 0x2920 - - "⤡": [t: "стрелка на северо-запад и юго-восток"] # 0x2921 - - "⤢": [t: "стрелка на северо-восток и юго-запад"] # 0x2922 - - "⤣": [t: "стрелка на северо-запад с крюком"] # 0x2923 - - "⤤": [t: "стрелка на северо-восток с крюком"] # 0x2924 - - "⤥": [t: "стрелка на юго-восток с крюком"] # 0x2925 - - "⤦": [t: "стрелка на юго-запад с крюком"] # 0x2926 - - "⤧": [t: "стрелка на северо-запад и северо-восток"] # 0x2927 - - "⤨": [t: "стрелка на северо-восток и юго-восток"] # 0x2928 - - "⤩": [t: "стрелка на юго-восток и юго-запад"] # 0x2929 - - "⤪": [t: "стрелка на юго-запад и северо-запад"] # 0x292a - - "⤫": [t: "восходящая диагональ пересекает нисходящую"] # 0x292b - - "⤬": [t: "нисходящая диагональ пересекает восходящую"] # 0x292c - - "⤭": [t: "стрелка на юго-восток пересекает стрелку на северо-восток"] # 0x292d - - "⤮": [t: "стрелка на северо-восток пересекает стрелку на юго-восток"] # 0x292e - - "⤯": [t: "нисходящая диагональ пересекает стрелку на северо-восток"] # 0x292f - - "⤰": [t: "восходящая диагональ пересекает стрелку на юго-восток"] # 0x2930 - - "⤱": [t: "стрелка на северо-восток пересекает стрелку на северо-запад"] # 0x2931 - - "⤲": [t: "стрелка на северо-запад пересекает стрелку на северо-восток"] # 0x2932 - - "⤳": [t: "волновая стрелка, указывающая прямо вправо"] # 0x2933 - - "⤴": [t: "стрелка вправо, затем изгибается вверх"] # 0x2934 - - "⤵": [t: "стрелка вправо, затем изгибается вниз"] # 0x2935 - - "⤶": [t: "стрелка вниз, затем изгибается влево"] # 0x2936 - - "⤷": [t: "стрелка вниз, затем изгибается вправо"] # 0x2937 - - "⤸": [t: "дуговая стрелка по часовой с правой стороны"] # 0x2938 - - "⤹": [t: "дуговая стрелка против часовой с левой стороны"] # 0x2939 - - "⤺": [t: "верхняя дуговая стрелка против часовой"] # 0x293a - - "⤻": [t: "нижняя дуговая стрелка против часовой"] # 0x293b - - "⤼": [t: "верхняя дуговая стрелка по часовой с минусом"] # 0x293c - - "⤽": [t: "верхняя дуговая стрелка против часовой с плюсом"] # 0x293d - - "⤾": [t: "нижняя правая полукруглая стрелка по часовой"] # 0x293e - - "⤿": [t: "нижняя левая полукруглая стрелка против часовой"] # 0x293f - - "⥀": [t: "замкнутая круговая стрелка против часовой"] # 0x2940 - - "⥁": [t: "замкнутая круговая стрелка по часовой"] # 0x2941 - - "⥂": [t: "стрелка вправо над короткой стрелкой влево"] # 0x2942 - - "⥃": [t: "стрелка влево над короткой стрелкой вправо"] # 0x2943 - - "⥄": [t: "короткая стрелка вправо над стрелкой влево"] # 0x2944 - - "⥅": [t: "стрелка вправо с плюсом снизу"] # 0x2945 - - "⥆": [t: "стрелка влево с плюсом снизу"] # 0x2946 - - "⥇": [t: "стрелка вправо сквозь x"] # 0x2947 - - "⥈": [t: "стрелка влево-вправо сквозь круг"] # 0x2948 - - "⥉": [t: "стрелка вверх с двумя наконечниками из круга"] # 0x2949 - - "⥊": [t: "левый гарпун вверх, правый гарпун вниз"] # 0x294a - - "⥋": [t: "левый гарпун вниз, правый гарпун вверх"] # 0x294b - - "⥌": [t: "верхний гарпун вправо, нижний гарпун влево"] # 0x294c - - "⥍": [t: "верхний гарпун влево, нижний гарпун вправо"] # 0x294d - - "⥎": [t: "левый гарпун вверх, правый гарпун вверх"] # 0x294e - - "⥏": [t: "верхний гарпун вправо, нижний гарпун вправо"] # 0x294f - - "⥐": [t: "левый гарпун вниз, правый гарпун вниз"] # 0x2950 - - "⥑": [t: "верхний гарпун влево, нижний гарпун влево"] # 0x2951 - - "⥒": [t: "левый гарпун вверх к черте"] # 0x2952 - - "⥓": [t: "правый гарпун вверх к черте"] # 0x2953 - - "⥔": [t: "верхний гарпун вправо к черте"] # 0x2954 - - "⥕": [t: "нижний гарпун вправо к черте"] # 0x2955 - - "⥖": [t: "левый гарпун вниз к черте"] # 0x2956 - - "⥗": [t: "правый гарпун вниз к черте"] # 0x2957 - - "⥘": [t: "верхний гарпун влево к черте"] # 0x2958 - - "⥙": [t: "нижний гарпун влево к черте"] # 0x2959 - - "⥚": [t: "левый гарпун вверх от черты"] # 0x295a - - "⥛": [t: "правый гарпун вверх от черты"] # 0x295b - - "⥜": [t: "верхний гарпун вправо от черты"] # 0x295c - - "⥝": [t: "нижний гарпун вправо от черты"] # 0x295d - - "⥞": [t: "левый гарпун вниз от черты"] # 0x295e - - "⥟": [t: "правый гарпун вниз от черты"] # 0x295f - - "⥠": [t: "верхний гарпун влево от черты"] # 0x2960 - - "⥡": [t: "нижний гарпун влево от черты"] # 0x2961 - - "⥢": [t: "левый гарпун вверх над левым гарпуном вниз"] # 0x2962 - - "⥣": [t: "верхний гарпун влево рядом с верхним гарпуном вправо"] # 0x2963 - - "⥤": [t: "правый гарпун вверх над правым гарпуном вниз"] # 0x2964 - - "⥥": [t: "нижний гарпун влево рядом с нижним гарпуном вправо"] # 0x2965 - - "⥦": [t: "левый гарпун вверх над правым гарпуном вверх"] # 0x2966 - - "⥧": [t: "левый гарпун вниз над правым гарпуном вниз"] # 0x2967 - - "⥨": [t: "правый гарпун вверх над левым гарпуном вверх"] # 0x2968 - - "⥩": [t: "правый гарпун вниз над левым гарпуном вниз"] # 0x2969 - - "⥪": [t: "левый гарпун вверх над длинным тире"] # 0x296a - - "⥫": [t: "левый гарпун вниз под длинным тире"] # 0x296b - - "⥬": [t: "правый гарпун вверх над длинным тире"] # 0x296c - - "⥭": [t: "правый гарпун вниз под длинным тире"] # 0x296d - - "⥮": [t: "верхний гарпун влево рядом с нижним гарпуном вправо"] # 0x296e - - "⥯": [t: "нижний гарпун влево рядом с верхним гарпуном вправо"] # 0x296f - - "⥰": [t: "правая двойная стрелка с закруглённой головкой"] # 0x2970 - - "⥱": [t: "равно над стрелкой вправо"] # 0x2971 - - "⥲": [t: "тильда над стрелкой вправо"] # 0x2972 - - "⥳": [t: "стрелка влево над тильдой"] # 0x2973 - - "⥴": [t: "стрелка вправо над тильдой"] # 0x2974 - - "⥵": [t: "стрелка вправо над почти равно"] # 0x2975 - - "⥶": [t: "меньше над стрелкой влево"] # 0x2976 - - "⥷": [t: "стрелка влево сквозь меньше"] # 0x2977 - - "⥸": [t: "больше над стрелкой вправо"] # 0x2978 - - "⥹": [t: "подмножество над стрелкой вправо"] # 0x2979 - - "⥺": [t: "стрелка влево сквозь подмножество"] # 0x297a - - "⥻": [t: "надмножество над стрелкой влево"] # 0x297b - - "⥼": [t: "левый рыбий хвост"] # 0x297c - - "⥽": [t: "правый рыбий хвост"] # 0x297d - - "⥾": [t: "верхний рыбий хвост"] # 0x297e - - "⥿": [t: "нижний рыбий хвост"] # 0x297f - - "⦀": [t: "тройная вертикальная черта-разделитель"] # 0x2980 - - "⦁": [t: "Z-нотация пятно"] # 0x2981 - - "⦂": [t: "Z-нотация типовое двоеточие"] # 0x2982 - - "⦃": [t: "левая белая фигурная скобка"] # 0x2983 - - "⦄": [t: "правая белая фигурная скобка"] # 0x2984 - - "⦅": [t: "левая белая скобка"] # 0x2985 - - "⦆": [t: "правая белая скобка"] # 0x2986 - - "⦇": [t: "Z-нотация левая скобка образа"] # 0x2987 - - "⦈": [t: "Z-нотация правая скобка образа"] # 0x2988 - - "⦉": [t: "Z-нотация левая скобка связывания"] # 0x2989 - - "⦊": [t: "Z-нотация правая скобка связывания"] # 0x298a - - "⦋": [t: "левая квадратная скобка с подчёркиванием"] # 0x298b - - "⦌": [t: "правая квадратная скобка с подчёркиванием"] # 0x298c - - "⦍": [t: "левая квадратная скобка с отметкой в верхнем углу"] # 0x298d - - "⦎": [t: "правая квадратная скобка с отметкой в нижнем углу"] # 0x298e - - "⦏": [t: "левая квадратная скобка с отметкой в нижнем углу"] # 0x298f - - "⦐": [t: "правая квадратная скобка с отметкой в верхнем углу"] # 0x2990 - - "⦑": [t: "левая угловая скобка с точкой"] # 0x2991 - - "⦒": [t: "правая угловая скобка с точкой"] # 0x2992 - - "⦓": [t: "левая дуговая скобка меньше"] # 0x2993 - - "⦔": [t: "правая дуговая скобка больше"] # 0x2994 - - "⦕": [t: "двойная левая дуговая скобка больше"] # 0x2995 - - "⦖": [t: "двойная правая дуговая скобка меньше"] # 0x2996 - - "⦗": [t: "левая чёрная черепашья скобка"] # 0x2997 - - "⦘": [t: "правая чёрная черепашья скобка"] # 0x2998 - - "⦙": [t: "пунктирный забор"] # 0x2999 - - "⦚": [t: "вертикальная зигзагообразная линия"] # 0x299a - - "⦛": [t: "измеренный угол, открытый влево"] # 0x299b - - "⦜": [t: "вариант прямого угла с квадратом"] # 0x299c - - "⦝": [t: "измеренный прямой угол с точкой"] # 0x299d - - "⦞": [t: "угол с s внутри"] # 0x299e - - "⦟": [t: "острый угол"] # 0x299f - - "⦠": [t: "сферический угол, открытый влево"] # 0x29a0 - - "⦡": [t: "сферический угол, открытый вверх"] # 0x29a1 - - "⦢": [t: "перевёрнутый угол"] # 0x29a2 - - "⦣": [t: "обратный угол"] # 0x29a3 - - "⦤": [t: "угол с подчёркиванием"] # 0x29a4 - - "⦥": [t: "обратный угол с подчёркиванием"] # 0x29a5 - - "⦦": [t: "косой угол, открытый вверх"] # 0x29a6 - - "⦧": [t: "косой угол, открытый вниз"] # 0x29a7 - - "⦨": [t: "измеренный угол с открытым лучом, заканчивающимся стрелкой вверх и вправо"] # 0x29a8 - - "⦩": [t: "измеренный угол с открытым лучом, заканчивающимся стрелкой вверх и влево"] # 0x29a9 - - "⦪": [t: "измеренный угол с открытым лучом, заканчивающимся стрелкой вниз и вправо"] # 0x29aa - - "⦫": [t: "измеренный угол с открытым лучом, заканчивающимся стрелкой вниз и влево"] # 0x29ab - - "⦬": [t: "измеренный угол с открытым лучом, заканчивающимся стрелкой вправо и вверх"] # 0x29ac - - "⦭": [t: "измеренный угол с открытым лучом, заканчивающимся стрелкой влево и вверх"] # 0x29ad - - "⦮": [t: "измеренный угол с открытым лучом, заканчивающимся стрелкой вправо и вниз"] # 0x29ae - - "⦯": [t: "измеренный угол с открытым лучом, заканчивающимся стрелкой влево и вниз"] # 0x29af - - "⦰": [t: "обратное пустое множество"] # 0x29b0 - - "⦱": [t: "пустое множество с надчёркиванием"] # 0x29b1 - - "⦲": [t: "пустое множество с маленьким кругом сверху"] # 0x29b2 - - "⦳": [t: "пустое множество со стрелкой вправо сверху"] # 0x29b3 - - "⦴": [t: "пустое множество со стрелкой влево сверху"] # 0x29b4 - - "⦵": [t: "круг с горизонтальной чертой"] # 0x29b5 - - "⦶": [t: "вертикальная черта в круге"] # 0x29b6 - - "⦷": [t: "параллельность в круге"] # 0x29b7 - - "⦸": [t: "обратная косая черта в круге"] # 0x29b8 - - "⦹": [t: "перпендикуляр в круге"] # 0x29b9 - - "⦺": [t: "круг, разделённый горизонтальной чертой, верхняя половина разделена вертикальной чертой"] # 0x29ba - - "⦻": [t: "круг с наложенным x"] # 0x29bb - - "⦼": [t: "знак деления, повёрнутый против часовой в круге"] # 0x29bc - - "⦽": [t: "стрелка вверх сквозь круг"] # 0x29bd - - "⦾": [t: "белый буллит в круге"] # 0x29be - - "⦿": [t: "буллит в круге"] # 0x29bf - - "⧀": [t: "меньше в круге"] # 0x29c0 - - "⧁": [t: "больше в круге"] # 0x29c1 - - "⧂": [t: "круг с маленьким кругом справа"] # 0x29c2 - - "⧃": [t: "круг с двумя горизонтальными штрихами справа"] # 0x29c3 - - "⧄": [t: "квадратная восходящая диагональная черта"] # 0x29c4 - - "⧅": [t: "квадратная нисходящая диагональная черта"] # 0x29c5 - - "⧆": [t: "звёздочка в квадрате"] # 0x29c6 - - "⧇": [t: "маленький круг в квадрате"] # 0x29c7 - - "⧈": [t: "квадрат в квадрате"] # 0x29c8 - - "⧉": [t: "два соединённых квадрата"] # 0x29c9 - - "⧊": [t: "треугольник с точкой сверху"] # 0x29ca - - "⧋": [t: "треугольник с подчёркиванием"] # 0x29cb - - "⧌": [t: "s в треугольнике"] # 0x29cc - - "⧍": [t: "треугольник с засечками внизу"] # 0x29cd - - "⧎": [t: "правый треугольник над левым треугольником"] # 0x29ce - - "⧏": [t: "левый треугольник рядом с вертикальной чертой"] # 0x29cf - - "⧐": [t: "вертикальная черта рядом с правым треугольником"] # 0x29d0 - - "⧑": [t: "бантик с левой половиной чёрной"] # 0x29d1 - - "⧒": [t: "бантик с правой половиной чёрной"] # 0x29d2 - - "⧓": [t: "чёрный бантик"] # 0x29d3 - - "⧔": [t: "крест с левой половиной чёрной"] # 0x29d4 - - "⧕": [t: "крест с правой половиной чёрной"] # 0x29d5 - - "⧖": [t: "белые песочные часы"] # 0x29d6 - - "⧗": [t: "чёрные песочные часы"] # 0x29d7 - - "⧘": [t: "левый волнистый забор"] # 0x29d8 - - "⧙": [t: "правый волнистый забор"] # 0x29d9 - - "⧚": [t: "левый двойной волнистый забор"] # 0x29da - - "⧛": [t: "правый двойной волнистый забор"] # 0x29db - - "⧜": [t: "неполная бесконечность"] # 0x29dc - - "⧝": [t: "лигатура над бесконечностью"] # 0x29dd - - "⧞": [t: "бесконечность, перечёркнутая вертикальной чертой"] # 0x29de - - "⧟": [t: "двустороннее мультиотображение"] # 0x29df - - "⧠": [t: "квадрат с контурным очертанием"] # 0x29e0 - - "⧡": [t: "возрастает как"] # 0x29e1 - - "⧢": [t: "шаффл-произведение"] # 0x29e2 - - "⧣": [t: "знак равенства и наклонная параллельность"] # 0x29e3 - - "⧤": [t: "знак равенства и наклонная параллельность с тильдой сверху"] # 0x29e4 - - "⧥": [t: "тождественно и наклонная параллельность"] # 0x29e5 - - "⧦": [t: "равносильно"] # 0x29e6 - - "⧧": [t: "термодинамический"] # 0x29e7 - - "⧨": [t: "треугольник остриём вниз с левой половиной чёрной"] # 0x29e8 - - "⧩": [t: "треугольник остриём вниз с правой половиной чёрной"] # 0x29e9 - - "⧪": [t: "чёрный ромб со стрелкой вниз"] # 0x29ea - - "⧫": [t: "чёрная луковица"] # 0x29eb - - "⧬": [t: "белый круг со стрелкой вниз"] # 0x29ec - - "⧭": [t: "чёрный круг со стрелкой вниз"] # 0x29ed - - "⧮": [t: "белый квадрат с планками погрешностей"] # 0x29ee - - "⧯": [t: "чёрный квадрат с планками погрешностей"] # 0x29ef - - "⧰": [t: "белый ромб с планками погрешностей"] # 0x29f0 - - "⧱": [t: "чёрный ромб с планками погрешностей"] # 0x29f1 - - "⧲": [t: "белый круг с планками погрешностей"] # 0x29f2 - - "⧳": [t: "чёрный круг с планками погрешностей"] # 0x29f3 - - "⧴": [t: "отложенное правило"] # 0x29f4 - - "⧵": [t: "оператор обратная косая черта"] # 0x29f5 - - "⧶": [t: "косая черта с надчёркиванием"] # 0x29f6 - - "⧷": [t: "обратная косая черта с горизонтальным штрихом"] # 0x29f7 - - "⧸": [t: "большая косая черта"] # 0x29f8 - - "⧹": [t: "большая обратная косая черта"] # 0x29f9 - - "⧺": [t: "двойной плюс"] # 0x29fa - - "⧻": [t: "тройной плюс"] # 0x29fb - - "⧼": [t: "левая изогнутая угловая скобка"] # 0x29fc - - "⧽": [t: "правая изогнутая угловая скобка"] # 0x29fd - - "⧾": [t: "крошечный"] # 0x29fe - - "⧿": [t: "малюсенький"] # 0x29ff - - "⨀": [t: "оператор точка в круге"] # 0x2a00 - - "⨁": [t: "оператор плюс в круге"] # 0x2a01 - - "⨂": [t: "оператор умножить в круге"] # 0x2a02 - - "⨃": [t: "оператор объединение с точкой"] # 0x2a03 - - "⨄": [t: "оператор объединение с плюсом"] # 0x2a04 - - "⨅": [t: "оператор квадратное пересечение"] # 0x2a05 - - "⨆": [t: "оператор квадратное объединение"] # 0x2a06 - - "⨇": [t: "оператор двойное логическое и"] # 0x2a07 - - "⨈": [t: "оператор двойное логическое или"] # 0x2a08 - - "⨉": [t: "оператор умножения"] # 0x2a09 - - "⨊": [t: "сумма по модулю два"] # 0x2a0a - - "⨋": [t: "суммирование с интегралом"] # 0x2a0b - - "⨌": [t: "оператор четверной интеграл"] # 0x2a0c - - "⨍": [t: "интеграл конечной части"] # 0x2a0d - - "⨎": [t: "интеграл с двойным штрихом"] # 0x2a0e - - "⨏": [t: "интегральное среднее с косой чертой"] # 0x2a0f - - "⨐": [t: "функция циркуляции"] # 0x2a10 - - "⨑": [t: "интеграл против часовой"] # 0x2a11 - - "⨒": [t: "линейный интеграл с прямоугольным путём вокруг полюса"] # 0x2a12 - - "⨓": [t: "линейный интеграл с полукруглым путём вокруг полюса"] # 0x2a13 - - "⨔": [t: "линейный интеграл, не включающий полюс"] # 0x2a14 - - "⨕": [t: "оператор интеграл вокруг точки"] # 0x2a15 - - "⨖": [t: "оператор интеграл кватерниона"] # 0x2a16 - - "⨗": [t: "интеграл со стрелкой влево с крюком"] # 0x2a17 - - "⨘": [t: "интеграл со знаком умножения"] # 0x2a18 - - "⨙": [t: "интеграл с пересечением"] # 0x2a19 - - "⨚": [t: "интеграл с объединением"] # 0x2a1a - - "⨛": [t: "интеграл с надчёркиванием"] # 0x2a1b - - "⨜": [t: "интеграл с подчёркиванием"] # 0x2a1c - - "⨝": [t: "соединение"] # 0x2a1d - - "⨞": [t: "оператор большой левый треугольник"] # 0x2a1e - - "⨟": [t: "Z-нотация композиция схемы"] # 0x2a1f - - "⨠": [t: "Z-нотация конвейер схемы"] # 0x2a20 - - "⨡": [t: "Z-нотация проекция схемы"] # 0x2a21 - - "⨢": [t: "знак плюс с кругом сверху"] # 0x2a22 - - "⨣": [t: "знак плюс с циркумфлексом сверху"] # 0x2a23 - - "⨤": [t: "знак плюс с тильдой сверху"] # 0x2a24 - - "⨥": [t: "знак плюс с точкой снизу"] # 0x2a25 - - "⨦": [t: "знак плюс с тильдой снизу"] # 0x2a26 - - "⨧": [t: "знак плюс с индексом два"] # 0x2a27 - - "⨨": [t: "знак плюс с чёрным треугольником"] # 0x2a28 - - "⨩": [t: "знак минус с запятой сверху"] # 0x2a29 - - "⨪": [t: "знак минус с точкой снизу"] # 0x2a2a - - "⨫": [t: "знак минус с падающими точками"] # 0x2a2b - - "⨬": [t: "знак минус с растущими точками"] # 0x2a2c - - "⨭": [t: "знак плюс в левой половине круга"] # 0x2a2d - - "⨮": [t: "знак плюс в правой половине круга"] # 0x2a2e + then: [T: "является"] + - T: "открытым надмножеством" + - "⟅": [T: "левый S-образный разделитель"] # 0x27c5 + - "⟆": [T: "правый S-образный разделитель"] # 0x27c6 + - "⟇": [T: "или с точкой внутри"] # 0x27c7 + - "⟈": [T: "обратная косая перед подмножеством"] # 0x27c8 + - "⟉": [T: "надмножество перед косой"] # 0x27c9 + - "⟊": [T: "вертикальная черта с горизонтальным штрихом"] # 0x27ca + - "⟋": [T: "математическая восходящая диагональ"] # 0x27cb + - "⟌": [T: "длинное деление"] # 0x27cc + - "⟍": [T: "математическая нисходящая диагональ"] # 0x27cd + - "⟎": [T: "квадратное логическое и"] # 0x27ce + - "⟏": [T: "квадратное логическое или"] # 0x27cf + - "⟐": [T: "белый ромб с центральной точкой"] # 0x27d0 + - "⟑": [T: "и с точкой"] # 0x27d1 + - "⟒": [T: "элемент, открывающийся вверх"] # 0x27d2 + - "⟓": [T: "нижний правый угол с точкой"] # 0x27d3 + - "⟔": [T: "верхний левый угол с точкой"] # 0x27d4 + - "⟕": [T: "левое внешнее соединение"] # 0x27d5 + - "⟖": [T: "правое внешнее соединение"] # 0x27d6 + - "⟗": [T: "полное внешнее соединение"] # 0x27d7 + - "⟘": [T: "большой верхний таск"] # 0x27d8 + - "⟙": [T: "большой нижний таск"] # 0x27d9 + - "⟚": [T: "левый и правый двойной турникет"] # 0x27da + - "⟛": [T: "левый и правый таск"] # 0x27db + - "⟜": [T: "левое мультиотображение"] # 0x27dc + - "⟝": [T: "длинный правый таск"] # 0x27dd + - "⟞": [T: "длинный левый таск"] # 0x27de + - "⟟": [T: "верхний таск с кругом сверху"] # 0x27df + - "⟠": [T: "луковица, разделённая горизонтальной линией"] # 0x27e0 + - "⟡": [T: "белый вогнутый ромб"] # 0x27e1 + - "⟢": [T: "белый вогнутый ромб с левой отметкой"] # 0x27e2 + - "⟣": [T: "белый вогнутый ромб с правой отметкой"] # 0x27e3 + - "⟤": [T: "белый квадрат с левой отметкой"] # 0x27e4 + - "⟥": [T: "белый квадрат с правой отметкой"] # 0x27e5 + - "⟦": [T: "левая белая квадратная скобка"] # 0x27e6 + - "⟧": [T: "правая белая квадратная скобка"] # 0x27e7 + - "⟨": [T: "левая угловая скобка"] # 0x27e8 + - "⟩": [T: "правая угловая скобка"] # 0x27e9 + - "⟪": [T: "левая двойная угловая скобка"] # 0x27ea + - "⟫": [T: "правая двойная угловая скобка"] # 0x27eb + - "⟬": [T: "левая белая черепашья скобка"] # 0x27ec + - "⟭": [T: "правая белая черепашья скобка"] # 0x27ed + - "⟮": [T: "левая уплощённая скобка"] # 0x27ee + - "⟯": [T: "правая уплощённая скобка"] # 0x27ef + - "⟰": [T: "верхняя четверная стрелка"] # 0x27f0 + - "⟱": [T: "нижняя четверная стрелка"] # 0x27f1 + - "⟲": [T: "круговая стрелка против часовой с разрывом"] # 0x27f2 + - "⟳": [T: "круговая стрелка по часовой с разрывом"] # 0x27f3 + - "⟴": [T: "стрелка вправо с плюсом в круге"] # 0x27f4 + - "⟵": [T: "длинная стрелка влево"] # 0x27f5 + - "⟶": [T: "длинная стрелка вправо"] # 0x27f6 + - "⟷": [T: "длинная стрелка влево-вправо"] # 0x27f7 + - "⟸": [T: "длинная левая двойная стрелка"] # 0x27f8 + - "⟹": [T: "следует"] # 0x27f9 + - "⟺": [T: "тогда и только тогда"] # 0x27fa + - "⟻": [T: "длинная стрелка влево от черты"] # 0x27fb + - "⟼": [T: "длинная стрелка вправо от черты"] # 0x27fc + - "⟽": [T: "длинная левая двойная стрелка от черты"] # 0x27fd + - "⟾": [T: "длинная правая двойная стрелка от черты"] # 0x27fe + - "⟿": [T: "длинная волнистая стрелка вправо"] # 0x27ff + - "⤀": [T: "стрелка вправо с двумя наконечниками и вертикальным штрихом"] # 0x2900 + - "⤁": [T: "стрелка вправо с двумя наконечниками и двойным вертикальным штрихом"] # 0x2901 + - "⤂": [T: "левая двойная стрелка с вертикальным штрихом"] # 0x2902 + - "⤃": [T: "правая двойная стрелка с вертикальным штрихом"] # 0x2903 + - "⤄": [T: "двойная стрелка влево-вправо с вертикальным штрихом"] # 0x2904 + - "⤅": [T: "стрелка вправо с двумя наконечниками от черты"] # 0x2905 + - "⤆": [T: "левая двойная стрелка от черты"] # 0x2906 + - "⤇": [T: "правая двойная стрелка от черты"] # 0x2907 + - "⤈": [T: "стрелка вниз с горизонтальным штрихом"] # 0x2908 + - "⤉": [T: "стрелка вверх с горизонтальным штрихом"] # 0x2909 + - "⤊": [T: "верхняя тройная стрелка"] # 0x290a + - "⤋": [T: "нижняя тройная стрелка"] # 0x290b + - "⤌": [T: "левая двойная пунктирная стрелка"] # 0x290c + - "⤍": [T: "правая двойная пунктирная стрелка"] # 0x290d + - "⤎": [T: "левая тройная пунктирная стрелка"] # 0x290e + - "⤏": [T: "правая тройная пунктирная стрелка"] # 0x290f + - "⤐": [T: "стрелка вправо с двумя наконечниками и тройным пунктиром"] # 0x2910 + - "⤑": [T: "стрелка вправо с пунктирным стволом"] # 0x2911 + - "⤒": [T: "стрелка вверх к черте"] # 0x2912 + - "⤓": [T: "стрелка вниз к черте"] # 0x2913 + - "⤔": [T: "стрелка вправо с хвостом и вертикальным штрихом"] # 0x2914 + - "⤕": [T: "стрелка вправо с хвостом и двойным вертикальным штрихом"] # 0x2915 + - "⤖": [T: "стрелка вправо с двумя наконечниками и хвостом"] # 0x2916 + - "⤗": [T: "стрелка вправо с двумя наконечниками, хвостом и вертикальным штрихом"] # 0x2917 + - "⤘": [T: "стрелка вправо с двумя наконечниками, хвостом и двойным вертикальным штрихом"] # 0x2918 + - "⤙": [T: "хвост стрелки влево"] # 0x2919 + - "⤚": [T: "хвост стрелки вправо"] # 0x291a + - "⤛": [T: "хвост левой двойной стрелки"] # 0x291b + - "⤜": [T: "хвост правой двойной стрелки"] # 0x291c + - "⤝": [T: "стрелка влево к залитому ромбу"] # 0x291d + - "⤞": [T: "стрелка вправо к залитому ромбу"] # 0x291e + - "⤟": [T: "стрелка влево от черты к залитому ромбу"] # 0x291f + - "⤠": [T: "стрелка вправо от черты к залитому ромбу"] # 0x2920 + - "⤡": [T: "стрелка на северо-запад и юго-восток"] # 0x2921 + - "⤢": [T: "стрелка на северо-восток и юго-запад"] # 0x2922 + - "⤣": [T: "стрелка на северо-запад с крюком"] # 0x2923 + - "⤤": [T: "стрелка на северо-восток с крюком"] # 0x2924 + - "⤥": [T: "стрелка на юго-восток с крюком"] # 0x2925 + - "⤦": [T: "стрелка на юго-запад с крюком"] # 0x2926 + - "⤧": [T: "стрелка на северо-запад и северо-восток"] # 0x2927 + - "⤨": [T: "стрелка на северо-восток и юго-восток"] # 0x2928 + - "⤩": [T: "стрелка на юго-восток и юго-запад"] # 0x2929 + - "⤪": [T: "стрелка на юго-запад и северо-запад"] # 0x292a + - "⤫": [T: "восходящая диагональ пересекает нисходящую"] # 0x292b + - "⤬": [T: "нисходящая диагональ пересекает восходящую"] # 0x292c + - "⤭": [T: "стрелка на юго-восток пересекает стрелку на северо-восток"] # 0x292d + - "⤮": [T: "стрелка на северо-восток пересекает стрелку на юго-восток"] # 0x292e + - "⤯": [T: "нисходящая диагональ пересекает стрелку на северо-восток"] # 0x292f + - "⤰": [T: "восходящая диагональ пересекает стрелку на юго-восток"] # 0x2930 + - "⤱": [T: "стрелка на северо-восток пересекает стрелку на северо-запад"] # 0x2931 + - "⤲": [T: "стрелка на северо-запад пересекает стрелку на северо-восток"] # 0x2932 + - "⤳": [T: "волновая стрелка, указывающая прямо вправо"] # 0x2933 + - "⤴": [T: "стрелка вправо, затем изгибается вверх"] # 0x2934 + - "⤵": [T: "стрелка вправо, затем изгибается вниз"] # 0x2935 + - "⤶": [T: "стрелка вниз, затем изгибается влево"] # 0x2936 + - "⤷": [T: "стрелка вниз, затем изгибается вправо"] # 0x2937 + - "⤸": [T: "дуговая стрелка по часовой с правой стороны"] # 0x2938 + - "⤹": [T: "дуговая стрелка против часовой с левой стороны"] # 0x2939 + - "⤺": [T: "верхняя дуговая стрелка против часовой"] # 0x293a + - "⤻": [T: "нижняя дуговая стрелка против часовой"] # 0x293b + - "⤼": [T: "верхняя дуговая стрелка по часовой с минусом"] # 0x293c + - "⤽": [T: "верхняя дуговая стрелка против часовой с плюсом"] # 0x293d + - "⤾": [T: "нижняя правая полукруглая стрелка по часовой"] # 0x293e + - "⤿": [T: "нижняя левая полукруглая стрелка против часовой"] # 0x293f + - "⥀": [T: "замкнутая круговая стрелка против часовой"] # 0x2940 + - "⥁": [T: "замкнутая круговая стрелка по часовой"] # 0x2941 + - "⥂": [T: "стрелка вправо над короткой стрелкой влево"] # 0x2942 + - "⥃": [T: "стрелка влево над короткой стрелкой вправо"] # 0x2943 + - "⥄": [T: "короткая стрелка вправо над стрелкой влево"] # 0x2944 + - "⥅": [T: "стрелка вправо с плюсом снизу"] # 0x2945 + - "⥆": [T: "стрелка влево с плюсом снизу"] # 0x2946 + - "⥇": [T: "стрелка вправо сквозь x"] # 0x2947 + - "⥈": [T: "стрелка влево-вправо сквозь круг"] # 0x2948 + - "⥉": [T: "стрелка вверх с двумя наконечниками из круга"] # 0x2949 + - "⥊": [T: "левый гарпун вверх, правый гарпун вниз"] # 0x294a + - "⥋": [T: "левый гарпун вниз, правый гарпун вверх"] # 0x294b + - "⥌": [T: "верхний гарпун вправо, нижний гарпун влево"] # 0x294c + - "⥍": [T: "верхний гарпун влево, нижний гарпун вправо"] # 0x294d + - "⥎": [T: "левый гарпун вверх, правый гарпун вверх"] # 0x294e + - "⥏": [T: "верхний гарпун вправо, нижний гарпун вправо"] # 0x294f + - "⥐": [T: "левый гарпун вниз, правый гарпун вниз"] # 0x2950 + - "⥑": [T: "верхний гарпун влево, нижний гарпун влево"] # 0x2951 + - "⥒": [T: "левый гарпун вверх к черте"] # 0x2952 + - "⥓": [T: "правый гарпун вверх к черте"] # 0x2953 + - "⥔": [T: "верхний гарпун вправо к черте"] # 0x2954 + - "⥕": [T: "нижний гарпун вправо к черте"] # 0x2955 + - "⥖": [T: "левый гарпун вниз к черте"] # 0x2956 + - "⥗": [T: "правый гарпун вниз к черте"] # 0x2957 + - "⥘": [T: "верхний гарпун влево к черте"] # 0x2958 + - "⥙": [T: "нижний гарпун влево к черте"] # 0x2959 + - "⥚": [T: "левый гарпун вверх от черты"] # 0x295a + - "⥛": [T: "правый гарпун вверх от черты"] # 0x295b + - "⥜": [T: "верхний гарпун вправо от черты"] # 0x295c + - "⥝": [T: "нижний гарпун вправо от черты"] # 0x295d + - "⥞": [T: "левый гарпун вниз от черты"] # 0x295e + - "⥟": [T: "правый гарпун вниз от черты"] # 0x295f + - "⥠": [T: "верхний гарпун влево от черты"] # 0x2960 + - "⥡": [T: "нижний гарпун влево от черты"] # 0x2961 + - "⥢": [T: "левый гарпун вверх над левым гарпуном вниз"] # 0x2962 + - "⥣": [T: "верхний гарпун влево рядом с верхним гарпуном вправо"] # 0x2963 + - "⥤": [T: "правый гарпун вверх над правым гарпуном вниз"] # 0x2964 + - "⥥": [T: "нижний гарпун влево рядом с нижним гарпуном вправо"] # 0x2965 + - "⥦": [T: "левый гарпун вверх над правым гарпуном вверх"] # 0x2966 + - "⥧": [T: "левый гарпун вниз над правым гарпуном вниз"] # 0x2967 + - "⥨": [T: "правый гарпун вверх над левым гарпуном вверх"] # 0x2968 + - "⥩": [T: "правый гарпун вниз над левым гарпуном вниз"] # 0x2969 + - "⥪": [T: "левый гарпун вверх над длинным тире"] # 0x296a + - "⥫": [T: "левый гарпун вниз под длинным тире"] # 0x296b + - "⥬": [T: "правый гарпун вверх над длинным тире"] # 0x296c + - "⥭": [T: "правый гарпун вниз под длинным тире"] # 0x296d + - "⥮": [T: "верхний гарпун влево рядом с нижним гарпуном вправо"] # 0x296e + - "⥯": [T: "нижний гарпун влево рядом с верхним гарпуном вправо"] # 0x296f + - "⥰": [T: "правая двойная стрелка с закруглённой головкой"] # 0x2970 + - "⥱": [T: "равно над стрелкой вправо"] # 0x2971 + - "⥲": [T: "тильда над стрелкой вправо"] # 0x2972 + - "⥳": [T: "стрелка влево над тильдой"] # 0x2973 + - "⥴": [T: "стрелка вправо над тильдой"] # 0x2974 + - "⥵": [T: "стрелка вправо над почти равно"] # 0x2975 + - "⥶": [T: "меньше над стрелкой влево"] # 0x2976 + - "⥷": [T: "стрелка влево сквозь меньше"] # 0x2977 + - "⥸": [T: "больше над стрелкой вправо"] # 0x2978 + - "⥹": [T: "подмножество над стрелкой вправо"] # 0x2979 + - "⥺": [T: "стрелка влево сквозь подмножество"] # 0x297a + - "⥻": [T: "надмножество над стрелкой влево"] # 0x297b + - "⥼": [T: "левый рыбий хвост"] # 0x297c + - "⥽": [T: "правый рыбий хвост"] # 0x297d + - "⥾": [T: "верхний рыбий хвост"] # 0x297e + - "⥿": [T: "нижний рыбий хвост"] # 0x297f + - "⦀": [T: "тройная вертикальная черта-разделитель"] # 0x2980 + - "⦁": [T: "Z-нотация пятно"] # 0x2981 + - "⦂": [T: "Z-нотация типовое двоеточие"] # 0x2982 + - "⦃": [T: "левая белая фигурная скобка"] # 0x2983 + - "⦄": [T: "правая белая фигурная скобка"] # 0x2984 + - "⦅": [T: "левая белая скобка"] # 0x2985 + - "⦆": [T: "правая белая скобка"] # 0x2986 + - "⦇": [T: "Z-нотация левая скобка образа"] # 0x2987 + - "⦈": [T: "Z-нотация правая скобка образа"] # 0x2988 + - "⦉": [T: "Z-нотация левая скобка связывания"] # 0x2989 + - "⦊": [T: "Z-нотация правая скобка связывания"] # 0x298a + - "⦋": [T: "левая квадратная скобка с подчёркиванием"] # 0x298b + - "⦌": [T: "правая квадратная скобка с подчёркиванием"] # 0x298c + - "⦍": [T: "левая квадратная скобка с отметкой в верхнем углу"] # 0x298d + - "⦎": [T: "правая квадратная скобка с отметкой в нижнем углу"] # 0x298e + - "⦏": [T: "левая квадратная скобка с отметкой в нижнем углу"] # 0x298f + - "⦐": [T: "правая квадратная скобка с отметкой в верхнем углу"] # 0x2990 + - "⦑": [T: "левая угловая скобка с точкой"] # 0x2991 + - "⦒": [T: "правая угловая скобка с точкой"] # 0x2992 + - "⦓": [T: "левая дуговая скобка меньше"] # 0x2993 + - "⦔": [T: "правая дуговая скобка больше"] # 0x2994 + - "⦕": [T: "двойная левая дуговая скобка больше"] # 0x2995 + - "⦖": [T: "двойная правая дуговая скобка меньше"] # 0x2996 + - "⦗": [T: "левая чёрная черепашья скобка"] # 0x2997 + - "⦘": [T: "правая чёрная черепашья скобка"] # 0x2998 + - "⦙": [T: "пунктирный забор"] # 0x2999 + - "⦚": [T: "вертикальная зигзагообразная линия"] # 0x299a + - "⦛": [T: "измеренный угол, открытый влево"] # 0x299b + - "⦜": [T: "вариант прямого угла с квадратом"] # 0x299c + - "⦝": [T: "измеренный прямой угол с точкой"] # 0x299d + - "⦞": [T: "угол с s внутри"] # 0x299e + - "⦟": [T: "острый угол"] # 0x299f + - "⦠": [T: "сферический угол, открытый влево"] # 0x29a0 + - "⦡": [T: "сферический угол, открытый вверх"] # 0x29a1 + - "⦢": [T: "перевёрнутый угол"] # 0x29a2 + - "⦣": [T: "обратный угол"] # 0x29a3 + - "⦤": [T: "угол с подчёркиванием"] # 0x29a4 + - "⦥": [T: "обратный угол с подчёркиванием"] # 0x29a5 + - "⦦": [T: "косой угол, открытый вверх"] # 0x29a6 + - "⦧": [T: "косой угол, открытый вниз"] # 0x29a7 + - "⦨": [T: "измеренный угол с открытым лучом, заканчивающимся стрелкой вверх и вправо"] # 0x29a8 + - "⦩": [T: "измеренный угол с открытым лучом, заканчивающимся стрелкой вверх и влево"] # 0x29a9 + - "⦪": [T: "измеренный угол с открытым лучом, заканчивающимся стрелкой вниз и вправо"] # 0x29aa + - "⦫": [T: "измеренный угол с открытым лучом, заканчивающимся стрелкой вниз и влево"] # 0x29ab + - "⦬": [T: "измеренный угол с открытым лучом, заканчивающимся стрелкой вправо и вверх"] # 0x29ac + - "⦭": [T: "измеренный угол с открытым лучом, заканчивающимся стрелкой влево и вверх"] # 0x29ad + - "⦮": [T: "измеренный угол с открытым лучом, заканчивающимся стрелкой вправо и вниз"] # 0x29ae + - "⦯": [T: "измеренный угол с открытым лучом, заканчивающимся стрелкой влево и вниз"] # 0x29af + - "⦰": [T: "обратное пустое множество"] # 0x29b0 + - "⦱": [T: "пустое множество с надчёркиванием"] # 0x29b1 + - "⦲": [T: "пустое множество с маленьким кругом сверху"] # 0x29b2 + - "⦳": [T: "пустое множество со стрелкой вправо сверху"] # 0x29b3 + - "⦴": [T: "пустое множество со стрелкой влево сверху"] # 0x29b4 + - "⦵": [T: "круг с горизонтальной чертой"] # 0x29b5 + - "⦶": [T: "вертикальная черта в круге"] # 0x29b6 + - "⦷": [T: "параллельность в круге"] # 0x29b7 + - "⦸": [T: "обратная косая черта в круге"] # 0x29b8 + - "⦹": [T: "перпендикуляр в круге"] # 0x29b9 + - "⦺": [T: "круг, разделённый горизонтальной чертой, верхняя половина разделена вертикальной чертой"] # 0x29ba + - "⦻": [T: "круг с наложенным x"] # 0x29bb + - "⦼": [T: "знак деления, повёрнутый против часовой в круге"] # 0x29bc + - "⦽": [T: "стрелка вверх сквозь круг"] # 0x29bd + - "⦾": [T: "белый буллит в круге"] # 0x29be + - "⦿": [T: "буллит в круге"] # 0x29bf + - "⧀": [T: "меньше в круге"] # 0x29c0 + - "⧁": [T: "больше в круге"] # 0x29c1 + - "⧂": [T: "круг с маленьким кругом справа"] # 0x29c2 + - "⧃": [T: "круг с двумя горизонтальными штрихами справа"] # 0x29c3 + - "⧄": [T: "квадратная восходящая диагональная черта"] # 0x29c4 + - "⧅": [T: "квадратная нисходящая диагональная черта"] # 0x29c5 + - "⧆": [T: "звёздочка в квадрате"] # 0x29c6 + - "⧇": [T: "маленький круг в квадрате"] # 0x29c7 + - "⧈": [T: "квадрат в квадрате"] # 0x29c8 + - "⧉": [T: "два соединённых квадрата"] # 0x29c9 + - "⧊": [T: "треугольник с точкой сверху"] # 0x29ca + - "⧋": [T: "треугольник с подчёркиванием"] # 0x29cb + - "⧌": [T: "s в треугольнике"] # 0x29cc + - "⧍": [T: "треугольник с засечками внизу"] # 0x29cd + - "⧎": [T: "правый треугольник над левым треугольником"] # 0x29ce + - "⧏": [T: "левый треугольник рядом с вертикальной чертой"] # 0x29cf + - "⧐": [T: "вертикальная черта рядом с правым треугольником"] # 0x29d0 + - "⧑": [T: "бантик с левой половиной чёрной"] # 0x29d1 + - "⧒": [T: "бантик с правой половиной чёрной"] # 0x29d2 + - "⧓": [T: "чёрный бантик"] # 0x29d3 + - "⧔": [T: "крест с левой половиной чёрной"] # 0x29d4 + - "⧕": [T: "крест с правой половиной чёрной"] # 0x29d5 + - "⧖": [T: "белые песочные часы"] # 0x29d6 + - "⧗": [T: "чёрные песочные часы"] # 0x29d7 + - "⧘": [T: "левый волнистый забор"] # 0x29d8 + - "⧙": [T: "правый волнистый забор"] # 0x29d9 + - "⧚": [T: "левый двойной волнистый забор"] # 0x29da + - "⧛": [T: "правый двойной волнистый забор"] # 0x29db + - "⧜": [T: "неполная бесконечность"] # 0x29dc + - "⧝": [T: "лигатура над бесконечностью"] # 0x29dd + - "⧞": [T: "бесконечность, перечёркнутая вертикальной чертой"] # 0x29de + - "⧟": [T: "двустороннее мультиотображение"] # 0x29df + - "⧠": [T: "квадрат с контурным очертанием"] # 0x29e0 + - "⧡": [T: "возрастает как"] # 0x29e1 + - "⧢": [T: "шаффл-произведение"] # 0x29e2 + - "⧣": [T: "знак равенства и наклонная параллельность"] # 0x29e3 + - "⧤": [T: "знак равенства и наклонная параллельность с тильдой сверху"] # 0x29e4 + - "⧥": [T: "тождественно и наклонная параллельность"] # 0x29e5 + - "⧦": [T: "равносильно"] # 0x29e6 + - "⧧": [T: "термодинамический"] # 0x29e7 + - "⧨": [T: "треугольник остриём вниз с левой половиной чёрной"] # 0x29e8 + - "⧩": [T: "треугольник остриём вниз с правой половиной чёрной"] # 0x29e9 + - "⧪": [T: "чёрный ромб со стрелкой вниз"] # 0x29ea + - "⧫": [T: "чёрная луковица"] # 0x29eb + - "⧬": [T: "белый круг со стрелкой вниз"] # 0x29ec + - "⧭": [T: "чёрный круг со стрелкой вниз"] # 0x29ed + - "⧮": [T: "белый квадрат с планками погрешностей"] # 0x29ee + - "⧯": [T: "чёрный квадрат с планками погрешностей"] # 0x29ef + - "⧰": [T: "белый ромб с планками погрешностей"] # 0x29f0 + - "⧱": [T: "чёрный ромб с планками погрешностей"] # 0x29f1 + - "⧲": [T: "белый круг с планками погрешностей"] # 0x29f2 + - "⧳": [T: "чёрный круг с планками погрешностей"] # 0x29f3 + - "⧴": [T: "отложенное правило"] # 0x29f4 + - "⧵": [T: "оператор обратная косая черта"] # 0x29f5 + - "⧶": [T: "косая черта с надчёркиванием"] # 0x29f6 + - "⧷": [T: "обратная косая черта с горизонтальным штрихом"] # 0x29f7 + - "⧸": [T: "большая косая черта"] # 0x29f8 + - "⧹": [T: "большая обратная косая черта"] # 0x29f9 + - "⧺": [T: "двойной плюс"] # 0x29fa + - "⧻": [T: "тройной плюс"] # 0x29fb + - "⧼": [T: "левая изогнутая угловая скобка"] # 0x29fc + - "⧽": [T: "правая изогнутая угловая скобка"] # 0x29fd + - "⧾": [T: "крошечный"] # 0x29fe + - "⧿": [T: "малюсенький"] # 0x29ff + - "⨀": [T: "оператор точка в круге"] # 0x2a00 + - "⨁": [T: "оператор плюс в круге"] # 0x2a01 + - "⨂": [T: "оператор умножить в круге"] # 0x2a02 + - "⨃": [T: "оператор объединение с точкой"] # 0x2a03 + - "⨄": [T: "оператор объединение с плюсом"] # 0x2a04 + - "⨅": [T: "оператор квадратное пересечение"] # 0x2a05 + - "⨆": [T: "оператор квадратное объединение"] # 0x2a06 + - "⨇": [T: "оператор двойное логическое и"] # 0x2a07 + - "⨈": [T: "оператор двойное логическое или"] # 0x2a08 + - "⨉": [T: "оператор умножения"] # 0x2a09 + - "⨊": [T: "сумма по модулю два"] # 0x2a0a + - "⨋": [T: "суммирование с интегралом"] # 0x2a0b + - "⨌": [T: "четверной интеграл"] # 0x2a0c + - "⨍": [T: "конечная часть интеграла"] # 0x2a0d + - "⨎": [T: "интеграл с двойным штрихом"] # 0x2a0e + - "⨏": [T: "интегральное среднее с косой чертой"] # 0x2a0f + - "⨐": [T: "функция циркуляции"] # 0x2a10 + - "⨑": [T: "интеграл против часовой стрелки"] # 0x2a11 + - "⨒": [T: "криволинейный интеграл с прямоугольным путём вокруг полюса"] # 0x2a12 + - "⨓": [T: "криволинейный интеграл с полукруглым путём вокруг полюса"] # 0x2a13 + - "⨔": [T: "криволинейный интеграл, не включающий полюс"] # 0x2a14 + - "⨕": [T: "интеграл вокруг точки"] # 0x2a15 + - "⨖": [T: "кватернионный интеграл"] # 0x2a16 + - "⨗": [T: "интеграл со стрелкой влево с крюком"] # 0x2a17 + - "⨘": [T: "интеграл со знаком умножения"] # 0x2a18 + - "⨙": [T: "интеграл с пересечением"] # 0x2a19 + - "⨚": [T: "интеграл с объединением"] # 0x2a1a + - "⨛": [T: "верхний интеграл"] # 0x2a1b + - "⨜": [T: "нижний интеграл"] # 0x2a1c + - "⨝": [T: "соединение"] # 0x2a1d + - "⨞": [T: "оператор большой левый треугольник"] # 0x2a1e + - "⨟": [T: "Z-нотация композиция схемы"] # 0x2a1f + - "⨠": [T: "Z-нотация конвейер схемы"] # 0x2a20 + - "⨡": [T: "Z-нотация проекция схемы"] # 0x2a21 + - "⨢": [T: "знак плюс с кругом сверху"] # 0x2a22 + - "⨣": [T: "знак плюс с циркумфлексом сверху"] # 0x2a23 + - "⨤": [T: "знак плюс с тильдой сверху"] # 0x2a24 + - "⨥": [T: "знак плюс с точкой снизу"] # 0x2a25 + - "⨦": [T: "знак плюс с тильдой снизу"] # 0x2a26 + - "⨧": [T: "знак плюс с индексом два"] # 0x2a27 + - "⨨": [T: "знак плюс с чёрным треугольником"] # 0x2a28 + - "⨩": [T: "знак минус с запятой сверху"] # 0x2a29 + - "⨪": [T: "знак минус с точкой снизу"] # 0x2a2a + - "⨫": [T: "знак минус с падающими точками"] # 0x2a2b + - "⨬": [T: "знак минус с растущими точками"] # 0x2a2c + - "⨭": [T: "знак плюс в левой половине круга"] # 0x2a2d + - "⨮": [T: "знак плюс в правой половине круга"] # 0x2a2e - "⨯": # 0x2a2f - test: if: "$Verbosity='Terse'" - then: [t: "крест"] - else: [t: "векторное произведение"] - - "⨰": [t: "знак умножения с точкой сверху"] # 0x2a30 - - "⨱": [t: "знак умножения с подчёркиванием"] # 0x2a31 - - "⨲": [t: "полупрямое произведение с замкнутым низом"] # 0x2a32 - - "⨳": [t: "разбивающее произведение"] # 0x2a33 - - "⨴": [t: "знак умножения в левой половине круга"] # 0x2a34 - - "⨵": [t: "знак умножения в правой половине круга"] # 0x2a35 - - "⨶": [t: "знак умножения в круге с циркумфлексом"] # 0x2a36 - - "⨷": [t: "знак умножения в двойном круге"] # 0x2a37 - - "⨸": [t: "знак деления в круге"] # 0x2a38 - - "⨹": [t: "знак плюс в треугольнике"] # 0x2a39 - - "⨺": [t: "знак минус в треугольнике"] # 0x2a3a - - "⨻": [t: "знак умножения в треугольнике"] # 0x2a3b - - "⨼": [t: "внутреннее произведение"] # 0x2a3c - - "⨽": [t: "правое внутреннее произведение"] # 0x2a3d - - "⨾": [t: "Z-нотация реляционная композиция"] # 0x2a3e - - "⨿": [t: "амальгама или копроизведение"] # 0x2a3f - - "⩀": [t: "пересечение с точкой"] # 0x2a40 - - "⩁": [t: "объединение со знаком минус"] # 0x2a41 - - "⩂": [t: "объединение с надчёркиванием"] # 0x2a42 - - "⩃": [t: "пересечение с надчёркиванием"] # 0x2a43 - - "⩄": [t: "пересечение с логическим и"] # 0x2a44 - - "⩅": [t: "объединение с логическим или"] # 0x2a45 - - "⩆": [t: "объединение над пересечением"] # 0x2a46 - - "⩇": [t: "пересечение над объединением"] # 0x2a47 - - "⩈": [t: "объединение над чертой над пересечением"] # 0x2a48 - - "⩉": [t: "пересечение над чертой над объединением"] # 0x2a49 - - "⩊": [t: "объединение рядом и соединённое с объединением"] # 0x2a4a - - "⩋": [t: "пересечение рядом и соединённое с пересечением"] # 0x2a4b - - "⩌": [t: "замкнутое объединение с засечками"] # 0x2a4c - - "⩍": [t: "замкнутое пересечение с засечками"] # 0x2a4d - - "⩎": [t: "двойное квадратное пересечение"] # 0x2a4e - - "⩏": [t: "двойное квадратное объединение"] # 0x2a4f - - "⩐": [t: "замкнутое объединение с засечками и разбивающим произведением"] # 0x2a50 - - "⩑": [t: "логическое и с точкой сверху"] # 0x2a51 - - "⩒": [t: "логическое или с точкой сверху"] # 0x2a52 - - "⩓": [t: "двойное логическое и"] # 0x2a53 - - "⩔": [t: "двойное логическое или"] # 0x2a54 - - "⩕": [t: "два пересекающихся логических и"] # 0x2a55 - - "⩖": [t: "два пересекающихся логических или"] # 0x2a56 - - "⩗": [t: "наклонное большое или"] # 0x2a57 - - "⩘": [t: "наклонное большое и"] # 0x2a58 - - "⩙": [t: "логическое или перекрывает логическое и"] # 0x2a59 - - "⩚": [t: "логическое и со средним стержнем"] # 0x2a5a - - "⩛": [t: "логическое или со средним стержнем"] # 0x2a5b - - "⩜": [t: "логическое и с горизонтальным тире"] # 0x2a5c - - "⩝": [t: "логическое или с горизонтальным тире"] # 0x2a5d - - "⩞": [t: "логическое и с двойным надчёркиванием"] # 0x2a5e - - "⩟": [t: "логическое и с подчёркиванием"] # 0x2a5f - - "⩠": [t: "логическое и с двойным подчёркиванием"] # 0x2a60 - - "⩡": [t: "маленькая галочка с подчёркиванием"] # 0x2a61 - - "⩢": [t: "логическое или с двойным надчёркиванием"] # 0x2a62 - - "⩣": [t: "логическое или с двойным подчёркиванием"] # 0x2a63 - - "⩤": [t: "Z-нотация антиограничение области"] # 0x2a64 - - "⩥": [t: "Z-нотация антиограничение диапазона"] # 0x2a65 - - "⩦": [t: "знак равенства с точкой снизу"] # 0x2a66 - - "⩧": [t: "тождественно с точкой сверху"] # 0x2a67 - - "⩨": [t: "тройная горизонтальная черта с двойным вертикальным штрихом"] # 0x2a68 - - "⩩": [t: "тройная горизонтальная черта с тройным вертикальным штрихом"] # 0x2a69 - - "⩪": [t: "тильда с точкой сверху"] # 0x2a6a - - "⩫": [t: "тильда с растущими точками"] # 0x2a6b - - "⩬": [t: "похоже минус похоже"] # 0x2a6c - - "⩭": [t: "конгруэнтно с точкой сверху"] # 0x2a6d - - "⩮": [t: "равно со звёздочкой"] # 0x2a6e - - "⩯": [t: "почти равно с циркумфлексом"] # 0x2a6f - - "⩰": [t: "приблизительно равно или равно"] # 0x2a70 - - "⩱": [t: "знак равенства над знаком плюс"] # 0x2a71 - - "⩲": [t: "знак плюс над знаком равенства"] # 0x2a72 - - "⩳": [t: "знак равенства над тильдой"] # 0x2a73 - - "⩴": [t: "двойное двоеточие равно"] # 0x2a74 - - "⩵": [t: "два последовательных знака равенства"] # 0x2a75 - - "⩶": [t: "три последовательных знака равенства"] # 0x2a76 - - "⩷": [t: "знак равенства с двумя точками сверху и двумя точками снизу"] # 0x2a77 - - "⩸": [t: "эквивалентно с четырьмя точками сверху"] # 0x2a78 - - "⩹": [t: "меньше с кругом внутри"] # 0x2a79 - - "⩺": [t: "больше с кругом внутри"] # 0x2a7a - - "⩻": [t: "меньше с вопросительным знаком сверху"] # 0x2a7b - - "⩼": [t: "больше с вопросительным знаком сверху"] # 0x2a7c - - "⩽": [t: "меньше или наклонно равно"] # 0x2a7d - - "⩾": [t: "больше или наклонно равно"] # 0x2a7e - - "⩿": [t: "меньше или наклонно равно с точкой внутри"] # 0x2a7f - - "⪀": [t: "больше или наклонно равно с точкой внутри"] # 0x2a80 - - "⪁": [t: "меньше или наклонно равно с точкой сверху"] # 0x2a81 - - "⪂": [t: "больше или наклонно равно с точкой сверху"] # 0x2a82 - - "⪃": [t: "меньше или наклонно равно с точкой сверху справа"] # 0x2a83 - - "⪄": [t: "больше или наклонно равно с точкой сверху слева"] # 0x2a84 - - "⪅": [t: "меньше или приблизительно"] # 0x2a85 - - "⪆": [t: "больше или приблизительно"] # 0x2a86 - - "⪇": [t: "меньше и одинарная линия не равно"] # 0x2a87 - - "⪈": [t: "больше и одинарная линия не равно"] # 0x2a88 - - "⪉": [t: "меньше и не приблизительно"] # 0x2a89 - - "⪊": [t: "больше и не приблизительно"] # 0x2a8a - - "⪋": [t: "меньше над двойной линией равно над больше"] # 0x2a8b - - "⪌": [t: "больше над двойной линией равно над меньше"] # 0x2a8c - - "⪍": [t: "меньше над похоже или равно"] # 0x2a8d - - "⪎": [t: "больше над похоже или равно"] # 0x2a8e - - "⪏": [t: "меньше над похоже над больше"] # 0x2a8f - - "⪐": [t: "больше над похоже над меньше"] # 0x2a90 - - "⪑": [t: "меньше над больше над двойной линией равно"] # 0x2a91 - - "⪒": [t: "больше над меньше над двойной линией равно"] # 0x2a92 - - "⪓": [t: "меньше над наклонным равно над больше над наклонным равно"] # 0x2a93 - - "⪔": [t: "больше над наклонным равно над меньше над наклонным равно"] # 0x2a94 - - "⪕": [t: "наклонно равно или меньше"] # 0x2a95 - - "⪖": [t: "наклонно равно или больше"] # 0x2a96 - - "⪗": [t: "наклонно равно или меньше с точкой внутри"] # 0x2a97 - - "⪘": [t: "наклонно равно или больше с точкой внутри"] # 0x2a98 - - "⪙": [t: "двойная линия равно или меньше"] # 0x2a99 - - "⪚": [t: "двойная линия равно или больше"] # 0x2a9a - - "⪛": [t: "двойная линия наклонно равно или меньше"] # 0x2a9b - - "⪜": [t: "двойная линия наклонно равно или больше"] # 0x2a9c - - "⪝": [t: "похоже или меньше"] # 0x2a9d - - "⪞": [t: "похоже или больше"] # 0x2a9e - - "⪟": [t: "похоже над меньше над знаком равенства"] # 0x2a9f - - "⪠": [t: "похоже над больше над знаком равенства"] # 0x2aa0 - - "⪡": [t: "двойное вложенное меньше"] # 0x2aa1 - - "⪢": [t: "двойное вложенное больше"] # 0x2aa2 - - "⪣": [t: "двойное вложенное меньше с подчёркиванием"] # 0x2aa3 - - "⪤": [t: "больше перекрывает меньше"] # 0x2aa4 - - "⪥": [t: "больше рядом с меньше"] # 0x2aa5 - - "⪦": [t: "меньше замкнутое кривой"] # 0x2aa6 - - "⪧": [t: "больше замкнутое кривой"] # 0x2aa7 - - "⪨": [t: "меньше замкнутое кривой над наклонным равно"] # 0x2aa8 - - "⪩": [t: "больше замкнутое кривой над наклонным равно"] # 0x2aa9 - - "⪪": [t: "меньше чем"] # 0x2aaa - - "⪫": [t: "больше чем"] # 0x2aab - - "⪬": [t: "меньше чем или равно"] # 0x2aac - - "⪭": [t: "больше чем или равно"] # 0x2aad - - "⪮": [t: "знак равенства с бугром сверху"] # 0x2aae - - "⪯": [t: "предшествует над одинарной линией равенства"] # 0x2aaf - - "⪰": [t: "следует над одинарной линией равенства"] # 0x2ab0 - - "⪱": [t: "предшествует над одинарной линией не равно"] # 0x2ab1 - - "⪲": [t: "следует над одинарной линией не равно"] # 0x2ab2 - - "⪳": [t: "предшествует над знаком равенства"] # 0x2ab3 - - "⪴": [t: "следует над знаком равенства"] # 0x2ab4 - - "⪵": [t: "предшествует над не равно"] # 0x2ab5 - - "⪶": [t: "следует над не равно"] # 0x2ab6 - - "⪷": [t: "предшествует над почти равно"] # 0x2ab7 - - "⪸": [t: "следует над почти равно"] # 0x2ab8 - - "⪹": [t: "предшествует над не почти равно"] # 0x2ab9 - - "⪺": [t: "следует над не почти равно"] # 0x2aba - - "⪻": [t: "двойное предшествует"] # 0x2abb - - "⪼": [t: "двойное следует"] # 0x2abc - - "⪽": [t: "подмножество с точкой"] # 0x2abd - - "⪾": [t: "надмножество с точкой"] # 0x2abe - - "⪿": [t: "подмножество со знаком плюс снизу"] # 0x2abf - - "⫀": [t: "надмножество со знаком плюс снизу"] # 0x2ac0 - - "⫁": [t: "подмножество со знаком умножения снизу"] # 0x2ac1 - - "⫂": [t: "надмножество со знаком умножения снизу"] # 0x2ac2 - - "⫃": [t: "подмножество или равно с точкой сверху"] # 0x2ac3 - - "⫄": [t: "надмножество или равно с точкой сверху"] # 0x2ac4 - - "⫅": [t: "подмножество над знаком равенства"] # 0x2ac5 - - "⫆": [t: "надмножество над знаком равенства"] # 0x2ac6 - - "⫇": [t: "подмножество над тильдой"] # 0x2ac7 - - "⫈": [t: "надмножество над тильдой"] # 0x2ac8 - - "⫉": [t: "подмножество над почти равно"] # 0x2ac9 - - "⫊": [t: "надмножество над почти равно"] # 0x2aca - - "⫋": [t: "подмножество над не равно"] # 0x2acb - - "⫌": [t: "надмножество над не равно"] # 0x2acc - - "⫍": [t: "квадратный левый открытый ящик"] # 0x2acd - - "⫎": [t: "квадратный правый открытый ящик"] # 0x2ace - - "⫏": [t: "замкнутое подмножество"] # 0x2acf - - "⫐": [t: "замкнутое надмножество"] # 0x2ad0 - - "⫑": [t: "замкнутое подмножество или равно"] # 0x2ad1 - - "⫒": [t: "замкнутое надмножество или равно"] # 0x2ad2 - - "⫓": [t: "подмножество над надмножеством"] # 0x2ad3 - - "⫔": [t: "надмножество над подмножеством"] # 0x2ad4 - - "⫕": [t: "подмножество над подмножеством"] # 0x2ad5 - - "⫖": [t: "надмножество над надмножеством"] # 0x2ad6 - - "⫗": [t: "надмножество рядом с подмножеством"] # 0x2ad7 - - "⫘": [t: "надмножество рядом и соединённое тире с подмножеством"] # 0x2ad8 - - "⫙": [t: "элемент, открытый вниз"] # 0x2ad9 - - "⫚": [t: "вилы с тройником сверху"] # 0x2ada - - "⫛": [t: "трансверсальное пересечение"] # 0x2adb - - "⫝̸": [t: "ветвление"] # 0x2adc - - "⫝": [t: "неветвление"] # 0x2add - - "⫞": [t: "короткий левый таск"] # 0x2ade - - "⫟": [t: "короткий нижний таск"] # 0x2adf - - "⫠": [t: "короткий верхний таск"] # 0x2ae0 - - "⫡": [t: "перпендикуляр с s"] # 0x2ae1 - - "⫢": [t: "вертикальная черта тройной правый турникет"] # 0x2ae2 - - "⫣": [t: "двойная вертикальная черта левый турникет"] # 0x2ae3 - - "⫤": [t: "вертикальная черта двойной левый турникет"] # 0x2ae4 - - "⫥": [t: "двойная вертикальная черта двойной левый турникет"] # 0x2ae5 - - "⫦": [t: "длинное тире от левого члена двойной вертикальной"] # 0x2ae6 - - "⫧": [t: "короткий нижний таск с надчёркиванием"] # 0x2ae7 - - "⫨": [t: "короткий верхний таск с подчёркиванием"] # 0x2ae8 - - "⫩": [t: "короткий верхний таск над коротким нижним таском"] # 0x2ae9 - - "⫪": [t: "двойной нижний таск"] # 0x2aea - - "⫫": [t: "двойной верхний таск"] # 0x2aeb - - "⫬": [t: "знак не с двойным штрихом"] # 0x2aec - - "⫭": [t: "обратный знак не с двойным штрихом"] # 0x2aed - - "⫮": [t: "не делит с обратной перечёркивающей косой"] # 0x2aee - - "⫯": [t: "вертикальная линия с кругом сверху"] # 0x2aef - - "⫰": [t: "вертикальная линия с кругом снизу"] # 0x2af0 - - "⫱": [t: "нижний таск с кругом снизу"] # 0x2af1 - - "⫲": [t: "параллельно с горизонтальным штрихом"] # 0x2af2 - - "⫳": [t: "параллельно с тильдой"] # 0x2af3 - - "⫴": [t: "тройная вертикальная черта бинарное отношение"] # 0x2af4 - - "⫵": [t: "тройная вертикальная черта с горизонтальным штрихом"] # 0x2af5 - - "⫶": [t: "оператор тройное двоеточие"] # 0x2af6 - - "⫷": [t: "тройное вложенное меньше"] # 0x2af7 - - "⫸": [t: "тройное вложенное больше"] # 0x2af8 - - "⫹": [t: "двойная линия наклонно меньше или равно"] # 0x2af9 - - "⫺": [t: "двойная линия наклонно больше или равно"] # 0x2afa - - "⫻": [t: "тройная косая черта бинарное отношение"] # 0x2afb - - "⫼": [t: "оператор большая тройная вертикальная черта"] # 0x2afc - - "⫽": [t: "оператор двойная косая черта"] # 0x2afd - - "⫾": [t: "белая вертикальная черта"] # 0x2afe - - "⫿": [t: "белая вертикальная черта"] # 0x2aff - - "⬀": [t: "белая стрелка на северо-восток"] # 0x2b00 - - "⬁": [t: "белая стрелка на северо-запад"] # 0x2b01 - - "⬂": [t: "белая стрелка на юго-восток"] # 0x2b02 - - "⬃": [t: "белая стрелка на юго-запад"] # 0x2b03 - - "⬄": [t: "белая стрелка влево-вправо"] # 0x2b04 - - "⬅": [t: "чёрная стрелка влево"] # 0x2b05 - - "⬆": [t: "чёрная стрелка вверх"] # 0x2b06 - - "⬇": [t: "чёрная стрелка вниз"] # 0x2b07 - - "⬈": [t: "чёрная стрелка на северо-восток"] # 0x2b08 - - "⬉": [t: "чёрная стрелка на северо-запад"] # 0x2b09 - - "⬊": [t: "чёрная стрелка на юго-восток"] # 0x2b0a - - "⬋": [t: "чёрная стрелка на юго-запад"] # 0x2b0b - - "⬌": [t: "чёрная стрелка влево-вправо"] # 0x2b0c - - "⬍": [t: "чёрная стрелка вверх-вниз"] # 0x2b0d - - "⬎": [t: "стрелка вправо с наконечником вниз"] # 0x2b0e - - "⬏": [t: "стрелка вправо с наконечником вверх"] # 0x2b0f - - "⬐": [t: "стрелка влево с наконечником вниз"] # 0x2b10 - - "⬑": [t: "стрелка влево с наконечником вверх"] # 0x2b11 - - "⬒": [t: "квадрат с верхней половиной чёрной"] # 0x2b12 - - "⬓": [t: "квадрат с нижней половиной чёрной"] # 0x2b13 - - "⬔": [t: "квадрат с верхней правой диагональной половиной чёрной"] # 0x2b14 - - "⬕": [t: "квадрат с нижней левой диагональной половиной чёрной"] # 0x2b15 - - "⬖": [t: "ромб с левой половиной чёрной"] # 0x2b16 - - "⬗": [t: "ромб с правой половиной чёрной"] # 0x2b17 - - "⬘": [t: "ромб с верхней половиной чёрной"] # 0x2b18 - - "⬙": [t: "ромб с нижней половиной чёрной"] # 0x2b19 - - "⬚": [t: "ящик"] # 0x2b1a - - "⬛": [t: "чёрный большой квадрат"] # 0x2b1b - - "⬜": [t: "белый большой квадрат"] # 0x2b1c - - "⬝": [t: "чёрный очень маленький квадрат"] # 0x2b1d - - "⬞": [t: "белый очень маленький квадрат"] # 0x2b1e - - "⬟": [t: "чёрный пятиугольник"] # 0x2b1f - - "⬠": [t: "белый пятиугольник"] # 0x2b20 - - "⬡": [t: "белый шестиугольник"] # 0x2b21 - - "⬢": [t: "чёрный шестиугольник"] # 0x2b22 - - "⬣": [t: "горизонтальный чёрный шестиугольник"] # 0x2b23 - - "⬤": [t: "чёрный большой круг"] # 0x2b24 - - "⬥": [t: "чёрный средний ромб"] # 0x2b25 - - "⬦": [t: "белый средний ромб"] # 0x2b26 - - "⬧": [t: "чёрная средняя луковица"] # 0x2b27 - - "⬨": [t: "белая средняя луковица"] # 0x2b28 - - "⬩": [t: "чёрный маленький ромб"] # 0x2b29 - - "⬪": [t: "чёрная маленькая луковица"] # 0x2b2a - - "⬫": [t: "белая маленькая луковица"] # 0x2b2b - - "⬬": [t: "чёрный горизонтальный эллипс"] # 0x2b2c - - "⬭": [t: "белый горизонтальный эллипс"] # 0x2b2d - - "⬮": [t: "чёрный вертикальный эллипс"] # 0x2b2e - - "⬯": [t: "белый вертикальный эллипс"] # 0x2b2f - - "⬰": [t: "стрелка влево с маленьким кругом"] # 0x2b30 - - "⬱": [t: "три стрелки влево"] # 0x2b31 - - "⬲": [t: "стрелка влево с плюсом в круге"] # 0x2b32 - - "⬳": [t: "длинная волнистая стрелка влево"] # 0x2b33 - - "⬴": [t: "стрелка влево с двумя наконечниками и вертикальным штрихом"] # 0x2b34 - - "⬵": [t: "стрелка влево с двумя наконечниками и двойным вертикальным штрихом"] # 0x2b35 - - "⬶": [t: "стрелка влево с двумя наконечниками от черты"] # 0x2b36 - - "⬷": [t: "стрелка влево с двумя наконечниками и тройным пунктиром"] # 0x2b37 - - "⬸": [t: "стрелка влево с пунктирным стволом"] # 0x2b38 - - "⬹": [t: "стрелка влево с хвостом и вертикальным штрихом"] # 0x2b39 - - "⬺": [t: "стрелка влево с хвостом и двойным вертикальным штрихом"] # 0x2b3a - - "⬻": [t: "стрелка влево с двумя наконечниками и хвостом"] # 0x2b3b - - "⬼": [t: "стрелка влево с двумя наконечниками, хвостом и вертикальным штрихом"] # 0x2b3c - - "⬽": [t: "стрелка влево с двумя наконечниками, хвостом и двойным вертикальным штрихом"] # 0x2b3d - - "⬾": [t: "стрелка влево сквозь x"] # 0x2b3e - - "⬿": [t: "волновая стрелка, указывающая прямо влево"] # 0x2b3f - - "⭀": [t: "знак равенства над стрелкой влево"] # 0x2b40 - - "⭁": [t: "обратная тильда над стрелкой влево"] # 0x2b41 - - "⭂": [t: "стрелка влево над обратным почти равно"] # 0x2b42 - - "⭃": [t: "стрелка вправо сквозь больше"] # 0x2b43 - - "⭄": [t: "стрелка вправо сквозь надмножество"] # 0x2b44 - - "⭅": [t: "левая четверная стрелка"] # 0x2b45 - - "⭆": [t: "правая четверная стрелка"] # 0x2b46 - - "⭇": [t: "обратная тильда над стрелкой вправо"] # 0x2b47 - - "⭈": [t: "стрелка вправо над обратным почти равно"] # 0x2b48 - - "⭉": [t: "тильда над стрелкой влево"] # 0x2b49 - - "⭊": [t: "стрелка влево над почти равно"] # 0x2b4a - - "⭋": [t: "стрелка влево над обратной тильдой"] # 0x2b4b - - "⭌": [t: "стрелка вправо над обратной тильдой"] # 0x2b4c - - "⭐": [t: "белая средняя звезда"] # 0x2b50 - - "⭑": [t: "чёрная маленькая звезда"] # 0x2b51 - - "⭒": [t: "белая маленькая звезда"] # 0x2b52 - - "⭓": [t: "чёрный пятиугольник остриём вправо"] # 0x2b53 - - "⭔": [t: "белый пятиугольник остриём вправо"] # 0x2b54 - - "⭕": [t: "жирный большой круг"] # 0x2b55 - - "⭖": [t: "жирный овал с овалом внутри"] # 0x2b56 - - "⭗": [t: "жирный круг с кругом внутри"] # 0x2b57 - - "⭘": [t: "жирный круг"] # 0x2b58 - - "⭙": [t: "жирный круг с андреевским крестом"] # 0x2b59 - - "⸀": [t: "маркер замены прямым углом"] # 0x2e00 - - "⸁": [t: "маркер замены прямым углом с точкой"] # 0x2e01 - - "⸂": [t: "левая скобка замены"] # 0x2e02 - - "⸃": [t: "правая скобка замены"] # 0x2e03 - - "⸄": [t: "левая пунктирная скобка замены"] # 0x2e04 - - "⸅": [t: "правая пунктирная скобка замены"] # 0x2e05 - - "⸆": [t: "приподнятый маркер вставки"] # 0x2e06 - - "⸇": [t: "приподнятый пунктирный маркер вставки"] # 0x2e07 - - "⸈": [t: "пунктирный маркер транспозиции"] # 0x2e08 - - "⸉": [t: "левая скобка транспозиции"] # 0x2e09 - - "⸊": [t: "правая скобка транспозиции"] # 0x2e0a - - "⸋": [t: "приподнятый квадрат"] # 0x2e0b - - "⸌": [t: "левая приподнятая скобка пропуска"] # 0x2e0c - - "⸍": [t: "правая приподнятая скобка пропуска"] # 0x2e0d - - "⸎": [t: "издательская коронида"] # 0x2e0e - - "⸏": [t: "параграфос"] # 0x2e0f - - "⸐": [t: "вилообразный параграфос"] # 0x2e10 - - "⸑": [t: "обратный вилообразный параграфос"] # 0x2e11 - - "⸒": [t: "гиподиастола"] # 0x2e12 - - "⸓": [t: "пунктирный обел"] # 0x2e13 - - "⸔": [t: "нижняя якорная скобка"] # 0x2e14 - - "⸕": [t: "верхняя якорная скобка"] # 0x2e15 - - "⸖": [t: "пунктирный правый угол"] # 0x2e16 - - "⸗": [t: "двойной косой дефис"] # 0x2e17 - - "⸘": [t: "перевёрнутый интерробанг"] # 0x2e18 - - "⸙": [t: "пальмовая ветвь"] # 0x2e19 - - "⸚": [t: "дефис с диерезисом"] # 0x2e1a - - "⸛": [t: "тильда с кольцом сверху"] # 0x2e1b - - "⸜": [t: "левая нижняя парафразная скобка"] # 0x2e1c - - "⸝": [t: "правая нижняя парафразная скобка"] # 0x2e1d - - "⸞": [t: "тильда с точкой сверху"] # 0x2e1e - - "⸟": [t: "тильда с точкой снизу"] # 0x2e1f - - "⸠": [t: "левая вертикальная черта с пером"] # 0x2e20 - - "⸡": [t: "правая вертикальная черта с пером"] # 0x2e21 - - "⸢": [t: "верхняя левая половина скобки"] # 0x2e22 - - "⸣": [t: "верхняя правая половина скобки"] # 0x2e23 - - "⸤": [t: "нижняя левая половина скобки"] # 0x2e24 - - "⸥": [t: "нижняя правая половина скобки"] # 0x2e25 - - "⸦": [t: "левая боковая U-скобка"] # 0x2e26 - - "⸧": [t: "правая боковая U-скобка"] # 0x2e27 - - "⸨": [t: "левая двойная скобка"] # 0x2e28 - - "⸩": [t: "правая двойная скобка"] # 0x2e29 - - "⸪": [t: "две точки над одной точкой"] # 0x2e2a - - "⸫": [t: "одна точка над двумя точками"] # 0x2e2b - - "⸬": [t: "квадратная четырёхточечная пунктуация"] # 0x2e2c - - "⸭": [t: "знак из пяти точек"] # 0x2e2d - - "⸮": [t: "обратный вопросительный знак"] # 0x2e2e - - "ⸯ": [t: "вертикальная тильда"] # 0x2e2f - - "⸰": [t: "кольцевая точка"] # 0x2e30 - - "⸱": [t: "разделитель слов средняя точка"] # 0x2e31 - - "⸲": [t: "перевёрнутая запятая"] # 0x2e32 - - "⸳": [t: "приподнятая точка"] # 0x2e33 - - "⸴": [t: "приподнятая запятая"] # 0x2e34 - - "⸵": [t: "перевёрнутая точка с запятой"] # 0x2e35 - - "⸶": [t: "крестик с левой защитой"] # 0x2e36 - - "⸷": [t: "крестик с правой защитой"] # 0x2e37 - - "⸸": [t: "перевёрнутый крестик"] # 0x2e38 - - "⸹": [t: "верхняя половина знака параграфа"] # 0x2e39 - - "⸺": [t: "два длинных тире"] # 0x2e3a - - "⸻": [t: "три длинных тире"] # 0x2e3b - - "〃": [t: "знак повторения"] # 0x3003 - - "〈": [t: "левая угловая скобка"] # 0x3008 - - "〉": [t: "правая угловая скобка"] # 0x3009 - - "《": [t: "левая двойная угловая скобка"] # 0x300a - - "》": [t: "правая двойная угловая скобка"] # 0x300b - - "「": [t: "левая угловая скобка"] # 0x300c - - "」": [t: "правая угловая скобка"] # 0x300d - - "『": [t: "левая белая угловая скобка"] # 0x300e - - "』": [t: "правая белая угловая скобка"] # 0x300f - - "【": [t: "левая чёрная лентикулярная скобка"] # 0x3010 - - "】": [t: "правая чёрная лентикулярная скобка"] # 0x3011 - - "〔": [t: "открывающая черепашья скобка"] # 0x3014 - - "〕": [t: "закрывающая черепашья скобка"] # 0x3015 - - "〖": [t: "левая белая лентикулярная скобка"] # 0x3016 - - "〗": [t: "правая белая лентикулярная скобка"] # 0x3017 - - "〘": [t: "левая белая черепашья скобка"] # 0x3018 - - "〙": [t: "правая белая черепашья скобка"] # 0x3019 - - "〚": [t: "левая белая квадратная скобка"] # 0x301a - - "〛": [t: "правая белая квадратная скобка"] # 0x301b - - "〜": [t: "волновое тире"] # 0x301c - - "〰": [t: "волнистое тире"] # 0x3030 - - "㉈": [t: "число десять в круге на чёрном квадрате"] # 0x3248 - - "㉉": [t: "число двадцать в круге на чёрном квадрате"] # 0x3249 - - "㉊": [t: "число тридцать в круге на чёрном квадрате"] # 0x324a - - "㉋": [t: "число сорок в круге на чёрном квадрате"] # 0x324b - - "㉌": [t: "число пятьдесят в круге на чёрном квадрате"] # 0x324c - - "㉍": [t: "число шестьдесят в круге на чёрном квадрате"] # 0x324d - - "㉎": [t: "число семьдесят в круге на чёрном квадрате"] # 0x324e - - "㉏": [t: "число восемьдесят в круге на чёрном квадрате"] # 0x324f - - "㉑": [t: "число двадцать один в круге"] # 0x3251 - - "㉒": [t: "число двадцать два в круге"] # 0x3252 - - "㉓": [t: "число двадцать три в круге"] # 0x3253 - - "㉔": [t: "число двадцать четыре в круге"] # 0x3254 - - "㉕": [t: "число двадцать пять в круге"] # 0x3255 - - "㉖": [t: "число двадцать шесть в круге"] # 0x3256 - - "㉗": [t: "число двадцать семь в круге"] # 0x3257 - - "㉘": [t: "число двадцать восемь в круге"] # 0x3258 - - "㉙": [t: "число двадцать девять в круге"] # 0x3259 - - "㉚": [t: "число тридцать в круге"] # 0x325a - - "㉛": [t: "число тридцать один в круге"] # 0x325b - - "㉜": [t: "число тридцать два в круге"] # 0x325c - - "㉝": [t: "число тридцать три в круге"] # 0x325d - - "㉞": [t: "число тридцать четыре в круге"] # 0x325e - - "㉟": [t: "число тридцать пять в круге"] # 0x325f - - "㊱": [t: "число тридцать шесть в круге"] # 0x32b1 - - "㊲": [t: "число тридцать семь в круге"] # 0x32b2 - - "㊳": [t: "число тридцать восемь в круге"] # 0x32b3 - - "㊴": [t: "число тридцать девять в круге"] # 0x32b4 - - "㊵": [t: "число сорок в круге"] # 0x32b5 - - "㊶": [t: "число сорок один в круге"] # 0x32b6 - - "㊷": [t: "число сорок два в круге"] # 0x32b7 - - "㊸": [t: "число сорок три в круге"] # 0x32b8 - - "㊹": [t: "число сорок четыре в круге"] # 0x32b9 - - "㊺": [t: "число сорок пять в круге"] # 0x32ba - - "㊻": [t: "число сорок шесть в круге"] # 0x32bb - - "㊼": [t: "число сорок семь в круге"] # 0x32bc - - "㊽": [t: "число сорок восемь в круге"] # 0x32bd - - "㊾": [t: "число сорок девять в круге"] # 0x32be - - "㊿": [t: "число пятьдесят в круге"] # 0x32bf - - "㋌": [t: "Меркурий"] # 0x32cc - - "㋍": [t: "эрги"] # 0x32cd - - "㋎": [t: "электрон-вольты"] # 0x32ce - - "㋏": [t: "знак ограниченной ответственности"] # 0x32cf - - "㍱": [t: "гектопаскали"] # 0x3371 - - "㍲": [t: "дальтоны"] # 0x3372 - - "㍳": [t: "астрономические единицы"] # 0x3373 - - "㍴": [t: "бары"] # 0x3374 - - "㍵": [t: "о в"] # 0x3375 - - "㍶": [t: "парсеки"] # 0x3376 - - "㍷": [t: "дециметры"] # 0x3377 - - "㍸": [t: "квадратные дециметры"] # 0x3378 - - "㍹": [t: "кубические дециметры"] # 0x3379 - - "㍺": [t: "инструментальные единицы"] # 0x337a - - "㎀": [t: "пикоамперы"] # 0x3380 - - "㎁": [t: "наноамперы"] # 0x3381 - - "㎂": [t: "микроамперы"] # 0x3382 - - "㎃": [t: "миллиамперы"] # 0x3383 - - "㎄": [t: "килоамперы"] # 0x3384 - - "㎅": [t: "килобайты"] # 0x3385 - - "㎆": [t: "мегабайты"] # 0x3386 - - "㎇": [t: "гигабайты"] # 0x3387 - - "㎈": [t: "калории"] # 0x3388 - - "㎉": [t: "килокалории"] # 0x3389 - - "㎊": [t: "пикофарады"] # 0x338a - - "㎋": [t: "нанофарады"] # 0x338b - - "㎌": [t: "микрофарады"] # 0x338c - - "㎍": [t: "микрограммы"] # 0x338d - - "㎎": [t: "миллиграммы"] # 0x338e - - "㎏": [t: "килограммы"] # 0x338f - - "㎐": [t: "герцы"] # 0x3390 - - "㎑": [t: "килогерцы"] # 0x3391 - - "㎒": [t: "мегагерцы"] # 0x3392 - - "㎓": [t: "гигагерцы"] # 0x3393 - - "㎔": [t: "терагерцы"] # 0x3394 - - "㎕": [t: "микролитры"] # 0x3395 - - "㎖": [t: "миллилитры"] # 0x3396 - - "㎗": [t: "децилитры"] # 0x3397 - - "㎘": [t: "килолитры"] # 0x3398 - - "㎙": [t: "фемтометры"] # 0x3399 - - "㎚": [t: "нанометры"] # 0x339a - - "㎛": [t: "микрометры"] # 0x339b - - "㎜": [t: "миллиметры"] # 0x339c - - "㎝": [t: "сантиметры"] # 0x339d - - "㎞": [t: "километры"] # 0x339e - - "㎟": [t: "квадратные миллиметры"] # 0x339f - - "㎠": [t: "квадратные сантиметры"] # 0x33a0 - - "㎡": [t: "квадратные метры"] # 0x33a1 - - "㎢": [t: "квадратные километры"] # 0x33a2 - - "㎣": [t: "кубические миллиметры"] # 0x33a3 - - "㎤": [t: "кубические сантиметры"] # 0x33a4 - - "㎥": [t: "кубические метры"] # 0x33a5 - - "㎦": [t: "кубические километры"] # 0x33a6 - - "㎧": [t: "метры в секунду"] # 0x33a7 - - "㎨": [t: "метры в секунду в квадрате"] # 0x33a8 - - "㎩": [t: "паскали"] # 0x33a9 - - "㎪": [t: "килопаскали"] # 0x33aa - - "㎫": [t: "мегапаскали"] # 0x33ab - - "㎬": [t: "гигапаскали"] # 0x33ac - - "㎭": [t: "рады"] # 0x33ad - - "㎮": [t: "рады в секунду"] # 0x33ae - - "㎯": [t: "рады в секунду в квадрате"] # 0x33af - - "㎰": [t: "пикосекунды"] # 0x33b0 - - "㎱": [t: "наносекунды"] # 0x33b1 - - "㎲": [t: "микросекунды"] # 0x33b2 - - "㎳": [t: "миллисекунды"] # 0x33b3 - - "㎴": [t: "пиковольты"] # 0x33b4 - - "㎵": [t: "нановольты"] # 0x33b5 - - "㎶": [t: "микровольты"] # 0x33b6 - - "㎷": [t: "милливольты"] # 0x33b7 - - "㎸": [t: "киловольты"] # 0x33b8 - - "㎹": [t: "мегавольты"] # 0x33b9 - - "㎺": [t: "пиковатты"] # 0x33ba - - "㎻": [t: "нановатты"] # 0x33bb - - "㎼": [t: "микроватты"] # 0x33bc - - "㎽": [t: "милливатты"] # 0x33bd - - "㎾": [t: "киловатты"] # 0x33be - - "㎿": [t: "мегаватты"] # 0x33bf - - "㏀": [t: "килоомы"] # 0x33c0 - - "㏁": [t: "мегаомы"] # 0x33c1 - - "㏂": [t: "аттометры"] # 0x33c2 - - "㏃": [t: "беккерели"] # 0x33c3 - - "㏄": [t: "кубические сантиметры"] # 0x33c4 - - "㏅": [t: "канделы"] # 0x33c5 - - "㏆": [t: "кулоны на килограмм"] # 0x33c6 - - "㏇": [t: "заглавная C, o, точка"] # 0x33c7 (I have no idea what this is) - - "㏈": [t: "децибелы"] # 0x33c8 - - "㏉": [t: "греи"] # 0x33c9 - - "㏊": [t: "гектары"] # 0x33ca - - "㏋": [t: "лошадиные силы"] # 0x33cb - - "㏌": [t: "дюймы"] # 0x33cc - - "㏍": [t: "килокельвины"] # 0x33cd - - "㏎": [t: "километры"] # 0x33ce - - "㏏": [t: "узлы"] # 0x33cf - - "㏐": [t: "люмены"] # 0x33d0 - - "㏑": [t: "натуральный логарифм"] # 0x33d1 - - "㏒": [t: "логарифм"] # 0x33d2 - - "㏓": [t: "люксы"] # 0x33d3 - - "㏔": [t: "миллибарны"] # 0x33d4 - - "㏕": [t: "милли"] # 0x33d5 - - "㏖": [t: "моли"] # 0x33d6 - - "㏗": [t: "пэ аш"] # 0x33d7 - - "㏘": [t: "пикометры"] # 0x33d8 - - "㏙": [t: "частей на миллион"] # 0x33d9 - - "㏚": [t: "петарентгены"] # 0x33da - - "㏛": [t: "стерадианы"] # 0x33db - - "㏜": [t: "зиверты"] # 0x33dc - - "㏝": [t: "веберы"] # 0x33dd - - "㏞": [t: "вольты на метр"] # 0x33de - - "㏟": [t: "амперы на метр"] # 0x33df - - "㏿": [t: "галлоны"] # 0x33ff - - "": [t: "равно с крышкой снизу"] # 0xe900 - - "": [t: "равно с плюсом сверху"] # 0xe901 - - "": [t: "равно с плюсом снизу"] # 0xe902 - - "": [t: "тильда с плюсом сверху"] # 0xe903 - - "": [t: "тильда с плюсом снизу"] # 0xe904 - - "": [t: "равно двойное над больше"] # 0xe908 - - "": [t: "равно двойное над меньше"] # 0xe909 - - "": [t: "содержит или равно"] # 0xe90a - - "": [t: "надмножество или равно"] # 0xe90b - - "": [t: "подмножество или равно"] # 0xe90c - - "": [t: "равно над меньше"] # 0xe90d - - "": [t: "элемент или равно"] # 0xe912 - - "": [t: "равно или больше"] # 0xe913 - - "": [t: "приблизительное надмножество"] # 0xe914 - - "": [t: "приблизительное подмножество"] # 0xe915 - - "": [t: "надмножество с точкой включает как подотношение"] # 0xe916 - - "": [t: "подмножество с точкой включено как подотношение"] # 0xe917 - - "": [t: "равно с точкой снизу"] # 0xe918 - - "": [t: "левая точка над минусом над правой точкой"] # 0xe919 - - "": [t: "правая точка над минусом над левой точкой"] # 0xe91a - - "": [t: "почти равно минус"] # 0xe91f - - "": [t: "двойное квадратное объединение"] # 0xe920 - - "": [t: "двойное квадратное пересечение"] # 0xe921 - - "": [t: "меньше, равно или больше"] # 0xe922 - - "": [t: "тильда с точкой"] # 0xe924 - - "": [t: "тильда с двумя точками"] # 0xe925 - - "": [t: "меньше, больше или равно"] # 0xe926 - - "": [t: "больше, меньше или равно"] # 0xe927 - - "": [t: "эквивалентно или меньше"] # 0xe928 - - "": [t: "эквивалентно или больше"] # 0xe929 - - "": [t: "левый открытый ящик"] # 0xe92a - - "": [t: "правый открытый ящик"] # 0xe92b - - "": [t: "тождественно с точкой"] # 0xe92c - - "": [t: "больше, равно или меньше"] # 0xe92d - - "": [t: "оператор черта"] # 0xe92e - - "": [t: "оператор двойная черта"] # 0xe92f - - "": [t: "оператор тройная черта"] # 0xe930 - - "": [t: "меньше или приблизительно равно"] # 0xe932 - - "": [t: "больше или приблизительно равно"] # 0xe933 - - "": [t: "вложенное меньше"] # 0xe936 - - "": [t: "вложенное больше"] # 0xe937 - - "": [t: "предшествует или эквивалентно"] # 0xe93a - - "": [t: "следует или эквивалентно"] # 0xe93b - - "": [t: "предшествует над равно"] # 0xe940 - - "": [t: "следует над равно"] # 0xe941 - - "": [t: "меньше, равно, наклонно больше"] # 0xe942 - - "": [t: "больше, равно, наклонно меньше"] # 0xe943 - - "": [t: "удовлетворяется"] # 0xe948 - - "": [t: "ленивое s"] # 0xe949 - - "": [t: "не утверждение"] # 0xe94a - - "": [t: "двойное равно"] # 0xe94b - - "": [t: "тройное равно"] # 0xe94c - - "": [t: "правило отложено"] # 0xe94d - - "": [t: "разделитель псевдонимов"] # 0xe94e - - "": [t: "нормальная подгруппа с чертой"] # 0xe950 - - "": [t: "содержит как нормальную подгруппу с чертой"] # 0xe951 - - "": [t: "скруглённое следует"] # 0xe954 - - "": [t: "улыбка под чертой"] # 0xe955 - - "": [t: "хмурый над чертой"] # 0xe956 - - "": [t: "надмножество или почти равно"] # 0xe957 - - "": [t: "подмножество или почти равно"] # 0xe958 - - "": [t: "больше, почти равно или меньше"] # 0xe959 - - "": [t: "меньше, почти равно или больше"] # 0xe95a - - "": [t: "двойное логическое или"] # 0xe95c - - "": [t: "двойное логическое и"] # 0xe95d - - "": [t: "логическое или с двойной чертой снизу"] # 0xe95e - - "": [t: "логическое или с чертой снизу"] # 0xe95f - - "": [t: "почти равно над равно"] # 0xe962 - - "": [t: "левый треугольник с биссектрисой"] # 0xe964 - - "": [t: "правый треугольник с биссектрисой"] # 0xe965 - - "": [t: "равно с пунктирной верхней линией"] # 0xe966 - - "": [t: "предшествует с двоеточием"] # 0xe967 - - "": [t: "следует с двоеточием"] # 0xe968 - - "": [t: "меньше или равно наклонное"] # 0xe969 - - "": [t: "больше или равно наклонное"] # 0xe96a - - "": [t: "вложенное очень много меньше"] # 0xe96b - - "": [t: "вложенное очень много больше"] # 0xe96c - - "": [t: "разность вариант"] # 0xe96d - - "": [t: "меньше больше наложение"] # 0xe96e - - "": [t: "логическое или логическое и наложение"] # 0xe96f - - "": [t: "надмножество над надмножеством"] # 0xe970 - - "": [t: "подмножество над подмножеством"] # 0xe971 - - "": [t: "надмножество над подмножеством"] # 0xe972 - - "": [t: "подмножество над надмножеством"] # 0xe973 - - "": [t: "тройная вертикальная черта"] # 0xe979 - - "": [t: "парные четверные вертикальные точки"] # 0xe97a - - "": [t: "перпендикуляр над чертой"] # 0xe97b - - "": [t: "левый турникет двойная вертикальная черта"] # 0xe97c - - "": [t: "двойной левый турникет двойная вертикальная черта"] # 0xe97d - - "": [t: "перпендикуляр над перевёрнутым перпендикуляром"] # 0xe97e - - "": [t: "двойной левый турникет вертикальная черта"] # 0xe97f - - "": [t: "сферический угол, открытый вверх"] # 0xe980 - - "": [t: "двойная косая черта"] # 0xe981 - - "": [t: "прямой угол с уголком"] # 0xe982 - - "": [t: "вертикальная черта в круге"] # 0xe984 - - "": [t: "знак деления в круге"] # 0xe985 - - "": [t: "пунктирная косая черта"] # 0xe986 - - "": [t: "пунктирная обратная косая черта"] # 0xe987 - - "": [t: "пунктирная средняя линия"] # 0xe988 - - "": [t: "пунктирная вертикальная черта"] # 0xe989 - - "": [t: "перпендикуляр с s"] # 0xe98a - - "": [t: "угол с s"] # 0xe98b - - "": [t: "сферический угол, открытый влево"] # 0xe98c - - "": [t: "угол, открытый влево"] # 0xe98d - - "": [t: "вертикальная черта с двойным крюком"] # 0xe98e - - "": [t: "средняя точка свободный радикал"] # 0xe98f - - "": [t: "белый треугольник остриём вверх над чертой"] # 0xe990 - - "": [t: "тождественно и параллельно"] # 0xe991 - - "": [t: "разбивающее произведение"] # 0xe992 - - "": [t: "тройная черта с горизонтальной чертой"] # 0xe993 - - "": [t: "тождественно с двойной косой чертой"] # 0xe994 - - "": [t: "тройные перекрещенные черты"] # 0xe995 - - "": [t: "вертикальная черта над кругом"] # 0xe996 - - "": [t: "вертикальная пропорциональность"] # 0xe997 - - "": [t: "чёрная последняя четверть луны"] # 0xe998 - - "": [t: "чёрная первая четверть луны"] # 0xe999 - - "": [t: "отрицательная синусоида"] # 0xe9a0 - - "": [t: "точка в скобках"] # 0xe9a1 - - "": [t: "скобки"] # 0xe9a2 - - "": [t: "белая улыбка"] # 0xe9a3 - - "": [t: "белый хмурый"] # 0xe9a4 - - "": [t: "шестиугольник"] # 0xe9a5 - - "": [t: "эквивалентно над плюсом"] # 0xe9a6 - - "": [t: "плюс над эквивалентно"] # 0xe9a7 - - "": [t: "пересечение с засечками"] # 0xe9b0 - - "": [t: "объединение с засечками"] # 0xe9b1 - - "": [t: "квадратное пересечение с засечками"] # 0xe9b2 - - "": [t: "квадратное объединение с засечками"] # 0xe9b3 - - "": [t: "предшествует, эквивалентно или следует"] # 0xe9e0 - - "": [t: "следует, эквивалентно или предшествует"] # 0xe9e1 - - "": [t: "предшествует, почти равно или следует"] # 0xe9e2 - - "": [t: "следует, почти равно или предшествует"] # 0xe9e3 - - "": [t: "меньше, эквивалентно или больше"] # 0xe9f0 - - "": [t: "больше, эквивалентно или меньше"] # 0xe9f1 - - "": [t: "не очень много меньше"] # 0xea00 - - "": [t: "не очень много больше"] # 0xea01 - - "": [t: "не много меньше вариант"] # 0xea02 - - "": [t: "не много больше вариант"] # 0xea03 - - "": [t: "меньше, верт. не двойное равно"] # 0xea04 - - "": [t: "больше, верт. не двойное равно"] # 0xea05 - - "": [t: "не меньше и не равно"] # 0xea06 - - "": [t: "не больше и не равно"] # 0xea07 - - "": [t: "ни равно, ни меньше"] # 0xea09 - - "": [t: "не содержит и не равно"] # 0xea0a - - "": [t: "ни надмножество, ни равно"] # 0xea0b - - "": [t: "ни подмножество, ни равно"] # 0xea0c - - "": [t: "обратная косая подмножество"] # 0xea0d - - "": [t: "ни равно, ни больше"] # 0xea0e - - "": [t: "не минус тильда"] # 0xea0f - - "": [t: "ни равно, ни меньше"] # 0xea10 - - "": [t: "не тильда"] # 0xea11 - - "": [t: "не элемент и не равно"] # 0xea12 - - "": [t: "ни равно, ни больше"] # 0xea13 - - "": [t: "не почти равно"] # 0xea14 - - "": [t: "не следует похоже"] # 0xea15 - - "": [t: "меньше или наклонно равно с косой чертой"] # 0xea16 - - "": [t: "больше или наклонно равно с косой чертой"] # 0xea17 - - "": [t: "надмножество косая черта"] # 0xea1a - - "": [t: "не содержит"] # 0xea1b - - "": [t: "не меньше или не равно"] # 0xea1d - - "": [t: "не больше или не равно"] # 0xea1e - - "": [t: "не почти равно минус"] # 0xea1f - - "": [t: "отрицательная принадлежность множеству с точкой сверху"] # 0xea22 - - "": [t: "не вертикальный угол"] # 0xea2c - - "": [t: "не параллельно наклонно"] # 0xea2d - - "": [t: "не оператор черта"] # 0xea2e - - "": [t: "не оператор двойная черта"] # 0xea2f - - "": [t: "не оператор тройная черта"] # 0xea30 - - "": [t: "меньше, но не приблизительно равно"] # 0xea32 - - "": [t: "больше, но не приблизительно равно"] # 0xea33 - - "": [t: "меньше или не равно"] # 0xea34 - - "": [t: "больше или не равно"] # 0xea35 - - "": [t: "не вложенное меньше"] # 0xea36 - - "": [t: "не вложенное больше"] # 0xea37 - - "": [t: "не много меньше"] # 0xea38 - - "": [t: "не много больше"] # 0xea39 - - "": [t: "предшествует, но не эквивалентно"] # 0xea3a - - "": [t: "следует, но не эквивалентно"] # 0xea3b - - "": [t: "предшествует, но не равно"] # 0xea3c - - "": [t: "следует, но не равно"] # 0xea3d - - "": [t: "не равно и не предшествует"] # 0xea3e - - "": [t: "не равно и не следует"] # 0xea3f - - "": [t: "предшествует, но не равно"] # 0xea40 - - "": [t: "следует, но не равно"] # 0xea41 - - "": [t: "не подмножество и не равно"] # 0xea42 - - "": [t: "не надмножество и не равно"] # 0xea43 - - "": [t: "подмножество или не равно"] # 0xea44 - - "": [t: "надмножество или не равно"] # 0xea45 - - "": [t: "не подмножество и не равно"] # 0xea46 - - "": [t: "не надмножество и не равно"] # 0xea47 - - "": [t: "не тройное меньше"] # 0xea48 - - "": [t: "не тройное больше"] # 0xea49 - - "": [t: "не предшествует равно"] # 0xea4c - - "": [t: "не следует равно"] # 0xea4d - - "": [t: "не нормальная подгруппа с чертой"] # 0xea50 - - "": [t: "не содержит как нормальную подгруппу с чертой"] # 0xea51 - - "": [t: "не разность"] # 0xea52 - - "": [t: "не геометрически эквивалентно"] # 0xea53 - - "": [t: "не вертикально похоже"] # 0xea54 - - "": [t: "не равно или не похоже"] # 0xea55 - - "": [t: "не вертикально приблизительно"] # 0xea56 - - "": [t: "не приблизительно тождественно"] # 0xea57 - - "": [t: "не бугристое равно"] # 0xea58 - - "": [t: "не бугристое одинарное равно"] # 0xea59 - - "": [t: "не равно с точкой"] # 0xea5a - - "": [t: "обратное не эквивалентно"] # 0xea5b - - "": [t: "не квадратное подмножество"] # 0xea60 - - "": [t: "не квадратное надмножество"] # 0xea61 - - "": [t: "не почти равно над равно"] # 0xea62 - - "": [t: "не строго эквивалентно"] # 0xea63 - - "": [t: "не конгруэнтно с точкой"] # 0xea64 - - "": [t: "обратное не равно"] # 0xea65 - - "": [t: "не вертикально левый треугольник равно"] # 0xea70 - - "": [t: "не вертикально правый треугольник равно"] # 0xea71 - - "": [t: "не частная"] # 0xea80 - - "": [t: "удлинитель стрелки"] # 0xeb00 - - "": [t: "стрелка вправо над стрелкой влево"] # 0xeb01 - - "": [t: "стрелка вправо над стрелкой влево"] # 0xeb02 - - "": [t: "гарпун вправо над гарпуном влево"] # 0xeb03 - - "": [t: "гарпун вправо над гарпуном влево"] # 0xeb04 - - "": [t: "двойная стрелка северо-восток-юго-запад"] # 0xeb05 - - "": [t: "двойная стрелка северо-запад-юго-восток"] # 0xeb06 - - "": [t: "горизонтальный удлинитель гарпуна"] # 0xeb07 - - "": [t: "дуговая стрелка против часовой влево"] # 0xeb08 - - "": [t: "дуговая стрелка против часовой вправо"] # 0xeb09 - - "": [t: "большая стрелка вправо акцент"] # 0xeb0b - - "": [t: "большая стрелка влево акцент"] # 0xeb0c - - "": [t: "наконечник стрелки влево"] # 0xeb0d - - "": [t: "наконечник стрелки вправо"] # 0xeb0e - - "": [t: "большая стрелка влево-вправо со штрихом"] # 0xeb0f - - "": [t: "горизонтальный удлинитель двойной стрелки"] # 0xeb10 - - "": [t: "большая двойная стрелка влево-вправо со штрихом"] # 0xeb11 - - "": [t: "стрелка вниз слева от стрелки вверх"] # 0xeb12 - - "": [t: "стрелка влево с уголком вниз"] # 0xeb13 - - "": [t: "стрелка вправо с уголком вверх"] # 0xeb14 - - "": [t: "стрелка влево с уголком вверх"] # 0xeb15 - - "": [t: "верхняя полуокружность против часовой с плюсом"] # 0xeb16 - - "": [t: "верхняя полуокружность по часовой с минусом"] # 0xeb17 - - "": [t: "стрелка вправо с хвостом со штрихом"] # 0xeb18 - - "": [t: "правый гарпун вниз"] # 0xeb19 - - "": [t: "левый гарпун вниз"] # 0xeb1a - - "": [t: "левый и правый гарпун вниз"] # 0xeb1b - - "": [t: "левый и правый гарпун вверх"] # 0xeb1c - - "": [t: "верхний и нижний гарпун влево"] # 0xeb1d - - "": [t: "верхний и нижний гарпун вправо"] # 0xeb1e - - "": [t: "стрелка вверх справа от стрелки вниз"] # 0xeb1f - - "": [t: "левый гарпун к черте остриём вверх"] # 0xeb20 - - "": [t: "правый гарпун к черте остриём вверх"] # 0xeb21 - - "": [t: "левый гарпун к черте остриём вниз"] # 0xeb22 - - "": [t: "правый гарпун к черте остриём вниз"] # 0xeb23 - - "": [t: "левый гарпун от черты остриём вверх"] # 0xeb24 - - "": [t: "правый гарпун от черты остриём вверх"] # 0xeb25 - - "": [t: "левый гарпун от черты остриём вниз"] # 0xeb26 - - "": [t: "правый гарпун от черты остриём вниз"] # 0xeb27 - - "": [t: "верхний гарпун к черте остриём влево"] # 0xeb28 - - "": [t: "нижний гарпун к черте остриём влево"] # 0xeb29 - - "": [t: "верхний гарпун к черте остриём вправо"] # 0xeb2a - - "": [t: "нижний гарпун к черте остриём вправо"] # 0xeb2b - - "": [t: "верхний гарпун от черты остриём влево"] # 0xeb2c - - "": [t: "нижний гарпун от черты остриём влево"] # 0xeb2d - - "": [t: "верхний гарпун от черты остриём вправо"] # 0xeb2e - - "": [t: "нижний гарпун от черты остриём вправо"] # 0xeb2f - - "": [t: "стрелка вверх к черте"] # 0xeb30 - - "": [t: "стрелка вниз к черте"] # 0xeb31 - - "": [t: "верхний гарпун слева от нижнего гарпуна"] # 0xeb32 - - "": [t: "верхний гарпун справа от нижнего гарпуна"] # 0xeb33 - - "": [t: "наконечник стрелки вверх"] # 0xeb34 - - "": [t: "наконечник стрелки вниз"] # 0xeb35 - - "": [t: "двойной гарпун с левым остриём вниз, правым вверх"] # 0xeb36 - - "": [t: "двойной гарпун с левым остриём вверх, правым вниз"] # 0xeb37 - - "": [t: "стрелка влево над чертой"] # 0xeb38 - - "": [t: "стрелка вправо над чертой"] # 0xeb39 - - "": [t: "стрелка влево под чертой"] # 0xeb3a - - "": [t: "стрелка вправо под чертой"] # 0xeb3b - - "": [t: "тройная стрелка влево-вправо"] # 0xeb3c - - "": [t: "двойная стрелка северо-восток-юго-восток"] # 0xeb3f - - "": [t: "левая полуокружность против часовой"] # 0xeb40 - - "": [t: "левая полуокружность по часовой"] # 0xeb41 - - "": [t: "левый открытый круг стрелка влево-вправо"] # 0xeb42 - - "": [t: "стрелка вправо над тильдой"] # 0xeb44 - - "": [t: "стрелка влево над тильдой"] # 0xeb45 - - "": [t: "левый гарпун над чертой"] # 0xeb48 - - "": [t: "правый гарпун над чертой"] # 0xeb49 - - "": [t: "левый гарпун под чертой"] # 0xeb4a - - "": [t: "правый гарпун под чертой"] # 0xeb4b - - "": [t: "приземистая чёрная стрелка влево"] # 0xeb4c - - "": [t: "правая полуокружность по часовой"] # 0xeb50 - - "": [t: "правая полуокружность против часовой"] # 0xeb51 - - "": [t: "левый открытый круг левый-правый гарпун"] # 0xeb52 - - "": [t: "стрелка вверх слева от вертикальной черты"] # 0xeb58 - - "": [t: "стрелка вниз слева от вертикальной черты"] # 0xeb59 - - "": [t: "стрелка вверх справа от вертикальной черты"] # 0xeb5a - - "": [t: "стрелка вниз справа от вертикальной черты"] # 0xeb5b - - "": [t: "стрелка вправо с удлинённым нижним крюком"] # 0xeb5c - - "": [t: "стрелка влево с удлинённым крюком"] # 0xeb5d - - "": [t: "стрелка влево с удлинённым нижним крюком"] # 0xeb5e - - "": [t: "стрелка вправо с удлинённым крюком"] # 0xeb5f - - "": [t: "не волнистая стрелка вправо"] # 0xeb60 - - "": [t: "не изогнутая стрелка вправо"] # 0xeb61 - - "": [t: "верхний гарпун слева от вертикальной черты"] # 0xeb68 - - "": [t: "нижний гарпун слева от вертикальной черты"] # 0xeb69 - - "": [t: "верхний гарпун справа от вертикальной черты"] # 0xeb6a - - "": [t: "нижний гарпун справа от вертикальной черты"] # 0xeb6b - - "": [t: "вертикальный удлинитель двойной стрелки"] # 0xeb6c - - "": [t: "вертикальный удлинитель гарпуна с остриём влево"] # 0xeb6d - - "": [t: "вертикальный удлинитель гарпуна с остриём вправо"] # 0xeb6e - - "": [t: "правый гарпун над левым гарпуном, правый"] # 0xeb6f - - "": [t: "правый гарпун над левым гарпуном, левый"] # 0xeb70 - - "": [t: "левый гарпун над правым гарпуном, правый"] # 0xeb71 - - "": [t: "левый гарпун над правым гарпуном, левый"] # 0xeb72 - - "": [t: "наконечник стрелки влево от черты"] # 0xeb73 - - "": [t: "удлинитель стрелки влево-вправо от черты"] # 0xeb74 - - "": [t: "хвост стрелки влево от черты"] # 0xeb75 - - "": [t: "хвост стрелки вправо от черты"] # 0xeb76 - - "": [t: "наконечник стрелки вправо от черты"] # 0xeb77 - - "": [t: "наконечник верхнего гарпуна от черты с остриём влево"] # 0xeb78 - - "": [t: "стрелка вправо над стрелкой влево, правая"] # 0xeb79 - - "": [t: "стрелка вправо над стрелкой влево, левая"] # 0xeb7a - - "": [t: "стрелка влево над стрелкой вправо, правая"] # 0xeb7b - - "": [t: "стрелка влево над стрелкой вправо, левая"] # 0xeb7c - - "": [t: "наконечник стрелки вверх от черты"] # 0xeb7d - - "": [t: "хвост стрелки вверх от черты"] # 0xeb7e - - "": [t: "хвост стрелки вниз от черты"] # 0xeb7f - - "": [t: "наконечник стрелки вниз от черты"] # 0xeb80 - - "": [t: "наконечник нижнего гарпуна от черты с остриём вправо"] # 0xeb81 - - "": [t: "верхний гарпун слева от нижнего гарпуна, низ"] # 0xeb82 - - "": [t: "верхний гарпун слева от нижнего гарпуна, удлинитель"] # 0xeb83 - - "": [t: "нижний гарпун слева от верхнего гарпуна, верх"] # 0xeb84 - - "": [t: "верхний гарпун слева от нижнего гарпуна, верх"] # 0xeb85 - - "": [t: "нижний гарпун слева от верхнего гарпуна, удлинитель"] # 0xeb86 - - "": [t: "нижний гарпун слева от верхнего гарпуна, низ"] # 0xeb87 - - "": [t: "стрелка вверх слева от стрелки вниз, низ"] # 0xeb88 - - "": [t: "стрелка вниз слева от стрелки вверх, верх"] # 0xeb89 - - "": [t: "стрелка вверх слева от стрелки вниз, верх"] # 0xeb8a - - "": [t: "стрелка вниз слева от стрелки вверх, низ"] # 0xeb8b - - "": [t: "удлинитель стрелок влево-вправо"] # 0xeb8c - - "": [t: "удлинитель стрелки на северо-восток"] # 0xeb8d - - "": [t: "удлинитель стрелки на северо-запад"] # 0xeb8e - - "": [t: "нижняя фигурная скобка, левая часть"] # 0xec00 - - "": [t: "нижняя фигурная скобка, средняя часть"] # 0xec01 - - "": [t: "нижняя фигурная скобка, правая часть"] # 0xec02 - - "": [t: "горизонтальный удлинитель фигурной скобки"] # 0xec03 - - "": [t: "верхняя фигурная скобка, левая часть"] # 0xec04 - - "": [t: "верхняя фигурная скобка, средняя часть"] # 0xec05 - - "": [t: "верхняя фигурная скобка, правая часть"] # 0xec06 - - "": [t: "левая вертикальная черта"] # 0xec07 - - "": [t: "правая вертикальная черта"] # 0xec08 - - "": [t: "левая двойная вертикальная черта"] # 0xec09 - - "": [t: "правая двойная вертикальная черта"] # 0xec0a - - "": [t: "горизонтальный удлинитель скобки"] # 0xec0b - - "": [t: "под квадратной скобкой"] # 0xec0c - - "⎵": [t: "под квадратной скобкой"] # 0x23b5 - - "": [t: "над квадратной скобкой"] # 0xec0d - - "⎴": [t: "над квадратной скобкой"] # 0x23b4 - - "": [t: "нижняя скобка, левая часть"] # 0xec0e - - "": [t: "нижняя скобка, правая часть"] # 0xec0f - - "": [t: "верхняя скобка, левая часть"] # 0xec10 - - "": [t: "верхняя скобка, правая часть"] # 0xec11 - - "": [t: "левая скобка 1"] # 0xec12 - - "": [t: "левая скобка 2"] # 0xec13 - - "": [t: "левая скобка 3"] # 0xec14 - - "": [t: "левая скобка 4"] # 0xec15 - - "": [t: "правая скобка 1"] # 0xec16 - - "": [t: "правая скобка 2"] # 0xec17 - - "": [t: "правая скобка 3"] # 0xec18 - - "": [t: "правая скобка 4"] # 0xec19 - - "": [t: "радикал 1"] # 0xec1a - - "": [t: "радикал 2"] # 0xec1b - - "": [t: "радикал 3"] # 0xec1c - - "": [t: "радикал 4"] # 0xec1d - - "": [t: "радикал 5"] # 0xec1e - - "": [t: "нижняя часть радикала"] # 0xec1f - - "": [t: "вертикальный удлинитель радикала"] # 0xec20 - - "": [t: "верхняя часть радикала"] # 0xec21 - - "": [t: "левая белая скобка, верхняя часть"] # 0xec22 - - "": [t: "левая белая скобка, удлинитель"] # 0xec23 - - "": [t: "левая белая скобка, нижняя часть"] # 0xec24 - - "": [t: "правая белая скобка, верхняя часть"] # 0xec25 - - "": [t: "правая белая скобка, удлинитель"] # 0xec26 - - "": [t: "правая белая скобка, нижняя часть"] # 0xec27 - - "": [t: "левая белая фигурная скобка"] # 0xec30 - - "": [t: "правая белая фигурная скобка"] # 0xec31 - - "": [t: "знак длинного деления"] # 0xec32 - - "": [t: "удлинитель знака длинного деления"] # 0xec33 - - "": [t: "короткое деление"] # 0xec34 - - "": [t: "двойная связь с юго-запада на северо-восток"] # 0xec40 - - "": [t: "двойная связь с северо-запада на юго-восток"] # 0xec41 - - "": [t: "одинарная горизонтальная связь"] # 0xec42 - - "": [t: "двойная горизонтальная связь"] # 0xec43 - - "": [t: "тройная горизонтальная связь"] # 0xec44 - - "": [t: "одинарная вертикальная связь"] # 0xec45 - - "": [t: "двойная вертикальная связь"] # 0xec46 - - "": [t: "тройная вертикальная связь"] # 0xec47 - - "": [t: "связь меньше"] # 0xec48 - - "": [t: "связь больше"] # 0xec49 - - "": [t: "одинарная горизонтальная связь en"] # 0xec4a - - "": [t: "двойная горизонтальная связь en"] # 0xec4b - - "": [t: "тройная горизонтальная связь en"] # 0xec4c - - "": [t: "верхний левый прямоугольник"] # 0xec80 - - "": [t: "нижний левый прямоугольник"] # 0xec81 - - "": [t: "верхний правый прямоугольник"] # 0xec90 - - "": [t: "нижний правый прямоугольник"] # 0xec91 - - "": [t: "угол синтетического деления"] # 0xec92 - - "": [t: "горизонтальный удлинитель синтетического деления"] # 0xec93 - - "": [t: "вертикальный удлинитель синтетического деления"] # 0xec94 - - "": [t: "удлинитель левого потолка/пола"] # 0xec95 - - "": [t: "удлинитель правого потолка/пола"] # 0xec96 - - "": [t: "удлинитель верхней скобки"] # 0xec97 - - "": [t: "удлинитель вертикальной черты"] # 0xec98 - - "": [t: "удлинитель левой двойной вертикальной черты"] # 0xec99 - - "": [t: "удлинитель горизонтальной черты"] # 0xec9a - - "": [t: "удлинитель нижней скобки"] # 0xec9c - - "": [t: "нижняя скобка, правая часть"] # 0xec9d - - "": [t: "удлинитель нижней скобки"] # 0xec9e - - "": [t: "нижняя скобка, левая часть"] # 0xec9f - - "": [t: "удлинитель верхней фигурной скобки"] # 0xeca0 - - "": [t: "верхняя скобка, левая часть"] # 0xeca1 - - "": [t: "удлинитель верхней скобки"] # 0xeca2 - - "": [t: "верхняя скобка, правая часть"] # 0xeca3 - - "": [t: "удлинитель нижней фигурной скобки"] # 0xeca4 - - "": [t: "h-бар"] # 0xed00 (планковская постоянная с чертой, стандартно "h-бар") - - "": [t: "зеркальная g"] # 0xed01 - - "": [t: "j без точки"] # 0xed02 - - "": [t: "дигамма"] # 0xed03 - - "ϝ": [t: "дигамма"] # 0x3dd - - "": [t: "d"] # 0xed10 - - "ⅆ": [t: "d"] # 0x2146 - - "": [t: "e"] # 0xed11 - - "ⅇ": [t: "e"] # 0x2147 - - "": [t: "i"] # 0xed12 - - "ⅈ": [t: "i"] # 0x2148 - - "": [t: "j"] # 0xed13 + then: [T: "крест"] + else: [T: "векторное произведение"] + - "⨰": [T: "знак умножения с точкой сверху"] # 0x2a30 + - "⨱": [T: "знак умножения с подчёркиванием"] # 0x2a31 + - "⨲": [T: "полупрямое произведение с замкнутым низом"] # 0x2a32 + - "⨳": [T: "разбивающее произведение"] # 0x2a33 + - "⨴": [T: "знак умножения в левой половине круга"] # 0x2a34 + - "⨵": [T: "знак умножения в правой половине круга"] # 0x2a35 + - "⨶": [T: "знак умножения в круге с циркумфлексом"] # 0x2a36 + - "⨷": [T: "знак умножения в двойном круге"] # 0x2a37 + - "⨸": [T: "знак деления в круге"] # 0x2a38 + - "⨹": [T: "знак плюс в треугольнике"] # 0x2a39 + - "⨺": [T: "знак минус в треугольнике"] # 0x2a3a + - "⨻": [T: "знак умножения в треугольнике"] # 0x2a3b + - "⨼": [T: "внутреннее произведение"] # 0x2a3c + - "⨽": [T: "правое внутреннее произведение"] # 0x2a3d + - "⨾": [T: "Z-нотация реляционная композиция"] # 0x2a3e + - "⨿": [T: "амальгама или копроизведение"] # 0x2a3f + - "⩀": [T: "пересечение с точкой"] # 0x2a40 + - "⩁": [T: "объединение со знаком минус"] # 0x2a41 + - "⩂": [T: "объединение с надчёркиванием"] # 0x2a42 + - "⩃": [T: "пересечение с надчёркиванием"] # 0x2a43 + - "⩄": [T: "пересечение с логическим и"] # 0x2a44 + - "⩅": [T: "объединение с логическим или"] # 0x2a45 + - "⩆": [T: "объединение над пересечением"] # 0x2a46 + - "⩇": [T: "пересечение над объединением"] # 0x2a47 + - "⩈": [T: "объединение над чертой над пересечением"] # 0x2a48 + - "⩉": [T: "пересечение над чертой над объединением"] # 0x2a49 + - "⩊": [T: "объединение рядом и соединённое с объединением"] # 0x2a4a + - "⩋": [T: "пересечение рядом и соединённое с пересечением"] # 0x2a4b + - "⩌": [T: "замкнутое объединение с засечками"] # 0x2a4c + - "⩍": [T: "замкнутое пересечение с засечками"] # 0x2a4d + - "⩎": [T: "двойное квадратное пересечение"] # 0x2a4e + - "⩏": [T: "двойное квадратное объединение"] # 0x2a4f + - "⩐": [T: "замкнутое объединение с засечками и разбивающим произведением"] # 0x2a50 + - "⩑": [T: "логическое и с точкой сверху"] # 0x2a51 + - "⩒": [T: "логическое или с точкой сверху"] # 0x2a52 + - "⩓": [T: "двойное логическое и"] # 0x2a53 + - "⩔": [T: "двойное логическое или"] # 0x2a54 + - "⩕": [T: "два пересекающихся логических и"] # 0x2a55 + - "⩖": [T: "два пересекающихся логических или"] # 0x2a56 + - "⩗": [T: "наклонное большое или"] # 0x2a57 + - "⩘": [T: "наклонное большое и"] # 0x2a58 + - "⩙": [T: "логическое или перекрывает логическое и"] # 0x2a59 + - "⩚": [T: "логическое и со средним стержнем"] # 0x2a5a + - "⩛": [T: "логическое или со средним стержнем"] # 0x2a5b + - "⩜": [T: "логическое и с горизонтальным тире"] # 0x2a5c + - "⩝": [T: "логическое или с горизонтальным тире"] # 0x2a5d + - "⩞": [T: "логическое и с двойным надчёркиванием"] # 0x2a5e + - "⩟": [T: "логическое и с подчёркиванием"] # 0x2a5f + - "⩠": [T: "логическое и с двойным подчёркиванием"] # 0x2a60 + - "⩡": [T: "маленькая галочка с подчёркиванием"] # 0x2a61 + - "⩢": [T: "логическое или с двойным надчёркиванием"] # 0x2a62 + - "⩣": [T: "логическое или с двойным подчёркиванием"] # 0x2a63 + - "⩤": [T: "Z-нотация антиограничение области"] # 0x2a64 + - "⩥": [T: "Z-нотация антиограничение диапазона"] # 0x2a65 + - "⩦": [T: "знак равенства с точкой снизу"] # 0x2a66 + - "⩧": [T: "тождественно с точкой сверху"] # 0x2a67 + - "⩨": [T: "тройная горизонтальная черта с двойным вертикальным штрихом"] # 0x2a68 + - "⩩": [T: "тройная горизонтальная черта с тройным вертикальным штрихом"] # 0x2a69 + - "⩪": [T: "тильда с точкой сверху"] # 0x2a6a + - "⩫": [T: "тильда с растущими точками"] # 0x2a6b + - "⩬": [T: "похоже минус похоже"] # 0x2a6c + - "⩭": [T: "конгруэнтно с точкой сверху"] # 0x2a6d + - "⩮": [T: "равно со звёздочкой"] # 0x2a6e + - "⩯": [T: "почти равно с циркумфлексом"] # 0x2a6f + - "⩰": [T: "приблизительно равно или равно"] # 0x2a70 + - "⩱": [T: "знак равенства над знаком плюс"] # 0x2a71 + - "⩲": [T: "знак плюс над знаком равенства"] # 0x2a72 + - "⩳": [T: "знак равенства над тильдой"] # 0x2a73 + - "⩴": [T: "двойное двоеточие равно"] # 0x2a74 + - "⩵": [T: "два последовательных знака равенства"] # 0x2a75 + - "⩶": [T: "три последовательных знака равенства"] # 0x2a76 + - "⩷": [T: "знак равенства с двумя точками сверху и двумя точками снизу"] # 0x2a77 + - "⩸": [T: "эквивалентно с четырьмя точками сверху"] # 0x2a78 + - "⩹": [T: "меньше с кругом внутри"] # 0x2a79 + - "⩺": [T: "больше с кругом внутри"] # 0x2a7a + - "⩻": [T: "меньше с вопросительным знаком сверху"] # 0x2a7b + - "⩼": [T: "больше с вопросительным знаком сверху"] # 0x2a7c + - "⩽": [T: "меньше или наклонно равно"] # 0x2a7d + - "⩾": [T: "больше или наклонно равно"] # 0x2a7e + - "⩿": [T: "меньше или наклонно равно с точкой внутри"] # 0x2a7f + - "⪀": [T: "больше или наклонно равно с точкой внутри"] # 0x2a80 + - "⪁": [T: "меньше или наклонно равно с точкой сверху"] # 0x2a81 + - "⪂": [T: "больше или наклонно равно с точкой сверху"] # 0x2a82 + - "⪃": [T: "меньше или наклонно равно с точкой сверху справа"] # 0x2a83 + - "⪄": [T: "больше или наклонно равно с точкой сверху слева"] # 0x2a84 + - "⪅": [T: "меньше или приблизительно"] # 0x2a85 + - "⪆": [T: "больше или приблизительно"] # 0x2a86 + - "⪇": [T: "меньше и одинарная линия не равно"] # 0x2a87 + - "⪈": [T: "больше и одинарная линия не равно"] # 0x2a88 + - "⪉": [T: "меньше и не приблизительно"] # 0x2a89 + - "⪊": [T: "больше и не приблизительно"] # 0x2a8a + - "⪋": [T: "меньше над двойной линией равно над больше"] # 0x2a8b + - "⪌": [T: "больше над двойной линией равно над меньше"] # 0x2a8c + - "⪍": [T: "меньше над похоже или равно"] # 0x2a8d + - "⪎": [T: "больше над похоже или равно"] # 0x2a8e + - "⪏": [T: "меньше над похоже над больше"] # 0x2a8f + - "⪐": [T: "больше над похоже над меньше"] # 0x2a90 + - "⪑": [T: "меньше над больше над двойной линией равно"] # 0x2a91 + - "⪒": [T: "больше над меньше над двойной линией равно"] # 0x2a92 + - "⪓": [T: "меньше над наклонным равно над больше над наклонным равно"] # 0x2a93 + - "⪔": [T: "больше над наклонным равно над меньше над наклонным равно"] # 0x2a94 + - "⪕": [T: "наклонно равно или меньше"] # 0x2a95 + - "⪖": [T: "наклонно равно или больше"] # 0x2a96 + - "⪗": [T: "наклонно равно или меньше с точкой внутри"] # 0x2a97 + - "⪘": [T: "наклонно равно или больше с точкой внутри"] # 0x2a98 + - "⪙": [T: "двойная линия равно или меньше"] # 0x2a99 + - "⪚": [T: "двойная линия равно или больше"] # 0x2a9a + - "⪛": [T: "двойная линия наклонно равно или меньше"] # 0x2a9b + - "⪜": [T: "двойная линия наклонно равно или больше"] # 0x2a9c + - "⪝": [T: "похоже или меньше"] # 0x2a9d + - "⪞": [T: "похоже или больше"] # 0x2a9e + - "⪟": [T: "похоже над меньше над знаком равенства"] # 0x2a9f + - "⪠": [T: "похоже над больше над знаком равенства"] # 0x2aa0 + - "⪡": [T: "двойное вложенное меньше"] # 0x2aa1 + - "⪢": [T: "двойное вложенное больше"] # 0x2aa2 + - "⪣": [T: "двойное вложенное меньше с подчёркиванием"] # 0x2aa3 + - "⪤": [T: "больше перекрывает меньше"] # 0x2aa4 + - "⪥": [T: "больше рядом с меньше"] # 0x2aa5 + - "⪦": [T: "меньше замкнутое кривой"] # 0x2aa6 + - "⪧": [T: "больше замкнутое кривой"] # 0x2aa7 + - "⪨": [T: "меньше замкнутое кривой над наклонным равно"] # 0x2aa8 + - "⪩": [T: "больше замкнутое кривой над наклонным равно"] # 0x2aa9 + - "⪪": [T: "меньше чем"] # 0x2aaa + - "⪫": [T: "больше чем"] # 0x2aab + - "⪬": [T: "меньше чем или равно"] # 0x2aac + - "⪭": [T: "больше чем или равно"] # 0x2aad + - "⪮": [T: "знак равенства с бугром сверху"] # 0x2aae + - "⪯": [T: "предшествует над одинарной линией равенства"] # 0x2aaf + - "⪰": [T: "следует над одинарной линией равенства"] # 0x2ab0 + - "⪱": [T: "предшествует над одинарной линией не равно"] # 0x2ab1 + - "⪲": [T: "следует над одинарной линией не равно"] # 0x2ab2 + - "⪳": [T: "предшествует над знаком равенства"] # 0x2ab3 + - "⪴": [T: "следует над знаком равенства"] # 0x2ab4 + - "⪵": [T: "предшествует над не равно"] # 0x2ab5 + - "⪶": [T: "следует над не равно"] # 0x2ab6 + - "⪷": [T: "предшествует над почти равно"] # 0x2ab7 + - "⪸": [T: "следует над почти равно"] # 0x2ab8 + - "⪹": [T: "предшествует над не почти равно"] # 0x2ab9 + - "⪺": [T: "следует над не почти равно"] # 0x2aba + - "⪻": [T: "двойное предшествует"] # 0x2abb + - "⪼": [T: "двойное следует"] # 0x2abc + - "⪽": [T: "подмножество с точкой"] # 0x2abd + - "⪾": [T: "надмножество с точкой"] # 0x2abe + - "⪿": [T: "подмножество со знаком плюс снизу"] # 0x2abf + - "⫀": [T: "надмножество со знаком плюс снизу"] # 0x2ac0 + - "⫁": [T: "подмножество со знаком умножения снизу"] # 0x2ac1 + - "⫂": [T: "надмножество со знаком умножения снизу"] # 0x2ac2 + - "⫃": [T: "подмножество или равно с точкой сверху"] # 0x2ac3 + - "⫄": [T: "надмножество или равно с точкой сверху"] # 0x2ac4 + - "⫅": [T: "подмножество над знаком равенства"] # 0x2ac5 + - "⫆": [T: "надмножество над знаком равенства"] # 0x2ac6 + - "⫇": [T: "подмножество над тильдой"] # 0x2ac7 + - "⫈": [T: "надмножество над тильдой"] # 0x2ac8 + - "⫉": [T: "подмножество над почти равно"] # 0x2ac9 + - "⫊": [T: "надмножество над почти равно"] # 0x2aca + - "⫋": [T: "подмножество над не равно"] # 0x2acb + - "⫌": [T: "надмножество над не равно"] # 0x2acc + - "⫍": [T: "квадратный левый открытый ящик"] # 0x2acd + - "⫎": [T: "квадратный правый открытый ящик"] # 0x2ace + - "⫏": [T: "замкнутое подмножество"] # 0x2acf + - "⫐": [T: "замкнутое надмножество"] # 0x2ad0 + - "⫑": [T: "замкнутое подмножество или равно"] # 0x2ad1 + - "⫒": [T: "замкнутое надмножество или равно"] # 0x2ad2 + - "⫓": [T: "подмножество над надмножеством"] # 0x2ad3 + - "⫔": [T: "надмножество над подмножеством"] # 0x2ad4 + - "⫕": [T: "подмножество над подмножеством"] # 0x2ad5 + - "⫖": [T: "надмножество над надмножеством"] # 0x2ad6 + - "⫗": [T: "надмножество рядом с подмножеством"] # 0x2ad7 + - "⫘": [T: "надмножество рядом и соединённое тире с подмножеством"] # 0x2ad8 + - "⫙": [T: "элемент, открытый вниз"] # 0x2ad9 + - "⫚": [T: "вилы с тройником сверху"] # 0x2ada + - "⫛": [T: "трансверсальное пересечение"] # 0x2adb + - "⫝̸": [T: "ветвление"] # 0x2adc + - "⫝": [T: "неветвление"] # 0x2add + - "⫞": [T: "короткий левый таск"] # 0x2ade + - "⫟": [T: "короткий нижний таск"] # 0x2adf + - "⫠": [T: "короткий верхний таск"] # 0x2ae0 + - "⫡": [T: "перпендикуляр с s"] # 0x2ae1 + - "⫢": [T: "вертикальная черта тройной правый турникет"] # 0x2ae2 + - "⫣": [T: "двойная вертикальная черта левый турникет"] # 0x2ae3 + - "⫤": [T: "вертикальная черта двойной левый турникет"] # 0x2ae4 + - "⫥": [T: "двойная вертикальная черта двойной левый турникет"] # 0x2ae5 + - "⫦": [T: "длинное тире от левого члена двойной вертикальной"] # 0x2ae6 + - "⫧": [T: "короткий нижний таск с надчёркиванием"] # 0x2ae7 + - "⫨": [T: "короткий верхний таск с подчёркиванием"] # 0x2ae8 + - "⫩": [T: "короткий верхний таск над коротким нижним таском"] # 0x2ae9 + - "⫪": [T: "двойной нижний таск"] # 0x2aea + - "⫫": [T: "двойной верхний таск"] # 0x2aeb + - "⫬": [T: "знак не с двойным штрихом"] # 0x2aec + - "⫭": [T: "обратный знак не с двойным штрихом"] # 0x2aed + - "⫮": [T: "не делит с обратной перечёркивающей косой"] # 0x2aee + - "⫯": [T: "вертикальная линия с кругом сверху"] # 0x2aef + - "⫰": [T: "вертикальная линия с кругом снизу"] # 0x2af0 + - "⫱": [T: "нижний таск с кругом снизу"] # 0x2af1 + - "⫲": [T: "параллельно с горизонтальным штрихом"] # 0x2af2 + - "⫳": [T: "параллельно с тильдой"] # 0x2af3 + - "⫴": [T: "тройная вертикальная черта бинарное отношение"] # 0x2af4 + - "⫵": [T: "тройная вертикальная черта с горизонтальным штрихом"] # 0x2af5 + - "⫶": [T: "оператор тройное двоеточие"] # 0x2af6 + - "⫷": [T: "тройное вложенное меньше"] # 0x2af7 + - "⫸": [T: "тройное вложенное больше"] # 0x2af8 + - "⫹": [T: "двойная линия наклонно меньше или равно"] # 0x2af9 + - "⫺": [T: "двойная линия наклонно больше или равно"] # 0x2afa + - "⫻": [T: "тройная косая черта бинарное отношение"] # 0x2afb + - "⫼": [T: "оператор большая тройная вертикальная черта"] # 0x2afc + - "⫽": [T: "оператор двойная косая черта"] # 0x2afd + - "⫾": [T: "белая вертикальная черта"] # 0x2afe + - "⫿": [T: "белая вертикальная черта"] # 0x2aff + - "⬀": [T: "белая стрелка на северо-восток"] # 0x2b00 + - "⬁": [T: "белая стрелка на северо-запад"] # 0x2b01 + - "⬂": [T: "белая стрелка на юго-восток"] # 0x2b02 + - "⬃": [T: "белая стрелка на юго-запад"] # 0x2b03 + - "⬄": [T: "белая стрелка влево-вправо"] # 0x2b04 + - "⬅": [T: "чёрная стрелка влево"] # 0x2b05 + - "⬆": [T: "чёрная стрелка вверх"] # 0x2b06 + - "⬇": [T: "чёрная стрелка вниз"] # 0x2b07 + - "⬈": [T: "чёрная стрелка на северо-восток"] # 0x2b08 + - "⬉": [T: "чёрная стрелка на северо-запад"] # 0x2b09 + - "⬊": [T: "чёрная стрелка на юго-восток"] # 0x2b0a + - "⬋": [T: "чёрная стрелка на юго-запад"] # 0x2b0b + - "⬌": [T: "чёрная стрелка влево-вправо"] # 0x2b0c + - "⬍": [T: "чёрная стрелка вверх-вниз"] # 0x2b0d + - "⬎": [T: "стрелка вправо с наконечником вниз"] # 0x2b0e + - "⬏": [T: "стрелка вправо с наконечником вверх"] # 0x2b0f + - "⬐": [T: "стрелка влево с наконечником вниз"] # 0x2b10 + - "⬑": [T: "стрелка влево с наконечником вверх"] # 0x2b11 + - "⬒": [T: "квадрат с верхней половиной чёрной"] # 0x2b12 + - "⬓": [T: "квадрат с нижней половиной чёрной"] # 0x2b13 + - "⬔": [T: "квадрат с верхней правой диагональной половиной чёрной"] # 0x2b14 + - "⬕": [T: "квадрат с нижней левой диагональной половиной чёрной"] # 0x2b15 + - "⬖": [T: "ромб с левой половиной чёрной"] # 0x2b16 + - "⬗": [T: "ромб с правой половиной чёрной"] # 0x2b17 + - "⬘": [T: "ромб с верхней половиной чёрной"] # 0x2b18 + - "⬙": [T: "ромб с нижней половиной чёрной"] # 0x2b19 + - "⬚": [T: "ящик"] # 0x2b1a + - "⬛": [T: "чёрный большой квадрат"] # 0x2b1b + - "⬜": [T: "белый большой квадрат"] # 0x2b1c + - "⬝": [T: "чёрный очень маленький квадрат"] # 0x2b1d + - "⬞": [T: "белый очень маленький квадрат"] # 0x2b1e + - "⬟": [T: "чёрный пятиугольник"] # 0x2b1f + - "⬠": [T: "белый пятиугольник"] # 0x2b20 + - "⬡": [T: "белый шестиугольник"] # 0x2b21 + - "⬢": [T: "чёрный шестиугольник"] # 0x2b22 + - "⬣": [T: "горизонтальный чёрный шестиугольник"] # 0x2b23 + - "⬤": [T: "чёрный большой круг"] # 0x2b24 + - "⬥": [T: "чёрный средний ромб"] # 0x2b25 + - "⬦": [T: "белый средний ромб"] # 0x2b26 + - "⬧": [T: "чёрная средняя луковица"] # 0x2b27 + - "⬨": [T: "белая средняя луковица"] # 0x2b28 + - "⬩": [T: "чёрный маленький ромб"] # 0x2b29 + - "⬪": [T: "чёрная маленькая луковица"] # 0x2b2a + - "⬫": [T: "белая маленькая луковица"] # 0x2b2b + - "⬬": [T: "чёрный горизонтальный эллипс"] # 0x2b2c + - "⬭": [T: "белый горизонтальный эллипс"] # 0x2b2d + - "⬮": [T: "чёрный вертикальный эллипс"] # 0x2b2e + - "⬯": [T: "белый вертикальный эллипс"] # 0x2b2f + - "⬰": [T: "стрелка влево с маленьким кругом"] # 0x2b30 + - "⬱": [T: "три стрелки влево"] # 0x2b31 + - "⬲": [T: "стрелка влево с плюсом в круге"] # 0x2b32 + - "⬳": [T: "длинная волнистая стрелка влево"] # 0x2b33 + - "⬴": [T: "стрелка влево с двумя наконечниками и вертикальным штрихом"] # 0x2b34 + - "⬵": [T: "стрелка влево с двумя наконечниками и двойным вертикальным штрихом"] # 0x2b35 + - "⬶": [T: "стрелка влево с двумя наконечниками от черты"] # 0x2b36 + - "⬷": [T: "стрелка влево с двумя наконечниками и тройным пунктиром"] # 0x2b37 + - "⬸": [T: "стрелка влево с пунктирным стволом"] # 0x2b38 + - "⬹": [T: "стрелка влево с хвостом и вертикальным штрихом"] # 0x2b39 + - "⬺": [T: "стрелка влево с хвостом и двойным вертикальным штрихом"] # 0x2b3a + - "⬻": [T: "стрелка влево с двумя наконечниками и хвостом"] # 0x2b3b + - "⬼": [T: "стрелка влево с двумя наконечниками, хвостом и вертикальным штрихом"] # 0x2b3c + - "⬽": [T: "стрелка влево с двумя наконечниками, хвостом и двойным вертикальным штрихом"] # 0x2b3d + - "⬾": [T: "стрелка влево сквозь x"] # 0x2b3e + - "⬿": [T: "волновая стрелка, указывающая прямо влево"] # 0x2b3f + - "⭀": [T: "знак равенства над стрелкой влево"] # 0x2b40 + - "⭁": [T: "обратная тильда над стрелкой влево"] # 0x2b41 + - "⭂": [T: "стрелка влево над обратным почти равно"] # 0x2b42 + - "⭃": [T: "стрелка вправо сквозь больше"] # 0x2b43 + - "⭄": [T: "стрелка вправо сквозь надмножество"] # 0x2b44 + - "⭅": [T: "левая четверная стрелка"] # 0x2b45 + - "⭆": [T: "правая четверная стрелка"] # 0x2b46 + - "⭇": [T: "обратная тильда над стрелкой вправо"] # 0x2b47 + - "⭈": [T: "стрелка вправо над обратным почти равно"] # 0x2b48 + - "⭉": [T: "тильда над стрелкой влево"] # 0x2b49 + - "⭊": [T: "стрелка влево над почти равно"] # 0x2b4a + - "⭋": [T: "стрелка влево над обратной тильдой"] # 0x2b4b + - "⭌": [T: "стрелка вправо над обратной тильдой"] # 0x2b4c + - "⭐": [T: "белая средняя звезда"] # 0x2b50 + - "⭑": [T: "чёрная маленькая звезда"] # 0x2b51 + - "⭒": [T: "белая маленькая звезда"] # 0x2b52 + - "⭓": [T: "чёрный пятиугольник остриём вправо"] # 0x2b53 + - "⭔": [T: "белый пятиугольник остриём вправо"] # 0x2b54 + - "⭕": [T: "жирный большой круг"] # 0x2b55 + - "⭖": [T: "жирный овал с овалом внутри"] # 0x2b56 + - "⭗": [T: "жирный круг с кругом внутри"] # 0x2b57 + - "⭘": [T: "жирный круг"] # 0x2b58 + - "⭙": [T: "жирный круг с андреевским крестом"] # 0x2b59 + - "⸀": [T: "маркер замены прямым углом"] # 0x2e00 + - "⸁": [T: "маркер замены прямым углом с точкой"] # 0x2e01 + - "⸂": [T: "левая скобка замены"] # 0x2e02 + - "⸃": [T: "правая скобка замены"] # 0x2e03 + - "⸄": [T: "левая пунктирная скобка замены"] # 0x2e04 + - "⸅": [T: "правая пунктирная скобка замены"] # 0x2e05 + - "⸆": [T: "приподнятый маркер вставки"] # 0x2e06 + - "⸇": [T: "приподнятый пунктирный маркер вставки"] # 0x2e07 + - "⸈": [T: "пунктирный маркер транспозиции"] # 0x2e08 + - "⸉": [T: "левая скобка транспозиции"] # 0x2e09 + - "⸊": [T: "правая скобка транспозиции"] # 0x2e0a + - "⸋": [T: "приподнятый квадрат"] # 0x2e0b + - "⸌": [T: "левая приподнятая скобка пропуска"] # 0x2e0c + - "⸍": [T: "правая приподнятая скобка пропуска"] # 0x2e0d + - "⸎": [T: "издательская коронида"] # 0x2e0e + - "⸏": [T: "параграфос"] # 0x2e0f + - "⸐": [T: "вилообразный параграфос"] # 0x2e10 + - "⸑": [T: "обратный вилообразный параграфос"] # 0x2e11 + - "⸒": [T: "гиподиастола"] # 0x2e12 + - "⸓": [T: "пунктирный обел"] # 0x2e13 + - "⸔": [T: "нижняя якорная скобка"] # 0x2e14 + - "⸕": [T: "верхняя якорная скобка"] # 0x2e15 + - "⸖": [T: "пунктирный правый угол"] # 0x2e16 + - "⸗": [T: "двойной косой дефис"] # 0x2e17 + - "⸘": [T: "перевёрнутый интерробанг"] # 0x2e18 + - "⸙": [T: "пальмовая ветвь"] # 0x2e19 + - "⸚": [T: "дефис с диерезисом"] # 0x2e1a + - "⸛": [T: "тильда с кольцом сверху"] # 0x2e1b + - "⸜": [T: "левая нижняя парафразная скобка"] # 0x2e1c + - "⸝": [T: "правая нижняя парафразная скобка"] # 0x2e1d + - "⸞": [T: "тильда с точкой сверху"] # 0x2e1e + - "⸟": [T: "тильда с точкой снизу"] # 0x2e1f + - "⸠": [T: "левая вертикальная черта с пером"] # 0x2e20 + - "⸡": [T: "правая вертикальная черта с пером"] # 0x2e21 + - "⸢": [T: "верхняя левая половина скобки"] # 0x2e22 + - "⸣": [T: "верхняя правая половина скобки"] # 0x2e23 + - "⸤": [T: "нижняя левая половина скобки"] # 0x2e24 + - "⸥": [T: "нижняя правая половина скобки"] # 0x2e25 + - "⸦": [T: "левая боковая U-скобка"] # 0x2e26 + - "⸧": [T: "правая боковая U-скобка"] # 0x2e27 + - "⸨": [T: "левая двойная скобка"] # 0x2e28 + - "⸩": [T: "правая двойная скобка"] # 0x2e29 + - "⸪": [T: "две точки над одной точкой"] # 0x2e2a + - "⸫": [T: "одна точка над двумя точками"] # 0x2e2b + - "⸬": [T: "квадратная четырёхточечная пунктуация"] # 0x2e2c + - "⸭": [T: "знак из пяти точек"] # 0x2e2d + - "⸮": [T: "обратный вопросительный знак"] # 0x2e2e + - "ⸯ": [T: "вертикальная тильда"] # 0x2e2f + - "⸰": [T: "кольцевая точка"] # 0x2e30 + - "⸱": [T: "разделитель слов средняя точка"] # 0x2e31 + - "⸲": [T: "перевёрнутая запятая"] # 0x2e32 + - "⸳": [T: "приподнятая точка"] # 0x2e33 + - "⸴": [T: "приподнятая запятая"] # 0x2e34 + - "⸵": [T: "перевёрнутая точка с запятой"] # 0x2e35 + - "⸶": [T: "крестик с левой защитой"] # 0x2e36 + - "⸷": [T: "крестик с правой защитой"] # 0x2e37 + - "⸸": [T: "перевёрнутый крестик"] # 0x2e38 + - "⸹": [T: "верхняя половина знака параграфа"] # 0x2e39 + - "⸺": [T: "два длинных тире"] # 0x2e3a + - "⸻": [T: "три длинных тире"] # 0x2e3b + - "〃": [T: "знак повторения"] # 0x3003 + - "〈": [T: "левая угловая скобка"] # 0x3008 + - "〉": [T: "правая угловая скобка"] # 0x3009 + - "《": [T: "левая двойная угловая скобка"] # 0x300a + - "》": [T: "правая двойная угловая скобка"] # 0x300b + - "「": [T: "левая угловая скобка"] # 0x300c + - "」": [T: "правая угловая скобка"] # 0x300d + - "『": [T: "левая белая угловая скобка"] # 0x300e + - "』": [T: "правая белая угловая скобка"] # 0x300f + - "【": [T: "левая чёрная лентикулярная скобка"] # 0x3010 + - "】": [T: "правая чёрная лентикулярная скобка"] # 0x3011 + - "〔": [T: "открывающая черепашья скобка"] # 0x3014 + - "〕": [T: "закрывающая черепашья скобка"] # 0x3015 + - "〖": [T: "левая белая лентикулярная скобка"] # 0x3016 + - "〗": [T: "правая белая лентикулярная скобка"] # 0x3017 + - "〘": [T: "левая белая черепашья скобка"] # 0x3018 + - "〙": [T: "правая белая черепашья скобка"] # 0x3019 + - "〚": [T: "левая белая квадратная скобка"] # 0x301a + - "〛": [T: "правая белая квадратная скобка"] # 0x301b + - "〜": [T: "волновое тире"] # 0x301c + - "〰": [T: "волнистое тире"] # 0x3030 + - "㉈": [T: "число десять в круге на чёрном квадрате"] # 0x3248 + - "㉉": [T: "число двадцать в круге на чёрном квадрате"] # 0x3249 + - "㉊": [T: "число тридцать в круге на чёрном квадрате"] # 0x324a + - "㉋": [T: "число сорок в круге на чёрном квадрате"] # 0x324b + - "㉌": [T: "число пятьдесят в круге на чёрном квадрате"] # 0x324c + - "㉍": [T: "число шестьдесят в круге на чёрном квадрате"] # 0x324d + - "㉎": [T: "число семьдесят в круге на чёрном квадрате"] # 0x324e + - "㉏": [T: "число восемьдесят в круге на чёрном квадрате"] # 0x324f + - "㉑": [T: "число двадцать один в круге"] # 0x3251 + - "㉒": [T: "число двадцать два в круге"] # 0x3252 + - "㉓": [T: "число двадцать три в круге"] # 0x3253 + - "㉔": [T: "число двадцать четыре в круге"] # 0x3254 + - "㉕": [T: "число двадцать пять в круге"] # 0x3255 + - "㉖": [T: "число двадцать шесть в круге"] # 0x3256 + - "㉗": [T: "число двадцать семь в круге"] # 0x3257 + - "㉘": [T: "число двадцать восемь в круге"] # 0x3258 + - "㉙": [T: "число двадцать девять в круге"] # 0x3259 + - "㉚": [T: "число тридцать в круге"] # 0x325a + - "㉛": [T: "число тридцать один в круге"] # 0x325b + - "㉜": [T: "число тридцать два в круге"] # 0x325c + - "㉝": [T: "число тридцать три в круге"] # 0x325d + - "㉞": [T: "число тридцать четыре в круге"] # 0x325e + - "㉟": [T: "число тридцать пять в круге"] # 0x325f + - "㊱": [T: "число тридцать шесть в круге"] # 0x32b1 + - "㊲": [T: "число тридцать семь в круге"] # 0x32b2 + - "㊳": [T: "число тридцать восемь в круге"] # 0x32b3 + - "㊴": [T: "число тридцать девять в круге"] # 0x32b4 + - "㊵": [T: "число сорок в круге"] # 0x32b5 + - "㊶": [T: "число сорок один в круге"] # 0x32b6 + - "㊷": [T: "число сорок два в круге"] # 0x32b7 + - "㊸": [T: "число сорок три в круге"] # 0x32b8 + - "㊹": [T: "число сорок четыре в круге"] # 0x32b9 + - "㊺": [T: "число сорок пять в круге"] # 0x32ba + - "㊻": [T: "число сорок шесть в круге"] # 0x32bb + - "㊼": [T: "число сорок семь в круге"] # 0x32bc + - "㊽": [T: "число сорок восемь в круге"] # 0x32bd + - "㊾": [T: "число сорок девять в круге"] # 0x32be + - "㊿": [T: "число пятьдесят в круге"] # 0x32bf + - "㋌": [T: "Меркурий"] # 0x32cc + - "㋍": [T: "эрги"] # 0x32cd + - "㋎": [T: "электрон-вольты"] # 0x32ce + - "㋏": [T: "знак ограниченной ответственности"] # 0x32cf + - "㍱": [T: "гектопаскали"] # 0x3371 + - "㍲": [T: "дальтоны"] # 0x3372 + - "㍳": [T: "астрономические единицы"] # 0x3373 + - "㍴": [T: "бары"] # 0x3374 + - "㍵": [T: "о в"] # 0x3375 + - "㍶": [T: "парсеки"] # 0x3376 + - "㍷": [T: "дециметры"] # 0x3377 + - "㍸": [T: "квадратные дециметры"] # 0x3378 + - "㍹": [T: "кубические дециметры"] # 0x3379 + - "㍺": [T: "инструментальные единицы"] # 0x337a + - "㎀": [T: "пикоамперы"] # 0x3380 + - "㎁": [T: "наноамперы"] # 0x3381 + - "㎂": [T: "микроамперы"] # 0x3382 + - "㎃": [T: "миллиамперы"] # 0x3383 + - "㎄": [T: "килоамперы"] # 0x3384 + - "㎅": [T: "килобайты"] # 0x3385 + - "㎆": [T: "мегабайты"] # 0x3386 + - "㎇": [T: "гигабайты"] # 0x3387 + - "㎈": [T: "калории"] # 0x3388 + - "㎉": [T: "килокалории"] # 0x3389 + - "㎊": [T: "пикофарады"] # 0x338a + - "㎋": [T: "нанофарады"] # 0x338b + - "㎌": [T: "микрофарады"] # 0x338c + - "㎍": [T: "микрограммы"] # 0x338d + - "㎎": [T: "миллиграммы"] # 0x338e + - "㎏": [T: "килограммы"] # 0x338f + - "㎐": [T: "герцы"] # 0x3390 + - "㎑": [T: "килогерцы"] # 0x3391 + - "㎒": [T: "мегагерцы"] # 0x3392 + - "㎓": [T: "гигагерцы"] # 0x3393 + - "㎔": [T: "терагерцы"] # 0x3394 + - "㎕": [T: "микролитры"] # 0x3395 + - "㎖": [T: "миллилитры"] # 0x3396 + - "㎗": [T: "децилитры"] # 0x3397 + - "㎘": [T: "килолитры"] # 0x3398 + - "㎙": [T: "фемтометры"] # 0x3399 + - "㎚": [T: "нанометры"] # 0x339a + - "㎛": [T: "микрометры"] # 0x339b + - "㎜": [T: "миллиметры"] # 0x339c + - "㎝": [T: "сантиметры"] # 0x339d + - "㎞": [T: "километры"] # 0x339e + - "㎟": [T: "квадратные миллиметры"] # 0x339f + - "㎠": [T: "квадратные сантиметры"] # 0x33a0 + - "㎡": [T: "квадратные метры"] # 0x33a1 + - "㎢": [T: "квадратные километры"] # 0x33a2 + - "㎣": [T: "кубические миллиметры"] # 0x33a3 + - "㎤": [T: "кубические сантиметры"] # 0x33a4 + - "㎥": [T: "кубические метры"] # 0x33a5 + - "㎦": [T: "кубические километры"] # 0x33a6 + - "㎧": [T: "метры в секунду"] # 0x33a7 + - "㎨": [T: "метры в секунду в квадрате"] # 0x33a8 + - "㎩": [T: "паскали"] # 0x33a9 + - "㎪": [T: "килопаскали"] # 0x33aa + - "㎫": [T: "мегапаскали"] # 0x33ab + - "㎬": [T: "гигапаскали"] # 0x33ac + - "㎭": [T: "рады"] # 0x33ad + - "㎮": [T: "рады в секунду"] # 0x33ae + - "㎯": [T: "рады в секунду в квадрате"] # 0x33af + - "㎰": [T: "пикосекунды"] # 0x33b0 + - "㎱": [T: "наносекунды"] # 0x33b1 + - "㎲": [T: "микросекунды"] # 0x33b2 + - "㎳": [T: "миллисекунды"] # 0x33b3 + - "㎴": [T: "пиковольты"] # 0x33b4 + - "㎵": [T: "нановольты"] # 0x33b5 + - "㎶": [T: "микровольты"] # 0x33b6 + - "㎷": [T: "милливольты"] # 0x33b7 + - "㎸": [T: "киловольты"] # 0x33b8 + - "㎹": [T: "мегавольты"] # 0x33b9 + - "㎺": [T: "пиковатты"] # 0x33ba + - "㎻": [T: "нановатты"] # 0x33bb + - "㎼": [T: "микроватты"] # 0x33bc + - "㎽": [T: "милливатты"] # 0x33bd + - "㎾": [T: "киловатты"] # 0x33be + - "㎿": [T: "мегаватты"] # 0x33bf + - "㏀": [T: "килоомы"] # 0x33c0 + - "㏁": [T: "мегаомы"] # 0x33c1 + - "㏂": [T: "аттометры"] # 0x33c2 + - "㏃": [T: "беккерели"] # 0x33c3 + - "㏄": [T: "кубические сантиметры"] # 0x33c4 + - "㏅": [T: "канделы"] # 0x33c5 + - "㏆": [T: "кулоны на килограмм"] # 0x33c6 + - "㏇": [T: "заглавная C, o, точка"] # 0x33c7 (I have no idea what this is) + - "㏈": [T: "децибелы"] # 0x33c8 + - "㏉": [T: "греи"] # 0x33c9 + - "㏊": [T: "гектары"] # 0x33ca + - "㏋": [T: "лошадиные силы"] # 0x33cb + - "㏌": [T: "дюймы"] # 0x33cc + - "㏍": [T: "килокельвины"] # 0x33cd + - "㏎": [T: "километры"] # 0x33ce + - "㏏": [T: "узлы"] # 0x33cf + - "㏐": [T: "люмены"] # 0x33d0 + - "㏑": [T: "натуральный логарифм"] # 0x33d1 + - "㏒": [T: "логарифм"] # 0x33d2 + - "㏓": [T: "люксы"] # 0x33d3 + - "㏔": [T: "миллибарны"] # 0x33d4 + - "㏕": [T: "милли"] # 0x33d5 + - "㏖": [T: "моли"] # 0x33d6 + - "㏗": [T: "пэ аш"] # 0x33d7 + - "㏘": [T: "пикометры"] # 0x33d8 + - "㏙": [T: "частей на миллион"] # 0x33d9 + - "㏚": [T: "петарентгены"] # 0x33da + - "㏛": [T: "стерадианы"] # 0x33db + - "㏜": [T: "зиверты"] # 0x33dc + - "㏝": [T: "веберы"] # 0x33dd + - "㏞": [T: "вольты на метр"] # 0x33de + - "㏟": [T: "амперы на метр"] # 0x33df + - "㏿": [T: "галлоны"] # 0x33ff + - "": [T: "равно с крышкой снизу"] # 0xe900 + - "": [T: "равно с плюсом сверху"] # 0xe901 + - "": [T: "равно с плюсом снизу"] # 0xe902 + - "": [T: "тильда с плюсом сверху"] # 0xe903 + - "": [T: "тильда с плюсом снизу"] # 0xe904 + - "": [T: "равно двойное над больше"] # 0xe908 + - "": [T: "равно двойное над меньше"] # 0xe909 + - "": [T: "содержит или равно"] # 0xe90a + - "": [T: "надмножество или равно"] # 0xe90b + - "": [T: "подмножество или равно"] # 0xe90c + - "": [T: "равно над меньше"] # 0xe90d + - "": [T: "элемент или равно"] # 0xe912 + - "": [T: "равно или больше"] # 0xe913 + - "": [T: "приблизительное надмножество"] # 0xe914 + - "": [T: "приблизительное подмножество"] # 0xe915 + - "": [T: "надмножество с точкой включает как подотношение"] # 0xe916 + - "": [T: "подмножество с точкой включено как подотношение"] # 0xe917 + - "": [T: "равно с точкой снизу"] # 0xe918 + - "": [T: "левая точка над минусом над правой точкой"] # 0xe919 + - "": [T: "правая точка над минусом над левой точкой"] # 0xe91a + - "": [T: "почти равно минус"] # 0xe91f + - "": [T: "двойное квадратное объединение"] # 0xe920 + - "": [T: "двойное квадратное пересечение"] # 0xe921 + - "": [T: "меньше, равно или больше"] # 0xe922 + - "": [T: "тильда с точкой"] # 0xe924 + - "": [T: "тильда с двумя точками"] # 0xe925 + - "": [T: "меньше, больше или равно"] # 0xe926 + - "": [T: "больше, меньше или равно"] # 0xe927 + - "": [T: "эквивалентно или меньше"] # 0xe928 + - "": [T: "эквивалентно или больше"] # 0xe929 + - "": [T: "левый открытый ящик"] # 0xe92a + - "": [T: "правый открытый ящик"] # 0xe92b + - "": [T: "тождественно с точкой"] # 0xe92c + - "": [T: "больше, равно или меньше"] # 0xe92d + - "": [T: "оператор черта"] # 0xe92e + - "": [T: "оператор двойная черта"] # 0xe92f + - "": [T: "оператор тройная черта"] # 0xe930 + - "": [T: "меньше или приблизительно равно"] # 0xe932 + - "": [T: "больше или приблизительно равно"] # 0xe933 + - "": [T: "вложенное меньше"] # 0xe936 + - "": [T: "вложенное больше"] # 0xe937 + - "": [T: "предшествует или эквивалентно"] # 0xe93a + - "": [T: "следует или эквивалентно"] # 0xe93b + - "": [T: "предшествует над равно"] # 0xe940 + - "": [T: "следует над равно"] # 0xe941 + - "": [T: "меньше, равно, наклонно больше"] # 0xe942 + - "": [T: "больше, равно, наклонно меньше"] # 0xe943 + - "": [T: "удовлетворяется"] # 0xe948 + - "": [T: "ленивое s"] # 0xe949 + - "": [T: "не утверждение"] # 0xe94a + - "": [T: "двойное равно"] # 0xe94b + - "": [T: "тройное равно"] # 0xe94c + - "": [T: "правило отложено"] # 0xe94d + - "": [T: "разделитель псевдонимов"] # 0xe94e + - "": [T: "нормальная подгруппа с чертой"] # 0xe950 + - "": [T: "содержит как нормальную подгруппу с чертой"] # 0xe951 + - "": [T: "скруглённое следует"] # 0xe954 + - "": [T: "улыбка под чертой"] # 0xe955 + - "": [T: "хмурый над чертой"] # 0xe956 + - "": [T: "надмножество или почти равно"] # 0xe957 + - "": [T: "подмножество или почти равно"] # 0xe958 + - "": [T: "больше, почти равно или меньше"] # 0xe959 + - "": [T: "меньше, почти равно или больше"] # 0xe95a + - "": [T: "двойное логическое или"] # 0xe95c + - "": [T: "двойное логическое и"] # 0xe95d + - "": [T: "логическое или с двойной чертой снизу"] # 0xe95e + - "": [T: "логическое или с чертой снизу"] # 0xe95f + - "": [T: "почти равно над равно"] # 0xe962 + - "": [T: "левый треугольник с биссектрисой"] # 0xe964 + - "": [T: "правый треугольник с биссектрисой"] # 0xe965 + - "": [T: "равно с пунктирной верхней линией"] # 0xe966 + - "": [T: "предшествует с двоеточием"] # 0xe967 + - "": [T: "следует с двоеточием"] # 0xe968 + - "": [T: "меньше или равно наклонное"] # 0xe969 + - "": [T: "больше или равно наклонное"] # 0xe96a + - "": [T: "вложенное очень много меньше"] # 0xe96b + - "": [T: "вложенное очень много больше"] # 0xe96c + - "": [T: "разность вариант"] # 0xe96d + - "": [T: "меньше больше наложение"] # 0xe96e + - "": [T: "логическое или логическое и наложение"] # 0xe96f + - "": [T: "надмножество над надмножеством"] # 0xe970 + - "": [T: "подмножество над подмножеством"] # 0xe971 + - "": [T: "надмножество над подмножеством"] # 0xe972 + - "": [T: "подмножество над надмножеством"] # 0xe973 + - "": [T: "тройная вертикальная черта"] # 0xe979 + - "": [T: "парные четверные вертикальные точки"] # 0xe97a + - "": [T: "перпендикуляр над чертой"] # 0xe97b + - "": [T: "левый турникет двойная вертикальная черта"] # 0xe97c + - "": [T: "двойной левый турникет двойная вертикальная черта"] # 0xe97d + - "": [T: "перпендикуляр над перевёрнутым перпендикуляром"] # 0xe97e + - "": [T: "двойной левый турникет вертикальная черта"] # 0xe97f + - "": [T: "сферический угол, открытый вверх"] # 0xe980 + - "": [T: "двойная косая черта"] # 0xe981 + - "": [T: "прямой угол с уголком"] # 0xe982 + - "": [T: "вертикальная черта в круге"] # 0xe984 + - "": [T: "знак деления в круге"] # 0xe985 + - "": [T: "пунктирная косая черта"] # 0xe986 + - "": [T: "пунктирная обратная косая черта"] # 0xe987 + - "": [T: "пунктирная средняя линия"] # 0xe988 + - "": [T: "пунктирная вертикальная черта"] # 0xe989 + - "": [T: "перпендикуляр с s"] # 0xe98a + - "": [T: "угол с s"] # 0xe98b + - "": [T: "сферический угол, открытый влево"] # 0xe98c + - "": [T: "угол, открытый влево"] # 0xe98d + - "": [T: "вертикальная черта с двойным крюком"] # 0xe98e + - "": [T: "средняя точка свободный радикал"] # 0xe98f + - "": [T: "белый треугольник остриём вверх над чертой"] # 0xe990 + - "": [T: "тождественно и параллельно"] # 0xe991 + - "": [T: "разбивающее произведение"] # 0xe992 + - "": [T: "тройная черта с горизонтальной чертой"] # 0xe993 + - "": [T: "тождественно с двойной косой чертой"] # 0xe994 + - "": [T: "тройные перекрещенные черты"] # 0xe995 + - "": [T: "вертикальная черта над кругом"] # 0xe996 + - "": [T: "вертикальная пропорциональность"] # 0xe997 + - "": [T: "чёрная последняя четверть луны"] # 0xe998 + - "": [T: "чёрная первая четверть луны"] # 0xe999 + - "": [T: "отрицательная синусоида"] # 0xe9a0 + - "": [T: "точка в скобках"] # 0xe9a1 + - "": [T: "скобки"] # 0xe9a2 + - "": [T: "белая улыбка"] # 0xe9a3 + - "": [T: "белый хмурый"] # 0xe9a4 + - "": [T: "шестиугольник"] # 0xe9a5 + - "": [T: "эквивалентно над плюсом"] # 0xe9a6 + - "": [T: "плюс над эквивалентно"] # 0xe9a7 + - "": [T: "пересечение с засечками"] # 0xe9b0 + - "": [T: "объединение с засечками"] # 0xe9b1 + - "": [T: "квадратное пересечение с засечками"] # 0xe9b2 + - "": [T: "квадратное объединение с засечками"] # 0xe9b3 + - "": [T: "предшествует, эквивалентно или следует"] # 0xe9e0 + - "": [T: "следует, эквивалентно или предшествует"] # 0xe9e1 + - "": [T: "предшествует, почти равно или следует"] # 0xe9e2 + - "": [T: "следует, почти равно или предшествует"] # 0xe9e3 + - "": [T: "меньше, эквивалентно или больше"] # 0xe9f0 + - "": [T: "больше, эквивалентно или меньше"] # 0xe9f1 + - "": [T: "не очень много меньше"] # 0xea00 + - "": [T: "не очень много больше"] # 0xea01 + - "": [T: "не много меньше вариант"] # 0xea02 + - "": [T: "не много больше вариант"] # 0xea03 + - "": [T: "меньше, верт. не двойное равно"] # 0xea04 + - "": [T: "больше, верт. не двойное равно"] # 0xea05 + - "": [T: "не меньше и не равно"] # 0xea06 + - "": [T: "не больше и не равно"] # 0xea07 + - "": [T: "ни равно, ни меньше"] # 0xea09 + - "": [T: "не содержит и не равно"] # 0xea0a + - "": [T: "ни надмножество, ни равно"] # 0xea0b + - "": [T: "ни подмножество, ни равно"] # 0xea0c + - "": [T: "обратная косая подмножество"] # 0xea0d + - "": [T: "ни равно, ни больше"] # 0xea0e + - "": [T: "не минус тильда"] # 0xea0f + - "": [T: "ни равно, ни меньше"] # 0xea10 + - "": [T: "не тильда"] # 0xea11 + - "": [T: "не элемент и не равно"] # 0xea12 + - "": [T: "ни равно, ни больше"] # 0xea13 + - "": [T: "не почти равно"] # 0xea14 + - "": [T: "не следует похоже"] # 0xea15 + - "": [T: "меньше или наклонно равно с косой чертой"] # 0xea16 + - "": [T: "больше или наклонно равно с косой чертой"] # 0xea17 + - "": [T: "надмножество косая черта"] # 0xea1a + - "": [T: "не содержит"] # 0xea1b + - "": [T: "не меньше или не равно"] # 0xea1d + - "": [T: "не больше или не равно"] # 0xea1e + - "": [T: "не почти равно минус"] # 0xea1f + - "": [T: "отрицательная принадлежность множеству с точкой сверху"] # 0xea22 + - "": [T: "не вертикальный угол"] # 0xea2c + - "": [T: "не параллельно наклонно"] # 0xea2d + - "": [T: "не оператор черта"] # 0xea2e + - "": [T: "не оператор двойная черта"] # 0xea2f + - "": [T: "не оператор тройная черта"] # 0xea30 + - "": [T: "меньше, но не приблизительно равно"] # 0xea32 + - "": [T: "больше, но не приблизительно равно"] # 0xea33 + - "": [T: "меньше или не равно"] # 0xea34 + - "": [T: "больше или не равно"] # 0xea35 + - "": [T: "не вложенное меньше"] # 0xea36 + - "": [T: "не вложенное больше"] # 0xea37 + - "": [T: "не много меньше"] # 0xea38 + - "": [T: "не много больше"] # 0xea39 + - "": [T: "предшествует, но не эквивалентно"] # 0xea3a + - "": [T: "следует, но не эквивалентно"] # 0xea3b + - "": [T: "предшествует, но не равно"] # 0xea3c + - "": [T: "следует, но не равно"] # 0xea3d + - "": [T: "не равно и не предшествует"] # 0xea3e + - "": [T: "не равно и не следует"] # 0xea3f + - "": [T: "предшествует, но не равно"] # 0xea40 + - "": [T: "следует, но не равно"] # 0xea41 + - "": [T: "не подмножество и не равно"] # 0xea42 + - "": [T: "не надмножество и не равно"] # 0xea43 + - "": [T: "подмножество или не равно"] # 0xea44 + - "": [T: "надмножество или не равно"] # 0xea45 + - "": [T: "не подмножество и не равно"] # 0xea46 + - "": [T: "не надмножество и не равно"] # 0xea47 + - "": [T: "не тройное меньше"] # 0xea48 + - "": [T: "не тройное больше"] # 0xea49 + - "": [T: "не предшествует равно"] # 0xea4c + - "": [T: "не следует равно"] # 0xea4d + - "": [T: "не нормальная подгруппа с чертой"] # 0xea50 + - "": [T: "не содержит как нормальную подгруппу с чертой"] # 0xea51 + - "": [T: "не разность"] # 0xea52 + - "": [T: "не геометрически эквивалентно"] # 0xea53 + - "": [T: "не вертикально похоже"] # 0xea54 + - "": [T: "не равно или не похоже"] # 0xea55 + - "": [T: "не вертикально приблизительно"] # 0xea56 + - "": [T: "не приблизительно тождественно"] # 0xea57 + - "": [T: "не бугристое равно"] # 0xea58 + - "": [T: "не бугристое одинарное равно"] # 0xea59 + - "": [T: "не равно с точкой"] # 0xea5a + - "": [T: "обратное не эквивалентно"] # 0xea5b + - "": [T: "не квадратное подмножество"] # 0xea60 + - "": [T: "не квадратное надмножество"] # 0xea61 + - "": [T: "не почти равно над равно"] # 0xea62 + - "": [T: "не строго эквивалентно"] # 0xea63 + - "": [T: "не конгруэнтно с точкой"] # 0xea64 + - "": [T: "обратное не равно"] # 0xea65 + - "": [T: "не вертикально левый треугольник равно"] # 0xea70 + - "": [T: "не вертикально правый треугольник равно"] # 0xea71 + - "": [T: "не частная"] # 0xea80 + - "": [T: "удлинитель стрелки"] # 0xeb00 + - "": [T: "стрелка вправо над стрелкой влево"] # 0xeb01 + - "": [T: "стрелка вправо над стрелкой влево"] # 0xeb02 + - "": [T: "гарпун вправо над гарпуном влево"] # 0xeb03 + - "": [T: "гарпун вправо над гарпуном влево"] # 0xeb04 + - "": [T: "двойная стрелка северо-восток-юго-запад"] # 0xeb05 + - "": [T: "двойная стрелка северо-запад-юго-восток"] # 0xeb06 + - "": [T: "горизонтальный удлинитель гарпуна"] # 0xeb07 + - "": [T: "дуговая стрелка против часовой влево"] # 0xeb08 + - "": [T: "дуговая стрелка против часовой вправо"] # 0xeb09 + - "": [T: "большая стрелка вправо акцент"] # 0xeb0b + - "": [T: "большая стрелка влево акцент"] # 0xeb0c + - "": [T: "наконечник стрелки влево"] # 0xeb0d + - "": [T: "наконечник стрелки вправо"] # 0xeb0e + - "": [T: "большая стрелка влево-вправо со штрихом"] # 0xeb0f + - "": [T: "горизонтальный удлинитель двойной стрелки"] # 0xeb10 + - "": [T: "большая двойная стрелка влево-вправо со штрихом"] # 0xeb11 + - "": [T: "стрелка вниз слева от стрелки вверх"] # 0xeb12 + - "": [T: "стрелка влево с уголком вниз"] # 0xeb13 + - "": [T: "стрелка вправо с уголком вверх"] # 0xeb14 + - "": [T: "стрелка влево с уголком вверх"] # 0xeb15 + - "": [T: "верхняя полуокружность против часовой с плюсом"] # 0xeb16 + - "": [T: "верхняя полуокружность по часовой с минусом"] # 0xeb17 + - "": [T: "стрелка вправо с хвостом со штрихом"] # 0xeb18 + - "": [T: "правый гарпун вниз"] # 0xeb19 + - "": [T: "левый гарпун вниз"] # 0xeb1a + - "": [T: "левый и правый гарпун вниз"] # 0xeb1b + - "": [T: "левый и правый гарпун вверх"] # 0xeb1c + - "": [T: "верхний и нижний гарпун влево"] # 0xeb1d + - "": [T: "верхний и нижний гарпун вправо"] # 0xeb1e + - "": [T: "стрелка вверх справа от стрелки вниз"] # 0xeb1f + - "": [T: "левый гарпун к черте остриём вверх"] # 0xeb20 + - "": [T: "правый гарпун к черте остриём вверх"] # 0xeb21 + - "": [T: "левый гарпун к черте остриём вниз"] # 0xeb22 + - "": [T: "правый гарпун к черте остриём вниз"] # 0xeb23 + - "": [T: "левый гарпун от черты остриём вверх"] # 0xeb24 + - "": [T: "правый гарпун от черты остриём вверх"] # 0xeb25 + - "": [T: "левый гарпун от черты остриём вниз"] # 0xeb26 + - "": [T: "правый гарпун от черты остриём вниз"] # 0xeb27 + - "": [T: "верхний гарпун к черте остриём влево"] # 0xeb28 + - "": [T: "нижний гарпун к черте остриём влево"] # 0xeb29 + - "": [T: "верхний гарпун к черте остриём вправо"] # 0xeb2a + - "": [T: "нижний гарпун к черте остриём вправо"] # 0xeb2b + - "": [T: "верхний гарпун от черты остриём влево"] # 0xeb2c + - "": [T: "нижний гарпун от черты остриём влево"] # 0xeb2d + - "": [T: "верхний гарпун от черты остриём вправо"] # 0xeb2e + - "": [T: "нижний гарпун от черты остриём вправо"] # 0xeb2f + - "": [T: "стрелка вверх к черте"] # 0xeb30 + - "": [T: "стрелка вниз к черте"] # 0xeb31 + - "": [T: "верхний гарпун слева от нижнего гарпуна"] # 0xeb32 + - "": [T: "верхний гарпун справа от нижнего гарпуна"] # 0xeb33 + - "": [T: "наконечник стрелки вверх"] # 0xeb34 + - "": [T: "наконечник стрелки вниз"] # 0xeb35 + - "": [T: "двойной гарпун с левым остриём вниз, правым вверх"] # 0xeb36 + - "": [T: "двойной гарпун с левым остриём вверх, правым вниз"] # 0xeb37 + - "": [T: "стрелка влево над чертой"] # 0xeb38 + - "": [T: "стрелка вправо над чертой"] # 0xeb39 + - "": [T: "стрелка влево под чертой"] # 0xeb3a + - "": [T: "стрелка вправо под чертой"] # 0xeb3b + - "": [T: "тройная стрелка влево-вправо"] # 0xeb3c + - "": [T: "двойная стрелка северо-восток-юго-восток"] # 0xeb3f + - "": [T: "левая полуокружность против часовой"] # 0xeb40 + - "": [T: "левая полуокружность по часовой"] # 0xeb41 + - "": [T: "левый открытый круг стрелка влево-вправо"] # 0xeb42 + - "": [T: "стрелка вправо над тильдой"] # 0xeb44 + - "": [T: "стрелка влево над тильдой"] # 0xeb45 + - "": [T: "левый гарпун над чертой"] # 0xeb48 + - "": [T: "правый гарпун над чертой"] # 0xeb49 + - "": [T: "левый гарпун под чертой"] # 0xeb4a + - "": [T: "правый гарпун под чертой"] # 0xeb4b + - "": [T: "приземистая чёрная стрелка влево"] # 0xeb4c + - "": [T: "правая полуокружность по часовой"] # 0xeb50 + - "": [T: "правая полуокружность против часовой"] # 0xeb51 + - "": [T: "левый открытый круг левый-правый гарпун"] # 0xeb52 + - "": [T: "стрелка вверх слева от вертикальной черты"] # 0xeb58 + - "": [T: "стрелка вниз слева от вертикальной черты"] # 0xeb59 + - "": [T: "стрелка вверх справа от вертикальной черты"] # 0xeb5a + - "": [T: "стрелка вниз справа от вертикальной черты"] # 0xeb5b + - "": [T: "стрелка вправо с удлинённым нижним крюком"] # 0xeb5c + - "": [T: "стрелка влево с удлинённым крюком"] # 0xeb5d + - "": [T: "стрелка влево с удлинённым нижним крюком"] # 0xeb5e + - "": [T: "стрелка вправо с удлинённым крюком"] # 0xeb5f + - "": [T: "не волнистая стрелка вправо"] # 0xeb60 + - "": [T: "не изогнутая стрелка вправо"] # 0xeb61 + - "": [T: "верхний гарпун слева от вертикальной черты"] # 0xeb68 + - "": [T: "нижний гарпун слева от вертикальной черты"] # 0xeb69 + - "": [T: "верхний гарпун справа от вертикальной черты"] # 0xeb6a + - "": [T: "нижний гарпун справа от вертикальной черты"] # 0xeb6b + - "": [T: "вертикальный удлинитель двойной стрелки"] # 0xeb6c + - "": [T: "вертикальный удлинитель гарпуна с остриём влево"] # 0xeb6d + - "": [T: "вертикальный удлинитель гарпуна с остриём вправо"] # 0xeb6e + - "": [T: "правый гарпун над левым гарпуном, правый"] # 0xeb6f + - "": [T: "правый гарпун над левым гарпуном, левый"] # 0xeb70 + - "": [T: "левый гарпун над правым гарпуном, правый"] # 0xeb71 + - "": [T: "левый гарпун над правым гарпуном, левый"] # 0xeb72 + - "": [T: "наконечник стрелки влево от черты"] # 0xeb73 + - "": [T: "удлинитель стрелки влево-вправо от черты"] # 0xeb74 + - "": [T: "хвост стрелки влево от черты"] # 0xeb75 + - "": [T: "хвост стрелки вправо от черты"] # 0xeb76 + - "": [T: "наконечник стрелки вправо от черты"] # 0xeb77 + - "": [T: "наконечник верхнего гарпуна от черты с остриём влево"] # 0xeb78 + - "": [T: "стрелка вправо над стрелкой влево, правая"] # 0xeb79 + - "": [T: "стрелка вправо над стрелкой влево, левая"] # 0xeb7a + - "": [T: "стрелка влево над стрелкой вправо, правая"] # 0xeb7b + - "": [T: "стрелка влево над стрелкой вправо, левая"] # 0xeb7c + - "": [T: "наконечник стрелки вверх от черты"] # 0xeb7d + - "": [T: "хвост стрелки вверх от черты"] # 0xeb7e + - "": [T: "хвост стрелки вниз от черты"] # 0xeb7f + - "": [T: "наконечник стрелки вниз от черты"] # 0xeb80 + - "": [T: "наконечник нижнего гарпуна от черты с остриём вправо"] # 0xeb81 + - "": [T: "верхний гарпун слева от нижнего гарпуна, низ"] # 0xeb82 + - "": [T: "верхний гарпун слева от нижнего гарпуна, удлинитель"] # 0xeb83 + - "": [T: "нижний гарпун слева от верхнего гарпуна, верх"] # 0xeb84 + - "": [T: "верхний гарпун слева от нижнего гарпуна, верх"] # 0xeb85 + - "": [T: "нижний гарпун слева от верхнего гарпуна, удлинитель"] # 0xeb86 + - "": [T: "нижний гарпун слева от верхнего гарпуна, низ"] # 0xeb87 + - "": [T: "стрелка вверх слева от стрелки вниз, низ"] # 0xeb88 + - "": [T: "стрелка вниз слева от стрелки вверх, верх"] # 0xeb89 + - "": [T: "стрелка вверх слева от стрелки вниз, верх"] # 0xeb8a + - "": [T: "стрелка вниз слева от стрелки вверх, низ"] # 0xeb8b + - "": [T: "удлинитель стрелок влево-вправо"] # 0xeb8c + - "": [T: "удлинитель стрелки на северо-восток"] # 0xeb8d + - "": [T: "удлинитель стрелки на северо-запад"] # 0xeb8e + - "": [T: "нижняя фигурная скобка, левая часть"] # 0xec00 + - "": [T: "нижняя фигурная скобка, средняя часть"] # 0xec01 + - "": [T: "нижняя фигурная скобка, правая часть"] # 0xec02 + - "": [T: "горизонтальный удлинитель фигурной скобки"] # 0xec03 + - "": [T: "верхняя фигурная скобка, левая часть"] # 0xec04 + - "": [T: "верхняя фигурная скобка, средняя часть"] # 0xec05 + - "": [T: "верхняя фигурная скобка, правая часть"] # 0xec06 + - "": [T: "левая вертикальная черта"] # 0xec07 + - "": [T: "правая вертикальная черта"] # 0xec08 + - "": [T: "левая двойная вертикальная черта"] # 0xec09 + - "": [T: "правая двойная вертикальная черта"] # 0xec0a + - "": [T: "горизонтальный удлинитель скобки"] # 0xec0b + - "": [T: "под квадратной скобкой"] # 0xec0c + - "⎵": [T: "под квадратной скобкой"] # 0x23b5 + - "": [T: "над квадратной скобкой"] # 0xec0d + - "⎴": [T: "над квадратной скобкой"] # 0x23b4 + - "": [T: "нижняя скобка, левая часть"] # 0xec0e + - "": [T: "нижняя скобка, правая часть"] # 0xec0f + - "": [T: "верхняя скобка, левая часть"] # 0xec10 + - "": [T: "верхняя скобка, правая часть"] # 0xec11 + - "": [T: "левая скобка 1"] # 0xec12 + - "": [T: "левая скобка 2"] # 0xec13 + - "": [T: "левая скобка 3"] # 0xec14 + - "": [T: "левая скобка 4"] # 0xec15 + - "": [T: "правая скобка 1"] # 0xec16 + - "": [T: "правая скобка 2"] # 0xec17 + - "": [T: "правая скобка 3"] # 0xec18 + - "": [T: "правая скобка 4"] # 0xec19 + - "": [T: "радикал 1"] # 0xec1a + - "": [T: "радикал 2"] # 0xec1b + - "": [T: "радикал 3"] # 0xec1c + - "": [T: "радикал 4"] # 0xec1d + - "": [T: "радикал 5"] # 0xec1e + - "": [T: "нижняя часть радикала"] # 0xec1f + - "": [T: "вертикальный удлинитель радикала"] # 0xec20 + - "": [T: "верхняя часть радикала"] # 0xec21 + - "": [T: "левая белая скобка, верхняя часть"] # 0xec22 + - "": [T: "левая белая скобка, удлинитель"] # 0xec23 + - "": [T: "левая белая скобка, нижняя часть"] # 0xec24 + - "": [T: "правая белая скобка, верхняя часть"] # 0xec25 + - "": [T: "правая белая скобка, удлинитель"] # 0xec26 + - "": [T: "правая белая скобка, нижняя часть"] # 0xec27 + - "": [T: "левая белая фигурная скобка"] # 0xec30 + - "": [T: "правая белая фигурная скобка"] # 0xec31 + - "": [T: "знак длинного деления"] # 0xec32 + - "": [T: "удлинитель знака длинного деления"] # 0xec33 + - "": [T: "короткое деление"] # 0xec34 + - "": [T: "двойная связь с юго-запада на северо-восток"] # 0xec40 + - "": [T: "двойная связь с северо-запада на юго-восток"] # 0xec41 + - "": [T: "одинарная горизонтальная связь"] # 0xec42 + - "": [T: "двойная горизонтальная связь"] # 0xec43 + - "": [T: "тройная горизонтальная связь"] # 0xec44 + - "": [T: "одинарная вертикальная связь"] # 0xec45 + - "": [T: "двойная вертикальная связь"] # 0xec46 + - "": [T: "тройная вертикальная связь"] # 0xec47 + - "": [T: "связь меньше"] # 0xec48 + - "": [T: "связь больше"] # 0xec49 + - "": [T: "одинарная горизонтальная связь en"] # 0xec4a + - "": [T: "двойная горизонтальная связь en"] # 0xec4b + - "": [T: "тройная горизонтальная связь en"] # 0xec4c + - "": [T: "верхний левый прямоугольник"] # 0xec80 + - "": [T: "нижний левый прямоугольник"] # 0xec81 + - "": [T: "верхний правый прямоугольник"] # 0xec90 + - "": [T: "нижний правый прямоугольник"] # 0xec91 + - "": [T: "угол синтетического деления"] # 0xec92 + - "": [T: "горизонтальный удлинитель синтетического деления"] # 0xec93 + - "": [T: "вертикальный удлинитель синтетического деления"] # 0xec94 + - "": [T: "удлинитель левого потолка/пола"] # 0xec95 + - "": [T: "удлинитель правого потолка/пола"] # 0xec96 + - "": [T: "удлинитель верхней скобки"] # 0xec97 + - "": [T: "удлинитель вертикальной черты"] # 0xec98 + - "": [T: "удлинитель левой двойной вертикальной черты"] # 0xec99 + - "": [T: "удлинитель горизонтальной черты"] # 0xec9a + - "": [T: "удлинитель нижней скобки"] # 0xec9c + - "": [T: "нижняя скобка, правая часть"] # 0xec9d + - "": [T: "удлинитель нижней скобки"] # 0xec9e + - "": [T: "нижняя скобка, левая часть"] # 0xec9f + - "": [T: "удлинитель верхней фигурной скобки"] # 0xeca0 + - "": [T: "верхняя скобка, левая часть"] # 0xeca1 + - "": [T: "удлинитель верхней скобки"] # 0xeca2 + - "": [T: "верхняя скобка, правая часть"] # 0xeca3 + - "": [T: "удлинитель нижней фигурной скобки"] # 0xeca4 + - "": [T: "h-бар"] # 0xed00 (планковская постоянная с чертой, стандартно "h-бар") + - "": [T: "зеркальная g"] # 0xed01 + - "": [T: "j без точки"] # 0xed02 + - "": [T: "дигамма"] # 0xed03 + - "ϝ": [T: "дигамма"] # 0x3dd + - "": [T: "d"] # 0xed10 + - "ⅆ": [T: "d"] # 0x2146 + - "": [T: "e"] # 0xed11 + - "ⅇ": [T: "e"] # 0x2147 + - "": [T: "i"] # 0xed12 + - "ⅈ": [T: "i"] # 0x2148 + - "": [T: "j"] # 0xed13 - "ⅅ": - - spell: "translate('.', 'ⅅ', 'DD')" # 0xed16, 0x2145 + - SPELL: "translate('.', 'ⅅ', 'DD')" # 0xed16, 0x2145 # Символы из частной области MathType - - "": [t: "контурный интеграл против часовой с петлёй"] # 0xee00 - - "": [t: "контурный интеграл по часовой с петлёй"] # 0xee01 - - "": [t: ""] # 0xee04 - - "": [t: ""] # 0xee05 - - "": [t: ""] # 0xee06 - - "": [t: ""] # 0xee07 - - "": [t: ""] # 0xee08 - - "": [t: ""] # 0xee09 - - "": [t: ""] # 0xee0a - - "": [t: ""] # 0xee0b - - "": [t: ""] # 0xee0c - - "": [t: "статус соединения"] # 0xee0d - - "": [t: "статус соединения, левая часть"] # 0xee0e - - "": [t: "статус соединения, правая часть"] # 0xee0f - - "": [t: "статус соединения, удлинитель"] # 0xee10 - - "": [t: "петля интеграла"] # 0xee11 - - "": [t: "двойная петля интеграла"] # 0xee12 - - "": [t: "тройная петля интеграла"] # 0xee13 - - "": [t: "расширяющаяся двойная петля интеграла"] # 0xee15 - - "": [t: "расширяющаяся тройная петля интеграла"] # 0xee16 - - "": [t: "асимптотически равно, акцент"] # 0xee17 - - "": [t: "знак равенства, акцент"] # 0xee18 - - "": [t: "четверной штрих"] # 0xee19 - - "": [t: "черта с открытым кружком слева"] # 0xee1a - - "": [t: "черта с закрытым кружком слева"] # 0xee1b - - "": [t: "черта с открытым кружком справа"] # 0xee1c - - "": [t: "черта с точкой сверху"] # 0xee1d - - "": [t: "черта с точкой снизу"] # 0xee1e - - "": [t: "черта с двойной точкой сверху"] # 0xee1f - - "": [t: "черта с двойной точкой снизу"] # 0xee20 - - "": [t: "черта с каретом"] # 0xee21 - - "": [t: "жирная нижняя черта"] # 0xee22 - - "": [t: "черта с закрытым кружком справа"] # 0xee23 - - "": [t: "большая точка сверху"] # 0xee24 - - "": [t: "знак выравнивания"] # 0xef00 - - "": [t: ""] # 0xef01 - - "​": [t: ""] # 0x200b - - "": [t: ""] # 0xef02 - - " ": [t: ""] # 0x2009 - - "": [t: ""] # 0xef03 - - " ": [t: ""] # 0x205f - - "": [t: ""] # 0xef04 - - "": [t: ""] # 0xef05 - - "": [t: ""] # 0xef06 - - "": [t: ""] # 0xef07 - - "": [t: ""] # 0xef08 - - "": [t: ""] # 0xef09 - - "": [t: ""] # 0xef0a - - " ": [t: ""] # 0x200a - - "": [t: ""] # 0xef22 - - "": [t: ""] # 0xef23 - - "": [t: ""] # 0xef24 - - "": [t: ""] # 0xef29 - - "": [t: "пропущенный член"] # 0xef41 - - "": [t: "контурный интеграл по часовой, стрелка слева"] # 0xef80 - - "": [t: "интеграл с квадратом"] # 0xef81 - - "": [t: "интеграл с косой чертой"] # 0xef82 - - "": [t: "обратный интеграл"] # 0xef83 - - "": [t: "двойной ноль над двойным нулём"] # 0xef90 - - "": [t: "ноль с косой чертой"] # 0xef91 + - "": [T: "контурный интеграл против часовой с петлёй"] # 0xee00 + - "": [T: "контурный интеграл по часовой с петлёй"] # 0xee01 + - "": [T: ""] # 0xee04 + - "": [T: ""] # 0xee05 + - "": [T: ""] # 0xee06 + - "": [T: ""] # 0xee07 + - "": [T: ""] # 0xee08 + - "": [T: ""] # 0xee09 + - "": [T: ""] # 0xee0a + - "": [T: ""] # 0xee0b + - "": [T: ""] # 0xee0c + - "": [T: "статус соединения"] # 0xee0d + - "": [T: "статус соединения, левая часть"] # 0xee0e + - "": [T: "статус соединения, правая часть"] # 0xee0f + - "": [T: "статус соединения, удлинитель"] # 0xee10 + - "": [T: "петля интеграла"] # 0xee11 + - "": [T: "двойная петля интеграла"] # 0xee12 + - "": [T: "тройная петля интеграла"] # 0xee13 + - "": [T: "расширяющаяся двойная петля интеграла"] # 0xee15 + - "": [T: "расширяющаяся тройная петля интеграла"] # 0xee16 + - "": [T: "асимптотически равно, акцент"] # 0xee17 + - "": [T: "знак равенства, акцент"] # 0xee18 + - "": [T: "четверной штрих"] # 0xee19 + - "": [T: "черта с открытым кружком слева"] # 0xee1a + - "": [T: "черта с закрытым кружком слева"] # 0xee1b + - "": [T: "черта с открытым кружком справа"] # 0xee1c + - "": [T: "черта с точкой сверху"] # 0xee1d + - "": [T: "черта с точкой снизу"] # 0xee1e + - "": [T: "черта с двойной точкой сверху"] # 0xee1f + - "": [T: "черта с двойной точкой снизу"] # 0xee20 + - "": [T: "черта с каретом"] # 0xee21 + - "": [T: "жирная нижняя черта"] # 0xee22 + - "": [T: "черта с закрытым кружком справа"] # 0xee23 + - "": [T: "большая точка сверху"] # 0xee24 + - "": [T: "знак выравнивания"] # 0xef00 + - "": [T: ""] # 0xef01 + - "​": [T: ""] # 0x200b + - "": [T: ""] # 0xef02 + - " ": [T: ""] # 0x2009 + - "": [T: ""] # 0xef03 + - " ": [T: ""] # 0x205f + - "": [T: ""] # 0xef04 + - "": [T: ""] # 0xef05 + - "": [T: ""] # 0xef06 + - "": [T: ""] # 0xef07 + - "": [T: ""] # 0xef08 + - "": [T: ""] # 0xef09 + - "": [T: ""] # 0xef0a + - " ": [T: ""] # 0x200a + - "": [T: ""] # 0xef22 + - "": [T: ""] # 0xef23 + - "": [T: ""] # 0xef24 + - "": [T: ""] # 0xef29 + - "": [T: "пропущенный член"] # 0xef41 + - "": [T: "контурный интеграл по часовой, стрелка слева"] # 0xef80 + - "": [T: "интеграл с квадратом"] # 0xef81 + - "": [T: "интеграл с косой чертой"] # 0xef82 + - "": [T: "обратный интеграл"] # 0xef83 + - "": [T: "двойной ноль над двойным нулём"] # 0xef90 + - "": [T: "ноль с косой чертой"] # 0xef91 # fraktur chars in math alphabetic block and also MathType private use area # Some of these are reserved because they were used in Plane 0 -- that shouldn't be an issue other than causing the other chars to not display - "𝔄-𝔜": # 0x1d504 - 0x1d51d ('z' version is reserved) - - t: "фрактурная" - - spell: "translate('.', '𝔄𝔅𝔆𝔇𝔈𝔉𝔊𝔋𝔌𝔍𝔎𝔏𝔐𝔑𝔒𝔓𝔔𝔕𝔖𝔗𝔘𝔙𝔚𝔛𝔜', 'ABCDEFGHIJKLMNOPQRSTUVWXY')" + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'фрактурной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'фрактурную', 'фрактурная'))" + - SPELL: "translate('.', '𝔄𝔅𝔆𝔇𝔈𝔉𝔊𝔋𝔌𝔍𝔎𝔏𝔐𝔑𝔒𝔓𝔔𝔕𝔖𝔗𝔘𝔙𝔚𝔛𝔜', 'ABCDEFGHIJKLMNOPQRSTUVWXY')" - "-": # 0xf000 - 0xf018 - - t: "фрактурная" - - spell: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXY')" + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'фрактурной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'фрактурную', 'фрактурная'))" + - SPELL: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXY')" - "𝔞-𝔷": # 0x1d51e - 0x1d537 - - t: "фрактурная" - - spell: "translate('.', '𝔞𝔟𝔠𝔡𝔢𝔣𝔤𝔥𝔦𝔧𝔨𝔩𝔪𝔫𝔬𝔭𝔮𝔯𝔰𝔱𝔲𝔳𝔴𝔵𝔶𝔷', 'abcdefghijklmnopqrstuvwxyz')" + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'фрактурной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'фрактурную', 'фрактурная'))" + - SPELL: "translate('.', '𝔞𝔟𝔠𝔡𝔢𝔣𝔤𝔥𝔦𝔧𝔨𝔩𝔪𝔫𝔬𝔭𝔮𝔯𝔰𝔱𝔲𝔳𝔴𝔵𝔶𝔷', 'abcdefghijklmnopqrstuvwxyz')" - "-": # 0xf01a - 0xf033 - - t: "фрактурная" - - spell: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')" + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'фрактурной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'фрактурную', 'фрактурная'))" + - SPELL: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')" - "𝕬-𝖅": # 0x1D56C - 0x1D585 - - t: "фрактурная" + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'фрактурной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'фрактурную', 'фрактурная'))" - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '𝕬𝕭𝕮𝕯𝕰𝕱𝕲𝕳𝕴𝕵𝕶𝕷𝕸𝕹𝕺𝕻𝕼𝕽𝕾𝕿𝖀𝖁𝖂𝖃𝖄𝖅', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '𝕬𝕭𝕮𝕯𝕰𝕱𝕲𝕳𝕴𝕵𝕶𝕷𝕸𝕹𝕺𝕻𝕼𝕽𝕾𝕿𝖀𝖁𝖂𝖃𝖄𝖅', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" - "-": # 0xf040 - 0xf059 - - t: "фрактурная" + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'фрактурной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'фрактурную', 'фрактурная'))" - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" - "𝖆-𝖟": # 0x1d586 - 0x1d59f - - t: "фрактурная" + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'фрактурной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'фрактурную', 'фрактурная'))" - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '𝖆𝖇𝖈𝖉𝖊𝖋𝖌𝖍𝖎𝖏𝖐𝖑𝖒𝖓𝖔𝖕𝖖𝖗𝖘𝖙𝖚𝖛𝖜𝖝𝖞𝖟', 'abcdefghijklmnopqrstuvwxyz')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '𝖆𝖇𝖈𝖉𝖊𝖋𝖌𝖍𝖎𝖏𝖐𝖑𝖒𝖓𝖔𝖕𝖖𝖗𝖘𝖙𝖚𝖛𝖜𝖝𝖞𝖟', 'abcdefghijklmnopqrstuvwxyz')" - "-": # 0xf05a - 0xf073 - - t: "фрактурная" + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'фрактурной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'фрактурную', 'фрактурная'))" - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')" # double struck (blackboard bold) chars in math alphabetic block and also MathType private use area # Some of these are reserved because they were used in Plane 0 -- that shouldn't be an issue other than causing the other chars to not display - "𝔸-𝕐": # 0x1d504 - 0x1d51d ('z' version is reserved) - - t: "двойная" - - spell: "translate('.', '𝔸𝔹𝔺𝔻𝔼𝔽𝔾𝔿𝕀𝕁𝕂𝕃𝕄𝕅𝕆𝕇𝕈𝕉𝕊𝕋𝕌𝕍𝕎𝕏𝕐', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'двойной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'двойную', 'двойная'))" + - SPELL: "translate('.', '𝔸𝔹𝔺𝔻𝔼𝔽𝔾𝔿𝕀𝕁𝕂𝕃𝕄𝕅𝕆𝕇𝕈𝕉𝕊𝕋𝕌𝕍𝕎𝕏𝕐', 'ABCDEFGHIJKLMNOPQRSTUVWXY')" - "-": # 0xf080 - 0xf098 - - t: "двойная" - - spell: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'двойной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'двойную', 'двойная'))" + - SPELL: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXY')" - "𝕒-𝕫": # 0x1d552 - 0x1d56b - - t: "двойная" - - spell: "translate('.', '𝕒𝕓𝕔𝕕𝕖𝕗𝕘𝕙𝕚𝕛𝕜𝕝𝕞𝕟𝕠𝕡𝕢𝕣𝕤𝕥𝕦𝕧𝕨𝕩𝕪𝕫', 'abcdefghijklmnopqrstuvwxyz')" + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'двойной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'двойную', 'двойная'))" + - SPELL: "translate('.', '𝕒𝕓𝕔𝕕𝕖𝕗𝕘𝕙𝕚𝕛𝕜𝕝𝕞𝕟𝕠𝕡𝕢𝕣𝕤𝕥𝕦𝕧𝕨𝕩𝕪𝕫', 'abcdefghijklmnopqrstuvwxyz')" - "-": # 0xf09a - 0xf0b3 - - t: "двойная" - - spell: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')" - - "𝟘": [t: "двойной ноль"] - - "𝟡": [t: "двойная девять"] - - "𝟙𝟚𝟛𝟜𝟝𝟞𝟟𝟠": # 0x1d7d9 - 0x1d7e0 - - t: "двойная" - - spell: "translate('.', '𝟙𝟚𝟛𝟜𝟝𝟞𝟟𝟠', '12345678')" - - "": [t: "двойной ноль"] - - "": [t: "двойная девять"] - - "": # 0xf0c1 - 0xf0c8 - - t: "двойная" - - spell: "translate('.', '', '12345678')" - - - "": [t: "набла с двойным контуром"] # 0xf0ca - - "": [t: "эйлерова константа с двойным контуром"] # 0xf0cb + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'двойной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'двойную', 'двойная'))" + - SPELL: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')" + - "𝟘-𝟡": + - test: + - if: "'.' = '𝟘'" + then: [T: "двойной ноль"] + - else_if: "'.' = '𝟡'" + then: [T: "двойная девять"] + else: + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'двойной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'двойную', 'двойная'))" + - SPELL: "translate('.', '𝟙𝟚𝟛𝟜𝟝𝟞𝟟𝟠', '12345678')" + - "-": + - test: + - if: "'.' = ''" + then: [T: "двойной ноль"] + - else_if: "'.' = ''" + then: [T: "двойная девять"] + else: + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'двойной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'двойную', 'двойная'))" + - SPELL: "translate('.', '', '12345678')" + + - "": [T: "набла с двойным контуром"] # 0xf0ca + - "": [T: "эйлерова константа с двойным контуром"] # 0xf0cb # script chars in math alphabetic block and also MathType private use area - "𝒜-𝒵": # 0x1d49c - 0x1d4b5 - - t: "рукописная" - - spell: "translate('.', '𝒜𝒝𝒞𝒟𝒠𝒡𝒢𝒣𝒤𝒥𝒦𝒧𝒨𝒩𝒪𝒫𝒬𝒭𝒮𝒯𝒰𝒱𝒲𝒳𝒴𝒵', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'рукописной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'рукописную', 'рукописная'))" + - SPELL: "translate('.', '𝒜𝒝𝒞𝒟𝒠𝒡𝒢𝒣𝒤𝒥𝒦𝒧𝒨𝒩𝒪𝒫𝒬𝒭𝒮𝒯𝒰𝒱𝒲𝒳𝒴𝒵', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" - "-": # 0xf100 - 0xf119 - - t: "рукописная" - - spell: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'рукописной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'рукописную', 'рукописная'))" + - SPELL: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" - "𝒶-𝓏": # 0x1d4b6 - 0x1d4cf - - t: "рукописная" - - spell: "translate('.', '𝒶𝒷𝒸𝒹𝒺𝒻𝒼𝒽𝒾𝒿𝓀𝓁𝓂𝓃𝓄𝓅𝓆𝓇𝓈𝓉𝓊𝓋𝓌𝓍𝓎𝓏', 'abcdefghijklmnopqrstuvwxyz')" + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'рукописной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'рукописную', 'рукописная'))" + - SPELL: "translate('.', '𝒶𝒷𝒸𝒹𝒺𝒻𝒼𝒽𝒾𝒿𝓀𝓁𝓂𝓃𝓄𝓅𝓆𝓇𝓈𝓉𝓊𝓋𝓌𝓍𝓎𝓏', 'abcdefghijklmnopqrstuvwxyz')" - "-": # 0xf11a - 0xf133 - - t: "рукописная" - - spell: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')" + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'рукописной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'рукописную', 'рукописная'))" + - SPELL: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')" # bold script chars in math alphabetic block and also MathType private use area - "𝓐-𝓩": # 0x1d4d0 - 0x1d4e9 - - t: "рукописная" + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'рукописной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'рукописную', 'рукописная'))" - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '𝓐𝓑𝓒𝓓𝓔𝓕𝓖𝓗𝓘𝓙𝓚𝓛𝓜𝓝𝓞𝓟𝓠𝓡𝓢𝓣𝓤𝓥𝓦𝓧𝓨𝓩', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '𝓐𝓑𝓒𝓓𝓔𝓕𝓖𝓗𝓘𝓙𝓚𝓛𝓜𝓝𝓞𝓟𝓠𝓡𝓢𝓣𝓤𝓥𝓦𝓧𝓨𝓩', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" - "-": # 0xf140 - 0xf159 - - t: "рукописная" + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'рукописной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'рукописную', 'рукописная'))" - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" - "𝓪-𝔃": # 0x1d4ea - 0x1d503 - - t: "рукописная" + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'рукописной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'рукописную', 'рукописная'))" - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '𝓪𝓫𝓬𝓭𝓮𝓯𝓰𝓱𝓲𝓳𝓴𝓵𝓶𝓷𝓸𝓹𝓺𝓻𝓼𝓽𝓾𝓿𝔀𝔁𝔂𝔃', 'abcdefghijklmnopqrstuvwxyz')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '𝓪𝓫𝓬𝓭𝓮𝓯𝓰𝓱𝓲𝓳𝓴𝓵𝓶𝓷𝓸𝓹𝓺𝓻𝓼𝓽𝓾𝓿𝔀𝔁𝔂𝔃', 'abcdefghijklmnopqrstuvwxyz')" - "-": # 0xf15a - 0xf173 - - t: "рукописная" + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'рукописной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'рукописную', 'рукописная'))" - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')" - "-": # 0xf180 - 0xf199 - - spell: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" + - SPELL: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" - "": # 0xf19a - test: @@ -3267,11 +3254,11 @@ if: "$SpeechOverrides_CapitalLetters = ''" then_test: if: "$Impairment = 'Blindness'" - then: [t: "заглавная"] + then: [T: "заглавная"] else: [x: "$SpeechOverrides_CapitalLetters"] - pitch: value: "$CapitalLetters_Pitch" - replace: [t: "лигатура ae"] + replace: [T: "лигатура ae"] - "": # 0xf19b - test: if: "$CapitalLetters_Beep" @@ -3285,11 +3272,11 @@ if: "$SpeechOverrides_CapitalLetters = ''" then_test: if: "$Impairment = 'Blindness'" - then: [t: "заглавная"] + then: [T: "заглавная"] else: [x: "$SpeechOverrides_CapitalLetters"] - pitch: value: "$CapitalLetters_Pitch" - replace: [t: "эсцет"] + replace: [T: "эсцет"] - "": # 0xf19c - test: if: "$CapitalLetters_Beep" @@ -3303,476 +3290,503 @@ if: "$SpeechOverrides_CapitalLetters = ''" then_test: if: "$Impairment = 'Blindness'" - then: [t: "заглавная"] + then: [T: "заглавная"] else: [x: "$SpeechOverrides_CapitalLetters"] - pitch: value: "$CapitalLetters_Pitch" - replace: [t: "o со штрихом"] + replace: [T: "o со штрихом"] # MathType only has a few of the cap Greek letters in PUA - "": # 0xf201 - 0xf209 - - t: "двойная" - - spell: "translate('.', '', 'ΔΨΛΠΣΘΓΩΥ')" + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'двойной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'двойную', 'двойная'))" + - SPELL: "translate('.', '', 'ΔΨΛΠΣΘΓΩΥ')" - "-": # 0xf220 - 0xf236 - - t: "двойная" + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'двойной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'двойную', 'двойная'))" - spell: "translate('.', '', 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ΢ΣΤΥΦΧΨΩ')" - - "": [t: "конечная сигма с двойным контуром"] # 0xf237 - - "": [t: "ро с двойным контуром"] # 0xf250 - - "": [t: "фи с двойным контуром"] # 0xf251 + - "": [T: "конечная сигма с двойным контуром"] # 0xf237 + - "": [T: "ро с двойным контуром"] # 0xf250 + - "": [T: "фи с двойным контуром"] # 0xf251 - "𝐀-𝐙": # 0x1d400 - 0x1d419 - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '𝐀𝐁𝐂𝐃𝐄𝐅𝐆𝐇𝐈𝐉𝐊𝐋𝐌𝐍𝐎𝐏𝐐𝐑𝐒𝐓𝐔𝐕𝐖𝐗𝐘𝐙', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '𝐀𝐁𝐂𝐃𝐄𝐅𝐆𝐇𝐈𝐉𝐊𝐋𝐌𝐍𝐎𝐏𝐐𝐑𝐒𝐓𝐔𝐕𝐖𝐗𝐘𝐙', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" - "-": # 0xf260 - 0xf279 - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" - "𝐚-𝐳": # 0x1d41a - 0x1d433 - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '𝐚𝐛𝐜𝐝𝐞𝐟𝐠𝐡𝐢𝐣𝐤𝐥𝐦𝐧𝐨𝐩𝐪𝐫𝐬𝐭𝐮𝐯𝐰𝐱𝐲𝐳', 'abcdefghijklmnopqrstuvwxyz')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '𝐚𝐛𝐜𝐝𝐞𝐟𝐠𝐡𝐢𝐣𝐤𝐥𝐦𝐧𝐨𝐩𝐪𝐫𝐬𝐭𝐮𝐯𝐰𝐱𝐲𝐳', 'abcdefghijklmnopqrstuvwxyz')" - "-": # 0xf27a - 0xf293 - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')" - "𝐴-𝑍": # 0x1d434 - 0x1d44d - - spell: "translate('.', '𝐴𝐵𝐶𝐷𝐸𝐹𝐺𝐻𝐼𝐽𝐾𝐿𝑀𝑁𝑂𝑃𝑄𝑅𝑆𝑇𝑈𝑉𝑊𝑋𝑌𝑍', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" + - SPELL: "translate('.', '𝐴𝐵𝐶𝐷𝐸𝐹𝐺𝐻𝐼𝐽𝐾𝐿𝑀𝑁𝑂𝑃𝑄𝑅𝑆𝑇𝑈𝑉𝑊𝑋𝑌𝑍', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" - "-": # 0xf294 - 0xf2ad - - spell: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" + - SPELL: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" - "𝑎-𝑧": # 0x1d44e - 0x1d467 - - spell: "translate('.', '𝑎𝑏𝑐𝑑𝑒𝑓𝑔𝑕𝑖𝑗𝑘𝑙𝑚𝑛𝑜𝑝𝑞𝑟𝑠𝑡𝑢𝑣𝑤𝑥𝑦𝑧', 'abcdefghijklmnopqrstuvwxyz')" + - SPELL: "translate('.', '𝑎𝑏𝑐𝑑𝑒𝑓𝑔𝑕𝑖𝑗𝑘𝑙𝑚𝑛𝑜𝑝𝑞𝑟𝑠𝑡𝑢𝑣𝑤𝑥𝑦𝑧', 'abcdefghijklmnopqrstuvwxyz')" - "-": # 0xf2ae - 0xf2c7 - - spell: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')" + - SPELL: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')" - "𝑨-𝒁": # 0x1d468 - 0x1d481 # - t: "bold italic" - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '𝑨𝑩𝑪𝑫𝑬𝑭𝑮𝑯𝑰𝑱𝑲𝑳𝑴𝑵𝑶𝑷𝑸𝑹𝑺𝑻𝑼𝑽𝑾𝑿𝒀𝒁', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '𝑨𝑩𝑪𝑫𝑬𝑭𝑮𝑯𝑰𝑱𝑲𝑳𝑴𝑵𝑶𝑷𝑸𝑹𝑺𝑻𝑼𝑽𝑾𝑿𝒀𝒁', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" - "-": # 0xf2c8 - 0xf2e1 # - t: "bold italic" - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" - "𝒂-𝒛": # 0x1d482 - 0x1d49b # - t: "bold italic" - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '𝒂𝒃𝒄𝒅𝒆𝒇𝒈𝒉𝒊𝒋𝒌𝒍𝒎𝒏𝒐𝒑𝒒𝒓𝒔𝒕𝒖𝒗𝒘𝒙𝒚𝒛', 'abcdefghijklmnopqrstuvwxyz')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '𝒂𝒃𝒄𝒅𝒆𝒇𝒈𝒉𝒊𝒋𝒌𝒍𝒎𝒏𝒐𝒑𝒒𝒓𝒔𝒕𝒖𝒗𝒘𝒙𝒚𝒛', 'abcdefghijklmnopqrstuvwxyz')" - "-": # 0xf2e2 - 0xf2fb # - t: "bold italic" - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')" - "𝖠-𝖹": # 0x1d5a0 - 0x1d5b9 - - spell: "translate('.', '𝖠𝖡𝖢𝖣𝖤𝖥𝖦𝖧𝖨𝖩𝖪𝖫𝖬𝖭𝖮𝖯𝖰𝖱𝖲𝖳𝖴𝖵𝖶𝖷𝖸𝖹', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" + - SPELL: "translate('.', '𝖠𝖡𝖢𝖣𝖤𝖥𝖦𝖧𝖨𝖩𝖪𝖫𝖬𝖭𝖮𝖯𝖰𝖱𝖲𝖳𝖴𝖵𝖶𝖷𝖸𝖹', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" - "-": # 0xf300 - 0xf319 - - spell: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" + - SPELL: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" - "𝖺-𝗓": # 0x1d5ba - 0x1d5d3 - - spell: "translate('.', '𝖺𝖻𝖼𝖽𝖾𝖿𝗀𝗁𝗂𝗃𝗄𝗅𝗆𝗇𝗈𝗉𝗊𝗋𝗌𝗍𝗎𝗏𝗐𝗑𝗒𝗓', 'abcdefghijklmnopqrstuvwxyz')" + - SPELL: "translate('.', '𝖺𝖻𝖼𝖽𝖾𝖿𝗀𝗁𝗂𝗃𝗄𝗅𝗆𝗇𝗈𝗉𝗊𝗋𝗌𝗍𝗎𝗏𝗐𝗑𝗒𝗓', 'abcdefghijklmnopqrstuvwxyz')" - "-": # 0xf31a - 0xf333 - - spell: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')" + - SPELL: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')" - "𝗔-𝗭": # 0x1d5d4 - 0x1d5ed - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '𝗔𝗕𝗖𝗗𝗘𝗙𝗚𝗛𝗜𝗝𝗞𝗟𝗠𝗡𝗢𝗣𝗤𝗥𝗦𝗧𝗨𝗩𝗪𝗫𝗬𝗭', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '𝗔𝗕𝗖𝗗𝗘𝗙𝗚𝗛𝗜𝗝𝗞𝗟𝗠𝗡𝗢𝗣𝗤𝗥𝗦𝗧𝗨𝗩𝗪𝗫𝗬𝗭', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" - "-": # 0xf334 - 0xf34d - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" - "𝗮-𝘇": # 0x1d5ee - 0x1d607 - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '𝗮𝗯𝗰𝗱𝗲𝗳𝗴𝗵𝗶𝗷𝗸𝗹𝗺𝗻𝗼𝗽𝗾𝗿𝘀𝘁𝘂𝘃𝘄𝘅𝘆𝘇', 'abcdefghijklmnopqrstuvwxyz')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '𝗮𝗯𝗰𝗱𝗲𝗳𝗴𝗵𝗶𝗷𝗸𝗹𝗺𝗻𝗼𝗽𝗾𝗿𝘀𝘁𝘂𝘃𝘄𝘅𝘆𝘇', 'abcdefghijklmnopqrstuvwxyz')" - "-": # 0xf34e - 0xf367 - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')" - "𝘈-𝘡": # 0x1d608 - 0x1d621 # - t: "italic" - - spell: "translate('.', '𝘈𝘉𝘊𝘋𝘌𝘍𝘎𝘏𝘐𝘑𝘒𝘓𝘔𝘕𝘖𝘗𝘘𝘙𝘚𝘛𝘜𝘝𝘞𝘟𝘠𝘡', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" + - SPELL: "translate('.', '𝘈𝘉𝘊𝘋𝘌𝘍𝘎𝘏𝘐𝘑𝘒𝘓𝘔𝘕𝘖𝘗𝘘𝘙𝘚𝘛𝘜𝘝𝘞𝘟𝘠𝘡', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" - "-": # 0xf368 - 0xf381 # - t: "italic" - - spell: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" + - SPELL: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" - "𝘢-𝘻": # 0x1d622 - 0x1d63b # - t: "italic" - - spell: "translate('.', '𝘢𝘣𝘤𝘥𝘦𝘧𝘨𝘩𝘪𝘫𝘬𝘭𝘮𝘯𝘰𝘱𝘲𝘳𝘴𝘵𝘶𝘷𝘸𝘹𝘺𝘻', 'abcdefghijklmnopqrstuvwxyz')" + - SPELL: "translate('.', '𝘢𝘣𝘤𝘥𝘦𝘧𝘨𝘩𝘪𝘫𝘬𝘭𝘮𝘯𝘰𝘱𝘲𝘳𝘴𝘵𝘶𝘷𝘸𝘹𝘺𝘻', 'abcdefghijklmnopqrstuvwxyz')" - "-": # 0xf382 - 0xf39b # - t: "italic" - - spell: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')" + - SPELL: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')" - "𝘼-𝙕": # 0x1d63c - 0x1d655 # - t: "bold italic" - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '𝘼𝘽𝘾𝘿𝙀𝙁𝙂𝙃𝙄𝙅𝙆𝙇𝙈𝙉𝙊𝙋𝙌𝙍𝙎𝙏𝙐𝙑𝙒𝙓𝙔𝙕', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '𝘼𝘽𝘾𝘿𝙀𝙁𝙂𝙃𝙄𝙅𝙆𝙇𝙈𝙉𝙊𝙋𝙌𝙍𝙎𝙏𝙐𝙑𝙒𝙓𝙔𝙕', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" - "-": # 0xf39c - 0xf3b5 # - t: "bold italic" - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" - "𝙖-𝙯": # 0x1d656 - 0x1d66f # - t: "bold italic" - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '𝙖𝙗𝙘𝙙𝙚𝙛𝙜𝙝𝙞𝙟𝙠𝙡𝙢𝙣𝙤𝙥𝙦𝙧𝙨𝙩𝙪𝙫𝙬𝙭𝙮𝙯', 'abcdefghijklmnopqrstuvwxyz')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '𝙖𝙗𝙘𝙙𝙚𝙛𝙜𝙝𝙞𝙟𝙠𝙡𝙢𝙣𝙤𝙥𝙦𝙧𝙨𝙩𝙪𝙫𝙬𝙭𝙮𝙯', 'abcdefghijklmnopqrstuvwxyz')" - "-": # 0xf3b6 - 0xf3cf # - t: "bold italic" - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')" - "𝙰-𝚉": # 0x1d670 - 0x1d689 - - spell: "translate('.', '𝙰𝙱𝙲𝙳𝙴𝙵𝙶𝙷𝙸𝙹𝙺𝙻𝙼𝙽𝙾𝙿𝚀𝚁𝚂𝚃𝚄𝚅𝚆𝚇𝚈𝚉', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" + - SPELL: "translate('.', '𝙰𝙱𝙲𝙳𝙴𝙵𝙶𝙷𝙸𝙹𝙺𝙻𝙼𝙽𝙾𝙿𝚀𝚁𝚂𝚃𝚄𝚅𝚆𝚇𝚈𝚉', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" - "-": # 0xf3d0 - 0xf3e9 - - spell: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" + - SPELL: "translate('.', '', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" - "𝚊-𝚣": # 0x1d68a - 0x1d6a3 - - spell: "translate('.', '𝚊𝚋𝚌𝚍𝚎𝚏𝚐𝚑𝚒𝚓𝚔𝚕𝚖𝚗𝚘𝚙𝚚𝚛𝚜𝚝𝚞𝚟𝚠𝚡𝚢𝚣', 'abcdefghijklmnopqrstuvwxyz')" + - SPELL: "translate('.', '𝚊𝚋𝚌𝚍𝚎𝚏𝚐𝚑𝚒𝚓𝚔𝚕𝚖𝚗𝚘𝚙𝚚𝚛𝚜𝚝𝚞𝚟𝚠𝚡𝚢𝚣', 'abcdefghijklmnopqrstuvwxyz')" - "-": # 0xf3ea - 0xf403 - - spell: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')" + - SPELL: "translate('.', '', 'abcdefghijklmnopqrstuvwxyz')" - - "": [t: "i без точки"] # 0xf404 - - "𝚤": [t: "i без точки"] # 0x1d6a4 - - "𝚥": [t: "j без точки"] # 0x1d6a5 + - "": [T: "i без точки"] # 0xf404 + - "𝚤": [T: "i без точки"] # 0x1d6a4 + - "𝚥": [T: "j без точки"] # 0x1d6a5 - "𝚨-𝛀": # 0x1d6a8 - 0x1d6c0 - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '𝚨𝚩𝚪𝚫𝚬𝚭𝚮𝚯𝚰𝚱𝚲𝚳𝚴𝚵𝚶𝚷𝚸𝚹𝚺𝚻𝚼𝚽𝚾𝚿𝛀', 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ΢ΣΤΥΦΧΨΩ')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '𝚨𝚩𝚪𝚫𝚬𝚭𝚮𝚯𝚰𝚱𝚲𝚳𝚴𝚵𝚶𝚷𝚸𝚹𝚺𝚻𝚼𝚽𝚾𝚿𝛀', 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΘΣΤΥΦΧΨΩ')" - "-": # 0xf408 - 0xf420 - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '', 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ΢ΣΤΥΦΧΨΩ')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '', 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΘΣΤΥΦΧΨΩ')" - "𝛂-𝛚": # 0x1d6c2 - 0x1d6da - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '𝛂𝛃𝛄𝛅𝛆𝛇𝛈𝛉𝛊𝛋𝛌𝛍𝛎𝛏𝛐𝛑𝛒𝛓𝛔𝛕𝛖𝛗𝛘𝛙𝛚', 'αβγδεζηθικλμνξοπρςστυφχψω')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '𝛂𝛃𝛄𝛅𝛆𝛇𝛈𝛉𝛊𝛋𝛌𝛍𝛎𝛏𝛐𝛑𝛒𝛓𝛔𝛕𝛖𝛗𝛘𝛙𝛚', 'αβγδεζηθικλμνξοπρςστυφχψω')" - "-": # 0xf422 - 0xf43a - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '', 'αβγδεζηθικλμνξοπρςστυφχψω')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '', 'αβγδεζηθικλμνξοπρςστυφχψω')" - - "": [t: "жирная набла"] # 0xf421 - - "𝛁": [t: "жирная набла"] # 0x1d6c1 + - "": [T: "жирная набла"] # 0xf421 + - "𝛁": [T: "жирная набла"] # 0x1d6c1 - - "𝛡𝝕𝞏𝟉": [t: "жирное пи"] - - "𝛛𝛜𝛝𝛞𝛟𝛠": # 0x1D6DB - 0x1D6E0 + - "𝛛𝛜𝛝𝛞𝛟𝛠𝛡": - test: - if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '𝛛𝛜𝛝𝛞𝛟𝛠', '∂εθκφρ')" + if: "'.' = '𝛡'" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирного пи', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирное пи', 'жирное пи'))"] + else: + - test: + if: "not($IgnoreBold)" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '𝛛𝛜𝛝𝛞𝛟𝛠𝛡', '∂εθκφρπ')" - - "": # 0xF43C - 0xF440 + - "": - test: - if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '', '∂εθκφρ')" + if: "'.' = ''" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирного пи', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирное пи', 'жирное пи'))"] + else: + - test: + if: "not($IgnoreBold)" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '', '∂εθκφρπ')" - "𝛢-𝛺": # 0x1d6e2 - 0x1d6fa # - t: "italic" - - spell: "translate('.', '𝛢𝛣𝛤𝛥𝛦𝛧𝛨𝛩𝛪𝛫𝛬𝛭𝛮𝛯𝛰𝛱𝛲𝛳𝛴𝛵𝛶𝛷𝛸𝛹𝛺', 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ΢ΣΤΥΦΧΨΩ')" + - SPELL: "translate('.', '𝛢𝛣𝛤𝛥𝛦𝛧𝛨𝛩𝛪𝛫𝛬𝛭𝛮𝛯𝛰𝛱𝛲𝛳𝛴𝛵𝛶𝛷𝛸𝛹𝛺', 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΘΣΤΥΦΧΨΩ')" - "-": # 0xf442 - 0xf45a # - t: "italic" - - spell: "translate('.', '', 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ΢ΣΤΥΦΧΨΩ')" + - SPELL: "translate('.', '', 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΘΣΤΥΦΧΨΩ')" - "𝛼-𝜔": # 0x1d6fc - 0x1d714 # - t: "italic" - - spell: "translate('.', '𝛼𝛽𝛾𝛿𝜀𝜁𝜂𝜃𝜄𝜅𝜆𝜇𝜈𝜉𝜊𝜋𝜌𝜍𝜎𝜏𝜐𝜑𝜒𝜓𝜔', 'αβγδεζηθικλμνξοπρςστυφχψω')" + - SPELL: "translate('.', '𝛼𝛽𝛾𝛿𝜀𝜁𝜂𝜃𝜄𝜅𝜆𝜇𝜈𝜉𝜊𝜋𝜌𝜍𝜎𝜏𝜐𝜑𝜒𝜓𝜔', 'αβγδεζηθικλμνξοπρςστυφχψω')" - "-": # 0xf45c - 0xf474 # - t: "italic" - - spell: "translate('.', '', 'αβγδεζηθικλμνξοπρςστυφχψω')" + - SPELL: "translate('.', '', 'αβγδεζηθικλμνξοπρςστυφχψω')" - - "": [t: "курсивная набла"] # 0xf45b - - "𝛻": [t: "курсивная набла"] # 0x1d6fb + - "": [T: "курсивная набла"] # 0xf45b + - "𝛻": [T: "курсивная набла"] # 0x1d6fb - "𝜕𝜖𝜗𝜘𝜙𝜚𝜛": # 0x1d715 - 0x1d71b # - t: "italic" - - spell: "translate('.', '𝜕𝜖𝜗𝜘𝜙𝜚𝜛', '∂εθκφρπ')" + - SPELL: "translate('.', '𝜕𝜖𝜗𝜘𝜙𝜚𝜛', '∂εθκφρπ')" - "": # 0xf475 - 0xf47b # - t: "italic" - - spell: "translate('.', '', '∂εθκφρπ')" + - SPELL: "translate('.', '', '∂εθκφρπ')" - "𝜜-𝜴": # 0x1d71c - 0x1d734 # - t: "bold italic" - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '𝜜𝜝𝜞𝜟𝜠𝜡𝜢𝜣𝜤𝜥𝜦𝜧𝜨𝜩𝜪𝜫𝜬𝜭𝜮𝜯𝜰𝜱𝜲𝜳𝜴', 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ΢ΣΤΥΦΧΨΩ')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '𝜜𝜝𝜞𝜟𝜠𝜡𝜢𝜣𝜤𝜥𝜦𝜧𝜨𝜩𝜪𝜫𝜬𝜭𝜮𝜯𝜰𝜱𝜲𝜳𝜴', 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΘΣΤΥΦΧΨΩ')" - "-": # 0xf47c - 0xf494 # - t: "bold italic" - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '', 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ΢ΣΤΥΦΧΨΩ')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '', 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΘΣΤΥΦΧΨΩ')" - "𝜶-𝝎": # 0x1d736 - 0x1d74e # - t: "bold italic" - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '𝜶𝜷𝜸𝜹𝜺𝜻𝜼𝜽𝜾𝜿𝝀𝝁𝝂𝝃𝝄𝝅𝝆𝝇𝝈𝝉𝝊𝝋𝝌𝝍𝝎', 'αβγδεζηθικλμνξοπρςστυφχψω')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '𝜶𝜷𝜸𝜹𝜺𝜻𝜼𝜽𝜾𝜿𝝀𝝁𝝂𝝃𝝄𝝅𝝆𝝇𝝈𝝉𝝊𝝋𝝌𝝍𝝎', 'αβγδεζηθικλμνξοπρςστυφχψω')" - "-": # 0xf496 - 0xf4ae # - t: "bold italic" - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '', 'αβγδεζηθικλμνξοπρςστυφχψω')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '', 'αβγδεζηθικλμνξοπρςστυφχψω')" - - "𝝏𝝐𝝑𝝒𝝓𝝔": # 0x1d74f - 0x1d754 - # - t: "bold italic" + - "𝝏𝝐𝝑𝝒𝝓𝝔𝝕": - test: - if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '𝝏𝝐𝝑𝝒𝝓𝝔', '∂εθκφρ')" + if: "'.' = '𝝕'" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирного пи', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирное пи', 'жирное пи'))"] + else: + - test: + if: "not($IgnoreBold)" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '𝝏𝝐𝝑𝝒𝝓𝝔𝝕', '∂εθκφρπ')" - - "": # 0xf422 - 0xf439 - # - t: "bold italic" + - "": - test: - if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '', '∂εθκφρ')" + if: "'.' = ''" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирного пи', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирное пи', 'жирное пи'))"] + else: + - test: + if: "not($IgnoreBold)" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '', '∂εθκφρπ')" - - "𝜵": [t: "жирная курсивная набла"] # 0x1d735 - - "": [t: "жирная курсивная набла"] # 0xf495 + - "𝜵": [T: "жирная курсивная набла"] # 0x1d735 + - "": [T: "жирная курсивная набла"] # 0xf495 - "𝝖-𝝮": # 0x1d756 - 0x1d76e - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '𝝖𝝗𝝘𝝙𝝚𝝛𝝜𝝝𝝞𝝟𝝠𝝡𝝢𝝣𝝤𝝥𝝦𝝧𝝨𝝩𝝪𝝫𝝬𝝭𝝮', 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ΢ΣΤΥΦΧΨΩ')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '𝝖𝝗𝝘𝝙𝝚𝝛𝝜𝝝𝝞𝝟𝝠𝝡𝝢𝝣𝝤𝝥𝝦𝝧𝝨𝝩𝝪𝝫𝝬𝝭𝝮', 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΘΣΤΥΦΧΨΩ')" - "-": # 0xf4b6 - 0xf4ce - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '', 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ΢ΣΤΥΦΧΨΩ')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '', 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΘΣΤΥΦΧΨΩ')" - "𝝰-𝞈": # 0x1d770 - 0x1d788 - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '𝝰𝝱𝝲𝝳𝝴𝝵𝝶𝝷𝝸𝝹𝝺𝝻𝝼𝝽𝝾𝝿𝞀𝞁𝞂𝞃𝞄𝞅𝞆𝞇𝞈', 'αβγδεζηθικλμνξοπρςστυφχψω')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '𝝰𝝱𝝲𝝳𝝴𝝵𝝶𝝷𝝸𝝹𝝺𝝻𝝼𝝽𝝾𝝿𝞀𝞁𝞂𝞃𝞄𝞅𝞆𝞇𝞈', 'αβγδεζηθικλμνξοπρςστυφχψω')" - "-": # 0xf4d0 - 0xf4e8 - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '', 'αβγδεζηθικλμνξοπρςστυφχψω')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '', 'αβγδεζηθικλμνξοπρςστυφχψω')" - - "𝞉𝞊𝞋𝞌𝞍𝞎": # 0x1d789 - 0x1d78e + - "𝞉𝞊𝞋𝞌𝞍𝞎𝞏": - test: - if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '𝞉𝞊𝞋𝞌𝞍𝞎', '∂εθκφρ')" + if: "'.' = '𝞏'" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирного пи', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирное пи', 'жирное пи'))"] + else: + - test: + if: "not($IgnoreBold)" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '𝞉𝞊𝞋𝞌𝞍𝞎𝞏', '∂εθκφρπ')" - - "": # 0xf4e9 - 0xf4ee + - "": - test: - if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '', '∂εθκφρ')" + if: "'.' = ''" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирного пи', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирное пи', 'жирное пи'))"] + else: + - test: + if: "not($IgnoreBold)" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '', '∂εθκφρπ')" - - "": [t: "жирная набла"] # 0xf4cf - - "𝝯": [t: "жирная набла"] # 0x1d76f + - "": [T: "жирная набла"] # 0xf4cf + - "𝝯": [T: "жирная набла"] # 0x1d76f - "𝞐-𝞨": # 0x1d790 - 0x1d7a8 # - t: "bold italic" - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '𝞐𝞑𝞒𝞓𝞔𝞕𝞖𝞗𝞘𝞙𝞚𝞛𝞜𝞝𝞞𝞟𝞠𝞡𝞢𝞣𝞤𝞥𝞦𝞧𝞨', 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ΢ΣΤΥΦΧΨΩ')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '𝞐𝞑𝞒𝞓𝞔𝞕𝞖𝞗𝞘𝞙𝞚𝞛𝞜𝞝𝞞𝞟𝞠𝞡𝞢𝞣𝞤𝞥𝞦𝞧𝞨', 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΘΣΤΥΦΧΨΩ')" - "-": # 0xf4f0 - 0xf508 # - t: "bold italic" - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '', 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ΢ΣΤΥΦΧΨΩ')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '', 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΘΣΤΥΦΧΨΩ')" - "𝞪-𝟂": # 0x1d7aa - 0x1d7c2 # - t: "bold italic" - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '𝞪𝞫𝞬𝞭𝞮𝞯𝞰𝞱𝞲𝞳𝞴𝞵𝞶𝞷𝞸𝞹𝞺𝞻𝞼𝞽𝞾𝞿𝟀𝟁𝟂', 'αβγδεζηθικλμνξοπρςστυφχψω')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '𝞪𝞫𝞬𝞭𝞮𝞯𝞰𝞱𝞲𝞳𝞴𝞵𝞶𝞷𝞸𝞹𝞺𝞻𝞼𝞽𝞾𝞿𝟀𝟁𝟂', 'αβγδεζηθικλμνξοπρςστυφχψω')" - "-": # 0xf50a - 0xf522 # - t: "bold italic" - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '', 'αβγδεζηθικλμνξοπρςστυφχψω')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '', 'αβγδεζηθικλμνξοπρςστυφχψω')" - - "𝟃𝟄𝟅𝟆𝟇𝟈": # 0x1d7c3 - 0x1d7c8 - # - t: "bold italic" + - "𝟃𝟄𝟅𝟆𝟇𝟈𝟉": - test: - if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '𝟃𝟄𝟅𝟆𝟇𝟈', '∂εθκφρ')" + if: "'.' = '𝟉'" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирного пи', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирное пи', 'жирное пи'))"] + else: + - test: + if: "not($IgnoreBold)" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '𝟃𝟄𝟅𝟆𝟇𝟈𝟉', '∂εθκφρπ')" - - "": # 0xf523 - 0xf528 - # - t: "bold italic" + - "": - test: - if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '', '∂εθκφρ')" + if: "'.' = ''" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирного пи', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирное пи', 'жирное пи'))"] + else: + - test: + if: "not($IgnoreBold)" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '', '∂εθκφρπ')" - - "": [t: "жирная набла"] # 0xf509 - - "𝞩": [t: "жирная набла"] # 0x1d7a9 + - "": [T: "жирная набла"] # 0xf509 + - "𝞩": [T: "жирная набла"] # 0x1d7a9 - "-": # 0xf52e - 0xf537 (old MathType) - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '', '0123456789')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '', '0123456789')" - "𝟎-𝟗": # 0x1d7ce - 0x1d7d7 - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '𝟎𝟏𝟐𝟑𝟒𝟓𝟔𝟕𝟖𝟗', '0123456789')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '𝟎𝟏𝟐𝟑𝟒𝟓𝟔𝟕𝟖𝟗', '0123456789')" - "-": # 0xf52e - 0xf537 (old MathType) - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '', '0123456789')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '', '0123456789')" - "𝟬-𝟵": # 0x1D7EC - 0x1D7F5 - test: if: "not($IgnoreBold)" - then: [t: "жирная"] - - spell: "translate('.', '𝟬𝟭𝟮𝟯𝟰𝟱𝟲𝟳𝟴𝟵', '0123456789')" + then: [x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'жирной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'жирную', 'жирная'))"] + - SPELL: "translate('.', '𝟬𝟭𝟮𝟯𝟰𝟱𝟲𝟳𝟴𝟵', '0123456789')" - "-": # 0xf556 - 0xf55f (old MathType) - - spell: "translate('.', '', '0123456789')" + - SPELL: "translate('.', '', '0123456789')" - "𝟢-𝟫": # 0x1d7e2 - 0x1d7eb - - spell: "translate('.', '𝟢𝟣𝟤𝟥𝟦𝟧𝟨𝟩𝟪𝟫', '0123456789')" + - SPELL: "translate('.', '𝟢𝟣𝟤𝟥𝟦𝟧𝟨𝟩𝟪𝟫', '0123456789')" - "𝟶-𝟿": # 0x1d7f6 - 0x1d7ff - - spell: "translate('.', '𝟶𝟷𝟸𝟹𝟺𝟻𝟼𝟽𝟾𝟿', '0123456789')" - - - - "": [t: "неизвестный символ"] # 0xf700 - - "": [t: "нижний правый и нижний левый треугольники"] # 0xf726 - - "": [t: "удлинитель горизонтального многоточия"] # 0xf72d - - "": [t: "удлинитель горизонтального многоточия по средней линии"] # 0xf72e - - "": [t: "удлинитель радикала"] # 0xf8e5 - - "": [t: "удлинитель вертикальной стрелки"] # 0xf8e6 - - "": [t: "удлинитель горизонтальной стрелки"] # 0xf8e7 - - "": [t: "знак зарегистрированного товарного знака без засечек"] # 0xf8e8 - - "": [t: "знак авторского права без засечек"] # 0xf8e9 - - "": [t: "знак торговой марки без засечек"] # 0xf8ea - - "": [t: "верхняя часть левой скобки"] # 0xf8eb - - "": [t: "удлинитель левой скобки"] # 0xf8ec - - "": [t: "нижняя часть левой скобки"] # 0xf8ed - - "": [t: "верхняя часть левой квадратной скобки"] # 0xf8ee - - "": [t: "удлинитель левой квадратной скобки"] # 0xf8ef - - "": [t: "нижняя часть левой квадратной скобки"] # 0xf8f0 - - "": [t: "верхняя часть левой фигурной скобки"] # 0xf8f1 - - "": [t: "средняя часть левой фигурной скобки"] # 0xf8f2 - - "": [t: "нижняя часть левой фигурной скобки"] # 0xf8f3 - - "": [t: "удлинитель фигурной скобки"] # 0xf8f4 - - "": [t: "удлинитель интеграла"] # 0xf8f5 - - "": [t: "верхняя часть правой скобки"] # 0xf8f6 - - "": [t: "удлинитель правой скобки"] # 0xf8f7 - - "": [t: "нижняя часть правой скобки"] # 0xf8f8 - - "": [t: "верхняя часть правой квадратной скобки"] # 0xf8f9 - - "": [t: "удлинитель правой квадратной скобки"] # 0xf8fa - - "": [t: "нижняя часть правой квадратной скобки"] # 0xf8fb - - "": [t: "верхняя часть правой фигурной скобки"] # 0xf8fc - - "": [t: "средняя часть правой фигурной скобки"] # 0xf8fd - - "": [t: "нижняя часть правой фигурной скобки"] # 0xf8fe - - "": [t: "логотип Apple"] # 0xf8ff - - "ff": [t: "ff"] # 0xfb00 - - "fi": [t: "fi"] # 0xfb01 - - "fl": [t: "fl"] # 0xfb02 - - "ffi": [t: "ffi"] # 0xfb03 - - "ffl": [t: "ffl"] # 0xfb04 - - "ſt": [t: "ft"] # 0xfb05 - - "st": [t: "st"] # 0xfb06 - - "﬩": [t: "альтернативный знак плюса в иврите"] # 0xfb29 - - "︠": [t: "левая половина лигатуры"] # 0xfe20 - - "︡": [t: "правая половина лигатуры"] # 0xfe21 - - "︢": [t: "левая половина двойной тильды"] # 0xfe22 - - "︣": [t: "правая половина двойной тильды"] # 0xfe23 - - "︤": [t: "левая половина макрона"] # 0xfe24 - - "︥": [t: "правая половина макрона"] # 0xfe25 - - "︦": [t: "соединительный макрон"] # 0xfe26 - - "︵": [t: "верхняя скобка"] # 0xfe35 - - "︶": [t: "нижняя скобка"] # 0xfe36 - - "︷": [t: "верхняя фигурная скобка"] # 0xfe37 - - "︸": [t: "нижняя фигурная скобка"] # 0xfe38 - - "︿": [t: "верхняя угловая скобка"] # 0xfe3f - - "﹀": [t: "нижняя угловая скобка"] # 0xfe40 - - "﹡": [t: "маленькая звёздочка"] # 0xfe61 - - "﹢": [t: "маленький плюс"] # 0xfe62 - - "﹣": [t: "маленький минус"] # 0xfe63 - - "﹤": [t: "маленький знак меньше"] # 0xfe64 - - "﹥": [t: "маленький знак больше"] # 0xfe65 - - "﹦": [t: "маленький знак равенства"] # 0xfe66 - - "+": [t: "полноширинный знак плюс"] # 0xff0b - - "<": [t: "меньше"] # 0xff1c - - "=": [t: "равно"] # 0xff1d - - ">": [t: "больше"] # 0xff1e - - "\": [t: "обратная косая черта"] # 0xff3c - - "^": [t: "крышка"] # 0xff3e + - SPELL: "translate('.', '𝟶𝟷𝟸𝟹𝟺𝟻𝟼𝟽𝟾𝟿', '0123456789')" + + + - "": [T: "неизвестный символ"] # 0xf700 + - "": [T: "нижний правый и нижний левый треугольники"] # 0xf726 + - "": [T: "удлинитель горизонтального многоточия"] # 0xf72d + - "": [T: "удлинитель горизонтального многоточия по средней линии"] # 0xf72e + - "": [T: "удлинитель радикала"] # 0xf8e5 + - "": [T: "удлинитель вертикальной стрелки"] # 0xf8e6 + - "": [T: "удлинитель горизонтальной стрелки"] # 0xf8e7 + - "": [T: "знак зарегистрированного товарного знака без засечек"] # 0xf8e8 + - "": [T: "знак авторского права без засечек"] # 0xf8e9 + - "": [T: "знак торговой марки без засечек"] # 0xf8ea + - "": [T: "верхняя часть левой скобки"] # 0xf8eb + - "": [T: "удлинитель левой скобки"] # 0xf8ec + - "": [T: "нижняя часть левой скобки"] # 0xf8ed + - "": [T: "верхняя часть левой квадратной скобки"] # 0xf8ee + - "": [T: "удлинитель левой квадратной скобки"] # 0xf8ef + - "": [T: "нижняя часть левой квадратной скобки"] # 0xf8f0 + - "": [T: "верхняя часть левой фигурной скобки"] # 0xf8f1 + - "": [T: "средняя часть левой фигурной скобки"] # 0xf8f2 + - "": [T: "нижняя часть левой фигурной скобки"] # 0xf8f3 + - "": [T: "удлинитель фигурной скобки"] # 0xf8f4 + - "": [T: "удлинитель интеграла"] # 0xf8f5 + - "": [T: "верхняя часть правой скобки"] # 0xf8f6 + - "": [T: "удлинитель правой скобки"] # 0xf8f7 + - "": [T: "нижняя часть правой скобки"] # 0xf8f8 + - "": [T: "верхняя часть правой квадратной скобки"] # 0xf8f9 + - "": [T: "удлинитель правой квадратной скобки"] # 0xf8fa + - "": [T: "нижняя часть правой квадратной скобки"] # 0xf8fb + - "": [T: "верхняя часть правой фигурной скобки"] # 0xf8fc + - "": [T: "средняя часть правой фигурной скобки"] # 0xf8fd + - "": [T: "нижняя часть правой фигурной скобки"] # 0xf8fe + - "": [T: "логотип Apple"] # 0xf8ff + - "ff": [T: "ff"] # 0xfb00 + - "fi": [T: "fi"] # 0xfb01 + - "fl": [T: "fl"] # 0xfb02 + - "ffi": [T: "ffi"] # 0xfb03 + - "ffl": [T: "ffl"] # 0xfb04 + - "ſt": [T: "ft"] # 0xfb05 + - "st": [T: "st"] # 0xfb06 + - "﬩": [T: "альтернативный знак плюса в иврите"] # 0xfb29 + - "︠": [T: "левая половина лигатуры"] # 0xfe20 + - "︡": [T: "правая половина лигатуры"] # 0xfe21 + - "︢": [T: "левая половина двойной тильды"] # 0xfe22 + - "︣": [T: "правая половина двойной тильды"] # 0xfe23 + - "︤": [T: "левая половина макрона"] # 0xfe24 + - "︥": [T: "правая половина макрона"] # 0xfe25 + - "︦": [T: "соединительный макрон"] # 0xfe26 + - "︵": [T: "верхняя скобка"] # 0xfe35 + - "︶": [T: "нижняя скобка"] # 0xfe36 + - "︷": [T: "верхняя фигурная скобка"] # 0xfe37 + - "︸": [T: "нижняя фигурная скобка"] # 0xfe38 + - "︿": [T: "верхняя угловая скобка"] # 0xfe3f + - "﹀": [T: "нижняя угловая скобка"] # 0xfe40 + - "﹡": [T: "маленькая звёздочка"] # 0xfe61 + - "﹢": [T: "маленький плюс"] # 0xfe62 + - "﹣": [T: "маленький минус"] # 0xfe63 + - "﹤": [T: "маленький знак меньше"] # 0xfe64 + - "﹥": [T: "маленький знак больше"] # 0xfe65 + - "﹦": [T: "маленький знак равенства"] # 0xfe66 + - "+": [T: "полноширинный знак плюс"] # 0xff0b + - "<": [T: "меньше"] # 0xff1c + - "=": [T: "равно"] # 0xff1d + - ">": [T: "больше"] # 0xff1e + - "\": [T: "обратная косая черта"] # 0xff3c + - "^": [T: "крышка"] # 0xff3e - "|": # 0xff5c # note: for ClearSpeak and SimpleSpeak, "|" inside of sets is handled at the mrow level, same for 'sets' - with: @@ -3782,43 +3796,43 @@ - if: "$SpeechStyle != 'ClearSpeak'" then_test: if: "$DefaultToGiven" - then: [t: "при условии"] - else: [t: "вертикальная черта"] + then: [T: "при условии"] + else: [T: "вертикальная черта"] - else_if: "not(preceding-sibling::*) or not(following-sibling::*)" - then: [t: "вертикальная черта"] + then: [T: "вертикальная черта"] - else_if: "$ClearSpeak_VerticalLine = 'SuchThat'" - then: [t: "такой, что"] + then: [T: "такой, что"] - else_if: "$ClearSpeak_VerticalLine = 'Given' or $DefaultToGiven" - then: [t: "при условии"] - - else: [t: "делит"] - - "~": [t: "тильда"] # 0xff5e - - "¬": [t: "не"] # 0xffe2 - - "←": [t: "стрелка влево"] # 0xffe9 - - "↑": [t: "стрелка вверх"] # 0xffea - - "→": [t: "стрелка вправо"] # 0xffeb - - "↓": [t: "стрелка вниз"] # 0xffec - - "": [t: "неизвестный или отсутствующий объект"] # 0xfffc - - "�": [t: "неизвестный или отсутствующий символ"] # 0xfffd - - - "🣑": [t: "находится в равновесии с"] # 0x1F8D1 - - "🣒": [t: "находится в равновесии, смещённом вправо, с"] # 0x1F8D2 - - "🣓": [t: "находится в равновесии, смещённом влево, с"] # 0x1F8D3 + then: [T: "при условии"] + - else: [T: "является делителем"] + - "~": [T: "тильда"] # 0xff5e + - "¬": [T: "не"] # 0xffe2 + - "←": [T: "стрелка влево"] # 0xffe9 + - "↑": [T: "стрелка вверх"] # 0xffea + - "→": [T: "стрелка вправо"] # 0xffeb + - "↓": [T: "стрелка вниз"] # 0xffec + - "": [T: "неизвестный или отсутствующий объект"] # 0xfffc + - "�": [T: "неизвестный или отсутствующий символ"] # 0xfffd + + - "🣑": [T: "находится в равновесии с"] # 0x1F8D1 + - "🣒": [T: "находится в равновесии, смещённом вправо, с"] # 0x1F8D2 + - "🣓": [T: "находится в равновесии, смещённом влево, с"] # 0x1F8D3 # MathJax v4 adopted these PUA values for some partial chem bonds that aren't in Unicode - - "\uE410": [t: "частичная связь "] # 0xe410 - - "\uE411": [t: "двойная частичная связь "] # 0xe411 - - "\uE412": [t: "тройная частичная связь "] # 0xe412 + - "\uE410": [T: "частичная связь "] # 0xe410 + - "\uE411": [T: "двойная частичная связь "] # 0xe411 + - "\uE412": [T: "тройная частичная связь "] # 0xe412 # MathJax v4 also adopted these PUA values for some arrows thar are in Unicode # Hopefully these will be exported properly in future versions of MathJax - - "\uE428": [spell: "'⟵'"] # 0xe428 defer to def of arrow - - "\uE429": [spell: "'⟶'"] # 0xe429 defer to def of arrow - - "\uE42A": [spell: "'⟷'"] # 0xe42a defer to def of arrow - - "\uE408": [spell: "'🣑'"] # 0xe408 defer to def of arrow - - "\uE409": [spell: "'🣒'"] # 0xe409 defer to def of arrow - - "\uE40A": [spell: "'🣓'"] # 0xe40a defer to def of arrow - - "\uE42B": [spell: "'⇄'"] # 0xe42b defer to def of arrow - - "\uE42C": [spell: "'←'"] # 0xe42c defer to def of arrow - - "\uE42D": [spell: "'→'"] # 0xe42d defer to def of arrow - - "\uE42E": [spell: "'⇄'"] # 0xe42e defer to def of arrow + - "\uE428": [SPELL: "'⟵'"] # 0xe428 defer to def of arrow + - "\uE429": [SPELL: "'⟶'"] # 0xe429 defer to def of arrow + - "\uE42A": [SPELL: "'⟷'"] # 0xe42a defer to def of arrow + - "\uE408": [SPELL: "'🣑'"] # 0xe408 defer to def of arrow + - "\uE409": [SPELL: "'🣒'"] # 0xe409 defer to def of arrow + - "\uE40A": [SPELL: "'🣓'"] # 0xe40a defer to def of arrow + - "\uE42B": [SPELL: "'⇆'"] # 0xe42b mhchemlongleftrightarrows + - "\uE42C": [SPELL: "'←'"] # 0xe42c defer to def of arrow + - "\uE42D": [SPELL: "'→'"] # 0xe42d defer to def of arrow + - "\uE42E": [SPELL: "'↔'"] # 0xe42e mhchemleftrightarrow diff --git a/Rules/Languages/ru/unicode.yaml b/Rules/Languages/ru/unicode.yaml index 66401b086..f7b8731db 100644 --- a/Rules/Languages/ru/unicode.yaml +++ b/Rules/Languages/ru/unicode.yaml @@ -2,112 +2,104 @@ # Note to translators: # most languages don't have two ways to pronounce 'a' -- if not need, remove the rules and change "B-Z" to "A-Z" # some languages say the word for "uppercase" after the letter. Make sure to change that where appropriate by moving some code around - - "a": [t: "а"] - - "b": [t: "бэ"] - - "c": [t: "цэ"] - - "d": [t: "дэ"] - - "e": [t: "е"] - - "f": [t: "эф"] - - "g": [t: "джи"] - - "h": [t: "аш"] - - "i": [t: "и"] - - "j": [t: "джей"] - - "k": [t: "ка"] - - "l": [t: "эль"] - - "m": [t: "эм"] - - "n": [t: "эн"] - - "o": [t: "о"] - - "p": [t: "пэ"] - - "q": [t: "ку"] - - "r": [t: "эр"] - - "s": [t: "эс"] - - "t": [t: "тэ"] - - "u": [t: "у"] - - "v": [t: "вэ"] - - "w": [t: "дабл-ю"] - - "x": [t: "икс"] - - "y": [t: "игрек"] - - "z": [t: "зэт"] - - # Capital letters are a little tricky: users can pick their favorite word (something that was requested) and - # screen readers have options to use pitch changes or beeps instead of or in addition to say "cap" - # Also, if a user can see the screen, they probably don't need to hear "cap", but if they specified an override, they must want to hear the override. + - "a": [T: "а"] + - "b-z": + - x: "DefinitionValue('.', 'Speech', 'RussianLatinLetterNames')" - - "A-Z": - - test: - if: "$CapitalLetters_Beep" - then: - - audio: - value: "beep.mp4" - replace: [] - - test: - if: "$CapitalLetters_UseWord" - then_test: - if: "$SpeechOverrides_CapitalLetters = ''" - then_test: - if: "$Impairment = 'Blindness'" - then: [t: "заглавная"] # (en: 'cap') - else: [x: "$SpeechOverrides_CapitalLetters"] - - pitch: - value: "$CapitalLetters_Pitch" - # note: processing of ranges converts '.' into the character, so it needs to be in quotes below - replace: [x: "translate('.', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')"] + - "A": + - test: + if: "$CapitalLetters_Beep" + then: + - audio: + value: "beep.mp4" + replace: [] + - test: + if: "$CapitalLetters_UseWord" + then_test: + if: "$SpeechOverrides_CapitalLetters = ''" + then_test: + if: "$Impairment = 'Blindness'" + then: [T: "заглавная"] # (en: 'cap') + else: [x: "$SpeechOverrides_CapitalLetters"] + - pitch: + value: "$CapitalLetters_Pitch" + # note: processing of ranges converts '.' into the character, so it needs to be in quotes below + replace: [x: "'а'"] + - "B-Z": + - test: + if: "$CapitalLetters_Beep" + then: + - audio: + value: "beep.mp4" + replace: [] + - test: + if: "$CapitalLetters_UseWord" + then_test: + if: "$SpeechOverrides_CapitalLetters = ''" + then_test: + if: "$Impairment = 'Blindness'" + then: [T: "заглавная"] # (en: 'cap') + else: [x: "$SpeechOverrides_CapitalLetters"] + - pitch: + value: "$CapitalLetters_Pitch" + # note: processing of ranges converts '.' into the character, so it needs to be in quotes below + replace: [x: "translate('.', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')"] - - "0-9": [t: "."] # (en: '.', google translation) + - "0-9": [T: "."] # (en: '.', google translation) - - " ": [t: " "] # 0x20 (google translation) + - " ": [T: " "] # 0x20 (google translation) - "!": # 0x21 - test: if: "ancestor-or-self::*[contains(@data-intent-property, ':literal:')]" then_test: if: "$Verbosity = 'Terse'" - then: [t: "восклицательный знак"] # 0x21 (en: 'bang', google translation) - else: [t: "восклицательный знак"] # 0x21 (en: 'exclamation point', google translation) - else: [t: "факториал"] # 0x21 (en: 'factorial', google translation) + then: [T: "восклицательный знак"] # 0x21 (en: 'bang', google translation) + else: [T: "восклицательный знак"] # 0x21 (en: 'exclamation point', google translation) + else: [T: "факториал"] # 0x21 (en: 'factorial', google translation) - - "\"": [t: "кавычка"] # 0x22 (en: 'quotation mark', google translation) - - "#": [t: "номер"] # 0x23 (en: 'number', google translation) - - "$": [t: "доллар"] # 0x24 (en: 'dollars', google translation) - - "%": [t: "процент"] # 0x25 (en: 'percent') - - "&": [t: "амперсанд"] # 0x26 (google translation) - - "'": [t: "штрих"] # 0x27 (en: 'apostrophe') + - "\"": [T: "кавычка"] # 0x22 (en: 'quotation mark', google translation) + - "#": [T: "номер"] # 0x23 (en: 'number', google translation) + - "$": [T: "доллар"] # 0x24 (en: 'dollars', google translation) + - "%": [T: "процент"] # 0x25 (en: 'percent') + - "&": [T: "амперсанд"] # 0x26 (google translation) + - "'": [T: "штрих"] # 0x27 (en: 'apostrophe') - "(": # 0x28 - test: - if: "$SpeechStyle='LiteralSpeak' or ancestor-or-self::*[contains(@data-intent-property, ':literal:')] or @data-changed='added' or ancestor::*[@data-changed='added'] or preceding-sibling::*[1][.='P'] or following-sibling::*[.='|' or .='∩' or contains(., 'and')]" - then: [t: "открывающая круглая скобка"] + then: [T: "открывающая круглая скобка"] else_test: if: $SpeechStyle = 'ClearSpeak' or $SpeechStyle = 'SimpleSpeak' then_test: if: "$Verbosity='Terse'" - then: [t: "скобка открывается"] # 0x28 (en: 'open', google translation) - else: [t: "открывающая круглая скобка"] # 0x28 (en: 'open paren', google translation) - else: [t: "левая круглая скобка"] # 0x28 (en: 'left paren', google translation) + then: [T: "скобка открывается"] # 0x28 (en: 'open', google translation) + else: [T: "открывающая круглая скобка"] # 0x28 (en: 'open paren', google translation) + else: [T: "левая круглая скобка"] # 0x28 (en: 'left paren', google translation) - ")": # 0x29 - test: - if: "$SpeechStyle='LiteralSpeak' or ancestor-or-self::*[contains(@data-intent-property, ':literal:')] or @data-changed='added' or ancestor::*[@data-changed='added'] or preceding-sibling::*[.='P' or .='|' or .='∩' or contains(., 'and')]" - then: [t: "закрывающая круглая скобка"] + then: [T: "закрывающая круглая скобка"] else_test: if: $SpeechStyle = 'ClearSpeak' or $SpeechStyle = 'SimpleSpeak' then_test: if: "$Verbosity='Terse'" - then: [t: "скобка закрывается"] # 0x29 (en: 'close', google translation) - else: [t: "закрывающая круглая скобка"] # 0x29 (en: 'close paren', google translation) - else: [t: "правая круглая скобка"] # 0x29 (en: 'right paren', google translation) + then: [T: "скобка закрывается"] # 0x29 (en: 'close', google translation) + else: [T: "закрывающая круглая скобка"] # 0x29 (en: 'close paren', google translation) + else: [T: "правая круглая скобка"] # 0x29 (en: 'right paren', google translation) - "*": # 0x2a test: if: "parent::*[name(.)='msup' or name(.)='msubsup' or name(.)='skip-super']" - then: [t: "звёздочка"] # 0x2a (en: 'star', google translation) - else: [t: "умножить"] # 0x2a (en: 'times', google translation) + then: [T: "звёздочка"] # 0x2a (en: 'star', google translation) + else: [T: "умножить"] # 0x2a (en: 'times', google translation) - "+": # 0x2b - test: if: "preceding-sibling::*[1][name(.)='mover' or name(.)='modified-variable'] and following-sibling::*[1][name(.)='mover' or name(.)='modified-variable'] and not(following-sibling::*[1][name(.)='mover' and *[2][.='→']])" then: [pause: medium] - - t: "плюс" # (en: 'plus') + - T: "плюс" # (en: 'plus') - test: if: "$ClearSpeak_Functions='None' and following-sibling::*[1][self::m:mi] and not(ancestor::*[IsBracketed(., '(', ')')])" then: [pause: short] @@ -133,25 +125,25 @@ then: [pause: short] # else silent - - "-": [t: "минус"] # 0x2d (en: 'minus') + - "-": [T: "минус"] # 0x2d (en: 'minus') - ".": # 0x2e - test: if: "parent::*[1][self::m:mn]" - then: [t: "точка"] # (en: 'point', google translation) - else: [t: "точка"] # (en: 'dot', google translation) - - "/": [t: "разделить на"] # 0x2f (en: 'divided by') - - ":": [t: "двоеточие"] # 0x3a (en: 'colon') - - ";": [t: "точка с запятой"] # 0x3b (en: 'semicolon', google translation) + then: [T: "точка"] # (en: 'point', google translation) + else: [T: "точка"] # (en: 'dot', google translation) + - "/": [T: "разделить на"] # 0x2f (en: 'divided by') + - ":": [T: "двоеточие"] # 0x3a (en: 'colon') + - ";": [T: "точка с запятой"] # 0x3b (en: 'semicolon', google translation) - "<": # 0x3c - test: if: "$Verbosity!='Terse'" - then: [t: ""] # (en: 'is', google translation) - - t: "меньше" # (en: 'less than') + then: [T: ""] # (en: 'is', google translation) + - T: "меньше" # (en: 'less than') - "=": # 0x3d - test: if: "$Verbosity!='Terse'" - then: [t: "равно"] # (en: 'is equal to', google translation) - else: [t: "равно"] # (en: 'equals') + then: [T: "равно"] # (en: 'is equal to', google translation) + else: [T: "равно"] # (en: 'equals') - test: - if: "(following-sibling::*[1][.='c'] and following-sibling::*[2][.='\u2062']) or (following-sibling::*[1][.='P'] and following-sibling::*[2][IsBracketed(., '(', ')')] and following-sibling::*[3][.='='])" @@ -162,33 +154,33 @@ - ">": # 0x3e - test: if: "$Verbosity!='Terse'" - then: [t: ""] # (en: 'is', google translation) - - t: "больше" # (en: 'greater than') - - "?": [t: "вопросительный знак"] # 0x3f (en: 'question mark', google translation) - - "@": [t: "собака"] # 0x40 (en: 'at sign', google translation) + then: [T: ""] # (en: 'is', google translation) + - T: "больше" # (en: 'greater than') + - "?": [T: "вопросительный знак"] # 0x3f (en: 'question mark', google translation) + - "@": [T: "собака"] # 0x40 (en: 'at sign', google translation) - "[": # 0x5b - test: if: $SpeechStyle = 'ClearSpeak' or $SpeechStyle = 'SimpleSpeak' - then: [t: "открывающая квадратная скобка"] # (en: 'open bracket', google translation) - else: [t: "левая квадратная скобка"] # (en: 'left bracket', google translation) - - "\\": [t: "обратная косая черта"] # 0x5c (en: 'back slash', google translation) + then: [T: "открывающая квадратная скобка"] # (en: 'open bracket', google translation) + else: [T: "левая квадратная скобка"] # (en: 'left bracket', google translation) + - "\\": [T: "обратная косая черта"] # 0x5c (en: 'back slash', google translation) - "]": # 0x5d - test: if: $SpeechStyle = 'ClearSpeak' or $SpeechStyle = 'SimpleSpeak' - then: [t: "закрывающая квадратная скобка"] # (en: 'close bracket', google translation) - else: [t: "правая квадратная скобка"] # (en: 'right bracket', google translation) + then: [T: "закрывающая квадратная скобка"] # (en: 'close bracket', google translation) + else: [T: "правая квадратная скобка"] # (en: 'right bracket', google translation) - "^": # 0x5e - test: if: "parent::m:modified-variable or parent::m:mover" - then: [t: "циркумфлекс"] # (en: 'hat', google translation) - else: [t: "крышка"] # (en: 'caret', google translation) - - "_": [t: "подчёркивание"] # 0x5f (en: 'under bar', google translation) - - "`": [t: "гравис"] # 0x60 (en: 'grave', google translation) + then: [T: "циркумфлекс"] # (en: 'hat', google translation) + else: [T: "крышка"] # (en: 'caret', google translation) + - "_": [T: "подчёркивание"] # 0x5f (en: 'under bar', google translation) + - "`": [T: "гравис"] # 0x60 (en: 'grave', google translation) - "{": # 0x7b - test: if: $SpeechStyle = 'ClearSpeak' or $SpeechStyle = 'SimpleSpeak' - then: [t: "открывающая фигурная скобка"] # (en: 'open brace', google translation) - else: [t: "левая фигурная скобка"] # (en: 'left brace', google translation) + then: [T: "открывающая фигурная скобка"] # (en: 'open brace', google translation) + else: [T: "левая фигурная скобка"] # (en: 'left brace', google translation) - "|": # 0x7c # note: for ClearSpeak and SimpleSpeak, "|" inside of sets is handled at the mrow level, same for 'sets' - with: @@ -198,56 +190,56 @@ - if: "$SpeechStyle != 'ClearSpeak'" then_test: if: "$DefaultToGiven" - then: [t: "при условии"] # (en: 'given', google translation) - else: [t: "вертикальная черта"] # (en: 'vertical line') + then: [T: "при условии"] # (en: 'given', google translation) + else: [T: "вертикальная черта"] # (en: 'vertical line') - else_if: "not(preceding-sibling::*) or not(following-sibling::*)" - then: [t: "вертикальная черта"] # (en: 'vertical line', google translation) + then: [T: "вертикальная черта"] # (en: 'vertical line', google translation) - else_if: "$ClearSpeak_VerticalLine = 'SuchThat'" - then: [t: "такой, что"] # (en: 'such that', google translation) + then: [T: "такой, что"] # (en: 'such that', google translation) - else_if: "$ClearSpeak_VerticalLine = 'Given' or $DefaultToGiven" - then: [t: "при условии"] # (en: 'given', google translation) - - else: [t: "делит"] # (en: 'divides') + then: [T: "при условии"] # (en: 'given', google translation) + - else: [T: "является делителем"] # (en: 'divides') - "}": # 0x7d - test: if: $SpeechStyle = 'ClearSpeak' or $SpeechStyle = 'SimpleSpeak' - then: [t: "закрывающая фигурная скобка"] # (en: 'close brace', google translation) - else: [t: "правая фигурная скобка"] # (en: 'right brace', google translation) + then: [T: "закрывающая фигурная скобка"] # (en: 'close brace', google translation) + else: [T: "правая фигурная скобка"] # (en: 'right brace', google translation) - - "~": [t: "тильда"] # 0x7e (en: 'tilde', google translation) + - "~": [T: "тильда"] # 0x7e (en: 'tilde', google translation) - " ": # 0xa0 - test: # could be mtext in mtd or mtext in an mrow that is a concatenation of mtd's. Is there a better solution? if: "@data-empty-in-2D and not(ancestor::*[self::m:piecewise or self::m:system-of-equations or self::m:lines])" - then: [t: "пустой"] # want to say something for fraction (etc) with empty child (en: 'empty', google translation) - else: [t: ""] + then: [T: "пустой"] # want to say something for fraction (etc) with empty child (en: 'empty', google translation) + else: [T: ""] - - "¬": [t: "не"] # 0xac (en: 'not', google translation) - - "°": [t: "градусы"] # 0xb0 (en: 'degrees', google translation) - - "±": [t: "плюс минус"] # 0xb1 (en: 'plus or minus') - - "´": [t: "акут"] # 0xb4 (en: 'acute', google translation) + - "¬": [T: "не"] # 0xac (en: 'not', google translation) + - "°": [T: "градусы"] # 0xb0 (en: 'degrees', google translation) + - "±": [T: "плюс минус"] # 0xb1 (en: 'plus or minus') + - "´": [T: "акут"] # 0xb4 (en: 'acute', google translation) - "·": # 0xB7 - test: if: "$SpeechStyle = 'LiteralSpeak' or not($SpeechStyle = 'ClearSpeak' and $ClearSpeak_MultSymbolDot = 'Auto')" - then: [t: "точка"] # (en: 'dot', google translation) - else: [t: "умножить"] # (en: 'times') + then: [T: "точка"] # (en: 'dot', google translation) + else: [T: "умножить"] # (en: 'times') - "×": # 0xd7 - test: if: "$SpeechStyle != 'ClearSpeak' or $ClearSpeak_MultSymbolX = 'Auto'" - then: [t: "умножить на"] # (en: 'times', google translation) + then: [T: "умножить на"] # (en: 'times', google translation) else_test: if: $ClearSpeak_MultSymbolX = 'By' - then: [t: "умножить на"] # (en: 'by') - else: [t: "векторное произведение"] # (en: 'cross') - - "÷": [t: "разделить на"] # 0xf7 (en: 'divided by') - - "̀": [t: "знак грависа"] # 0x300 (en: 'grave accent embellishment', google translation) - - "́": [t: "акут"] # 0x301 (en: 'acute accent embellishment', google translation) - - "̂": [t: "циркумфлекс"] # 0x302 (en: 'circumflex accent embellishment', google translation) - - "̃": [t: "тильда"] # 0x303 (en: 'tilde embellishment', google translation) - - "̄": [t: "макрон"] # 0x304 (en: 'macron embellishment', google translation) - - "̅": [t: "надчёркивание"] # 0x305 (en: 'overbar embellishment', google translation) - - "̆": [t: "брэвэ"] # 0x306 (en: 'breve', google translation) - - "̇": [t: "точка сверху"] # 0x307 (en: 'dot above embellishment', google translation) + then: [T: "умножить на"] # (en: 'by') + else: [T: "векторное произведение"] # (en: 'cross') + - "÷": [T: "разделить на"] # 0xf7 (en: 'divided by') + - "̀": [T: "знак грависа"] # 0x300 (en: 'grave accent embellishment', google translation) + - "́": [T: "акут"] # 0x301 (en: 'acute accent embellishment', google translation) + - "̂": [T: "циркумфлекс"] # 0x302 (en: 'circumflex accent embellishment', google translation) + - "̃": [T: "тильда"] # 0x303 (en: 'tilde embellishment', google translation) + - "̄": [T: "макрон"] # 0x304 (en: 'macron embellishment', google translation) + - "̅": [T: "надчёркивание"] # 0x305 (en: 'overbar embellishment', google translation) + - "̆": [T: "брэвэ"] # 0x306 (en: 'breve', google translation) + - "̇": [T: "точка сверху"] # 0x307 (en: 'dot above embellishment', google translation) # Note: ClearSpeak has pref TriangleSymbol for "Δ", but that is wrong - "Α-Ω": @@ -263,130 +255,130 @@ if: "$SpeechOverrides_CapitalLetters = ''" then_test: if: "$Impairment = 'Blindness'" - then: [t: "заглавная"] # (en: 'cap') + then: [T: "заглавная"] # (en: 'cap') else: [x: "$SpeechOverrides_CapitalLetters"] - pitch: value: "$CapitalLetters_Pitch" # note: processing of ranges converts '.' into the character, so it needs to be in quotes below replace: [x: "translate('.', 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ΢ΣΤΥΦΧΨΩ', 'αβγδεζηθικλμνξοπρςστυφχψω')"] - - "α": [t: "альфа"] # 0x3b1 (en: 'alpha') - - "β": [t: "бета"] # 0x3b2 (en: 'beta') - - "γ": [t: "гамма"] # 0x3b3 (en: 'gamma') - - "δ": [t: "дельта"] # 0x3b4 (en: 'delta') - - "ε": [t: "эпсилон"] # 0x3b5 (en: 'epsilon') - - "ζ": [t: "дзета"] # 0x3b6 (en: 'zeta') - - "η": [t: "эта"] # 0x3b7 (en: 'eta') - - "θ": [t: "тета"] # 0x3b8 (en: 'theta') - - "ι": [t: "йота"] # 0x3b9 (en: 'iota') - - "κ": [t: "каппа"] # 0x3ba (en: 'kappa') - - "λ": [t: "лямбда"] # 0x3bb (en: 'lambda') - - "μ": [t: "мю"] # 0x3bc (en: 'mu') - - "ν": [t: "ню"] # 0x3bd (en: 'nu') - - "ξ": [t: "кси"] # 0x3be (en: 'zai') - - "ο": [t: "омикрон"] # 0x3bf (en: 'omicron') - - "π": [t: "пи"] # 0x3c0 (en: 'pi') - - "ρ": [t: "ро"] # 0x3c1 (en: 'rho') - - "ς": [t: "финальная сигма"] # 0x3c2 (en: 'final sigma') - - "σ": [t: "сигма"] # 0x3c3 (en: 'sigma') - - "τ": [t: "тау"] # 0x3c4 (en: 'tau') - - "υ": [t: "ипсилон"] # 0x3c5 (en: 'upsilon') - - "φ": [t: "фи"] # 0x3c6 (en: 'phi') - - "χ": [t: "хи"] # 0x3c7 (en: 'chi') - - "ψ": [t: "пси"] # 0x3c8 (en: 'psi') - - "ω": [t: "омега"] # 0x3c9 (en: 'omega') - - "ϕ": [t: "фи"] # 0x3d5 (en: 'phi') - - "ϖ": [t: "пи"] # 0x3d6 (en: 'pi') - - "ϵ": [t: "эпсилон"] # 0x3f5 (en: 'epsilon') - - "϶": [t: "обратный эпсилон"] # 0x3f6 (en: 'reversed epsilon') + - "α": [T: "альфа"] # 0x3b1 (en: 'alpha') + - "β": [T: "бета"] # 0x3b2 (en: 'beta') + - "γ": [T: "гамма"] # 0x3b3 (en: 'gamma') + - "δ": [T: "дельта"] # 0x3b4 (en: 'delta') + - "ε": [T: "эпсилон"] # 0x3b5 (en: 'epsilon') + - "ζ": [T: "дзета"] # 0x3b6 (en: 'zeta') + - "η": [T: "эта"] # 0x3b7 (en: 'eta') + - "θ": [T: "тета"] # 0x3b8 (en: 'theta') + - "ι": [T: "йота"] # 0x3b9 (en: 'iota') + - "κ": [T: "каппа"] # 0x3ba (en: 'kappa') + - "λ": [T: "лямбда"] # 0x3bb (en: 'lambda') + - "μ": [T: "мю"] # 0x3bc (en: 'mu') + - "ν": [T: "ню"] # 0x3bd (en: 'nu') + - "ξ": [T: "кси"] # 0x3be (en: 'zai') + - "ο": [T: "омикрон"] # 0x3bf (en: 'omicron') + - "π": [T: "пи"] # 0x3c0 (en: 'pi') + - "ρ": [T: "ро"] # 0x3c1 (en: 'rho') + - "ς": [T: "финальная сигма"] # 0x3c2 (en: 'final sigma') + - "σ": [T: "сигма"] # 0x3c3 (en: 'sigma') + - "τ": [T: "тау"] # 0x3c4 (en: 'tau') + - "υ": [T: "ипсилон"] # 0x3c5 (en: 'upsilon') + - "φ": [T: "фи"] # 0x3c6 (en: 'phi') + - "χ": [T: "хи"] # 0x3c7 (en: 'chi') + - "ψ": [T: "пси"] # 0x3c8 (en: 'psi') + - "ω": [T: "омега"] # 0x3c9 (en: 'omega') + - "ϕ": [T: "фи"] # 0x3d5 (en: 'phi') + - "ϖ": [T: "пи"] # 0x3d6 (en: 'pi') + - "ϵ": [T: "эпсилон"] # 0x3f5 (en: 'epsilon') + - "϶": [T: "обратный эпсилон"] # 0x3f6 (en: 'reversed epsilon') - "⁡": # 0x2061 - test: # skip saying "of" after trig functions, geometry shapes, or in :literal mode if: "not(preceding-sibling::*[1][IsInDefinition(., 'TrigFunctionNames') or self::m:inverse-function or (self::m:power and IsInDefinition(*[1], 'TrigFunctionNames'))]) and not(preceding-sibling::*[1][IsInDefinition(., 'GeometryShapes')]) and not(@data-changed='added' and ancestor-or-self::*[contains(@data-intent-property, ':literal:')])" - then: [t: "от"] # (en: 'of', google translation) + then: [T: "от"] # (en: 'of', google translation) - "⁢": # 0x2062 - test: if: "@data-function-guess and following-sibling::*[1][self::m:mrow and IsBracketed(., '(', ')')] and $ClearSpeak_Functions!='None'" then: [pause: short] - - "⁣": [t: ""] # 0x2063 - - "⁤": [t: "и"] # 0x2064 (en: 'and', google translation) + - "⁣": [T: ""] # 0x2063 + - "⁤": [T: "и"] # 0x2064 (en: 'and', google translation) - "ℂℕℚℝℤ": # here we rely on this running through the table again to speak "cap xxx" - - t: "двойное" # (en: 'double-struck') - - spell: "translate('.', 'ℂℕℚℝℤ', 'CNQRZ')" + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'двойной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'двойную', 'двойная'))" + - SPELL: "translate('.', 'ℂℕℚℝℤ', 'CNQRZ')" - - "℃": [t: "градусы цельсия"] # 0x2103 (en: 'degrees celsius', google translation) + - "℃": [T: "градусы цельсия"] # 0x2103 (en: 'degrees celsius', google translation) - "ℋℛℓ": # 0x210b - - t: "рукописное" # (en: 'script', google translation) - - spell: "translate('.', 'ℋℛℓ', 'HRl')" + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'рукописной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'рукописную', 'рукописная'))" + - SPELL: "translate('.', 'ℋℛℓ', 'HRl')" - "ℜ": # 0x211c - - t: "готическая" # (en: 'fraktur', google translation) - - spell: "'R'" + - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'фрактурной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'фрактурную', 'фрактурная'))" + - SPELL: "'R'" - "ⅆⅇⅈⅉ": # 0x2146-9 - - t: "двойной курсив" # (en: 'double-struck italic', google translation) - - spell: "translate('.', 'ⅆⅇⅈⅉ', 'deij')" + - T: "двойной курсив" # (en: 'double-struck italic', google translation) + - SPELL: "translate('.', 'ⅆⅇⅈⅉ', 'deij')" - - "←": [t: "стрелка влево"] # 0x2190 (en: 'leftwards arrow', google translation) - - "↑": [t: "стрелка вверх"] # 0x2191 (en: 'upwards arrow', google translation) + - "←": [T: "стрелка влево"] # 0x2190 (en: 'leftwards arrow', google translation) + - "↑": [T: "стрелка вверх"] # 0x2191 (en: 'upwards arrow', google translation) - "→": # 0x2192 - test: if: "(parent::m:mover or parent::m:modified-variable) and ($SpeechStyle='LiteralSpeak' or ancestor-or-self::*[contains(@data-intent-property, ':literal:')])" - then: [t: "со стрелкой"] + then: [T: "со стрелкой"] else_test: if: "ancestor::*[2][self::m:limit]" - then: [t: "стремящемся к"] # (en: 'approaches', google translation) - else: [t: "стрелка вправо"] # (en: 'right arrow', google translation) + then: [T: "стремящемся к"] # (en: 'approaches', google translation) + else: [T: "стрелка вправо"] # (en: 'right arrow', google translation) - - "↓": [t: "стрелка вниз"] # 0x2193 (en: 'downwards arrow', google translation) + - "↓": [T: "стрелка вниз"] # 0x2193 (en: 'downwards arrow', google translation) - "∈": # 0x2208 - test: if: "$SpeechStyle != 'ClearSpeak'" then: - test: if: "$Verbosity!='Terse' and not(ancestor::*[self::m:set])" # "the set x is an element of ..." sounds bad" - then: [t: ""] # (en: 'is', google translation) - - t: "принадлежит" # (en: 'an element of') + then: [T: ""] # (en: 'is', google translation) + - T: "принадлежит" # (en: 'an element of') # Several options for speaking elements in ClearSpeak -- they split between being inside a set or not and then the option else_test: if: "../../self::m:set or ../../../self::m:set" # inside a set then_test: - if: $ClearSpeak_SetMemberSymbol = 'Auto' or $ClearSpeak_SetMemberSymbol = 'In' - then: [t: "в"] # (en: 'in', google translation) + then: [T: "в"] # (en: 'in', google translation) - else_if: $ClearSpeak_SetMemberSymbol = 'Member' - then: [t: "член"] # (en: 'member of', google translation) + then: [T: "член"] # (en: 'member of', google translation) - else_if: $ClearSpeak_SetMemberSymbol = 'Element' - then: [t: "элемент"] # (en: 'element of', google translation) - - else: [t: "принадлежит"] # $ClearSpeak_SetMemberSymbol = 'Belongs' (en: 'belonging to') + then: [T: "элемент"] # (en: 'element of', google translation) + - else: [T: "принадлежит"] # $ClearSpeak_SetMemberSymbol = 'Belongs' (en: 'belonging to') else_test: - if: $ClearSpeak_SetMemberSymbol = 'Auto' or $ClearSpeak_SetMemberSymbol = 'Member' - then: [t: "член"] # (en: 'is a member of', google translation) + then: [T: "член"] # (en: 'is a member of', google translation) - else_if: $ClearSpeak_SetMemberSymbol = 'Element' - then: [t: "элемент"] # (en: 'is an element of', google translation) + then: [T: "элемент"] # (en: 'is an element of', google translation) - else_if: $ClearSpeak_SetMemberSymbol = 'In' - then: [t: "находится в"] # (en: 'is in', google translation) - - else: [t: "принадлежит"] # $ClearSpeak_SetMemberSymbol = 'Belongs' (en: 'belongs to') + then: [T: "находится в"] # (en: 'is in', google translation) + - else: [T: "принадлежит"] # $ClearSpeak_SetMemberSymbol = 'Belongs' (en: 'belongs to') - "∥": # 0x2225 - test: if: "$Verbosity!='Terse'" - then: [t: ""] # (en: 'is', google translation) - - t: "параллельно" # (en: 'parallel to') + then: [T: ""] # (en: 'is', google translation) + - T: "параллельно" # (en: 'parallel to') - "∦": # 0x2226 - test: if: "$Verbosity!='Terse'" - then: [t: ""] # (en: 'is', google translation) - - t: "не параллельно" # (en: 'not parallel to') + then: [T: ""] # (en: 'is', google translation) + - T: "не параллельно" # (en: 'not parallel to') - "≤": # 0x2264 - test: if: "$Verbosity!='Terse'" - then: [t: ""] # (en: 'is', google translation) - - t: "меньше или равно" + then: [T: ""] # (en: 'is', google translation) + - T: "меньше или равно" - "≥": # 0x2265 - test: if: "$Verbosity!='Terse'" - then: [t: ""] # (en: 'is', google translation) - - t: "больше или равно" # (en: 'greater than or equal to') + then: [T: ""] # (en: 'is', google translation) + - T: "больше или равно" # (en: 'greater than or equal to') # --- restored complex short definitions (prefer over unicode-full) --- - "…": # 0x2026 @@ -396,21 +388,21 @@ # must be ClearSpeak and $ClearSpeak_Ellipses = 'AndSoOn' # speak '…' as 'and so on...' unless expr starts with '…' - "../*[1][.='…']" - then: [t: "многоточие"] # (en: 'dot dot dot') + then: [T: "многоточие"] # (en: 'dot dot dot') else_test: # must have $ClearSpeak_Ellipses = 'AndSoOn' if: "count(following-sibling::*) = 0" - then: [t: "и так далее"] # (en: 'and so on', google translation) - else: [t: "и так далее до"] # (en: 'and so on up to', google translation) + then: [T: "и так далее"] # (en: 'and so on', google translation) + else: [T: "и так далее до"] # (en: 'and so on up to', google translation) - "∂": # 0x2202 - test: if: "$Verbosity='Terse'" - then: [t: "частная производная"] # (en: 'partial', google translation) - else: [t: "частная производная"] # (en: 'partial derivative') + then: [T: "частная производная"] # (en: 'partial', google translation) + else: [T: "частная производная"] # (en: 'partial derivative') - "∆": # 0x2206 - test: if: "$Verbosity!='Terse'" - then: [t: ""] # (en: 'the', google translation) - - t: "инкремент" # (en: 'laplacian of') + then: [T: ""] # (en: 'the', google translation) + - T: "инкремент" # (en: 'laplacian of') - "∉": # 0x2209 # rule is identical to 0x2208 - test: @@ -418,131 +410,107 @@ then: - test: if: "$Verbosity!='Terse'" - then: [t: ""] # (en: 'is', google translation) - - t: "не принадлежит" # (en: 'not an element of') + then: [T: ""] # (en: 'is', google translation) + - T: "не принадлежит" # (en: 'not an element of') # Several options for speaking elements in ClearSpeak -- they split between being inside a set or not and then the option else_test: if: "../../self::m:set or ../../../self::m:set" # inside a set then_test: - if: $ClearSpeak_SetMemberSymbol = 'Auto' or $ClearSpeak_SetMemberSymbol = 'In' - then: [t: "не в"] # (en: 'not in', google translation) + then: [T: "не в"] # (en: 'not in', google translation) - else_if: $ClearSpeak_SetMemberSymbol = 'Member' - then: [t: "не член"] # (en: 'not member of', google translation) + then: [T: "не член"] # (en: 'not member of', google translation) - else_if: $ClearSpeak_SetMemberSymbol = 'Element' - then: [t: "не элемент"] # (en: 'not element of', google translation) - - else: [t: "не принадлежит"] # $ClearSpeak_SetMemberSymbol = 'Belongs' (en: 'not belonging to') + then: [T: "не элемент"] # (en: 'not element of', google translation) + - else: [T: "не принадлежит"] # $ClearSpeak_SetMemberSymbol = 'Belongs' (en: 'not belonging to') else_test: - if: $ClearSpeak_SetMemberSymbol = 'Auto' or $ClearSpeak_SetMemberSymbol = 'Member' - then: [t: "не член"] # (en: 'is not a member of', google translation) + then: [T: "не член"] # (en: 'is not a member of', google translation) - else_if: $ClearSpeak_SetMemberSymbol = 'Element' - then: [t: "не элемент"] # (en: 'is not an element of', google translation) + then: [T: "не элемент"] # (en: 'is not an element of', google translation) - else_if: $ClearSpeak_SetMemberSymbol = 'In' - then: [t: "не в"] # (en: 'is not in', google translation) - - else: [t: "не принадлежит"] # $ClearSpeak_SetMemberSymbol = 'Belongs' (en: 'does not belong to') + then: [T: "не в"] # (en: 'is not in', google translation) + - else: [T: "не принадлежит"] # $ClearSpeak_SetMemberSymbol = 'Belongs' (en: 'does not belong to') - "∊": # 0x220a - test: if: "$SpeechStyle != 'ClearSpeak'" then: - test: if: "$Verbosity!='Terse' and not(ancestor::*[self::m:set])" # "the set x is an element of ..." sounds bad" - then: [t: ""] # (en: 'is', google translation) - - t: "малое принадлежит" # (en: 'an element of') + then: [T: ""] # (en: 'is', google translation) + - T: "малое принадлежит" # (en: 'an element of') # Several options for speaking elements in ClearSpeak -- they split between being inside a set or not and then the option else_test: if: "../../self::m:set or ../../../self::m:set" # inside a set then_test: - if: $ClearSpeak_SetMemberSymbol = 'Auto' or $ClearSpeak_SetMemberSymbol = 'In' - then: [t: "в"] # (en: 'in', google translation) + then: [T: "в"] # (en: 'in', google translation) - else_if: $ClearSpeak_SetMemberSymbol = 'Member' - then: [t: "член"] # (en: 'member of', google translation) + then: [T: "член"] # (en: 'member of', google translation) - else_if: $ClearSpeak_SetMemberSymbol = 'Element' - then: [t: "элемент"] # (en: 'element of', google translation) - - else: [t: "малое принадлежит"] # $ClearSpeak_SetMemberSymbol = 'Belongs' (en: 'belonging to') + then: [T: "элемент"] # (en: 'element of', google translation) + - else: [T: "малое принадлежит"] # $ClearSpeak_SetMemberSymbol = 'Belongs' (en: 'belonging to') else_test: - if: $ClearSpeak_SetMemberSymbol = 'Auto' or $ClearSpeak_SetMemberSymbol = 'Member' - then: [t: "член"] # (en: 'is a member of', google translation) + then: [T: "член"] # (en: 'is a member of', google translation) - else_if: $ClearSpeak_SetMemberSymbol = 'Element' - then: [t: "элемент"] # (en: 'is an element of', google translation) + then: [T: "элемент"] # (en: 'is an element of', google translation) - else_if: $ClearSpeak_SetMemberSymbol = 'In' - then: [t: "находится в"] # (en: 'is in', google translation) - - else: [t: "малое принадлежит"] # $ClearSpeak_SetMemberSymbol = 'Belongs' (en: 'belongs to') + then: [T: "находится в"] # (en: 'is in', google translation) + - else: [T: "малое принадлежит"] # $ClearSpeak_SetMemberSymbol = 'Belongs' (en: 'belongs to') - "√": # 0x221a - test: if: "$Verbosity!='Terse'" - then: [t: ""] # (en: 'the', google translation) - - t: "квадратный корень" # (en: 'square root of') + then: [T: ""] # (en: 'the', google translation) + - T: "квадратный корень" # (en: 'square root of') - "∝": # 0x221d - test: if: "$Verbosity!='Terse'" - then: [t: ""] # (en: 'is', google translation) - - t: "пропорционально" # (en: 'proportional to') + then: [T: ""] # (en: 'is', google translation) + - T: "пропорционально" # (en: 'proportional to') - "∶": # 0x2236 - test: if: "$Verbosity!='Terse'" - then: [t: ""] # (en: 'is', google translation) - - t: "отношение" # (en: 'to') + then: [T: ""] # (en: 'is', google translation) + - T: "отношение" # (en: 'to') - "∾": # 0x223e - test: if: "$Verbosity!='Terse'" - then: [t: ""] # (en: 'is', google translation) - - t: "изогнутая эс" # (en: 'most positive') + then: [T: ""] # (en: 'is', google translation) + - T: "изогнутая эс" # (en: 'most positive') - "≠": # 0x2260 - test: if: "$Verbosity!='Terse'" - then: [t: ""] # (en: 'is', google translation) - - t: "не равно" # (en: 'not equal to') + then: [T: ""] # (en: 'is', google translation) + - T: "не равно" # (en: 'not equal to') - "≡": # 0x2261 - test: if: "$Verbosity!='Terse'" - then: [t: ""] # (en: 'is', google translation) - - t: "тождественно равно" # (en: 'identical to') - - "⊂": # 0x2282 - - test: - if: "$Verbosity!='Terse'" - then: [t: ""] # (en: 'is a', google translation) - - t: "подмножество" # (en: 'subset of') - - "⊃": # 0x2283 - - test: - if: "$Verbosity!='Terse'" - then: [t: ""] # (en: 'is a', google translation) - - t: "надмножество" # (en: 'superset of') - - "⊄": # 0x2284 - - test: - if: "$Verbosity!='Terse'" - then: [t: ""] # (en: 'is', google translation) - - t: "не подмножество" # (en: 'not a subset of') - - "⊅": # 0x2285 - - test: - if: "$Verbosity!='Terse'" - then: [t: ""] # (en: 'is', google translation) - - t: "не надмножество" # (en: 'not a superset of') - - "⊆": # 0x2286 - - test: - if: "$Verbosity!='Terse'" - then: [t: ""] # (en: 'is a', google translation) - - t: "подмножество или равно" # (en: 'subset of or equal to') - - "⊇": # 0x2287 - - test: - if: "$Verbosity!='Terse'" - then: [t: ""] # (en: 'is a', google translation) - - t: "надмножество или равно" # (en: 'superset of or equal to') + then: [T: ""] # (en: 'is', google translation) + - T: "тождественно равно" # (en: 'identical to') + - "⊂": [T: "строгое подмножество"] + - "⊃": [T: "строгое надмножество"] + - "⊄": [T: "не является строгим подмножеством"] + - "⊅": [T: "не является строгим надмножеством"] + - "⊆": [T: "подмножество или равно"] + - "⊇": [T: "надмножество или равно"] # --- restored short definitions that differ from unicode-full --- - - "‖": [t: "двойная вертикальная черта"] # 0x2016 (en: 'double vertical line', google translation) - - "℉": [t: "градусы фаренгейта"] # 0x2109 (en: 'degrees fahrenheit', google translation) - - "Ω": [t: "ом"] # 0x2126 (en: 'ohms', google translation) - - "Å": [t: "ангстрем"] # 0x212b (en: 'angstroms', google translation) - - "⇒": [t: "двойная стрелка вправо"] # 0x21d2 (en: 'rightwards double arrow', google translation) - - "∐": [t: "эн-арный сомножитель"] # 0x2210 (en: 'co-product') - - "∓": [t: "минус плюс"] # 0x2213 (en: 'minus or plus') - - "∗": [t: "звёздочка"] # 0x2217 (en: 'times') - - "∘": [t: "композиция"] # 0x2218 (en: 'composed with') - - "∧": [t: "логическое и"] # 0x2227 (en: 'and') - - "∨": [t: "логическое или"] # 0x2228 (en: 'or') - - "∮": [t: "интеграл по контуру"] # 0x222e (en: 'contour integral') - - "∷": [t: "пропорция"] # 0x2237 (en: 'as') - - "∼": [t: "тильда"] # 0x223c (en: 'varies with') - - "∿": [t: "синусоидальная волна"] # 0x223f (en: 'sine wave') - - "≦": [t: "меньше над равно"] # 0x2266 (en: 'less than over equal to') - - "≧": [t: "больше над равно"] # 0x2267 (en: 'greater than over equal to') - - "≻": [t: "следует за"] # 0x227b (en: 'succeeds') + - "‖": [T: "двойная вертикальная черта"] # 0x2016 (en: 'double vertical line', google translation) + - "℉": [T: "градусы фаренгейта"] # 0x2109 (en: 'degrees fahrenheit', google translation) + - "Ω": [T: "ом"] # 0x2126 (en: 'ohms', google translation) + - "Å": [T: "ангстрем"] # 0x212b (en: 'angstroms', google translation) + - "⇒": [T: "двойная стрелка вправо"] # 0x21d2 (en: 'rightwards double arrow', google translation) + - "∐": [T: "эн-арный сомножитель"] # 0x2210 (en: 'co-product') + - "∓": [T: "минус плюс"] # 0x2213 (en: 'minus or plus') + - "∗": [T: "звёздочка"] # 0x2217 (en: 'times') + - "∘": [T: "композиция"] # 0x2218 (en: 'composed with') + - "∧": [T: "логическое и"] # 0x2227 (en: 'and') + - "∨": [T: "логическое или"] # 0x2228 (en: 'or') + - "∮": [T: "интеграл по контуру"] # 0x222e (en: 'contour integral') + - "∷": [T: "пропорция"] # 0x2237 (en: 'as') + - "∼": [T: "тильда"] # 0x223c (en: 'varies with') + - "∿": [T: "синусоидальная волна"] # 0x223f (en: 'sine wave') + - "≦": [T: "меньше над равно"] # 0x2266 (en: 'less than over equal to') + - "≧": [T: "больше над равно"] # 0x2267 (en: 'greater than over equal to') + - "≻": [T: "следует за"] # 0x227b (en: 'succeeds') diff --git a/tests/Languages/ru/ClearSpeak/functions.rs b/tests/Languages/ru/ClearSpeak/functions.rs index 5171150f6..92655b351 100644 --- a/tests/Languages/ru/ClearSpeak/functions.rs +++ b/tests/Languages/ru/ClearSpeak/functions.rs @@ -58,6 +58,14 @@ fn inverse_trig_arc() -> Result<()> { return Ok(()); } +#[test] +fn inverse_cosine_arc() -> Result<()> { + // Inverse cosine is arccosine; area cosine belongs to inverse hyperbolic cosine. + let expr = "cos-1x"; + test_ClearSpeak("ru", "ClearSpeak_Trig", "ArcTrig", expr, "арккосинус икс")?; + return Ok(()); +} + #[test] fn trig_squared() -> Result<()> { let expr = "sin2x"; diff --git a/tests/Languages/ru/ClearSpeak/menclose.rs b/tests/Languages/ru/ClearSpeak/menclose.rs index cdf7be7a2..408d5e8e7 100644 --- a/tests/Languages/ru/ClearSpeak/menclose.rs +++ b/tests/Languages/ru/ClearSpeak/menclose.rs @@ -7,7 +7,7 @@ fn menclose_actuarial() -> Result<()> { let expr = " 3+2i "; - test("ru", "ClearSpeak", expr, "актуарный символ, содержащее 3 плюс 2 и конец")?; + test("ru", "ClearSpeak", expr, "актуарный символ, внутри 3 плюс 2 и конец")?; return Ok(()); } @@ -16,7 +16,7 @@ fn menclose_box() -> Result<()> { let expr = " 3+2i "; - test("ru", "ClearSpeak", expr, "рамка, окружность, содержащее 3 плюс 2 и конец")?; + test("ru", "ClearSpeak", expr, "рамка, окружность, внутри 3 плюс 2 и конец")?; return Ok(()); } @@ -25,7 +25,7 @@ fn menclose_left() -> Result<()> { let expr = " 32 "; - test("ru", "ClearSpeak", expr, "линия слева, содержащее три вторых конец")?; + test("ru", "ClearSpeak", expr, "линия слева, внутри три вторых конец")?; return Ok(()); } @@ -34,7 +34,7 @@ fn menclose_right() -> Result<()> { let expr = " 32 "; - test("ru", "ClearSpeak", expr, "линия справа, содержащее три вторых конец")?; + test("ru", "ClearSpeak", expr, "линия справа, внутри три вторых конец")?; return Ok(()); } @@ -43,7 +43,7 @@ fn menclose_top_bottom() -> Result<()> { let expr = " 32 "; - test("ru", "ClearSpeak", expr, "линия сверху, снизу, содержащее три вторых конец")?; + test("ru", "ClearSpeak", expr, "линия сверху, снизу, внутри три вторых конец")?; return Ok(()); } @@ -52,7 +52,7 @@ fn menclose_updiagonalstrike() -> Result<()> { let expr = " 32 "; - test("ru", "ClearSpeak", expr, "диагональ вверх, перечёркивание, содержащее три вторых конец")?; + test("ru", "ClearSpeak", expr, "диагональ вверх, перечёркивание, внутри три вторых конец")?; return Ok(()); } @@ -61,7 +61,7 @@ fn menclose_downdiagonalstrike() -> Result<()> { let expr = " 32 "; - test("ru", "ClearSpeak", expr, "диагональ вниз, перечёркивание, содержащее три вторых конец")?; + test("ru", "ClearSpeak", expr, "диагональ вниз, перечёркивание, внутри три вторых конец")?; return Ok(()); } @@ -70,7 +70,7 @@ fn menclose_cross_out() -> Result<()> { let expr = " 32 "; - test("ru", "ClearSpeak", expr, "икс, перечёркивание, содержащее три вторых конец")?; + test("ru", "ClearSpeak", expr, "икс, перечёркивание, внутри три вторых конец")?; return Ok(()); } @@ -79,7 +79,7 @@ fn menclose_vertical_horizontal_strike() -> Result<()> { let expr = " 32 "; - test("ru", "ClearSpeak", expr, "вертикальная, горизонтальная, перечёркивание, содержащее три вторых конец")?; + test("ru", "ClearSpeak", expr, "вертикальная, горизонтальная, перечёркивание, внутри три вторых конец")?; return Ok(()); } @@ -88,7 +88,7 @@ fn menclose_leftarrow() -> Result<()> { let expr = " 32 "; - test("ru", "ClearSpeak", expr, "стрелка влево, содержащее три вторых конец")?; + test("ru", "ClearSpeak", expr, "стрелка влево, внутри три вторых конец")?; return Ok(()); } @@ -97,7 +97,7 @@ fn menclose_right_up_down_arrow() -> Result<()> { let expr = " 32 "; - test("ru", "ClearSpeak", expr, "стрелка вверх, стрелка вниз, стрелка вправо, содержащее три вторых конец")?; + test("ru", "ClearSpeak", expr, "стрелка вверх, стрелка вниз, стрелка вправо, внутри три вторых конец")?; return Ok(()); } @@ -106,7 +106,7 @@ fn menclose_northeastarrow() -> Result<()> { let expr = " 32 "; - test("ru", "ClearSpeak", expr, "стрелка на северо-восток, содержащее три вторых конец")?; + test("ru", "ClearSpeak", expr, "стрелка на северо-восток, внутри три вторых конец")?; return Ok(()); } @@ -115,7 +115,7 @@ fn menclose_other_single_arrows() -> Result<()> { let expr = " 32 "; - test("ru", "ClearSpeak", expr, "стрелка на юго-восток, стрелка на юго-запад, стрелка на северо-запад, содержащее три вторых конец")?; + test("ru", "ClearSpeak", expr, "стрелка на юго-восток, стрелка на юго-запад, стрелка на северо-запад, внутри три вторых конец")?; return Ok(()); } @@ -124,7 +124,7 @@ fn menclose_northwestsoutheastarrow() -> Result<()> { let expr = " 32 "; - test("ru", "ClearSpeak", expr, "двунаправленная диагональная стрелка вниз, содержащее три вторых конец")?; + test("ru", "ClearSpeak", expr, "двунаправленная диагональная стрелка вниз, внутри три вторых конец")?; return Ok(()); } @@ -133,7 +133,7 @@ fn menclose_other_double_arrows() -> Result<()> { let expr = " 32 "; - test("ru", "ClearSpeak", expr, "двунаправленная вертикальная стрелка, двунаправленная горизонтальная стрелка, двунаправленная диагональная стрелка вверх, содержащее три вторых конец")?; + test("ru", "ClearSpeak", expr, "двунаправленная вертикальная стрелка, двунаправленная горизонтальная стрелка, двунаправленная диагональная стрелка вверх, внутри три вторых конец")?; return Ok(()); } @@ -142,7 +142,7 @@ fn menclose_madrub() -> Result<()> { let expr = " 32 "; - test("ru", "ClearSpeak", expr, "арабский символ факториала, содержащее три вторых конец")?; + test("ru", "ClearSpeak", expr, "арабский символ факториала, внутри три вторых конец")?; return Ok(()); } @@ -151,7 +151,7 @@ fn menclose_phasorangle() -> Result<()> { let expr = " 32 "; - test("ru", "ClearSpeak", expr, "угол фазы, содержащее три вторых конец")?; + test("ru", "ClearSpeak", expr, "угол фазы, внутри три вторых конец")?; return Ok(()); } @@ -160,7 +160,7 @@ fn menclose_circle_phasorangle() -> Result<()> { let expr = " 32 "; - test("ru", "ClearSpeak", expr, "окружность, угол фазы, содержащее три вторых конец")?; + test("ru", "ClearSpeak", expr, "окружность, угол фазы, внутри три вторых конец")?; return Ok(()); } @@ -169,7 +169,7 @@ fn menclose_longdiv() -> Result<()> { let expr = " 32 "; - test("ru", "ClearSpeak", expr, "знак деления уголком, содержащее три вторых конец")?; + test("ru", "ClearSpeak", expr, "знак деления уголком, внутри три вторых конец")?; return Ok(()); } @@ -178,7 +178,7 @@ fn menclose_longdiv_default() -> Result<()> { let expr = " 32 "; - test("ru", "ClearSpeak", expr, "знак деления уголком, содержащее три вторых конец")?; + test("ru", "ClearSpeak", expr, "знак деления уголком, внутри три вторых конец")?; return Ok(()); } @@ -187,7 +187,7 @@ fn menclose_longdiv_empty_string() -> Result<()> { let expr = " 32 "; - test("ru", "ClearSpeak", expr, "знак деления уголком, содержащее три вторых конец")?; + test("ru", "ClearSpeak", expr, "знак деления уголком, внутри три вторых конец")?; return Ok(()); } @@ -196,7 +196,7 @@ fn menclose_longdiv_whitespace_string() -> Result<()> { let expr = " 32 "; - test("ru", "ClearSpeak", expr, "знак деления уголком, содержащее три вторых конец")?; + test("ru", "ClearSpeak", expr, "знак деления уголком, внутри три вторых конец")?; return Ok(()); } @@ -205,7 +205,7 @@ fn menclose_radical() -> Result<()> { let expr = " 32 "; - test("ru", "ClearSpeak", expr, "квадратный корень, содержащее три вторых конец")?; + test("ru", "ClearSpeak", expr, "квадратный корень, внутри три вторых конец")?; return Ok(()); } @@ -214,6 +214,6 @@ fn simple_speak_menclose_top_bottom() -> Result<()> { let expr = " 32 "; - test("ru", "SimpleSpeak", expr, "линия сверху, снизу, содержащее три вторых конец")?; + test("ru", "SimpleSpeak", expr, "линия сверху, снизу, внутри три вторых конец")?; return Ok(()); } diff --git a/tests/Languages/ru/ClearSpeak/mroot.rs b/tests/Languages/ru/ClearSpeak/mroot.rs index 819506ce2..a04bdd976 100644 --- a/tests/Languages/ru/ClearSpeak/mroot.rs +++ b/tests/Languages/ru/ClearSpeak/mroot.rs @@ -77,7 +77,7 @@ fn msqrt() -> Result<()> { x + y "; - test("ru", "ClearSpeak", expr, "квадратный корень из икс плюс игрек")?; + test("ru", "ClearSpeak", expr, "квадратный корень из выражения икс плюс игрек")?; return Ok(()); } @@ -132,7 +132,7 @@ fn mroot_simple_end_root() -> Result<()> { x + y 21 "; - test_ClearSpeak("ru", "ClearSpeak_Roots", "RootEnd", expr, "корень двадцать первой степени из икс плюс игрек, конец корня")?; + test_ClearSpeak("ru", "ClearSpeak_Roots", "RootEnd", expr, "корень двадцать первой степени из выражения икс плюс игрек, конец корня")?; return Ok(()); } diff --git a/tests/Languages/ru/ClearSpeak/sets.rs b/tests/Languages/ru/ClearSpeak/sets.rs index d483258e5..13b2160ee 100644 --- a/tests/Languages/ru/ClearSpeak/sets.rs +++ b/tests/Languages/ru/ClearSpeak/sets.rs @@ -2,6 +2,36 @@ use crate::common::*; use anyhow::Result; +#[test] +fn strict_subset_terminology() -> Result<()> { + // The agreed convention makes the plain subset sign strict at every verbosity. + let expr = "A⊂B"; + for verbosity in ["Terse", "Medium", "Verbose"] { + test_prefs("ru", "ClearSpeak", vec![("Verbosity", verbosity)], expr, + "заглавная а строгое подмножество заглавная бэ")?; + } + return Ok(()); +} + +#[test] +fn subset_or_equal_terminology() -> Result<()> { + // The non-strict sign must retain the equality alternative. + let expr = "A⊆B"; + test("ru", "ClearSpeak", expr, "заглавная а подмножество или равно заглавная бэ")?; + test("ru", "SimpleSpeak", expr, "заглавная а подмножество или равно заглавная бэ")?; + return Ok(()); +} + +#[test] +fn negated_subset_terminology() -> Result<()> { + // Negation is expressed as a complete predicate, including for the full Unicode table. + let expr = "A⊄B"; + test("ru", "ClearSpeak", expr, "заглавная а не является строгим подмножеством заглавная бэ")?; + let expr = "A⊈B"; + test("ru", "ClearSpeak", expr, "заглавная а не является подмножеством заглавная бэ")?; + return Ok(()); +} + #[test] fn complex() -> Result<()> { let expr = " diff --git a/tests/Languages/ru/ClearSpeak/symbols_and_adornments.rs b/tests/Languages/ru/ClearSpeak/symbols_and_adornments.rs index cc5dd339e..af3967666 100644 --- a/tests/Languages/ru/ClearSpeak/symbols_and_adornments.rs +++ b/tests/Languages/ru/ClearSpeak/symbols_and_adornments.rs @@ -2,6 +2,18 @@ use crate::common::*; use anyhow::Result; +#[test] +fn unicode_divisibility() -> Result<()> { + // The left operand is the divisor; the negated symbol preserves this direction. + let expr = "3∣6"; + test("ru", "ClearSpeak", expr, "3 является делителем 6")?; + test("ru", "SimpleSpeak", expr, "3 является делителем 6")?; + let expr = "3∤7"; + test("ru", "ClearSpeak", expr, "3 не является делителем 7")?; + test("ru", "SimpleSpeak", expr, "3 не является делителем 7")?; + return Ok(()); +} + #[test] fn multiplication() -> Result<()> { let expr = " @@ -149,7 +161,7 @@ fn vertical_line_auto() -> Result<()> { 3|6 "; test_ClearSpeak("ru", "ClearSpeak_VerticalLine", "Auto", expr, - "3 делит 6")?; + "3 является делителем 6")?; return Ok(()); } @@ -159,7 +171,7 @@ fn vertical_line_divides() -> Result<()> { 3|6 "; test_ClearSpeak("ru", "ClearSpeak_VerticalLine", "Divides", expr, - "3 делит 6")?; + "3 является делителем 6")?; return Ok(()); } diff --git a/tests/Languages/ru/SimpleSpeak/geometry.rs b/tests/Languages/ru/SimpleSpeak/geometry.rs index 386f50431..24fc4cc70 100644 --- a/tests/Languages/ru/SimpleSpeak/geometry.rs +++ b/tests/Languages/ru/SimpleSpeak/geometry.rs @@ -11,6 +11,42 @@ fn arc() -> Result<()> { return Ok(()); } +#[test] +fn line_segment_verbose() -> Result<()> { + // The verbose name of a line segment is "отрезок", not a literal English translation. + let expr = "XY¯"; + test_prefs("ru", "SimpleSpeak", vec![("Verbosity", "Verbose")], expr, + "отрезок от заглавной икс до заглавной игрек")?; + return Ok(()); +} + +#[test] +fn arc_verbose() -> Result<()> { + // Verbose arc speech must not introduce an article translated as a letter. + let expr = "BC⌒"; + test_prefs("ru", "SimpleSpeak", vec![("Verbosity", "Verbose")], expr, + "дуга бэ большое цэ большое")?; + return Ok(()); +} + +#[test] +fn coordinate_verbose() -> Result<()> { + // The closing marker ends the coordinates, rather than naming an endpoint. + let expr = r#"12"#; + test_prefs("ru", "ClearSpeak", vec![("Verbosity", "Verbose")], expr, + "точка с координатами, 1 запятая 2, конец координат")?; + return Ok(()); +} + +#[test] +fn ray_verbose() -> Result<()> { + // B specifies the ray's direction, not an endpoint. + let expr = "XY→"; + test_prefs("ru", "SimpleSpeak", vec![("Verbosity", "Verbose")], expr, + "луч с началом в заглавной икс проходящий через заглавную игрек")?; + return Ok(()); +} + #[test] fn ray() -> Result<()> { let expr = " XY¯ "; diff --git a/tests/Languages/ru/SimpleSpeak/linear_algebra.rs b/tests/Languages/ru/SimpleSpeak/linear_algebra.rs index 479ab8943..dbb29089c 100644 --- a/tests/Languages/ru/SimpleSpeak/linear_algebra.rs +++ b/tests/Languages/ru/SimpleSpeak/linear_algebra.rs @@ -5,35 +5,46 @@ use anyhow::Result; #[test] fn transpose() -> Result<()> { let expr = " MT "; - test("ru", "SimpleSpeak", expr, "заглавная эм транспонирование")?; + // Name the transposed matrix before its letter, as requested for Russian speech. + test("ru", "SimpleSpeak", expr, "транспонированная матрица эм")?; + test("ru", "ClearSpeak", expr, "транспонированная матрица эм")?; + return Ok(()); +} + +#[test] +fn determinant_verbose() -> Result<()> { + // Explicit determinant intent must use the mathematical noun without an English article. + let expr = r#"a"#; + test_prefs("ru", "SimpleSpeak", vec![("Verbosity", "Verbose")], expr, "определитель а")?; + test_prefs("ru", "ClearSpeak", vec![("Verbosity", "Verbose")], expr, "определитель а")?; return Ok(()); } #[test] fn trace() -> Result<()> { let expr = " TrM "; - test("ru", "SimpleSpeak", expr, "след от заглавная эм")?; + test("ru", "SimpleSpeak", expr, "след от заглавной эм")?; return Ok(()); } #[test] fn dimension() -> Result<()> { let expr = " DimM "; - test("ru", "SimpleSpeak", expr, "размерность от заглавная эм")?; + test("ru", "SimpleSpeak", expr, "размерность от заглавной эм")?; return Ok(()); } #[test] fn homomorphism() -> Result<()> { let expr = " Hom(M) "; - test("ru", "SimpleSpeak", expr, "гомоморфизм от заглавная эм")?; + test("ru", "SimpleSpeak", expr, "гомоморфизм от заглавной эм")?; return Ok(()); } #[test] fn kernel() -> Result<()> { let expr = " ker(L) "; - test("ru", "SimpleSpeak", expr, "ядро от заглавная эль")?; + test("ru", "SimpleSpeak", expr, "ядро от заглавной эль")?; return Ok(()); } @@ -63,7 +74,7 @@ fn norm_non_simple() -> Result<()> { "; - test("ru", "SimpleSpeak", expr, "норма от икс плюс игрек конец нормы")?; + test("ru", "SimpleSpeak", expr, "норма от выражения икс плюс игрек конец нормы")?; return Ok(()); } @@ -80,7 +91,9 @@ fn norm_subscripted() -> Result<()> { "; - test("ru", "SimpleSpeak", expr, "пэ норма из эф")?; + // Speak the norm's operand first, then identify its subscript explicitly. + test("ru", "SimpleSpeak", expr, "норма эф с индексом пэ")?; + test("ru", "ClearSpeak", expr, "норма эф с индексом пэ")?; return Ok(()); } diff --git a/tests/Languages/ru/SimpleSpeak/mfrac.rs b/tests/Languages/ru/SimpleSpeak/mfrac.rs index a39d2bcc2..8b0963d62 100644 --- a/tests/Languages/ru/SimpleSpeak/mfrac.rs +++ b/tests/Languages/ru/SimpleSpeak/mfrac.rs @@ -89,7 +89,7 @@ fn deeply_nested_fraction_msqrt() -> Result<()> { "; - test("ru", "SimpleSpeak", expr, "дробь, числитель: икс плюс, квадратный корень из 1 разделить на игрек, конец корня; знаменатель: икс минус игрек, конец дроби")?; + test("ru", "SimpleSpeak", expr, "дробь, числитель: икс плюс, квадратный корень из выражения 1 разделить на игрек, конец корня; знаменатель: икс минус игрек, конец дроби")?; return Ok(()); } @@ -106,7 +106,7 @@ fn deeply_nested_fraction_mrow_msqrt() -> Result<()> { "; - test("ru", "SimpleSpeak", expr, "дробь, числитель: икс плюс, квадратный корень из 2 плюс 1 разделить на игрек, конец корня; знаменатель: икс минус игрек, конец дроби")?; + test("ru", "SimpleSpeak", expr, "дробь, числитель: икс плюс, квадратный корень из выражения 2 плюс 1 разделить на игрек, конец корня; знаменатель: икс минус игрек, конец дроби")?; return Ok(()); } diff --git a/tests/Languages/ru/alphabets.rs b/tests/Languages/ru/alphabets.rs index 820af5e76..726655929 100644 --- a/tests/Languages/ru/alphabets.rs +++ b/tests/Languages/ru/alphabets.rs @@ -4,6 +4,15 @@ use crate::common::*; use anyhow::Result; +#[test] +fn traditional_latin_names() -> Result<()> { + // Use the agreed Russian names for g, j and w, including uppercase letters. + let expr = "g,j,w,G,J,W"; + test("ru", "SimpleSpeak", expr, "гэ, йот, дубль-вэ, заглавная гэ, заглавная йот, заглавная дубль-вэ")?; + test("ru", "ClearSpeak", expr, "гэ, йот, дубль-вэ, заглавная гэ, заглавная йот, заглавная дубль-вэ")?; + return Ok(()); +} + #[test] fn special_alphabet_chars() -> Result<()> { let expr = " ℌ,ℭ"; diff --git a/tests/Languages/ru/intent.rs b/tests/Languages/ru/intent.rs index 0bc3a18dc..40dd2e1c5 100644 --- a/tests/Languages/ru/intent.rs +++ b/tests/Languages/ru/intent.rs @@ -4,6 +4,15 @@ use crate::common::*; use anyhow::Result; +#[test] +fn imaginary_part_name() -> Result<()> { + // The imaginary part is a real component of a complex number, not a "complex part". + let expr = r#"Im"#; + test("ru", "SimpleSpeak", expr, "мнимая часть")?; + test("ru", "ClearSpeak", expr, "мнимая часть")?; + return Ok(()); +} + #[test] fn silent_intent() -> Result<()> { let expr = " 2 x "; diff --git a/tests/Languages/ru/mtable.rs b/tests/Languages/ru/mtable.rs index 381a3b576..13b7e5b77 100644 --- a/tests/Languages/ru/mtable.rs +++ b/tests/Languages/ru/mtable.rs @@ -585,7 +585,7 @@ fn simple_cardinality_value() -> Result<()> { | S | "; test_prefs("ru", "ClearSpeak", vec![("Verbosity", "Medium"), ("ClearSpeak_AbsoluteValue", "Cardinality")], expr, - "мощность множества из заглавная эс")?; + "мощность множества из заглавной эс")?; return Ok(()); } diff --git a/tests/Languages/ru/navigate.rs b/tests/Languages/ru/navigate.rs index 690df9eff..32f0d1f07 100644 --- a/tests/Languages/ru/navigate.rs +++ b/tests/Languages/ru/navigate.rs @@ -4,6 +4,48 @@ use crate::common::*; use anyhow::Result; use std::panic::{catch_unwind, AssertUnwindSafe}; +fn overview_modes(expr: &str, expected: [&str; 3]) -> Result<()> { + for style in ["SimpleSpeak", "ClearSpeak"] { + for (verbosity, answer) in ["Terse", "Medium", "Verbose"].into_iter().zip(expected) { + init_nav(expr)?; + set_preference("SpeechStyle", style)?; + set_preference("Verbosity", verbosity)?; + let overview = get_overview_text()?.split_whitespace().collect::>().join(" "); + assert_eq!(overview, answer, "{style}/{verbosity}"); + } + } + Ok(()) +} + +#[test] +fn overview_labeled_table() -> Result<()> { + // A row label is not a data column; both rows have two data cells. + let expr = "label1234"; + overview_modes(expr, ["2 на 2 таблица"; 3]) +} + +#[test] +fn overview_numeric_roots() -> Result<()> { + // Explicit square, cube, and general degree all have a valid Russian overview. + overview_modes("x2", + ["квадратный корень икс", "квадратный корень из икс", "квадратный корень из икс"])?; + overview_modes("x3", + ["кубический корень икс", "кубический корень из икс", "кубический корень из икс"])?; + overview_modes("x4", + ["корень степени 4 икс", "корень степени 4 из икс", "корень степени 4 из икс"]) +} + +#[test] +fn overview_fraction_and_long_row() -> Result<()> { + // Check both fraction branches and the five-item cutoff used to shorten long rows. + overview_modes("23", ["2 разделить на 3"; 3])?; + overview_modes("x+1y", + ["дробь, числитель: икс плюс 1 знаменатель: игрек"; 3])?; + overview_modes("a+b+c+d", + ["а плюс бэ плюс цэ и так далее"; 3]) +} + + fn init_nav(mathml: &str) -> Result<()> { set_rules_dir(abs_rules_dir_path())?; set_preference("Language", "ru")?; @@ -17,6 +59,55 @@ fn init_nav(mathml: &str) -> Result<()> { Ok(()) } +#[test] +fn overview_table_dimensions() -> Result<()> { + // Dimensions contain one separator, with no translated English article before them. + let expr = "12"; + for verbosity in ["Terse", "Medium", "Verbose"] { + init_nav(expr)?; + set_preference("Verbosity", verbosity)?; + assert_eq!(get_overview_text()?, "1 на 2 таблица"); + } + Ok(()) +} + +#[test] +fn overview_symbolic_root() -> Result<()> { + // A symbolic degree must be read as a degree, without an English TTS ordinal suffix. + let expr = "xn"; + for verbosity in ["Terse", "Medium", "Verbose"] { + init_nav(expr)?; + set_preference("Verbosity", verbosity)?; + let expected = if verbosity == "Terse" { "корень степени эн икс" } else { "корень степени эн из икс" }; + assert_eq!(get_overview_text()?, expected); + } + Ok(()) +} + +#[test] +fn overview_matrix_dimensions() -> Result<()> { + // Bracketed matrices use the matrix overview at every verbosity. + let expr = "(12)"; + for verbosity in ["Terse", "Medium", "Verbose"] { + init_nav(expr)?; + set_preference("Verbosity", verbosity)?; + assert_eq!(get_overview_text()?, "1 на 2 матрица"); + } + Ok(()) +} + +#[test] +fn overview_determinant_dimensions() -> Result<()> { + // Vertical bars select the determinant overview, without an initial "на". + let expr = "|1|"; + for verbosity in ["Terse", "Medium", "Verbose"] { + init_nav(expr)?; + set_preference("Verbosity", verbosity)?; + assert_eq!(get_overview_text()?, "1 на 1 определитель"); + } + Ok(()) +} + fn assert_zoom_in(mathml: &str, expected: &str) -> Result<()> { init_panic_handler(); let result = catch_unwind(AssertUnwindSafe(|| { diff --git a/tests/Languages/ru/shared.rs b/tests/Languages/ru/shared.rs index fe5c785ef..ed699f731 100644 --- a/tests/Languages/ru/shared.rs +++ b/tests/Languages/ru/shared.rs @@ -110,9 +110,9 @@ fn tensor_mmultiscripts() -> Result<()> { R i j k l "; test_prefs("ru", "SimpleSpeak", vec![("Verbosity", "Verbose")], expr, - "заглавная эр с 4 индексами после, нижний индекс и верхний индекс джей нижний индекс ка нижний индекс эль")?; + "заглавная эр с 4 индексами после, нижний индекс и верхний индекс йот нижний индекс ка нижний индекс эль")?; test_prefs("ru", "SimpleSpeak", vec![("Verbosity", "Medium")], expr, - "заглавная эр с 4 индексами после, нижний и верхний джей нижний ка нижний эль")?; + "заглавная эр с 4 индексами после, нижний и верхний йот нижний ка нижний эль")?; return Ok(()); } @@ -123,7 +123,7 @@ fn huge_num_mmultiscripts() -> Result<()> { I J K L "; test_prefs("ru", "SimpleSpeak", vec![("Verbosity", "Verbose")], expr, - "заглавная эр с 4 индексами перед, левый нижний индекс заглавная и, левый верхний индекс заглавная джей и далее левый нижний индекс заглавная ка левый нижний индекс заглавная эль, и с 5 индексами после, нижний индекс и верхний индекс джей нижний индекс ка нижний индекс эль и далее нижний индекс эм")?; + "заглавная эр с 4 индексами перед, левый нижний индекс заглавная и, левый верхний индекс заглавная йот и далее левый нижний индекс заглавная ка левый нижний индекс заглавная эль, и с 5 индексами после, нижний индекс и верхний индекс йот нижний индекс ка нижний индекс эль и далее нижний индекс эм")?; return Ok(()); } @@ -164,10 +164,10 @@ fn simple_msubsup() -> Result<()> { #[test] fn non_simple_msubsup() -> Result<()> { let expr = "ij−2k"; - test("ru", "SimpleSpeak", expr, "и нижний индекс джей минус 2, в степени ка")?; - test("ru", "ClearSpeak", expr, "и нижний индекс джей минус 2, в степени ка")?; + test("ru", "SimpleSpeak", expr, "и нижний индекс йот минус 2, в степени ка")?; + test("ru", "ClearSpeak", expr, "и нижний индекс йот минус 2, в степени ка")?; test_prefs("ru", "SimpleSpeak", vec![("Impairment", "LearningDisability")], expr, - "и нижний индекс джей минус 2, в степени ка")?; + "и нижний индекс йот минус 2, в степени ка")?; return Ok(()); } @@ -316,7 +316,7 @@ fn ignore_period_and_space() -> Result<()> { "; - test("ru", "ClearSpeak", expr, "заглавная пэ; открывающая круглая скобка, заглавная а делит заглавная бэ, закрывающая круглая скобка равно дробь, числитель: заглавная пэ, открывающая круглая скобка, заглавная а пересечение заглавная бэ, закрывающая круглая скобка; знаменатель: заглавная пэ от заглавной бэ")?; + test("ru", "ClearSpeak", expr, "заглавная пэ; открывающая круглая скобка, заглавная а при условии заглавная бэ, закрывающая круглая скобка равно дробь, числитель: заглавная пэ, открывающая круглая скобка, заглавная а пересечение заглавная бэ, закрывающая круглая скобка; знаменатель: заглавная пэ от заглавной бэ")?; return Ok(()); } @@ -364,7 +364,7 @@ fn mn_with_block_and_decimal_separators() -> Result<()> { #[test] fn divergence() -> Result<()> { let expr = "∇·F"; - test_prefs("ru", "SimpleSpeak", vec![("Verbosity", "Terse")], expr, "див заглавная эф")?; + test_prefs("ru", "SimpleSpeak", vec![("Verbosity", "Terse")], expr, "див заглавной эф")?; test_prefs("ru", "SimpleSpeak", vec![("Verbosity", "Verbose")], expr, "дивергенция заглавной эф")?; return Ok(()); } @@ -372,7 +372,7 @@ fn divergence() -> Result<()> { #[test] fn curl() -> Result<()> { let expr = "∇×F"; - test_prefs("ru", "SimpleSpeak", vec![("Verbosity", "Terse")], expr, "ротор заглавная эф")?; + test_prefs("ru", "SimpleSpeak", vec![("Verbosity", "Terse")], expr, "ротор заглавной эф")?; test_prefs("ru", "SimpleSpeak", vec![("Verbosity", "Verbose")], expr, "ротор заглавной эф")?; return Ok(()); } @@ -380,7 +380,7 @@ fn curl() -> Result<()> { #[test] fn gradient() -> Result<()> { let expr = "∇F"; - test_prefs("ru", "SimpleSpeak", vec![("Verbosity", "Terse")], expr, "набла заглавная эф")?; + test_prefs("ru", "SimpleSpeak", vec![("Verbosity", "Terse")], expr, "набла заглавной эф")?; test_prefs("ru", "SimpleSpeak", vec![("Verbosity", "Verbose")], expr, "градиент заглавной эф")?; return Ok(()); } diff --git a/tests/Languages/ru/units.rs b/tests/Languages/ru/units.rs index 58e07ed46..6e2436150 100644 --- a/tests/Languages/ru/units.rs +++ b/tests/Languages/ru/units.rs @@ -1,4 +1,4 @@ -/// Тесты для правил, общих для различных стилей речи: +/// Тесты для правил, общих для различных стилей речи: /// * модифицированная переменная use crate::common::*; @@ -41,7 +41,7 @@ fn prefix_sweep() -> Result<()> { qg "#; test("ru", "SimpleSpeak", expr, - "кветта-граммы запятая, ронна-граммы запятая, иотта-граммы запятая, зетта-граммы запятая, экса-граммы запятая, пета-граммы запятая, тера-граммы запятая, гига-граммы запятая, мега-граммы запятая, кило-граммы запятая, гекто-граммы запятая, дека-граммы запятая, деци-граммы запятая, санти-граммы запятая, милли-граммы запятая, микро-граммы запятая, нано-граммы запятая, пико-граммы запятая, фемто-граммы запятая, атто-граммы запятая, зепто-граммы запятая, иокто-граммы запятая, ронто-граммы запятая, квекто-граммы")?; + "кветтаграммы запятая, роннаграммы запятая, иоттаграммы запятая, зеттаграммы запятая, эксаграммы запятая, петаграммы запятая, тераграммы запятая, гигаграммы запятая, мегаграммы запятая, килограммы запятая, гектограммы запятая, декаграммы запятая, дециграммы запятая, сантиграммы запятая, миллиграммы запятая, микрограммы запятая, нанограммы запятая, пикограммы запятая, фемтограммы запятая, аттограммы запятая, зептограммы запятая, иоктограммы запятая, ронтограммы запятая, квектограммы")?; return Ok(()); } @@ -79,7 +79,7 @@ fn si_base_with_prefixes() -> Result<()> { 1nsec,2psec "#; test("ru", "SimpleSpeak", expr, - "1 кветта-ампер запятая, 2 ронна-ампера запятая, 1 иотта-кандела запятая, 2 зетта-канделы запятая, 1 экса-кельвин запятая, 2 пета-кельвина запятая, 1 тера-кельвин запятая, 2 гига-кельвина запятая, 1 мега-грамм запятая, 2 кило-граммы запятая, 1 гекто-метр запятая, 2 дека-метра запятая, 1 деци-моль запятая, 2 санти-моля запятая, 1 милли-секунда запятая, 2 микро-секунды запятая, 1 нано-секунда запятая, 2 пико-секунды")?; + "1 кветтаампер запятая, 2 роннаампера запятая, 1 иоттакандела запятая, 2 зеттаканделы запятая, 1 эксакельвин запятая, 2 петакельвина запятая, 1 теракельвин запятая, 2 гигакельвина запятая, 1 мегаграмм запятая, 2 килограмма запятая, 1 гектометр запятая, 2 декаметра запятая, 1 децимоль запятая, 2 сантимоля запятая, 1 миллисекунда запятая, 2 микросекунды запятая, 1 наносекунда запятая, 2 пикосекунды")?; return Ok(()); } @@ -100,7 +100,7 @@ fn si_derived_1() -> Result<()> { 1lx,2lx "#; test("ru", "SimpleSpeak", expr, - "1 беккерель запятая, 2 беккереля запятая, 1 кулон запятая, 2 кулона запятая, 1 градус Цельсия запятая, 2 градуса Цельсия запятая, 1 градус Цельсия запятая, 2 градуса Цельсия запятая, 1 фарад запятая, 2 фарада запятая, 1 грей запятая, 2 грея запятая, 1 генри запятая, 2 генри запятая, 1 герц запятая, 2 герца запятая, 1 джоуль запятая, 2 джоуля запятая, 1 катал запятая, 2 катала запятая, 1 люмен запятая, 2 люмена запятая, 1 люкс запятая, 2 люкс")?; + "1 беккерель запятая, 2 беккереля запятая, 1 кулон запятая, 2 кулона запятая, 1 градус Цельсия запятая, 2 градуса Цельсия запятая, 1 градус Цельсия запятая, 2 градуса Цельсия запятая, 1 фарад запятая, 2 фарада запятая, 1 грей запятая, 2 грея запятая, 1 генри запятая, 2 генри запятая, 1 герц запятая, 2 герца запятая, 1 джоуль запятая, 2 джоуля запятая, 1 катал запятая, 2 катала запятая, 1 люмен запятая, 2 люмена запятая, 1 люкс запятая, 2 люкса")?; return Ok(()); } @@ -121,7 +121,7 @@ fn si_derived_1_with_prefixes() -> Result<()> { 1p℃,2n℃ "#; test("ru", "SimpleSpeak", expr, - "1 кветта-беккерель запятая, 2 ронна-беккереля запятая, 1 иотта-кулон запятая, 2 зетта-кулона запятая, 1 экса-фарад запятая, 2 пета-фарада запятая, 1 тера-грей запятая, 2 гига-грея запятая, 1 мега-генри запятая, 2 кило-генри запятая, 1 дека-герц запятая, 2 деци-герца запятая, 1 санти-джоуль запятая, 2 милли-джоуля запятая, 1 микро-катал запятая, 2 нано-катала запятая, 1 пико-люмен запятая, 2 фемто-люмена запятая, 1 атто-люкс запятая, 2 зепто-люкс запятая, 1 милли-градус Цельсия запятая, 2 микро-градуса Цельсия запятая, 1 пико-градус Цельсия запятая, 2 нано-градуса Цельсия")?; + "1 кветтабеккерель запятая, 2 роннабеккереля запятая, 1 иоттакулон запятая, 2 зеттакулона запятая, 1 эксафарад запятая, 2 петафарада запятая, 1 терагрей запятая, 2 гигагрея запятая, 1 мегагенри запятая, 2 килогенри запятая, 1 декагерц запятая, 2 децигерца запятая, 1 сантиджоуль запятая, 2 миллиджоуля запятая, 1 микрокатал запятая, 2 нанокатала запятая, 1 пиколюмен запятая, 2 фемтолюмена запятая, 1 аттолюкс запятая, 2 зептолюкса запятая, 1 миллиградус Цельсия запятая, 2 микроградуса Цельсия запятая, 1 пикоградус Цельсия запятая, 2 наноградуса Цельсия")?; return Ok(()); } @@ -140,7 +140,7 @@ fn si_derived_2() -> Result<()> { 1Wb,2Wb "#; test("ru", "SimpleSpeak", expr, - "1 ньютон запятая, 2 ньютона запятая, 1 ом запятая, 2 ома запятая, 1 ом запятая, 2 ома запятая, 1 паскаль запятая, 2 паскаля запятая, 1 сименс запятая, 2 сименс запятая, 1 зиверт запятая, 2 зиверта запятая, 1 тесла запятая, 2 теслы запятая, 1 вольт запятая, 2 вольта запятая, 1 ватт запятая, 2 ватта запятая, 1 вебер запятая, 2 вебера")?; + "1 ньютон запятая, 2 ньютона запятая, 1 ом запятая, 2 ома запятая, 1 ом запятая, 2 ома запятая, 1 паскаль запятая, 2 паскаля запятая, 1 сименс запятая, 2 сименса запятая, 1 зиверт запятая, 2 зиверта запятая, 1 тесла запятая, 2 теслы запятая, 1 вольт запятая, 2 вольта запятая, 1 ватт запятая, 2 ватта запятая, 1 вебер запятая, 2 вебера")?; return Ok(()); } @@ -159,7 +159,7 @@ fn si_derived_2_with_prefixes() -> Result<()> { 1PWb,2EWb "#; test("ru", "SimpleSpeak", expr, - "1 квекто-ньютон запятая, 2 ронто-ньютона запятая, 1 иокто-ом запятая, 2 зепто-ома запятая, 1 атто-ом запятая, 2 фемто-ома запятая, 1 пико-паскаль запятая, 2 нано-паскаля запятая, 1 микро-сименс запятая, 2 милли-сименс запятая, 1 санти-зиверт запятая, 2 деци-зиверта запятая, 1 дека-тесла запятая, 2 гекто-теслы запятая, 1 кило-вольт запятая, 2 мега-вольта запятая, 1 гига-ватт запятая, 2 тера-ватта запятая, 1 пета-вебер запятая, 2 экса-вебера")?; + "1 квектоньютон запятая, 2 ронтоньютона запятая, 1 иоктоом запятая, 2 зептоома запятая, 1 аттоом запятая, 2 фемтоома запятая, 1 пикопаскаль запятая, 2 нанопаскаля запятая, 1 микросименс запятая, 2 миллисименса запятая, 1 сантизиверт запятая, 2 децизиверта запятая, 1 декатесла запятая, 2 гектотеслы запятая, 1 киловольт запятая, 2 мегавольта запятая, 1 гигаватт запятая, 2 тераватта запятая, 1 петавебер запятая, 2 эксавебера")?; return Ok(()); } @@ -207,7 +207,7 @@ fn si_accepted_with_prefixes() -> Result<()> { 1TBd,2EBd "#; test("ru", "SimpleSpeak", expr, - "1 кветта-литр запятая, 2 ронна-литра запятая, 1 иотта-литр запятая, 2 зетта-литра запятая, 1 экса-литр запятая, 2 пета-литра запятая, 1 тера-тонна запятая, 2 гига-тонны запятая, 1 мега-дальтон запятая, 2 кило-дальтона запятая, 1 деци-непер запятая, 2 санти-непера запятая, 1 гекто-атомная единица массы запятая, 2 дека-атомные единицы массы запятая, 1 милли-электронвольт запятая, 2 микро-электронвольта запятая, 1 нано-радиан запятая, 2 пико-радиана запятая, 1 фемто-стерадиан запятая, 2 атто-стерадиана запятая, 1 гига-год запятая, 2 мега-года запятая, 1 зепто-угловая секунда запятая, 2 иокто-угловые секунды запятая, 1 кило-бит запятая, 2 мега-бита запятая, 1 гига-байт запятая, 2 тера-байта запятая, 1 тера-бод запятая, 2 экса-бода")?; + "1 кветталитр запятая, 2 ронналитра запятая, 1 иотталитр запятая, 2 зетталитра запятая, 1 эксалитр запятая, 2 петалитра запятая, 1 тератонна запятая, 2 гигатонны запятая, 1 мегадальтон запятая, 2 килодальтона запятая, 1 децинепер запятая, 2 сантинепера запятая, 1 гектоатомная единица массы запятая, 2 декаатомные единицы массы запятая, 1 миллиэлектронвольт запятая, 2 микроэлектронвольта запятая, 1 нанорадиан запятая, 2 пикорадиана запятая, 1 фемтостерадиан запятая, 2 аттостерадиана запятая, 1 гигагод запятая, 2 мегагода запятая, 1 зептоугловая секунда запятая, 2 иоктоугловые секунды запятая, 1 килобит запятая, 2 мегабита запятая, 1 гигабайт запятая, 2 терабайта запятая, 1 терабод запятая, 2 эксабода")?; return Ok(()); } @@ -325,7 +325,7 @@ fn si_other_numbers() -> Result<()> { 2.5µsec, 32.34mol"#; test("ru", "SimpleSpeak", expr, - "10 литр запятая, 20 метра запятая, икс милли-секунды запятая, игрек микро-секунды запятая, дека-граммы запятая, 1235 дека-ньютона запятая, 25 микро-секунды запятая, 3234 моля")?; + "10 литров запятая, 20 метров запятая, икс миллисекунды запятая, игрек микросекунды запятая, декаграммы запятая, 1235 деканьютонов запятая, 25 микросекунд запятая, 3234 моля")?; return Ok(()); } @@ -338,7 +338,7 @@ fn test_mtext_inference() -> Result<()> { 4.5mT ]"#; test("ru", "SimpleSpeak", expr, - "квадратная скобка открывается 1 тонна запятая, 2 пета-ампера запятая, 3 паскаля запятая, 45 милли-теслы квадратная скобка закрывается")?; + "квадратная скобка открывается 1 тонна запятая, 2 петаампера запятая, 3 паскаля запятая, 45 миллитесла квадратная скобка закрывается")?; return Ok(()); } From df1f1b5a3d4b49c6ebde3108cfe689339d503b9d Mon Sep 17 00:00:00 2001 From: Danil <81031453+Kostenkov-2021@users.noreply.github.com> Date: Tue, 15 Sep 2026 03:27:19 +0300 Subject: [PATCH 2/5] Fix Russian unicode rule key Correct the Russian unicode-full rule entry by changing the key from `spell` to `SPELL`. This aligns the mapping with the expected rule format and preserves the Greek-letter pronunciation for the affected Unicode range. --- Rules/Languages/ru/unicode-full.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rules/Languages/ru/unicode-full.yaml b/Rules/Languages/ru/unicode-full.yaml index da40e75b4..ec9f296ee 100644 --- a/Rules/Languages/ru/unicode-full.yaml +++ b/Rules/Languages/ru/unicode-full.yaml @@ -3303,7 +3303,7 @@ - "-": # 0xf220 - 0xf236 - x: "IfThenElse($SpeechOverrides_CapitalLetters='заглавной', 'двойной', IfThenElse($SpeechOverrides_CapitalLetters='заглавную', 'двойную', 'двойная'))" - - spell: "translate('.', '', 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ΢ΣΤΥΦΧΨΩ')" + - SPELL: "translate('.', '', 'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ΢ΣΤΥΦΧΨΩ')" - "": [T: "конечная сигма с двойным контуром"] # 0xf237 - "": [T: "ро с двойным контуром"] # 0xf250 From ee75d772f2df9150b75065e027db5da19b3b098b Mon Sep 17 00:00:00 2001 From: Danil <81031453+Kostenkov-2021@users.noreply.github.com> Date: Tue, 15 Sep 2026 08:37:20 +0300 Subject: [PATCH 3/5] Use tuple patterns; update RU navigation tests Refactor several functions to use tuple assignments and pattern matching for clearer, immutable bindings: canonicalize.rs (first/last child), chemistry.rs (prescripts/postscripts), and tts.rs (before/after lengths). Also update Russian navigation tests in navigate.rs (expected speech strings and a clarifying comment) to reflect the changed phrasing/cue for fractions inside square roots. These are purely refactors and test expectation updates to match the new output wording. --- src/canonicalize.rs | 12 ++++-------- src/chemistry.rs | 13 ++++--------- src/navigate.rs | 5 +++-- src/tts.rs | 12 ++++-------- 4 files changed, 15 insertions(+), 27 deletions(-) diff --git a/src/canonicalize.rs b/src/canonicalize.rs index 380c4de0c..f8f72f434 100644 --- a/src/canonicalize.rs +++ b/src/canonicalize.rs @@ -2412,23 +2412,19 @@ impl CanonicalizeContext { // This is not yet in canonical form, so the fences may be siblings or siblings of the parent let preceding_siblings = as_element(children[0]).preceding_siblings(); let following_siblings = as_element(children[end-1]).following_siblings(); - let first_child; - let last_child; - if preceding_siblings.is_empty() && following_siblings.is_empty() { + let (first_child, last_child) = if preceding_siblings.is_empty() && following_siblings.is_empty() { // number spans all children, look to parent for fences let preceding_children = mrow.preceding_siblings(); let following_children = mrow.following_siblings(); if preceding_children.is_empty() || following_children.is_empty() { return true; // doesn't have left or right fence } - first_child = preceding_children[preceding_children.len()-1]; - last_child = following_children[0]; + (preceding_children[preceding_children.len()-1], following_children[0]) } else if preceding_siblings.is_empty() || following_siblings.is_empty() { return true; // can't be fences around it } else { - first_child = preceding_siblings[preceding_siblings.len()-1]; - last_child = following_siblings[0]; - } + (preceding_siblings[preceding_siblings.len()-1], following_siblings[0]) + }; let first_child = as_element(first_child); let last_child = as_element(last_child); return !(name(first_child) == "mo" && is_fence(first_child) && diff --git a/src/chemistry.rs b/src/chemistry.rs index 1266b4087..500e61918 100644 --- a/src/chemistry.rs +++ b/src/chemistry.rs @@ -1393,17 +1393,12 @@ pub fn likely_adorned_chem_formula(mathml: Element) -> i32 { // prescripts are normally positive integers, chem 2.5.1 allows for a superscript for a Lewis dot // postscript should be a charge - let prescripts; - let postscripts; - if children.len() == 4 && name(as_element(children[1]))=="mprescripts" { // just prescripts - prescripts = &children[2..4]; - postscripts = &children[0..0]; // empty + let (prescripts, postscripts) = if children.len() == 4 && name(as_element(children[1]))=="mprescripts" { // just prescripts + (&children[2..4], &children[0..0]) // empty postscripts } else if children.len() == 6 && name(as_element(children[3]))=="mprescripts" { // pre and postscripts - prescripts = &children[4..6]; - postscripts = &children[1..3]; // empty + (&children[4..6], &children[1..3]) } else if children.len() == 3 || children.len() == 5 { // just postscripts (simultaneous or offset) - prescripts = &children[0..0]; // empty - postscripts = &children[1..]; + (&children[0..0], &children[1..]) // empty prescripts } else { return NOT_CHEMISTRY; }; diff --git a/src/navigate.rs b/src/navigate.rs index 0ef0f62bc..77e419e08 100644 --- a/src/navigate.rs +++ b/src/navigate.rs @@ -2574,6 +2574,7 @@ mod tests { #[test] fn describe_nested_fraction_ru() -> Result<()> { + // Navigation should retain the Russian expression cue for a fraction inside a square root. let mathml_str = " @@ -2598,9 +2599,9 @@ mod tests { let package_instance = package_instance.borrow(); let mathml = get_element(&package_instance); let speech = test_command("ZoomIn", mathml, "")?; - assert_eq!("переход внутрь; в числитель; икс плюс, квадратный корень из 1 разделить на игрек, конец корня", speech); + assert_eq!("переход внутрь; в числитель; икс плюс, квадратный корень из выражения 1 разделить на игрек, конец корня", speech); let speech = test_command("DescribeCurrent", mathml, "")?; - assert_eq!("описать текущее; икс плюс, квадратный корень из 1 разделить на игрек", speech); + assert_eq!("описать текущее; икс плюс; квадратный корень из выражения 1 разделить на игрек", speech); return Ok( () ); }); } diff --git a/src/tts.rs b/src/tts.rs index 91b05c0a8..440f7d9c7 100644 --- a/src/tts.rs +++ b/src/tts.rs @@ -669,18 +669,14 @@ impl TTS { /// There is a bias towards pausing more _after_ longer strings. pub fn compute_auto_pause(&self, prefs: &PreferenceManager, before: &str, after: &str) -> Result { static REMOVE_XML: LazyLock = LazyLock::new(|| Regex::new(r"<.+?>").unwrap()); // punctuation ending with a '.' - let before_len; - let after_len; - match self { + let (before_len, after_len) = match self { TTS::SSML | TTS::SAPI5 => { - before_len = REMOVE_XML.replace_all(before, "").len(); - after_len = REMOVE_XML.replace_all(after, "").len(); + (REMOVE_XML.replace_all(before, "").len(), REMOVE_XML.replace_all(after, "").len()) }, _ => { - before_len = before.len(); - after_len = after.len(); + (before.len(), after.len()) }, - } + }; // pause values are not cut in stone // the calculation bias to 'previous' is based on MathPlayer which used '30 * #-of-descendants-on-left From f67d184c0881f816ed24ee15470ac861718058aa Mon Sep 17 00:00:00 2001 From: Danil <81031453+Kostenkov-2021@users.noreply.github.com> Date: Tue, 22 Sep 2026 07:30:56 +0300 Subject: [PATCH 4/5] Refactor variable assignments in several modules Replace tuple-based temporary returns with explicit variable bindings for clarity and to avoid borrow/lifetime issues. Changes: - canonicalize.rs: declare first_child/last_child before branch and then convert to elements; simplifies fence-detection logic. - chemistry.rs: assign prescripts/postscripts to named slices instead of returning a tuple. - tts.rs: compute before_len/after_len via separate assignments inside match instead of returning a tuple. No behavioral changes intended; purely refactors for readability and safety. --- src/canonicalize.rs | 12 ++++++++---- src/chemistry.rs | 13 +++++++++---- src/tts.rs | 12 ++++++++---- 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src/canonicalize.rs b/src/canonicalize.rs index f8f72f434..380c4de0c 100644 --- a/src/canonicalize.rs +++ b/src/canonicalize.rs @@ -2412,19 +2412,23 @@ impl CanonicalizeContext { // This is not yet in canonical form, so the fences may be siblings or siblings of the parent let preceding_siblings = as_element(children[0]).preceding_siblings(); let following_siblings = as_element(children[end-1]).following_siblings(); - let (first_child, last_child) = if preceding_siblings.is_empty() && following_siblings.is_empty() { + let first_child; + let last_child; + if preceding_siblings.is_empty() && following_siblings.is_empty() { // number spans all children, look to parent for fences let preceding_children = mrow.preceding_siblings(); let following_children = mrow.following_siblings(); if preceding_children.is_empty() || following_children.is_empty() { return true; // doesn't have left or right fence } - (preceding_children[preceding_children.len()-1], following_children[0]) + first_child = preceding_children[preceding_children.len()-1]; + last_child = following_children[0]; } else if preceding_siblings.is_empty() || following_siblings.is_empty() { return true; // can't be fences around it } else { - (preceding_siblings[preceding_siblings.len()-1], following_siblings[0]) - }; + first_child = preceding_siblings[preceding_siblings.len()-1]; + last_child = following_siblings[0]; + } let first_child = as_element(first_child); let last_child = as_element(last_child); return !(name(first_child) == "mo" && is_fence(first_child) && diff --git a/src/chemistry.rs b/src/chemistry.rs index 500e61918..1266b4087 100644 --- a/src/chemistry.rs +++ b/src/chemistry.rs @@ -1393,12 +1393,17 @@ pub fn likely_adorned_chem_formula(mathml: Element) -> i32 { // prescripts are normally positive integers, chem 2.5.1 allows for a superscript for a Lewis dot // postscript should be a charge - let (prescripts, postscripts) = if children.len() == 4 && name(as_element(children[1]))=="mprescripts" { // just prescripts - (&children[2..4], &children[0..0]) // empty postscripts + let prescripts; + let postscripts; + if children.len() == 4 && name(as_element(children[1]))=="mprescripts" { // just prescripts + prescripts = &children[2..4]; + postscripts = &children[0..0]; // empty } else if children.len() == 6 && name(as_element(children[3]))=="mprescripts" { // pre and postscripts - (&children[4..6], &children[1..3]) + prescripts = &children[4..6]; + postscripts = &children[1..3]; // empty } else if children.len() == 3 || children.len() == 5 { // just postscripts (simultaneous or offset) - (&children[0..0], &children[1..]) // empty prescripts + prescripts = &children[0..0]; // empty + postscripts = &children[1..]; } else { return NOT_CHEMISTRY; }; diff --git a/src/tts.rs b/src/tts.rs index 440f7d9c7..91b05c0a8 100644 --- a/src/tts.rs +++ b/src/tts.rs @@ -669,14 +669,18 @@ impl TTS { /// There is a bias towards pausing more _after_ longer strings. pub fn compute_auto_pause(&self, prefs: &PreferenceManager, before: &str, after: &str) -> Result { static REMOVE_XML: LazyLock = LazyLock::new(|| Regex::new(r"<.+?>").unwrap()); // punctuation ending with a '.' - let (before_len, after_len) = match self { + let before_len; + let after_len; + match self { TTS::SSML | TTS::SAPI5 => { - (REMOVE_XML.replace_all(before, "").len(), REMOVE_XML.replace_all(after, "").len()) + before_len = REMOVE_XML.replace_all(before, "").len(); + after_len = REMOVE_XML.replace_all(after, "").len(); }, _ => { - (before.len(), after.len()) + before_len = before.len(); + after_len = after.len(); }, - }; + } // pause values are not cut in stone // the calculation bias to 'previous' is based on MathPlayer which used '30 * #-of-descendants-on-left From 8d369a904c48398c1c221db5d3aa00f23ac7fa79 Mon Sep 17 00:00:00 2001 From: Danil <81031453+Kostenkov-2021@users.noreply.github.com> Date: Tue, 22 Sep 2026 08:08:16 +0300 Subject: [PATCH 5/5] Update Russian MathCAT docs This change refreshes the Russian user and helper documentation, expanding the translator guidance and improving the structure of the setup, navigation, and settings sections. It also standardizes the MathCAT branding in the Russian titles and wording. --- docs/ru/README.md | 2 +- docs/ru/helpers.md | 78 ++++++++--- docs/ru/users.md | 327 ++++++++++++++++++--------------------------- 3 files changed, 194 insertions(+), 213 deletions(-) diff --git a/docs/ru/README.md b/docs/ru/README.md index 7d47b36be..1ad49ce17 100644 --- a/docs/ru/README.md +++ b/docs/ru/README.md @@ -11,7 +11,7 @@ layout: default lang: ru ref: users -title: Руководство пользователя MathCat +title: Руководство пользователя MathCAT --- ``` diff --git a/docs/ru/helpers.md b/docs/ru/helpers.md index be36a6116..115afa128 100644 --- a/docs/ru/helpers.md +++ b/docs/ru/helpers.md @@ -2,20 +2,64 @@ layout: default lang: ru ref: helpers -title: Руководство переводчика и разработчика правил +title: Руководство переводчика MathCAT --- -# Руководство переводчика и разработчика правил +# Руководство переводчика MathCAT -## Информация для разработчиков правил и переводчиков MathCAT -Эта страница находится в процессе подготовки. +В этом руководстве описано, как создать или обновить перевод MathCAT. В качестве примеров используется русский язык. -## Начало работы -Если вы планируете участвовать в разработке MathCAT, используйте GitHub: -1. Создайте форк репозитория MathCAT `github.com/NSoiffer/MathCAT`. -2. Клонируйте форк, чтобы получить локальную копию для работы. -3. Переключитесь на созданную для вашей работы ветку, обычно названную кодом языка перевода, и работайте в ней. +Основная часть посвящена переводу речи. При работе над Брайлем сначала ознакомьтесь с общим процессом настройки и тестирования, а затем перейдите к разделу «Перевод Брайля». -Если вы ещё не знакомы с этими действиями, найдите одно из многочисленных руководств. Они достаточно просты, поэтому отсутствие опыта не должно вас останавливать. +Большой опыт программирования не требуется. Важнее хорошо знать язык перевода, понимать, как на нём принято произносить или записывать математические выражения, и тщательно проверять результат. Желательно владеть математикой примерно на уровне высшего образования, чтобы замечать неестественные, неоднозначные или вводящие в заблуждение формулировки. + +## Оценка трудозатрат + +Полный и надёжный перевод требует времени. По опыту завершённых проектов, перевод речи может занять около **300–450 часов**, а перевод Брайля — около **160–240 часов**. Срок зависит от качества исходного материала, наличия близкого языка и опыта работы с программными инструментами. + +## Помощь в начале работы + +Руководство подготовили Марта Йельстад, Тим Арбореалис Лётберг и Андерс Эклунд, работавшие над норвежским и шведским переводами MathCAT. За помощью можно обратиться по адресу [mathcat-wg@daisylists.org](mailto:mathcat-wg@daisylists.org). + +## Рекомендуемый процесс + +1. Подготовьте рабочую копию. +2. Обновите перевод и проверьте его средством аудита. +3. Как можно раньше прослушайте результат. +4. Добавьте и запустите тесты. +5. Изучите стили речи и уровни подробности. +6. Отредактируйте файлы правил. +7. Проведите проверку с математиком. +8. Проведите пользовательское тестирование. +9. Отправьте перевод. +10. Поддерживайте перевод в актуальном состоянии. + +## Шаг 1. Подготовка рабочей копии + +MathCAT размещён на GitHub. Для перевода достаточно получить копию проекта, редактировать файлы и сохранять изменения. Если вы раньше не работали с GitHub, удобнее всего начать с [GitHub Desktop](https://desktop.github.com/): + +1. Создайте форк [репозитория MathCAT](https://github.com/daisy/MathCAT). +2. Клонируйте его на свой компьютер. +3. Работайте в отдельной ветке, например `pt` для португальского языка. + +Установите [Git](https://git-scm.com/), [GitHub Desktop](https://desktop.github.com/), редактор кода, например [Visual Studio Code](https://code.visualstudio.com/), [Rust](https://rust-lang.org/tools/install/) и [NVDA](https://www.nvaccess.org/download/). Rust нужен только для запуска автоматических тестов; изучать сам язык Rust для перевода не требуется. + +## Шаг 2. Обновление и аудит перевода + +До начала перевода убедитесь, что структура файлов языка соответствует текущей английской структуре. Иначе можно потратить время на исправление проблем, вызванных устаревшими файлами. + +Используйте [средство аудита переводов](https://github.com/daisy/MathCAT/blob/main/PythonScripts/audit_translations/README.md), чтобы найти отсутствующие правила. Если уже существует грамматически близкий язык, лучше взять его за основу, а затем сравнить со свежей английской версией. Например, норвежский перевод создавался на основе шведского. Средство аудита умеет сравнивать любые два языка. + +## Шаг 3. Раннее прослушивание результата + +Перевод может выглядеть правильно в YAML, но звучать неестественно, повторяться или быть непонятным. После перевода каждого файла прослушивайте несколько выражений с помощью программы экранного доступа. + +Чтобы использовать локальные правила в NVDA, скопируйте каталог языка, например `pt`, в: + +```text +NVDA\include\nvda-mathcat\assets\Rules\Languages +``` + +Для первоначальной проверки можно использовать [страницу тестовых выражений](https://daisy.github.io/MathCAT/test-exprs.html). Вносите по одному изменению, снова прослушивайте результат и записывайте наблюдения. ## Переводчикам на другие языки @@ -27,14 +71,14 @@ title: Руководство переводчика и разработчика Примечание: диалог настроек MathCAT ищет файлы с именами вида `XXX_Rules.yaml` и добавляет их в комбинированный список для языка. Использовать имена SimpleSpeak и ClearSpeak необязательно. Если вы хотите перевести только один стиль, например SimpleSpeak, но не хотите удалять `ClearSpeak_Rules.yaml`, переименуйте его, например, в `ClearSpeak_Rules.yaml.untranslated`.

-Эти файлы содержат автоматически созданные начальные переводы. Хотя текст уже переведён, используется ключ `t:`, а не `T:` с прописной буквы. Каждый перевод необходимо проверить и только после этого изменить ключ на вариант с прописной буквы. Подробнее об автоматическом переводе см. ниже. +Эти файлы содержат автоматически созданные начальные переводы. Хотя текст уже переведён, используется ключ `t:`, а не `T:` с прописной буквы. Каждый перевод необходимо проверить и только после этого изменить ключ на вариант с прописной буквы. Подробнее об автоматическом переводе ниже. * В некоторых языках нет смысла произносить эквиваленты слов «the» и, возможно, «of» во фразе «the square root of x». В таком случае замените их пустыми строками. * В некоторых языках меняется порядок слов. Переставляйте слова свободно, но внимательно следите за отступами: в YAML они имеют значение. * В некоторых языках могут потребоваться слова, отсутствующие в английской версии, до или после существующих фраз. Добавляйте их при необходимости. Условное добавление выполняется с помощью `test`. Если нужна помощь, свяжитесь с @NSoiffer. * Паузы между словами и фразами могут значительно улучшить понятность речи. Исходные паузы выбраны для английского языка. Настройте их в соответствии со звучанием синтезаторов речи вашего языка. Паузы легко добавлять, удалять и изменять. Их длительность масштабируется в соответствии с текущей скоростью речи. 3. Файлы Unicode: `unicode.yaml` и `unicode-full.yaml`. Они содержат такие символы, как `<` и `∫`. - * Начните с перевода `unicode.yaml`. В нём находится подавляющее большинство используемых математических символов. Сейчас список основан на практическом опыте, но в дальнейшем планируется уточнить его по статистике из реальных книг. В `unicode.yaml` около 270 символов, примерно 50 из которых — греческие буквы. Как и в файлах правил речи, здесь есть автоматически созданные начальные переводы. Проверьте их и измените `t:` на `T:`. Подробнее об автоматическом переводе см. ниже. + * Начните с перевода `unicode.yaml`. В нём находится подавляющее большинство используемых математических символов. Сейчас список основан на практическом опыте, но в дальнейшем планируется уточнить его по статистике из реальных книг. В `unicode.yaml` около 270 символов, примерно 50 из которых — греческие буквы. Как и в файлах правил речи, здесь есть автоматически созданные начальные переводы. Проверьте их и измените `t:` на `T:`. Подробнее об автоматическом переводе ниже. * В `unicode-full.yaml` тысячи строк. Вернитесь к нему после завершения остальных переводов и работайте столько, сколько сможете: большинство этих символов встречаются только в сложной математике и даже там используются редко. Наиболее важны: * некоторые стрелки, начиная с 0x2190; * символы из блока математических операторов 0x2200–0x22ff; @@ -73,7 +117,7 @@ __ПРИМЕЧАНИЕ__: Сейчас почти завершён перехо - LineCount: "IfThenElse($LineCountTry=0, count(*/*[1]), $LineCountTry)" ``` -Подробнее о содержимом файлов правил см. ниже. +Подробнее о содержимом файлов правил ниже. ### Примечание о переведённых файлах Для получения начального перевода файлов Unicode используются переводы MathPlayer и SRE, а также Google Translate. @@ -103,9 +147,9 @@ __ПРИМЕЧАНИЕ__: Сейчас почти завершён перехо 3. Выберите новый язык в комбинированном списке `Languages`. 4. Проверьте озвучивание. Хорошим источником примеров служат страницы Википедии. 5. Если произошла ошибка, часто выражающаяся в отсутствии речи, откройте журнал NVDA из подменю «Сервис». Ошибка должна быть указана там. Объяснение сообщений об ошибках приведено ниже. -6. MathCAT должен заметить изменение файла и перезагрузить его. Сейчас это не работает для файлов, подключённых с помощью `include`, например для файлов каталога `Shared`. После изменения такого файла перезагрузите MathCAT через «Сервис: Перезагрузить плагины» в NVDA или перезапустите NVDA. +6. MathCAT должен заметить изменение файла и перезагрузить его. Сейчас это не работает для файлов, подключённых с помощью `include`, например для файлов каталога `Shared`. После изменения такого файла перезагрузите MathCAT через «Инструменты: Перезагрузить плагины» в NVDA или перезапустите NVDA. -Перевод диалога настроек выполняется отдельно от перевода речи. Им занимаются добровольцы, которые переводят и другие дополнения. Подробнее см. [эту рассылку](https://groups.io/g/nvda-translations). +Перевод диалога настроек выполняется отдельно от перевода речи. Им занимаются добровольцы, которые переводят и другие дополнения. Подробнее в [этой рассылке](https://groups.io/g/nvda-translations). ### Автоматические тесты перевода Тестирование очень важно. MathCAT написан на Rust и содержит множество автоматических тестов, использующих встроенную систему тестирования Rust. Чтобы писать и проверять собственные тесты, [скачайте и установите Rust](https://www.rust-lang.org/tools/install). Знать Rust необязательно: достаточно заменить некоторые английские строки ожидаемыми строками на вашем языке. @@ -250,9 +294,9 @@ caused by: Unknown 'replace' command (testx) with value: if: "$Verbosity!='Ters ## Тестирование Независимо от того, разрабатываете вы код или пишете правила, крайне важно писать и запускать тесты. Они позволяют убедиться, что новый код работает и не нарушает существующую функциональность. -Каталог `tests` похож на каталог `Rules`. Если вы переводчик, см. инструкции в соответствующем разделе выше. +Каталог `tests` похож на каталог `Rules`. Если вы переводчик, обратитесь к инструкциям в соответствующем разделе выше. -Rust поддерживает тестирование с помощью команды `cargo test`. Подробнее о тестах и покрытии тестами см. в [руководстве разработчика](developers.md). +Rust поддерживает тестирование с помощью команды `cargo test`. Подробнее о тестах и покрытии тестами в [руководстве разработчика](developers.md). ## Файлы diff --git a/docs/ru/users.md b/docs/ru/users.md index 29d4fa9f1..e0f3725e3 100644 --- a/docs/ru/users.md +++ b/docs/ru/users.md @@ -4,200 +4,137 @@ lang: ru ref: users title: Руководство пользователя MathCAT --- -# Логотип MathCAT Руководство пользователя +# Руководство пользователя MathCAT -## Рекомендации по выбору голоса +MathCAT — это инструмент, который используется вместе с экранным диктором. С помощью MathCAT математические выражения можно прослушивать или читать на брайлевском дисплее. + +MathCAT встроен в экранные дикторы NVDA и JAWS, поэтому устанавливать его как дополнение не требуется. + +## Начало работы с MathCAT + +Работайте с веб-страницей или электронной книгой с помощью экранного диктора как обычно. Когда вы дойдёте до математического выражения, экранный диктор автоматически его озвучит. Чтобы изучить выражение подробнее, нажмите пробел и перейдите в режим навигации. В NVDA также можно нажать NVDA+Alt+M. Чтобы выйти из режима навигации, нажмите Escape. + +### Основные сочетания клавиш + +- Для перемещения внутри математического выражения используйте стрелки влево, вправо, вверх и вниз. +- Для перемещения между ячейками таблицы используйте Ctrl+стрелка. +- Чтобы перейти к началу выражения, нажмите Home, а чтобы перейти к концу — End. +- Чтобы услышать текущую позицию, нажмите пробел. +- Для смены режима навигации нажимайте Shift+стрелка вверх или Shift+стрелка вниз. Подробнее см. в разделе [«Все команды навигации»](#все-команды-навигации). -В NVDA можно использовать разные синтезаторы речи. Для выбора откройте `Параметры:Настройки...` в NVDA, а затем выберите категорию `Речь`. Обычно доступны как минимум три варианта: eSpeak NG, Microsoft Speech API и голоса Windows OneCore. Все синтезаторы работают, но голоса Windows OneCore неправильно произносят «a», поэтому рекомендуется выбрать другой вариант. В частности, хорошей заменой голосам OneCore служит Microsoft Speech API. - -## Информация для пользователей MathCAT - -MathCAT поддерживает ряд настроек озвучивания, Брайля и навигации. Они описаны ниже. -Пока поддерживаются не все настройки. Для каждой настройки указано текущее состояние поддержки. Символ ✓ перед настройкой означает, что она поддерживается хотя бы частично. - -Примечание: в NVDA настройки задаются в диалоге параметров MathCAT. Чтобы открыть его, перейдите в параметры NVDA, выберите «Параметры», а затем «Настройки MathCAT...». Настройки разделены на три категории: «Речь», «Навигация» и «Брайль». Такое же разделение используется ниже. - -MathCAT поддерживает несколько режимов навигации. Способ входа в режим навигации и выхода из него зависит от используемой вспомогательной технологии (подробнее в списке ниже). MathCAT принимает те же команды и сочетания клавиш, что и MathPlayer. Они [перечислены в этом документе](nav-commands.md). -Документация описывает множество полезных способов навигации по математическим выражениям. Чтобы быстро начать работу: - -* Используйте клавиши-стрелки для перемещения влево, вправо, вверх и вниз по структуре математического выражения, например для входа в дробь и выхода из неё. -* Внутри таблицы нажимайте Ctrl+стрелка для перемещения по ячейкам. -* Нажимайте Home и End для перехода к началу и концу выражения. -* Нажимайте пробел для озвучивания текущей позиции. -* Нажимайте Shift+стрелка вверх или Shift+стрелка вниз для изменения режима навигации (см. [документацию по навигации](nav-commands.md)). - -Чтобы начать навигацию: - -* NVDA: нажмите NVDA+Alt+M или пробел для входа в режим навигации по математическому выражению, а для выхода нажмите Escape. - -Навигация MathCAT работает одинаково в Word и в браузере. - -При навигации по выражению сочетание Ctrl+C в NVDA копирует математическое содержимое текущего узла. Поддерживаются следующие форматы: - -* MathML (по умолчанию); -* LaTeX; -* ASCIIMath; -* текст для озвучивания. - -## Список настроек - -Ниже перечислены настройки. Большинство из них принимают только ограниченный набор значений, который указан в описании. -Значение по умолчанию приведено в \[квадратных скобках\]. - -### Настройки речи - -* ✓Impairment: [Blindness] - * Значения: Blindness, LowVision, LearningDisability. - * Описание: определяет, следует ли устранять неоднозначность некоторых обозначений при озвучивании. - * Состояние: основное внимание уделялось значению Blindness, но другие значения также частично поддерживаются. Эту поддержку необходимо улучшить. - -* ✓Language: [en] - * Значения: любой известный код языка и подкод, например `en-uk`. - [Список вариантов приведён на этом сайте](https://www.venea.net/web/culture_code). - * Описание: определяет используемый язык. - Если региональный вариант не найден среди правил озвучивания, используется основной язык. Если не найдены и правила для основного языка, используется английский язык (`en`). - * Состояние: сейчас поддерживаются только английский, испанский, финский, индонезийский, шведский, вьетнамский и китайский языки. - Другие языки будут добавляться с помощью добровольцев. - -* ✓SpeechStyle: [ClearSpeak] - * Значения: любой реализованный стиль речи. Сейчас доступны только ClearSpeak и SimpleSpeak. - * Описание: стиль речи, то есть согласованный подход к озвучиванию выражения. - * ClearSpeak был разработан ETS для важных экзаменов, например SAT. [Подробности спецификации ClearSpeak приведены в этом документе Word](../ClearSpeakRulesAndPreferences.docx). - * SimpleSpeak стремится сократить озвучивание: простые выражения, например $\frac{a}{b}$, читаются быстро, без обрамляющих слов («a over b»). Они отличаются от более сложных выражений, например $\frac{a}{b+1}$, в которых обрамляющие слова используются всегда («fraction a over b plus 1 end fraction»). - * Состояние: сейчас реализованы только ClearSpeak и SimpleSpeak, но в дальнейшем, вероятно, будет реализован MathSpeak. - -* ✓Verbosity: [Medium] - * Значения: Terse, Medium, Verbose. - * Описание: определяет количество дополнительных слов при озвучивании. Например, в подробном режиме квадратный корень читается как «the square root of x», а в кратком — как «square root x». - * Состояние: настройка поддерживается, но со временем, вероятно, будет дорабатываться. - -* ✓MathRate: [100] - * Значения: число от 1 до 100. - * Описание: изменяет относительную скорость речи в процентах от стандартной скорости речевого синтезатора. Значение `100` означает, что математические выражения читаются с той же скоростью, что и обычный текст. - Настройка работает только в реализациях, которые указывают MathCAT создавать разметку речевого синтезатора, например SSML. - * Состояние: настройка должна работать в NVDA. - -* ✓PauseFactor: [50] - * Значения: число от 0 до 100. - * Описание: изменяет относительную длительность добавляемых MathCAT пауз. Значение 0 отключает все паузы, а значение 100 увеличивает обычную длительность пауз в десять раз. - Настройка работает только в реализациях, которые указывают MathCAT создавать разметку речевого синтезатора, например SSML. - * Состояние: настройка должна работать в NVDA. - -* ✓SpeechSound: [None] - * Значения: None, Beep. - * Описание: перед чтением выражения и после него воспроизводится звуковой сигнал. - * Состояние: настройка должна работать в NVDA. - -* SubjectArea: [General] - * Состояние: настройка использовалась в MathPlayer, но пока не реализована. Я жду дальнейшего обсуждения в рабочей группе MathML: возможно, эта настройка будет использоваться для задания разных значений `intent` по умолчанию. - -* Chemistry: [SpellOut] - * Значения: SpellOut, AsCompound, Off. - * Описание: определяет способ чтения химических формул. Примеры для $\mathrm{H}_2\mathrm{O}$: - * ✓SpellOut: «H 2 O» (настройка подробности определяет, произносятся ли слова `sub` и `super`); - * AsCompound: «Water»; - * ✓Off: «H sub 2 O». - * Состояние: реализовано множество эвристик для определения того, является ли запись химической формулой. Распознавание химических обозначений не всегда очевидно, поэтому MathCAT иногда может не распознать формулу или по ошибке принять другую запись за химическую. Работа группы MathML может существенно упростить авторам явное указание химических формул. - -SpeechOverrides: - -* ✓CapitalLetters: "cap" # слово-префикс для прописных букв, если оно не задано в unicode.yaml; пустая строка передаёт обработку программе экранного доступа -* LeftParen: "" # переопределение слова -* RightParen: "" # переопределение слова - -ClearSpeak содержит ряд настроек. Они предназначены для авторов, но могут задаваться и пользователями, хотя обычно не слишком им полезны. - -* ✓CapitalLetters: Auto, SayCaps или изменение высоты тона -* ✓AbsoluteValue: Auto, AbsEnd, Cardinality, Determinant -* ✓Fraction: Auto, Ordinal, Over, FracOver, General, EndFrac, GeneralEndFrac, OverEndFrac, Per -* ✓Exponent: Auto, Ordinal, OrdinalPower, AfterPower -* ✓Roots: Auto, PosNegSqRoot, RootEnd, PosNegSqRootEnd -* ✓Functions: Auto, None -* ✓Trig: Auto, TrigInverse, ArcTrig -* ✓Log: Auto, LnAsNaturalLog -* ✓ImpliedTimes: Auto, MoreImpliedTimes, None -* ✓Paren: Auto, Speak, SpeakNestingLevel, Silent, CoordPoint, Interval -* ✓Matrix: Auto, SpeakColNum, SilentColNum, EndMatrix, Vector, EndVector, Combinatorics -* ✓MultiLineLabel: Auto, Case, Constraint, Equation, Line, None, Row, Step -* ✓MultiLineOverview: Auto, None -* ✓MultiLinePausesBetweenColumns: Short, Long -* ✓Sets: Auto, woAll, SilentBracket -* ✓MultSymbolX: Auto, By, Cross -* ✓MultSymbolDot: Auto, Dot -* ✓TriangleSymbol: Auto, Delta -* ✓Ellipses: Auto, AndSoOn -* ✓VerticalLine: Auto, SuchThat, Divides, Given -* ✓SetMemberSymbol: Auto, Belongs, Element, Member -* ✓Prime: Auto, Angle, Length -* ✓CombinationPermutation: Auto, ChoosePermute -* ✓Bar: Auto, Bar, Conjugate, Mean - -### Настройки навигации (см. [документацию по навигации](nav-commands.md)) - -* ✓NavMode: Enhanced — Enhanced, Simple, Character. -* ResetNavMode: false — запоминать и использовать предыдущее значение. -* Overview: false — озвучивать выражение или давать его описание и обзор. -* ResetOverView: true — запоминать и использовать предыдущее значение. -* ✓NavVerbosity: Medium — Terse, Medium, Full (слова для произнесения команды навигации). -* ✓AutoZoomOut: true — автоматически уменьшать детализацию двумерных выражений. Если настройка отключена, для принудительного уменьшения детализации используйте Shift+стрелка. - * `true`: если вы находитесь у края двумерного выражения, например дроби или надстрочного индекса, и пытаетесь выйти из него влево или вправо, перемещение разрешается, а уровень детализации устанавливается в соответствии с предыдущим или следующим элементом. - * `false`: перемещение влево или вправо за край двумерного выражения запрещено. Чтобы переместиться, необходимо уменьшить детализацию, возможно несколько раз, пока вы не перестанете находиться у края. -* CopyMathAS: определяет формат копирования математического содержимого текущего узла навигации: MathML, LaTeX, ASCIIMath или текст для озвучивания. - - -### Настройки Брайля - -* ✓BrailleCode: [Nemeth] - * Значения: любая реализованная система записи Брайля. - * Описание: используемая система математической записи Брайля. - * Состояние: сейчас поддерживаются ASCIIMath, ASCIIMath-Finnish, CMU, LaTeX, код Немета, шведская система, UEB и вьетнамская система. Поддержка других систем записи Брайля зависит от помощи новых участников. -* ✓BrailleNavHighlight: [EndPoints] - * Значения: Off, FirstChar, EndPoints, All. - * Описание: выделяет выбранный узел навигации точками 7 и 8. -* UEB: - * ✓START_MODE: [Grade2] - * Значения: Grade1, Grade2. - * Описание: предполагаемый начальный режим UEB. Значение Grade1 означает, что используется режим фрагмента Grade 1. - * ✓UseSpacesAroundAllOperators: [false] - * Значения: true/false. - * Описание: рекомендации UEB предполагают, что в младших классах может быть полезно добавлять пробелы вокруг таких операторов, как `+` и `-`. Обычно пробелы добавляются только вокруг операторов отношений, например `=` и `<`. - -Во многих системах записи Брайля можно определять пользовательские символы. MathCAT предоставляет для этого несколько настроек. - -В коде Немета определены начертания Bold, Italic, SansSerif и Script, но не определено начертание DoubleStruck (Blackboard Bold). -Здесь можно задать определяемое транскрибатором изменение начертания. По умолчанию DoubleStruck сопоставляется с Italic. - -* Nemeth: - * ✓SansSerif: "⠠⠨" - * ✓Bold: "⠸" - * ✓DoubleStruck: "⠨" - * ✓Script: "⠈" - * ✓Italic: "⠨" - -В [руководстве UEB по техническим материалам](https://iceb.org/Guidelines_for_Technical_Material_2008-10.pdf) рекомендуется обычно обрабатывать Fraktur и DoubleStruck как Script. -Вместо этого здесь можно задать пользовательский префиксный индикатор начертания. -Примечание: префиксы с первого по пятый: "⠈⠼", "⠘⠼", "⠸⠼", "⠐⠼", "⠨⠼". - -* UEB: - * ✓DoubleStruck: "⠈" [script] - * ✓Fraktur: "⠈" [script] - * ✓SansSerif: "⠈⠼" [первый определяемый транскрибатором префиксный индикатор начертания] - * ✓GreekVariant: "⠨" [по умолчанию Greek] - -Набор определяемых символов для вьетнамской системы ещё обсуждается. Вероятно, некоторые значения изменятся. - -* Vietnam: - * ✓UseDropNumbers: [false] - * Значения: true, false. - * Описание: опускает цифры на строку ниже в простых числовых дробях. - * ✓DoubleStruck: "⠈" [script] - * ✓Fraktur: "⠈" [script] - * ✓SansSerif: "⠈⠼" [первый определяемый транскрибатором префиксный индикатор начертания] - * ✓GreekVariant: "⠨" [по умолчанию Greek] - -### Другие настройки - -MathCAT исправляет некачественный MathML. В MathML числа часто размечаются неправильно. Чтобы исправить их корректно, MathCAT должен знать региональные настройки: символы, которые могут разделять группы цифр, и символы десятичного разделителя. Обычно ассистивная технология задаёт эти параметры на основе кода страны в документе. Но код страны может отсутствовать, и тогда ассистивной технологии приходится определять формат по коду языка. - -* DecimalSeparators: "." # [по умолчанию] -* BlockSeparators: ", \u00A0\u202F" # [по умолчанию; включает два варианта неразрывных пробелов] +Во время навигации по выражению сочетание Ctrl+C копирует код MathML текущего узла выражения. + +В режиме навигации доступно гораздо больше возможностей. Все они описаны в разделе [«Все команды навигации»](#все-команды-навигации). + +## Настройка MathCAT + +MathCAT можно настроить в соответствии со своими потребностями. Чтобы открыть настройки в NVDA, нажмите NVDA+N, выберите «Параметры», затем «Настройки MathCAT». В списке категорий доступны три раздела: «Речь», «Навигация» и «Брайль». + +### Речь + +Ниже перечислены настройки речи и их возможные значения. Значение по умолчанию указано в квадратных скобках. + +- Особенности восприятия: + - \[Слепота.\] Озвучивание не допускает неоднозначности. + - Слабовидение. Озвучивание короче. + - Трудности в обучении. Озвучивание короче. +- Язык (по умолчанию используется язык экранного диктора): + - \[Английский (en)\] + - Немецкий (de) + - Греческий (el) + - Испанский (es) + - Финский (fi) + - Французский (fr) + - Венгерский (hu) + - Индонезийский (id) + - Норвежский букмол (nb) + - Польский (pl) + - Русский (ru) + - Шведский (sv) + - Вьетнамский (vi) + - Традиционный китайский (zh-tw) +- Стиль речи: + - \[ClearSpeak.\] Выражения произносятся примерно так, как их произнёс бы учитель на уроке. + - SimpleSpeak. Выражения произносятся короче, но иногда такое озвучивание может быть неоднозначным. +- Подробность: + - Краткая. Опускаются дополнительные слова, подобные артиклю и предлогу в английском выражении «the square root of x». + - \[Средняя.\] Компромисс между кратким и подробным озвучиванием. + - Подробная. Произносятся все слова, поэтому озвучивание не допускает неоднозначности. +- Скорость математической речи: + - \[100\], допустимы значения от 1 до 1000. Определяет скорость озвучивания математических выражений относительно скорости экранного диктора. Значение задаётся в процентах: 100 соответствует той же скорости, меньшее значение замедляет речь, а большее — ускоряет. +- Коэффициент пауз: + - \[1\], допустимы значения от 0 до 10. Определяет длительность пауз при озвучивании математических выражений. +- Звуковой сигнал: + - \[Нет.\] + - Сигнал. Перед каждым математическим выражением и после него воспроизводится звуковой сигнал. +- Химия: + - \[Озвучивать.\] Химические формулы читаются как формулы, например «H два O» для $H_2O$. + - Выключено. Для $H_2O$ произносится «H, нижний индекс 2, O». + +### Навигация + +MathCAT позволяет подробно изучать выражение, перемещаясь по нему и прослушивая отдельные части. В настройках навигации можно выбрать способ перемещения и требуемую подробность информации. + +Ниже перечислены настройки и их возможные значения. Значение по умолчанию указано в квадратных скобках. + +- Режим навигации при входе в выражение: + - \[Расширенный.\] Перемещение между математически значимыми частями выражения, например числителем, знаменателем, показателем степени и выражением в скобках. + - Простой. Перемещение по словам. Определённые конструкции, например квадратный корень, озвучиваются целиком. + - Посимвольный. Перемещение по словам или числам. После увеличения детализации каждая буква или цифра читается отдельно. + +Во время навигации режим можно изменить. Shift+стрелка вверх переключает с простого режима на расширенный или с посимвольного на простой. Shift+стрелка вниз переключает с расширенного режима на простой или с простого на посимвольный. Иными словами, движение вверх даёт более общий обзор, а движение вниз — более подробный. + +Также можно включить сброс режима навигации при каждом входе в выражение. По умолчанию этот флажок снят. + +- Речь после перемещения: + - \[Читать.\] Озвучивается часть выражения, в которой вы находитесь. + - Описывать. Озвучивается обзор выбранного выражения. + +Также можно включить сброс режима речи после каждого входа в выражение. По умолчанию этот флажок установлен. + +- Автоматически уменьшать детализацию после чтения части выражения, например корня: + - \[Включено.\] Флажок установлен. + - Выключено. Флажок снят. +- Подробность навигации: + - Краткая. Опускаются дополнительные слова, подобные артиклю и предлогу в английском выражении «the square root of x». + - \[Средняя.\] Компромисс между кратким и подробным озвучиванием. + - Подробная. Произносятся все слова, поэтому озвучивание не допускает неоднозначности. + +### Брайль + +Ниже перечислены настройки Брайля и их возможные значения. Значение по умолчанию указано в квадратных скобках. + +- Система математической записи Брайля для брайлевского дисплея: + - CMU. + - \[Код Немета.\] + - Шведская. + - UEB. + - Вьетнамская. +- Выделение текущей позиции в режиме навигации точками 7 и 8: + - Выключено. + - Первые символы. + - \[Крайние символы.\] + - Все символы. + +## Все команды навигации + +В таблице перечислены команды для навигации по математическому выражению. В первом столбце указана клавиша, во втором — действие клавиши без модификаторов, в третьем — действие с Ctrl, в четвёртом — с Shift, а в пятом — с Ctrl+Shift. + +Примечание: табличная математическая запись — это математическое содержимое в структуре таблицы, например матрица или система уравнений. По такой записи можно перемещаться как по таблице. + +| Клавиша | Без модификатора | + Ctrl | + Shift | + Ctrl + Shift | +| --- | --- | --- | --- | --- | +| Стрелка влево | Перейти к предыдущему элементу | В таблице: перейти к предыдущей ячейке.
В табличной записи: перейти к предыдущему элементу.
Также можно использовать Ctrl+Alt+стрелка влево. | Прочитать предыдущий элемент | Описать предыдущий элемент | +| Стрелка вправо | Перейти к следующему элементу | В таблице: перейти к следующей ячейке.
В табличной записи: перейти к следующему элементу.
Также можно использовать Ctrl+Alt+стрелка вправо. | Прочитать следующий элемент | Описать следующий элемент | +| Стрелка вверх | Уменьшить детализацию | В таблице: перейти к ячейке выше.
В табличной записи: перейти к элементу выше.
Также можно использовать Ctrl+Alt+стрелка вверх. | Перейти к более общему режиму навигации: расширенному, простому или посимвольному | Уменьшить детализацию до минимальной | +| Стрелка вниз | Увеличить детализацию | В таблице: перейти к ячейке ниже.
В табличной записи: перейти к элементу ниже.
Также можно использовать Ctrl+Alt+стрелка вниз. | Перейти к более подробному режиму навигации: расширенному, простому или посимвольному | Увеличить детализацию до максимальной | +| Enter | Сообщить текущую позицию | Сообщить полную текущую позицию |   |   | +| Цифры 1–10 (0 означает 10) | Перейти к метке позиции | Установить метку позиции | Прочитать содержимое метки позиции | Описать содержимое метки позиции | +| Пробел | Прочитать текущий элемент | Прочитать текущую ячейку | Переключить режим речи между чтением и описанием | Описать текущий элемент | +| Home | Перейти к началу выражения | Перейти к началу строки | В табличной записи: перейти к началу столбца.

В столбце: перейти к верхнему элементу |   | +| End | Перейти к концу выражения | Перейти к концу строки | В табличной записи: перейти к концу столбца.

В столбце: перейти к нижнему элементу |   | +| Backspace | Вернуться к предыдущей позиции |   |   |   | + +## Обратная связь + +MathCAT активно развивается, и нам важны ваши отзывы. Если вам нужна новая функция или вы обнаружили ошибку, создайте обращение [на странице MathCAT в GitHub](https://github.com/daisy/MathCAT/issues). Также можно присоединиться к [списку рассылки рабочей группы DAISY MathCAT](https://www.surveymonkey.com/r/HXTLXGN).