From c9c1326d132235a9e523924e9d5b0abd14f12ddc Mon Sep 17 00:00:00 2001 From: Tom Schuster Date: Thu, 18 Jan 2024 19:20:01 +0100 Subject: [PATCH] avm2: Allow TLF to use embedded fonts when requested --- core/src/avm2/globals/flash/text/engine/text_block.rs | 11 +++++++++-- core/src/display_object/edit_text.rs | 1 - 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/core/src/avm2/globals/flash/text/engine/text_block.rs b/core/src/avm2/globals/flash/text/engine/text_block.rs index 8320139ec..41e31e9a7 100644 --- a/core/src/avm2/globals/flash/text/engine/text_block.rs +++ b/core/src/avm2/globals/flash/text/engine/text_block.rs @@ -139,7 +139,7 @@ fn apply_format<'gc>( .get_public_property("fontSize", activation)? .coerce_to_number(activation)?; - let (font, bold, italic) = if let Value::Object(font_description) = + let (font, bold, italic, is_device_font) = if let Value::Object(font_description) = element_format.get_public_property("fontDescription", activation)? { ( @@ -162,9 +162,13 @@ fn apply_format<'gc>( .coerce_to_string(activation)? == b"italic", ), + &font_description + .get_public_property("fontLookup", activation)? + .coerce_to_string(activation)? + == b"device", ) } else { - (None, None, None) + (None, None, None, true) }; let format = TextFormat { @@ -176,8 +180,11 @@ fn apply_format<'gc>( ..TextFormat::default() }; + display_object.set_is_device_font(&mut activation.context, is_device_font); display_object.set_text_format(0, text.len(), format.clone(), &mut activation.context); display_object.set_new_text_format(format, &mut activation.context); + } else { + display_object.set_is_device_font(&mut activation.context, true); } display_object.set_word_wrap(true, &mut activation.context); diff --git a/core/src/display_object/edit_text.rs b/core/src/display_object/edit_text.rs index 79c510caa..d91825aca 100644 --- a/core/src/display_object/edit_text.rs +++ b/core/src/display_object/edit_text.rs @@ -399,7 +399,6 @@ impl<'gc> EditText<'gc> { let text = Self::new(context, swf_movie, x, y, width, height); text.set_is_tlf(context.gc_context, true); text.set_selectable(false, context); - text.set_is_device_font(context, true); text }