diff options
author | Christian Duerr <chrisduerr@users.noreply.github.com> | 2019-04-19 18:00:24 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-19 18:00:24 +0000 |
commit | cfc20d4f34dca535654cc32df18e785296af4cc5 (patch) | |
tree | b9697a365d1ec4b3161fd67937497e90a63f5c0d /src/renderer/mod.rs | |
parent | a47d716daace7c197392854754406a06454ec380 (diff) | |
download | r-alacritty-cfc20d4f34dca535654cc32df18e785296af4cc5.tar.gz r-alacritty-cfc20d4f34dca535654cc32df18e785296af4cc5.tar.bz2 r-alacritty-cfc20d4f34dca535654cc32df18e785296af4cc5.zip |
Fix cursor dimensions with font offset
Previously cursor dimensions were not calculated correctly when a font
offset was specified, since the font offset was completely ignored.
This has been fixed by moving all the cursor logic from the font into
the Alacritty crate, applying the config's offsets before rasterizing
the cursors.
This has also fixed an issue with some cursors not being rendered as
double-width correctly when over double-width glyphs.
This fixes #2209.
Diffstat (limited to 'src/renderer/mod.rs')
-rw-r--r-- | src/renderer/mod.rs | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/renderer/mod.rs b/src/renderer/mod.rs index 47851224..5182a6f6 100644 --- a/src/renderer/mod.rs +++ b/src/renderer/mod.rs @@ -32,7 +32,7 @@ use crate::gl::types::*; use crate::index::{Column, Line}; use crate::renderer::rects::{Rect, Rects}; use crate::term::color::Rgb; -use crate::term::{self, cell, RenderableCell}; +use crate::term::{self, cell, RenderableCell, RenderableCellContent}; pub mod rects; @@ -950,11 +950,11 @@ impl<'a> RenderApi<'a> { .map(|(i, c)| RenderableCell { line, column: col + i, - chars: { + inner: RenderableCellContent::Chars({ let mut chars = [' '; cell::MAX_ZEROWIDTH_CHARS + 1]; chars[0] = c; chars - }, + }), bg: color.unwrap_or(Rgb { r: 0, g: 0, b: 0 }), fg: Rgb { r: 0, g: 0, b: 0 }, flags: cell::Flags::empty(), @@ -983,6 +983,13 @@ impl<'a> RenderApi<'a> { } pub fn render_cell(&mut self, cell: RenderableCell, glyph_cache: &mut GlyphCache) { + // loader.load_glyph(&rasterized) + if let RenderableCellContent::Raw(ref raw) = cell.inner { + let glyph = self.load_glyph(raw); + self.add_render_item(&cell, &glyph); + return; + } + // Get font key for cell // FIXME this is super inefficient. let font_key = if cell.flags.contains(cell::Flags::BOLD) { @@ -996,8 +1003,10 @@ impl<'a> RenderApi<'a> { // Don't render text of HIDDEN cells let mut chars = if cell.flags.contains(cell::Flags::HIDDEN) { [' '; cell::MAX_ZEROWIDTH_CHARS + 1] + } else if let RenderableCellContent::Chars(chars) = cell.inner { + chars } else { - cell.chars + unimplemented!(); }; // Render tabs as spaces in case the font doesn't support it |