How to make Graphviz use ~/.config/fontconfig/fonts.conf by default?

Thank you, I’ve kind of noticed, but still good to have it confirmed. I asked specifically about their purpose, because I don’t know C development that good (and Graphviz’s code, for that matter). I wasn’t sure if the functionality they provide is really needed in Graphviz, I mean beyond what can be done with the existing printf family of functions. So maybe this agxbuf had a specific purpose I didn’t realize. Now I think they may be needed just because of the way Graphviz is implemented: it gradually adds to a buffer instead of printing everything right away. Well, at least when it comes to the font handling code. You know, I’m still in the process of discovering Graphviz’s code. I think that over the course of it I should improve on seeing their purpose.

Thank you. I just found @scnorth’s What does the "c" in "cgraph" stand for? - #7 by scnorth. And I know there’s this PDF https://www.graphviz.org/pdf/cgraph.pdf. So ag be for “attributed graph”. Then there’s that “x” left to be discovered. I see that in the mentioned PDF the string agx occurs only 2 times: in the names agxget and agxset, so that file doesn’t help. In https://www.graphviz.org/pdf/cgraph.3.pdf we read about the difference between agget, agset and agxget, agxset, namely

agget and agset allow fetching and updating a string attribute for an object taking the attribute name as an argument. agxget and agxset do this but with an attribute symbol table entry as an argument (to avoid the cost of the string lookup).

But I don’t see any relation between this difference and the presence of the letter “x”. Maybe I would need to learn more about the cgraph library (that’s not my current goal).

What my question is about, is the purpose of implementing both of those functions instead of a single function, in the same sense as for the whole buffer implementation, of what I mentioned above. I know I could (should) just analyze the code of those functions, or maybe at least analyze the differences between fwrite, printf, and so on (as I mentioned, I don’t know C development that good). Well, now I think that there may be cases in which, e.g., some parameters don’t go together semantically, so you need to create two functions instead of one. Especially in C. Generally, for now I take for granted that what matters are the details (or, equivalently, use cases).