見出し画像

Dorico用のフォントを作る #6

いよいよ最後の仕上げである設定ファイルの作成。

前回の記事で作るのがとても大変と書いたが少々勘違いをしていた。
細かい設定はせずにすぐ自作フォントを使いたい場合はほんの少しの手間で済む。
こだわって設定したい場合はそれなりの手間がかかるが、そこまでの労力ではないように思う。


では早速作成手順を。

まずはすぐ使いたい場合。

適当なエディタを開き、以下のコードをコピペ。

{
   "fontName": "フォント名", 
   "fontVersion": 0.000, 
  
   "engravingDefaults": { }, 
  
   "glyphBBoxes": { }, 
  
   "glyphsWithAlternates": { }, 
  
   "glyphsWithAnchors": { }, 
  
   "ligatures": { }, 
  
   "optionalGlyphs": { }, 
  
   "sets": { }
}

"fontName"には作成したフォントの名前を、"fontVersion"にはそのフォントのバージョンを、ファイル名にはフォントの名前をつけてJSONファイルとして保存。
そのファイルを然るべき場所に置く。

Macの場合は
/Library/Application Support/SMuFL/Fonts
にフォント名のフォルダを作成し、そこにJSONファイルを入れる。

Windowsの場合は
%COMMONPROGRAMFILES%/SMuFL/Fonts
らしい。

今回作成したフォントの名前はRicercareなので次のようになる。

画像6

これでようやく自作フォントが使用可能となる。

何も設定はしていないがBravuraから変更した場合、Bravuraでした設定が引き継がれる。(多分)

手っ取り早く使いたいならこれでいいのではないだろうか。


続いて、細かく設定したい場合だがその前にフォントで使用される単位と五線幅の関係について簡単に書く。

フォントにはemとUPMという単位がある。

文字や記号はある枠の中に収まるように作られるが、その枠の高さが1emである。

画像2

UPMは1emあたりのユニット数で、画像における解像度、ピクセル数のようなものと思えばいい。

UPMを1000にした場合、1em=1000UPMで、UPMを2048にした場合、1em=2048UPMとなる。

そして、1emが五線の第1線から第5線の高さになるようSMuFLのガイドラインで提供されており、そのため、1emを4分割した値が1スペース(五線の1間分)となる。

つまり、0.25emが1スペースであり、1000UPMでフォントを作成した場合1スペース=250UPMとなる。
2048UPMでは、1スペース=512UPMである。

ここでは1em=1000UPM、1スペース=250UPMという前提で話を進めていく。

ちなみにBravuraは1000UPMになっている。


では、設定ファイルに戻る。

上記コードの{ }の中に色々と値を入力していくわけだが、順番に見ていこう。

まず"engravingDefaults"

ここは、五線、小節線、スラー、クレッシェンド、符尾などの線幅を指定する項目で、書くものは次のようになる

"engravingDefaults": {
       "arrowShaftThickness": 0.15, 
       "barlineSeparation": 0.5, 
       "beamSpacing": 0.25, 
       "beamThickness": 0.5, 
       "bracketThickness": 0.5, 
       "dashedBarlineDashLength": 0.5, 
       "dashedBarlineGapLength": 0.25, 
       "dashedBarlineThickness": 0.15, 
       "hairpinThickness": 0.15, 
       "legerLineExtension": 0.5, 
       "legerLineThickness": 0.15, 
       "lyricLineThickness": 0.15, 
       "octaveLineThickness": 0.15, 
       "pedalLineThickness": 0.15, 
       "repeatBarlineDotSeparation": 0.15, 
       "repeatEndingLineThickness": 0.15, 
       "slurEndpointThickness": 0.1, 
       "slurMidpointThickness": 0.3, 
       "staffLineThickness": 0.1, 
       "stemThickness": 0.1, 
       "subBracketThickness": 0.15, 
       "textEnclosureThickness": 0.15, 
       "thickBarlineThickness": 0.5, 
       "thinBarlineThickness": 0.15, 
       "tieEndpointThickness": 0.1, 
       "tieMidpointThickness": 0.3, 
       "tupletBracketThickness": 0.15
   }, 

数字部分は適当に入れてあるので、それぞれ好みの値に直してもらいたい。単位はスペースであり、これ以降も同様である。

例えば"stemThickness": 0.1は、符尾の線幅が0.1スペースということを表す。

フォントを変更した際、ここで設定したものが読み込まれるので、Doricoのオプションからひとつひとつ設定していく必要はない。


次に"glyphBBoxes"

これはFinaleでいうフォント付加情報の部分だが無視する。

というのも、これは将来FinaleなどがSMuFLに対応した時のために用意してあるような箇所なので、Doricoで使う分には必要ないと思われる。

とりあえず設定しておけば、ここの情報を元にフォント付加情報ファイルを自動で作れるとかなんとか。​


次に"glyphsWithAlternates"

も無視する。

ここは代替の記号を指定する項目で、例えば8分音符の旗を真っ直ぐなスタイルに変更したい場合などに、その置き換える記号を書く場所だが、これはOpenTypeフォントの機能にアクセスできないアプリ向けに用意されている項目で、Doricoを使う分には必要無いと思われる。


次に"glyphsWithAnchors"

は無視しない。

これは符頭と符尾の接続位置を設定したり、記号の境界の調節、強弱記号や符頭の水平位置などを調整する項目である。

まず符尾の接続位置について4分音符を例に見てみる。

"glyphsWithAnchors": {
       "noteheadBlack": { 
           "stemDownNW": [
               0.0, 
               -0.168
           ], 
           "stemUpSE": [
               1.18, 
               0.168
           ]
       }, 
       ...

"noteheadBlack"は4分音符の符頭、"stemDownNW"は下向き符尾の設定、"stemUpSE"は上向き符尾の設定である。
一応書いておくとNWやSEは東西南北に見立てた表示で、NWは北西で左上を、SEは南東で右下を表す。

noteheadBlackのように各記号には名前がついているが、その確認に関しては後述する。

上向き符尾の設定をみると、1.18と0.168の数字がある。
これはx軸が1.18スペース、y軸が0.168スペースの位置に符尾の右下を置くという意味になる。

フォント作成ソフトで4分音符の符頭を見てみると、x=295, y=42の位置が一番右端になっており、ここに符尾の右下を置きたい。

画像3

ちなみに、記号類を作成する場合、例外はあるが、基本的にサイドベアリング(左右の余白)を0にしておく必要がある。

設定ファイルで書く数値の単位はスペースなので、この右端の座標をスペースに直す。
先ほど書いた通り1スペース=250UPMなので、295と42を250で割る。
すると、295/250=1.18, 42/250=0.168となり、上記のコードと一致する。

このようにして設定を行っていく。
電卓を用意しておこう。


続いて記号の境界の指定。

まずは譜例を

画像6

臨時記号の位置の違いが分かると思う。

左が間違いというわけではないが、できれば右のように詰めたい。
手動で動かすのではなく、自動で右のようになってほしい。

そのために"cutOut"というものを設定するがその前に、
基本的に記号同士の距離は、記号のもつ境界によって決められ、この境界はその記号が収まる最小の長方形で定義される。
画像の赤枠部分である。

画像5

しかし、このままだと上譜例の左のように無駄に距離が開くため、青枠部分をカットすることで、余分なスペースを詰めるというのが"cutOut"である。

赤枠部分の指定はDoricoでやってくれるので、こちらは青枠部分を指定するだけでいい。

書き方は

"glyphsWithAnchors": {
       "accidentalFlat": {
           "cutOutNE": [
               0.252, 
               0.656
           ], 
           "cutOutSE": [
               0.504, 
               -0.476
           ]
       }, 
       ...

"accidentalFlat"はフラット記号で、"cutOutNE"は青枠部分の左下、"cutOutSE"は青枠部分の左上となっている。
stemUpの時とは違うので注意が必要である。

赤枠部分と対角になる座標を指定することで、カットされる範囲が決められる。
少しややこしいが、シャープでみると次のようになる。

画像6


次に水平位置の調整だが、割愛。

少し書いておくと、符頭に関しては"noteheadOrigin"で、強弱記号は"opticalCenter"で調整できる。

ここまでglyphsWithAnchorsについて書いてきたが、この項目、設定が反映されたりされなかったりする。

フラットにcutOutの設定をしなくても、Doricoの浄書オプションの、臨時記号-カーニングから、オプティカルカーニングを許可を選択しておけばちゃんと詰めて配置してくれる。

符尾に関しては反映される。

水平位置に関しては反映されない。

記号によるのか、こちらに何か問題があるのか、単に未実装なのか、よく分からないが、とりあえず設定しておくに越したことはないだろう。


続いて"ligatures", "optionalGlyphs", "sets"だが、ここも放っておく。
glyphsWithAlternates同様、OpenTypeのフォント機能を使えないアプリ用の項目らしい。
一応設定しておきたいなら、Bravura.jsonの該当箇所をコピペでも良さそうな気はする。


こうして見てみると設定するのは、
"engravingDefaults"と"glyphsWithAnchors"だけで良いことになる。
"glyphsWithAnchors"だけでもいいかもしれない。

最初は全ての項目を設定する必要があると思っていたので、大変な作業と勘違いしてしまっていた。

ちなみに、これらのデータ作成の手助けになるスクリプトが、下記の場所から入手できる。
FontForge, Fontlab, Glyphs用の3つが用意されている。

ただ、最新バージョンに対応していなかったのか、Glyphs用のスクリプトは一部機能しなかった。
もしかしたら他のソフトも同様かもしれない。

そして、SMuFLの仕様についてはこのサイトを参照してもらいたい。

記号の名称等はここで確認できる。
設定ファイルについては、メニューのSpecification以下の項目に、ここで書いたことも省略したことも詳しく載っているので、1度確認しておくことを推奨する。



さて、3月からDorico用フォントを本格的に作り始め、随分と時間がかかってしまったがようやく完成である。

いくつか疑問が残ったままの箇所もあるが、今後解決していくと思いたい。

せっかくなので、自作フォントで何か楽譜を作ってアップしようかとも思ったが、それは別の機会にする。
この記事を書くので疲れた。

そういえば、速度表記用のフォントも作っていたので、気が向けばそれについても何か書くかもしれない。

何はともあれ、フォント作りはこれで終了である。

半年間お疲れっしたー。



Dorico用のフォントを作る

–  完 –



この記事が気に入ったらサポートをしてみませんか?