Linux命令-xlsfonts(列出 X11 可用字体)
- 🔰 简介
- 📖 语法
- ⚙️ 选项
- 💡 示例
- 示例 1:浏览和过滤字体
- 示例 2:长格式查看字体详细信息
- 示例 3:分析字体可用性脚本
- 示例 4:为 xterm 选择合适的字体
- 示例 5:字体路径管理和字体服务器
- ⚠️ 注意
- 📚 相关命令
- 📝 总结
快速参考:xlsfonts是列出 X11 服务器可用字体的工具,支持通配符按名称模式过滤。它是 X11 核心字体系统(X Logical Font Description,简称 XLFD)的浏览工具,在传统 X11 应用开发和字体调试中至关重要。
现代 Linux 桌面已广泛使用 fontconfig 和客户端字体渲染(如 Pango、Cairo),X11 核心字体(XLFD)主要用于传统 X11 应用(xterm、xfontsel、旧版 X 程序)。
🔰 简介
X11 核心字体系统使用XLFD(X Logical Font Description)格式来命名字体。一个完整的 XLFD 字体名包含 14 个由-分隔的字段:
-foundry-family-weight-slant-setwidth-addstyle-pixelSize-pointSize-resolutionX-resolutionY-spacing-avgWidth-charsetEncoding-例如:-misc-fixed-medium-r-normal--15-140-75-75-c-90-iso8859-1
xlsfonts让你浏览和搜索这个字体命名空间,是理解和调试 X11 字体问题的首选工具。
XLFD 14 字段详解:
| 序号 | 字段名 | 含义 | 示例值 |
|---|---|---|---|
| 1 | FOUNDRY | 字体厂商 | misc、adobe、bitstream |
| 2 | FAMILY_NAME | 字体族名 | fixed、courier、helvetica |
| 3 | WEIGHT_NAME | 字重 | medium、bold、light |
| 4 | SLANT | 倾斜 | r(正)、i(斜)、o(倾斜) |
| 5 | SETWIDTH_NAME | 宽度 | normal、condensed、semicondensed |
| 6 | ADD_STYLE_NAME | 附加样式 | 通常为空 |
| 7 | PIXEL_SIZE | 像素大小 | 15、20、24 |
| 8 | POINT_SIZE | 点数大小 | 140(每10点) |
| 9 | RESOLUTION_X | 水平分辨率 | 75、100 |
| 10 | RESOLUTION_Y | 垂直分辨率 | 75、100 |
| 11 | SPACING | 间距 | p(比例)、m(等宽)、c(字符单元) |
| 12 | AVERAGE_WIDTH | 平均宽度 | 90(每10像素) |
| 13 | CHARSET_REGISTRY | 字符集注册 | iso8859、jisx0208、gb2312 |
| 14 | CHARSET_ENCODING | 字符集编码 | 1(8859-1)、1983(JIS) |
安装方式:
# Debian/Ubuntu$sudoapt-getinstallx11-utils# RHEL/CentOS/Fedora$sudoyuminstallxorg-x11-utils# RHEL 7$sudodnfinstallxorg-x11-utils# Fedora / RHEL 8+# 安装常用核心字体(某些现代发行版不默认安装)$sudoapt-getinstallxfonts-base xfonts-75dpi xfonts-100dpi# Debian/Ubuntu$sudodnfinstallxorg-x11-fonts-misc xorg-x11-fonts-75dpi# Fedora# 验证安装$whichxlsfonts /usr/bin/xlsfonts📖 语法
xlsfonts[选项][模式]- 模式:可包含
*(匹配任意字符)和?(匹配单个字符)的 XLFD 字体名通配符 - 默认模式
*列出所有字体
⚙️ 选项
| 选项 | 说明 |
|---|---|
-display 显示器 | 指定 X 显示器(默认$DISPLAY) |
-fn 模式 | 指定字体名模式(与命令行模式等价) |
-l | 长格式:每行一项属性(显示 XLFD 所有字段) |
-ll | 超长格式:列出所有属性包括字体特性 |
-m | 列出字体的最小和最大边界尺寸 |
-C | 多列输出(节省屏幕空间) |
-1 | 单列输出(每行一个字体) |
-w 宽度 | 指定输出宽度(默认 79 字符) |
-n 列数 | 指定输出列数 |
-u | 输出不排序(保持字体服务器返回的原始顺序) |
💡 示例
示例 1:浏览和过滤字体
# 列出所有字体(数量可能很多!)$ xlsfonts|wc-l4289# 搜索特定字体族$ xlsfonts-fn'*fixed*'-misc-fixed-medium-r-normal--0-0-75-75-c-0-iso10646-1 -misc-fixed-medium-r-normal--13-100-100-100-c-70-iso10646-1 -misc-fixed-medium-r-normal--13-120-75-75-c-80-iso10646-1 -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1 -misc-fixed-medium-r-normal--14-130-75-75-c-70-iso10646-1 -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1 -misc-fixed-bold-r-normal--15-140-75-75-c-90-iso10646-1...# 搜索 Courier 字体$ xlsfonts-fn'*courier*'-adobe-courier-medium-o-normal--0-0-100-100-m-0-iso10646-1 -adobe-courier-bold-o-normal--0-0-100-100-m-0-iso10646-1 -adobe-courier-medium-r-normal--0-0-100-100-m-0-iso10646-1 -adobe-courier-bold-r-normal--0-0-100-100-m-0-iso10646-1...# 搜索等宽字体(spacing=m)$ xlsfonts-fn'*-*-*-*-*-*-*-*-*-*-*-m-*'|head-10-misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1...# 搜索特定大小(15 像素)$ xlsfonts-fn'*-*-*-*-*-*-15-*'# 搜索中文字体$ xlsfonts-fn'*gb2312*'2>/dev/null -isas-song ti-medium-r-normal--16-160-72-72-c-160-gb2312.1980-0 -isas-fangsong ti-medium-r-normal--16-160-72-72-c-160-gb2312.1980-0# 预期输出:各类过滤条件下的匹配字体名列表示例 2:长格式查看字体详细信息
# 长格式解析 XLFD 每个字段$ xlsfonts-fn'*-fixed-medium-r-normal--15-*'-lDIR: minbounds maximum bounds overlap properties -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1 MIN_SPACE bounds: width=9, left=0, right=9ascent=13, descent=2, attributes=0MAX_SPACE bounds: width=9, left=0, right=9ascent=13, descent=2, attributes=0overlaps: FALSE properties: FAMILY_NAME=Fixed FOUNDRY=Misc WEIGHT_NAME=Medium SLANT=R SETWIDTH_NAME=Normal ADD_STYLE_NAME=(null)PIXEL_SIZE=15POINT_SIZE=140RESOLUTION_X=75RESOLUTION_Y=75SPACING=C AVERAGE_WIDTH=90CHARSET_REGISTRY=ISO10646 CHARSET_ENCODING=1MIN_SPACE=9NORM_SPACE=9MAX_SPACE=9END_SPACE=9AVG_CAPITAL_WIDTH=9AVG_LOWERCASE_WIDTH=9QUAD_WIDTH=18FIGURE_WIDTH=9SUPERSCRIPT_X=6SUPERSCRIPT_Y=8SUBSCRIPT_X=6SUBSCRIPT_Y=3SUPERSCRIPT_SIZE=13SUBSCRIPT_SIZE=10SMALL_CAP_SIZE=9UNDERLINE_POSITION=-1STRIKEOUT_ASCENT=6STRIKEOUT_DESCENT=3X_HEIGHT=12CAP_HEIGHT=11RAW_ASCENT=3323RAW_DESCENT=553RAW_PIXEL_SIZE=1524RAW_POINT_SIZE=1394RAW_AVERAGE_WIDTH=894MIN_CHAR_BYTE2=32MAX_CHAR_BYTE2=255DEFAULT_CHAR=0FONT_TYPE=FONT_IS_FIXED_WIDTH FONT=-Misc-Fixed-Medium-R-Normal--15-140-75-75-C-90-ISO10646-1 FACE_NAME=Fixed COPYRIGHT="Public domain font. Share and enjoy."RESOLUTION=0FULL_NAME=Misc Fixed# 超长格式(-ll)包含更多渲染细节$ xlsfonts-fn'*fixed*15*'-ll|head-30DIR: minbounds maximum bounds overlap direction properties -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1... direction: ink metrics LEFT_TO_RIGHT# 预期输出:完整的字体属性信息示例 3:分析字体可用性脚本
#!/bin/bash# X11 字体分析脚本echo"=== X11 字体系统分析$(date)==="echo""# 1. 总字体数统计TOTAL=$(xlsfonts|wc-l)echo"总字体数:$TOTAL"echo""# 2. 按厂商统计echo"--- 按字体厂商统计 ---"xlsfonts|awk-F'-''{print $2}'|sort|uniq-c|sort-rn|head-10# 3. 按字体族统计echo""echo"--- 常见字体族 ---"forfamilyinfixed courier helveticatimes;doCOUNT=$(xlsfonts-fn"*$family*"2>/dev/null|wc-l)echo"$family:$COUNT"doneecho""# 4. 按字符集统计echo"--- 按字符集统计 ---"xlsfonts|awk-F'-''{print $NF}'|sort|uniq-c|sort-rn|head-10# 5. 等宽字体列表echo""echo"--- 等宽字体(适合终端使用)---"xlsfonts-fn'*-*-*-*-*-*-*-*-*-*-*-m-*'|head-20xlsfonts-fn'*-*-*-*-*-*-*-*-*-*-*-c-*'|head-10# 6. 检查中文字体支持echo""echo"--- 中文字体检查 ---"CN_COUNT=$(xlsfonts-fn'*gb2312*'2>/dev/null|wc-l)if["$CN_COUNT"-gt0];thenecho"✅ 发现$CN_COUNT个中文字体:"xlsfonts-fn'*gb2312*'elseecho"❌ 未找到 GB2312 中文字体"echo" 安装: sudo apt-get install xfonts-intl-chinese"fi# 7. 字体路径echo""echo"--- 字体路径 ---"xset q|grep"Font Path"# 预期输出:# === X11 字体系统分析 ===# 总字体数: 4289# --- 按字体厂商统计 ---# 2134 misc# 890 adobe# 567 bitstream# 345 sony# ...# --- 等宽字体(适合终端使用)---# -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1# ...# --- 中文字体检查 ---# ❌ 未找到 GB2312 中文字体# --- 字体路径 ---# Font Path: /usr/share/fonts, /usr/share/X11/fonts示例 4:为 xterm 选择合适的字体
# 传统 X11 应用(如 xterm)使用 XLFD 字体名配置# 以下展示如何查找和测试适合 xterm 的等宽字体# Step 1: 查找中等大小的等宽字体$ xlsfonts-fn'*-*-*-*-*-*-14-*-*-*-*-*-*'|head-20$ xlsfonts-fn'*-*-*-*-*-*-13-*-*-*-*-*-*'|head-10# Step 2: 测试字体效果$ xterm-fn'-misc-fixed-medium-r-normal--14-130-75-75-c-70-iso10646-1'&$ xterm-fn'-misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1'&$ xterm-fn'-adobe-courier-medium-r-normal--14-100-100-100-m-90-iso10646-1'&# Step 3: 在 ~/.Xresources 中永久配置$cat>>~/.Xresources<<'XRES' ! xterm 字体配置 XTerm*font: -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1 XTerm*boldFont: -misc-fixed-bold-r-normal--15-140-75-75-c-90-iso10646-1 XRES$ xrdb-merge~/.Xresources# 预期效果:新启动的 xterm 使用配置的字体# Step 4: 使用 xfontsel 图形化浏览字体(比 xlsfonts 更直观)$ xfontsel&# 点击 fmly 选择 fixed,点击 pxlsz 选择大小,实时预览示例 5:字体路径管理和字体服务器
# X 核心字体通过 xset 管理字体路径# 查看当前字体路径$ xset q|grep"Font Path"Font Path: /usr/share/fonts/X11/misc/, /usr/share/fonts/X11/Type1/, /usr/share/fonts/X11/75dpi/, /usr/share/fonts/X11/100dpi/, built-ins# 临时添加字体目录$ xset +fp /usr/local/share/fonts/custom/ $ xset fp rehash# 验证新字体是否可用$ xlsfonts-fn'*customprefix*'# 恢复默认字体路径$ xset fp default# 查看字体目录中的文件(.pcf.gz 是 X 核心字体格式)$ls/usr/share/fonts/X11/misc/ 10x20-ISO8859-1.pcf.gz 6x13-ISO8859-1.pcf.gz cursor.pcf.gz 5x7-ISO8859-1.pcf.gz 7x14-ISO8859-1.pcf.gz olcursor.pcf.gz...# 编译安装自定义字体$sudomkdir-p/usr/local/share/fonts/myfonts $sudocpmyfont.pcf /usr/local/share/fonts/myfonts/ $sudomkfontdir /usr/local/share/fonts/myfonts/ $ xset +fp /usr/local/share/fonts/myfonts/ $ xset fp rehash $ xlsfonts-fn'*myfont*'⚠️ 注意
X11 核心字体 vs fontconfig:
| 特性 | X11 核心字体(xlsfonts) | fontconfig(fc-list) |
|---|---|---|
| 字体格式 | PCF、BDF、Speedo | TrueType、OpenType、Type1 |
| 命名方式 | XLFD(14 字段) | 人性化名称 |
| 适用范围 | 传统 X11 应用 | 现代 GTK/Qt 应用 |
| 配置工具 | xset fp | fc-cache、fonts.conf |
| 查询命令 | xlsfonts | fc-list、fc-match |
关键提示:
- 现代 Linux 不需要手动管理 X 核心字体,大多数桌面应用使用 fontconfig。仅在运行 xterm、xfontsel 等传统 X 工具时需要。
- 如果
xlsfonts返回空,检查 X 字体路径:xset q | grep "Font Path",确保字体目录存在且包含.pcf.gz文件。 - GTK/Qt 应用使用 fontconfig,不要尝试用 xlsfonts 查询 GTK 字体,应使用
fc-list。 - 对于中文等非拉丁文字,X 核心字体支持有限,建议使用支持 fontconfig 的现代终端(如 gnome-terminal、alacritty)。
📚 相关命令
| 命令 | 说明 |
|---|---|
xfontsel | 图形化 X11 字体浏览器 |
xset | 设置 X 用户偏好(含字体路径管理) |
mkfontdir | 为 X 字体目录创建索引 |
fc-list | fontconfig 字体列表(现代字体系统) |
fc-match | fontconfig 字体匹配 |
fc-cache | 重建 fontconfig 字体缓存 |
xrdb | X 资源数据库(含字体配置) |
📝 总结
xlsfonts是 X11传统字体系统的窗口,虽然现代桌面已转向 fontconfig,但它仍然有其价值:
- XLFD 命名体系:14 字段精确描述字体,是 X11 开发者必须理解的历史遗产
- 传统应用调试:xterm、xfontsel 等工具仍依赖 XLFD 字体名称
- 字体可用性检查:快速确认某个字体是否已安装到 X 核心字体路径
- 历史理解:了解 X11 字体系统有助于理解现代 Linux 图形栈的演进
日常操作使用fc-list,遇到传统 X11 应用字体问题时才使用xlsfonts。二者是不同时代的字体查询工具,针对不同的字体系统。