googlefonts / googlefonts/Inconsolata
Fontconfig cannot determine a weight for some variants in Inconsolata-VariableFont_wdth,wght.ttf
- Dominant language
- Rust
- Stars
- 1.6k
- Forks
- 72
- PR merge metrics
- No merged PRs in 30d
Description
Hello,
[Emacs is crashing when Inconsolata-VariableFont_wdth,wght.ttf is installed](https://debbugs.gnu.org/cgi/bugreport.cgi?bug=52888) and I'm trying to understand why. This is what I know. We call FcFontList to obtain an FcFontSet, and then for each FcPattern in that list we produce a Lisp vector containing the attributes of the font, and that goes into the Emacs-specific font selection code. In particular, in order to populate the weight field in that vector, we call FcPatternGetInteger on the pattern, passing FC_WEIGHT as the second argument. For most fonts this yields an integer representing the weight.
When Inconsolata-VariableFont_wdth,wght.ttf is installed, the FcFontSet contains multiple FcPatterns corresponding to entries in that file. For most of these, FcPatternGetInteger with FC_WEIGHT yields an integer. But for some of them, it does not; FcPatternGetInteger (and FcPatternGetDouble) do not return the success value FcResultMatch. Emacs's font code assumes that there is a weight associated to every font, and so there is a crash.
One option to fix this is just to skip over entries in the FcFontSet for which FcPatternGetInteger is unable to return a weight. But is that the correct thing to do? I don't really understand these multi-weight .ttf files -- what does it mean if entries in them do not seem to have a weight at all?
Many thanks!
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.