Регистр глифа
К сведению
Регистр глифа основан на свойствах регистра символа, определённых в стандарте Юникода.
Регистр (Case) — два глифа одного абстрактного символа бикамеральной письменности.
Бикамеральная письменность — алфавит с двумя вариантами написания букв.
В бикамеральной (двухпалатной) письменности различают глифы нижнего и верхнего регистров. В тексте регистр применяют смешанным образом в соответствии с грамматикой письменности или правилами формального языка (например, программирования).
Даже в бикамеральной письменности в некоторых контекстах используют только один регистр. Например, инженерные чертежи принято обозначать только в верхнем регистре. В ограниченном пространстве чертежа верхний регистр легче различать чем нижний регистр. В математике глифы верхнего и нижнего регистра обозначают разные математические объекты.
Варианты глифов одного символа в разных регистрах.
Символ верхнего регистра (Uppercase) — любой символ Юникода, для которого в свойстве Case property явно указано одно из значений: Uppercase, Uppercase_Mapping, Simple_Uppercase_Mapping.
Символ нижнего регистра (Lowercase) — любой символ Юникода, для которого в свойстве Case property явно указано одно из значений: Lowercase, Lowercase_Mapping, Simple_Lowercase_Mapping.
Прописная буква, капитель, маюскул (Uppercase, Capital Letter) — буква верхнего регистра.
Капитализация (Capitalisation) — способ написания слов, при котором первый глиф пишут в верхнем регистре, а остальные — в нижнем регистре.
Например, капитализацию употребляют в начале предложения или для обозначения имён собственных.
Заголовочный регистр (Titlecase) — то же, что капитализация. Соглашение записывать в верхнем регистре первую букву в наименованиях, заголовках и других согласованных случаях.
Строчная буква, минускул (Lowercase) — буква нижнего регистра.
Капитель (Small capitals) — глиф верхнего регистра, но высотой и насыщенностью как глиф нижнего регистра.
Сопоставление регистров (Case Mapping) — сопоставление форм глифов нижнего и верхнего регистра.
Некоторые глифы верхнего и нижнего регистров имеют одинаковую форму. Например, С и с, П и п, Н и н. У других форма в разных регистрах отлична. Например, А и а, Б и б, Е и е.
Игнорирование регистра (Case-Ignorable) — способ не учитывать регистр глифа.
Внутренний верхний регистр (Inner Caps) — формат со смешанным регистром, при котором глиф верхнего регистра стоит не на первой позиции, а в середине слова.
Например, кельтские фамилии с префиксом Мак (Mc): МакЛарен, McLaren.
Свёртка регистра (Case Folding) — приведение строк к определённому регистру для облегчения поиска и сортировки текста.
Символы верхнего и нижнего регистров закодированы отдельно. При сортировке, поиске или программной обработке это требует отдельных операций. Свёртка регистра полезна там, где нет необходимости в различении регистра. И это очень распространённая практика компьютерных приложений. Многие языки программирования высокого уровня предоставляют простые методы преобразования регистра. Учитывать ли различия регистра, зависит от контекста. Например, пароли пользователя чувствительные к регистру. Это обеспечивает большее разнообразие. Напротив, при поиске по ключевым словам регистр игнорируют.
Стили использования регистров
Стиль использования глифов верхнего и нижнего регистров зависит от ситуации. В гипертексте различают следующие стили применения регистров:
- стиль регистра предложения;
- заголовочный стиль регистра;
- начальный стиль регистра;
- стиль верхнего регистра (капитализация);
- стиль регистра капители (капительный стиль);
- стиль нижнего регистра;
- стиль внутреннего верхнего регистра.
Стиль регистра предложения (Sentence case style) — смешанный стиль, в котором первое слово предложения пишут с заглавной буквы, а остальные слова со строчной буквы.
На примере панграммы: «Съешь же ещё этих мягких французских булок да выпей чаю».
Заголовочный стиль регистра (Titlecase style, Capital case style, Headline style) — стиль, в котором все основные части предложения (подлежащее, сказуемое, дополнение) пишут с заглавной буквы, а все мелкие части (союзы, предлоги, частицы, местоимения, наречия) — в нижнем регистре.
Правила капитализации в заголовочном стиле обычно сформулированы в руководстве по стилю организации. Универсальных правил не существует. На примере панграммы: «Съешь же ещё этих Мягких Французских Булок да Выпей Чаю».
Начальный стиль регистра (Start case style) — стиль, в котором все слова предложения пишут с заглавной буквы.
Упрощённый вариант заголовочного стиля регистра, в котором нет исключений для каких-либо частей речи. На примере панграммы: «Съешь Же Ещё Этих Мягких Французских Булок Да Выпей Чаю».
Стиль верхнего регистра, капитализация (Uppercase style) — стиль, в котором использованы только глифы верхнего регистра.
Стиль верхнего регистра (капитализацию) используют для написания заголовков глав и разделов, названий публикаций, предупреждений (если выноски отсутствуют) и выделения важных слов. Капитализацию применяют в случае, если по каким-то причинам невозможно применить другие способы начертания, в первую очередь насыщенность.
Длинные фрагменты текста, написанные только заглавными буквами, трудно читать из-за отсутствия выносных и нисходящих элементов глифа. На примере панграммы: «СЪЕШЬ ЖЕ ЕЩЁ ЭТИХ МЯГКИХ ФРАНЦУЗСКИХ БУЛОК ДА ВЫПЕЙ ЧАЮ».
Стиль нижнего регистра (Lowercase style) — стиль, в котором использованы только глифы нижнего регистра.
На примере панграммы: «съешь же ещё этих мягких французских булок да выпей чаю».
Стиль регистра капители (Small caps style) — стиль, в котором в качестве строчных букв применена капитель (малые прописные).
Строки выглядят очень похожими на стиль верхнего регистра. Однако размер букв соответствует строчным буквам. В современной кириллице большинство строчных букв прямого начертания полностью повторяет штрихи заглавных. Поэтому в русской типографике капитель применяют крайне редко. Капитель применяют в аббревиатурах (например, HTML), для набора римских цифр (например, XXI век).
В языке разметки CSS можно задать начертание капителью и браузер синтезирует её. Например:
font-variant: small-caps;
либо
font-feature-settings: "smcp";На примере панграммы: «Съешь же ещё этих мягких французских булок да выпей чаю».
Стиль внутреннего верхнего регистра (Inner case) — стиль, в котором пропущены пробелы, а все слова записаны с заглавной буквы. Аналогично начальному стилю регистра, но без пробелов.
На примере панграммы: «СъешьЖеЕщёЭтихМягкихФранцузскихБулокДаВыпейЧаю».
Регистр в языках программирования
Грамматика языков программирования отлична от грамматики естественного языка. Правила регистра глифов в языке программирование связаны в обработкой кода, а не с отображением. Правила формулируют по принципу «необходимо и достаточно», никаких излишеств, что позволяет довольно долго поддерживать унаследованный программный код. Например, количество видов используемых пробелов сокращено до минимума: простой пробел и табуляция как последовательность простых пробелов.
Использовать составные идентификаторы рекомендуют многие руководства стилем программирования: Mesa, Pascal, Modula, Java и Microsoft .NET. В руководствах обычно уточняют какой вариант следует применять для определённых типов сущностей: переменных, полей записей, методов, процедур, функций, подпрограмм, типов. Инструменты статистического анализа поддерживают подобные правила при проверке исходного кода.
Историческая справка
Применение смешанного регистра в программировании возникло ещё на заре компьютерной эры. На конференции в 1954 году компания IBM представила доклад о системе Speedcoding, которая в материалах упоминалась как SpeedCo. В 1965 году в своей статье Кристофер Стрейчи (Christopher Strachey) пишет об идентификаторах, записанных с заглавными буквами в середине слова: NextCh, WriteSymbol и другие. Вероятно, подобный стиль записи пришёл из языка Combined Programming Language (CPL), предшественника языка программирования Си (C).
С проблемой многословных идентификаторов программисты столкнулись как только появились языки программирования высокого уровня. В языках Lisp (1958), COBOL (1959) эту проблему решали, позволяя использовать дефис между словами: END-OF-FILE, CHAR-TABLE. Выработанные в те годы соглашения действуют и сегодня. Например, в наименованиях программ, вызываемых посредством командной строки Unix: pybind-dev, pyinstaller-hooks-contrib, pymatgen-test-files.
В конце 1960-х годов благодаря широкому распространению набора символов ASCII появилась возможность применения строчных букв и символа подчёркивания. До этого перфокарты использовали лишь заглавные буквы. После этого некоторые языки программирования перешли к стилю подчёркивания в качестве разделителя слов идентификаторов. В частности наименования типа end_of_file до сих пор превалируют в библиотеках языка С, а также в более поздних языках, на которые повлиял С: языки Perl, Python.
Однако не все программисты перешли к стилю подчёркивания. Примерно в 1978 году в компании Xerox PARC разработали язык программирования Mesa. Руководство программиста к этому языку включало правила кодирования библиотек Mesa. В этих правилах описан стиль внутреннего внешнего регистра. Позже эти правила стали соблюдать и в операционной системе Alto. Никлаус Вирт (Niklaus Wirth) тесно сотрудничал с Xerox PARC и перенял многие правила, внедрив их в свои языки программирования Pascal и Modula.
В языке Smalltalk, разработанном для операционной системы Alto, также использовали стиль внутреннего верхнего регистра вместо подчёркивания. Этот язык стал популярен в 1980-х годах и правила наименования идентификаторов стали широко известны.
В последние тридцать лет стиль внутреннего верхнего регистра (Inner case) породил множество вариаций:
- camelBack notation, CamelCaps;
- camel case, CamelCase;
- CapitalizedWords, CapWords (стиль верхнего регистра в Python);
- compoundNames;
- Embedded caps, embedded capitals;
- HumpBack, hump-back notation;
- InterCaps, intercapping, Internal Capitalization;
- medial capitals (этот вариант рекомендует словарь Oxford English Dictionary);
- mixedCase (стиль нижнего регистра в Python);
- PascalCase (в языке программирования Pascal);
- Smalltalk case (в языке логического программирования Smalltalk);
- WikiWord, WikiCase (для разметки в приложениях вики).
В области Интернета первое упоминание о применении стиля внутреннего верхнего регистра (Inner case) появилось в сети Usenet в апреле 1990 года в группе alt.folklore.computers.
Применение стиля внутреннего верхнего регистра
Различные варианты стиля внутреннего верхнего регистра широко распространены в технической документации и языках программирования. В современной инженерной практике закрепились следующие варианты:
- «Верблюжий» стиль верхнего регистра (Camelcase style), в котором первый глиф представлен в верхнем регистре. Стиль часто называют «Паскаль-регистр» (Pascal case), в честь языка программирования Pascal, который первым начал применять этот стиль.
- «Верблюжий» стиль нижнего регистра, в котором первый глиф представлен в нижнем регистре. Такой способ ещё называют «дромадерным» (Dromedary case). Подобное написание очень популярно в наименовании электронных устройств, программных продуктов и сервисов. Например, iPod, eBay, eMail, eCommerce.
- «Змеиный» стиль (Snake case), в котором слова разделены символами подчёркивания. Обычно буквы имеют одинаковый регистр верхний или нижний.
- «Колдобины» (Pothole case) — стиль именования переменных в языке программирования Python. Это разновидность «змеиного» стиля, в котором вначале идут слова верхнего регистра, а затем через подчёркивание слова нижнего регистра. Существует вариация — стиль «кричащей змеи» (SCREAMING_SNAKE_CASE, hazard case), в котором все буквы в словах между знаками подчёркивания верхнего регистра.
- Стиль «кебаба» (Kebab case, Spinal case, Param case, Lisp case), в котором слова нижнего регистра разделены дефисами. Например, этот стиль применяют в языке CSS для наименований свойств компонентов гипертекста.
- Стиль «поезда», «паровоз» (Train case, TRAIN-CASE) — разновидность стиля «кебаба», в котором каждом слово пишут в верхнем регистре.
- Среднеточечный стиль (Middot case) — разновидность стиля «кебаба», в котором слова разделены не дефисами, а средней точкой (· U+00B7,
·). Этот стиль доступен многим языкам программирования, поддерживающим Юникод. В отличие от дефиса при использовании точки не возникают конфликты с зарезервированными обозначениями операторов.
Существуют комбинированные подходы к стилю регистра. Например, стандарт Юникод использует сочетание «змеиного» и «верблюжьего» стилей регистров в свойствах символов. Наименования:
- пишут без пробелов, но вместо пробелов используют знак подчёркивания («змеиный стиль»);
- все слова в нижнем регистре, но с заглавной буквы («верблюжий» стиль верхнего регистра).
«Верблюжий» стиль верхнего регистра используют многие приложения вики. Как правило, они автоматически преобразуют подобные строки в гиперссылки на другие страницы вики. Это соглашение использовало оригинальное приложение WikiWikiWeb, откуда его унаследовали другие приложения вики.
Оформление данных в формате XML требует явных правил использования регистра в атрибутах XML.
Большинство операционных систем при обработке файлов в командной строке не допускают пробелов в именах этих файлов. Для вызова подобных файлов используют либо экранирование пробелов, либо заключение наименования файла в кавычки. Не очень удобно. Проще использовать «Верблюжий» стиль верхнего регистра при формировании наименования файла.
Ещё одной областью применения «Верблюжий» стиль верхнего регистра служат хэштеги для обеспечения читабельности. Например, хэштег #вопросыВебПрограммирования читать гораздо легче, чем #вопросывебпрограммирования.