外観
独自フォント開発ガイド(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 | フォントを作成する、または改変・利用許諾のあるフォントを用意する |
| 3 | Windows / macOS / Linux 共通で使える形式(後述)で書き出す |
| 4 | 開発用 PC の OS にインストールし、ファミリー名を確認する |
| 5 | プラグインで Element.TEXT 等を生成し、fontFace と text を設定する |
| 6 | MuseScore 上で字形を確認し、利用者向けにインストール手順を書く |
2. 本ガイドの前提
| 項目 | 内容 |
|---|---|
| 主な用途 | 開発者がプラグイン経由で、楽譜に独自の文字や記号を置くこと |
| フォントの配置 | OS へのインストールが基本(楽譜描画が OS/アプリのフォント一覧を参照するため) |
| プラグインの役割 | インストール済みフォントを選び、適切な文字を Staff Text 等として挿入する |
| 配布 | フォントファイルと、利用者向けの OS インストール手順をセットで提供する |
音符の見た目そのものを差し替える SMuFL 記譜フォントは、MusicFonts など別系統の仕組みです。本ガイドの主対象は、テキスト要素に載せる **独自グリフ(文字・記号)**です。SMuFL が必要な場合は §9 を参照してください。
3. すべての OS で使いやすいフォント形式
プラグイン利用者は Windows / macOS / Linux が混在するため、配布フォントは次を守ります。
3.1 推奨フォーマット
| 形式 | 拡張子 | Windows | macOS | Linux | 推奨度 |
|---|---|---|---|---|---|
| TrueType | .ttf | ○ | ○ | ○ | 最推奨(互換性が広く、配布の第一候補) |
| OpenType(CFF または TT アウトライン) | .otf | ○ | ○ | ○ | 推奨(高品質なアウトラインや高度な OpenType 機能が必要なとき) |
いずれもデスクトップ OS で標準的にインストールでき、MuseScore の楽譜テキスト(fontFace)からもファミリー名で参照できます。
実務上の推奨: 特別な理由がなければ .ttf(TrueType)で 1 系統を配ると、説明も検証も単純です。OpenType 固有機能が必要なら .otf を選びます。
3.2 避ける/用途外の形式
| 形式 | 理由 |
|---|---|
.woff / .woff2 | Web 用。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 の例:
- FontForge 公式 からインストーラ等を取得する
- インストール後、FontForge が起動することを確認する
Linux はディストリのパッケージ、macOS は公式手順またはパッケージマネージャを利用します。
5.2 フォントの OS インストール(必須の基本手順)
開発者自身のマシン、およびプラグイン利用者のマシンの両方で行います。
Windows 11 の例:
.ttfまたは.otfをエクスプローラで開く(プレビュー)- インストール、または右クリック → すべてのユーザーに対してインストール
- 設定 → 個人用設定 → フォント でファミリー名(例:
MyScoreSymbols)を控える
macOS の例:
.ttf/.otfをダブルクリックするか、フォントブックで開く- インストールを実行する
- フォントブックでファミリー名を確認する
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 記号設計の決め方
- 楽譜上で使いたい記号の一覧を作る(例: 特殊な奏法マーク、教材用アイコン)
- 各記号に Unicode コードポイントを割り当てる(PUA 推奨)
- プラグイン側で挿入する文字列(そのコードポイントの文字)を決めておく
例: U+E000 に記号 A、U+E001 に記号 B を置き、QML では "\uE000" のように指定します。
6.2 FontForge での最低限の作業
- 新規フォントを作成する、またはベースフォントを開く
- 対象コードポイントのグリフを描く(またはインポートする)
- フォント情報で次を設定する
- Family Name … プラグインの
fontFaceに書く名前(例:MyScoreSymbols) - Fontname / FullName … スタイルごとに一意に
- Family Name … プラグインの
- Generate Fonts で TrueType (
.ttf)(または必要なら.otf)を書き出す - §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. 動作確認チェックリスト
- 開発マシンに
.ttf(または.otf)を OS インストールした - ファミリー名を OS のフォント一覧で確認した
- MuseScore を再起動した
- プラグインを実行し、楽譜上に意図した記号が出る
- フォントを一時的に無効化/削除すると欠けること(依存関係)を把握した
- 別 OS または別ユーザー環境でも、同じ手順でインストール→表示できる
ログ(Windows 例): %LOCALAPPDATA%\MuseScore\MuseScore4\logs\
9. SMuFL 記譜フォントとの違い
| 本ガイド(テキスト用フォント) | SMuFL 記譜フォント | |
|---|---|---|
| 目的 | Staff Text 等に 独自文字・記号を載せる | 音符・休符など 記譜グリフを差し替える |
| 導入 | OS へのフォントインストール | MusicFonts 等(Handbook/開発者ドキュメントに従う) |
| プラグイン | fontFace + 文字コード | 記譜フォント選択や専用 API/設定に依存 |
| 配布形式 | .ttf / .otf | SMuFL メタデータ付きのセット |
「五線上のテキストとして記号を足す」なら本ガイド、「音符の形そのものを変える」なら SMuFL 側の手順を選びます。
10. 配布
| 含めるもの | 理由 |
|---|---|
fonts/*.ttf(または .otf) | 利用者が OS に入れる実体 |
| ライセンス全文 | 再配布条件の遵守 |
INSTALL_FONT.txt 等 | Windows / macOS / Linux それぞれのインストール手順 |
| プラグイン本体 | ファミリー名とコードポイントが手順書と一致していること |
zip は サブフォルダごと展開してもらいます。README の冒頭に「プラグイン有効化の前にフォントを OS へインストールすること」と明記します。
11. トラブルシューティング
| 症状 | 確認すること |
|---|---|
| 記号が豆腐・別字形になる | OS にインストール済みか、MuseScore 再起動済みか、fontFace がファミリー名と一致しているか |
| 何も出ない/欠字 | text のコードポイントがフォント内グリフと一致しているか |
| 開発機では見えるが他機で見えない | 相手環境へのインストール漏れ、配布 zip にフォントが無い |
| 検査では入っているのに欠ける | インストール直後でアプリ未再起動、またはファミリー名の大文字小文字・別名の食い違い |
.otf だけ問題が出る | .ttf で書き出して比較する |
| 太字にならない | Bold 用ファイルのインストールとファミリー/スタイル名 |
12. 参考
| 内容 | 参照 |
|---|---|
| FontForge | https://fontforge.org/ |
| Unicode 私用領域(概要) | https://www.unicode.org/faq/private_use.html |
| 開発ノウハウ(要約) | 開発ノウハウ |
| fontFace / テキスト要素 | 02_APIリファレンス.md |
| 同梱のテキスト挿入例 | note_names/notenames.qml |