在mac osx上使用latex(特别是pdflatex)生成时,pdf文档中的字体搞砸了

时间:2008-12-19 23:56:00

标签: macos pdf latex fonts pdf-generation

我的同事建议texniscope不知何故应该责备我应该尝试从我的系统中清除它。我真的希望不要诉诸于此!

可能的线索:

  • 在升级到Leopard之前,这不是问题。

  • 当我说字体搞砸了,我的意思是主要文本看起来可能是默认的mac系统字体,并且所有数学都是完全不可读的。基本上所有特殊符号都是完全乱码。

  • 我从这里安装了乳胶:http://www.tug.org/mactex/。我已经安装了texniscope。

  • 当我运行/usr/texbin/pdflatex foo.tex时,似乎有效:

     This is pdfTeXk, Version 3.1415926-1.40.9 (Web2C 7.5.7)
     %&-line parsing enabled.
     entering extended mode
    ...

但是生成的pdf文件搞砸了字体。

  • 在命令行上使用pdflatex或使用TeXShop也会发生同样的事情。

6 个答案:

答案 0 :(得分:5)

Apple知道这个问题并且没有计划修复它(我有一个教员花了很多时间测试并向Apple提交错误)。他们声称PDFTeX正在错误地嵌入字体,并且他们修复了Apple PDF库以更加严格地接受它将会接受的内容,这意味着您将继续看到在预览中使用PDFTeX创建的PDF文档的问题,TeXShop或其他使用Apple的PDF引擎显示PDF的工具。不幸的是,他们并不清楚PDFTeX究竟出错了什么,这使得修复它甚至向PDFTeX开发人员报告错误是有问题的。请注意,Adobe的Acrobat或Reader应用程序通常可以毫无问题地显示这些文档;据推测,Adobe的错误检查比Apple更为宽松。

您实际上可以在不重新启动的情况下从此问题中恢复,尽管您可能会在同一会话中看到它在同一文档中重复出现。你需要运行

atsutil server -shutdown

将杀死Apple Type Services服务器守护程序(ATSServer)并生成一个新实例,巧合地重建其缓存文件。

答案 1 :(得分:3)

TUG最近发布了更新的二进制文件来修复触发字体缓存损坏的错误:http://www.tug.org/mactex/fontcache/

答案 2 :(得分:1)

我似乎从http://www.stat.duke.edu/~dmm36/tech.php找到了答案,粘贴在下方。唉,似乎我不得不放弃TeXniscope。我喜欢TeXniscope比Skim好得多,因为它更简单,有更好的分页键盘输出,Skim让你每次有乳胶错误时手动刷新pdf(否则Skim自动刷新)。

引自http://www.stat.duke.edu/~dmm36/tech.php

最近升级到Leopard之后,乳胶(MacTeX 2007发行版)创建的pdf文件开始发生了一些非常奇怪和可怕的事情。重点是任何使用Apple的原生pdf引擎的应用程序都没有正确显示字体(例如preview.app,skim.app,Texniscope.app,LaTeXit.app,但不是adobe reader 8)。更为神秘的是,同一文件在多个开口上的呈现方式不同。

随后发生了大量的Google搜索,直到我在mac tex新闻组中发现一个帖子,表明问题在于损坏的字体缓存。另一个搜索带来了关于如何删除Leopard中所有字体缓存的提示。从终端发出以下命令:

sudo rm -rf `lsof | grep com.apple.ATS/annex.aux | grep Finder | cut -c 66-139`

(如果lsof不在您的路径中,请将/usr/sbin/lsof替换为/usr/sbin

sudo rm -rf /private/var/folders/*/*/-Caches-/com.apple.ATS

然后重启。这解决了我的字体问题。

注意:此问题的一部分似乎是TeXniscope.app搞砸了字体缓存的结果。例如,如果您删除字体缓存,重新启动,并在预览中打开它,它看起来会很好,但只要再次在TeXniscope中打开某些内容,就会返回到绘图板。如果您遇到此问题并使用TeXniscope作为您的pdf预览器(如在aquamacs中),您应该切换到Skim作为您的pdf预览器。它非常好,Skim wiki有关于如何将它与Aquamacs集成的说明。无论如何,TeXniscope还没有得到积极的发展。

答案 3 :(得分:1)

这个错误让我疯了。灵感来自this hint,这是我发现应对它的最好方法,即在shell中执行以下序列:

atsutil databases -removeUser
sudo atsutil databases -remove
atsutil server -shutdown
atsutil server -ping

你可以在shell配置文件的shell函数中添加这个序列(我的是.zshrc):

function atsrm()
{
  atsutil databases -removeUser
  sudo atsutil databases -remove
  atsutil server -shutdown
  atsutil server -ping
}

...只需在终端中调用atsrm即可清除字体缓存。请注意,如果Skim处于打开状态,Skim会崩溃,某些应用程序可能会显示某些字符不正确,因此您必须重新启动它们。

答案 4 :(得分:0)

在文档属性下查看Adobe Reader中的pdf。如果您有数学类型3(?)位图字体,则需要告诉驱动程序将正确的Type 1矢量字体嵌入到生成的文档中。

我在dvips上使用latex,然后在linux上使用pdf。过去我不得不告诉它这样做,但现在看来至少ubuntu上的软件包有正确的字体设置。

在网上查看如何将正确的字体嵌入到文档中。

第二个想法,也许你的系统上没有安装任何字体,或者没有任何字体嵌入到文档中。

答案 5 :(得分:0)

我对你的MacTeX问题感到有些惊讶。我最近安装了2008版本,它就像一个魅力,无论是pdftex / latex还是xetex / latex。即使安装了以前的teTeX,字体也不成问题。你能把你的foo.tex放在某处供我们测试吗?