diff options
author | Christian Duerr <chrisduerr@users.noreply.github.com> | 2019-01-20 17:39:15 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-20 17:39:15 +0000 |
commit | 31271c726e31f90729b5d23dac597edf68cc437a (patch) | |
tree | b66e97fa10532597e2b60ebe4d44682b6b1a9a1a | |
parent | 5096426f9e15a21bf78b23160f7c95a9ea2bd7f5 (diff) | |
download | alacritty-31271c726e31f90729b5d23dac597edf68cc437a.tar.gz alacritty-31271c726e31f90729b5d23dac597edf68cc437a.zip |
Fix crash on Windows (#2021)
The rusttype backend did not properly support manually specifying font
styles, but instead chose to panic when they are specified.
The rusttype implementation now provides a proper implementation for
handling `bold`, `italic` and `regular` font styles.
This fixes #2020.
-rw-r--r-- | CHANGELOG.md | 6 | ||||
-rw-r--r-- | alacritty.yml | 12 | ||||
-rw-r--r-- | font/src/rusttype/mod.rs | 8 | ||||
-rw-r--r-- | src/config/mod.rs | 24 |
4 files changed, 22 insertions, 28 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 18b92c1f..03ccbeee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] + +### Fixed + +- Crash when trying to start Alacritty on Windows + ## Version 0.2.6 ### Added diff --git a/alacritty.yml b/alacritty.yml index f31f0746..5cf58d25 100644 --- a/alacritty.yml +++ b/alacritty.yml @@ -79,7 +79,7 @@ tabspaces: 8 # Font configuration (changes require restart) font: # Normal (roman) font face - normal: + #normal: # Font family # # Default: @@ -89,10 +89,10 @@ font: #family: monospace # The `style` can be specified to pick a specific face. - style: Regular + #style: Regular # Bold font face - bold: + #bold: # Font family # # If the bold family is not specified, it will fall back to the @@ -100,10 +100,10 @@ font: #family: monospace # The `style` can be specified to pick a specific face. - style: Bold + #style: Bold # Italic font face - italic: + #italic: # Font family # # If the italic family is not specified, it will fall back to the @@ -111,7 +111,7 @@ font: #family: monospace # The `style` can be specified to pick a specific face. - style: Italic + #style: Italic # Point size size: 11.0 diff --git a/font/src/rusttype/mod.rs b/font/src/rusttype/mod.rs index add23605..e8e0bd2c 100644 --- a/font/src/rusttype/mod.rs +++ b/font/src/rusttype/mod.rs @@ -61,7 +61,13 @@ impl crate::Rasterize for RustTypeRasterizer { .monospace(); let fp = match desc.style { - Style::Specific(_) => unimplemented!(""), + Style::Specific(ref style) => { + match style.to_lowercase().as_str() { + "italic" => fp.italic(), + "bold" => fp.bold(), + _ => fp, + } + }, Style::Description { slant, weight } => { let fp = match slant { Slant::Normal => fp, diff --git a/src/config/mod.rs b/src/config/mod.rs index 836fe483..63c72d34 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -2060,9 +2060,9 @@ impl Default for Font { #[cfg(target_os = "macos")] use_thin_strokes: true, size: default_font_size(), - normal: FontDescription::new_with_style("Regular"), - bold: SecondaryFontDescription::new_with_style("Bold"), - italic: SecondaryFontDescription::new_with_style("Italic"), + normal: Default::default(), + bold: Default::default(), + italic: Default::default(), scale_with_dpi: Default::default(), glyph_offset: Default::default(), offset: Default::default(), @@ -2152,15 +2152,6 @@ impl Default for FontDescription { } } -impl FontDescription { - fn new_with_style(style: &str) -> Self { - Self { - style: Some(style.into()), - ..Default::default() - } - } -} - /// Description of the italic and bold font #[serde(default)] #[derive(Debug, Default, Deserialize, Clone, PartialEq, Eq)] @@ -2180,15 +2171,6 @@ impl SecondaryFontDescription { } } -impl SecondaryFontDescription { - fn new_with_style(style: &str) -> Self { - Self { - style: Some(style.into()), - ..Default::default() - } - } -} - pub struct Monitor { _thread: ::std::thread::JoinHandle<()>, rx: mpsc::Receiver<Config>, |