Fix subtraction overflow when comparing weights
This commit is contained in:
parent
8457e68d98
commit
6aadfaddac
2 changed files with 5 additions and 5 deletions
|
|
@ -141,7 +141,7 @@ impl<'a> Iterator for FontFallbackIter<'a> {
|
||||||
let font_match_keys_iter = |is_mono| {
|
let font_match_keys_iter = |is_mono| {
|
||||||
self.font_match_keys
|
self.font_match_keys
|
||||||
.iter()
|
.iter()
|
||||||
.filter(move |m_key| m_key.weight_offset == 0 || is_mono)
|
.filter(move |m_key| m_key.weight_offset == Some(0) || is_mono)
|
||||||
};
|
};
|
||||||
|
|
||||||
while self.default_i < self.default_families.len() {
|
while self.default_i < self.default_families.len() {
|
||||||
|
|
@ -157,7 +157,7 @@ impl<'a> Iterator for FontFallbackIter<'a> {
|
||||||
if let Some(font) = self.font_system.get_font(m_key.id) {
|
if let Some(font) = self.font_system.get_font(m_key.id) {
|
||||||
if !is_mono {
|
if !is_mono {
|
||||||
return Some(font);
|
return Some(font);
|
||||||
} else if m_key.weight_offset == 0 {
|
} else if m_key.weight_offset == Some(0) {
|
||||||
// Default font
|
// Default font
|
||||||
let fallback_info = MonospaceFallbackInfo {
|
let fallback_info = MonospaceFallbackInfo {
|
||||||
weight_offset: None,
|
weight_offset: None,
|
||||||
|
|
@ -194,7 +194,7 @@ impl<'a> Iterator for FontFallbackIter<'a> {
|
||||||
.count();
|
.count();
|
||||||
|
|
||||||
let fallback_info = MonospaceFallbackInfo {
|
let fallback_info = MonospaceFallbackInfo {
|
||||||
weight_offset: Some(m_key.weight_offset),
|
weight_offset: m_key.weight_offset,
|
||||||
script_non_matches: Some(script_non_matches),
|
script_non_matches: Some(script_non_matches),
|
||||||
id: m_key.id,
|
id: m_key.id,
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ pub use rustybuzz;
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
|
||||||
pub struct FontMatchKey {
|
pub struct FontMatchKey {
|
||||||
pub(crate) weight_offset: u16,
|
pub(crate) weight_offset: Option<u16>,
|
||||||
pub(crate) id: fontdb::ID,
|
pub(crate) id: fontdb::ID,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -144,7 +144,7 @@ impl FontSystem {
|
||||||
.faces()
|
.faces()
|
||||||
.filter(|face| attrs.matches(face))
|
.filter(|face| attrs.matches(face))
|
||||||
.map(|face| FontMatchKey {
|
.map(|face| FontMatchKey {
|
||||||
weight_offset: attrs.weight.0 - face.weight.0,
|
weight_offset: attrs.weight.0.checked_sub(face.weight.0),
|
||||||
id: face.id,
|
id: face.id,
|
||||||
})
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue