我创建了一个名为fonts
的字符串,它存储了系统上安装的所有字体的列表,每个字体用换行符分隔:
local font = io.popen("fc-list | cut -d ' ' -f 2- | cut -d : -f 1 | cut -d , -f 1 | sort | uniq")
if font == nil then return end
local fonts = font:read("*a")
print(fonts)
font:close()
打印的输出看起来像这样:
Latin Modern Mono
Latin Modern Mono Caps
Latin Modern Mono Light
等等。我想把它放在桌子里。我怎么能得到这样的东西:
local fonts = {
"Latin Modern Mono",
"Latin Modern Mono Caps",
"Latin Modern Mono light"
}
感谢@timrau,这是我的最终答案。该表称为fonttbl
。
local font = io.popen([[
fc-list | cut -d " " -f 2- | cut -d : -f 1 | cut -d , -f 1 | sort | uniq |
sed -z "$ s/n$//"
]])
if font == nil then return end
local fontstr = font:read("*a")
local pos,fonttbl = 0,{}
for st,sp in function() return string.find(fontstr, "n", pos, true) end do
table.insert(fonttbl, string.sub(fontstr, pos, st - 1))
pos = sp + 1
end
table.insert(fonttbl, string.sub(fontstr, pos))
font:close()