提交 7f4bf92c 编写于 作者: A Alex Dima

Fixes #60961: Use quotes for font family in a consistent way

上级 832a49c7
......@@ -68,7 +68,7 @@ class DomCharWidthReader {
container.style.width = '50000px';
let regularDomNode = document.createElement('div');
regularDomNode.style.fontFamily = this._bareFontInfo.fontFamily;
regularDomNode.style.fontFamily = this._bareFontInfo.getMassagedFontFamily();
regularDomNode.style.fontWeight = this._bareFontInfo.fontWeight;
regularDomNode.style.fontSize = this._bareFontInfo.fontSize + 'px';
regularDomNode.style.lineHeight = this._bareFontInfo.lineHeight + 'px';
......@@ -76,7 +76,7 @@ class DomCharWidthReader {
container.appendChild(regularDomNode);
let boldDomNode = document.createElement('div');
boldDomNode.style.fontFamily = this._bareFontInfo.fontFamily;
boldDomNode.style.fontFamily = this._bareFontInfo.getMassagedFontFamily();
boldDomNode.style.fontWeight = 'bold';
boldDomNode.style.fontSize = this._bareFontInfo.fontSize + 'px';
boldDomNode.style.lineHeight = this._bareFontInfo.lineHeight + 'px';
......@@ -84,7 +84,7 @@ class DomCharWidthReader {
container.appendChild(boldDomNode);
let italicDomNode = document.createElement('div');
italicDomNode.style.fontFamily = this._bareFontInfo.fontFamily;
italicDomNode.style.fontFamily = this._bareFontInfo.getMassagedFontFamily();
italicDomNode.style.fontWeight = this._bareFontInfo.fontWeight;
italicDomNode.style.fontSize = this._bareFontInfo.fontSize + 'px';
italicDomNode.style.lineHeight = this._bareFontInfo.lineHeight + 'px';
......
......@@ -290,21 +290,8 @@ class CSSBasedConfiguration extends Disposable {
export class Configuration extends CommonEditorConfiguration {
private static _massageFontFamily(fontFamily: string): string {
if (/[,"']/.test(fontFamily)) {
// Looks like the font family might be already escaped
return fontFamily;
}
if (/[+ ]/.test(fontFamily)) {
// Wrap a font family using + or <space> with quotes
return `"${fontFamily}"`;
}
return fontFamily;
}
public static applyFontInfoSlow(domNode: HTMLElement, fontInfo: BareFontInfo): void {
domNode.style.fontFamily = Configuration._massageFontFamily(fontInfo.fontFamily);
domNode.style.fontFamily = fontInfo.getMassagedFontFamily();
domNode.style.fontWeight = fontInfo.fontWeight;
domNode.style.fontSize = fontInfo.fontSize + 'px';
domNode.style.lineHeight = fontInfo.lineHeight + 'px';
......@@ -312,7 +299,7 @@ export class Configuration extends CommonEditorConfiguration {
}
public static applyFontInfo(domNode: FastDomNode<HTMLElement>, fontInfo: BareFontInfo): void {
domNode.setFontFamily(Configuration._massageFontFamily(fontInfo.fontFamily));
domNode.setFontFamily(fontInfo.getMassagedFontFamily());
domNode.setFontWeight(fontInfo.fontWeight);
domNode.setFontSize(fontInfo.fontSize);
domNode.setLineHeight(fontInfo.lineHeight);
......
......@@ -151,6 +151,22 @@ export class BareFontInfo {
public getId(): string {
return this.zoomLevel + '-' + this.fontFamily + '-' + this.fontWeight + '-' + this.fontSize + '-' + this.lineHeight + '-' + this.letterSpacing;
}
/**
* @internal
*/
public getMassagedFontFamily(): string {
if (/[,"']/.test(this.fontFamily)) {
// Looks like the font family might be already escaped
return this.fontFamily;
}
if (/[+ ]/.test(this.fontFamily)) {
// Wrap a font family using + or <space> with quotes
return `"${this.fontFamily}"`;
}
return this.fontFamily;
}
}
export class FontInfo extends BareFontInfo {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册