用于最佳段落排版的方法和计算机可读介质的制作方法

文档序号:6651079阅读:160来源:国知局
专利名称:用于最佳段落排版的方法和计算机可读介质的制作方法
背景技术
当用户将文本键入字处理应用程序或其它类型的页面排版应用程序时,该程序将逐行地展示所键入的文本,并周期性地在适当的点上“断开”文本流以便移到新的行。该断行处理通常导致一个或多个段落,每个段落由具有标记每一行的起点和终点的断点的一个或多个行来定义。在字处理应用程序和其它页面排版程序中产生的一个共同问题是确定每一行应在段落中的何处断开的问题。
大多数字处理应用程序逐行地断开文本,并且不考虑相邻各行的格式化。例如,大多数字处理应用程序通过格式化从段落的第一个字符开始的第一行,并寻找该行的最佳断点来开始。在定位最佳断点时要考虑的一些因素包括,段落是右对齐还是两端对齐、该行上是否允许压缩、是否允许用连字符连接、以及其它因素。在定位第一行的最佳断点之后,该应用程序继续用类似方式格式化从第一行断点之后的第一个字符开始的第二行。每个后面的行都用相同方法格式化。
最佳段落排版算法由Donald Knuth教授开发用于TeX程序。由Knuth开发的该算法考虑了所有可能方法来将段落断开成行。特别地,该算法计算损失函数(Penalty Function)来估算每种将段落断开成行的方法的质量。基于这些结果,该算法选择最佳方法来断开该段落。由Knuth陈述的方法通过改进两端对齐段落和右对齐段落的各行之间空格的均匀分布来改进文本的排版质量。为了在线性时间内实现这些优点,Knuth算法应用了动态规划技术。
尽管由Knuth提供的算法提供了众多的优点,但是它并非没有缺点。特别地,Knuth算法只能断开具有预定义几何关系的页面的文本。该算法不包括附于字符流中特定点并可置于页面上任何地方的图表,它在格式化期间会改变页面的几何关系。因为Knuth提供的算法只允许各个字之间的对齐(压缩或扩展),所以它不用允许字内对齐的语言或在字之间不具有空格的语言中的文本来操作。此外,Knuth算法无法在某些较差排版情形中-通常是只有极小对齐机会的狭窄栏中-产生可接受的格式化结果。在这些情形中,Knuth算法仅产生溢出右边界的行,并且向用户通知相关错误。在字处理应用程序的环境中,向终端用户提供这样的结果是无法接受的。
本发明的各个实施例就是参照这些和其它考虑而作出的。

发明内容
根据本发明,以上和其它问题由最佳段落排版的方法和计算机可读介质来解决。根据本发明各实施例,提供了一种段落排版算法,它在利用字内对齐的语言或不利用字之间空格的语言中能够很好地工作,它对可置于页面上任何地方的图表也能很好地工作,甚至还提供较差情形中的格式化结果。
根据本发明一实施例,提供用于排版文本段落的计算机实现方法和计算机可读介质。根据该方法,可产生一个或多个版式节点,表示段落中部分或全部文本的可能版式。版式节点还包括标识页面几何形状的任何改变的数据,在该页面上排版文本作为标识节点所指定版式的结果。版式节点通过将节点池中的版式节点标识为当前节点来产生。该池中的第一标识节点是空节点。通过将下一文本行的每个可能变体都添加到当前版式节点,新的版式节点从当前的版式节点创建。这样,新的版式节点产生为当前节点加上下一行文本上的每个可能断点。
还可对每个新生成的版式节点计算损失。具有比逐行格式化处理期间所计算的最大损失小的损失的每个版式节点被添加到节点池中。然后从节点池中移除当前的版式节点。在下一轮中,当前的版式节点是具有最低损失的版式节点。该过程重复,直到只有表示整个文本段落的单个版式节点保留在节点池中。
根据本发明一实施例,损失函数被假设为通过定义“可接受排版限制”开始。必须在该限制之外格式化的行被视为是非常差的行,并根据一不同规则集来计算其损失。特别地,如果一行被视为非常差,则其损失基于它引入该页面的空格数来计算。结果,非常差的行具有较大的损失,但是它们损失的增长比不被视为非常差的行的损失慢得多。结果是,在尝试改进其它较差行的质量时不将尚可接受的行转换成非常差的行。这使得该算法能产生甚至在具有狭窄栏的某些较差排版情形中也不溢出右边界的合理版式。
根据本发明另一实施例,通过首先产生文本的逐行段落版式来确定该段落的最大损失,排版过程可得以优化。根据一实施例,通过迭代地逐行处理文本行来定位每一行的最佳可能断点,可执行逐行段落排版。行服务组件可用来提供文本的可能行断点集。而且,可缓存由行服务组件产生的格式化和可能断点信息,以改进段落排版过程期间的性能。还可采用其它类型的逐行算法。
在逐行段落排版期间,损失函数还可用来计算段落中每一行的损失。此外,根据一实施例,可标识在与遵从逐行版式的段落相同页面上的任何图表。该信息可在以后用来确保该段落的另一版式不会使这些图表被挤到后续页面上。
根据本发明另一实施例,通过合并在文本中同一点上结束的版式节点,段落排版过程可得以优化。特别地,确定节点池内是否有节点在文本中的同一点结束。如果版式节点在同一点上结束,则再确定各版式节点的几何关系是否不同于页面上的对象结果。如果各版式节点的几何关系不同于页面上的对象结果,则从节点池中删除在同一点结束的比其它(各)节点具有更高损失的(各)节点。这导致较少的计算,因为没有考虑会导致整个段落的更高最终损失的节点。
根据另一实施例,还可从节点池中移除使得版式的任一图表在逐行排版期间被挤到后续页面的版式节点。性能优化还可通过确定在节点池中是否存在比预定义阈值数量更多的节点来进行。如果在节点池中存在太多的节点,则可从节点池中移除具有最高损失的一些版式节点。这样,排版算法的性能可通过较少节点池的尺寸来改进。
本发明可被实现为计算机进程、计算系统、或诸如计算机程序产品或计算机可读介质的制造品。计算机程序产品可以是计算机可读的并编码用于执行计算机进程的指令的计算机程序的计算机存储介质。该计算机程序产品还可以是计算系统可读的并编码用于执行计算机进程的指令的计算机程序的载波上的传播信号。
参阅以下详细说明和附图,表征本发明的这些和各个其它特征以及优点将变得显而易见。


图1是示出本发明各个实施例利用并提供的计算机系统的计算机系统体系结构图;图2是示出本发明各实施例中利用的若干软件组件的各方面的软件体系结构图;图3A-3D是示出文本的示例性段落和该段落的若干可能段落版式的各方面的框图;图4A-4C和5是示出用于提供根据本方面一实施例的最优段落版式的示例性例程的流程图;图6是示出将图4A-4C和5中所示的例程应用于文本的示例性段落中的框图。
具体实施例方式
现在参看附图,其中类似标号表示类似元件,将描述本发明各方面和示例性操作环境。图1和以下讨论旨在提供一种本发明可在其中实现的适当计算环境的简要一般说明。尽管本发明将在结合运行于个人计算机操作系统上的应用程序执行的程序模块的一般上下文中进行说明,本领域技术人员将理解本发明也可结合其它程序模块实现。
通常,程序模块包括执行特定任务或实现具体抽象数据类型的例程、程序、组件、数据结构、以及其它类型的结构。此外,本领域技术人员将理解本发明可在其它计算机系统配置中实践,包括手持式装置、多处理器系统、基于微处理器的或可编程的电器消费品、小型计算机、大型计算机等等。本发明还可在任务由经通信网络链接的远程处理装置执行的分布式计算环境中实践。在分布式计算环境中,程序模块可被置于本地和远程存储器存储设备中。
现在参看图1,将描述用于实现本发明各实施例的计算机2的说明性计算机体系结构。在图1中所示的计算机体系结构示出常规桌面或膝上型计算机,包括中央处理单元5(“CPU”)、包括随机存取存储器9(“RAM”)和只读存储器11(“ROM”)11的系统存储器7、以及将存储器耦合到CPU 5的系统总线12。包含有助于如起动时在计算机元件间传送信息的基本例程的基本输入/输出系统(BIOS)存储在ROM 11中。计算机2还包括用于存储操作系统16、应用程序和其它程序模块的大容量存储装置14,该大容量存储装置14将在下面进行更详细的描述。
大容量存储装置14通过连接到总线12的大容量存储控制器(未示出)连接到CPU 5。大容量存储装置14及其相关联计算机可读介质提供计算机2的非易失性存储。尽管包含在此的计算机可读介质的描述指向诸如硬盘或CD-ROM盘的大容量存储装置,本领域技术人员应理解计算机可读介质可以是计算机2能访问的任何可用介质。
作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现、用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的易失性和非易失性介质、可移动和不可移动介质。计算机存储介质包括但不限于RAM、ROM、EPROM、EEPROM、闪存或其它固态存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学存储技术、磁盒、磁带、磁盘存储器或其它磁性存储设备、或任何其它可用于存储所需信息并可由计算机2访问的介质。
根据本发明各实施例,计算机2可使用诸如因特网的网络18与远程计算机的逻辑连接在网络化环境中操作。计算机2可通过与总线12连接的网络接口单元20与网络18相连。应理解,网络接口单元20也可被用于与其它类型的网络和远程计算机系统相连。计算机2还可包括输入/输出控制器22,用于接收和处理来自包括键盘、鼠标或电子笔(未在图1示出)的众多装置的输入。类似地,输入/输出控制器22可提供对显示屏、打印机、或其它类型的输出装置的输出。
如上简述,众多程序模块和数据文件可被存储于计算机2的大容量存储装置14和RAM 9中,包括适于控制网络化个人计算机的操作的操作系统16,诸如来自华盛顿州Redmond微软公司的Windows操作系统。大容量存储装置14和RAM 9还可存储一个或多个程序模块。特别地,大容量存储装置14和RAM 9可存储字处理应用程序10。如本领域技术人员所众所周知的,字处理应用程序10可操作,来提供用于创建和编辑诸如文档24的电子文档的功能。根据本发明一实施例,字处理应用程序10包括来自微软公司的MICROSOFT WORD字处理应用程序。然而,应理解,可利用来自其它制造商的其它字处理应用程序来体现本发明的各个方面。还应理解,执行文档排版功能的其它类型的应用程序可用于本发明的各方面。例如,本发明的各个实施例可用于桌面出版程序、演示程序、web浏览器、以及利用文档中文本段落的任何其它类型程序。
结合字处理文档的编辑,字处理应用程序10提供用于在文档24中排版文本段落的功能。字处理应用程序10可与排版管理器26通信,以帮助文档24的格式化,包括文本段落的排版。如以下要更详细描述的,排版管理器26向字处理应用程序10和在计算机2上执行的任何其它程序提供排版服务。特别地,排版管理器26执行以最优方法排版文本段落的算法。有关排版管理器26的操作的其它细节将参照图2-6提供。
现在参看图2,将提供有关诸如字处理应用程序10的客户机应用程序与排版管理器26之间交互的其它细节。如上简述,排版管理器26向应用程序10提供文档排版服务。特别地,应用程序10可与排版管理器26通信,以请求存储在后备存储器34中文档24的各部分的排版。为便于与排版管理器26通信,应用程序10可实现在图2中被示为回调代码32的一个或多个回调例程。通过使用回调代码32,排版管理器26可向应用程序10查询排版文档各部分所必须的附加信息。
如以下将要更详细地描述的,排版管理器26提供用于排版文本段落的实用程序。排版过滤器响应于来自应用程序10的请求提供这些实用程序来排版段落。应用程序10的文档管理器30可与排版管理器26通信,以请求排版段落。文档管理器30还可向排版管理器26提供来自文档的应当排版到段落中的文本和其它内容。文档管理器30开始时可向排版管理器26提供部分内容。然后排版管理器26可从回调代码32请求排版文本所需的附加内容。文档管理器30还可向排版管理器26指明要排版的文本样式。例如,文档管理器30可向排版管理器26指明排版文本所需的字体样式、尺寸和其它信息。
在排版文本段落的过程期间,排版管理器26可利用行服务组件27的服务。该行服务组件27是语言无关的,并可操作以相对单行文本提供服务。特别地,行服务组件27可产生一段文本的可能断点集。可能的断点包括(对西方语言而言)空格字符、连字符、以及在语法上正确的字内断点。行服务组件27还可确定对任何语言而言在哪里可作字符间对齐。根据本发明各实施例,由行服务组件27产生的断行信息可由排版管理器26缓存,以改进段落排版过程期间的性能。
如以下将要更详细地讨论的,由行服务组件27产生的断点信息可由在排版管理器26内执行的损失函数利用,以确定哪些断点以及因此哪些文本段落优于其它。损失函数通过计算段落中每一行的损失来计算每个段落的“损失”。会影响损失计算的因素是与良好对齐机会的数量成对比的分布在行上的空格的数量,或者与压缩机会的数量成对比的要压缩的数量。其它因素可包括该行是否具有连字符、前一行或后一行是否用连字符连接、以及连续各行之间的长度差。可利用的另一因素是特定连字符的“质量”。例如,像字“automobile”的如“auto-mobile”的连字符连接是比“automo-bile”更好的选择。可利用字典来确定一个连字符连接比另一个更好。损失函数还可利用其它因素。
根据本发明各实施例,排版管理器26所利用的损失函数可基于要分析的文本来进行不同的计算。特别地,首先可定义可接受的排版样式限制。可对位于所定义的可接受排版样式限制内的各行计算第一损失。在这些情形中,由先前的断行算法利用的损失函数提供了一个良好的解决方案。然而,对位于合理排版样式范围之外各行可利用第二损失。这些行被视为是非常差的行。该第二损失根据行引入页面的空格来计算。结果,非常差的行具有较大的损失,但是它们损失的增长比不被视为非常差的行的损失慢得多。结果是,在尝试改进其它较差行的质量时不将尚可接受的行转换成非常差的行。这使得该算法能产生甚至在不具有足够对齐机会的某些较差排版情形中也不溢出右边界的合理版式。
一旦排版管理器26以所述方式对文本排版,格式化结果36就被传递回文档管理器30。响应于接受格式化结果36,文档管理器30可操作来更新由应用程序10保持的显示树38。基于对该显示树38的改变,应用程序10可更新其呈现输出40,以向用户显示格式化结果。有关应用程序10和排版管理器26的操作的附加细节如下参照图3-6提供。
现在参看图3A-3D,将描述示例性段落50的各方面。如图3A所示,段落50包括一段文本。在所示示例中,文本仅包括一个句子,但是任何长度的文本可以所述方式进行格式化。还可指定在确定段落50的适当版式时相关的页边52。特别地,通常需要在一行末端和页边52之间留最少量空白的同时避免与页边52交叉。
图3B-3D中所示的段落版式54A-54C示出段落50的许多可能版式中的若干版式。特别地,版式54A和54B是三行版式,而版式54C是两行版式。版式54C被认为是最合适的,因为与版式54A和54B相比每一行留有最少的空白。应理解,许多其它版式是可能的,并且在从众多可能版式中选择最佳版式时可考虑除空白量之外的许多其它因素。
现在参看图4A-4C,将描述示出由排版管理器26执行的用于排版段落的过程的说明性例程400。应理解,尽管在此所述的本发明各实施例在排版管理器26和字处理应用程序10的环境中演示,但本发明可用于其它类型的必须格式化文本行的应用程序。例如,可在电子制表应用程序、演示应用程序、或制图或计算机辅助设计应用程序内利用本发明各实施例。
当参阅在此所示例程的讨论时,应理解本发明各实施例的逻辑操作被实现为(1)运行于计算系统上的计算机实现动作或程序模块序列和/或(2)计算系统中相互连接的机器逻辑电路或电路模块。该实现是取决于实现本发明的计算系统性能要求所作的选择。因此,如图4A-4C所示的以及组成在此所述的本发明各实施例的逻辑操作可被分别称为操作、结构化装置、动作或模块。本领域技术人员将理解,这些操作、结构化装置、动作和模块可用软件、固件、专用数字逻辑、及其任意组合来实现而不背离本发明精神和范围,如在此陈述的权利要求所述。
例程400从操作402开始,其中排版管理器26从客户机应用程序(例如字处理应用程序10)中获得要格式化的文本,包括其属性。例程400然后继续到操作402,其中排版管理器26指导行服务组件27,将整个文本段落格式化为具有无限页边的一行,并在该行内标识所有的可能断点。该行服务组件在操作406上执行该任务,并将格式化结果返回给排版管理器26。在操作404,排版管理器26缓存与该段落相关联的所有格式化信息以及由行服务组件27提供的断点信息。然后例程400从操作404继续到操作408。
在操作408,产生该段落的逐行格式。在逐行段落格式化过程期间,计算该段落的最大损失。此外,可标识包含该段落的页面上的众多图表。如下将要更详细描述地,该信息被用来优化段落排版过程。以下将描述用于执行逐行段落排版的说明性例程500。从操作408,例程400继续到操作410。
在操作410,创建用于存储一个或多个版式节点的节点池。该节点池是配置成将表示段落格式的版式节点存储到备份存储器34中特定点的数据结构。从操作410中,例程400继续到操作412,其中第一版式节点被添加到节点池中。该第一版式节点是空的,并表示零行段落的部分版式。然后例程400继续到操作414,其中当前的版式节点被标识为节点池中具有最少内容的版式节点。然后例程400从操作414继续到操作416。
在操作416,创建新的版式节点。特别地,创建对应于当前版式节点加上文本下一行的每个可能变体的众多新的版式节点。为了产生这些节点,行服务组件27在操作418标识遵从当前版式节点的该文本行的所有可能断点。然后从操作420计算每个新创建版式节点的损失。然后例程400从操作420继续到操作422。
在操作422,每个新创建的排版节点都被添加到节点池中,这些节点都具有比在逐行排版期间计算的最大损失小的损失。具有较大损失的版式节点不被添加到节点池中,因为逐行版式提供比这些节点好的版式,并已经完成了计算。然后例程400从操作422继续到操作424中。
在操作424,确定节点池中的任何节点是否在文本中的同一位置上结束。如果没有两个或多个节点在同一位置上结束,则该例程400继续到操作426。在操作426,确定在同一位置上结束的节点的几何关系是否因为呈现在包含这些节点的页面上的对象而不同。如果该几何关系并没有不同,则可假设有较大损失的节点将使最后的格式化段落也具有较大损失。因此,在这些情形中,具有较大损失的节点可从节点池中移除,并不再作进一步的考虑。
如果在操作428,确定在同一点上结束的节点的几何关系因为页面上的对象而不同,则例程400分支到操作432,如下所述。如果几何关系并没有不同,则例程400继续到操作430,其中从节点池移除具有较大损失的一个或多个匹配节点。然后例程400继续到操作432,其中从节点池移除当前节点。然后例程400从操作432继续到操作434。
在操作434,从节点池中移除将使得版式的任一图表在逐行排版期间被挤到后续页面的版式节点。然后例程400继续到操作436,其中确定是否已经找到了格式化结果。特别地,当在节点池中仅保留表示整个文本段落的单个版式节点时,将定位一格式化结果。如果找到了格式化结果,则例程400分支到操作442,如下所述。否则,例程400继续到操作438。
在操作438,确定节点池中版式节点的数量是否超过了预定数量。如果节点数量未超过节点的阈值数量,则例程400分支回到以上所述的操作414。如果节点数量的确超过了阈值,则例程400继续到操作440,其中从节点池中移除具有最大损失的一些版式节点。这样,这些节点将不作考虑,而计算格式化结果所必需的时间量将减少。从操作440,例程400返回到如上所述的操作414。
在操作442,版式管理器26调用行服务组件27来重建格式化结果中的各行。这在操作444上发生。然后例程400继续到操作446,其中由排版管理器26删除段落缓冲区。行服务组件27在操作448上删除其缓冲区。然后例程400从操作446继续到操作450,在那里例程结束。
现在参看图5,将描述用于执行逐行段落排版的说明性例程500。特别地,例程500在操作502开始,其中段落中的第一行被标识为当前行。然后例程500继续到操作504,其中定位当前行的最佳可能断点。这可通过与行服务组件27通信,并请求该行服务组件27产生该行的所有可能断点来实现。该过程在操作506上进行。一旦已标识所有的可能断点,排版管理器26就可计算每一行的损失,并选择每一行的最佳可能断点。应理解,该过程相对每一行进行,而不考虑来自其它行的损失。从操作504,例程500继续到操作508。
在操作508,确定是否还有其它文本行要处理。如果还有要处理的文本行,则例程500从操作508继续到操作510,其中段落中的下一行被标识为当前行。然后例程500从操作510返回到操作504,其中所述处理再次发生。
如果在操作508确定没有其它行要处理,则例程500从操作508分支到操作512。在操作512,逐行段落的总损失通过累加该段落中每一行的单行损失来计算。该总损失用来消除对版式节点的损失大于逐行段落的损失的可能版式节点加以考虑。
从操作512,例程500继续到操作514,其中在标识逐行格式化之后呈现在与段落相同页面上的任何图表。如上所述,可从节点池中移除使任一这些图表被挤到后续页面的节点。从操作512,例程500继续到操作516,其中它返回到操作410,如上参照图4所述。应理解,图5所示的方法仅是执行逐行排版的一种方法,并且可利用其它方法。
应理解,以上参照图4A-4C和5所述的处理仅排版一个段落。可另外进行多轮在此所述的各个操作,来处理文档所有页面的所有段落。还应理解,图4A-4C和5中所示的处理仅仅是说明性的,其它处理例程可用来排版段落内的各行。
现在参看图6,将描述以上参照图4A-4C和5所述的例程在示例性文本段落50中的应用。特别地,图6示出每一次等待操作后在节点池60中呈现的标识节点62A-62G。开始时,节点池60包括空节点62A。在第一轮之后,节点池60包括表示文本第一行的两种可能格式的版式节点。特别地,节点池60包含版式节点62B和62C。版式节点62B是第二轮的当前节点,因为它包含最少的内容。
在第二轮期间,第二行的每个可能变体被加入版式节点62B。结果,版式节点62D和62E被加入该节点池。节点62D因为它具有比节点62E大的损失而被移除。节点62B因为它是第二轮的当前节点而被移除。节点62E因为它具有比所计算的逐行格式64更大的损失而被从节点池移除。因此,节点62C被选为第三轮的当前节点。
在第三轮期间,第二行的每个可能变体被添加到版式节点62C。结果,版式节点62F和62G被加入该节点池。节点62C因为它是当前节点而被移除。节点62F因为它具有比逐行格式更大的损失而被移除。在第四轮,版式节点62G是最后剩下的节点,并且它表示整个段落50。因此,版式节点62G被选为最优的最适合的段落版式。
基于前述内容,应当理解本发明各实施例包括用于最优段落排版的方法、系统、装置和计算机可读介质。以上说明书、示例和数据提供了对本发明组成的制造和使用的完整描述。因为可作出本发明的许多实施例而不背离本发明的精神和范围,本发明驻留于此后所附的权利要求中。
权利要求
1.一种用于在页面上排版文本段落的方法,所述方法包括从当前版式节点产生文本的一个或多个版式节点,每个版式节点包括有数据,所述数据将段落的可能版式的表示到备份存储中的一点,并标识由版式节点定义的段落排版所引起的页面几何形状的任何改变;产生文本的逐行段落排版以确定段落的最大损失;对每个生成的版式节点计算损失;将具有比该段落的最大损失小的损失的每个版式节点添加到节点池中;从所述节点池中移除当前版式节点;以及重复产生、计算、添加和移除操作,直到只有表示整个文本段落的单个节点保留在节点池中,其中产生所述段落的逐行版式包括迭代地处理文本来定位每一文本行的最佳可能断点,通过累加段落中每一文本行的损失来计算逐行段落版式的损失,标识在执行该段落的逐行排版之后在包含该段落的页面上的任何图表,并从节点池中移除使在逐行排版期间所标识的任一图表被挤到下一页面的所有版式节点。
2.如权利要求1所述的方法,其特征在于,计算损失包括定义可接受的排版样式限制;确定行的损失是否超过所述可接受的排版样式限制;以及响应于确定行的损失超过了所述可接受的排版样式限制,不基于排版样式规则而利用第二损失函数来计算行的损失。
3.如权利要求2所述的方法,其特征在于,计算损失包括标识所述行上的一组对齐机会;确定在可接受排版样式的限制内每一个对齐机会可扩展或压缩的量;计算所述行上可能的扩展和压缩的总量;以及基于所述行的理想宽度、所述行的实际宽度、以及可能的扩展和压缩量来计算损失。
4.如权利要求3所述的方法,其特征在于,产生一个或多个版式节点包括将所述节点池中的版式节点标识为当前节点;以及通过将下一文本行的每个可能变体添加到当前版式节点,来从当前版式节点创建一个或多个新的版式节点。
5.如权利要求4所述的方法,其特征在于,所述当前节点是所述节点池中具有最少内容量的版式节点。
6.如权利要求5所述的方法,还包括确定所述节点池内是否有任何版式节点在文本中的同一点处结束;响应于确定所述节点池内的两个或多个节点在文本中的同一点处结束,确定各版式节点的每一个内定义的几何关系是否不同于页面对象的结果;以及响应于确定所述几何关系不同于页面对象的结果,移除在文本的同一点处结束的比在同一点处结束的其它节点具有更高损失的版式节点。
7.如权利要求6所述的方法,还包括缓存所述段落的格式化信息,以在排版所述段落期间使用。
8.如权利要求7所述的方法,还包括确定在节点池中的节点数量是否超过节点的阈值数量;以及响应于所述节点池中的节点数量超过节点的阈值数量,从所述节点池中移除具有最高损失的一些版式节点。
9.一种具有存储其上的计算机可执行指令的计算机可读介质,所述计算机可执行指令在由计算机执行时将使计算机从当前版式节点产生文本的一个或多个版式节点,每个版式节点包括有数据,所述数据将段落的可能版式表示到备份存储中的一点,并标识由版式节点定义的段落排版所引起的页面几何形状的任何改变;产生文本的逐行段落排版以确定段落的最大损失;标识在执行所述段落的逐行排版之后在包含所述段落的页面上的任何图表;对每个生成的版式节点计算损失;将具有比所述段落的最大损失小的损失的每个版式节点添加到节点池中;从所述节点池移除使在逐行排版期间所标识的任一图表被挤到下一页面的所有版式节点;从所述节点池中移除当前版式节点;以及重复产生、计算、添加和移除操作,直到只有表示整个文本段落的单个版式节点保留在节点池中。
10.如权利要求9所述的计算机可读介质还包括计算机可执行指令,所述计算机可执行指令在由计算机执行时将使计算机定义可接受的排版样式限制;确定行的损失是否超过所述可接受的排版样式限制;以及响应于确定行的损失超过了所述可接受的排版样式限制,基于行引入到页面的空格量而计算该行的损失。
11.如权利要求10所述的计算机可读介质,还包括计算机可执行指令,所述计算机可执行指令在由计算机执行时将使计算机缓存所述段落的格式化信息,以在排版所述段落期间使用。
12.如权利要求11所述的计算机可读介质,其特征在于,产生一个或多个版式节点包括将所述节点池中的版式节点标识为当前节点;以及通过将下一文本行的每个可能变体添加到当前版式节点,来从当前版式节点创建一个或多个新的版式节点。
13.如权利要求12所述的计算机可读介质,其特征在于,所述当前节点是所述节点池中具有最少内容的版式节点。
14.如权利要求13所述的计算机可读介质还包括计算机可执行指令,所述计算机可执行指令在由计算机执行时将使计算机确定所述节点池内是否有任何版式节点在文本中的同一点处结束;响应于确定所述节点池内的两个或多个版式节点在文本中的同一点处结束,确定各版式节点的每一个内定义的几何关系是否不同于页面对象的结果;以及响应于确定所述几何关系不同于页面对象的结果,移除在文本中同一点处结束的比在同一点处结束的其它节点具有更高损失的版式节点。
15.如权利要求14所述的计算机可读介质还包括计算机可执行指令,所述计算机可执行指令在由计算机执行时将使计算机缓存所述段落的格式化信息,以在排版所述段落期间使用。
全文摘要
提供用于最优段落排版的方法和计算机可读介质。根据该方法,产生逐行段落排版以确定一个段落的最大损失。可产生一个或多个版式节点,将表示段落的可能版式的数据存储到备份存储中的一点,该数据还标识由版式节点定义的段落排版所引起的页面几何形状的任何改变。还可对每个新生成的版式节点计算损失。具有比逐行格式化处理期间所计算的最大损失小的损失的每个版式节点被添加到节点池中。该过程重复,直到只有表示整个文本段落的单个版式节点保留在节点池中。
文档编号G06F17/25GK1794222SQ200510126790
公开日2006年6月28日 申请日期2005年11月18日 优先权日2004年12月20日
发明者A·布拉戈, C·E·安曼, S·耿金, E·科亨, V·E·科济列夫, A·A·苏哈诺夫, I·兹韦列夫 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1