From 11c73b36ac745d3fc0d309ac6884a71b8baef574 Mon Sep 17 00:00:00 2001 From: Rod S Date: Fri, 10 Nov 2023 09:22:17 -0800 Subject: [PATCH] Directly interfere to start kern sooner --- fontc/src/workload.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/fontc/src/workload.rs b/fontc/src/workload.rs index f47d5fad..65163598 100644 --- a/fontc/src/workload.rs +++ b/fontc/src/workload.rs @@ -232,11 +232,15 @@ impl<'a> Workload<'a> { .queued() .run(); - let launchable: Vec<_> = self + let mut has_kern = false; + let mut launchable: Vec<_> = self .jobs_pending .iter() .filter_map(|(id, job)| { if !job.running && self.can_run(job) { + if matches!(id, AnyWorkId::Fe(FeWorkIdentifier::Kerning)) { + has_kern = true; + } Some(id.clone()) } else { None @@ -245,6 +249,15 @@ impl<'a> Workload<'a> { .collect(); trace!("Launchable: {launchable:?}"); + // https://github.com/googlefonts/fontc/issues/456: try to avoid kern as long pole + if has_kern { + let kern_idx = launchable + .iter() + .position(|id| matches!(id, AnyWorkId::Fe(FeWorkIdentifier::Kerning))) + .unwrap(); + launchable.swap(0, kern_idx); + } + self.timer.add(timing.complete()); launchable }