お気に入りフォント

提供: MeryWiki
ナビゲーションに移動 検索に移動

概要[編集]

お気に入りのフォント、フォントサイズ、行間を登録しておいてポップアップメニューから一括で切り替えるマクロです。

動作環境[編集]

  • Mery Ver 3.8.0 以降
  • Windows 7 以降

使用方法[編集]

  1. 好みのフォント、フォントサイズ、行間に設定する。
  2. マクロを実行してポップアップメニューの「現在の設定をクリップボードにセット」を選択する。
  3. マクロファイルを開き// 以下に設定を貼り付けるの下に設定を貼り付けて上書き保存する。

上記手順でお気に入りフォントを追加できます。必要に応じて繰り返してください。

ポップアップメニューの項目に表示されるテキストは下記の例のようにキーの部分(settings["…"])を変更することで変えられます。

// 以下に設定を貼り付ける
settings["コーディング用 1"] = {fontName: "Moralerspace Neon", fontHeight: -15, lineSpace: 2};
settings["コーディング用 2 (小)"] = {fontName: "源ノ角ゴシック Code JP R", fontHeight: -15, lineSpace: 0};
settings["コーディング用 2 (大)"] = {fontName: "源ノ角ゴシック Code JP R", fontHeight: -18, lineSpace: 0};
settings["テキスト閲覧用"] = {fontName: "BIZ UDゴシック", fontHeight: -16, lineSpace: 6};

簡単なアイコンをあつまれ☆みんなのおもしろアイコンに投稿してます。ツール バーに追加して使用する場合など、よろしければご活用ください。

変更履歴[編集]

  • 2026-01-15
    • QuickJS で実行するようにした
  • 2025-12-12
    • ディレクティブ(#fonticon)の追加とリファクタリング
  • 2024-04-11
    • 初版

ソースコード[編集]

#fonticon = "\uE8D2", #4d82b8, #dddddd
#language = "quickjs"
#title = "お気に入りフォント"

// キーはポップアップメニューの項目に表示するテキスト。貼り付けた後に変更可
const settings = {};
// 以下に設定を貼り付ける


const utilities = {
	"現在の設定をクリップボードにセット(&S)"() {
		editor.WriteSettings();

		const fontName = editor.ReadSettingString("Display", "FontName", "MS ゴシック");
		const fontHeight = editor.ReadSettingString("Display", "FontHeight", "-13");
		const fontSize = fontHeight % 4 === -2
			? fontHeight / 4 - fontHeight
			: Math.round(fontHeight / 4) - fontHeight;
		const lineSpace = editor.ReadSettingString("General", "LineSpace", "2");
		const topMargin = editor.ReadSettingString("Display", "TopMargin", "");

		const settingName = `${fontName}, ${fontSize}, ${lineSpace}${topMargin && `, ${topMargin}`}`;

		clipboardData.SetData("Text",
			`settings["${settingName}"] = {fontName: "${fontName}", fontHeight: ${fontHeight}, lineSpace: ${lineSpace}${topMargin && `, topMargin: ${topMargin}`}};`
		);
	},

	"フォントの設定(&C)..."() {
		// MEID_VIEW_FONT_CUSTOMIZE
		editor.ExecuteCommandByID(2169);
	},
};

const popupMenu = CreatePopupMenu();
const settingNames = Object.keys(settings);
const utilityNames = Object.keys(utilities);

{
	let itemCount = 0;

	// 設定名をポップアップメニューに追加
	for (const settingName of settingNames) {
		const id = ++itemCount;
		popupMenu.Add(
			// 最初の10項目まではアクセスキー(1~0)を追加
			id <= 10 ? `&${id % 10} ${settingName}` : settingName,
			id
		);
	}

	popupMenu.Add("", 0, meMenuSeparator);

	// ユーティリティ名をポップアップメニューに追加
	for (const utilityName of utilityNames) {
		const id = ++itemCount;
		popupMenu.Add(utilityName, id);
	}
}

const menuId = popupMenu.Track(mePosMouse);

if (menuId > settingNames.length) {
	utilities[popupMenu.GetText(menuId)]();
} else if (menuId !== 0) {
	editor.WriteSettings();

	const setting = settings[settingNames[menuId - 1]];

	editor.WriteSettingString("Display", "FontName", setting.fontName);
	editor.WriteSettingInteger("Display", "FontHeight", setting.fontHeight);
	editor.WriteSettingInteger("General", "LineSpace", setting.lineSpace);
	if (Object.hasOwn(setting, "topMargin")) {
		editor.WriteSettingInteger("Display", "TopMargin", setting.topMargin);
	}

	editor.ReadSettings();
}
スポンサーリンク