Enable subpixel glyph positioning in Pango

Makes things scale more smoothly.
This commit is contained in:
Ivan Molodetskikh 2024-07-01 09:47:31 +04:00
parent e7c201abba
commit 7b6fa12854
5 changed files with 8 additions and 0 deletions

1
Cargo.lock generated
View File

@ -2186,6 +2186,7 @@ dependencies = [
"niri-ipc",
"notify-rust",
"ordered-float",
"pango",
"pangocairo",
"pipewire",
"png",

View File

@ -64,6 +64,7 @@ niri-config = { version = "0.1.7", path = "niri-config" }
niri-ipc = { version = "0.1.7", path = "niri-ipc", features = ["clap"] }
notify-rust = { version = "~4.10.0", optional = true }
ordered-float = "4.2.0"
pango = { version = "0.19.8", features = ["v1_44"] }
pangocairo = "0.19.8"
pipewire = { version = "0.8.0", optional = true }
png = "0.17.13"

View File

@ -192,6 +192,7 @@ fn render(
let surface = ImageSurface::create(cairo::Format::ARgb32, 0, 0)?;
let cr = cairo::Context::new(&surface)?;
let layout = pangocairo::functions::create_layout(&cr);
layout.context().set_round_glyph_positions(false);
layout.set_font_description(Some(&font));
layout.set_markup(&text);
@ -206,6 +207,7 @@ fn render(
cr.move_to(padding.into(), padding.into());
let layout = pangocairo::functions::create_layout(&cr);
layout.context().set_round_glyph_positions(false);
layout.set_font_description(Some(&font));
layout.set_markup(&text);

View File

@ -109,6 +109,7 @@ fn render(scale: f64) -> anyhow::Result<MemoryBuffer> {
let surface = ImageSurface::create(cairo::Format::ARgb32, 0, 0)?;
let cr = cairo::Context::new(&surface)?;
let layout = pangocairo::functions::create_layout(&cr);
layout.context().set_round_glyph_positions(false);
layout.set_font_description(Some(&font));
layout.set_alignment(Alignment::Center);
layout.set_markup(TEXT);
@ -124,6 +125,7 @@ fn render(scale: f64) -> anyhow::Result<MemoryBuffer> {
cr.move_to(padding.into(), padding.into());
let layout = pangocairo::functions::create_layout(&cr);
layout.context().set_round_glyph_positions(false);
layout.set_font_description(Some(&font));
layout.set_alignment(Alignment::Center);
layout.set_markup(TEXT);

View File

@ -250,6 +250,7 @@ fn render(
let surface = ImageSurface::create(cairo::Format::ARgb32, 0, 0)?;
let cr = cairo::Context::new(&surface)?;
let layout = pangocairo::functions::create_layout(&cr);
layout.context().set_round_glyph_positions(false);
layout.set_font_description(Some(&font));
let bold = AttrList::new();
@ -301,6 +302,7 @@ fn render(
cr.move_to(padding.into(), padding.into());
let layout = pangocairo::functions::create_layout(&cr);
layout.context().set_round_glyph_positions(false);
layout.set_font_description(Some(&font));
cr.set_source_rgb(1., 1., 1.);