commit 31271c726e31f90729b5d23dac597edf68cc437a
parent 5096426f9e15a21bf78b23160f7c95a9ea2bd7f5
Author: Christian Duerr <chrisduerr@users.noreply.github.com>
Date: Sun, 20 Jan 2019 17:39:15 +0000
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.
Diffstat:
4 files changed, 22 insertions(+), 28 deletions(-)
diff --git 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
@@ -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
@@ -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
@@ -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>,