diff --git a/assets/icons/pdf.svg b/assets/icons/pdf.svg index c8668ba..d3bc5e9 100644 --- a/assets/icons/pdf.svg +++ b/assets/icons/pdf.svg @@ -7,7 +7,7 @@ - + - PDF + PDF diff --git a/assets/icons/xml.svg b/assets/icons/xml.svg index cb15c6b..f728b5f 100644 --- a/assets/icons/xml.svg +++ b/assets/icons/xml.svg @@ -7,7 +7,7 @@ - + - <XML> + <XML> diff --git a/modules/cybercore-ui/src/main/java/br/com/cybercore/signer/ui/assets/AssetManager.java b/modules/cybercore-ui/src/main/java/br/com/cybercore/signer/ui/assets/AssetManager.java index 58fc51a..bf05838 100644 --- a/modules/cybercore-ui/src/main/java/br/com/cybercore/signer/ui/assets/AssetManager.java +++ b/modules/cybercore-ui/src/main/java/br/com/cybercore/signer/ui/assets/AssetManager.java @@ -519,7 +519,7 @@ public final class AssetManager { double x = parseDouble(el.getAttribute("x"), 0); double y = parseDouble(el.getAttribute("y"), 0); String content = el.getTextContent(); - Text t = new Text(x, y, content != null ? content.trim() : ""); + Text t = new Text(content != null ? content.trim() : ""); double fs = parseDouble(el.getAttribute("font-size"), 12); String fw = el.getAttribute("font-weight"); t.setFont(Font.font("Segoe UI", "bold".equalsIgnoreCase(fw) ? FontWeight.BOLD : FontWeight.NORMAL, fs)); @@ -529,9 +529,28 @@ public final class AssetManager { if (fillVal != null) { t.setFill(parsePaint(fillVal, defsMap, Color.BLACK)); } - if ("middle".equalsIgnoreCase(el.getAttribute("text-anchor"))) { + + String anchor = inlineStyle.getOrDefault("text-anchor", el.getAttribute("text-anchor")); + String baseline = inlineStyle.getOrDefault("dominant-baseline", el.getAttribute("dominant-baseline")); + + boolean isCenterBaseline = "central".equalsIgnoreCase(baseline) || "middle".equalsIgnoreCase(baseline); + if (isCenterBaseline) { t.setTextOrigin(javafx.geometry.VPos.CENTER); + } else { + t.setTextOrigin(javafx.geometry.VPos.BASELINE); } + + double textWidth = t.getLayoutBounds().getWidth(); + double finalX = x; + if ("middle".equalsIgnoreCase(anchor)) { + finalX = x - (textWidth / 2.0); + } else if ("end".equalsIgnoreCase(anchor)) { + finalX = x - textWidth; + } + + t.setX(finalX); + t.setY(y); + return t; } case "g" -> { diff --git a/modules/cybercore-ui/src/main/resources/assets/icons/pdf.svg b/modules/cybercore-ui/src/main/resources/assets/icons/pdf.svg index c8668ba..d3bc5e9 100644 --- a/modules/cybercore-ui/src/main/resources/assets/icons/pdf.svg +++ b/modules/cybercore-ui/src/main/resources/assets/icons/pdf.svg @@ -7,7 +7,7 @@ - + - PDF + PDF diff --git a/modules/cybercore-ui/src/main/resources/assets/icons/xml.svg b/modules/cybercore-ui/src/main/resources/assets/icons/xml.svg index cb15c6b..f728b5f 100644 --- a/modules/cybercore-ui/src/main/resources/assets/icons/xml.svg +++ b/modules/cybercore-ui/src/main/resources/assets/icons/xml.svg @@ -7,7 +7,7 @@ - + - <XML> + <XML>