diff options
author | Norbert Preining <norbert@preining.info> | 2023-11-16 03:01:15 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2023-11-16 03:01:15 +0000 |
commit | e0db3f0709a737e7258fd40a7cbfe9a461ea0756 (patch) | |
tree | e81cfc35b6602ffceefa73b8971ce3b94312820a /dviware/dvisvgm/src/Font.cpp | |
parent | f5460c92605f1b3b17448b27ce53375157c3e4b1 (diff) |
CTAN sync 202311160301
Diffstat (limited to 'dviware/dvisvgm/src/Font.cpp')
-rw-r--r-- | dviware/dvisvgm/src/Font.cpp | 15 |
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 { |