tex4ht:如果缺少字体该怎么办

tex4ht:如果缺少字体该怎么办

我刚刚开始学习该工具的功能tex4ht。它工作正常,但有一个例外:编译

\documentclass{scrartcl}
\usepackage{igo}
\usepackage[T1]{fontenc}
%% 
\begin{document}
%% 
\begin{minipage}[c][1.0\height][r]{0.5\textwidth}
\cleargoban\gobansize{19}\igofontsize{8}
\black{e3,e4,b4,a3,a4,d4,g3,g2,c4,d2}
\white{b1,b3,f2,e2,d3,c3,a2}
\copytogoban{1111}
\shortstack{\showgoban[a1,t11]}\par
\texttt{P-001 (C): Black plays}\par
\end{minipage}
\end{document}

tex4ht收到错误消息

[37m[STATUS]  [0mmake4ht: Conversion started
[37m[STATUS]  [0mmake4ht: Input file: mwe-igo.tex
--- warning --- Couldn't find font `igowhitei8.htf' (char codes: 0--127)

稍后编译器尝试生成字体,但失败了,例如

kpathsea: Running mktexpk --mfmode cx --bdpi 300 --mag 1+276/300 --dpi 576 igowhitei8
mktexpk: don't know how to create bitmap font for igowhitei8.
mktexpk: perhaps igowhitei8 is missing from the map file.

我已正确安装所有程序,并且pdflatex运行正常,没有任何错误消息。警告后还弹出以下(较长)消息:

----------------------------------------------------
environment file
----------------------------------------------------
% unix/tex4ht.env (2019-03-07), generated from tex4ht-env.tex, and
% modified by hand for TeX Live (unix).
% Copyright 2009-2019 TeX Users Group
% Copyright 1997-2009 Eitan M. Gurari
..
%
tpath/tex/texmf/fonts/tfm/!

我没有/tex/texmf/fonts/tfm目录,一切都安装~/Library/texmf在我的 iMac 上。四处寻找,我发现了一个讨论1,这表明我必须在某处更改目录注释。但如果我的猜测正确,该怎么办?

最后说明一下:这igo不是TL的一部分,但可以在CTAN上找到2. Type1 文件可以从3

答案1

TeX4ht 需要它遇到的所有字体的字体映射表。它们将字体中的字符映射到 Unicode 字符。当缺少此类映射时,它将显示您看到的错误消息。

对于文本字体,我们有创建这些映射文件的辅助工具,特发。但对于更复杂的字体,比如数学字体或各种基于图片的字体,如果没有对应的 Unicode 字符,情况就更加困难,需要手动进行映射。

在您的示例中,软件包提供的字体igo似乎仅用于游戏板的图片。必须将此游戏板转换为图片才能保持其外观。此图片转换由 DVI 到图片转换器(例如 Dvipng 或 Dvisvgm)完成。在这种情况下,您不需要映射,只需使用一个.htf抑制错误消息的虚拟文件即可。

您可以.htf使用以下命令创建虚拟文件:

for i in *.tfm; do echo ".lm-ec" > ${i%.*}.htf; done

如果您希望它们在您的系统上可用,请将这些文件放入您的本地 TEXMF 树,例如这个路径在我的系统上有效:

 ~/texmf/tex4ht/ht-fonts/unicode/igo/

我猜,这条路:

 ~/Library/texmf/tex4ht/ht-fonts/unicode/igo/

应该适合你。

要为游戏板创建图片,请使用以下文件igo.4ht

\NewConfigure{showgoban}{2}
\def\:tempa#1#2#3#4{\a:showgoban\o:igo@showgoban:{#1}{#2}{#3}{#4}\b:showgoban}
\HLet\igo@showgoban\:tempa

\Configure{showgoban}{\Picture*{}}{\EndPicture}

\Hinput{igo}

您可以将此文件放置到

~/Library/texmf/tex/generic/tex4ht/igo.4ht

它重新定义了用于打印板的命令,并调用\Picture\EndPicture命令来请求将所包含的代码转换为图片。请参阅TeX4ht 文档了解有关.4ht文件的更多信息。将此文件放在与您的文档相同的目录中。

使用以下方法编译您的文件:

 make4ht -m draft mwe-igo.tex

结果如下:

在此处输入图片描述

答案2

根据上一条建议我做了以下事情:

  1. 创建igobl10.mf并使用包中的igowh10.mf原始文件并生成等文件。mfigotfm

  2. 創建mwe-mf.tex

    \documentclass{article}
    \font\mybl=igobl10
    \font\mywh=igowh10
    \begin{document}
    {\mybl \char0 \char10}   
    {\mywh \char1 \char10}
    \end{document} 

运行正常。

  1. 下一步是测试:
    \documentclass{article}  
    \input showfonts.4ht  
    \begin{document}  
    \showfonts  
    {igobl10}  
    {igowh10}
    {}
    \end{document} 

PDF 文件显示正确的字形。出现错误消息,提示缺少某些字符,例如Missing character: There is no ¡ in font igobl10!。但这是意料之中的。 以下是 PDF 文件的一部分

  1. 然后我运行make4ht -m draft mwe-mf.tex并收到错误消息(例如)
    --- warning --- Couldn't find font igowh10.htf (char codes: 0--127)`
  1. 我生成了htf文件igobl10.htfigowh10.htf输入
    igobl10 0 127    <-- line 1
    ’’  ’1’          <-- line 2
    ’’  ’1’ 
    ’’  ’1’  
    ... 
    ’’  ’1’         <-- line 129
    igobl10 0 127   <-- line 130

其中第 2 行至第 129 行(= 127 - 0 + 1)包含'' '1'并将它们存储在与TeX文件相同的目录中

  1. 现在运行make4ht我收到错误消息
    --- warning --- Improper signature at start of file `.htf'
    --- warning --- File `igowh10.htf' starts/ends with character code 0 (instead of 127)
    igowh10 0 127
    0:  ’’    ’1’ 
    1:  ’’    ’1’ 
    2:  ’’    ’1’ 
    ...
    127:  ’’    ’1’ 
     128:  igowh10  0 127--- error --- Improper file `igowh10.htf'

如果我注释掉{\mywh \char1 \char10}TeX 文件中的这一行,我会得到

    [STATUS]  make4ht: Input file: mwe-mf.tex
    --- warning --- Improper entry (line 0)
    --- warning --- Improper entry (line 1)
    ....
    --- warning --- Improper entry (line 125)
    --- warning --- Improper entry (line 126)
    igobl10 0 127
    0:   ’’  ’1’ 
    1:   ’’  ’1’ 
    2:   ’’  ’1’ 
    ...
    126:   ’’  ’1’ 
    127:   ’’  ’1’  
    128:  igobl10 0 127--- error --- Improper file `igobl10.htf'

你能提示我我做错了什么吗?

相关内容