diff options
| author | Zufu Liu <unknown> | 2025-12-22 09:03:18 +1100 |
|---|---|---|
| committer | Zufu Liu <unknown> | 2025-12-22 09:03:18 +1100 |
| commit | 6fbec94e04de1fe14351adb42564bfd17ceed2b2 (patch) | |
| tree | bd26b4913dfac34439966112811161829bb3a661 | |
| parent | 65de8b15b50c6d365b1eef14daaeb64736430d34 (diff) | |
| download | scintilla-mirror-6fbec94e04de1fe14351adb42564bfd17ceed2b2.tar.gz | |
Feature [feature-requests:#1571]. Improve determination of monospace.
Use minimum width of ASCII graphic characters instead of font's reported average
character width to determine reasonable epsilon for equality of all graphic
character widths. Case reported where average character width was inaccurate.
| -rw-r--r-- | src/ViewStyle.cxx | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/ViewStyle.cxx b/src/ViewStyle.cxx index f553bc825..361b71d25 100644 --- a/src/ViewStyle.cxx +++ b/src/ViewStyle.cxx @@ -93,9 +93,9 @@ void FontRealised::Realise(Surface &surface, int zoomLevel, Technology technolog const XYPOSITION maxWidth = *std::max_element(positions.begin(), positions.end()); const XYPOSITION minWidth = *std::min_element(positions.begin(), positions.end()); const XYPOSITION variance = maxWidth - minWidth; - const XYPOSITION scaledVariance = variance / measurements.aveCharWidth; constexpr XYPOSITION monospaceWidthEpsilon = 0.000001; // May need tweaking if monospace fonts vary more - measurements.monospaceASCII = scaledVariance < monospaceWidthEpsilon; + const XYPOSITION scaledVariance = monospaceWidthEpsilon * minWidth; + measurements.monospaceASCII = variance < scaledVariance; measurements.monospaceCharacterWidth = minWidth; } else { measurements.monospaceASCII = false; |
