From: Joerg L. <jo...@us...> - 2012-02-17 09:36:39
|
Hi Michael, First: We should definitely add the DSC comments relating to the font usage. In fact, I don't know why we didn't do this before... However... On 17.02.12, m-s...@us... wrote: > Revision: 3240 > http://pyx.svn.sourceforge.net/pyx/?rev=3240&view=rev > Author: m-schindler > Date: 2012-02-17 08:52:41 +0000 (Fri, 17 Feb 2012) > Log Message: > ----------- > added second postscript font type in PS header > > Modified Paths: > -------------- > trunk/pyx/pyx/pswriter.py > > Modified: trunk/pyx/pyx/pswriter.py > =================================================================== > --- trunk/pyx/pyx/pswriter.py 2012-02-16 17:41:57 UTC (rev 3239) > +++ trunk/pyx/pyx/pswriter.py 2012-02-17 08:52:41 UTC (rev 3240) > @@ -67,6 +67,14 @@ > for resource in self.resourceslist: > resource.output(file, writer, self) > > + def writefontnames(self, file): > + fontnames = [res.t1file.name for res in self.resourceslist if res.type == "t1file"] > + fontnames += [res.newfontname for res in self.resourceslist if res.type == "reencodefont"] > + if fontnames: > + file.write(_DSCsplitline("%%DocumentNeededFonts:", "", fontnames)) # TODO add needed fonts which are not included > + file.write(_DSCsplitline("%%DocumentSuppliedFonts:", "", fontnames)) > + file.write(_DSCsplitline("%%DocumentFonts:", "", fontnames)) > + ... this looks not like the intended use of the registry. Without looking in the details, the previous solution you checked in looked better. What was the reason for moving this code into the PSregistry? > # > # Abstract base class > # > @@ -159,12 +167,8 @@ > if pagebbox: > file.write("%%%%BoundingBox: %d %d %d %d\n" % pagebbox.lowrestuple_pt()) > file.write("%%%%HiResBoundingBox: %g %g %g %g\n" % pagebbox.highrestuple_pt()) > - fontnames = [res.t1file.name for res in registry.resourceslist if res.type == "t1file"] > - if fontnames: > - file.write(_DSCsplitline("%%DocumentNeededFonts:", "", fontnames)) # TODO add needed fonts which are not included > - file.write(_DSCsplitline("%%DocumentSuppliedFonts:", "", fontnames)) > - file.write(_DSCsplitline("%%DocumentFonts:", "", fontnames)) > self.writeinfo(file) > + registry.writefontnames(file) > file.write("%%EndComments\n") > > file.write("%%BeginProlog\n") > @@ -224,12 +228,8 @@ > if documentbbox and writebbox: > file.write("%%%%BoundingBox: %d %d %d %d\n" % documentbbox.lowrestuple_pt()) > file.write("%%%%HiResBoundingBox: %g %g %g %g\n" % documentbbox.highrestuple_pt()) > - fontnames = [res.t1file.name for res in registry.resourceslist if res.type == "t1file"] > - if fontnames: > - file.write(_DSCsplitline("%%DocumentNeededFonts:", "", fontnames)) # TODO add needed fonts which are not included > - file.write(_DSCsplitline("%%DocumentSuppliedFonts:", "", fontnames)) > - file.write(_DSCsplitline("%%DocumentFonts:", "", fontnames)) > self.writeinfo(file) > + registry.writefontnames(file) > > # required paper formats > paperformats = {} Cheers, Jörg |
From: Michael S. <m-s...@us...> - 2012-02-17 09:45:21
|
Salut Jörg, On 17/02/12, Joerg Lehmann wrote: > On 17.02.12, m-s...@us... wrote: > > Revision: 3240 > > + def writefontnames(self, file): > > + fontnames = [res.t1file.name for res in self.resourceslist if res.type == "t1file"] > > + fontnames += [res.newfontname for res in self.resourceslist if res.type == "reencodefont"] > > + if fontnames: > > + file.write(_DSCsplitline("%%DocumentNeededFonts:", "", fontnames)) # TODO add needed fonts which are not included > > + file.write(_DSCsplitline("%%DocumentSuppliedFonts:", "", fontnames)) > > + file.write(_DSCsplitline("%%DocumentFonts:", "", fontnames)) > > + > > ... this looks not like the intended use of the registry. Without > looking in the details, the previous solution you checked in looked > better. What was the reason for moving this code into the PSregistry? First, I wanted to avoid a code duplication. Of course, we could introduce writefontnames as a member of _PSwriter, which is closer to the DSC writing code. But then, the signature is class _PSwriter: def writefontnames(self, file, registry): and it does not at all make use of "self" -- so, this is not a better place. In the end, I do not see why the registry -- it is not a general registry but a PSregistry -- should not contain PS-specific code like the DSC. We already have similar code in PSdefinition. Michael |
From: Joerg L. <jo...@us...> - 2012-02-17 09:58:08
|
Hi Michael, On 17.02.12, Michael SCHINDLER wrote: > Salut Jörg, > > On 17/02/12, Joerg Lehmann wrote: > > On 17.02.12, m-s...@us... wrote: > > > Revision: 3240 > > > + def writefontnames(self, file): > > > + fontnames = [res.t1file.name for res in self.resourceslist if res.type == "t1file"] > > > + fontnames += [res.newfontname for res in self.resourceslist if res.type == "reencodefont"] > > > + if fontnames: > > > + file.write(_DSCsplitline("%%DocumentNeededFonts:", "", fontnames)) # TODO add needed fonts which are not included > > > + file.write(_DSCsplitline("%%DocumentSuppliedFonts:", "", fontnames)) > > > + file.write(_DSCsplitline("%%DocumentFonts:", "", fontnames)) > > > + > > > > ... this looks not like the intended use of the registry. Without > > looking in the details, the previous solution you checked in looked > > better. What was the reason for moving this code into the PSregistry? > > First, I wanted to avoid a code duplication. Of course, we could > introduce writefontnames as a member of _PSwriter, which is closer to > the DSC writing code. But then, the signature is > > class _PSwriter: > def writefontnames(self, file, registry): > > and it does not at all make use of "self" -- so, this is not a better > place. We would not need to make this a method of the _PSwriter class. In order to avoid code duplication you could, e.g., also add a function in the __init__ method. > In the end, I do not see why the registry -- it is not a general > registry but a PSregistry -- should not contain PS-specific code like > the DSC. We already have similar code in PSdefinition. Simply because it is too specific. We could, however, add more generic code to allow for adding sections in the first DSC section. Cheers, Jörg |
From: André W. <wo...@us...> - 2012-02-18 00:17:43
Attachments:
smime.p7s
|
Hi Jörg, Am 17.02.2012 um 10:57 schrieb Joerg Lehmann: >> In the end, I do not see why the registry -- it is not a general >> registry but a PSregistry -- should not contain PS-specific code like >> the DSC. We already have similar code in PSdefinition. > > Simply because it is too specific. We could, however, > add more generic code to allow for adding sections in the first DSC > section. While I do see some problems in the Font-DSCs Michael just added, I do support to add DSCs via the registry. The reason is, that DSCs are (to some extend) resource descriptions collected from all the components of the file. There are DSCs (we do not yet support), which are crucial. I remember one (old) use-case where I had to add DSCs, which had been collected from included EPS files (this was related to spot colors). At that point in time we didn't had such a fancy infrastructure like the registry and in the end of the day my solution was to add another "walk-through-all-the-content-to-collect-some-data" like what we're did for the bounding box. Please consider the font DSCs as a initial and specific solution for a general DSC-handling which surely should be handled via the registry. The details of this functionality has to be developed, but in general (to my current understanding) it is correct to use the registry here. (Still I think the font-DSCs Michael proposed in this thread are wrong, but this is a different issue.) Best, André -- by _ _ _ Dr. André Wobst, Amselweg 22, 85716 Unterschleißheim / \ \ / ) wo...@us..., http://www.wobsta.de/ / _ \ \/\/ / PyX - High quality PostScript and PDF figures (_/ \_)_/\_/ with Python & TeX: visit http://pyx.sourceforge.net/ |
From: Joerg L. <jo...@us...> - 2012-02-20 09:14:13
|
Hi, On 18.02.12, André Wobst wrote: > Hi Jörg, > > Am 17.02.2012 um 10:57 schrieb Joerg Lehmann: > >> In the end, I do not see why the registry -- it is not a general > >> registry but a PSregistry -- should not contain PS-specific code like > >> the DSC. We already have similar code in PSdefinition. > > > > Simply because it is too specific. We could, however, > > add more generic code to allow for adding sections in the first DSC > > section. > > > While I do see some problems in the Font-DSCs Michael just added, I do support to add DSCs via the registry. The reason is, that DSCs are (to some extend) resource descriptions collected from all the components of the file. There are DSCs (we do not yet support), which are crucial. I remember one (old) use-case where I had to add DSCs, which had been collected from included EPS files (this was related to spot colors). At that point in time we didn't had such a fancy infrastructure like the registry and in the end of the day my solution was to add another "walk-through-all-the-content-to-collect-some-data" like what we're did for the bounding box. But that is pretty much what I meant with "more generic code". > Please consider the font DSCs as a initial and specific solution for a > general DSC-handling which surely should be handled via the registry. > The details of this functionality has to be developed, but in general > (to my current understanding) it is correct to use the registry here. Ok. I just did not like the very specific usage - but that was mainly a question of taste. > (Still I think the font-DSCs Michael proposed in this thread are wrong, but this is a different issue.) I mainly saw the problem that we need to also include all resources used in EPS files we include ourselves. This requires parsing the DSC of those files to some degree. At the time when I wrote the PS output code, this seemed some way to go and that's why I only marked the omission of the corresponding DSCs in a comment. Cheers, Jörg |