The use-case for these font files is detailed in their 2013 changelog
entry:
> These "Unifont Sample" fonts contain combining circles, and four-digit
> hexadecimal glyphs for unassigned code points and Private Use Area glyphs.
> Because of the inclusion of combining cirlces, "Unifont Sample" font
> versions are only intended for illustrating individual glyphs, not for
> general-purpose writing.
What this means, in practice, is that since #550059 unifont *may* end-up
being picked rather than any other font that actually has a glyph,
instead of a replacement glyph.
And even if there was no proper glyph to use, a replacement glyph is
made on the fly anyway.
This regression can be checked with, for example, Font Awesome, on the
same config, Nixpkgs `b7c2ada94fe9..0e251e24a4f2`.
Before regression:
```
/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-font-awesome-7.2.0/share/fonts/opentype/Font Awesome 7 Free-Solid-900.otf: Font Awesome 7 Free,Font Awesome 7 Free Solid:style=Solid,Regular
```
Current:
```
$ fc-list :charset=f244
/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-font-awesome-7.2.0/share/fonts/opentype/Font Awesome 7 Free-Solid-900.otf: Font Awesome 7 Free,Font Awesome 7 Free Solid:style=Solid,Regular
/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-unifont-17.0.05/share/fonts/opentype/unifont/unifont_sample.otf: Unifont Sample:style=Regular
/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-unifont-17.0.05/share/fonts/X11/misc/unifont_sample.pcf.gz: Unifont Sample:style=Sans-Serif
```
After fix:
```
$ fc-list :charset=f244
/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-font-awesome-7.2.0/share/fonts/opentype/Font Awesome 7 Free-Solid-900.otf: Font Awesome 7 Free,Font Awesome 7 Free Solid:style=Solid,Regular
```
fmt 12 moved fmt::format's declaration out of the lightweight
fmt/core.h into fmt/format.h, breaking every file here that used
fmt::format while only including fmt/core.h ('format' is not a member
of 'fmt'). format.h is a strict superset of core.h, so replacing the
include is safe everywhere it's used.
Upstream slang already carries this exact fix for the newer sv-lang
(11.0) package, applied for the same reason in commit
5a898b4b9225d281902fcd59fe4732b1561677d2. nixpkgs pins sv-lang_10
(10.0) specifically for circt's firtool-1.147.0, predating that fix
and unable to just take the 11.0 package instead, so backport it here.
Verified: `nix build .#circt` succeeds (previously failed evaluating
sv-lang_10's checkPhase compile step); `firtool --version` reports
1.147.0 as expected.
Nit: keep the fmt-fix comment out of the embedded shell script text by
splitting postPatch into two concatenated '' strings, one per distinct
patch operation.
Assisted-by: Claude Code (Claude Sonnet 5)
Add the missing `setuptools` build dependency, and patch `unique.sort()`:
with pandas 3, `Series.unique()` returns an ExtensionArray for string
columns, which has no in-place `sort()`. Upstream is archived.