Open
Description
p5.js version
dev-2.0 branch
What is your operating system?
None
Web browser and version
Chrome
Actual Behavior
Because of an attempt to stringify a large variable, error is logged in browser.
Expected Behavior
Do not try to stringify objects that are [expected to be] excessively large
Steps to reproduce
Observed in: processing/p5.js#7693

Notes from the above thread:
"that's a p5 web editor bug, it's trying to stringify the whole font including parsed font data, which is too large of an array."
"that would be great thanks! we may want to just add a special case there for p5.Font to ignore some propertiesI feel like we had similar issues in the past with vectors having a reference in them to the p5 instance"
Activity
lirenjie95 commentedon Apr 23, 2025
Hi @ksen0 and @dhowe, I'm trying to debug this error, below is what I did to reproduce it:
debugger
, add one line after thelet font = await loadFont('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap', { sets: 'latin' })
to print the fontconsole.log(font)
In addition, I checked the repo and plan to add check for p5.Font at those two files, please correct me if I missed any other place:
dipamsen commentedon May 10, 2025
If I understand this issue correctly, this issue is occurs only when logging the font object and not otherwise? In which case, I believe using local state to store the logs fixes this issue, since the 'stringify'ing takes place due to it being stored in a Redux state value (which uses Immer). Please correct me if I am wrong.
Relevant discussion: #3178 (comment)
lirenjie95 commentedon May 27, 2025
Thank you all for providing new thoughts for this issue. I was a bit busy some time ago and didn't have time to update my previous PR and this issue. After my verification yesterday, the fix of #3424 has eliminated the error when the p5.Font type is printed by console.log(). This is because the problem in this issue is basically the same as #3178, and there is a circular reference in the object to be printed.
@dipamsen As you mentioned in previous comment, I submitted a new PR #3499 to utilize the React context. @raclim I hope we can make that PR as a start point and then refactor all related code pieces.