aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Wilm <joe@jwilm.com>2017-10-08 18:10:29 -0700
committerJoe Wilm <jwilm@users.noreply.github.com>2017-10-08 22:20:58 -0700
commit2ea20f4823ae96f92f47a1984a6dd118a9632fdb (patch)
tree910d61cc1b310fffeb0143a9f15ab34a332dd8e1
parentb03ec0df37cc7967733a53383e1bb450e8e05369 (diff)
downloadalacritty-2ea20f4823ae96f92f47a1984a6dd118a9632fdb.tar.gz
alacritty-2ea20f4823ae96f92f47a1984a6dd118a9632fdb.zip
Scale all fonts based on device-pixel-ratio
Rather than use DPI from config, use device-pixel-ratio from winit. This is computed using the display DPI anyhow, so it should have the same effect.
-rw-r--r--README.md6
-rw-r--r--alacritty.yml6
-rw-r--r--alacritty_macos.yml6
-rw-r--r--font/src/darwin/mod.rs2
-rw-r--r--font/src/ft/mod.rs15
-rw-r--r--font/src/lib.rs2
-rw-r--r--src/config.rs43
-rw-r--r--src/display.rs3
8 files changed, 11 insertions, 72 deletions
diff --git a/README.md b/README.md
index a84a97d6..e2b81e24 100644
--- a/README.md
+++ b/README.md
@@ -246,9 +246,9 @@ run. On most systems this often defaults to
`$HOME/.config/alacritty/alacritty.yml`.
Many configuration options will take effect immediately upon saving changes to
-the config file. The only exception is the `font`, `dimensions` and `dpi`
-sections which requires Alacritty to be restarted. For further explanation of
-the config file, please consult the comments in the default config file.
+the config file. The only exception is the `font` and `dimensions` sections
+which requires Alacritty to be restarted. For further explanation of the config
+file, please consult the comments in the default config file.
## Issues (known, unknown, feature requests, etc)
diff --git a/alacritty.yml b/alacritty.yml
index e4080a8c..fb498fda 100644
--- a/alacritty.yml
+++ b/alacritty.yml
@@ -27,12 +27,6 @@ padding:
x: 2
y: 2
-# The FreeType rasterizer needs to know the device DPI for best results
-# (changes require restart)
-dpi:
- x: 96.0
- y: 96.0
-
# Display tabs using this many cells (changes require restart)
tabspaces: 8
diff --git a/alacritty_macos.yml b/alacritty_macos.yml
index 78bbfb92..1a16a8c9 100644
--- a/alacritty_macos.yml
+++ b/alacritty_macos.yml
@@ -26,12 +26,6 @@ padding:
x: 2
y: 2
-# The FreeType rasterizer needs to know the device DPI for best results
-# (changes require restart)
-dpi:
- x: 96.0
- y: 96.0
-
# Display tabs using this many cells (changes require restart)
tabspaces: 8
diff --git a/font/src/darwin/mod.rs b/font/src/darwin/mod.rs
index 45423123..70b9e1f3 100644
--- a/font/src/darwin/mod.rs
+++ b/font/src/darwin/mod.rs
@@ -130,7 +130,7 @@ impl ::std::fmt::Display for Error {
impl ::Rasterize for Rasterizer {
type Err = Error;
- fn new(_dpi_x: f32, _dpi_y: f32, device_pixel_ratio: f32, use_thin_strokes: bool) -> Result<Rasterizer, Error> {
+ fn new(device_pixel_ratio: f32, use_thin_strokes: bool) -> Result<Rasterizer, Error> {
info!("device_pixel_ratio: {}", device_pixel_ratio);
Ok(Rasterizer {
fonts: HashMap::new(),
diff --git a/font/src/ft/mod.rs b/font/src/ft/mod.rs
index f37a500e..42134a88 100644
--- a/font/src/ft/mod.rs
+++ b/font/src/ft/mod.rs
@@ -63,9 +63,7 @@ pub struct FreeTypeRasterizer {
faces: HashMap<FontKey, Face>,
library: Library,
keys: HashMap<PathBuf, FontKey>,
- dpi_x: u32,
- dpi_y: u32,
- dpr: f32,
+ device_pixel_ratio: f32,
}
#[inline]
@@ -76,16 +74,14 @@ fn to_freetype_26_6(f: f32) -> isize {
impl ::Rasterize for FreeTypeRasterizer {
type Err = Error;
- fn new(dpi_x: f32, dpi_y: f32, device_pixel_ratio: f32, _: bool) -> Result<FreeTypeRasterizer, Error> {
+ fn new(device_pixel_ratio: f32, _: bool) -> Result<FreeTypeRasterizer, Error> {
let library = Library::init()?;
Ok(FreeTypeRasterizer {
faces: HashMap::new(),
keys: HashMap::new(),
library: library,
- dpi_x: dpi_x as u32,
- dpi_y: dpi_y as u32,
- dpr: device_pixel_ratio,
+ device_pixel_ratio: device_pixel_ratio,
})
}
@@ -152,8 +148,7 @@ impl FreeTypeRasterizer {
/// Load a font face accoring to `FontDesc`
fn get_face(&mut self, desc: &FontDesc, size: Size) -> Result<Face, Error> {
// Adjust for DPI
- let scale = self.dpi_x as f32 / 72.;
- let size = Size::new(size.as_f32_pts() * scale);
+ let size = Size::new(size.as_f32_pts() * self.device_pixel_ratio * 96. / 72.);
match desc.style {
Style::Description { slant, weight } => {
@@ -278,7 +273,7 @@ impl FreeTypeRasterizer {
let size = face.non_scalable.as_ref()
.map(|v| v.pixelsize as f32)
- .unwrap_or_else(|| glyph_key.size.as_f32_pts() * self.dpi_x as f32 / 72.);
+ .unwrap_or_else(|| glyph_key.size.as_f32_pts() * self.device_pixel_ratio * 96. / 72.);
face.ft_face.set_char_size(to_freetype_26_6(size), 0, 0, 0)?;
diff --git a/font/src/lib.rs b/font/src/lib.rs
index f02df436..181fd88c 100644
--- a/font/src/lib.rs
+++ b/font/src/lib.rs
@@ -229,7 +229,7 @@ pub trait Rasterize {
type Err: ::std::error::Error + Send + Sync + 'static;
/// Create a new Rasterize
- fn new(dpi_x: f32, dpi_y: f32, device_pixel_ratio: f32, use_thin_strokes: bool) -> Result<Self, Self::Err>
+ fn new(device_pixel_ratio: f32, use_thin_strokes: bool) -> Result<Self, Self::Err>
where Self: Sized;
/// Get `Metrics` for the given `FontKey`
diff --git a/src/config.rs b/src/config.rs
index cef4d22a..d49caae8 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -222,10 +222,6 @@ pub struct Config {
#[serde(default="default_padding")]
padding: Delta,
- /// Pixels per inch
- #[serde(default)]
- dpi: Dpi,
-
/// Font configuration
#[serde(default)]
font: Font,
@@ -318,7 +314,6 @@ impl Default for Config {
Config {
draw_bold_text_with_bright_colors: true,
dimensions: Default::default(),
- dpi: Default::default(),
font: Default::default(),
render_timer: Default::default(),
custom_cursor_colors: false,
@@ -1133,12 +1128,6 @@ impl Config {
self.dimensions
}
- /// Get dpi config
- #[inline]
- pub fn dpi(&self) -> &Dpi {
- &self.dpi
- }
-
/// Get visual bell config
#[inline]
pub fn visual_bell(&self) -> &VisualBellConfig {
@@ -1248,38 +1237,6 @@ impl Dimensions {
}
}
-/// Pixels per inch
-///
-/// This is only used on `FreeType` systems
-#[derive(Debug, Deserialize)]
-pub struct Dpi {
- /// Horizontal dpi
- x: f32,
-
- /// Vertical dpi
- y: f32,
-}
-
-impl Default for Dpi {
- fn default() -> Dpi {
- Dpi { x: 96.0, y: 96.0 }
- }
-}
-
-impl Dpi {
- /// Get horizontal dpi
- #[inline]
- pub fn x(&self) -> f32 {
- self.x
- }
-
- /// Get vertical dpi
- #[inline]
- pub fn y(&self) -> f32 {
- self.y
- }
-}
-
/// A delta for a point in a 2 dimensional plane
#[derive(Clone, Copy, Debug, Deserialize)]
pub struct Delta {
diff --git a/src/display.rs b/src/display.rs
index 012d803b..cb5cf8c9 100644
--- a/src/display.rs
+++ b/src/display.rs
@@ -134,7 +134,6 @@ impl Display {
) -> Result<Display, Error> {
// Extract some properties from config
let font = config.font();
- let dpi = config.dpi();
let render_timer = config.render_timer();
// Create the window where Alacritty will be displayed
@@ -147,7 +146,7 @@ impl Display {
info!("device_pixel_ratio: {}", dpr);
- let rasterizer = font::Rasterizer::new(dpi.x(), dpi.y(), dpr, config.use_thin_strokes())?;
+ let rasterizer = font::Rasterizer::new(dpr, config.use_thin_strokes())?;
// Create renderer
let mut renderer = QuadRenderer::new(&config, size)?;