我在 Adobe Illustrator 中制作了一个图形,并将文件保存为 PDF 文件。此 PDF 在打开时运行正常。
我想将此图作为图片包含在我的 LaTeX 文件中,可以使用以下代码完成:
\documentclass{report}
\usepackage{graphicx}
\begin{document}
\begin{figure}[htb]
\centering
\includegraphics[width=.9\textwidth]{hparc}
\caption[Architecture of the simulation model]
{Architecture of the simulation model, connection between IDA~ICE and Matlab}
\label{fig:hparc}
\end{figure}
\end{document}
但是,当编译文档中包含 PDF 时,一些f
字母l
(不是全部)会丢失。为什么会发生这种情况?!我尝试在 Texmaker 和 Sharelatex 中进行编译。
编辑:Illustrator 中使用的字体是Latin Modern Roman 12 Regular
编辑 2:PDF 文件链接
答案1
pdfTeX
文件hparc.pdf
已将字体嵌入LMRoman12-Regular
为 Adobe Illustrator 中使用的 OpenType 字体:
$ pdffonts hparc.pdf
name type emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
PJUQXT+LMRoman12-Regular Type 1C yes yes no 5 0
当 pdfTeX 嵌入图形时,它首先检查是否知道字体,以便合并使用的字体字形,避免为同一字体添加多个字体文件。但是,它不知道连字符的指定字形名称(PDF 文件中的 Unicode 映射可能会有所帮助,请参阅输出的no
列)并生成警告:uni
pdffonts
pdfTeX warning: pdflatex (file [...]/texmf-dist/font
s/type1/public/lm/lmr12.pfb): glyph `f_f' undefined
pdfTeX warning: pdflatex (file [...]/texmf-dist/font
s/type1/public/lm/lmr12.pfb): glyph `f_l' undefined
请记住,它无法使用字体的原始 OpenType 版本。因此这些字形会丢失。
有一个解决方法。如果 pdfTeX 不认识字体,它只会复制 PDF 文件中找到的字体。TeX 文件最开头的以下行在这里有效,map 行的其他字段似乎不需要:
\pdfmapline{-dummy LMRoman12-Regular}
完整示例:
\pdfmapline{-dummy LMRoman12-Regular}
\documentclass[12pt]{report}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{graphicx}
\begin{document}
\begin{figure}[htb]
\centering
\includegraphics[width=.9\textwidth]{hparc}
\caption[Architecture of the simulation model]
{Architecture of the simulation model, connection between IDA~ICE and
Matlab}
\label{fig:hparc}
\end{figure}
\end{document}
如果文档也使用相同的字体,则字体文件会嵌入两次。
LuaTeX 和 XeTeX
LuaTeX 和 XeTeX 都支持 OpenType 字体,并且无需任何解决方法即可显示连字。
暗示
图片的宽度为:705.77806 pt。文档中图片的嵌入宽度0.9\textwidth
= 350.99762 pt。即缩放因子为 0.94732 ≈ 0.5。
设计尺寸为 12pt,但实际使用的尺寸为 6pt,相当小。因此我建议
使用全部可用空间:
\textwidth
将缩放因子增加约 10%,达到 0.55(字体大小为 6.6pt),并且使用较小的设计尺寸,
Latin Modern 8 Regular
而不是Latin Modern 12 Regular
。