<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
Hi Werner, Reinhard, Norbert
<div class=""><br class="">
</div>
<div class=""><br class="">
<blockquote type="cite" class="">On Jul 20, 2016, at 4:05 PM, Werner LEMBERG <<a href="mailto:wl@gnu.org" class="">wl@gnu.org</a>> wrote:<br class="">
<br class="">
<br class="">
<blockquote type="cite" class="">Did you try to merge different font subsets into one (subsetted fonts<br class="">
already exist in the files)<br class="">
</blockquote>
<br class="">
Yes, by including PDF snippets into a larger texinfo document created<br class="">
by pdftex (or xetex).  I tried then to execute<br class="">
<br class="">
 ps2pdf pdftex-output.pdf out.pdf<br class="">
<br class="">
which indeed reduces the file size and the number of subsetted fonts<br class="">
by 30%, but there is a problem that makes all links disappear...  We<br class="">
have to further investigate.<br class="">
</blockquote>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class="">I’ve been thinking along the same lines, first trying to find a way</div>
<div class="">to generate PDFs using pdfTeX, having no fonts included.</div>
<div class="">I wasn’t able to achieve that.</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class="">However, I just ran a successful test with pdfTeX and GS as follows.</div>
<div class=""><br class="">
</div>
<div class="">1.  main document has some text in some font (I used CMR12).</div>
<div class="">     It imports several copies of the same image which is a PDF </div>
<div class="">     using the same font.</div>
<div class=""><br class="">
</div>
<div class="">      \includegraphics[… options…]{images/datadoc.pdf}</div>
<div class=""><br class="">
</div>
<div class="">    has a local file  pdftex.map  in the working directory.</div>
<div class="">    This contains a line to include the whole font unsubsetted:</div>
<div class=""><br class="">
</div>
<div class="">           cmr12 CMR12 <<cmr12.pfb</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class="">2.  image  source named   datadoc.tex —>  datadoc.pdf</div>
<div class="">     processed within a subdirectory   images/</div>
<div class="">     (so finds the standard  pdftex.map )</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class="">3.  after generating the image,</div>
<div class="">     run:</div>
<div class="">         ps2pdf -dEmbedAllFonts=false datadoc.pdf datadoc-nofonts.pdf</div>
<div class=""><br class="">
</div>
<div class="">Note the significant reduction in file size:</div>
<div class=""><br class="">
</div>
<div class="">-rw-r--r--  1 ross  staff  10692 Jul 22 11:33 datadoc.pdf<br class="">
-rw-r--r--  1 ross  staff   3191 Jul 22 11:40 datadoc-nofonts.pdf<br class="">
<br class="">
</div>
<div class=""><br class="">
</div>
<div class="">4.  go back to the source document, change the names of images:</div>
<div class=""><br class="">
</div>
<div class="">         \includegraphics[… options…]{images/datadoc-nofonts.pdf}</div>
     </div>
<div class="">     Process it successfully with  pdfTeX. </div>
<div class="">     The Preview window now shows the images' text in a default system font.</div>
<div class="">     (or a small filesize font supplied by GS.)</div>
<div class=""><br class="">
</div>
<div class="">5.  Edit in  maindoc.pdf  as follows:</div>
<div class=""><br class="">
</div>
<div class="">    locate the XObject where the image file is included; viz.</div>
<div class=""><br class="">
</div>
<div class=""></div>
<blockquote type="cite" class="">
<div class=""></div>
</blockquote>
<blockquote type="cite" class="">
<blockquote type="cite" class="">
<div class=""></div>
</blockquote>
</blockquote>
<blockquote type="cite" class="">
<blockquote type="cite" class="">
<blockquote type="cite" class="">
<div class=""> 1 0 obj</div>
<<<br class="">
/Type /XObject<br class="">
/Subtype /Form<br class="">
/FormType 1<br class="">
/PTEX.FileName (./images/datadoc-nofonts.pdf)<br class="">
/PTEX.PageNumber 1<br class="">
/PTEX.InfoDict 12 0 R<br class="">
/BBox [0 0 595.28 841.89]<br class="">
/Resources <<<br class="">
/ProcSet [ /PDF /Text ]<br class="">
/ExtGState <<<br class="">
/R7 13 0 R<br class="">
>>/Font << /R8 14 0 R>><br class="">
>><br class="">
/Length 146<br class="">
/Filter /FlateDecode<br class="">
>><br class="">
stream<br class="">
...<br class="">
</blockquote>
</blockquote>
</blockquote>
<div class="">    <br class="">
<div class=""> note the line:   /Font << /R8 14 0 R>></div>
<div class=""> We are going to change that object reference number.</div>
<div class=""><br class="">
</div>
<div class="">Find the object corresponding to this font being used in the main document.</div>
<div class="">viz.</div>
<div class=""><br class="">
</div>
<blockquote type="cite" class="">
<blockquote type="cite" class="">
<blockquote type="cite" class="">5 0 obj<br class="">
<<<br class="">
/Font << /F16 8 0 R /F15 9 0 R >><br class="">
/XObject << /Fm1 2 0 R /Fm2 3 0 R /Fm3 4 0 R >><br class="">
/ProcSet [ /PDF /Text ]<br class="">
>><br class="">
endobj<br class="">
</blockquote>
</blockquote>
</blockquote>
<div class=""><br class="">
</div>
and</div>
<div class=""><br class="">
</div>
<div class="">
<blockquote type="cite" class="">
<blockquote type="cite" class="">
<blockquote type="cite" class="">8 0 obj<br class="">
<<<br class="">
/Type /Font<br class="">
/Subtype /Type1<br class="">
/BaseFont /CMR12<br class="">
/FontDescriptor 24 0 R<br class="">
/FirstChar 11<br class="">
/LastChar 119<br class="">
/Widths 22 0 R<br class="">
>><br class="">
endobj<br class="">
</blockquote>
</blockquote>
</blockquote>
<div class=""><br class="">
</div>
Go back and make the change:  2 characters<br class="">
<div class=""> </div>
<div class="">      /Font << /R8 8  0 R>></div>
<div class=""> that is ’14’ —> ‘8 ‘   preserving byte lengths.</div>
<div class="">Save the edited PDF.</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class=""> 6.  close the Preview window of  maindoc.pdf</div>
<div class="">      then open it again.</div>
<div class=""><br class="">
</div>
<div class="">      Perfect!!   Images are now showing using the correct font.</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class="">Since I used the same image 3 times, a single edit coped with</div>
<div class="">all the XObject instances from  \includegraphics .</div>
<div class=""><br class="">
</div>
<div class="">With different images, there would need to be a single edit for each.</div>
<div class="">If different fonts are used in the images, you’d need an edit for each font.</div>
<div class=""><br class="">
</div>
<br class="">
<blockquote type="cite" class=""><br class="">
<blockquote type="cite" class="">or did you try to convince Ghostscript to insert missing fonts (PDF<br class="">
files contain only references to external fonts e.g., /FontName, but<br class="">
no physical font, subsetted or not)?<br class="">
</blockquote>
<br class="">
I'm not there yet, but this is the ultimate goal.<br class="">
</blockquote>
<div class=""><br class="">
</div>
<div class="">Can you build a workflow using the trick described above?</div>
<div class="">In particular, automating the edits of the font object references.</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class="">Some further notes.</div>
<div class=""><br class="">
</div>
<div class="">  I kept the content streams uncompressed, to be able to</div>
<div class="">  search in the PDF, when needed:  </div>
<div class="">     \pdfcompresslevel 0</div>
<div class="">     \pdfobjcompresslevel 0</div>
<div class=""> Not sure how necessary this will always be.</div>
<div class=""> But compression can be applied later anyway.<br class="">
<br class="">
</div>
<div class="">The main document had a 2nd font for the page numbering.</div>
<div class=""><br class="">
</div>
<div class="">The image had a 2nd  /ExtGState  resource dictionary:  /R7 13 0 R </div>
<div class=""><br class="">
</div>
<div class="">
<blockquote type="cite" class="">
<blockquote type="cite" class="">
<blockquote type="cite" class="">13 0 obj<br class="">
<<<br class="">
/Type /ExtGState<br class="">
/BM /Normal<br class="">
/OPM 1<br class="">
/TK true<br class="">
>><br class="">
endobj<br class="">
</blockquote>
</blockquote>
</blockquote>
<br class="">
</div>
<div class="">This is to ensure the image completely overprints what is on the page</div>
<div class="">beneath it, I think.  In my test there was nothing. But you might have</div>
<div class="">a background image or pattern, or somesuch.</div>
<div class=""><br class="">
</div>
<div class="">I used a Type1 font here.</div>
<div class="">Not sure whether there will be any differences with other kinds of fonts.</div>
<div class="">Can pdfTeX directly use OTF fonts? </div>
<div class="">Doesn’t it have to break them up into < 256-character subsets?</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class="">As for hyperlinks. I didn’t have any in my image PDF.</div>
<div class="">In your case, is the URL associated to the image as a whole?</div>
<div class="">Or can you have multiple links in an image PDF?</div>
<div class="">— Presumably the latter, as the former is easily coped with </div>
<div class="">in the main document.</div>
<div class=""><br class="">
</div>
<br class="">
<blockquote type="cite" class=""><br class="">
<blockquote type="cite" class="">In the latter case Ghostscript must be able to find the fonts.<br class="">
</blockquote>
<br class="">
Yes, I really hope that!<br class="">
</blockquote>
<div class=""><br class="">
</div>
<div class="">This method doesn’t require Ghostscript to find fonts at all.</div>
<div class="">All font-handling is done by pdfTeX and the manual edits.</div>
<div class="">But maybe you can develop a way to automate those edits?</div>
<br class="">
<blockquote type="cite" class=""><br class="">
<blockquote type="cite" class="">[...]  If you say<br class="">
<br class="">
<blockquote type="cite" class="">too much information is already lost during the subsetting process<br class="">
</blockquote>
<br class="">
I assume that your PDF files already contain font subsets.<br class="">
</blockquote>
<br class="">
Yes, this is current setup.<br class="">
<br class="">
<blockquote type="cite" class="">But what I have in mind is that you create PDF files which don't<br class="">
contain any fonts at all but only the information which font<br class="">
(/FontName) should be used.<br class="">
</blockquote>
<br class="">
Exactly this is my plan also.<br class="">
</blockquote>
<div class=""><br class="">
</div>
<div class="">The above technique does exactly that, I’d say.</div>
<div class=""><br class="">
</div>
<div class="">What would be nice is a way to create the images w/o any fonts,</div>
<div class="">directly with pdfTeX, so not requiring GS at all.</div>
<div class=""><br class="">
</div>
<br class="">
<blockquote type="cite" class="">
<blockquote type="cite" class="">Isn't this exactly what you want to achieve?  Create zillions of<br class="">
files which don't contain any fonts at all, merge them, and finally<br class="">
insert the fonts in order to make the document portable?<br class="">
</blockquote>
<br class="">
Yes.<br class="">
<br class="">
<blockquote type="cite" class="">I must admit that I don't know anything about LilyPond except that<br class="">
musicians like it.  Presumably it creates PostScript code and<br class="">
converts it to PDF.  Right?<br class="">
</blockquote>
<br class="">
Yes.  We have to modify lilypond to not embed the font resources into<br class="">
the PS file but to collect them in a directory.<br class="">
<br class="">
<br class="">
   Werner<br class="">
</blockquote>
<br class="">
<div class="">Hope this helps,</div>
<div class=""><br class="">
</div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span>Ross</div>
<div class=""><br class="webkit-block-placeholder">
</div>
<div class=""><br class="">
Dr Ross Moore<br class="">
Mathematics Dept | Level 2, S2.638 AHH<br class="">
Macquarie University, NSW 2109, Australia<br class="">
<br class="">
T: +61 2 9850 8955  |  F: +61 2 9850 8114<br class="">
M:+61 407 288 255  |  E: <a href="mailto:ross.moore@mq.edu.au" class="">ross.moore@mq.edu.au</a><br class="">
<br class="">
http://www.maths.mq.edu.au<br class="">
<br class="">
<br class="">
<span><img height="58" width="260" apple-inline="yes" id="A202BC67-4C63-4CA7-973D-364363E5CBC7" apple-width="yes" apple-height="yes" src="cid:image001.png@01D030BE.D37A46F0" class=""></span><br class="">
<br class="">
<br class="">
CRICOS Provider Number 00002J. Think before you print. <br class="">
Please consider the environment before printing this email.<br class="">
<br class="">
This message is intended for the addressee named and may <br class="">
contain confidential information. If you are not the intended <br class="">
recipient, please delete it and notify the sender. Views expressed <br class="">
in this message are those of the individual sender, and are not <br class="">
necessarily the views of Macquarie University.<br class="">
</div>
<br class="">
</div>
</body>
</html>