diff --git a/examples/rich-text/src/main.rs b/examples/rich-text/src/main.rs index 167486d..0ee5bff 100644 --- a/examples/rich-text/src/main.rs +++ b/examples/rich-text/src/main.rs @@ -94,6 +94,7 @@ fn set_buffer_text(buffer: &mut BorrowedWithFontSystem<'_, Buffer>) { .weight(Weight::BOLD) .style(Style::Italic), ), + ("🌈", attrs.clone()), ("R", attrs.clone().color(Color::rgb(0xFF, 0x00, 0x00))), ("A", attrs.clone().color(Color::rgb(0xFF, 0x7F, 0x00))), ("I", attrs.clone().color(Color::rgb(0xFF, 0xFF, 0x00))), @@ -114,11 +115,20 @@ fn set_buffer_text(buffer: &mut BorrowedWithFontSystem<'_, Buffer>) { ("C", attrs.clone().color(Color::rgb(0x00, 0xFF, 0x00))), ("O", attrs.clone().color(Color::rgb(0xFF, 0xFF, 0x00))), ("R", attrs.clone().color(Color::rgb(0xFF, 0x7F, 0x00))), - ("N\n", attrs.clone().color(Color::rgb(0xFF, 0x00, 0x00))), + ("N", attrs.clone().color(Color::rgb(0xFF, 0x00, 0x00))), + ("🦄\n", attrs.clone()), ( - "生活,삶,जिंदगी 😀 FPS\n", + "生活,삶,जिंदगी 😀\n", attrs.clone().color(Color::rgb(0xFF, 0x00, 0x00)), ), + ( + "Hinting enabled, ", + attrs.clone() + ), + ( + "Hinting disabled\n", + attrs.clone().cache_key_flags(CacheKeyFlags::DISABLE_HINTING), + ), ]; buffer.set_rich_text( diff --git a/src/glyph_cache.rs b/src/glyph_cache.rs index 01ac1a4..b2b9d1a 100644 --- a/src/glyph_cache.rs +++ b/src/glyph_cache.rs @@ -7,6 +7,8 @@ bitflags::bitflags! { pub struct CacheKeyFlags: u32 { /// Skew by 14 degrees to synthesize italic const FAKE_ITALIC = 1; + // Disable hinting + const DISABLE_HINTING = 2; } } diff --git a/src/swash.rs b/src/swash.rs index 416c0bf..e74a29f 100644 --- a/src/swash.rs +++ b/src/swash.rs @@ -29,7 +29,7 @@ fn swash_image( let mut scaler = context .builder(font.as_swash()) .size(f32::from_bits(cache_key.font_size_bits)) - .hint(true) + .hint(!cache_key.flags.contains(CacheKeyFlags::DISABLE_HINTING)) .build(); // Compute the fractional offset-- you'll likely want to quantize this @@ -80,7 +80,7 @@ fn swash_outline_commands( let mut scaler = context .builder(font.as_swash()) .size(f32::from_bits(cache_key.font_size_bits)) - .hint(true) + .hint(!cache_key.flags.contains(CacheKeyFlags::DISABLE_HINTING)) .build(); // Scale the outline