ruffle-rs / ruffle

A Flash Player emulator written in Rust
https://ruffle.rs
Other
15.38k stars 793 forks source link

cannot read the glyph inside a button #6581

Closed ousia closed 1 year ago

ousia commented 2 years ago

Describe the bug

The attached SWF file (remove the .mov extension, since it is a Flash animation) contains a full screen button using and edit text and a variable that changes values when full or normal screen .

https://user-images.githubusercontent.com/203767/161298330-e4c210bf-f89c-49ca-a4a1-82db9e363c2a.mov

It goes fullscreen and it resizes to normal size.

Ruffle isn’t able to display the glyphs from the font when used inside a button.

If the button contains an outline, it is displayed just fine.

I’m attach a sample file (again, .mov extension has to be removed first).

https://user-images.githubusercontent.com/203767/161299883-551dbabd-074b-45a0-814e-d3b952b7aadd.mov

Expected behavior

Glyph from the button should be displayed, the same way the outline from the button is displayed.

The player from Adobe displays both fine.

Many thanks for your help.

Affected platform

All of them.

Operating system

Any of them.

Browser

Any of them.

Additional information

No response

ousia commented 2 years ago

Here is what the player from Adobe displays:

flhp

And here is what Ruffle displays:

rffl

BTW, sample images come from a slightly modified SWF file (.txt extension added to enable upload to GitHub).

Herschel commented 2 years ago

This is the same issue as #2181. The glyph is a text field inside a button, with a variable binding of arrow_fullscreen_text. Even though this is a v7 SWF, resolving a text field variable path should act like SWFv5, where buttons are not valid display objects, so arrow_fullscreen_text should resolve to _root.arrow_fullscreen_text, but Ruffle resolves it on the button as _root.arrow_fullscreen.arrow_fullscreen_text.

ousia commented 2 years ago

Many thanks for your reply, @Herschel.

So if I don’t get it wrong, this issue may be solved by #5492 (which would also fix #1561, among many others).

Many thanks for your excellent work.

ousia commented 1 year ago

I have realized that https://github.com/ruffle-rs/ruffle/issues/6581#issuecomment-1086956111 contains a fix to avoid the problem in newly generated SWFs.

Naming and calling the text variable as _root.arrow_fullscreen_text leaves nothing to be resolved and avoids the issue.

Since this seems to be a duplicate of a previously reported issue (#2181), I’m closing this one myself.

ousia commented 1 year ago

Only commenting to say it has been fixed by @michiel2005 with #12541 (huge thanks for that!).

Many thanks to @n0samu (I was aware of the fix through https://github.com/ruffle-rs/ruffle/issues/11317#issuecomment-1666807979).