当使用详细输出运行时,有时甚至没有,fontconfig 写的关于任何字体的第一件事是如下行:
Pattern has 38 elts (size 48)
这些数字代表什么?它们的用途是什么?
查看源代码后,我相信“elts”是 elements 的缩写,但我仍然不知道这些数字的含义以及它们是否与理解 fontconfig 的行为相关。
下面是输出的完整示例(删除了一些字符集行):
$ fc-match "DejaVu Sans" -v
Pattern has 38 elts (size 48)
family: "DejaVu Sans"(s)
familylang: "en"(s)
style: "Book"(s)
stylelang: "en"(s)
fullname: "DejaVu Sans"(s)
fullnamelang: "en"(s)
slant: 0(i)(s)
weight: 80(f)(s)
width: 100(f)(s)
size: 12(f)(s)
pixelsize: 12.5(f)(s)
foundry: "PfEd"(w)
antialias: True(w)
hintstyle: 1(i)(w)
hinting: True(s)
verticallayout: False(s)
autohint: False(s)
globaladvance: True(s)
file: "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"(w)
index: 0(i)(w)
outline: True(w)
scalable: True(w)
dpi: 75(f)(s)
scale: 1(f)(s)
charset:
0000: 00000000 ffffffff ffffffff 7fffffff 00000000 ffffffff ffffffff ffffffff
0001: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
(w)
lang: aa|ab|af|ar|ast|av|ay|az-az|az-ir|ba|bm|be|bg|bi|bin|br|bs|bua|ca|ce|ch|chm|co|cs|cu|cv|cy|da|de|el|en|eo|es|et|eu|fa|fi|fj|fo|fr|ff|fur|fy|ga|gd|gl|gn|gv|ha|haw|he|ho|hr|hu|hy|ia|ig|id|ie|ik|io|is|it|iu|ka|kaa|ki|kk|kl|ku-am|ku-ir|kum|kv|kw|ky|la|lb|lez|ln|lo|lt|lv|mg|mh|mi|mk|mo|mt|nb|nds|nl|nn|no|nr|nso|ny|oc|om|os|pl|pt|rm|ro|ru|sah|sco|se|sel|sh|shs|sk|sl|sm|sma|smj|smn|sms|so|sq|sr|ss|st|sv|sw|tg|tk|tl|tn|to|tr|ts|tt|tw|tyv|ug|uk|uz|ve|vi|vo|vot|wa|wen|wo|xh|yap|yi|yo|zu|ak|an|ber-dz|ber-ma|crh|csb|ee|fat|fil|hsb|ht|hz|jv|kab|kj|kr|ku-iq|ku-tr|kwm|lg|li|mn-mn|ms|na|ng|nv|ota|pap-an|pap-aw|qu|quz|rn|rw|sc|sd|sg|sn|su|ty|za(s)
fontversion: 155320(i)(s)
capability: "otlayout:DFLT otlayout:arab otlayout:armn otlayout:brai otlayout:cans otlayout:cher otlayout:cyrl otlayout:geor otlayout:grek otlayout:hani otlayout:hebr otlayout:kana otlayout:lao otlayout:latn otlayout:math otlayout:nko otlayout:ogam otlayout:runr otlayout:tfng otlayout:thai"(w)
fontformat: "TrueType"(w)
embeddedbitmap: True(s)
decorative: False(s)
lcdfilter: 1(i)(w)
namelang: "en"(s)
prgname: "fc-match"(s)
postscriptname: "DejaVuSans"(w)
color: False(w)
symbol: False(s)
variable: False(s)
答案1
虽然不是很明显,但看一下fontconfig
文档可以帮助理解这句话:
<pattern>
模式元素对传入字体执行列表样式匹配;也就是说,它们保存元素和关联值的列表。 (...) 模式元素包括
patelt
元素。
<patelt name="property">
Patelt 元素保存单个模式元素和值列表。它们必须具有
name
指示模式元素名称的属性。 Patelt 元素包括int
、double
、string
、matrix
、bool
和元素charset
。const
因此,“elt”是用于字体匹配的模式元素。它们被表述为名称-值对,如果你数一下行数,你会发现确实有 38 个这样的语句(请记住,后面的两行charset:
是元素的“值”部分charset
)。
该size
语句引用了底层结构的内部属性FcPattern
。由于此输出似乎是用于调试目的(参见其起源)和数据类型的内部工作原理FcPattern
是没有记录,理解其实际含义的希望可能不大。