summaryrefslogtreecommitdiff
path: root/dviware/dvisvgm/src/Font.cpp
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-11-16 03:01:15 +0000
committerNorbert Preining <norbert@preining.info>2023-11-16 03:01:15 +0000
commite0db3f0709a737e7258fd40a7cbfe9a461ea0756 (patch)
treee81cfc35b6602ffceefa73b8971ce3b94312820a /dviware/dvisvgm/src/Font.cpp
parentf5460c92605f1b3b17448b27ce53375157c3e4b1 (diff)
CTAN sync 202311160301
Diffstat (limited to 'dviware/dvisvgm/src/Font.cpp')
-rw-r--r--dviware/dvisvgm/src/Font.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/dviware/dvisvgm/src/Font.cpp b/dviware/dvisvgm/src/Font.cpp
index 4645d33073..218dd30f82 100644
--- a/dviware/dvisvgm/src/Font.cpp
+++ b/dviware/dvisvgm/src/Font.cpp
@@ -454,14 +454,17 @@ bool PhysicalFont::getExactGlyphBox (int c, GlyphMetrics &metrics, bool vertical
BoundingBox charbox;
if (!getExactGlyphBox(c, charbox, cb))
return false;
- if ((metrics.wl = -charbox.minX()) < 0) metrics.wl=0;
- if ((metrics.wr = charbox.maxX()) < 0) metrics.wr=0;
- if ((metrics.h = charbox.maxY()) < 0) metrics.h=0;
- if ((metrics.d = -charbox.minY()) < 0) metrics.d=0;
+ metrics.wl = -charbox.minX();
+ metrics.wr = charbox.maxX();
+ metrics.h = charbox.maxY();
+ metrics.d = -charbox.minY();
if (vertical) { // vertical text orientation
if (verticalLayout()) { // font designed for vertical layout?
- metrics.wl = metrics.wr = (metrics.wl+metrics.wr)/2;
- metrics.d += metrics.h;
+ double wl = max(0.0, metrics.wl);
+ double wr = max(0.0, metrics.wr);
+ double h = max(0.0, metrics.h);
+ metrics.wl = metrics.wr = (wl+wr)/2;
+ metrics.d += h;
metrics.h = 0;
}
else {