" Language: Vim script
" Author: James Cherti
" License: MIT
" Description: A function that returns all available monospaced fonts
" (Linux and UNIX only).
" URL: https://www.jamescherti.com/vim-a-function-that-returns-all-available-fonts-unix-linux-only
function! FontList() abort
let l:result = []
if has('win32') || !has('gui_running') || !executable('fc-list')
return l:result
endif
" Search for monospaced fonts (spacing=100)
let l:fclist_output = systemlist('fc-list :spacing=100')
let l:style_var = 'style='
for l:fclist_line in l:fclist_output
let l:fclist_line_items = split(l:fclist_line, ':')
let l:font_file = l:fclist_line_items[0]
let l:list_font_names = split(l:fclist_line_items[1], ',')
let l:font_name = trim(l:list_font_names[0])
if len(l:fclist_line_items) <= 2
if index(l:result, l:font_name) ==# -1
call add(l:result, l:font_name)
endif
continue
endif
let l:font_style = l:fclist_line_items[2]
if l:font_style[0:len(l:style_var)-1] ==# l:style_var
for l:font_style in split(l:font_style[len(l:style_var):], ',')
let l:font_name = l:font_name . ' ' . trim(l:font_style)
if index(l:result, l:font_name) ==# -1
call add(l:result, l:font_name)
endif
endfor
endif
endfor
return l:result
endfunction
Code language: Vim Script (vim)
A Vim function that returns all monospaced fonts (UNIX / Linux only)
Reply