Они связаны следующим образом (с использованиемldd
):
Xft
— это библиотека, которая зависит от (среди прочего ), библиотеки fontconfig
и библиотеки freetype
. fontconfig
представляет собой набор программ, библиотеки и данных. Его библиотека зависит от библиотеки freetype
. freetype
— это библиотека, которая не зависит от двух других. Например:
$ ldd /usr/lib/x86_64-linux-gnu/libXft.so.2.3.1
linux-vdso.so.1 => (0x00007fffb3df7000)
libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f40ea07a000)
libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f40e9ddb000)
libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007f40e9bd1000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f40e9896000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f40e9509000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f40e92f2000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f40e90c8000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f40e8ea8000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f40e8ca4000)
/lib64/ld-linux-x86-64.so.2 (0x00007f40ea4c6000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f40e8aa1000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f40e889c000)
Некоторые приложения (, такие как xterm
), используют Xft
, который использует лицензию MIT -. Другие (обычно используют GPL -лицензированные )libpango
. Помимо проблем с лицензированием pango , у него в два раза больше библиотечных -зависимостей, чем у Xft
.
Глядя на символы из fontconfig
, используемыеXft
:
FcCharSetCopy
FcCharSetCount
FcCharSetDestroy
FcCharSetHasChar
FcConfigGetBlanks
FcConfigSubstitute
FcDefaultSubstitute
FcFontList
FcFontMatch
FcFreeTypeCharIndex
FcFreeTypeCharSet
FcInit
...
FcPatternPrint
FcPatternVaBuild
FcStrCmpIgnoreCase
FcUtf16ToUcs4
FcUtf8ToUcs4
и те, что изfreetype
:
FT_Done_Face
FT_GlyphSlot_Embolden
FT_Init_FreeType
FT_Library_SetLcdFilter
FT_Load_Glyph
FT_New_Face
FT_Render_Glyph
FT_Set_Char_Size
FT_Set_Transform
FT_Vector_Transform
вы можете видеть, что Xft
использует fontconfig
для поиска шрифтов на основе шаблонов , но использует freetype
для фактической загрузки , отображения или настроить(масштаб и т. д. )шрифт.
fontconfig
использует различные вызовы freetype
для получения информации о шрифте (общий размер, количество глифов и т. д.):
FT_Done_Face
FT_Done_FreeType
FT_Get_BDF_Property
FT_Get_Char_Index
FT_Get_First_Char
FT_Get_Glyph_Name
FT_Get_Next_Char
FT_Get_PS_Font_Info
FT_Get_Sfnt_Name
FT_Get_Sfnt_Name_Count
FT_Get_Sfnt_Table
FT_Get_X11_Font_Format
FT_Has_PS_Glyph_Names
FT_Init_FreeType
FT_Load_Glyph
FT_Load_Sfnt_Table
FT_New_Face
FT_Select_Charmap
FT_Select_Size
Без freetype
, fontconfig
не имеет никакой информации:fontconfig
организует информацию, но сам по себе не является полным источником информации.
Получение точных подсказок и результатов, указанных в вашем вопросе, практически невозможно (или требует безумного объема работы ), но следующее должно помочь вам во всех практических целях:
# Disable the default prompt that says
# 'zsh: sure you want to delete all 4 files in /home/user [yn]?'
setopt rmstarsilent
# For portability, use the `zf_rm` builtin instead of any external `rm` command.
zmodload -Fa zsh/files b:zf_rm
rm() {
# For portability, reset all options (in this function only).
emulate -L zsh
# Divide the files into dirs and other files.
# $^ treats the array as a brace expansion.
# (N) eliminates non-existing matches.
# (-/) matches dirs, incl. symlinks pointing to dirs.
# (-^/) matches everything else.
# (T) appends file type markers to the file names.
local -a dirs=( $^@(TN-/) ) files=( $^@(TN-^/) )
# Tell the user how many dirs and files would be deleted.
print "Sure you want to delete these $#dirs dirs and $#files files in $PWD?"
# List the files in columns à la `ls`, dirs first.
print -c - $dirs $files
# Prompt the user to confirm.
# If `y`, delete the files.
# -f skips any confirmation.
# -r recurses into directories.
# -s makes sure we don't accidentally the whole thing.
# If this succeeds, print a confirmation.
read -q "?[yn] " &&
zf_rm -frs - $@ &&
print -l '' "$#dirs dirs and $#files files deleted from $PWD."
}
Дополнительную информацию о zf_rm
см. в http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002ffiles-Module
Дополнительную информацию о квалификаторах glob (TN-^/)
можно найти здесь:http://zsh.sourceforge.net/Doc/Release/Expansion.html#Glob-Qualifiers