Что такое высокий регистр

Что значит петь выше? Регистры голоса у вокалиста.

Почему голос звучит то ниже, то выше — зависит от того, в каком певческом регистре голоса вы берете ноту. В этой статье мы поговорим кратко, какие бывают регистры голоса. Если вам уже известна данная тема и интересует практика, то советую упражнения на развитие певческих регистров и диапазон в разделе OVOCALE «Лайфхаки для голоса».

Какие регистры голоса есть у человека?

3 певческих голосовых регистра у вокалистов:

Регистры у вокалиста — это то, какой отрезок голосового диапазона он использует, верхний или нижний. Насколько сильно натянуты голосовые связки при пении, настолько выше будет певческий регистр. Регистры есть у каждого музыкального инструмента. Голос — это тоже музыкальный инструмент.

Что такое высокий регистр. Смотреть фото Что такое высокий регистр. Смотреть картинку Что такое высокий регистр. Картинка про Что такое высокий регистр. Фото Что такое высокий регистр

Как понять, в каком регистре звучит голос?

Если ваш музыкальный слух не развит, но вы хотите понять — ниже или выше вы поете, ориентируйтесь на ощущения в собственном теле. Где возникают вибрации при верхних и нижних нотах? Пытайтесь оценить окраску звука: звучит ли голос тонко, пискляво (верхние ноты) или грубо, плотно (внизу).

У вокалистов часто возникает такая проблема: верхний и нижний регистры не связаны между собой. Только что вы пели плотным красивым голосом, а потом словно что-то ломается, и вы переходите в пустой и тонкий звук (который часто зовут фальцетом).

Начальная постановка голоса у вокалистов «с нуля» часто сводится к тому, чтобы соединить верхний и нижний регистры голоса и избежать переходных нот на их стыке — переломов. Помогают в этом средние частоты, о которых поговорим ниже.

Средний регистр голоса, так называемый «микст», вызывает больше всего вопросов у новичков. Некоторые методики вокала выделяют средний регистр не как самостоятельный отрезок диапазона, а как участок голоса, где верхний и нижний регистры накладываются друг на друга и смешиваются. Отсюда и происходит название«микст».

Микст — это не верх и не низ, а нечто среднее. Представьте себе, что вы открываете воду в кране, одновременно холодную и горячую. В итоге они смешиваются, и поток воды становится теплым. Вот таким же теплым тембром окрашивается ваш голос, когда вы поете не одной «головой» или «грудью», а стремитесь их «перемешать».

Мы используем микст каждый день — в повседневной речи. Он же vocal speech. Разговорный голос насыщен средними частотами. Он кажется естественным, приятным по тембру. Поэтому многие педагоги советуют не петь, а «говорить» во время пения, чтобы показать естественную окраску голоса. Как и поступает большинство современных вокалистов.

Благодаря миксту у профессиональных вокалистов можно не услышать чисто головных нот и «переломов» голоса, так как они умело их маскируют. Голос звучит насыщенно и богато даже вверху.

Границы регистров у женского и мужского голоса

Что такое высокий регистр. Смотреть фото Что такое высокий регистр. Смотреть картинку Что такое высокий регистр. Картинка про Что такое высокий регистр. Фото Что такое высокий регистр

За счет того, что связки у мужчин плотнее и толще женских, грудной регистр у мужчин занимает бОльшую часть диапазона и резко переходит в верхний регистр (в так называемый «мужской фальцет»). Конечно, все приведенные на рисунках пределы регистров голоса у мужчин условны и индивидуальны у каждого человека. Данный пример относится больше к эстрадному вокалу.

Что такое высокий регистр. Смотреть фото Что такое высокий регистр. Смотреть картинку Что такое высокий регистр. Картинка про Что такое высокий регистр. Фото Что такое высокий регистр

Что такое высокий регистр. Смотреть фото Что такое высокий регистр. Смотреть картинку Что такое высокий регистр. Картинка про Что такое высокий регистр. Фото Что такое высокий регистр

Как использовать голосовые регистры в пении?

Вот несколько советов, как развить вокальные регистры голоса:

Какие регистры бывают в эстрадном вокале?

Разные методики эстрадного вокала упоминают свистковый (флейтовый, фистульный) регистр голоса, фальцетный, модальный (речевой) регистр, шумовой и штро-бас. Но, несмотря на различия, все школы вокала говорят о певческих регистрах делят их на три типа, которые мы уже обсуждали — высокий, средний и низкий.

    Высокочастотные: свистковый, фистульный, фальцетный регистры. Средние частоты: Модальный, речевой, микстовый регистр, speech voice Низкочастотные: шумовой и штро-бас

К сожалению, данные названия регистров часто употребляют в отрыве от контекста, без упоминаний откуда этот термин появился. Это вызывает путаницу у новичков. А среди педагогов по вокалу — ожесточенные споры, как назвать тот или иной регистр пения. Я советую не увлекаться терминами.

Работает не сама методика, а человек ее применяющий. Нужно изучать не только термины, но и свой голос в практике. Моя практика показывает, что ученикам легче различать регистры, отталкиваясь от «верхнего» и «нижнего». Так они понимают, что переходят к верхним и нижним нотам. Главная задача — научиться различать высоту звука, понимать, выше или ниже вы поете. А «голова» с «грудью», и вибрации в них, могут служить ориентирами.

Изучать и развивать певческие регистры важно для любого вокалиста, который хочет стать профессионалом. В блоге OVOCALE есть ряд упражнений из моей практики, которые помогут познакомиться с регистрами голоса и в короткие сроки расширить диапазон. Также их полезно применять в качестве разогрева голоса перед занятиями пением.

Так что бегом тренироваться!

Для любопытных. Пару слов о том, в чем различие названий певческих регистров. Шумовой регистр является частью нижнего, мы слышим его, когда говорим шепотом. В голосе много воздуха, но мало звука. Голосовые связки практически не смыкаются.

То же касается и модульного речевого регистра, который заменяет на западе полноценный грудной голос. В России «речевое пение» — это не самостоятельный отрезок диапазона, а добавление в голос средних частот, микст.

Свистковый же регистр признается всеми странами мира. И располагается в самом верхнем отрезке вашего диапазона, где звук становится очень высоким и напоминает свист, а у суперпрофессиональных вокалистов переходит в ультразвук. Часто используется в экстремальном пении.

Разработать такие ноты возможно даже мужчинам, у них фальцет может легко перейти в необъятный запас верхних свистковых звуков. Яркий пример использования — пение Mariah Carey у женщин и Adam Levin у мужчин. Вокальный свисток — явление уникальное с точки зрения работы голосовых связок, и мы еще поговорим о нем в других статьях.

Источник

Диапазон. Октавная система. Регистры

Общий объем звуков, которые могут быть исполнены на том или ином музыкальном инструменте или каким-либо человеческим голосом, называется музыкальным диапазоном.

Величина диапазона, естественно, бывает различной и зависит от возможностей самого инструмента или человеческого голоса, а также от мастерства исполнителя.

Даже у однородных голосов она колеблется: например, если сравнить двух певиц, обладающих колоратурным сопрано, то у одной диапазон голоса может оказаться больше, а у другой — меньше.

Или, скажем, один трубач может брать на своем инструменте такие высокие звуки, какие другому окажутся не под силу.

Диапазон же фортепиано — величина постоянная (88 звуков) и практически полностью охватывает весь звуковой состав, используемый в музыке* [Из инструментов больший, чем у фортепиано, диапазон имеет только орган.]

Выше уже говорилось, что семь основных ступеней диатонического звукоряда (а также и помещенные между ними на черных клавишах пять хроматических звуков) периодически повторяются по всей фортепианной клавиатуре в том же порядке, но на разных высотных уровнях, сохраняя при этом за собой те же названия.

Таким образом, каждый восьмой по счету на белых клавишах* [Если же считать подряд все клавиши — и белые, и черные, то есть отталкиваться от хроматического звукоряда, то повторением данной ступени явится каждый тринадцатый звук.] звук будет называться так же, как и его прототип, от которого начался счет.

Поскольку интервал, содержащий восемь ступеней, называется октавой, то вся система, расчленяющая клавиатуру фортепиано на семь с небольшим октав, называется октавной.

Известно, что соотношение чисел колебаний какого-либо данного звука и его повторения октавой выше всегда составляет 1:2 (то есть является наиболее простым), в результате чего частоты колебаний верхнего тона и второй гармоники нижнего тона совпадают.

Поэтому октавные звуки очень сходны по звучанию и, будучи взяты вместе, одновременно, почти полностью сливаются друг с другом. Однако каждый новый звук с таким же наименованием непременно будет находиться в другой октаве.

Отсчет семиступенных октавных звукорядов ведется от звука до, и каждый из них имеет свое название.

Так, октава, находящаяся в центре фортепианной клавиатуры, т.е. посредине всего диапазона звуков нашей музыкальной системы, называется первой*.

[Звуки именно этой октавы — полностью или частично — доступны всем разновидностям человеческих голосов и подавляющему большинству музыкальных инструментов.]

Следующие за ней по восходящей линии октавы называются по порядковым номерам: вторая, третья, четвертая и пятая, представленная только одним начальным звуком — до*. [На пианино и роялях, имеющих только 85 клавишей, последняя нота — ля четвертой октавы.]

Непосредственно ниже первой октавы находится так называемая малая октава, а за ней (вниз) следует большая октава.

Их названия восходят к тем временам, когда звуки нотировались буквами и звуки малой октавы обозначались строчными (то есть малыми) буквами, а большой — прописными (то есть большими, заглавными) буквами.

Что такое высокий регистр. Смотреть фото Что такое высокий регистр. Смотреть картинку Что такое высокий регистр. Картинка про Что такое высокий регистр. Фото Что такое высокий регистр

При слоговой или буквенной записи звуков октавы различаются следующим образом.

Звуки большой октавы обозначаются прописными (заглавными) буквами или соответствующими слогами, в которых начальные буквы — большие. Например: С, D, Е, F, G, А, Н или До, Рe, Мu, Фа, Соль, Ля, Си.

Звуки малой октавы обозначаются строчными (малыми) буквами или музыкальными слогами, записываемыми только малыми буквами. Например: с, d, е, f, g, a, h или до, ре, ми, фа, соль, ля, си.

Звуки первой октавы пишутся тоже только малыми буквами (или слогами из малых букв), с добавлением справа вверху цифры 1 (либо одной горизонтальной черты над буквой или слогом):

К звукам второй, третьей и более высоких октав добавляются — в соответствии с их порядковым номером — цифры 2, 3, 4, 5 или две, три и более черточек сверху. Например:

Что такое высокий регистр. Смотреть фото Что такое высокий регистр. Смотреть картинку Что такое высокий регистр. Картинка про Что такое высокий регистр. Фото Что такое высокий регистр

Звуки контроктавы и субконтроктавы обозначаются всегда большими буквами или музыкальными слогами, начинающимися с заглавных букв, с добавлением к ним справа внизу цифры 1 (для контроктавы) или 2 (для субконтроктавы), либо одной или, соответственно, двух горизонтальных черточек под буквой или слогом:

Что такое высокий регистр. Смотреть фото Что такое высокий регистр. Смотреть картинку Что такое высокий регистр. Картинка про Что такое высокий регистр. Фото Что такое высокий регистр

Общий диапазон музыкального звукоряда довольно велик, и отдельные его участки заметно различаются по характеру (или тембру) своего звучания.

Вместе с тем близлежащие звуки (то есть расположенные в пределах примерно двух-трех октав) обладают известной общностью своей звуковой окраски. Такие относительно крупные участки звукоряда, имеющие однородные или, во всяком случае, близкие тембровые свойства, называются регистрами.

Во всем музыкальном диапазоне имеется три основных регистра: низкий (или басовый), куда входят звуки субконтроктавы, контроктавы и большой октавы, средний, образуемый звуками малой, первой и второй октав, и высокий, включающий в себя третью, четвертую и пятую октавы (см. схему на стр. 34-35).

Низкий, средний и высокий регистры есть у любых музыкальных инструментов и у человеческих голосов. Однако их диапазоны значительно уже, чем общий диапазон. Зачастую они могут и не совпадать у разных инструментов или голосов.

Так, например, звуки низкого регистра скрипки у виолончели образуют средний регистр, звуки низкого регистра сопрано и тенора входят частично в средний и в высокий регистр. А регистры у колоратурного сопрано и флейты почти одинаковы ввиду близости самих их диапазонов.

Нотная запись звуков, относящихся к очень высокому или, наоборот, очень низкому регистрам (то есть входящих в состав двух крайних октав сверху и снизу), требует использования большого количества добавочных линий, что затрудняет беглое чтение нот.

В таких случаях для облегчения визуального восприятия нотного текста запись очень высоких (или очень низких) нот чаще всего упрощается, то есть производится в более привычных регистрах — октавой (иногда и двумя октавами) ниже (или выше) реального звучания, но при этом над ними (или под ними) ставятся знаки октавного переноса (8———- или 88———-), указывающие, что данные звуки должны исполняться, соответственно, октавой (двумя) выше или ниже написанного. Например:

[Allegretto, quasi doppio movimento] С. Прокофьев. Кантата «Александр Невский»

Что такое высокий регистр. Смотреть фото Что такое высокий регистр. Смотреть картинку Что такое высокий регистр. Картинка про Что такое высокий регистр. Фото Что такое высокий регистр

Что такое высокий регистр. Смотреть фото Что такое высокий регистр. Смотреть картинку Что такое высокий регистр. Картинка про Что такое высокий регистр. Фото Что такое высокий регистр

следует исполнять:

[Allegretto, quasi doppio movimento] С. Прокофьев. Кантата «Александр Невский»

Что такое высокий регистр. Смотреть фото Что такое высокий регистр. Смотреть картинку Что такое высокий регистр. Картинка про Что такое высокий регистр. Фото Что такое высокий регистр

Что такое высокий регистр. Смотреть фото Что такое высокий регистр. Смотреть картинку Что такое высокий регистр. Картинка про Что такое высокий регистр. Фото Что такое высокий регистр

написано: [Adagio = 48] С. Прокофьев. Кантата «Александр Невский»

Что такое высокий регистр. Смотреть фото Что такое высокий регистр. Смотреть картинку Что такое высокий регистр. Картинка про Что такое высокий регистр. Фото Что такое высокий регистр

исполняется: [Adagio = 48] С. Прокофьев. Кантата «Александр Невский»

Источник

В середине XIX века педагог по вокалу Мануэль Гарсиа-младший выдвинул трехрегистровую теорию. В ней отводилось место среднему регистру у женщин, и фальцету – у мужчин. Сегодня, в западной методике преподавания вокала фальцетом считаются все высоко пропетые ноты. В то время как в России, фальцет больше относится к певческим приемам, чем к отдельным регистрам.

Основные виды вокальных регистров

Голосовые регистры зависят от натяжения и частоты вибрации голосовых связок (складок). Низкочастотные колебания расслабленных связок рождают глубокие низкие тяжелые звуки. При предельно натянутых складках, вибрирующих с высокой частотой, звук становится звонче, выше, тоньше. Певческий диапазон включает три основных вида регистров голоса:

Что такое высокий регистр. Смотреть фото Что такое высокий регистр. Смотреть картинку Что такое высокий регистр. Картинка про Что такое высокий регистр. Фото Что такое высокий регистр

Некоторым певцам микстовое звукообразование дано природой, другим приходится этому учиться. С медицинской точки зрения использование среднего регистра голоса считается самым безопасным для голосовых связок.

Что такое высокий регистр. Смотреть фото Что такое высокий регистр. Смотреть картинку Что такое высокий регистр. Картинка про Что такое высокий регистр. Фото Что такое высокий регистр

Аксессуарные виды регистров

Для более детального деления приняты еще два вида регистров:

У начинающих вокалистов, в момент регистрового перестроения, звук как бы спотыкается. Опытные певцы знают, как соединить нижний и верхний регистр голоса воедино. Тогда звучание станет однородным на протяжении всего диапазона.

Обучить этому искусству может педагог по вокалу. А дополнить занятия рекомендуется приемом «Гомеовокс». Препарат, созданный на основе растительных компонентов, смягчит голосовые связки, и сбережет здоровье гортани во время занятий пением.

Источник

Что такое регистр

Основные виды регистров

Мы слышим его в обыденной разговорной речи. Средний регистр насыщен средними частотами, кажется нам естественным и приятным. Профессиональные певцы искусно владеют им для незаметных переходов с головного регистра на низкий. Так как именно тут часты провалы у новичков. Ухо улавливает перелом в звучании, что не красит песню.

Немного истории

Как понять в каком регистре ты поешь?

Что такое высокий регистр. Смотреть фото Что такое высокий регистр. Смотреть картинку Что такое высокий регистр. Картинка про Что такое высокий регистр. Фото Что такое высокий регистр

Чтобы узнать регистр собственного голоса, нужно внимательно прислушаться к себе, звучанию издаваемых нот. Можно положить руку на грудную клетку. Если при пении вибрирует в этом месте, звук слышится плотный, насыщенный, то регистр певческого голоса вашего сейчас низкий.

При использовании высокого звучания, грудь пуста, но голос становится звонче и слышен в голове, затылке.

То есть место вибрации поможет понять в каком певческом регистре звучит голос. А сопрано, бас или тенор у вас, поможет определить наша следующая статья.

Как использовать регистры в пении?

Каждый человек имеет свой индивидуальный тембр, окраску голоса. Может использовать несколько регистров. Его репертуар становится шире, богаче, ярче окрашен. Но с чего начать? Вот несколько советов:

Узнать свой регистр певческого голоса, развить координацию голоса несложно. Надо желание, упорство и хороший преподаватель.

Источник

Правда о регистре символов, которую должны знать программисты

На конференции North Bay Python в 2018 году я делал доклад об именах пользователей. Информация из доклада по большей части была собрана мною за 12 лет поддержки django-registration. Этот опыт дал мне гораздо больше знаний, чем я планировал получить, о том, насколько сложными могут быть «простые» вещи.

В начале доклада я, правда, упомянул, что это не будет очередное разоблачение из серии «заблуждения по поводу Х, в которые верят программисты». Таких разоблачений можно найти сколько угодно. Однако мне подобные статьи не нравятся. В них перечисляются разные вещи, якобы являющиеся ложными, однако очень редко объясняется – почему это так, и что нужно делать вместо этого. Подозреваю, что люди просто прочтут такие статьи, поздравят себя с этим достижением, и потом пойдут находить новые интересные способы делать ошибки, не упомянутые в этих статьях. Всё потому, что они на самом деле не поняли проблем, порождающих этих ошибки.

Поэтому в своём докладе я постарался как можно лучше объяснить некоторые проблемы и пояснить, как их решать – такой подход мне нравится гораздо больше. Одна из тем, которой я коснулся лишь вскользь (это был всего один слайд и пара упоминаний на других слайдах) – это сложности, которые могут быть связаны с регистром символов. Для задачи, которую я обсуждал – сравнение идентификаторов без учёта регистра – есть официальный Правильный Ответ™, и в докладе я дал лучшее из известных мне решений, использующее только стандартную библиотеку Python.

Однако я кратко упомянул о более глубоких сложностях с регистром символов в Unicode, и хочу посвятить некоторое время описанию подробностей. Это интересно, и понимание этого может помочь вам принимать решения при проектировании и написании кода, обрабатывающего текст. Поэтому предлагаю вам нечто противоположное статьям «заблуждения по поводу Х, в которые верят программисты» – «правда, которую должны знать программисты».

И ещё одно: в Unicode полно терминологии. В данной статье я буду использовать в основном определения «верхний регистр» и «нижний регистр», поскольку стандарт Unicode использует эти термины. Если вам нравятся другие термины, вроде строчная/прописная буквы – всё нормально. Также я часто буду использовать термин «символ», который некоторые могут счесть некорректным. Да, в Unicode концепция «символа» не всегда совпадает с ожиданиями людей, поэтому часто лучше избегать её, используя другие термины. Однако в данной статье я буду использовать этот термин так, как он используется в Unicode – для описания абстрактной сущности, о которой можно делать заявления. Когда это важно, для уточнения я буду использовать более конкретные термины типа «кодовой позиции» [code point].

Регистров бывает больше двух

Носители европейских языков привыкли к тому, что в их языках регистр символов используется для обозначения конкретных вещей. К примеру, в английском [и русском] языках мы обычно начинаем предложения с буквы в верхнем регистре, а продолжаем чаще всего буквами в нижнем регистре. Также имена собственные начинаются с букв в верхнем регистре, и многие акронимы и аббревиатуры записываются в верхнем регистре.

И мы обычно считаем, что регистров существует всего два. Есть буква «А», и есть буква «а». Одна в верхнем, другая в нижнем регистре – не правда ли?

Однако в Unicode есть три регистра. Есть верхний, есть нижний, и есть титульный регистр [titlecase]. В английском языке так записываются названия. Например, «Avengers: Infinity War». Обычно для этого первая буква каждого слова просто пишется в верхнем регистре (и в зависимости от разных правил и стилей, некоторые слова, например, артикли, не пишутся с заглавных букв).

В стандарте Unicode дан такой пример символа в титульном регистре: U+01F2 LATIN CAPITAL LETTER D WITH SMALL Z. Выглядит он так: Dz.

Подобные символы иногда требуются для обработки негативных последствий одного из ранних решений разработки стандарта Unicode: совместимости с существующими текстовыми кодировками в обе стороны. Для Unicode было бы удобнее составлять последовательности при помощи имеющихся у стандарта возможностей по комбинированию символов. Однако во многих уже существующих системах уже были отведены места для готовых последовательностей. К примеру, в стандарте ISO-8859-1 («latin-1») у символа «é» есть готовая форма, имеющая номер 0xe9. В Unicode предпочтительнее было бы писать эту букву при помощи отдельной «е» и знака ударения. Но для обеспечения полной совместимости в обе стороны с такими существующими кодировками, как latin-1, в Unicode также назначены кодовые позиции для готовых символов. К примеру, U+00E9 LATIN SMALL LETTER E WITH ACUTE.

Хотя кодовая позиция этого символа совпадает с его байтовым значением из latin-1, полагаться на это не стоит. Вряд ли кодирование символов в Unicode сохранит эти позиции. К примеру, в UTF-8 кодовая позиция U+00E9 записана в виде байтовой последовательности 0xc3 0xa9.

И, конечно, в уже существующих кодировках есть символы, которым требовалось особое обхождение при использовании титульного регистра, из-за чего они были включены в Unicode «как есть». Если хотите посмотреть на них, поищите в своей любимой базе Unicode символы из категории Lt («Letter, titlecase»).

Есть несколько способов определить регистр

Если вы работаете с ограниченным подмножеством символов (конкретно, с буквами), то вам может хватить и 1-го определения. Если ваш репертуар шире – в него входят похожие на буквы символы, не являющиеся буквами, вам может подойти 2-е определение. Его рекомендует и стандарт Unicode, §4.2:

Программистам, манипулирующим строками в Unicode, стоит работать с такими строковыми функциями, как isLowerCase (и её функциональным родственником toLowerCase), если они не работают со свойствами символов напрямую.

Упомянутая здесь функция определяется в §3.13 стандарта Unicode. Формально в 3-м определении используются функции isLowerCase и isUpperCase из §3.13, определяемые в терминах фиксированных позиций в toLowerCase и toUpperCase соответственно.

Если в вашем языке программирования есть функции для проверки или преобразования регистра строк или отдельных символов, стоит изучить, какие из упомянутых определений используются в реализации. Если вам интересно, то методы isupper() и islower() в Python используют 2-е определение.

Нельзя понять регистр символа по его внешнему виду или названию

По внешнему виду многих символов можно понять, в каком они регистре. К примеру, «А» находится в верхнем регистре. Это понятно и по названию символа: «LATIN CAPITAL LETTER A». Однако иногда такой метод не работает. Возьмём кодовую позицию U+1D34. Выглядит она так: ᴴ. В Unicode ей назначено имя: MODIFIER LETTER CAPITAL H. Значит, она в верхнем регистре, так?

На самом же деле она наследует свойство Lowercase, поэтому по определению №2 она находится в нижнем регистре, несмотря на то, что визуально напоминает заглавную Н, а в названии есть слово «CAPITAL».

У некоторых символов вообще нет регистра

Символ С имеет регистр тогда и только тогда, когда у С есть свойство Lowercase или Uppercase, или значение параметра General_Category равно Titlecase_Letter.

Значит, очень много символов из Unicode – на самом деле, большая их часть – регистра не имеет. Не имеют смысла вопросы об их регистре, а изменения регистра на них не действуют. Однако мы можем получить ответ на этот вопрос по определению №3.

Некоторые символы ведут себя так, будто у них несколько регистров

Из этого следует, что если вы используете определение №3, и задаёте вопрос, находится ли символ без регистра в верхнем или нижнем регистре, вы получите ответ «да».

В стандарте Unicode даётся пример (таблица 4-1, строка 7) символа U+02BD MODIFIER LETTER REVERSED COMMA (который выглядит так: ʽ). У него нет унаследованных свойств Lowercase или Uppercase, он не принадлежит к категории Lt, поэтому регистра у него нет. При этом преобразование в верхний регистр его не меняет, и преобразование в нижний регистр его не меняет, поэтому по 3-му определению он отвечает «да» на оба вопроса: «принадлежишь ли ты к верхнему регистру?» и «принадлежишь ли ты к нижнему регистру?»

Кажется, что из-за этого может возникнуть никому не нужная путаница, однако смысл в том, что определение №3 работает с любой последовательностью символов Unicode, и позволяет упростить алгоритмы преобразования регистра (символы без регистра просто превращаются сами в себя).

Регистр зависит от контекста

Можно подумать, что если таблицы преобразования регистра в Unicode покрывают все символы, то это преобразование заключается просто в поиске нужного места в таблице. К примеру, в базе данных Unicode записано, что для символа U+0041 LATIN CAPITAL LETTER A нижним регистром будет U+0061 LATIN SMALL LETTER A. Просто, не так ли?

Один из примеров, в котором этот подход не работает – греческий язык. Символ Σ — то есть, U+03A3 GREEK CAPITAL LETTER SIGMA — сопоставлен двум разным символам при преобразовании в нижний регистр, в зависимости от того, где он находится в слове. Если он стоит на конце слова, тогда в нижнем регистре он будет ς (U+03C2 GREEK SMALL LETTER FINAL SIGMA). В любом другом месте это будет σ (U+03C3 GREEK SMALL LETTER SIGMA).

Регистр зависит от локали

В разных языках правила преобразования регистра разные. Самый популярный пример: i (U+0069 LATIN SMALL LETTER I) и I (U+0049 LATIN CAPITAL LETTER I) в большинстве локалей преобразовываются друг в друга – в большинстве, но не во всех. В локалях az и tr (тюркские языки), i в верхнем регистре будет İ (U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE), а I в нижнем регистре будет ı (U+0131 LATIN SMALL LETTER DOTLESS I). Иногда правильная запись реально означает разницу между жизнью и смертью.

Сам Unicode не обрабатывает все возможные правила преобразования регистра для всех локалей. В базе данных Unicode есть только общие правила преобразования всех символов, не зависящие от локали. Также там есть особые правила для некоторых языков и составных форм – литовского языка, тюркских языков, некоторых особенностей греческого. Всего остального там нет. §3.13 стандарта упоминает это и рекомендует при необходимости вводить правила преобразования, зависящие от локали.

Один пример будет знаком англоговорящим – это титульный регистр определённых имён. «o’brian» нужно преобразовывать в «O’Brian» (а не в «O’brian»). Однако при этом «it’s» нужно преобразовывать в «It’s», а не в «It’S». Ещё один пример, который не обрабатывается в Unicode – это голландское буквосочетание «ij», которое при преобразовании в титульный регистр должно переходить в верхний регистр целиком, если стоит в начале слова. Таким образом, большой залив в Нидерландах в титульном регистре будет «IJsselmeer», а не «Ijsselmeer». В Unicode есть символы IJ U+0132 LATIN CAPITAL LIGATURE IJ и ij U+0133 LATIN SMALL LIGATURE IJ, если они вам нужны. По умолчанию преобразование регистра преобразует их друг в друга (хотя формы нормализации Unicode, использующие эквивалентность совместимости, разделят их на два отдельных символа).

Сравнение без учёта регистра требует приведения к сложенному регистру

Возвращаясь к материалу, представленному в докладе. Сложность работы с регистром в Unicode означает, что регистронезависимое сравнение нельзя проводить при помощи стандартных функций приведения к нижнему или верхнему регистру, имеющихся во многих языках программирования. Для таких сравнений в Unicode есть концепция приведения к сложенному регистру [case folding], а в §3.13 стандарта определяются функции toCaseFold и isCaseFolded.

Можно решить, что приведение к сложенному регистру похоже на приведение к нижнему регистру – но это не так. Стандарт Unicode предупреждает, что строка в сложенном регистре не обязательно будет находиться в нижнем регистре. В качестве примера приводится язык чероки – там в строке, находящейся в сложенном регистре, будут попадаться и символы в верхнем регистре.

На одном из слайдов моего доклада рекомендации Unicode Technical Report #36 реализуются на Python настолько полно, насколько это возможно. Проводится нормализация NFKC и потом для полученной строки вызывается метод casefold() (доступный только в Python 3+). И даже при этом некоторые крайние случаи выпадают, и это не совсем то, что рекомендуется для сравнения идентификаторов. Сначала плохие новости: Python не выдаёт наружу достаточно свойств Unicode для того, чтобы отфильтровать символы, которых нет в XID_Start или XID_Continue или символы, имеющие свойство Default_Ignorable_Code_Point. Насколько мне известно, он не поддерживает отображение NFKC_Casefold. Также в нём нет простого способа использовать модифицированный NFKC UAX #31§5.1.

Хорошие новости: большинство этих крайних случаев не связано с какими-либо реальными рисками безопасности, создаваемыми рассматриваемыми символами. И складывание регистра в принципе не определяется как операция, сохраняющая нормализацию (отсюда и отображение NFKC_Casefold, которое повторно нормализуется до NFC после складывания регистра). Как правило, при сравнении вас не волнует, будут ли обе строки нормализованы после предварительной обработки. Вас заботит, не противоречива ли предварительная обработка, и гарантирует ли она, что только строки, которые «должны» отличаться впоследствии, будут отличаться впоследствии. Если вас это беспокоит, вы можете вручную выполнить повторную нормализацию после сложения регистра.

Пока достаточно

Эта статья, как и предыдущий доклад, не является исчерпывающей, и вряд ли можно уложить весь этот материал в единственный пост. Надеюсь, что это был полезный обзор сложностей, связанных с этой темой, и вы найдёте в нём достаточно отправных точек для того, чтобы искать дальнейшую информацию. Поэтому в принципе, можно остановиться и тут.

Не будет ли наивной моя надежда на то, что другие люди перестанут писать разоблачения из серии «заблуждения по поводу Х, в которые верят программисты», и начнут уже писать статьи типа «правда, которую должны знать программисты»?

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *