2009-10-06 2 views
3

Я использую пакет, написанный поверх XeLaTeX. Этот пакет использует fontspec, чтобы указать шрифты для разных частей текста: латинский, нелатинский, математический режим, ...TeX Font Mapping

В комплект поставки входит несколько файлов с образцами. Я был в состоянии xelatex большинство из них, которые зависят от обычных файлов ttf или otf. Тем не менее, один из них пытается установить шрифт цифр в математическом режиме на некоторый шрифт, например «NonLatin Digits». Но шрифт, похоже, не является обычным шрифтом. Есть два файла в том же каталоге, что и «nonlatindigits.map» и «nonlatindigits.tec». TECkit использует эти файлы сопоставления для генерации шрифтов TeX. Однако по какой-то причине он не создает файлы, а xelatex выдает следующее сообщение об ошибке.

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

! Font \[email protected]="NonLatin Digits" at 10.0pt not loadable: Metric (TFM) file or 
installed font not found. 

Kpathsea программа жалуется на пробелы, но удаляя пробелы действительно решает проблему с загрузкой файла TFM.

Любые подсказки, что я делаю неправильно?

ответ

5

Каково фактическое имя файла шрифта? Недавно были опубликованы сообщения о рассылке XeTeX, об ошибке, которая помешала загружать файлы шрифтов с пробелами в их именах в Windows (искать их в the archives). Если вы меняете имя файла, вы можете просто запустить эту ошибку.

Вы видите, что вызов kpathsea является лишь побочным эффектом: он указывает, что шрифт не был найден системными библиотеками, которые XeTeX использует поверх системы поиска шрифтов по умолчанию TeX, а XeTeX возвращается к поиску TFM файл, самый основной формат файла.

TECkit не имеет ничего общего с шрифтами, он преобразует символы на лету; в вашем случае, я думаю, вы могли бы использовать сопоставление для преобразования, скажем, арабских цифр в число индексов (так что вам не нужно вводить последнее в исходный файл напрямую). Но он никоим образом не генерирует шрифты.

+0

шрифт Я пытаюсь использовать, называется «парс Digits». И файл, который я пытаюсь скомпилировать, представляет собой пример файла, предоставленного пакетом xepersian (http://www.ctan.org/tex-archive/macros/xetex/latex/xepersian/). Ошибка возникает при обработке команды \ setdigitfont [Scale = 1] {Parsi Digits}. Удаление пространства из имени шрифта не помогает. Составитель пакета отказался отвечать на мой вопрос, потому что он считал это основным вопросом от новичка. Поэтому должно произойти что-то очевидное. – reprogrammer

+0

Хорошо, это плохо. Где я могу скачать шрифт? Я мог проверить, есть ли что-то не так. –

+0

Ссылка на пакет приведена в моем комментарии выше. У меня он установлен как часть моего дистрибутива TeXLive. – reprogrammer

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 = текс-текст] особенно важно при загрузке шрифтов.

+0

Файл, который я пытаюсь скомпилировать, представляет собой пример файла, предоставленного пакетом xepersian (http://www.ctan.org/tex-archive/macros/xetex/latex/xepersian/). В преамбуле файла заключается в следующем: \ documentclass {статья} \ usepackage {xepersian-multiplechoice} \ usepackage {xepersian} \ settextfont [Scale = 1] {XB Зар} \ setlatintextfont [Scale = 1] {Linux Libertine} \ setdigitfont [Scale = 1] {Parsi Digits} Я получаю сообщение об ошибке в \ setdigitfont. – reprogrammer

+0

Вы загружаете fontspec? он, вероятно, должен быть загружен перед всеми вашими персидскими пакетами, поскольку пакеты xepersian, кажется, называют fontspec. – Mica

+0

, вы также можете попробовать и повернуть команду scale = 1.0. – Mica

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 'в качестве опции.

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} 
Смежные вопросы