Как получить список всех доступных (TTF-) шрифтов с XeTeX?

Очень хорошо, что я могу использовать любой доступный шрифт Truetype на своем компьютере с Windows с 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 ответа

Решение

Не проработанный ответ, а идея. Все, что вам нужно сделать, это перебрать все установленные семейства шрифтов, для которых существует функция API: EnumFontFamiliesEx,

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

Двухэтапный подход

1. Составление списка доступных шрифтов

Для этого можно использовать albatross, инструмент командной строки, включенный в дистрибутивы tex, например, texlive. Он предназначен для поиска шрифтов, содержащих определенные глифы, например, если вы хотите набрать текст на английском языке, вы можете использовать что-то вроде

       albatross -b 3 T h e

(заменять T h e с любыми глифами, которые должен уметь набирать ваш шрифт)

Это даст вам список названий шрифтов.

2. Создание тестовой страницы.

Вы можете взять список имен шрифтов, созданный на шаге 1, и позволить латексу перебирать их.

      % !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}

Другие вопросы по тегам