Applications present patterns to Fontconfig to request a matching font. Patterns are represented as a set of names, each with a list of associated values. The names are things like family or weight. Each name may have more than one value associated with it. This permits applications to specify a list of preferences for each attribute.
Fontconfig also provides a standard textual representation for patterns, this provides a convenient mechanism for applications which currently use string font names in persistent configuration databases or other external interfaces. There is no requirement that applications ever use this name format; the internal representation is always as a pattern.