mirror of
https://github.com/wez/wezterm.git
synced 2024-12-24 13:52:55 +03:00
Allow disabling re-sorting fallback fonts
The system locator may have a reasonable default ordering in its list of fallbacks. refs: #685
This commit is contained in:
parent
6f1664addd
commit
5ced58c37b
@ -1061,6 +1061,9 @@ pub struct Config {
|
|||||||
|
|
||||||
#[serde(default = "default_true")]
|
#[serde(default = "default_true")]
|
||||||
pub warn_about_missing_glyphs: bool,
|
pub warn_about_missing_glyphs: bool,
|
||||||
|
|
||||||
|
#[serde(default)]
|
||||||
|
pub sort_fallback_fonts_by_coverage: bool,
|
||||||
}
|
}
|
||||||
impl_lua_conversion!(Config);
|
impl_lua_conversion!(Config);
|
||||||
|
|
||||||
|
@ -251,15 +251,28 @@ impl FontConfigInner {
|
|||||||
for c in no_glyphs {
|
for c in no_glyphs {
|
||||||
wanted.add(c as u32);
|
wanted.add(c as u32);
|
||||||
}
|
}
|
||||||
|
log::trace!(
|
||||||
|
"Fallback fonts that match {} before sorting are: {:#?}",
|
||||||
|
fallback_str.escape_unicode(),
|
||||||
|
extra_handles
|
||||||
|
);
|
||||||
|
|
||||||
|
if wanted.len() > 1 && config.sort_fallback_fonts_by_coverage {
|
||||||
|
// Sort by ascending coverage
|
||||||
|
extra_handles.sort_by_cached_key(|p| {
|
||||||
|
p.coverage_intersection(&wanted)
|
||||||
|
.map(|r| r.len())
|
||||||
|
.unwrap_or(0)
|
||||||
|
});
|
||||||
|
// Re-arrange to descending coverage
|
||||||
|
extra_handles.reverse();
|
||||||
|
log::trace!(
|
||||||
|
"Fallback fonts that match {} after sorting are: {:#?}",
|
||||||
|
fallback_str.escape_unicode(),
|
||||||
|
extra_handles
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// Sort by ascending coverage
|
|
||||||
extra_handles.sort_by_cached_key(|p| {
|
|
||||||
p.coverage_intersection(&wanted)
|
|
||||||
.map(|r| r.len())
|
|
||||||
.unwrap_or(0)
|
|
||||||
});
|
|
||||||
// Re-arrange to descending coverage
|
|
||||||
extra_handles.reverse();
|
|
||||||
// iteratively reduce to just the fonts that we need
|
// iteratively reduce to just the fonts that we need
|
||||||
extra_handles.retain(|p| match p.coverage_intersection(&wanted) {
|
extra_handles.retain(|p| match p.coverage_intersection(&wanted) {
|
||||||
Ok(cov) if cov.is_empty() => false,
|
Ok(cov) if cov.is_empty() => false,
|
||||||
|
Loading…
Reference in New Issue
Block a user