如何使用XeTeX获取所有可用(TTF)字体列表?

8

我很高兴地发现在我的Windows机器上,我可以使用任何可用的TrueType字体与MikTex和XeTeX一起使用。

%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode
\documentclass[]{article}
\usepackage{xltxtra,fontspec,xunicode}
\defaultfontfeatures{Scale=MatchLowercase}
\title{Fonttest}   
\begin{document} 
  \section{Section Title} {
    \setromanfont{Palatino Linotype}
      The quick brown fox jumps over the lazy dog.
  }
  \section{Section Title} {
    \setromanfont{ProggyCleanTTSZBP}
      The quick brown fox jumps over the lazy dog.
  }
\end{document}

有没有一种自动为每个可用字体生成字体测试页面的方法?这样我就不必手动为每个可用字体输入测试页面了。
实际上,我甚至不知道如何获取\setromanfont所需的长字体名称,除非从屏幕上输入。Windows目录只列出文件名,显然无法获得该信息。也许可以在TeX本身中完成此操作,但我可以使用Python脚本或类似工具来管理它。
3个回答

10
fc-list  | cut -d\  -f2-99 | cut -d: -f1 | sort -u

2
在我的Windows 10上最新的(2.9)MikTeX中,该命令是miktex-fc-list - Fuhrmanator

2

一种两步法

1. 建立可用字体列表

可以使用albatross,这是一个命令行工具,包含在像texlive这样的tex发行版中。它旨在查找包含某些字形的字体,例如,如果您想排版英文文本,可以使用类似以下的内容:

 albatross -b 3 T h e

(将 T h e 替换为您的字体应该能排版的任何字形)

这将给你一个字体名称列表。

2. 生成测试页面

您可以使用步骤1生成的字体名称列表让latex对它们进行迭代。

% !TeX TS-program = xelatex

\documentclass{article}

\usepackage{pgffor}
\usepackage{fontspec}
\newcommand{\testphrase}{The quick brown fox jumps over the lazy dog.}

\begin{document}

\foreach \x in {
  Adobe Caslon Pro, 
  Adobe Garamond Pro,
  % many more fonts here
  Zapfino}{
  \section{\x}
  \begingroup
    \setmainfont{\x}
    \testphrase
  \endgroup
}
\end{document}

enter image description here


0

这不是一个完整的答案,而是一个想法。你所要做的就是迭代所有已安装的字体系列,其中存在一个API函数:EnumFontFamiliesEx


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接