Font Awesome Manager

Font Awesome Manager 1.2.7

No permission to download
@Kirby I just uploaded 1.2.5.1 but the setting to change from the default transfonter.org to the other one returns an error:
Code:
The following sub-option(s) are unknown: enabled
I unfortunately can't reproduce this with the latest package (Version 1.2.5.1 / Sun Jan 08 2023 10:21:10 GMT+0000).
Did you double-check that you are using the latest code?

@Mr. Lucky
You can find out the configured processor by checking FAM options
1673182595031.webp
 
I unfortunately can't reproduce this with the latest package
I had the previous version installed (1.2.4 I think, just not active, as it was getting access forbidden by the free online service), then upgraded to the version you released today, 1.2.5.1. This is how the behavior occurred.

I removed completely the plugin including deleted files, then installed 1.2.5.1 again. This time none of the processors were selected, and after I picked subfonter.net and clicked Save, it ran the detection and font reduction thing. I have not seen this before. Net, it works now - all icons are visible. Not sure what was the issue before, but a clean-up of old version helped. Thanks :)
 
I'm using pyftsubset on 1.2.4, should I still wait to upgrade?
Yes, please wait until dust has settled down a bit; I'll pust an update notice when I feel things are stable enough.

There is nothing (except cosmetic changes like fixed typos in source code comments and a small glitch in a phrase) in 1.2.5 that would improve things if you use pyftsubset.

I removed completely the plugin including deleted files, then installed 1.2.5.1 again. This time none of the processors were selected, and after I picked subfonter.net and clicked Save, it ran the detection and font reduction thing. I have not seen this before. Net, it works now - all icons are visible. Not sure what was the issue before, but a clean-up of old version helped.
Great to hear that it does work now :)
If you can please use pyftsubset instead of the webservice (this might even work on shared webhosts with the precompiled binary).
 
My webhost provides a very locked down service (and I prefer it this way, despite the limited flexibility) with no shell access and no custom software. They don't even provide imagick PECL extensions. The web service will have to do. For now I'm just curious if the plugin makes a significant difference in my case.
 
My webhost provides a very locked down service (and I prefer it this way, despite the limited flexibility) with no shell access and no custom software.
You don't need shell access.

If you do not have shell access you could still try to use the precompiled binary, please do that if you haven't done yet.

Transfonter.org already blocked requests from this Add-on (most likely due to service overload), I don't want this to happen again with Subfonter.net - so this should really only be used if nothing else works!
 
Linux Debian, check.

proc_open, check.

Started add-on installer and:
  • sh: 1: exec: /usr/www/users/[redacted]/forums/src/addons/Kirby/PyFtSubset/bin/pyftsubset.sh: Permission denied
  • Can't execute pyftsubset

Looks like shell access is required, even if it's not an interactive shell that I need to access over SSH.

Maybe a change of approach is necessary, and be extremely conservative on the conditions that allow the web service to be triggered? Perhaps you don't need to drop EVERYTHING that is not being used and reach the absolute minimum set of font objects that are in use, when this course of action requires you to re-compute that list of objects every time there's a new one. Maybe you can categorize the content of the font using MoSCoW prioritization: Must have, Should have, Could have, Won't have, and exclude some big blocks that are very unlikely to be used (the Won't have) but keep all the Must have (usually most are in us) and Should have (have a high chance of being used). That strategy might still give you a valuable space/time/traffic reduction but make API calls extremely rare.

Also you could use the power of data from people already using the plugin: with their opt-in permission, collect which objects are retained in the font and which not. With a sufficiently large number of forums reporting in, you can get a good sense of what is the minimal set that would pretty much make everyone happy with near zero API calls and still dropping a big chunk of unused stuff.
 
Last edited:
Did you upload the files for the pyftsubset Add-on manually (via FTP) and set chmod or did you try to install the ZIP in XenForo backend?
If you tried installation via ZIP, please test version 1.0.3.

The code already tries to keep subset processor calls minimal, currently there is only one call to the service if there are actually changes in the subsets though that call may include more files than actually necessary and a future version will further reduce the amount of files in one call.

What could be done additionally is to locally cache subsets for reuse (eg. an Add-on or Style that adds new icons does get installed and uninstalled again, in this case subset definitions change twice but after uninstall the previous set (from before install) could be reused).

This could reduce calls a bit but it is rather complicated to implement so I am a bit reluctant to actually do that :/
 
Last edited:
I wanted to try subfonter.net as I can't install the pre-compiled binary (XF Cloud).
If I rebuild the icons, I don't get any errors, but most fonts are missing.
Any way to do some debugging on this?
 
Hmm ... normally it should log an error if smth. goes wrong.

What exactly does "but most fonts are missing" mean?
Can you set Log Level to Debug, trigger a manual rebuild and post the rebuild log?
 
Some fonts are visible, others not. For example the quick reply box:
1673426631240.webp

Manual rebuild:
Code:
Starting rebuild job
Build mode is manual
Full Rebuild forced
Rebuild required: icons
Rebuild required: solidicons
Rebuild required: regularicons
Rebuild required: lighticons
Creating subsets
Array
(
    [icons] => Array
        (
            [basefonts] => Array
                (
                    [0] => fa-brands-400
                    [1] => fa-light-300
                    [2] => fa-regular-400
                    [3] => fa-solid-900
                )

            [icons] => Array
                (
                    [arrow-left] => f060
                    [arrows-alt] => f0b2
                    [broadcast-tower] => f519
                    [comment-alt-lines] => f4a6
                    [dice] => f522
                    [euro-sign] => f153
                    [exchange] => f0ec
                    [exchange-alt] => f362
                    [external-link-alt] => f35d
                    [external-link-square] => f14c
                    [file-alt] => f15c
                    [file-archive] => f1c6
                    [file-audio] => f1c7
                    [file-code] => f1c9
                    [file-csv] => f6dd
                    [file-download] => f56d
                    [file-excel] => f1c3
                    [file-image] => f1c5
                    [file-music] => f8b6
                    [file-pdf] => f1c1
                    [file-powerpoint] => f1c4
                    [file-search] => f865
                    [file-spreadsheet] => f65b
                    [file-video] => f1c8
                    [file-word] => f1c2
                    [heading] => f1dc
                    [home] => f015
                    [info] => f129
                    [lightbulb] => f0eb
                    [reddit] => f1a1
                    [reddit-square] => f1a2
                    [sign-in] => f090
                    [toggle-off] => f204
                    [toggle-on] => f205
                    [unlink] => f127
                )

            [suffix] => min
        )

    [duotoneicons] => Array
        (
            [basefonts] => Array
                (
                    [0] => fa-duotone-900
                )

            [icons] => Array
                (
                    [arrow-left:before] => f060
                    [arrow-left:after] => 10f060
                    [arrows-alt:before] => f0b2
                    [arrows-alt:after] => 10f0b2
                    [broadcast-tower:before] => f519
                    [broadcast-tower:after] => 10f519
                    [comment-alt-lines:before] => f4a6
                    [comment-alt-lines:after] => 10f4a6
                    [dice:before] => f522
                    [dice:after] => 10f522
                    [euro-sign:before] => f153
                    [euro-sign:after] => 10f153
                    [exchange:before] => f0ec
                    [exchange:after] => 10f0ec
                    [exchange-alt:before] => f362
                    [exchange-alt:after] => 10f362
                    [external-link-alt:before] => f35d
                    [external-link-alt:after] => 10f35d
                    [external-link-square:before] => f14c
                    [external-link-square:after] => 10f14c
                    [file-alt:before] => f15c
                    [file-alt:after] => 10f15c
                    [file-archive:before] => f1c6
                    [file-archive:after] => 10f1c6
                    [file-audio:before] => f1c7
                    [file-audio:after] => 10f1c7
                    [file-code:before] => f1c9
                    [file-code:after] => 10f1c9
                    [file-csv:before] => f6dd
                    [file-csv:after] => 10f6dd
                    [file-download:before] => f56d
                    [file-download:after] => 10f56d
                    [file-excel:before] => f1c3
                    [file-excel:after] => 10f1c3
                    [file-image:before] => f1c5
                    [file-image:after] => 10f1c5
                    [file-music:before] => f8b6
                    [file-music:after] => 10f8b6
                    [file-pdf:before] => f1c1
                    [file-pdf:after] => 10f1c1
                    [file-powerpoint:before] => f1c4
                    [file-powerpoint:after] => 10f1c4
                    [file-search:before] => f865
                    [file-search:after] => 10f865
                    [file-spreadsheet:before] => f65b
                    [file-spreadsheet:after] => 10f65b
                    [file-video:before] => f1c8
                    [file-video:after] => 10f1c8
                    [file-word:before] => f1c2
                    [file-word:after] => 10f1c2
                    [heading:before] => f1dc
                    [heading:after] => 10f1dc
                    [home:before] => f015
                    [home:after] => 10f015
                    [info:before] => f129
                    [info:after] => 10f129
                    [lightbulb:before] => f0eb
                    [lightbulb:after] => 10f0eb
                    [sign-in:before] => f090
                    [sign-in:after] => 10f090
                    [toggle-off:before] => f204
                    [toggle-off:after] => 10f204
                    [toggle-on:before] => f205
                    [toggle-on:after] => 10f205
                    [unlink:before] => f127
                    [unlink:after] => 10f127
                )

            [suffix] => min
        )

    [solidicons] => Array
        (
            [basefonts] => Array
                (
                    [0] => fa-solid-900
                )

            [icons] => Array
                (
                    [analytics] => f643
                    [arrow-circle-right] => f0a9
                    [arrow-right] => f061
                    [arrow-up] => f062
                    [backward] => f04a
                    [bookmark] => f02e
                    [caret-down] => f0d7
                    [caret-left] => f0d9
                    [caret-right] => f0da
                    [caret-up] => f0d8
                    [check-circle] => f058
                    [check-square] => f14a
                    [chevron-circle-right] => f138
                    [chevron-left] => f053
                    [chevron-right] => f054
                    [circle] => f111
                    [clock] => f017
                    [comment] => f075
                    [comments] => f086
                    [edit] => f044
                    [envelope] => f0e0
                    [exclamation-circle] => f06a
                    [exclamation-triangle] => f071
                    [eye] => f06e
                    [eye-slash] => f070
                    [forward] => f04e
                    [home] => f015
                    [link] => f0c1
                    [mask] => f6fa
                    [minus] => f068
                    [minus-circle] => f056
                    [play-circle] => f144
                    [plus] => f067
                    [question-circle] => f059
                    [rss] => f09e
                    [share-alt] => f1e0
                    [sliders-h] => f1de
                    [square] => f0c8
                    [star] => f005
                    [star-half] => f089
                    [stop-circle] => f28d
                    [sync] => f021
                    [thumbs-up] => f164
                    [times] => f00d
                    [toggle-on] => f205
                    [trash] => f1f8
                    [trash-alt] => f2ed
                    [user] => f007
                    [user-circle] => f2bd
                    [users] => f0c0
                )

            [suffix] => man
        )

    [regularicons] => Array
        (
            [basefonts] => Array
                (
                    [0] => fa-regular-400
                )

            [icons] => Array
                (
                    [bookmark] => f02e
                    [check-circle] => f058
                    [check-square] => f14a
                    [circle] => f111
                    [comment-alt] => f27a
                    [comments-alt] => f4b6
                    [eye] => f06e
                    [eye-slash] => f070
                    [history] => f1da
                    [question-circle] => f059
                    [square] => f0c8
                    [star] => f005
                    [trash-alt] => f2ed
                    [user] => f007
                )

            [suffix] => man
        )

    [lighticons] => Array
        (
            [basefonts] => Array
                (
                    [0] => fa-light-300
                )

            [icons] => Array
                (
                    [comments] => f086
                    [edit] => f044
                    [file-alt] => f15c
                    [search] => f002
                    [sign-in-alt] => f2f6
                    [user-plus] => f234
                )

            [suffix] => man
        )

)

Using subfonter.net webservice
Creating 16 subsets
Array
(
    [fa-brands-400.woff2] => Array
        (
            [0] => Array
                (
                    [format] => woff
                    [suffix] => min
                    [codepoints] => 0020,f060,f0b2,f519,f4a6,f522,f153,f0ec,f362,f35d,f14c,f15c,f1c6,f1c7,f1c9,f6dd,f56d,f1c3,f1c5,f8b6,f1c1,f1c4,f865,f65b,f1c8,f1c2,f1dc,f015,f129,f0eb,f1a1,f1a2,f090,f204,f205,f127
                )

            [1] => Array
                (
                    [format] => woff2
                    [suffix] => min
                    [codepoints] => 0020,f060,f0b2,f519,f4a6,f522,f153,f0ec,f362,f35d,f14c,f15c,f1c6,f1c7,f1c9,f6dd,f56d,f1c3,f1c5,f8b6,f1c1,f1c4,f865,f65b,f1c8,f1c2,f1dc,f015,f129,f0eb,f1a1,f1a2,f090,f204,f205,f127
                )

        )

    [fa-light-300.woff2] => Array
        (
            [0] => Array
                (
                    [format] => woff
                    [suffix] => min
                    [codepoints] => 0020,f060,f0b2,f519,f4a6,f522,f153,f0ec,f362,f35d,f14c,f15c,f1c6,f1c7,f1c9,f6dd,f56d,f1c3,f1c5,f8b6,f1c1,f1c4,f865,f65b,f1c8,f1c2,f1dc,f015,f129,f0eb,f1a1,f1a2,f090,f204,f205,f127
                )

            [1] => Array
                (
                    [format] => woff2
                    [suffix] => min
                    [codepoints] => 0020,f060,f0b2,f519,f4a6,f522,f153,f0ec,f362,f35d,f14c,f15c,f1c6,f1c7,f1c9,f6dd,f56d,f1c3,f1c5,f8b6,f1c1,f1c4,f865,f65b,f1c8,f1c2,f1dc,f015,f129,f0eb,f1a1,f1a2,f090,f204,f205,f127
                )

            [2] => Array
                (
                    [format] => woff
                    [suffix] => man
                    [codepoints] => 0020,f086,f044,f15c,f002,f2f6,f234
                )

            [3] => Array
                (
                    [format] => woff2
                    [suffix] => man
                    [codepoints] => 0020,f086,f044,f15c,f002,f2f6,f234
                )

        )

    [fa-regular-400.woff2] => Array
        (
            [0] => Array
                (
                    [format] => woff
                    [suffix] => min
                    [codepoints] => 0020,f060,f0b2,f519,f4a6,f522,f153,f0ec,f362,f35d,f14c,f15c,f1c6,f1c7,f1c9,f6dd,f56d,f1c3,f1c5,f8b6,f1c1,f1c4,f865,f65b,f1c8,f1c2,f1dc,f015,f129,f0eb,f1a1,f1a2,f090,f204,f205,f127
                )

            [1] => Array
                (
                    [format] => woff2
                    [suffix] => min
                    [codepoints] => 0020,f060,f0b2,f519,f4a6,f522,f153,f0ec,f362,f35d,f14c,f15c,f1c6,f1c7,f1c9,f6dd,f56d,f1c3,f1c5,f8b6,f1c1,f1c4,f865,f65b,f1c8,f1c2,f1dc,f015,f129,f0eb,f1a1,f1a2,f090,f204,f205,f127
                )

            [2] => Array
                (
                    [format] => woff
                    [suffix] => man
                    [codepoints] => 0020,f02e,f058,f14a,f111,f27a,f4b6,f06e,f070,f1da,f059,f0c8,f005,f2ed,f007
                )

            [3] => Array
                (
                    [format] => woff2
                    [suffix] => man
                    [codepoints] => 0020,f02e,f058,f14a,f111,f27a,f4b6,f06e,f070,f1da,f059,f0c8,f005,f2ed,f007
                )

        )

    [fa-solid-900.woff2] => Array
        (
            [0] => Array
                (
                    [format] => woff
                    [suffix] => min
                    [codepoints] => 0020,f060,f0b2,f519,f4a6,f522,f153,f0ec,f362,f35d,f14c,f15c,f1c6,f1c7,f1c9,f6dd,f56d,f1c3,f1c5,f8b6,f1c1,f1c4,f865,f65b,f1c8,f1c2,f1dc,f015,f129,f0eb,f1a1,f1a2,f090,f204,f205,f127
                )

            [1] => Array
                (
                    [format] => woff2
                    [suffix] => min
                    [codepoints] => 0020,f060,f0b2,f519,f4a6,f522,f153,f0ec,f362,f35d,f14c,f15c,f1c6,f1c7,f1c9,f6dd,f56d,f1c3,f1c5,f8b6,f1c1,f1c4,f865,f65b,f1c8,f1c2,f1dc,f015,f129,f0eb,f1a1,f1a2,f090,f204,f205,f127
                )

            [2] => Array
                (
                    [format] => woff
                    [suffix] => man
                    [codepoints] => 0020,f643,f0a9,f061,f062,f04a,f02e,f0d7,f0d9,f0da,f0d8,f058,f14a,f138,f053,f054,f111,f017,f075,f086,f044,f0e0,f06a,f071,f06e,f070,f04e,f015,f0c1,f6fa,f068,f056,f144,f067,f059,f09e,f1e0,f1de,f0c8,f005,f089,f28d,f021,f164,f00d,f205,f1f8,f2ed,f007,f2bd,f0c0
                )

            [3] => Array
                (
                    [format] => woff2
                    [suffix] => man
                    [codepoints] => 0020,f643,f0a9,f061,f062,f04a,f02e,f0d7,f0d9,f0da,f0d8,f058,f14a,f138,f053,f054,f111,f017,f075,f086,f044,f0e0,f06a,f071,f06e,f070,f04e,f015,f0c1,f6fa,f068,f056,f144,f067,f059,f09e,f1e0,f1de,f0c8,f005,f089,f28d,f021,f164,f00d,f205,f1f8,f2ed,f007,f2bd,f0c0
                )

        )

    [fa-duotone-900.woff2] => Array
        (
            [0] => Array
                (
                    [format] => woff
                    [suffix] => min
                    [codepoints] => 0020,f060,10f060,f0b2,10f0b2,f519,10f519,f4a6,10f4a6,f522,10f522,f153,10f153,f0ec,10f0ec,f362,10f362,f35d,10f35d,f14c,10f14c,f15c,10f15c,f1c6,10f1c6,f1c7,10f1c7,f1c9,10f1c9,f6dd,10f6dd,f56d,10f56d,f1c3,10f1c3,f1c5,10f1c5,f8b6,10f8b6,f1c1,10f1c1,f1c4,10f1c4,f865,10f865,f65b,10f65b,f1c8,10f1c8,f1c2,10f1c2,f1dc,10f1dc,f015,10f015,f129,10f129,f0eb,10f0eb,f090,10f090,f204,10f204,f205,10f205,f127,10f127
                )

            [1] => Array
                (
                    [format] => woff2
                    [suffix] => min
                    [codepoints] => 0020,f060,10f060,f0b2,10f0b2,f519,10f519,f4a6,10f4a6,f522,10f522,f153,10f153,f0ec,10f0ec,f362,10f362,f35d,10f35d,f14c,10f14c,f15c,10f15c,f1c6,10f1c6,f1c7,10f1c7,f1c9,10f1c9,f6dd,10f6dd,f56d,10f56d,f1c3,10f1c3,f1c5,10f1c5,f8b6,10f8b6,f1c1,10f1c1,f1c4,10f1c4,f865,10f865,f65b,10f65b,f1c8,10f1c8,f1c2,10f1c2,f1dc,10f1dc,f015,10f015,f129,10f129,f0eb,10f0eb,f090,10f090,f204,10f204,f205,10f205,f127,10f127
                )

        )

)

Got successful result after 4.97 seconds
Rebuild job completed

Code:
array(4) {
  ["url"] => string(24) "/admin.php?tools/run-job"
  ["referrer"] => string(120) "https://###/admin.php?tools/run-job&only_id=353278&_xfRedirect=%2Fadmin.php%3Ftools%2Frebuild%26success%3D1"
  ["_GET"] => array(1) {
    ["tools/run-job"] => string(0) ""
  }
  ["_POST"] => array(3) {
    ["_xfRedirect"] => string(58) "https://###/admin.php?tools/rebuild&success=1"
    ["_xfToken"] => string(8) "********"
    ["only_ids"] => string(6) "353278"
  }
}
 

Attachments

  • 1673426594414.webp
    1673426594414.webp
    3.7 KB · Views: 4
According to the log Build Mode is set to Manual, eg. only those icons explicitly listed in options
  • Icons
  • Light Icons
  • Regular Icons
  • Solid Icons
will be included in the subsets and no auto-discovery (eg. scanning database and files) is taking place.

Was this set intentionally?
If so you will have to manually add every used icon to those lists, if not I'd suggest to set Build Mode to Automatic (which is the default) and run another rebuild.
 
Whoops. I downloaded and installed the latest version via the Addon Update Notifier and remembered the notice not to download it for older than 1.2.4 version who use pyftsubset. What should I do now? Can I downgrade or will I need to disable the addon now?
 
You don't have to do anything, it should work just fine - I just don't have enough feedback yet to say it does work fine.

Do you expecience any problems?
 
Top Bottom