「Local Font 2」プラグインでいらないフォントを非表示にする時、タイトルの行為ができるといいんだけどな~ と思ったので記事を書きました
これはAviUtlのコミュニティで詳しい方に教えてもらいました ありがとうございます
①patch.aulプラグインを導入する
もう入れて当然だと思いますが、まだ入れていない人は入れてください→
https://kh40qsh1388.hatenablog.com/entry/2022/12/28/000005#patch.aul
なぜ入れるのかというと、「コンソール」が必要になるからです
これです
ちなみに、このコンソールは右上の×ボタンを押さないでください AviUtlが落ちます
これはバグではなくそういう設計思想だからです
邪魔なときは最小化ボタンを押してください
②LuaJITを更新する
これも大半の人は済んでいると思いますが→
https://scrapbox.io/ePi5131/LuaJIT
③タイムラインに適当なオブジェクトを用意します
④用意したオブジェクトにスクリプト制御フィルタをかけます
⑤スクリプト制御のテキストボックスに、以下のコードをコピペします
local ffi = require"ffi"; if not ffi_defined then ffi.cdef[[ typedef struct { char pad[28]; char lfFaceName[32]; } LOGFONTA; typedef int (__stdcall *FONTENUMPROCA)(LOGFONTA*, void*, uint32_t, uint32_t); int EnumFontFamiliesA(void*, const char*, FONTENUMPROCA, uint32_t); void* GetDesktopWindow(); void* GetDC(void*); int ReleaseDC(void*,void*); ]]; ffi_defined=true; end local hwnd = ffi.C.GetDesktopWindow(); local hdc = ffi.C.GetDC(hwnd); debug_print("enumerating fonts...") ffi.C.EnumFontFamiliesA(hdc, nil, function(lf, _, _, _) local str = ffi.string(lf.lfFaceName); if str:sub(1,1) ~= "@" then debug_print(str); end return 1; end, 0); ffi.C.ReleaseDC(hwnd, hdc); debug_print("...end of fonts.")
⑥コンソールを表示すると、フォント一覧が取得されています
⑦コンソール内のテキストを[Ctrl+A]で全選択し、[Ctrl+C]でコピーします
⑧Excelを開いて[Ctrl+V]で貼り付けます
⑨例えばC2のセルを選択した状態で、「数式」リボンの「関数の挿入」をクリックします
⑩「関数の挿入」ウインドウでREPLACE関数を選択し、OKを押します
⑪「関数の引数」ウインドウで、以下の通り入力します
ここでは、フォント名の前にある「[時刻](スペース文字)」を無に置き換えて、フォント名だけを抽出するということをしています
「文字列」の項目は⑧の手順でExcelシートのどこに貼り付けたかによりますが、うまく空気を読んでください
⑫時刻とスペース文字を排除して、フォント名だけを抜き出せたことを確認します(画像はフォント名ではないだろ)
⑬抜き出せたセルと同じように、全てのフォント名でも同じことをするためにオートフィルをします
オートフィルがわからない人は、C2セルを選択した状態で、
[Ctrl+Shift+↓]キーを同時押しした後、Alt→H→F→I→Sのキーを順番に押します
「種類」項目の「オートフィル(F)」のラジオボタンを選択し、OKを押します
⑭同じようにフォント名だけを抜き出せたことを確認します
⑮C列を右クリックし、コピーを選択します
画像で言う緑がけの部分を右クリックすればよいです
⑯E列を右クリックして、「貼り付けのオプション」から「値」をクリックして貼り付けます
⑰E列一番上の「enumerating fonts...」から一番下の「...end of fonts.」の間のセルを選択した状態で、「ホーム」リボンの「並べ替えとフィルター」→「昇順(S)」をクリックします
⑱E列のフォント名一覧が名前順に並べ替えられたことを確認します
⑯でわざわざ同じものをコピペしたのは、関数を参照しているのでこのままだと並べ替えができないからです
⑲テキストファイルに並べ替えたフォント一覧をコピペします
⑳AviUtlのフォント一覧を名前順で取得することができました
あとはここからコピペして、「Local Font 2」プラグインのExclude.txtに除外したいフォント名をぶち込みましょう