aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/PositionCache.cxx2
-rw-r--r--src/Style.h1
-rw-r--r--src/ViewStyle.cxx2
3 files changed, 4 insertions, 1 deletions
diff --git a/src/PositionCache.cxx b/src/PositionCache.cxx
index 073a62692..f24164636 100644
--- a/src/PositionCache.cxx
+++ b/src/PositionCache.cxx
@@ -906,7 +906,7 @@ void PositionCache::MeasureWidths(Surface *surface, const ViewStyle &vstyle, uns
if (vstyle.styles[styleNumber].monospaceASCII) {
if (AllGraphicASCII(sv)) {
for (size_t i = 0; i < sv.length(); i++) {
- positions[i] = vstyle.styles[styleNumber].aveCharWidth * (i+1);
+ positions[i] = vstyle.styles[styleNumber].monospaceCharacterWidth * (i+1);
}
return;
}
diff --git a/src/Style.h b/src/Style.h
index 23a1b265f..6cef6bb60 100644
--- a/src/Style.h
+++ b/src/Style.h
@@ -32,6 +32,7 @@ struct FontMeasurements {
XYPOSITION descent = 1;
XYPOSITION capitalHeight = 1; // Top of capital letter to baseline: ascent - internal leading
XYPOSITION aveCharWidth = 1;
+ XYPOSITION monospaceCharacterWidth = 1;
XYPOSITION spaceWidth = 1;
bool monospaceASCII = false;
int sizeZoomed = 2;
diff --git a/src/ViewStyle.cxx b/src/ViewStyle.cxx
index 84d165997..5273841ed 100644
--- a/src/ViewStyle.cxx
+++ b/src/ViewStyle.cxx
@@ -66,6 +66,7 @@ void FontRealised::Realise(Surface &surface, int zoomLevel, Technology technolog
measurements.capitalHeight = surface.Ascent(font.get()) - surface.InternalLeading(font.get());
measurements.aveCharWidth = surface.AverageCharWidth(font.get());
+ measurements.monospaceCharacterWidth = measurements.aveCharWidth;
measurements.spaceWidth = surface.WidthText(font.get(), " ");
if (fs.checkMonospaced) {
@@ -82,6 +83,7 @@ void FontRealised::Realise(Surface &surface, int zoomLevel, Technology technolog
const XYPOSITION scaledVariance = variance / measurements.aveCharWidth;
constexpr XYPOSITION monospaceWidthEpsilon = 0.000001; // May need tweaking if monospace fonts vary more
measurements.monospaceASCII = scaledVariance < monospaceWidthEpsilon;
+ measurements.monospaceCharacterWidth = minWidth;
} else {
measurements.monospaceASCII = false;
}