TeX字体映射

时间:2009-10-06 17:49:14

标签: latex fonts tex xetex

我正在使用在XeLaTeX上编写的包。此程序包使用fontspec为文本的不同部分指定字体:拉丁语,非拉丁语,数学模式,...

该软件包附带了几个示例文件。我能够xelatex大多数依赖于常规ttf或otf文件。但是,其中一个尝试将数学模式中的数字字体设置为某种字体,例如“NonLatin Digits”。但是,字体似乎不是常规字体。同一目录中有两个文件名为“nonlatindigits.map”和“nonlatindigits.tec”。 TECkit使用这些映射文件生成TeX字体。但是,由于某种原因,它无法创建文件,并且xelatex发出以下错误消息。

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

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

kpathsea程序抱怨空格,但删除空格确实解决了加载TFM文件的问题。

有什么线索我做错了吗?

4 个答案:

答案 0 :(得分:5)

实际的字体文件名是什么?最近在XeTeX邮件列表上讨论了一个错误,该错误导致无法在Windows上加载名称中带有空格的字体文件(在the archives中查找)。如果更改文件名适合您,您可能只是遇到了这个错误。

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

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

答案 1 :(得分:1)

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

你没有说出你想要的字体编码,但是下面两个应该可以很好地工作:Linux Libertine和Computer Modern Unicode。 OpenSuSE包名称为 LinuxLibertine cm-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}

或者,如果你想要计算机现代字体,

\setromanfont{CMU Serif}
\setsansfont{CMU Sans Serif}
\setmonofont{CMU Typewriter Text}

答案 2 :(得分:0)

使用xetex或xelatex,poitn是你不必指定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]特别重要。

答案 3 :(得分: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 accept Scale'替换为选项。