Skip to content

独自フォント開発ガイド(MuseScore 4.x / レガシー QML)

本ドキュメントでは、MuseScore プラグインから 楽譜上に独自の文字・記号を載せるためのフォント準備と、OS へのインストール、プラグインへの組み込みまでを説明します。

関連: 開発ノウハウ §4(要約)譜表・記譜操作概要API リファレンス

対象: MuseScore Studio 4.x のレガシー QML プラグイン(import MuseScore 3.0)。
前提: フォントは 各 OS にインストールして利用します。プラグインはインストール済みフォントのファミリー名を fontFace に指定し、楽譜上のテキスト要素へ独自文字・記号を書き込みます。


1. 全体の流れ

mermaid
flowchart TD
    A[記号・文字の要件整理] --> B[フォント作成または入手]
    B --> C[横断対応フォーマットで書き出し]
    C --> D[開発マシンの OS にインストール]
    D --> E[プラグインで fontFace と文字を指定]
    E --> F[楽譜上で表示確認]
    F --> G[配布物にフォントとインストール手順を同梱]
段階やること
1楽譜に出したい独自文字・記号(用途・コードポイント)を決める
2フォントを作成する、または改変・利用許諾のあるフォントを用意する
3Windows / macOS / Linux 共通で使える形式(後述)で書き出す
4開発用 PC の OS にインストールし、ファミリー名を確認する
5プラグインで Element.TEXT 等を生成し、fontFacetext を設定する
6MuseScore 上で字形を確認し、利用者向けにインストール手順を書く

2. 本ガイドの前提

項目内容
主な用途開発者がプラグイン経由で、楽譜に独自の文字や記号を置くこと
フォントの配置OS へのインストールが基本(楽譜描画が OS/アプリのフォント一覧を参照するため)
プラグインの役割インストール済みフォントを選び、適切な文字を Staff Text 等として挿入する
配布フォントファイルと、利用者向けの OS インストール手順をセットで提供する

音符の見た目そのものを差し替える SMuFL 記譜フォントは、MusicFonts など別系統の仕組みです。本ガイドの主対象は、テキスト要素に載せる **独自グリフ(文字・記号)**です。SMuFL が必要な場合は §9 を参照してください。


3. すべての OS で使いやすいフォント形式

プラグイン利用者は Windows / macOS / Linux が混在するため、配布フォントは次を守ります。

3.1 推奨フォーマット

形式拡張子WindowsmacOSLinux推奨度
TrueType.ttf最推奨(互換性が広く、配布の第一候補)
OpenType(CFF または TT アウトライン).otf推奨(高品質なアウトラインや高度な OpenType 機能が必要なとき)

いずれもデスクトップ OS で標準的にインストールでき、MuseScore の楽譜テキスト(fontFace)からもファミリー名で参照できます。

実務上の推奨: 特別な理由がなければ .ttf(TrueType)で 1 系統を配ると、説明も検証も単純です。OpenType 固有機能が必要なら .otf を選びます。

3.2 避ける/用途外の形式

形式理由
.woff / .woff2Web 用。OS への通常インストールや MuseScore 楽譜向けではない
.eot旧 IE 向け。現代のデスクトップ配布に不適
macOS 専用の古い形式(例: .dfont のみ、Suitcase 等)他 OS で使えない
Windows の .fon(ビットマップ)他 OS・高解像度向けに不向き
インストール不要を前提にしたアプリ内専用形式のみ本ガイドの「OS インストール」前提と合わない

3.3 書き出し時の共通ルール

項目推奨
ファミリー名ASCII 中心で一意な名前(例: MyScoreSymbols)。OS ごとに表示名が食い違いにくい
スタイルRegular を 1 ファイル用意。Bold 等が必要なら別ファイル
文字コード独自記号は Unicode 私用領域(PUA)(例: U+E000 付近)に置くと、既存文字と衝突しにくい
ライセンス再配布・改変の可否を確認し、配布物にライセンス文を同梱する
1 配布あたり可能なら 単一の .ttf に必要な記号をまとめる

FontForge での書き出し例: File → Generate Fonts… で TrueType (.ttf) または OpenType (.otf) を選択します。


4. 使用できるツール

4.1 フォントを作る・編集する

ツール用途入手
FontForgeグリフ編集、名前付け、TTF/OTF 書き出し(無料)公式のインストーラ/パッケージ
Glyphs(有料・主に macOS)プロ向け制作公式
FontLab(有料)プロ向け制作公式
BirdFont比較的軽いエディタ公式
既存フォントの改変・サブセットライセンスが許す範囲で記号を追加SIL OFL 等

楽譜用の独自記号だけなら、欧文フルセットを自作する必要はなく、必要なコードポイントにグリフを置いた専用フォントで十分なことが多いです。

4.2 確認・インストール

ツール用途
Windows … 設定 → 個人用設定 → フォント/フォントプレビューインストールとファミリー名の確認
macOS … フォントブック同上
Linux … 各ディストリのフォント管理、または ~/.local/share/fonts/ への配置同上
FontForge のフォント情報Family Name の確認・修正
MuseScore 4.x楽譜上の最終表示確認

4.3 開発環境

ツール用途
VSCode / Cursorプラグイン QML の編集
MuseScore Studio 4.xプラグイン実行と楽譜表示の確認

5. ツールのインストールと OS へのフォント導入

5.1 FontForge(作成環境)

Windows の例:

  1. FontForge 公式 からインストーラ等を取得する
  2. インストール後、FontForge が起動することを確認する

Linux はディストリのパッケージ、macOS は公式手順またはパッケージマネージャを利用します。

5.2 フォントの OS インストール(必須の基本手順)

開発者自身のマシン、およびプラグイン利用者のマシンの両方で行います。

Windows 11 の例:

  1. .ttf または .otf をエクスプローラで開く(プレビュー)
  2. インストール、または右クリック → すべてのユーザーに対してインストール
  3. 設定 → 個人用設定 → フォント でファミリー名(例: MyScoreSymbols)を控える

macOS の例:

  1. .ttf / .otf をダブルクリックするか、フォントブックで開く
  2. インストールを実行する
  3. フォントブックでファミリー名を確認する

Linux の例(ユーザー領域):

bash
mkdir -p ~/.local/share/fonts
cp MyScoreSymbols-Regular.ttf ~/.local/share/fonts/
fc-cache -f -v
# ファミリー名の確認例
fc-list | grep -i MyScoreSymbols

インストール後は MuseScore を再起動し、フォント一覧/楽譜描画に反映させます。


6. フォント作成・準備の操作

6.1 記号設計の決め方

  1. 楽譜上で使いたい記号の一覧を作る(例: 特殊な奏法マーク、教材用アイコン)
  2. 各記号に Unicode コードポイントを割り当てる(PUA 推奨)
  3. プラグイン側で挿入する文字列(そのコードポイントの文字)を決めておく

例: U+E000 に記号 A、U+E001 に記号 B を置き、QML では "\uE000" のように指定します。

6.2 FontForge での最低限の作業

  1. 新規フォントを作成する、またはベースフォントを開く
  2. 対象コードポイントのグリフを描く(またはインポートする)
  3. フォント情報で次を設定する
    • Family Name … プラグインの fontFace に書く名前(例: MyScoreSymbols
    • Fontname / FullName … スタイルごとに一意に
  4. Generate FontsTrueType (.ttf)(または必要なら .otf)を書き出す
  5. §5.2 の手順で OS にインストールし、プレビューで字形を確認する

ヒント:

  • ウェイトが複数必要ならファイルを分ける
  • ファミリー名を後から変えると、既存スコアや手順書と食い違うため、公開前に固定する

6.3 配布用フォルダ構成の例

myplugin/
  myplugin.qml
  fonts/
    MyScoreSymbols-Regular.ttf
    OFL.txt                 # ライセンス(例)
  INSTALL_FONT.txt          # OS ごとのインストール手順
  thumbnail.png             # 任意

フォントはプラグイン zip に 同梱して配布し、利用者には「先に OS へインストールしてからプラグインを使う」と案内します。同梱は配布の便宜であり、実行時は OS インストールが前提です。


7. プラグインへの組み込み(楽譜上の独自文字・記号)

7.1 基本パターン

OS にインストール済みのファミリー名を fontFace に指定し、独自記号の文字を text に入れます。

qml
import QtQuick
import MuseScore 3.0

MuseScore {
    version: "1.0"
    title: "Insert custom symbol"
    description: "選択音符に独自記号を Staff Text として付ける"
    categoryCode: "composing-arranging-tools"
    requiresScore: true

    // OS にインストールしたフォントのファミリー名(ファイル名ではない)
    readonly property string symbolFontFace: "MyScoreSymbols"
    // フォント内の独自記号(例: U+E000)
    readonly property string symbolChar: "\uE000"

    onRun: {
        if (!curScore) {
            console.log("error: no score")
            quit()
            return
        }

        curScore.startCmd()

        var elements = curScore.selection.elements
        for (var i = 0; i < elements.length; i++) {
            var el = elements[i]
            if (el.type !== Element.NOTE)
                continue

            var text = newElement(Element.STAFF_TEXT)
            text.text = symbolChar
            text.fontFace = symbolFontFace
            text.fontSize = 12
            // 必要に応じて placement / offset などを調整
            el.add(text)
        }

        curScore.endCmd()
        quit()
    }
}

ポイント:

項目説明
fontFaceファミリー名(OS のフォント一覧に出る名前)
textフォント内のグリフに対応する文字(PUA なら \uE000 など)
Element.STAFF_TEXT / Element.TEXT用途に応じて選択(API リファレンス
startCmd / endCmd楽譜変更時は必須

note_names 同梱プラグインと同様、newElement でテキストを作り音符等に add する流れが基本です。

7.2 ダイアログから記号を選ぶ場合

pluginType: "dialog" で記号一覧を出し、Apply 時に上記と同じく fontFace と文字を設定します。UI のラベル自体は標準 UI フォントのままで問題ありません。独自フォントは 楽譜に書く文字に使います。

7.3 フォントが無い場合の扱い

利用者が未インストールのまま実行すると、別フォントに化けたり欠字になったりします。次を推奨します。

  • 起動時や Apply 前に インストール済みか検査し、不足なら注意文を出す
  • 配布物の INSTALL_FONT.txt へ誘導する
  • フォントを入れた直後は MuseScore を再起動してから再実行する

検査には Qt.fontFamilies() が使えます(開発ノウハウ §7.2)。

qml
function isFontInstalled(family) {
    try {
        var families = Qt.fontFamilies()
        var target = ("" + family).toLowerCase()
        for (var i = 0; i < families.length; i++) {
            if (("" + families[i]).toLowerCase() === target)
                return true
        }
    } catch (e) {}
    return false
}

onRun: {
    if (!isFontInstalled(symbolFontFace)) {
        // MessageDialog 等で「fonts/ から OS へインストール → 再起動」を案内
        quit()
        return
    }
    // … 通常処理 …
}

8. 動作確認チェックリスト

  1. 開発マシンに .ttf(または .otf)を OS インストールした
  2. ファミリー名を OS のフォント一覧で確認した
  3. MuseScore を再起動した
  4. プラグインを実行し、楽譜上に意図した記号が出る
  5. フォントを一時的に無効化/削除すると欠けること(依存関係)を把握した
  6. 別 OS または別ユーザー環境でも、同じ手順でインストール→表示できる

ログ(Windows 例): %LOCALAPPDATA%\MuseScore\MuseScore4\logs\


9. SMuFL 記譜フォントとの違い

本ガイド(テキスト用フォント)SMuFL 記譜フォント
目的Staff Text 等に 独自文字・記号を載せる音符・休符など 記譜グリフを差し替える
導入OS へのフォントインストールMusicFonts 等(Handbook/開発者ドキュメントに従う)
プラグインfontFace + 文字コード記譜フォント選択や専用 API/設定に依存
配布形式.ttf / .otfSMuFL メタデータ付きのセット

「五線上のテキストとして記号を足す」なら本ガイド、「音符の形そのものを変える」なら SMuFL 側の手順を選びます。


10. 配布

含めるもの理由
fonts/*.ttf(または .otf利用者が OS に入れる実体
ライセンス全文再配布条件の遵守
INSTALL_FONT.txtWindows / macOS / Linux それぞれのインストール手順
プラグイン本体ファミリー名とコードポイントが手順書と一致していること

zip は サブフォルダごと展開してもらいます。README の冒頭に「プラグイン有効化の前にフォントを OS へインストールすること」と明記します。


11. トラブルシューティング

症状確認すること
記号が豆腐・別字形になるOS にインストール済みか、MuseScore 再起動済みか、fontFace がファミリー名と一致しているか
何も出ない/欠字text のコードポイントがフォント内グリフと一致しているか
開発機では見えるが他機で見えない相手環境へのインストール漏れ、配布 zip にフォントが無い
検査では入っているのに欠けるインストール直後でアプリ未再起動、またはファミリー名の大文字小文字・別名の食い違い
.otf だけ問題が出る.ttf で書き出して比較する
太字にならないBold 用ファイルのインストールとファミリー/スタイル名

12. 参考

内容参照
FontForgehttps://fontforge.org/
Unicode 私用領域(概要)https://www.unicode.org/faq/private_use.html
開発ノウハウ(要約)開発ノウハウ
fontFace / テキスト要素02_APIリファレンス.md
同梱のテキスト挿入例note_names/notenames.qml