【知识普及】PostScript中的“命名资源”详解

PS文件中的“命名资源”(Named Resources)

           作者:bobob     日期:2007.12.11          

ps中的一些特性是用一组object的集合来控制的。比如font,可以用一个字典来描述字符的外形。在ps levle2和level3,这样的机制同样用来描述form,pattern,color rendering,以及其他很多object category。

通常,把这些object和一些name关联起来,并在一个中枢机构注册,使用起来是很方便的,特别是font。当font资源创建的时候,就分别给他们关联一个标准的名字(比如Times New Roman)。其他category的object同样可以使用这种机制。

如果把所有可用的object(比如,所有可用的字体)放在一个特定的category并一直以字典的形式保存在于VM里面,那么访问一个named object事实上就是在dictionary上执行“get”操作;判断一个named object是否可用,实际上也就是执行“known”操作。(注:这里的get和known是ps里面定义的针对字典的操作符,get是从字典里面获取一个key关联的值,known是查询字典里面有没有指定的key)

很多字体和其他category的object可以在任意给定的时间,通过以下两种方式进入VM:
1.生成ps的程序直接把这些对象的定义嵌入工作流。
2.在执行过程中,ps程序通过name请求访问object,解释器通过一个“外部源”(磁盘文件,网络文件等)把这些object 读入到VM中。

Named Resources就是上面第二种方式。一个“resource”是一组named object,他们在VM中,或在需要用到的时候可以定位并load到VM中。各个种类(category)的resource有独立的名字空间,在每个category中,都有一组命名过的资源实例(instance),每个种类都有自己定位和管理实例的方法。

资源操作符
ps level 2有5个资源操作符:findresource,resourcestatus,resourceforall,defineresource,undefineresource。
findresource是在给定的category里面,根据key的名字查找资源实例。如果在VM中没有找到,findresource操作符会从一个外部源load这个实例,并把它放在VM中。一个PS程序可以只用一个key就访问资源实例,而不管它是在VM中,还是在一个外部源。
resourcestatus返回一个资源实例的信息,resourceforall枚举一个特定category的所有资源实例,而不管这些实例是否在VM中;他们不会把资源实例放到VM。使用resourceforall要特别注意,因为可用的资源实例集合可能特别巨大。
一个ps程序可以显式的在VM中定义一个命名资源实例:先在VM中创建一个对象,然后用defineresource操作符把这个对象和一个key关联在特定category中。这个资源实例可以用于后面的findresource,resourcestatus,resourceforall操作符。同时,ps程序也可以使用undefineresource来取消这种定义。当资源实例包含在外部存储介质中的时候,findresource自动执行defineresource和undefineresource来管理VM。
资源实例可以定义在Local VM或Global VM中,他们的声明周期取决于定义的时间和当前VM模式。通常,Local和Global资源实例对程序都是可见和可用的,然而当VM是global的时候,只有global的资源实例才可见,这是为了确保资源实例有正确的行为。

  常规资源表
种类名称 对象类型 简要说明
Font  dictionary Font definition
CIDFont  dictionary  CIDFont definition(LanguageLevel 3)
CMap  dictionary  Character code mapping(LanguageLevel 3)
FontSet  dictionary Bundle of font definitions(LanguageLevel 3)
Encoding array  Encoding vector
Form  dictionary Form  definition
Pattern  dictionary Pattern  definition
ProcSet  dictionary Procedure set
ColorSpace array  Parameterized color space
Halftone dictionary Halftone dictionary
ColorRendering dictionary Color rendering dictionary
IdiomSet dictionary Procedure substitution dictionary(LanguageLevel 3)
InkParams dictionary Colorant details dictionary (LanguageLevel 3)
TrapParams dictionary Trapping parameter set (LanguageLevel 3)
OutputDevice dictionary Page device capabilities (LanguageLevel 3)
ControlLanguage dictionary Control language support (LanguageLevel 3)
Localization dictionary Natural language support (LanguageLevel 3)
PDL  dictionary PDL interpreter support (LanguageLevel 3)
HWOptions dictionary Hardware options (LanguageLevel 3) 

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页