使用 TeX 生成字母渲染

使用 TeX 生成字母渲染

简短问题:

我怎样才能实现以下两件事:

1)获取系统上当前安装的、LaTeX 可以使用的所有字体的列表?

2)对于每种字体,渲染字母 az、AZ、0-9。

较长的问题:

基本上,我想渲染当前系统可以渲染的所有字形。因此我想:

1) 获取 LaTeX 可以使用的所有字体的列表;2) 渲染每种字体中的所有字形

我怎样才能在 LaTeX 中做到这一点?

谢谢!

编辑

我的问题第一部分的答案似乎是

updmap-sys --listmaps | wc -l

我的盒子上安装了哪些字体?

那么对于第 2 部分,我如何使用所有这些字体?

编辑3

事实证明我的问题是重复的:

Lualatex:带有示例的字体表

答案1

创建新目录和文件:

#!/bin/bash
find `kpsewhich -expand-var='$TEXMFMAIN'`/fonts/tfm -name '*.tfm' -print | \
sed 's@.*/@@; s@\.tfm$@@' | \
xargs sh -c 'for i in "$@"; do (echo $i; echo \\\sample\\\bye) | \
pdftex testfont; mv testfont.pdf $i.pdf; echo $i.pdf; done' sh

使其可执行并运行它。它会为每种字体和形状创建大量 pdf 文件。另一个可能的解决方案是首先创建所有可用字体的列表:

 find `kpsewhich -expand-var='$TEXMFMAIN'`/fonts/tfm -name '*.tfm' -print | sed 's@.*/@@; s@\.tfm$@@' > available_fonts.lst

然后运行这个 Perl 脚本,它会创建 latex 测试文件。它可以扩展为创建一个真的大文件:

#!/usr/bin/perl -w
use strict;

my $i = 0;
my $lst = {};
my $couter_fonts = 0;
my $couter_files = 0;

    open(F, "available_fonts.lst");
    while(<F>){
      chomp;
      $lst->{enc($i++)} = $_;
    }
close F;

open (F, "+>lst_".$couter_files.".tex\n");
print F qq(\\documentclass{article}\n);
print F qq(\n\\begin{document}\n);
foreach(sort keys %{$lst}){
      if (!(++$couter_fonts % 100)){
        $couter_files ++;
        $couter_fonts = 0;
        print F "\\end{document}\n";
        close F;
        open (F, "+>lst_".$couter_files.".tex\n");
        print F qq(\\documentclass{article}\n);
        print F qq(\n\\begin{document}\n);
      }
  print F "\\newfont{\\myFont$_}{ $lst->{$_} }\n";
  print F "\\myFont$_ $lst->{$_} : Sample Text \\\\ \n";
}
print F qq(\\end{document}\n);
close F;

sub enc{
  my $out = "";
  foreach(split //, shift){
    $out .= chr($_+65);
  }
 return $out;
}

相关内容