详细描述
概观
各个实施例描述并例示了用于提供文档或文档容器中的文字部分的准确再现的方法和系统。描述了用于标识与该文字部分相关联的字体文件的手段。在一个实施例中,该手段包括字体文件的唯一标识特征集。在下文将可以知道,该唯一标识特征集可以或不可以被包括在包含可使用该字体文件呈现的文字部分的文字表示以及该文字部分的一个或多个附加表示的关联中。
在一个实施例中,一种方法试图呈现或显示包含文档或文档容器的一部分的文字部分。如果与该文字部分相关联的字体文件未被嵌入到文档或文档容器中,则在至少某些实施例中,该方法试图使用该字体文件的唯一标识特征集来本地定位未嵌入的字体文件的副本。在一个实施例中,唯一标识特征集被用于本地定位任何相同名字的字体文件,然后确定如果找到任何这样的文件,则这样的文件在内容是否与未被嵌入的字体文件相同。如果字体文件的副本在系统上本地可用,则可使用所找到字体文件来呈现文字部分的文字表示。另一方面,如果字体文件的副本不可用,则可呈现文字部分的替换或附加表示(诸如在上述关联中找到的)而不必利用字体文件。
示例性计算机系统
图1示出了具有可用于实现以下所述的实施例中的一个或多个的组件的示例性计算机系统。
计算机系统130包括一个或多个处理器或处理单元132、系统存储器134和将包括系统存储器134在内的各种系统组件耦合至处理器132的系统总线136。总线136表示若干类型的总线结构中的任一种或多种,包括存储器总线或存储器控制器、外围总线、加速图形端口、和使用各种总线体系结构中的任一种的处理器或局部总线。系统存储器134包括只读存储器(ROM)138和随机存取存储器(RAM)140。基本输入/输出系统(BIOS)142包含有助于诸如启动时在计算机130中元件之间传递信息的基本例程,它被存储在ROM 138中。
计算机130还包括向硬盘(未示出)读写的硬盘驱动器144、向可移动磁盘148读写的磁盘驱动器146、以及用于向诸如CD ROM或其它光学介质的可移动光盘152读写的光盘驱动器150。硬盘驱动器144、磁盘驱动器146、光盘驱动器150由SCSI接口154或某个其它适当接口连接至总线136。驱动器及其相关联的计算机可读介质为计算机130提供对计算机可读指令、数据结构、程序模块和其它数据的非易失性存储。尽管此处描述的示例性环境采用硬盘、可移动磁盘148和可移动光盘152,但本领域的技术人员应理解,也可在示例性操作环境中使用可存储计算机可访问数据的其它类型的计算机可读介质,诸如磁带、闪存卡、数字视频盘、随机存取存储器(RAM)、只读存储器(ROM)等。
多个程序模块可被存储在硬盘144、磁盘148、光盘152、ROM 138或RAM 140上,包括操作系统158、一个或多个应用程序160、其它程序模块162和程序数据164。用户可通过诸如键盘166和定点设备168的输入设备向计算机130输入命令和信息。其它输入设备(未示出)可包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些和其它输入设备通过耦合至总线136的接口170连接至处理单元132。监视器172或其它类型的显示设备也经由诸如视频适配器174的接口连接至总线136。除监视器以外,个人计算机一般包括诸如扬声器和打印机等其它外围输出设备(未示出)。
计算机130通常使用至一个或多个远程计算机如远程计算机176的逻辑连接在网络化环境下操作。远程计算机176可以是另一个人计算机、服务器、路由器、网络PC、对等设备或其它常见网络节点,且通常包括上文相对于计算机130描述的许多或所有元件,尽管在图1中只示出存储器存储设备178。图1中所示逻辑连接包括局域网(LAN)180和广域网(WAN)182。这样的联网环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。
当在LAN联网环境中使用时,计算机130通过网络接口或适配器184连接至局域网180。当在WAN联网环境中使用时,计算机130通常包括调制解调器186或用于在诸如因特网的广域网182上建立通信的其它装置。调制解调器186可以是内置或外置的,它可以通过串行端口接口156连接至总线136。在网络化环境中,相对于个人计算机130描述的程序模块或其部分可以存储在远程存储器存储设备中。可以理解,所示的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其它手段。
一般而言,可借助于在不同时间存储在计算机内各个计算机可读存储介质中的指令来对计算机130的数据处理器编程。程序和操作系统一般分布在例如软盘或CD-ROM上。自此,它们可被安装或加载到计算机的辅助存储器中。在执行时,它们至少部分被加载到计算机的主要电子存储器中。当计算机可读存储介质包含用于结合微处理器或其它数据处理器来实现下述步骤的指令或程序时,此处描述的本发明包括这些或其它类型的计算机可读存储介质。
为说明起见,诸如操作系统的程序和其它可执行程序组件此处被描述为离散的块,尽管认识到,这样的程序和组件在不同时间驻留在计算机的不同存储组件中,且由计算机的数据处理器执行。
唯一标识字体文件
图2在200处一般地例示根据一个实施例的示例性字体文件的唯一标识特征集。在所示和所述示例中,该唯一标识特征集包括字体目录指示符210、字体文件名指示符212和字体文件唯一标识符214。
在下文将可以知道,唯一标识特征集200提供可用于标识诸如本地计算设备的计算设备上的字体文件的标识机制。例如,在生产包括使用具有阻止字体文件被嵌入在文档或文档容器中的限制的字体文件格式化的部分的文档时,这将是有用的。同样地,例如,在执行应用程序的计算系统试图呈现或消费包含利用该字体文件的一个或多个文字部分的文档或文档容器,但该应用程序并不必然能够经由文档或文档容器访问该字体文件时,这将是有用的。
通过在这样或其它环境中使用唯一标识特征集200,计算系统可试图本地查找字体文件,且如将在以下所述,在字体文件不可用的情况中,仍试图使用替换手段来为文档提供有意义且视觉上准确的呈现。
在所示和所述实施例中,字体目录指示符210以一般标准方式指定本地字体目录。在试图呈现或消费文档或文档容器的计算系统上,字体目录指示符可采用任何合适的指定的形式,如指向所关注的字体文件可能存储的位置的实际目录路径名。然而,更一般地,字体目录指示符可采用用于查找或代替本地字体目录的指示符的形式。例如,文档中的字体目录指示符可采用“[FONTDIR(字体目录)]”的形式,呈现系统可将其替换为“c:\windows\fonts”。替换地或附加地,字体目录指示符可采用统一资源标识符(URI)的部分或组成成分的形式,其示例将在以下提供。
字体文件名指示符212指示用来格式化文字部分的字体文件的名字。例如,如果所关注的文字部分是使用Arial字体格式化的,则字体文件名指示符可以是“arial.tff”形式的。字体文件名指示符被配置成用于试图本地找到所关注的特定字体文件,以便呈现或消费相关联的文字部分。
即使当计算系统上的本地字体文件的名字与用于格式化文字部分的字体文件名相同时,该字体文件本身仍可以是该文件的不同版本,或者它可与原始使用的字体文件不完全相同。因此,唯一标识符214允许计算系统查明文件名与所关注的字体文件名相同的本地字体文件(如由字体文件名指示符所指示)是否确实是相同的字体文件。
在所示和所述示例中,唯一标识符214可包括任何摘要、描述、表示或可用于将一个字体文件与另一不完全相同的文件区分开的其它手段。在一个实施例中,唯一标识符214包括唯一表示200所标识的字体文件的循环冗余校验和。如本领域的技术人员所理解,替换或附加地,唯一标识符可以是文件的散列或区分文件的任何其它合适的手段。
图3是描述用于唯一标识字体文件并提供字体文件的唯一表示的各步骤的流程图。该方法可结合任何合适的硬件、软件、固件或其组合来实现。在所示示例中,以软件实现该方法。
步骤300使用字体目录指示符指定本地字体目录。合适的字体目录指示符的示例曾在以上给出。步骤310通过使用字体文件名指示符来指定字体文件名。以上曾给出如何实现这一步骤的示例。步骤312为字体文件生成唯一标识符。合适的唯一标识符的示例曾在以上给出。
步骤314通过组合字体目录指示符、字体文件名指示符和唯一标识符来形成字体文件的唯一标识特征集。该步骤可按照任何合适的方式来实现。例如,在一个示例性实施例中,唯一标识特征集采用统一资源标识符(URI)的形式。
在其中唯一标识特征集包括UIR的实施例中,定义一种新的URI方案,其中文件字体目录指示符是URI的<scheme>成分,字体文件名指示符是URI是<path>成分,唯一标识符是URI的<query>成分。例如,使用“localfont”作为<scheme>,使用“arial.ttf”作为<path>并使用等于“12ad43DF”的字体文字的循环冗余校验和作为<query>的URI可如下显现:
“localfont://arial.tff?12ad43DF”
可以理解和领会,可利用用于唯一标识字体文件并提供字体文件的唯一标识特征集的任何合适的机制,而不背离所要求保护的主题的精神和范围。
构建关联
假定可如上所述唯一标识所关注的字体文件,则可采用此类唯一标识的字体文件的一个领域是文档构建领域。具体地,在下文将可以知道,通过使用唯一标识的字体文件,包含使用这样的字体文件格式化的文字的文档或文档容器可被构建或装配,且在字体文件可能以某种方式受限的情况中,可为这样的文档的消费者提供视觉上准确的替换方式。
图4在400处一般地例示根据一个实施例的关联或关联结构。在所示和所述实施例中,关联包括文字的一个或多个文字表示410、一个或多个文字附加表示412、以及可任选地用于标识与一个或多个文字部分相关联的一个或多个字体文件的手段414。文字部分可包括整个文档和/或其较少部分。
在该示例中,文字表示410包括整个文字表示,其中通过使用与原始用于格式化文字的字体文件相同的一个或多个字体文件,可将该文字表示呈现成文字。例如,假定文字表示是使用一个字体文件呈现的,其中该字体文件具有阻止其被嵌入到文档或文档容器中的限制。无论如何,该文字表示包含如果字体文件要被嵌入到文档或文档容器中则可用于呈现文档的所有信息和/或数据。因此,关于文字表示的假定是,即使使用了受限字体文件来格式化文字,且该字体文件不能被嵌入到文档或文档容器中,但该字体文件仍可在要呈现或使用该文档的位置处适当可用。
除文字表示410以外,关联400包括文字表示410中所包含的一个或多个文字部分的一个或多个附加或替换表示412。附加或替换表示可包含任何合适的表示,诸如文字部分的图像表示,诸如位图或jpeg文件、或字符的矢量表示。此处,附加或替换表示失去了字体字符,且不再被视为各个字符的链。相反,附加或替换表示被视为不透明的实体。关于附加或替换表示的一个假定是,原始用于格式化文档一部分且未被嵌入到文档或文档容器中的字体文件,在要呈现或消费该文档的位置处并不一定可用。因此,在这种情况中,附加或替换表示提供了用于提供文档的视觉再现的灵活的替换方式。特别地,在不存在所关注的字体文件时,可使用附加或替换表示来代替文字表示。
除文字表示410和附加表示412以外,关联400可任选地包括用于标识曾被用来格式化由文字表示410所描述的文字部分的一个或多个字体文件的手段414。这样的手段的一个示例曾在以上结合图2描述。关于字体文件标识手段的假定如下所示。在曾使用从相关联文档或文档容器不可用的字体文件格式化文字表示的情况中,字体文件仍可在要呈现或使用文档的位置处适当可用。因此,通过提供可标识不可用字体文件的机制,可进行本地搜索,且如果找到了字体文件,则它可在呈现或消费过程中使用。否则,可使用替换或附加表示。
在关联400不包含字体文件标识手段414的情况中,可单独提供字体文件标识手段供结合该关联使用。例如,关联400可包含诸如URL的标识符,它指向从中可检索字体文件标识手段的位置。或者,在某些实施例中,可完全不提供字体文件标识手段。相反,可使用一个或多个附加表示来代替与受限字体文件相关联的文字表示。
图5是描述用于构建关联(如上述关联)的方法中的各步骤的流程图。该方法可结合任何合适的硬件、软件、固件或其组合来实现。在所示示例中,该方法是以软件实现的。
步骤500提供了文字部分的文字表示。该步骤可按照任何合适的方式执行。在所示和所述实施例中,该步骤可通过按照可使用与原始用于准备文字的字体文件相同的字体文件来呈现或消费文字的方式来提供文字的表示而执行。
步骤510提供文字部分的一个或多个附加表示。附加表示的特定示例曾在以上提供。
步骤512使文字表示与一个或多个附加表示关联在一个关联中。这可按照任何合适的方式实现。例如,文字部分的文字表示和该部分的位图图像可被关联以形式文档或文档容器形式的关联。
步骤514提供用于标识与文字部分相关联的用于提供文字表示的字体文件的手段。该步骤可按照任何合适的方式实现。以上在图2中曾描述一个这样的文字标识手段。
消费文档或文档容器中所包含的关联
现在已描述了如何唯一标识诸如受限字体文件的字体文件,以及如何构建包含或至少指示所唯一标识的字体文件的关联,以下讨论描述根据一个实施例如何消费使用这样的关联。
图6是描述用于消费或呈现使用可就其使用有所限制的字体文件生产的文字部分的方法中的各步骤的流程图。该方法可结合任何合适的硬件、软件、固件或其组合来实现。
步骤600查明是否有可用的与文字部分相关联的字体文件。在一个实施例中,关联,如包含文档或文档容器的关联,由将在其上消费该关联的计算设备接收。
步骤610查明字体文件在文档或文档容器中是否可用(例如,通过嵌入在文档中或被包含在文档容器内)。如果字体文件可用,则步骤612即使用字体文件来呈现文字。另一方面,如果字体文件不可用,则步骤614查明该字体文件是否在旨在消费文档的计算设备上本地可用。执行该步骤的一种方式是通过使用字体文件的唯一标识特征集在本地设备中搜索相关联的字体文件。以上曾提供唯一标识特征集的示例。
如果字体文件本地可用,则步骤616使用本地可用的字体文件来呈现文字。另一方面,如果字体文件本地不可用,则步骤618呈现替换文字标识。以上曾提供替换文字标识的示例。
实现示例
可以理解和领会,上述实施例可按照任何合适的方式且在任何合适的环境中实现。以下提供一个特定实现示例。
在一个实施例中,上述发明性原理可结合Microsoft的Metro文档格式来实现。Metro文档技术在于2004年5月1日提交的题为“Document Mark Up Methods andSystems(文档标记方法和系统)”的共同待批准且共同转让的美国专利申请第10/836,327号中描述。
简要地,Metro文档范例提供定义用于组成、打包、分发和呈现以文档为中心的内容的一组构件块的框架和格式。该技术包括使用被称为包(相关部分的集合)的逻辑实体将文档(或其它类型的内容)的所有片段聚集成一个对象。为了允许准确地再现文档的文字部分,用于格式化该部分的原始字体文件(或其子集)的副本被嵌入到Metro文档内。该原始字体文件通过指向Metro包(一个对象中文档的所有片段的集合)中一部分(即,字体文件)的URI被标识。在字体文件未被嵌入到Metro文档中的情况中,可利用上述方法来提供用于提供文档的准确视觉再现的可工作选项。
具体地,通过采用上述唯一标识特征集,计算系统可查明与曾用于格式化Metro文档中所包含的文字部分的字体文件相同的字体文件是否本地可用。如果与曾用于格式化文字部分的字体文件相同的字体文件本地不可用,则仍可呈现该文字部分的一个或多个附加表示。
在利用被称为可扩展应用程序标记语言(XAML)的分层的基于标签的语言描述文档内容的Metro专用上下文中,可利用至少两个替换标记表示来描述该字体文件的唯一标识特征集以及替换或附加表示。
以下描述假定至少某种程度地熟悉Metro格式和XAML。
首先,现有的<Glyphs>元素的扩展可用于通过添加引用替换位图图像的属性来表示文字元素。从而,扩展的<Glyphs>元素标记可如下显示:
<Glyphs OriginX=”10”OriginY=”10”UnicodeString=”Hello!”
FontURI=”localfont://arial.ttf?12ad43DF”AlternateImage=”/images/glyphsl.GIF”/>
此处,唯一标识特征集显现为使用“localfont:”URI方案的FontURI。AlternateImage(替换图像)属性被添加,并引用文字部分的替换位图表示。
其次,现有的<Glyphs>元素可被包裹在外部控制结构中以在文字表示与替换位图图像之间选择。在这种情况中,<Glyphs>元素不被修改。该方法的示例如下所不。
<AlternateContent>
<Choice RequiresResource=”localfont://arial.ttf?12ad43DF”>
<Glyphs OriginX=”10”OriginY=”10”UnicodeString=”Hello!”
FontURI=”localfont://arial.ttf?12ad43DF”>
</Choice>
<Fallback>
<Image X=”10”Y=”10”ImageSource=”/images/glyphsl.GIF”/>
</Fallback>
</AlternateContent>
此处,基于<Choice>元素的“RequiresResource(请求资源)”所表示的外部资源,即唯一表示的字体文件的可用性,<AlternateContent>结构在<Choice>和<Fallback>元素之间作出选择。
在该特定实现示例中,正如本领域的技术人员所理解的那样,通过检查特定文档中的每一文字元素或部分并通过检查字体头的OS/2表中的许可证权限位字段来查明它是否利用了不可嵌入的字体来生产文档。如果该字体可自由嵌入,则该字体被嵌入在文档包中,且该部分的名字按照常规方式被包括在文字标记中。另一方面,如果该字体不可自由嵌入,则创建“localfont:”URI来表示字体文件。此外,标记被发放,并在替换表示(例如,位图图像)与文字表示之间作出选择。此外,使用所创建的“localfont:”URI为文字元素的替换表示和文字表示发放标记。
在消费方面,分析文档标记,且如果遇到在替换表示和文字表示之间进行选择,则检查该字体文件所指定的URI。如果它是“localfont:”URI,则进行以下操作。首先,作出关于URI的<path>部分中所标识的字体文件是否在本地系统上可用的判断。如果它存在,则计算本地可用字体文件的CRC-32,且将其与标记中所包含的CRC-32进行比较。如果CRC-32与URI<query>中所指定的CRC-32匹配,则使用本地可用的字体文件来呈现文字标识。如果该字体文件不存在,或CRC-32不匹配,则使用替换标识来呈现过程。
结论
上述各个实施例可允许呈现文档的准确视觉再现,即使原始用于格式化文档的一个或多个字体从文档或相关联的文档容器本身不可用。以此方式,在该文档文件中仍可发现标记文档的文字。这允许诸如复制/粘贴、屏幕阅读器的可访问性、搜索等功能。此外,如果在文档文件外部提供与曾用于格式化文字的字体文件相同的字体文件,则可使用原始字体表示来呈现文字,这可能比替换表示(例如,位图图像表示)的质量高得多。
尽管使用结构特征和/或方法步骤专用的语言描述了本发明,但可以理解,所附权利要求书中定义的本发明不必限于所述特定特征或步骤。相反特定特征和步骤作为实现所要求保护的本发明的优选形式而被公开。