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>