mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-09-17 06:52:23 +00:00
LibWeb: Port SVGFormattingContext to UTF-16
This commit is contained in:
parent
d893d3234d
commit
04d32deb52
Notes:
github-actions[bot]
2025-08-05 13:14:54 +00:00
Author: https://github.com/trflynn89
Commit: 04d32deb52
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/5720
Reviewed-by: https://github.com/gmta ✅
3 changed files with 7 additions and 10 deletions
|
@ -339,8 +339,7 @@ Gfx::Path SVGFormattingContext::compute_path_for_text(SVGTextBox const& text_box
|
||||||
// FIXME: Use per-code-point fonts.
|
// FIXME: Use per-code-point fonts.
|
||||||
auto& font = text_box.first_available_font();
|
auto& font = text_box.first_available_font();
|
||||||
auto text_contents = text_element.text_contents();
|
auto text_contents = text_element.text_contents();
|
||||||
Utf8View text_utf8 { text_contents };
|
auto text_width = font.width(text_contents);
|
||||||
auto text_width = font.width(text_utf8);
|
|
||||||
auto text_offset = text_element.get_offset(m_viewport_size);
|
auto text_offset = text_element.get_offset(m_viewport_size);
|
||||||
|
|
||||||
// https://svgwg.org/svg2-draft/text.html#TextAnchoringProperties
|
// https://svgwg.org/svg2-draft/text.html#TextAnchoringProperties
|
||||||
|
@ -368,7 +367,7 @@ Gfx::Path SVGFormattingContext::compute_path_for_text(SVGTextBox const& text_box
|
||||||
|
|
||||||
Gfx::Path path;
|
Gfx::Path path;
|
||||||
path.move_to(text_offset);
|
path.move_to(text_offset);
|
||||||
path.text(text_utf8, font);
|
path.text(text_contents, font);
|
||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -382,10 +381,9 @@ Gfx::Path SVGFormattingContext::compute_path_for_text_path(SVGTextPathBox const&
|
||||||
// FIXME: Use per-code-point fonts.
|
// FIXME: Use per-code-point fonts.
|
||||||
auto& font = text_path_box.first_available_font();
|
auto& font = text_path_box.first_available_font();
|
||||||
auto text_contents = text_path_element.text_contents();
|
auto text_contents = text_path_element.text_contents();
|
||||||
Utf8View text_utf8 { text_contents };
|
|
||||||
|
|
||||||
auto shape_path = const_cast<SVG::SVGGeometryElement&>(*path_or_shape).get_path(m_viewport_size);
|
auto shape_path = const_cast<SVG::SVGGeometryElement&>(*path_or_shape).get_path(m_viewport_size);
|
||||||
return shape_path.place_text_along(text_utf8, font);
|
return shape_path.place_text_along(text_contents, font);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SVGFormattingContext::layout_path_like_element(SVGGraphicsBox const& graphics_box)
|
void SVGFormattingContext::layout_path_like_element(SVGGraphicsBox const& graphics_box)
|
||||||
|
|
|
@ -40,16 +40,15 @@ Optional<TextAnchor> SVGTextContentElement::text_anchor() const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ByteString SVGTextContentElement::text_contents() const
|
Utf16String SVGTextContentElement::text_contents() const
|
||||||
{
|
{
|
||||||
return child_text_content().to_byte_string().trim_whitespace();
|
return child_text_content().trim_ascii_whitespace();
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://svgwg.org/svg2-draft/text.html#__svg__SVGTextContentElement__getNumberOfChars
|
// https://svgwg.org/svg2-draft/text.html#__svg__SVGTextContentElement__getNumberOfChars
|
||||||
WebIDL::ExceptionOr<WebIDL::Long> SVGTextContentElement::get_number_of_chars() const
|
WebIDL::ExceptionOr<WebIDL::Long> SVGTextContentElement::get_number_of_chars() const
|
||||||
{
|
{
|
||||||
auto length_in_code_units = AK::utf16_code_unit_length_from_utf8(text_contents());
|
return static_cast<WebIDL::Long>(text_contents().length_in_code_units());
|
||||||
return static_cast<WebIDL::Long>(length_in_code_units);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GC::Ref<Geometry::DOMPoint> SVGTextContentElement::get_start_position_of_char(WebIDL::UnsignedLong charnum)
|
GC::Ref<Geometry::DOMPoint> SVGTextContentElement::get_start_position_of_char(WebIDL::UnsignedLong charnum)
|
||||||
|
|
|
@ -23,7 +23,7 @@ public:
|
||||||
|
|
||||||
Optional<TextAnchor> text_anchor() const;
|
Optional<TextAnchor> text_anchor() const;
|
||||||
|
|
||||||
ByteString text_contents() const;
|
Utf16String text_contents() const;
|
||||||
|
|
||||||
GC::Ref<Geometry::DOMPoint> get_start_position_of_char(WebIDL::UnsignedLong charnum);
|
GC::Ref<Geometry::DOMPoint> get_start_position_of_char(WebIDL::UnsignedLong charnum);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue