PostScript过程集和资源存储在哪里?
PostScript包含过程集(ProcSets)。 过程集是包含命名过程和运算符的字典 这些程序集按类别组织。 现在这些类别存储在哪里PostScript过程集和资源存储在哪里?,postscript,Postscript,PostScript包含过程集(ProcSets)。 过程集是包含命名过程和运算符的字典 这些程序集按类别组织。 现在这些类别存储在哪里 (常规)资源存储在哪里?(例如字体、CIDFont、CMap、ProcSet等) ProcSet的类别存储在哪里 您是否只需要systemdict中的两个额外字典(localDict和globalDict来存储资源,或者这些字典存储在哪里?) 更新1:(在KenS回答之后) 好吧,也许现在的第一个问题应该是。资源如何存储在解释器中 据我所知,可能有这样一种结构
Resources (Dictionary ??? is this local or global or ...?)
- Font (Dictionary)
- CIDFont (Dictionary)
--- CIDFontType (integer)
--- CIDFontName (name)
--- CIDSystemInfo (dictionary)
--- FontBBox (array)
--- FontMatrix (array)
--- FontType (integer)
--- ...
--- ...
- CMap (Dictionary)
- FontSet (Dictionary)
- Encoding (Array)
- Form (Dictionary)
- Pattern (Dictionary)
- ProcSet (Dictionary)
--- BitmapFontInit (Dictionary)
--- CIDInit (Dictionary)
--- ColorRendering (Dictionary)
--- FontSetInit (Dictionary)
--- Trapping (Dictionary)
- ColorSpace (Array)
- ...
- ...
- Category (Dictionary)
--- Generic (Dictionary)
其中大多数是存储在VM中的字典。在本地VM或全局VM中
这些资源是否也添加到userdict和globaldict中,因为:
- 如果您在本地VM中存储了某些内容,则很可能会将其添加到userdict中
- 如果您在全局VM中存储某些内容,则很可能会将其添加到全局VM中
FontDirectory和GlobalFontDirectory这些实际上是本地和全局“字体”类别资源的实现吗?好的。首先,程序集不是按类别排列的,它们与其他任何资源一样。所以您可以按名称和类别引用它们(在本例中,类别是ProcSet) 存储的资源可以存储在便于实现的任何位置。通常这是在磁盘上,但它不一定是;例如,Ghostscript可以将其标准资源存储在ROM文件系统中 实例化后,无论是通过从PostScript程序创建定义,还是通过定位和实例化命名资源,资源都存储在VM中 我看不出您需要localdict或globaldict中的任何额外条目,因为findresource可以使用您喜欢的任何机制来定位资源(请注意,字体的行为有点不同,并且有一些规则可以遵循) 老实说,ProcSet资源或多或少是没有意义的,它的唯一用途是允许PostScript程序生成器避免在每次生成新的PostScript程序时向解释器发送自己的ProcSet定义 显然,这只适用于紧凑的工作流,您可以控制PostScript的生成方式。这是相当罕见的。与程序的其余部分相比,对于大多数应用程序程序程序集,每次发送程序集的开销非常小。我想这在当时似乎是个好主意 [发布问题编辑] 如果您遵循PLRM中定义的规则,则取决于您如何定义资源。例如,Ghostscript确实定义了两个“实例”字典,一个用于全局VM,一个用于本地VM实例,它们是在localdict和globaldict中定义的IIRC。通过阅读/ghostpdl/Resource/Init/gs_res.ps,您可以了解更多关于这一实现方式的信息,您可能会发现一些注释很有用。特别是关于复制通用资源类别实现的注释 FontDirectory和GlobalFontDirectory作为字体类别实例的实现是完全合理的,尽管我认为没有实际的要求。显然,在这种情况下,您必须让字体类别findresource实现首先在这些字典中查找现有实例。另一方面,如果不以这种方式实现,则必须使FontDirectory和GlobalFontDirectory与字体类别实例实现保持同步,这可能会造成尴尬和浪费 正如您所注意到的,由于历史原因,字体与大多数其他资源略有不同,并且与早期PostScript版本向后兼容 不要忘记隐式资源实现