Skip to content

AviUtlに一時フォントを追加したり,既存のフォントを隠したりできるプラグイン.

License

Notifications You must be signed in to change notification settings

sigma-axis/aviutl_localfont2

Repository files navigation

Local Font 2 AviUtl プラグイン

システムにインストールされていないフォントを一時的に AviUtl で使えるようにするプラグインです.Font フォルダに入っているフォントファイルのみを追加します.

逆にシステムにインストールされているけれどAviUtlでは使う予定のないフォントを,テキストオブジェクトのドロップダウンリストから隠すこともできます.

khsk様の LocalFont プラグインの拡張版です.

ダウンロードはこちら. 紹介動画.

動作要件

導入方法

以下のフォルダのいずれかに localfont2.aulFonts フォルダをコピーしてください.

  1. aviutl.exe のあるフォルダ
  2. (1) のフォルダにある plugins フォルダ

使い方

フォントの追加方法

Fonts フォルダの中に AviUtl に追加・使用したいフォントファイルを配置してください.サブフォルダ内のフォントも検索します(階層無制限).

  • 階層構造の例:

    ┣ ⚙️ localfont2.aul
    ┣ 📂 Fonts
    ┃ ┣ 📝 Excludes.txt
    ┃ ┣ 📄 フォント1
    ┃ ┣ 📄 フォント2
    ┃ ┣ 📂 フォルダA
    ┃ ┃ ┣ 📄 フォント3
    ┃ ┃ ┗ 📄 フォント4
    ┃ ┗ 📂 フォルダB
    ┃   ┣ 📄 フォント5
    ┃   ┗ 📂 フォルダC
    ┃     ┗ 📄 フォント6

  • 以下の拡張子のファイルをフォントとして追加します:

    .fon .fnt .ttf .ttc .fot .otf .mmm .pfb .pfm

  • フォント以外のファイルは無視します (Fonts 直下の Excludes.txtWhitelist.txt を除く).

フォントの除外方法

Fonts フォルダ内の Excludes.txt に除外したいフォント名を1行ずつ記述してください.

  • 記述例:

    // Excludes.txt
    // ↓フォント名は1行に1つずつ記述してください.
    MS ゴシック
    MS 明朝
    FixedSys
    

記述法に関しては Excludes.txt 内のコメントにも説明があるので,そちらもご確認ください.

  • エンコード形式は UTF-8 です.バイト順マーク (BOM) の有無は問いません.

ホワイトリストモード

Excludes.txt のファイル名を Whitelist.txt に変更すると,逆に指定したフォントのみが表示されるようになります.記述方法は Excludes.txt と同じです.

Note

Excludes.txtWhitelist.txt が同時に存在する場合,Whitelist.txt が優先されてホワイトリストモードになります.この場合 Excludes.txt は無視されます.

全フォントリスト.exa について

タイムラインにドラッグ&ドロップしてメインウィンドウに表示させるとスクリプトが動いて,コンソールに現在ドロップダウンリストから選択可能なフォント一覧を出力できるエイリアスファイルです.フォントリスト作成の補助に利用してください.

  • 動作には patch.aulLuaJIT が必要です.LuaJITはこちらからダウンロードすることでも取得できます.

  • 実行する Lua スクリプトは次の通りです(クリックで表示).
    local c,ffi,err=pcall(require,"ffi");
    if not _PATCH then err="patch.aul が必要です.";
    elseif not c then err="LuaJIT が必要です.";
    elseif not made_output then
        debug_print("フォント出力中...");
        ffi.cdef[[
            typedef struct {
                char pad[28];
                char lfFaceName[32];
            } LOGFONTA;
            typedef int(__stdcall *FONTENUMPROCA)(LOGFONTA*,void*,int,int);
            int EnumFontFamiliesA(void*,const char*,FONTENUMPROCA,int);
            void* GetDC(void*);
            int ReleaseDC(void*,void*);
        ]];
        local cb,hdc=ffi.cast("FONTENUMPROCA",function(lf,_,_,_)
            local str=ffi.string(lf.lfFaceName);
            if str:sub(1,1)~="@" then table.insert(c,str.."\n") end
            return 1;
        end),ffi.C.GetDC(nil);
        c={}; ffi.C.EnumFontFamiliesA(hdc,nil,cb,0);
        cb:free(); ffi.C.ReleaseDC(nil,hdc);
        table.sort(c); io.write(table.concat(c));
        debug_print(#c.."個のフォント名を出力.");
        made_output=true;
    end
    obj.load("text",err or "フォント名を出力しました.\nコンソールを確認してください.");

localfont2のバージョン確認.exa について

タイムラインにドラッグ&ドロップするとテキストオブジェクトになるエイリアスファイルです.現在導入されている localfont2.aul ファイルのバージョンを表示するスクリプトが書かれています.更新確認などに利用してください.

  • 動作には LuaJIT が必要です.[DL]

  • 実行する Lua スクリプトは次の通りです(クリックで表示).
    local aulname="localfont2.aul";
    local c,ffi,str,lib=pcall(require,"ffi");
    if not c then obj.mes"LuaJIT が必要です."; return end
    if not defined_ThisAulVersion then
        ffi.cdef[[
            uint32_t __stdcall GetModuleFileNameA(void*, char*, size_t);
            const char* __stdcall ThisAulVersion(void);
        ]];
        defined_ThisAulVersion=true;
    end
    str=ffi.new"char[256]"; ffi.C.GetModuleFileNameA(nil,str,256);
    str=ffi.string(str):match".*[/\\]";
    c,lib=pcall(ffi.load,str..aulname);
    if not c then c,lib=pcall(ffi.load,str.."plugins/"..aulname) end
    if not c then obj.mes(aulname.." が見つかりません."); return end
    c,str=pcall(function()return lib.ThisAulVersion() end);
    obj.mes(aulname.." のバージョン: "..(c and ffi.string(str) or "v1.14 以前"));

その他

  1. フォントの除外機能は,フォントを設定ダイアログのドロップダウンリストから「隠す」だけであって,制御文字 <s,フォント名> やスクリプトの obj.setfont("フォント名",34) などを利用して使うことは可能です.

  2. oov様のテキスト編集補助プラグインのフォントリストからも隠せます.

Note

追加したフォントを除外リストに入れた場合,ドロップダウンリストには表示されませんが,制御文字 <s> や スクリプト obj.setfont() などでは使えるようになります.

謝辞

このプラグインのフォントの一時追加機能は,アイデア,実装方法を含めて khsk様の LocalFont プラグインのものを流用しています.このような場で恐縮ですが大変便利なプラグインの公開,感謝申し上げます.

改版履歴

  • v1.20 (2024-05-09)

    Excludes.txt (あるいは Whitelist.txt) のエンコード形式を以前の Shift-JIS から UTF-8 に変更しました.v1.14 以前から更新する際にはエンコード形式の変換をお願いします.

    • コードの大幅整理・改造.大文字小文字の同一視判定を Win32 API に任せるように.

    • Excludes.txt のエンコード形式を Shift-JIS から UTF-8 に変更.

      • それに伴って同梱の Excludes.txt のコメント説明も一部修正・変更.
    • Excludes.txt 内に記述例として,AviUtl ではまともに扱えなかったり多言語系や用途が特殊なフォントを記載.

      • 多くの環境に共通して存在するフォントだと思われますので,必要に応じてブロックコメントの外に抜き出して利用してください.
    • バージョン情報の埋め込み方法を変更.

    • localfont2のバージョン確認.exa を同梱.このプラグインのバージョンは AviUtl の GUI からは確認できないため,代替手段を用意.

  • v1.14 (2024-04-04)

    • 同梱エイリアスファイルを更新.フォント名を名前順に並び替えるように変更.
  • v1.13 (2024-03-08)

    • 同梱エイリアスファイルを更新.各フォント名の出力で,行頭にタイムスタンプが出力されないように変更.
  • v1.12 (2024-02-28)

    • 初期化周りを少し改善.
  • v1.11 (2024-01-28)

    • ホワイトリストモードでフォントが1つもないとき,従来のブラックリストモードで動作するように変更.

    • 全フォントのリストが出力できるエイリアスファイルを同梱.

  • v1.10 (2024-01-28)

    • ホワイトリストモードの追加.指定したフォント以外が非表示になります.
  • v1.06 (2024-01-27)

    • 除外フォント名の一致判定が誤っていたことがあったのを修正.
  • v1.05 (2024-01-25)

    • 全角アルファベットの大文字と小文字を同一視できていなかったのを修正.
  • v1.04 (2024-01-25)

    • README.mdExcludes.txt 内のコメント説明を更新.

    • コード整理.

    • バイナリとしてはほぼ変更なしですがそれなりに形になったので,区切りとして付随ドキュメント更新も兼ねてバージョン上げ.

  • v1.03 (2024-01-23)

    • Excludes.txt でブロックコメント開始・終了の行が長すぎると認識されなかったのを修正.

    • 無駄なコピーを減らした.

    • ライブラリの使い方を間違っていたかもしれないのを修正.

    • その他小さな修正,コード整理.

  • v1.02 (2024-01-22)

    • 除外フォント指定で,フォント名前後の全角空白も無視するように変更.

    • 追加フォントの拡張子をチェックするように変更.

  • v1.01 (2024-01-21)

    • ビルドオプション修正.
  • v1.00 (2024-01-21)

    • 初版.

ライセンス

このプログラムの利用・改変・再頒布等に関しては MIT ライセンスに従うものとします.


The MIT License (MIT)

Copyright (C) 2024 sigma-axis

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

https://mit-license.org/

Credits

AviUtl-LocalFontPlugin

https://github.com/khsk/AviUtl-LocalFontPlugin


MIT License

Copyright (c) 2020 khsk

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Microsoft Research Detours Package

https://github.com/microsoft/Detours


Copyright (c) Microsoft Corporation.

MIT License

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

連絡・バグ報告

About

AviUtlに一時フォントを追加したり,既存のフォントを隠したりできるプラグイン.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages