disable bold style if font doesn't support it

This commit is contained in:
nightwing 2012-10-01 19:29:04 +04:00
commit c6523b8fea
3 changed files with 23 additions and 14 deletions

View file

@ -42,7 +42,8 @@ var Text = function(parentEl) {
this.element.className = "ace_layer ace_text-layer";
parentEl.appendChild(this.element);
this.$characterSize = this.$measureSizes() || {width: 0, height: 0};
this.$characterSize = {width: 0, height: 0};
this.checkForSizeChanges();
this.$pollSizeChanges();
};
@ -72,7 +73,11 @@ var Text = function(parentEl) {
this.checkForSizeChanges = function() {
var size = this.$measureSizes();
if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) {
this.$measureNode.style.fontWeight = "bold";
var boldSize = this.$measureSizes();
this.$measureNode.style.fontWeight = "";
this.$characterSize = size;
this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height;
this._emit("changeCharacterSize", {data: size});
}
};

View file

@ -100,7 +100,7 @@
}
/* bold keywords cause cursor issues for some fonts */
/* this disables bold style for editor and keeps for static highlighter */
.ace-github.ace_editor .ace_line > span {
.ace-github.ace_nobold .ace_line > span {
font-weight: normal !important;
}

View file

@ -103,9 +103,6 @@ var VirtualRenderer = function(container, theme) {
this.$markerFront = new MarkerLayer(this.content);
this.characterWidth = textLayer.getCharacterWidth();
this.lineHeight = textLayer.getLineHeight();
this.$cursorLayer = new CursorLayer(this.content);
this.$cursorPadding = 8;
@ -136,12 +133,8 @@ var VirtualRenderer = function(container, theme) {
};
this.$textLayer.addEventListener("changeCharacterSize", function() {
_self.characterWidth = textLayer.getCharacterWidth();
_self.lineHeight = textLayer.getLineHeight();
_self.$updatePrintMargin();
_self.updateCharacterSize();
_self.onResize(true);
_self.$loop.schedule(_self.CHANGE_FULL);
});
this.$size = {
@ -172,7 +165,7 @@ var VirtualRenderer = function(container, theme) {
this.$loop.schedule(this.CHANGE_FULL);
this.setPadding(4);
this.$updatePrintMargin();
this.updateCharacterSize();
};
(function() {
@ -191,6 +184,17 @@ var VirtualRenderer = function(container, theme) {
this.CHANGE_H_SCROLL = 1024;
oop.implement(this, EventEmitter);
this.updateCharacterSize = function() {
if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) {
this.$allowBoldFonts = this.$textLayer.allowBoldFonts;
this.setStyle("ace_nobold", !this.$allowBoldFonts);
}
this.characterWidth = this.$textLayer.getCharacterWidth();
this.lineHeight = this.$textLayer.getLineHeight();
this.$updatePrintMargin();
};
/**
* VirtualRenderer.setSession(session)
@ -1362,8 +1366,8 @@ var VirtualRenderer = function(container, theme) {
*
* [Adds a new class, `style`, to the editor.]{: #VirtualRenderer.setStyle}
**/
this.setStyle = function setStyle(style) {
dom.addCssClass(this.container, style);
this.setStyle = function setStyle(style, include) {
dom.setCssClass(this.container, style, include != false);
};
/**
@ -1373,7 +1377,7 @@ var VirtualRenderer = function(container, theme) {
* [Removes the class `style` from the editor.]{: #VirtualRenderer.unsetStyle}
**/
this.unsetStyle = function unsetStyle(style) {
dom.removeCssClass(this.container, style);
dom.removeCssClass(this.container, style);
};
/**