Add code to IGlyphIdentifer, use it

It turns out that `glyph.char.charCodeAt(0)` isn't equivalent to the
character's actual code because of utf-16 garbage, so this adds
`glyph.code` to the `glyph` object so that we can use the `code` value,
and don't need to regenerate it.
This commit is contained in:
Benjamin Woodruff
2018-04-16 09:49:32 -07:00
parent ec96c40fde
commit 4fd630ec5c
4 changed files with 5 additions and 4 deletions
+1 -1
View File
@@ -240,7 +240,7 @@ export abstract class BaseRenderLayer implements IRenderLayer {
protected drawChar(terminal: ITerminal, char: string, code: number, width: number, x: number, y: number, fg: number, bg: number, bold: boolean, dim: boolean): void {
const atlasDidDraw = this._charAtlas && this._charAtlas.draw(
this._ctx,
{char, bg, fg, bold: bold && terminal.options.enableBold, dim},
{char, code, bg, fg, bold: bold && terminal.options.enableBold, dim},
x * this._scaledCellWidth + this._scaledCharLeft,
y * this._scaledCellHeight + this._scaledCharTop
);
+1 -1
View File
@@ -121,7 +121,7 @@ export default class DynamicCharAtlas extends BaseCharAtlas {
// to draw overlapping glyphs from the atlas:
// https://github.com/servo/webrender/issues/464#issuecomment-255632875
// https://webglfundamentals.org/webgl/lessons/webgl-text-texture.html
return glyph.char.charCodeAt(0) < 256;
return glyph.code < 256;
}
private _toCoordinates(index: number): [number, number] {
+2 -2
View File
@@ -34,7 +34,7 @@ export default class StaticCharAtlas extends BaseCharAtlas {
}
private _isCached(glyph: IGlyphIdentifier, colorIndex: number): boolean {
const isAscii = glyph.char.charCodeAt(0) < 256;
const isAscii = glyph.code < 256;
// A color is basic if it is one of the standard normal or bold weight
// colors of the characters held in the char atlas. Note that this excludes
// the normal weight _light_ color characters.
@@ -86,7 +86,7 @@ export default class StaticCharAtlas extends BaseCharAtlas {
ctx.drawImage(
this._texture,
glyph.char.charCodeAt(0) * charAtlasCellWidth,
glyph.code * charAtlasCellWidth,
colorIndex * charAtlasCellHeight,
charAtlasCellWidth,
this._config.scaledCharHeight,
+1
View File
@@ -8,6 +8,7 @@ export const DIM_OPACITY = 0.5;
export interface IGlyphIdentifier {
char: string;
code: number;
bg: number;
fg: number;
bold: boolean;