mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-09 09:21:46 +00:00
Fix #3051. Text background filter now applied on <text> element to make it work on Firefox.
This commit is contained in:
@@ -706,28 +706,21 @@ class SvgWriter:
|
|||||||
# ref: https://github.com/IfcOpenShell/IfcOpenShell/issues/2833#issuecomment-1471584960
|
# ref: https://github.com/IfcOpenShell/IfcOpenShell/issues/2833#issuecomment-1471584960
|
||||||
|
|
||||||
text = tool.Drawing.replace_text_literal_variables(text_literal.Literal, product)
|
text = tool.Drawing.replace_text_literal_variables(text_literal.Literal, product)
|
||||||
text_tag = self.svg.text(
|
attribs = {
|
||||||
"",
|
|
||||||
**{
|
|
||||||
"transform": transform,
|
"transform": transform,
|
||||||
"style": "font-size: 0;",
|
"style": "font-size: 0;",
|
||||||
},
|
}
|
||||||
|
if "fill-bg" in classes:
|
||||||
|
attribs["filter"] = "url(#fill-background)"
|
||||||
|
text_tag = self.svg.text(
|
||||||
|
"",
|
||||||
|
**attribs,
|
||||||
**self.get_box_alignment_parameters(text_literal.BoxAlignment),
|
**self.get_box_alignment_parameters(text_literal.BoxAlignment),
|
||||||
)
|
)
|
||||||
self.svg.add(text_tag)
|
self.svg.add(text_tag)
|
||||||
|
|
||||||
text_lines = text.replace("\\n", "\n").split("\n")
|
text_lines = text.replace("\\n", "\n").split("\n")
|
||||||
|
|
||||||
# adding fill background tspan
|
|
||||||
# tspans and text doesn't support setting up "background-color"
|
|
||||||
# so we add a filter, we do it in separate span because otherwise it will produce blurry image
|
|
||||||
# adding just 1 tspan seems to work
|
|
||||||
if "fill-bg" in classes:
|
|
||||||
tspan = self.svg.tspan(
|
|
||||||
text_lines[0], class_=classes_str, insert=text_position_svg, filter="url(#fill-background)"
|
|
||||||
)
|
|
||||||
text_tag.add(tspan)
|
|
||||||
|
|
||||||
for line_number, text_line in enumerate(text_lines):
|
for line_number, text_line in enumerate(text_lines):
|
||||||
# position has to be inserted at tspan to avoid x offset between tspans
|
# position has to be inserted at tspan to avoid x offset between tspans
|
||||||
tspan = self.svg.tspan(text_line, class_=classes_str, insert=text_position_svg)
|
tspan = self.svg.tspan(text_line, class_=classes_str, insert=text_position_svg)
|
||||||
|
|||||||
Reference in New Issue
Block a user