googlefonts / googlefonts/Inconsolata

Fontconfig cannot determine a weight for some variants in Inconsolata-VariableFont_wdth,wght.ttf

Open
#69 1 comment 0 reactions 0 assignees View on GitHub
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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.