Продолжаем эксперименты по подбору шрифта с засечками, который подходит для набора нот. Сегодня — шрифт Kazimir Text, обнаруженный на сайте РБК.
Kazimir Text — статичная антиква с простой графикой. Это версия заголовочного Kazimir’a предназначенная для использования в основном наборе. У Kazimir Text шире пропорции, уменьшен контраст и сильно расширена кодовая таблица. Пересмотрен набор альтернатив Irregular — их логика адаптирована к использованию в небольших кеглях. Выбор насыщенностей тоже стал больше: 11 прямых и 11 курсивных начертаний.
Некоторые заглавные буквы (З, М, Э) выглядят странновато, но в целом пользоваться можно. Кроме того, в шрифте есть буквы для текстовъ въ дореволюціонной орѳографіи и на некоторых тюркских языках.
Весь набор десктоп- и веб-версии продаётся за 360 долларов или 43920 рублей, отдельное начертание — 50 USD или 4880 RUB. Бесплатная тестовая лицензия разрешает пробовать шрифт два дня на двух устройствах.
В нотном редакторе MuseScore (теперь MuseScore Studio) по умолчанию для текста используется похожий на Школьную гарнитуру шрифт Edwin. Разработчики пишут на Гитхабе, что это — просто переименованное шрифтовое семейство C059 из набора Core 35 компании URW++ Design and Development GmbH (она же — URW type foundry), которая теперь вошла в состав Monotype. Четыре года назад я уже смотрел, как Edwin выглядит в нотах — тогда мне не понравились заглавные кириллические З и Э. Оказалось, что C059 установлен в системе, хоть я и не помню, чтобы явно ставил пакет fonts-urw-base35 — скорее всего, он установлен автоматически как зависимость для GIMP и LilyPond. А вообще первый сраз сравнивать разные шрифты, похожие на Школьную, я пробовал ещё в 2009 году — тогда Century Schoolbook L из лилипонда была совсем ужасной в кириллической части.
Надо бы написать багрепорт, но кому? То ли разработчикам MuseScore, потому что именно там я пользуюсь шрифтом, то ли разработчикам шрифта на github.com/ArtifexSoftware/urw-base35-fonts, но там нет особого движения — файлы шрифта C059 менялись девять лет назад, в 2017 году. Я как-то создавал багрепорт 690896 для гостскрипта всё в том же 2009 году, когда сравнивал шрифты — он четыре года провисел без движения, после чего разработчики решили, что предложенные мной изменения недостаточно хороши, но дорабатывать их не стали, а просто вернулись к страшненькому варианту шрифта.
Для начала посмотрим на сам этот C059 и не на весь, а конкретно на раздражающие меня буквы:
Да, здесь та же самая проблема, хотя в крупных кеглях буква Э всё-таки не так раздражает, как З. А что в других шрифтах? Сравним с ними.
Начнём, конечно, со SchoolBook New — это обновлённый вариант SchoolBook — паратайповской версии Школьной гарнитуры, описанной в ГОСТ 3489.23-71. Именно этот шрифт знаком русскоязычным читателям по детской литературе последней трети XX века.
Школьная похожа и на Кларендон, появившийся ещё в середине XIX века. В доступном на Google Fonts свободном шрифте Montagu Slab нет кириллицы, поэтому сравним с SPSL Clarendon — он представлен в шести начертаниях, четыре из них шире, чем Школьная, два — уже.
Есть ещё какой-нибудь шрифт с кириллицей, похожий на Century Schoolbook?
Гарнитура Журнальная попадается мне в нотах достаточно давно, да и сам я применял её время от времени уже лет девять. Среди свободных шрифтов я её не находил (не уверен я насчёт лицензионной чистоты того, что называется JournalPSCyr), да и отсутствие дореволюционной кириллицы иногда смущало. Но больше смущало отсутствие букв с диакритическими знаками из западноевропейских алфавитов — più mosso уже не напишешь. В свежих версиях, судя по Паратайповскому каталогу, буква ù уже есть, но хочется и сэкономить (набор из 4 начертаний стоит со скидкой 7500 ₽), и честно пользоваться. В том же самом каталоге пишут и об истории шрифтов:
Гарнитура Journal (Журнальная) представляет собой малоконтрастный текстовой шрифт группы «Леджибилити». Гарнитура была разработана в трех начертаниях в Отделе наборных шрифтов НПО Полиграфмаш, 1951–53 (дизайнеры Лев Маланов, Елена Царегородцева) на основе рисунков кириллической версии шрифта Эксцельсиор, 1936 (коллектив дизайнеров под руководством профессора Михаила Щелкунова при участии Николая Кудряшева), который, в свою очередь, был разработан на основе шрифта Excelcior фирмы Mergenthaler Linotype, 1931 (дизайнер Чонси Гриффит).
Пробуем поискать шрифт Excelsior — находим версию, бесплатную для персонального использования. Засунем её в ноты:
Дореволюционная кириллица есть, причём курсивные ять и ижица выглядят вполне прилично, однако буквы К и Ж в прямых начертаниях выглядят не совсем привычно: с засечками на наклонных элементах. И буквы ù всё-таки нет. И буква Э что-то раздражает. Но зато З — лучше, чем в Edwin.
Делать нотные сборники средствами Лилипонда вроде бы можно: с одной стороны LilyPond сам по себе позволяет размещать несколько пьес рядышком, а с другой содержит в своём составе утилиту lilypond-book, которая позволяет внедрять лилипондовые ноты в документы различных форматов, включая и HTML.
Я проверял — такой способ действительно работает, но мне он показался каким-то неудобным: во-первых, с ТеХом я давно дела не имел, во-вторых, верстать печатное издание в HTML — изначально странная затея (хотя CSS3 и включае в себя различные стилевые правила для печати), ну и самое главное — ноты я сейчас набираю в MuseScore, так получается быстрее, удобнее и качественнее — многие ошибки отлавливаются на слух ещё на этапе набора.
У меня прижился другой метод: выводить отдельные произведения в виде PDF-файла либо пачки PNG-картинок подходящего разрешения, а потом собирать всё это в программе, ориентированной именно на вёрстку — в моём случае это Scribus.
При этом остаётся лишь один вопрос — как убрать номера со страниц произведений, которые должны войти в сборник — в сборниках используется сквозная нумерация и исходные номера не нужны. Понятно, что из сторонних материалов номера придётся вы́резать, но в тех нотах, которые сам набираешь, проще сразу отключить нумерацию. В MuseScore отображение номеров страниц можно настроить (и отключить) в стилевых настройках, которые доступны через меню: Format → Style, после чего в открывшемся окне надо выбрать пункт Header, Footer в левом меню:
Чтобы каждый раз не пробираться через дебри настроек, можно сохранить стилевые настройки (Format → Save Style) и использовать их в других нотах для того же сборника.
Для повторного использования настроек листа бумаги (включая нумерацию) целесообразно вынести их в отдельный файл, который присоединять командой \include:
Нотный редактор LilyPond по умолчанию считает, что при недостатке свободного места для текста в вокальных произведениях можно выкинуть лишние пробелы и дефисы между слогами — в результате слова такого текста вообще не разбиваются на слоги:
Слипшиеся слоги
В русском тексте с его обилием букв это достаточно часто встречается. Выглядит непривычно, да и авторы набираемых произведений настаивают всё-таки на разделении.
Решение нашлось в LilyPond Snippet Repository — переопределив значение свойства LyricHyphen.minimum-distance, можно добиться не только увеличения дистанции между слогами, но и принудительной расстановки дефисов — такое переопредение можно засунуть прямо в блок с текстом:
choirVerse = \lyricmode {
\override LyricHyphen.minimum-distance = #0.5
Да не у -- мрёт ни с_на -- ми, ни по -- том
Результат — появились дефисы:
Слоги разделены дефисами
Если вместо 0.5 указать значение побольше, слоги разойдутся дальше.
В Эдвине кириллицу слегка подправили — иногда ноты с ней смотрятся вполне терпимо, особенно если там нет букв З и Э. С дореволюционной кириллицей ситуация хуже: буква ять — только строчная, да и та страшная, ижица в курсиве смотрится странновато.
Ноты с шрифтом Edwin
Для современных нот этот шрифт использовать уже можно (если не сильно всматриваться в детали), для дореволюционных — ещё нѣтъ.
Сейчас набираю в MuseScore — он становится всё лучше и лучше. Попутно и трудозатраты отмечаю — привык делать это после некоторых работ, где оплачивалось потраченное время. Получается около одного листа в час (уточнение после изучения отчёта — а иногда и полтора, то есть три листа за два часа), причём с аккомпанементом. Без аккомпанемента, вроде, раза в три быстрее. Но вывод из таких замеров остаётся прежним — программирование оплачивается более щедро и набор нот можно оставить лишь в роли хобби, а не основного заработка.
Ради вёрстки нотного сборника пришлось всё-таки наладить относительно новый компьютер (ну он тоже не новый, но хотя бы сильно шустрее старого), а в нём — сюрприз! — лилипондовые ноты компилируются как-то странно: LilyPond выдаёт кучу ошибок
make
lilypond a4.ly
GNU LilyPond 2.18.2
Processing `a4.ly'
Parsing...
Interpreting music...
MIDI output to `part-bass.midi'...
Interpreting music...
MIDI output to `part-soprano1.midi'...
Interpreting music...
MIDI output to `part-soprano2.midi'...
Interpreting music...
MIDI output to `part-alto1.midi'...
Interpreting music...
MIDI output to `part-alto2.midi'...
Interpreting music...[8][16][24][32][40][48]
Preprocessing graphical objects...
warning: no glyph for character U+E062 in font `/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf'
warning: no glyph for character U+E0A4 in font `/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf'
warning: no glyph for character U+E0A4 in font `/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf'
warning: no glyph for character U+E0A4 in font `/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf'
warning: no glyph for character U+E0A4 in font `/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf'
warning: no glyph for character U+E050 in font
независимо от способа запуска: хоть мышкой в кнопки Frescobaldi тычь, хоть в терминале команды набирай — итог один.
Да и внешне результат далёк от желаемого:
Причина оказалось простой, но из лога совершенно невозможно понять в чём же дело — действительно, LilyPond не мог найти нужных символов, но шрифт DejaVu Sans тут ни при чём — символов не было, потому что используемый в этих нотах шрифт Bravura (хороший, кстати, шрифт — крут как тот, что в лилипонде по умолчанию, но при этом в нём скрипичный ключ не имеет лишних изгибов) отсутствовал в системе. Решается легко — копированием шрифтовых файлов в /usr/share/lilypond/ВЕРСИЯ/fonts/otf
Для несложных преобразований картинок: изменение размера, увеличение резкости, добавление надписей и преобразование типов — большой и тяжёлый графический редактор не нужен — достаточно взять ImageMagick. ImageMagick знает не только кучу разных растровых форматов файлов, но и кое-какие векторные, в том числе PDF, однако преобразование в них требует иногда плясок с бубном: например, если для преобразования толпы PNG-файлов написать
convert *png result.pdf
то результат может и не понравиться. Путём экспериментов с найденным на всяких форумах кодом получился такой рецепт для преобразования в PDF размером 210×297 мм (A4) кучи растровых файлов, отсканированных с разрешением 600 точек на дюйм
convert *png -units pixelsperinch -density 600 -resize 100% \
-gravity center -background white -extent 4960x7016 result.pdf
размер растровых файлов не меняется, они располагаются в центре получившихся страниц.
Для картинок с разрешением 300 dpi цифры будут чуть другими:
convert *png -units pixelsperinch -density 300 -resize 100% \
-gravity center -background white -extent 2480x3508 result.pdf
Для 150 dpi числа надо ещё вдвое уменьшить:
convert *png -units pixelsperinch -density 150 -resize 100% \
-gravity center -background white -extent 1240x1754 result.pdf
UPDATE/22.01.2026: можно сделать один скрипт, который будет вычислять размер листа, исходя из требуемого разрешения
#!/usr/bin/env bash
set -e
if [ "$#" -lt 2 ]; then
echo "Usage: $0 <dpi> <png files...>"
exit 1
fi
DPI="$1"
shift
# размеры A4 в мм
A4_W_MM=210
A4_H_MM=297
# вычисление размеров в пикселях (округление до целого)
A4_W_PX=$(printf "%.0f" "$(echo "$A4_W_MM * $DPI / 25.4" | bc -l)")
A4_H_PX=$(printf "%.0f" "$(echo "$A4_H_MM * $DPI / 25.4" | bc -l)")
convert "$@" \
-units pixelsperinch -density "$DPI" -resize 100% \
-gravity center -background white \
-extent "${A4_W_PX}x${A4_H_PX}" \
`date +%Y%m%d-%H%M%S.pdf`
Из всего, в чём доводилось набирать ноты последние лет двадцать, самые красивые получаются в Лилипонде — там и шрифт хороший (хотя Bravura ещё лучше), и расположение нот на листе достаточно компактное. Но в MuseScore набирать проще плюс можно услышать любую ноту да и все изменения видны сразу — не надо ждать, пока компиляция завершится. Лет десять назад MuseScore, как и Denemo, можно было использовать лишь для предварительного набора — сборку и доводку приходилось делать в Лилипонде, потому что Музскор не способен был нормально расставить ноты по странице. Со временем Музскор улучшился — теперь его можно использовать для всего процесса — до самого конца — вывода на печать или в готовый PDF-файл.
И встал вопрос открытия лилипондовых файлов Музскором — нынешние его версии умеют работать с MusicXML, но формат Лилипонда не понимают совсем. Сам же LilyPond умеет читать всякое (точнее, в его состав входит скрипт на питоне, перегоняющий в формат Лилипонда ноты из MusicXML, ABC, MIDI и, вроде, ETF), но выводить в это всякое не желает.
Поэтому воспользуемся сторонним ПО. Например, выяснилось, что Frescobaldi умеет экспортировать ноты в формат MusicXML, но по умолчанию эта возможность в нём отключена. Включить можно в настройках: Edit → Preferences → Generap Preferences → Enable experimental features.
После перезапуска Фрескобальди в его меню File → Export можно найти пункт Export to MusicXML. А уж MusicXML можно открыть и в Музскоре, который будет ругаться на на корявость файла,
но всё равно (если повезёт?) его откроет
Вместо экспорта через Frescobaldi можно с командной строки использовать python-ly:
ly musicxml solo.ly -o solo.musicxml
Результат почти полностью совпадает с тем, что выдаёт Фрескобальди — скорее всего, этот же скрипт и вызывается.