respect dpr/charWidth changes, more accurate base measuring

This commit is contained in:
Jörg Breitbart
2023-07-30 13:27:28 +02:00
parent 64d04f0712
commit b358754b46
3 changed files with 14 additions and 3 deletions
+7 -3
View File
@@ -7,7 +7,10 @@ import { IOptionsService } from 'common/services/Services';
import { EventEmitter } from 'common/EventEmitter';
import { ICharSizeService } from 'browser/services/Services';
import { Disposable } from 'common/Lifecycle';
import { ITerminalOptions } from 'common/Types';
const CHAR_REPEAT = 32;
export class CharSizeService extends Disposable implements ICharSizeService {
public serviceBrand: undefined;
@@ -67,9 +70,10 @@ class DomMeasureStrategy implements IMeasureStrategy {
) {
this._measureElement = this._document.createElement('span');
this._measureElement.classList.add('xterm-char-measure-element');
this._measureElement.textContent = 'W';
this._measureElement.textContent = 'W'.repeat(CHAR_REPEAT);
this._measureElement.setAttribute('aria-hidden', 'true');
this._measureElement.style.whiteSpace = 'pre';
this._measureElement.style.fontKerning = 'none';
this._parentElement.appendChild(this._measureElement);
}
@@ -83,7 +87,7 @@ class DomMeasureStrategy implements IMeasureStrategy {
// If values are 0 then the element is likely currently display:none, in which case we should
// retain the previous value.
if (geometry.width !== 0 && geometry.height !== 0) {
this._result.width = geometry.width;
this._result.width = geometry.width / CHAR_REPEAT;
this._result.height = Math.ceil(geometry.height);
}