如果某种字体未安装,我需要抛出错误。
我在子文件夹中有一个字体:/font/NinjaFont.ttf
。必须通过某些命令来安装它(对此并不重要 - 但在这里:http://math.stanford.edu/~jyzhao/latexfonts.php)
编辑:
如果没有安装,我会收到大约 200 条错误消息和2 条警告:
...MiKTeX\2.9\tex\latex\pst-text\pst-text.sty:31: LaTeX Font Warning: Font shape 'T1/Fonts/NinjaFont/m' undefined(Font) using 'T1/cmr/m/n' instead on input line 31. ...pst-text.sty:31: LaTeX Font Warning: Some font shapes were not available, defaults substituted.
我需要检测是否T1/Fonts/NinjaFont/m
已定义。
下面的代码可以帮助我一些方法:
\PackageError{NinjaPackage}{The ninja font is not defined}{See ninja instructions.}
\stop
我不需要检测字体,这样我就可以抛出错误。有人有解决方案或指示我可以在哪里找到答案吗?
更多编辑:
示例文件:
T1-WGL4.enc: http://math.stanford.edu/~jyzhao/T1-WGL4.enc
t1ninja.df:
\ProvidesFile{t1ninja.fd}
\DeclareFontFamily{T1}{ninja}{}
\DeclareFontShape{T1}{ninja}{m}{n}{ <-> ninja}{}
\pdfmapline{+ninja\space <ninja.ttf\space <T1-WGL4.enc}
我认为它可能就在这里,编译器意识到该字体不存在于其他字体的文件夹中。
我可以做一个\xifelsethen{ {warningThrown} {Error} {noError} }
吗?
编辑4:
根据之前的回答,这似乎效果不错。我必须全局安装该包,然后我确信它会起作用。
\documentclass{article}
\usepackage{etoolbox}
\makeatletter
\def\define@newfont{%
\begingroup
\let\typeout\@font@info
\escapechar\m@ne
\expandafter\expandafter\expandafter
\split@name\expandafter\string\font@name\@nil
\try@load@fontshape % try always
\expandafter\ifx
\csname\curr@fontshape\endcsname \relax
\expandafter\gdef\csname \curr@fontshape/sub\endcsname{}% new
\wrong@fontshape\else
\extract@font\fi
\endgroup}
\newcommand\ninjaFont[1]{%
{ \fontfamily{ninja}\selectfont #1
\ifcsname \f@encoding/\f@family/\f@series/n/sub\endcsname
\PackageError{NinjaSetup}{Not installed}{Do this}
\stop
\else
\fi
}}
\makeatother
\begin{document}
\ninjaFont{It works?}
\end{document}