diff --git a/src/fontations/lib.rs b/src/fontations/lib.rs index 67e8bf539..15a38c95a 100644 --- a/src/fontations/lib.rs +++ b/src/fontations/lib.rs @@ -375,17 +375,22 @@ impl HbColorPainter<'_> { } fn lookup_color(&self, color_index: u16, alpha: f32) -> hb_color_t { + if color_index == 0xFFFF { + // Apply alpha to foreground color + return ((self.foreground & 0xFFFFFF00) + | (((self.foreground & 0xFF) as f32 * alpha).round() as u32)) + as hb_color_t; + } + let c = self.color_records.get(color_index as usize); - if let Some(c) = c.filter(|_| color_index != 0xFFFF) { + if c.is_some() { + let c = c.unwrap(); (((c.blue as u32) << 24) | ((c.green as u32) << 16) | ((c.red as u32) << 8) | ((c.alpha as f32 * alpha).round() as u32)) as hb_color_t } else { - // Apply alpha to foreground color - ((self.foreground & 0xFFFFFF00) - | (((self.foreground & 0xFF) as f32 * alpha).round() as u32)) - as hb_color_t + 0 as hb_color_t } }