protectwise / troika

A JavaScript framework for interactive 3D and 2D visualizations
MIT License
1.57k stars 114 forks source link

troika-three-text uncaught exception #313

Open WallanceLee opened 1 month ago

WallanceLee commented 1 month ago

Error: Error in worker callModule call: Cannot destructure property 'ascender' of 'fontObj' as it is undefined. Why was it happened? Could you provide some listener to receive this exception stacktrace. I want to trace the source parameter, but I cannot found. Thanks a lot for your time.

WallanceLee commented 1 month ago

sorry, I found the solution. If I use default font, there was not the problem, but If I use NotoSerifCJKsc-VF.ttf from google noto repo or other font like Songti, there is the problem. The problem may be with CJK languages, because when I render just ASCII-ranged chars there was not the problem. Could you give me some help?

WallanceLee commented 1 month ago

update my fonts file link: https://github.com/googlefonts/noto-cjk/raw/main/Serif/Variable/TTF/NotoSerifCJKsc-VF.ttf

iangilman commented 1 month ago

I'm getting the same thing. It does appear to be related to specific fonts. In my case the fonts aren't CJK-related. I haven't tracked down exactly which fonts I'm using that are causing the issue; I can if that's helpful.

lojjic commented 1 month ago

@WallanceLee I just tried a local test using your NotoSerifCJKsc-VF.ttf font link and some Chinese text and it renders just fine for me. 🤔

That Cannot destructure property 'ascender' of 'fontObj' error seems like it could only happen if certain characters could not be resolved to a font, which shouldn't ever happen. There may be some sort of fallback bug with certain characters. Can you provide a string of text that definitely triggers the error for you?

WallanceLee commented 1 month ago

What if some unicode is not present in font file? For example, \uE532? Sorry, I cannot find the exact character because my CAD file has a lot of character.

lojjic commented 1 month ago

Any unicode codepoint that can not be resolved in the font file you specify or one of the unicode fonts should just fall back to the null glyph (a rectangle).

I'm not sure how to reproduce this if you can't provide a string that fails. 😓

null77 commented 2 days ago

I believe I was getting this error from empty strings: ' '. Will have to circle back to confirm.