Hi Hans,
Here is one answer to your questions about the upload error, the duplicate-entry error, where the fonts are stored, and whether FTP fonts work in the builder.
1. "Max size limit exceeded." on PHP 8.5
We reproduced this error. It happens when PHP's memory_limit is -1 (unlimited). With that value, a font ZIP is rejected even when it is small. We used a 1.6 MB ZIP with 32 font files. The same ZIP uploads normally when memory_limit is a number such as 512M.
I've passed it to our development team.
Your phpinfo showed 512M, but hosts often keep separate PHP settings for each PHP version, and the value your website sees can differ from the one you checked. To see what applies to your site:
- Create a file
info.php in your site root containing <?php phpinfo();.
- Open it in the browser with PHP 8.5 selected, and note
memory_limit, post_max_size and upload_max_filesize.
- Do the same with PHP 8.4, then delete
info.php.
(In Joomla you can also use System → System Information → PHP Information.)
If 8.5 shows -1, 0 or an empty value for memory_limit, set it to a number such as 512M in your hosting panel for that PHP version. The upload should then work. If it already shows a number, memory_limit is not your cause. Please post the three values for 8.5 and the error from your PHP error log at the moment the upload fails.
2. "Duplicate entry 'Roboto-local' for key 'family_name'"
Each upload creates a new database row for the font family, and the family name must be unique. Uploading a second weight of Roboto as a separate file therefore fails. Your ZIP approach is the right one: SP Page Builder 6.10.0 added several weights in one package.
3. Where are the fonts stored?
- The files are in
media/com_sppagebuilder/assets/custom-fonts/<FontName>/.
- The font record is in the database table
#__sppagebuilder_fonts.
They are not in the component's assets/fonts folder or in the template's fonts folder.
4. Can FTP-uploaded fonts be used in Font Book and Typography presets?
No, not as such. The Font Book list and the Typography presets read the #__sppagebuilder_fonts table (rows with published = 1). The upload creates that row and copies the files. FTP upload to templates/justice/fonts does neither, so the builder doesn't know those fonts.
On the front end, the builder loads a local font from media/com_sppagebuilder/assets/custom-fonts/<FontName>/stylesheet.css, so that stylesheet must exist under that name.
Robert's approach, with @font-face in custom.css and the font selection left blank in the builder, works for the website's styling. But you'd lose the preset control inside the builder. You can use both: upload through Font Book so the builder knows the font, and keep your @font-face rules in custom.css for the areas outside the builder, with the same family name.
Recreating what the upload does by hand (files in the folder plus a database row with type local) might work, but we haven't tested it and it isn't an official method. Don't try it on a live site without a database backup.
Please let us know what you find under PHP 8.5, and we'll look further.
Best Regards,