如果字体未定义,则抛出错误

如果字体未定义,则抛出错误

如果某种字体未安装,我需要抛出错误。

我在子文件夹中有一个字体:/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.enchttp://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}

相关内容