TeX字体映射
我正在使用一个写在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文件的问题。
任何线索我做错了什么?
什么是实际的字体文件名称? 最近有关于XeTeX邮件列表的讨论,关于一个在Windows上无法加载名称中带有空格的字体文件的bug(在档案中查找它)。 如果更改文件名称适合您,您可能会碰到这个错误。
您看到的kpathsea调用只是一个副作用:它表示XeTeX在TeX默认字体查找系统之上使用的系统库没有找到该字体,而XeTeX退回查找最TFM文件基本的文件格式。
TECkit与字体无关,它可以随时转换字符; 在你的情况下,我想你可以使用映射将阿拉伯数字转换为印度数字(这样你就不需要直接在源文件中输入后者)。 但它不会以任何方式生成字体。
正如其他人所说的,你应该尝试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}
或者,如果你想要Computer Modern字体,
setromanfont{CMU Serif}
setsansfont{CMU Sans Serif}
setmonofont{CMU Typewriter Text}
与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]特别重要。
链接地址: http://www.djcxy.com/p/33409.html上一篇: TeX Font Mapping