4

I am using a package written on top of XeLaTeX. This package uses fontspec to specify fonts for different parts of your text: latin, non-latin, math mode, ...

The package comes with several sample files. I was able to xelatex most of them that depend on regular ttf or otf files. However, one of them tries to set the font of digits in math mode to some font, say "NonLatin Digits". But, the font doesn't seem to be a regular font. There are two files in the same directory called "nonlatindigits.map" and "nonlatindigits.tec". TECkit uses these mapping files to generate TeX fonts. However, for some reason it fails to create the files, and xelatex issues the following error message.

 kpathsea: Invalid fontname `NonLatin Digits', contains ' '

 ! Font \zf@basefont="NonLatin Digits" at 10.0pt not loadable: Metric (TFM) file or
 installed font not found.

The kpathsea program complains about the whitespace, but removing the whitespace does solve the problem with loading the TFM file.

Any clues what I am doing wrong?

4

4 回答 4

5

实际的字体文件名是什么?最近在 XeTeX 邮件列表上讨论了一个错误,该错误阻止了在 Windows 上加载名称中带有空格的字体文件(在档案中查找)。如果更改文件名对您有用,那么您可能刚刚遇到了这个错误。

您看到的 kpathsea 调用只是一个副作用:它表明 XeTeX 在 TeX 的默认字体查找系统之上使用的系统库没有找到该字体,并且 XeTeX 回退到查找 TFM 文件,最基本文件格式。

TECkit 与字体无关,它可以即时转换字符;在您的情况下,我想您可以使用映射将阿拉伯数字转换为印度数字(这样您就不需要直接在源文件中输入后者)。但它不会以任何方式生成字体。

于 2009-10-06T18:18:17.243 回答
1

正如其他人所提到的,您应该尝试 XeTeX,并且应该确保安装了正确的字体。使用命令xelatex代替pdflatex,以在 .tex 文件中启用非拉丁字符。

您没有说您想要哪种字体编码,但以下两种应该可以很好地工作:Linux Libertine 和 Computer Modern Unicode。OpenSuSE 包名称是LinuxLibertinecm-unicode;希望它在其他系统上是相似的。

添加以下内容作为文档中的第一个导入:

\usepackage{xunicode,fontspec,xltxtra}
\usepackage[english]{polyglossia}
% EXAMPLE: \setotherlanguages{russian} % set as "other" so English hyphenation active

并在所有其他导入之后添加以下内容(因此它不会被旧包导入覆盖),

\defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
\setromanfont{Linux Libertine O}
\setsansfont{Linux Biolinum O}
\setmonofont[Scale=0.9]{Courier New}

或者,如果你想要 Computer Modern 字体,

\setromanfont{CMU Serif}
\setsansfont{CMU Sans Serif}
\setmonofont{CMU Typewriter Text}
于 2010-04-24T00:13:29.493 回答
0

使用 xetex 或 xelatex,要点是您不必指定 tex 字体,您应该使用系统字体。

您应该发布出现错误的部分的代码和序言。就像 html+css 一样,不同的 tex 发行版可以呈现出彼此略有不同的东西。

最低限度,你的序言应该是这样的:

 \documentclass[12pt,letterpaper]{article}

 \usepackage{fontspec}% provides font selecting commands
 \usepackage{xunicode}% provides unicode character macros
 \usepackage{xltxtra} % provides some fixes/extras

 \setromanfont[Mapping=tex-text]{Font Name}

[Mapping=tex-text] 在加载字体时尤为重要。

于 2009-10-06T18:28:01.873 回答
0

Parsi Digits 是您目前没有的字体,您得到的错误是因为您没有该字体。只需替换Parsi Digits' with another font and it all should go fine. \setdigitfont is a command that makes digits in math mode Persian and it can acceptScale' 作为选项。

于 2009-10-16T09:58:31.883 回答