CN1008564B - 文字处理及复合字符处理的方法 - Google Patents

文字处理及复合字符处理的方法

Info

Publication number
CN1008564B
CN1008564B CN86103724A CN86103724A CN1008564B CN 1008564 B CN1008564 B CN 1008564B CN 86103724 A CN86103724 A CN 86103724A CN 86103724 A CN86103724 A CN 86103724A CN 1008564 B CN1008564 B CN 1008564B
Authority
CN
China
Prior art keywords
character
print
record
page
printer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired
Application number
CN86103724A
Other languages
English (en)
Other versions
CN86103724A (zh
Inventor
罗伯特·M·卡罗索
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bull HN Information Systems Inc
Original Assignee
Honeywell Bull Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Honeywell Bull Inc filed Critical Honeywell Bull Inc
Publication of CN86103724A publication Critical patent/CN86103724A/zh
Publication of CN1008564B publication Critical patent/CN1008564B/zh
Expired legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B41PRINTING; LINING MACHINES; TYPEWRITERS; STAMPS
    • B41JTYPEWRITERS; SELECTIVE PRINTING MECHANISMS, i.e. MECHANISMS PRINTING OTHERWISE THAN FROM A FORME; CORRECTION OF TYPOGRAPHICAL ERRORS
    • B41J25/00Actions or mechanisms not otherwise provided for
    • B41J25/20Auxiliary type mechanisms for printing distinguishing marks, e.g. for accenting, using dead or half-dead key arrangements, for printing marks in telegraph printers to indicate that machine is receiving
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B41PRINTING; LINING MACHINES; TYPEWRITERS; STAMPS
    • B41JTYPEWRITERS; SELECTIVE PRINTING MECHANISMS, i.e. MECHANISMS PRINTING OTHERWISE THAN FROM A FORME; CORRECTION OF TYPOGRAPHICAL ERRORS
    • B41J3/00Typewriters or selective printing or marking mechanisms characterised by the purpose for which they are constructed
    • B41J3/01Typewriters or selective printing or marking mechanisms characterised by the purpose for which they are constructed for special character, e.g. for Chinese characters or barcodes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/111Mathematical or scientific formatting; Subscripts; Superscripts

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Linguistics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Mathematical Physics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Record Information Processing For Printing (AREA)
  • Dot-Matrix Printers And Others (AREA)
  • Document Processing Apparatus (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

一种在文字处理系统中的同一字符位置上通过多重打印两个或多个字符以打印出复合字符的方法,该方法可以利用输出装置的字符组内找出的单个图形字符产生复合的图形字符。该方法在打印形成该复合字符的单个字符之间为打印头提供垂直的和/或水平的位移。

Description

以下所引述的专利申请与本申请具有相关的主题并与本申请转让给同一受让人,其内容结合在此作为参考,该美国专利申请的名称为“文字处理及文本排版方法”,发明人是Robert    M.Carosso其申请号为
本发明涉及一种进行文字处理的方法,具体地说,涉及一种操作并输出复合字符的方法。
其它的文字处理系统也能够由一个操作者向该系统输入文本,对文本进行编辑和修改,然后用一个输出装置打印该文本,该输出装置可以是一个点阵打印机,一个字母式打印机,一个行式打印机或是一个激光打印机。这些输出装置中绝大多数都可在打印一行信息时产生一组固定的字符。这种字符组被称为字根,它们依赖于特定的装置,一个打印机在它的字根内可以有129个字符,96个字符,或其它预定数目的图形字符。在这些字根中通常可以发现不同的标点符号以及大写和小写字母和从1到0的数字。
由于这些输出装置在它们的字根内的字符数目有限,经常会发生在一个输出装置上打印文件时,该输出装置的字根内没有所需要的一个特殊的图形符号。这种情况可发生在用一个标准的美国字符组来输出一个某些字符上带有注音号的外文文件时。在这种情况下,经常是在该输出装置的字根中有所需要的所有图形字母并且它们都被使用,而且该字根中还可能包括一个可用作注音符号的标点符号。因此,字母和注音符号均可打印在同一位置上,以便在输出文件中可产生出所需要的有注音符的字母。至少一个已知的系统表明可提供这种能力,它使操作者能够先输入一个字符,随后退一格再输入第二个字符,例如为了打印一个其上有注音符的A,操作者先输入A,然后退一格,然后再输入注音符,这样将在输出文件中打印出一个其上有注音符的A。
这种方案虽然在某些情况下可行,但并非在所有情况下一定可行,甚至可能产生完全不希望的结果。例如,人们可能希望在一个大写的A之上较高的垂直位置上有注音符而在同一行内的一个小写的a之上的一个较低的垂直位置上有注音符。与此类似,例如,当所用输出装置的图形符组号中仅包括句号而不包括冒号时,若希望在打印的文件中产生一个冒号,该方法将不允许在一个句号之上较高的垂直位置上打上另一个句号以产生一个冒号。
因此,所希望的是一种改进的方法,利用该方法可通过在同一字符位置上重打上两个或多个字符以产生一个复合的或合成的字符。
该方法利用输出装置的字符组中的单个图形字符,将使输出装置中的有限的一组字符能够用于产生复合的字符。
因此,本发明的一个目的是提供一种方法,用两个或多个现有的字符构成新的字符来扩展一个输出装置的有限的字符组。
本发明的另一个目的是提供一种产生复合字符的方法,该方法允许一个复合字符的单个分量字符之间的水平定位。
本发明的再一个目的是提供一种产生复合字符的方法,该方法允许一个复合字符的单个分量字符之间的垂直定位。
本发明的再一个目的是提供一种处理复合字符的方法,该方法不依赖于将要打印这些字符的特定输出装置。
本发明的再一个目的是提供一种处理复合字符的方法,该方法使处理时间为最短。
本发明在以下所附的权利要求书中具体限定。结合附图参阅以下说明可以理解本发明的上述的以及进一步的目的和优点。
本发明用一个输出装置的字符组内现存的字符来合成复合字符,该方法包括一个预定的字符变换表,该表可用于将一个输入字符与一个或多个输出字符相映射。字符变换表包括为使输出装置打印头在单个字符的打印之间进行的水平和垂直位移所提供的信息。字符变换表还包括字符宽度和打印密度信息。当利用字符变换表将输入字符变换为输出字符时,在字符的每一复合分量中都设置一个指示以表示除了第一个分量外其它的分量都只是一个复合字符的一个分量。这就允许一个复合字符包括两个或多个单独的分量,它们由文本处理程序作为一个单个字符来操作。
本发明的方法的实施方式和制作本发明的装置的方式及其工作方式可在以下结合附图进行的详细描述中得到最好的理解,在几张附图中相同的参考号表示了相同的元素,其中:
图1是一个能够执行文字处理程序的现有技术的硬件系统示意图。
图2是一个文字处理程序的打印程序流程图。
图3是图2的打印程序所用的纵栏程序的流程图。
图4是图3的纵栏程序所用的校对程序的流程图。
图5是图4的校对程序所用的扩展分布的流程图。
图6是图2的打印程序所用的字符变换表的方框图。
图7是图2的打印程序所用的链式栏信息块(CIB)的方框图。
图8是应打印的正文及其对应的文件正文缓冲器的一个实例。
图9是对应于图8中的实例在校对前的字符记录链。
图10是图9中的实例在校对后的字符记录链。
图11是与图10中字符链的实例相对应的链接排除输出信息块。
现代文字处理机给用户提供了一种十分有力而又使用简便的工具,操作员可以用它建立、修改、贮存和打印任何种类的打印信息或资料。
硬件结构
图1表示一种典型的现有技术的硬件结构,它可以执行包含本发明的文字处理程序。图1的硬件系统可以是一个个人计算机、小型计算机或是大型计算机,这对本发明没有影响。图1的硬件系统可以用于建立和印制资料。
为了建立资料,操作员要使用键盘103,该键盘与打字机的键盘相似。资料的每一页都在一个象电视一样的屏幕或监视器101上显示出来,这就使操作员能够看见在印到纸上以前被打字的内容。如果操作员造成错误,他就可以返回来重打一遍,而无需使用修正带或擦除装置去改正差错。文字处理系统自动地将资料的正文对齐,当正文正是所需要的内容时,就用文字处理系统将资料在打印机109上印出来。在印制前,资料被作为文字处理文件保存在可以贮存它的磁盘107上,如果需要该资料或者要修改并进行打印,可以过后予以印制。文字处理程序本身在中央处理机105中执行,105即包括算术逻辑运算部件也包括主存储器。
典型的文字处理系统可与各种式样的打印机配套。最佳实施方案的文字处理系统可以配用行式打印机、陈列打印机以及字母质量打印机,字母质量 打印机使操作员能够选择不同形式的资料打印外观:十、十二或十五个间距,或者成比例间隔的形式。另外,这些打印机一般都可以配装各种规格的纸,可以是单张或是连续形式以及封皮。
典型的文字处理系统为制作和控制资料输入和印制提供了各种操作及性能。最佳实施方案的文字处理系统借助使用菜单指导操作员进行整个文字处理操作。在监视器101上,菜单呈现为一个选择表,文字处理系统使操作员能够决定那一项操作是所需要的,并让操作员利用键盘103进行适当的回答。借助这些菜单,操作员从一开始就控制资料的建立以及修订步进,直到最后印出副本。在较佳实施方案的文字处理系统中,采用本发明的打印程序提取贮存在磁盘107上的文字处理资料,并在打印机109上输出以前对它进行编排。
编辑和打印功能
最佳实施方案的文字处理系统可以分为两个基本的功能,编辑功能和打印功能。编辑功能靠编辑程序实现,而打印功能靠打印程序实现。在编辑程序开始时,就显示出一个菜单,使操作员可以开始建立、编辑或修改资料。在打印程序开始时,也显示出一个菜单,使操作员能够选择各种打印功能。
在最佳实施方案中:在菜单上的每个功能都被编号。在菜单底部的选择字段内适当的位置有一个闪亮的光标,该光标总是表示操作员正在菜单上进行选择或正在进行正文打字时在屏幕上相应的位置。在操作员打字时,光标位置即指示下一个字符将在屏幕(即监视器101)上要显示的位置。在菜单上的选择字段内,操作员只需简单地按下他要执行的功能的编号。
每次操作员显示文字处理菜单时,在屏幕上显现的大部分回答字段都包括缺省的回答,这节省了操作员的时间,否则还要完成整个字段的操作。每个缺省都被认为是响应于每个回答字段的最一般的用户。操作员可以承认缺省回答或在必要是对它进行修改。
编辑程序
操作员使用编辑程序去建立或修改资料。一分资料是一页或多页正文,且操作员已给资料命名。操作员必须给资料命名,以便过后当操作员要对它检索以再进行编辑或打印时,文字处理系统知道要检索的是哪一份资料。
在该系统中,对每一个被建立的新资料都要提供资料摘要,用资料摘要进一步识别操作员将要打字的新资料。在资料摘要中大部分回答字段都呈现为缺省值。这些回答字段包含资料打印的具体指示。在开始打印资料时,可以在建立或修改资料的时候改变这些回答字段。
a.状态和格式行
在最佳实施方案的文字处理系统中,在屏幕的顶部显示有两行字符,它们是状态行和格式行。每当操作员打字或编辑一个资料时,它们总是在屏幕上显示出来。状态行显示出操作员正在观察的资料名称,并且告诉操作员在资料中光标的位置、页号、行号以及在行上的栏的位置。
在状态行下是格式行。该行指示出操作员已选定的标记(tabs)的位置以及该页正文的行长,很象打字机的功能。格式行确定标记、dectabs以及右部边界(当需要右对齐时)的位置,还确定用于打印留空的专用线的位置。该格式行在状态行的下方显示。调节字符间隔的线表示行间的间隔,1表示单间隔,2表示双间隔。标号字符表示在纵栏的不同部位处所确定的标记的位置。返回字符或字母J可以用以表示右部边界。在打印过程中,字母J被用来规定在格式下边正文右部对齐的位置,这与在资料摘要或打印菜单上是否已选定对齐位置无关。
b.资料文件
每当使用最佳实施方案的文字处理系统建立资料时,在磁盘107上就产生资料文件。该资料文件包含三种形式的信息。它包括资料摘要信息,其中还包括由打印程序用于控制资料打印的信息。它包括资料正文本身,它可以包括插入在它里边的指示那些字行需要缩进一、二字的信息以及指示正文的各个部分的上标或下标、正文归中等各种格式信息。该资料文件还包括格式记录(行),它指示用于使正文在各页上对齐的格式。
c.格式行
当操作员建立一个资料时,一个预定的缺省格式行被抄入资料文件中。这个起始格式行包含被规定为该装置的最一般的位置的定位。但是操作员可以改变这些格式,以适应它们每一个资料的专门的需要。操作员也可以在他们打字或编辑资料时,在正文中他们需要的任何位置建立新的格式行,可以在一页上的任意两行之间或在一页的第一行之前建 立格式。建立格式的任何改变都只影响与它们有联系的那些资料。改变在文句内的格式行只影响在该格式行以后直至遇到正文内下一个格式行之间的正文。
如上所述,格式行能够控制资料的间隔。在最佳实施方案的文字处理系统中,行的分隔可以被确定为四分之一间隔、半间隔、无间隔(复打印)、单间隔、一个半间隔、双间隔或三间隔。在打印资料时,空格行对资料也有影响。在屏幕上的显示总是呈现为单间隔。
格式行标记的定位可以用于改变在一行中正文的水平位置。在格式行内右部边界的定位,可用于确定在一行中最右边的那个字符的纵栏所需的位置。格式行也可以用于对右端对齐进行限定,在打印出资料时形成整齐的右部边界。在打印输出过程中,由包括右端对齐指示器的格式行控制的所有正文,在打印时其右端及左端边界都是对齐的。利用dectabs对位字符上述格式行也可用于对编号或名称栏对位,dectabs对位字符可以是小数点、逗号或者冒号。
操作员可以在资料正文内任何位置设置一个新的格式行。例如,如果操作员正在对一个表格打字,该表格需要一些专门标记的位置,而操作员又不愿意改变当时的格式行的位置;此时操作员就可以为表格制作一个新的格式,并且在完成该表格时建立另一格式行,以便回到原来位置。
d.文字衔接(Wrap)
最佳实施方案的文字处理系统具有一种文字衔接性能,它可以使操作员连续打字而无需担心各行的末尾。当操作员打印到一行的末尾时,该系统会自动地将光标及正被打字的字(不安置在该行)移到下一行左部边界处。
e.要求间隔
一个所要求的间隔就是一个专门的间隔字符,该字符位于文字衔接界限以外。位于所要求的间隔的两侧的字或字符,在右端都不会被文字衔接性能分开。操作员靠打入所要求的间隔,可以保证正文中的两个或更多的专门的字(或字符)继续留在同一行上。例如,日期1985年11月19日(November    19,1985)可以通过文字衔接在“11月”和“19日”之间分开;如果操作员在这两个所要求的字之间设置一个间隔字符,则文字衔接就决不会将“11月”和“19日”分到两行中;如果操作员希望将这个保护作用扩展到“1985年”,他就可以在逗号和“1985年”之间打下另一个所要求的间隔。
在扩展右对齐功能时,一个所要求的间隔即被视为是一个正常的非间隔符。如果在字符之间发生扩展,所要求的间隔将随着字符的其余部分同时扩展。如果在文字(即在间隔上)之间发生扩展,此时所要求的间隔将不扩展。
f.格式化正文的输入
在输入正文时,可以象在打字机上一样使用键盘103上的标记键。每次操作员按下标记键时,标号字符就在正文中置位,并且同时在屏幕上显示出来。光标跨移到该格式行的下一个标记位置。如果在光标位置和右部边界之间没有保留的终止标记时按下标记键,则标记字符就被置位在下一行的第一栏中,并且光标移动到该行的第一个终止标记处。在输入正文时,操作员使用归中键将正文(如标题)归在一行的正中。该系统可以根据在格式行内确定的边界计算出行的中心位置。当按下对中键时,对中字符就在正文中置位,并且在屏幕上显示出来。集中于边界以内的正文的末尾可利用返回键予以确定。
在进行数字栏打字时,例如若用小数点的话,操作员用dectabs键将小数标记字符排齐。在格式行中,小数点与相应的标记位置对准。如果数字没有小数点,则该系统呈现为小数点在数字的右边出现,并且与该数字排齐,好象实际上打了一个小数点一样。
在输入正文时,操作员使用上-下标键指示正文中上标和下标的位置,进行上标和下标字符打字,并且在屏幕上正文中操作的相应显示点显示出字符。以此来命令打印机从正在打印行期上或期下移动一行的三分之一,于是在被打印的资料中建立出上标或下标。每个带上标文本都应该跟随着一个下标字符,反过来也一样。这就可以保证其余的正文返回到基本打印行。仅在印制过程中给正文加以上标或下标,并且不在屏幕上呈现同样的显示。在屏幕上打印出连续的下标字符,即将打印机在纸上向上移动一行的三分之一。对于每个打入的上标字符,正文中都必须跟随着同样数字的下标字符。
g.多栏打印
最佳实施方案的文字处理系统可以进行多栏印制。多栏印制允许操作员在打印纸上的一面上边靠边地印制两个或更多的正文栏。当以多栏的格式印制资料时,在打印纸的一面上每页资料就是有个栏。 任何资料都可按多栏格式印制,但是多栏的作用是通过在打印纸的一个(实际的)面上安排两个或更多的资料的(逻辑上的)页实现的。例如,如果操作员以两个栏的格式打印资料的1到4页,则实际上只打印两张纸,资料的1和2页打印在第一个双栏页上(1页在左栏,2页在右栏),资料的3和4页打印在第二个双栏页上(3页在左栏,4页在右栏)。
如果在每页资料的格式行中,右部边界没有适当地调整(过窄),其结果则无法预料。因此,在打印一分资料之前,应对该资料进行适当的筹划。在准备以多栏形式打印资料时,操作员应注意到如下规则:
1.将格式行的右部边界调整到该栏的宽度。在实际的打印纸面上,每页资料只是一栏。
2.在每页资料上的行号不必是相同的。在多栏印制的过程中,当一个页字符在一个栏(逻辑页)中冲突时,在该栏中不会再打印,其它栏则继续印制。当页字符在最长的栏中遇到时,该多栏的印制即告结果,并且开始印制下一个多栏页。
3.控制一分资料中具体某一页的格式行,也控制其相应栏的格式。
4.多栏页印制可以与单栏的印制页结合一起进行,其方法可以是加宽代表最左侧栏的页中格式行的右部边界,并且制作代表另外栏的空格的页。
5.带有头和尾的页的宽度应与纸的宽度配合。
分段及边界对齐性能使操作员能够在多栏印制的资料中击入专门的代码,以使得在印制资料时将正文的各段或其他部分在该页上依水平方向对齐。
h.页首(Header)和页尾(Footer)
根据资料的类型,经常需要在印制的每一页的顶部或底部印制规范的信息。利用页首和页尾的功能,操作员就能自动地在一分资料的每一页上或所选定的连续的一些页上打印出这样的信息:章或节的题目,铅字条相应的注解以及页号。该最佳实施方案的文字处理系统允许每分资料有一个页首和一个页尾。
i.脚注
该最佳实施方案的文字处理系统具有一种性能,不需要在各页的底部打印上作为参考的脚注,而是将它们都打印在一个单独的参考页上,且在印制过程中脚注自动地印在正确页的底部。一个脚注引用可以包括一个到三个字母数字字符,这些字符标识出要加以脚注的正文。在印制资料时,脚注引用及脚注正文的标识符都作为数码被印出。
j.其他打印选择
除了使操作员能够控制以多栏格式印制资料的指令以外,在输入资料时还可以应用专门的键序,它表现为在打印过程中的资料正文中的格式信息,以调入专门的字符打印。这些专门的印制选择包括黑体打印,即使每个字符打印两次,以造成加黑的外观;偏移打印,即在稍微偏移的位置上将字符打印两次,造成打印的黑影;复(overstrike)打印,即在任一个字符上打印一个斜线字符,以及在正文下边划线以强调重点的快速方式,以使操作员不必用手再去做这项工作。
打印程序
一旦操作人员建立完一个资料或者编辑完一个现有资料时,他就可以退出编辑程序,然后再进入打印程序把资料打印出来。
当一个资料被建立起来并使磁盘107上存在一个文字处理资料后,操作人员就可以使用文字处理系统中的打印程序在打印机109上打印这个建立起来的资料,操作人员可以在字母质量打印机、高速行式打印机或者点阵式打印机上打印出该资料,这取决于文字处理现场所具有的具体设备。
a.打印菜单
打印操作开始以后,监视器101显示出一打印菜单。这个菜单允许操作人员根据要打印的具体要求修正打印指令。该菜单允许操作人员指定下列信息:要用的打印机;每页的拷贝数;正文打印开始和结束的页号;封页打印开始和结束的页号;栏数;左边栏的边界;页式打印的第一个页号;纸的长度;头部和尾部的打印位置;连续脚注打印的起始号码,间距(每英寸10、12或15个字符);馈纸选择;每英寸行数选择;右边整版;试样打印;打印正文中的注释;打印文件概要及合并打印。要打印的文件的名称出现在该打印菜单的顶端。上述打印菜单中的信息区中还含有缺省值,这些缺省值允许操作人员既可以接受屏幕上的打印菜单,又可以改变上述的参数表。
b.打印程序流程
打印程序的总流程是输入-处理-输出的过程。首先,打印程序从存贮在磁盘107上的文字处 理资料接受资料正文和有关正文的信息;然后,打印程序把这个正文转换成一种规范的、或者说标准的格式,以便于用不受正文源和输出终端制约的同一内部处理程序对它加以处理。上面的输出终端也就是指打印上述正文的特定类似的打印机。最后,打印程序把处理完毕的规范格式的资料传送给一个合适的与终端有关的输出程序,这个程序被设计成把规范格式快速转换成特定的输出装置(打印机)所要求的格式。
图2中示出了打印程序的主程序,该程序控制打印程序的总流程。
这个主程序如下:总初始化、预置打印机特性(Profile)、预置字符转换表、产生格式馈送、打印文件概要、复制循环、合并打印、输出程序、消除并退出状态程序。
在总初始化期间,各种错误指示符、状态指示符均被初始化、输入文件和输出设备也被初始化。输入文件指定打印出哪个文字处理资料,输出设备指定在哪个输出设备上打印出上述资料。上面的输入文件和输出设备由使用打印菜单与操作人员进行的人机对话来确定。一旦输出设备确定之后,就可以从字符变换文件装入要使用的特定打印机的字符变换表(CMT)。文字变换文件包括本系统内具有的每种打印机的字符变换表。在初始化期间还建立起一个打印控制程序块,打印程序使用这个程序块来控制资料的打印。表1示出了打印控制程序块,其中的一些信息是从把资料打入系统时建立的文字处理文件中的资料概要中得到的。如果需要的话,操作人员可以使用打印菜单对信息进行更改。
表1
打印控制程序段(P~B)
输出设备的逻辑资源号(LRN)
拷贝数
栏数
要打印的第一页
要打印的最后一页
最后合并页
要打印的第一封面页
要打印的最后封面页
文件总页数
总合并页
起始页号
栏左边的边缘列阵
纸长
每页上的首行起始位置
每页上的首字起始位置
每页上的末行起始位置
每页上的末字起始位置;
起始脚注号;
水平移动索引(HMI);
垂直移动索引(VMI);
打印机种类;
馈送顺序;
字形;
比例打印标志;
右边整版标志;
试样拷贝标志;
注释打印标志;
文件概要打印标志;
合并打印标志;
记录处理用的格式资料标志;
记录处理用的表列资料存在标志;
缩写文件标志;
文字处理临时资料标志。
操作人员使用打印菜单可对打印控制程序块中的各种参数进行更改。最佳实施例中的打印菜单中的这一项目可允许操作人员指定下列参数:
a.打印队列名
在一个文字处理系统中,每个打印机都被赋予一个特定的队列名。缺省打印次序在操作人员登记时就已确定。缺省打印队列字段中的名称指定了打印资料的(输出设备)队列。操作人员用其它有效的打印队列名重打缺省打印队列就可以对它进行更改。如果其它资料正等待使用同一输出设备,则要打印的资料必须等待。
b.拷贝数
这个字段指定待打印的资料中操作人员所期望的每页资料的拷贝数。操作人员可以要求1到63张拷贝。
c.正文打印的起始、终止页
这个三位数字组成的字段指定了资料中开始打印和终止打印的页号。如果操作人员指定从0页打印到999页,那么所有的页都将打印出来;如果操作人员指定从第3页开始打印到第3页,那么只有第 3页才被打印出来。
d.封面打印的起始、终止页
这个三位数字字段指定了封面打印的起始和终止页号,其情况和正文打印相同。
e.栏数
这个字段能使操作人员指定一页上打出的栏数(实际上就是资料页数)。最多可指定打出九栏。
f.左边边缘的设定
这些值表示从纸的左边边缘到被打印的页上每栏开始处的距离。最多指定左边有9个边缘字段。这能使操作人员在一页上最多可打出9栏,并指定定栏的起始位置。
g.第一页页号
这个字符段用于进行自动编页。它指示本系统从这个页号开始在每页的上边或下边对页进行编号。
h.纸长(行数)
这个值指定了将在其上打印资料的纸的尺寸。打印机在每英寸上打出6个单间隔行(每11英寸66行)或者8个单间隔行(每11英寸88行)。
i.页首头起始位置/页尾起始位置
这些字段在资料第1页上指定了打印页首或者页尾的位置和每页上行的起始位置。
j.页尾起始号
这个字段允许操作人员为资料中顺序偏号的脚注指定一个起始号码。
k.间距
1表示每英寸10个字符,2表示每英寸12个字符,而3则表示每英寸15个字符。
l.馈纸序列
在这个字段中打入一个回答S,将使打印机在每打完一页后停机,并允许操作人员插入一张新纸回答S一般用于人工单张纸式打印机。如果在这个字段中打入一个C,则通知打印机在连续形式的纸上或在切割式馈送机纸上连续打印各页。这个字段中的下列回答(L,1和2)是对两重或三重匣式供纸器而言的,这些供纸器从一个或二个供纸匣中连续不停地供给单张纸张,一次一张。L-回答指示该系统从1号匣中送出第1页、从2号匣中送出剩余的页。1回答指示该系统从后匣中送出纸张而2回答则指示系统从前匣中送出纸张。
m.每英寸行数(6或8)
这个字段允许操作人员指定在每英寸纸上打出的行数。
n.右边对齐
当操作人员指定右边整板后,每行上字符的排布将使打印出的资料除了有一个整齐的左边边缘之外,还有一个整齐的右边边缘。有了右边整版选择,一旦某一页上最后一行以一个页字符(不是回车)结尾,那这一行就会被调整为和右边对齐(用把前面的字符间隔开的办法)。正文中位于指示右边整版的格式行以后的任何行,在印刷期间都将会加以右边整版处理,而不管打印菜单中是否选择了右边整版。
o.试样拷贝
这个字段允许操作人员得到一个作为试样或最终拷贝打印出来的资料。如果操作人员选择于试样拷贝,标在资料中格式行上的行间距将会加倍。例如,指定单间距的格式行将会在试样拷贝中打印出双倍间距。
p.打印注释
这个字段指示出打印输出要不要包括打在资料的注释。
q.打印资料概要
这个字段指示出操作人员是不是希望资料概要的拷贝和资料一起被打印出来。
r.输入合并资料名
当合并打印一个格式资料时,这个字段用来指定所用的合并资料的名称。合并打印允许操作人员进行自动文字重复书写。为了实现这个目标,操作人员建立两个资料,这两个资料一旦指定按标准格式文字打印出来时将被合并。这就叫做“格式资料”。然后,把所有的名称、地址和其它有用信息统统打入一个叫“合并资料”的资料。如果所用的设备有能力打印封面页,那么,操作人员还可在封面上合并打印地址。在合并打印这两个资料时,有用信息将插入格式资料中。这个格式资料将被连续地打印出来,直至合并资料中的所有有用信息用尽为止。
打印程序流程
打印程序的总层次框图流程图示于图2。打印程序被字处理系统调用之后,进入程序块201,该处理系统具有指示要被处理的文字处理文件的指示字,程序块201进到程序块203,后者执行打印程序的总初始化。
在程序块203中,进行各种初始化来建立数据结 构和打开通向文字处理文件的通路。这种初始化还包括建立程序控制程序块(PCB),该程序块示于表1,其参数来自要处理的资料的文字处理文件中的资料概要和打印概要记录。
而后进入程序块205处理打印菜单。通过与打印菜单对话,操作者可以规定或改变用于打印出文字处理资料的各种参数。在程序块205,进行一次检查,看合并资料是否要被打印出来,如果是,则合并文件被打开,概要记录被读出。还要进行一次类似的检查,看封面页是否要打印出,如果是,则建立起PCB中的项目。这时,也进行与输出设备的初始化有关的各种操作。这些参数初始化功能包括:决定供给顺序、比例打印和字根形式,并将结果存在打印控制程序块中以备以后使用。
利用来自要被打印出的文字处理资料文件中的信息对表1中的打印控制程序块进行初始化,该信息具有打印菜单中操作者输入的参数,它包括控制打印的大部分信息,例如字根,左边的空白处,纵栏数,在什么页上打印,间距,每英寸的行数,文件类别等。一旦被初始化,PCB中的大部分信息在资料的打印中保持不变。
PCB中的两个重要参数是水平移动指数和垂直移动指数。水平移动指数(HMI)和垂直移动指数(VMI)在程序块205中计算,以备以后将页长,页首行,页尾行左边空白转换成基本单位时使用。
一个基本单位定义成输出设备的打印头或其它输出媒介在软件控制下能移动的最小水平或垂直距离。HMI被定义成特定输出设备的标准字符宽度中的水平基本单位的数量。VMI被定义成特定输出设备的标准的高度中垂直基本单位的数量。HMI和VMI都存贮在PCB中,并且很容易为打印程序所用。
使用打印机基本单位是因为它们是各种打印机的唯一通用单位,并使打印程序中的子程序与要打印文件的特定的打印机无关。在最佳实施例中,行打印机的水平基本单位是1/10英寸,垂直基本单位是1/6英寸。点阵打印机用于15间距模式时,水平基本单位是1/15英寸,用于12间距模式时,水平基本单位是1/12英寸,用于10间距模式时,是1/10英寸,其垂直基本单位1/48英寸,字母质量打印机的基本单位是1/20英寸(用于比例或非比例模式并与间距无关),其垂直基本单位为1/48英寸。具有精确的基本单位的打印机比只有粗略的基本单位的打印机的输出质量要高。这是因为在纸上有更多的能放量字符的地方,因而可更准确地完成诸如右侧对齐、集中和输出复合字符等功能垂直定位功能(例如:上标、下标和输出字符)。一个复合字符是在同一字符空格中,尽可能利用字符打印间的水平或垂直偏移多次打印两个或更多个字符。
这时,在程序块205也建立起设备信息块(DIB)。DIB包括输出打印机的专用信息。例如:目前在纸上的垂直或水平位置,已排入设备中但尚未打印的行的表,打印机上所能得到的最大垂直位置(可以随送纸器或纸张规格的不同而改变),从最后写入时刻起通过的纸张数,已经写下的数,以及各种标识。初始标识表示打印机是否已起动,TFED标识表示打印头下是否已有纸,RECON标识表示设备已重新连接上,YESREC标识表示可与此设备重连多次,SHFT标识表示打印机是否处在移出状态,ENDFLI标识表示是否遇到文件的末尾。
程序块207对字符变换表(CMT)初始化。字符变换表的实例示于图6,这些表是根据字符变换文件设量并填写的。每个打印机的每种字形有一个字符变换文件。字符变换表用来将编码的正文字符从存贮在资料文件中的字符表达式变成字符码,这些字符码是起动要用来打印资料的特定输出装置上的相应字符图形所需要的。字根名称以及打印机类型从打印控制程序块中获得。字符变换文件由一实用程序建立,该程序以容易使用的文字处理资料的形式读字符变换资料并将它们变成打印程序能更容易进行的表格。为处理字符变换资料,需要读数百次实用程序记录,但只需读几次字符变换文件来装入字符变换表。因此,通过执行打印程序以外的这一功能,大部分处理工作是每种字根作一次而不是每一打印资料做一次。
图6所示的字符变换表包括两组表格。第一组表格将内部资料字符码变成打印机输出字符码以及字符要打印的垂直相对位置和水平偏移。第二组表格将输出字符码变成打印密度和输出字符宽度。字符变换表使得编辑程序输入的资料中的一个单一字符导致在被打印资料上打印多个字符,这是利用复合字符完成的,其中,在字符中每一复合层打印一个字符。下面将会清楚地看出,在资料中被编码成字母A且带有一重音符号的字符可以这样打印出来,即先打字符A,然后在其上打重音符号,此重音符 号根据被打印A是大写还是小写来确定垂直偏移。
如图6所示,字根中规定的每一复合字符层有3个表。资料字符至打印机输出字符变换表(表603,609,615)将用于规定由操作者输入的字符变换成由特定打印机识别的字符码,以产生期望的图形。每一复合字符层的第二个表(表605,611,617)是可选择的字符垂直偏移变换表,如果存在的话,它指示在打印所期望的图形之前,打印头要上下移动的垂直偏移。每一复合字符层的第三个表(表607,613,619)是可选择的字符水平偏移变换表,如果存在的话,它表示在打印所期望的图形前,打印头要左右移动的水平偏移。
图6示出了变换表指示字符块601,它规定了三个复合层。第一层有输出字符码表603,垂直偏移表605和水平偏移表607,表2有输出字符码表609,垂直偏移表611和水平偏移表613,表N有输出字符码表615,垂直偏移表617和水平偏移表619。图6所示的范例字符变换表能将键盘码0-254变换成一个输出字符,其字符码255被保留下来以便指示键盘码将不变成字符。例如,此255码用于表603中的项254以指示键盘码将不打印一个字符。此255码也用在复合层2-N中以指示在此层中无复合字符存在。例如:键盘码44是一个ASCII逗号,它在2层(表609)或N层(表615)中没有复合字符,而码4在第2层(表609)有一个复合字符,但在N层(表615)没有复合字符。而码5在2层(609)和N层(表617)中有一项。
如果用于打印资料的特定输出设备有一个常规字符组和一移出字符组,输出字符码表中的一位表示它是一个常规字符还是移出字符。如果用于打印文件的特定输出设备没有进行垂直偏移的能力,垂直偏移表可以不存在。同样,如果此特定输出设备不具备水平偏移的能力,水平偏移表可以不要。
CMT指示字符块除了指示字符-字符变换表(该表规定输出码以及垂直和水平偏移)外,也指示输出字符码表,该表包括规定敲击输出字符的锤击密度和输出字符宽度。
把字符码从存在文字处理资料中的码变成打印机使用的码的过程包括首先使用资料(键盘)字符码作为进入输出字符码表,输出字符垂直偏移表和输出字符水平偏移表的索引,以对一个复合层检索输出字符码,垂直偏移和水平偏移。而后输出字符码可用来引入输出字符锤击密度表(621)以便检索敲击输出字符的密度,输出字符码也可用来引入输出字符宽度表(表623)以检索输出字符的宽度。此过程对文件码的每一复合层都重复进行。
例如,资料码5用来表示其上有一个重音符号、其下有一个逗号的大写字母C,如果对复合层1该资料码5从表603中产生一个输出码67,从表605中产生一个垂直偏移码0,从表609中产生一个水平偏移码0(当把输出字符码作为锤击密度表621的索引时,这将从表623中得到锤击密度为3以及10个基本单位的字符宽度),则复合层2将产生输出字符码96(表609中的一个重音符号,表611中的垂直偏移2和表613中的水平偏移0)、锤击密度1和6个基本单位的字符宽度0。复合层N将产生垂直偏移为-1,水平偏移为1的输出字符码44(逗号)、锤击密度0和2个基本单位的字符宽度
资料码被翻释,从每一复合层中检出的信息存在字符记录(CR)中,CR是字符的双向链接表,CR中包含的信息被规定在表2中。
表2
纵栏信息块(CIB)
指向下一个纵栏信息块(CIB)的指针
纵栏号
逻辑页面号
页面记录键
指向现行正文记录的指针
进入到现行正文记录中的偏移
指向现行格式记录的指针
(行宽,标记停止,现行行间隔)
指向字符表的起始的指针
指向最近衔接点字符记录的指针
指向字符表的末尾的指针
当前垂直位置
当前水平位置
底线标记
黑体打印标记
阴影打印标记
复印标记
逻辑行标记的末尾
段对齐等待标记
逻辑页面标记的末尾
在一条字符链中的一个字符记录,除去该链中 的指向NIL的最后的字符记录以外,包括一个指向该链中的下一个字符记录的指示字。一个字符记录,除去该链中指向NIL的第一个字符记录以外,也包括一个指向该链中前面的字符记录的指示字。一个字符记录包括字符相对于主行的垂直位置,相对于左边空白区域的当前水平位置,和由字符变换表获得的任何垂直偏移,以及由字符变换表获得的水平偏移。
输出字符本身连同字符组(例如为一规则字符或一移出字符)贮存于字符记录中。字符记录包括一个表明它有衔接点的标记。若此标记真的话(此标记被置或出现),则该行就在此字符上断开;而该字符及随后的字符可能被衔接到下一行的开端。
如果在资料中停止字符正好出现在该字符之前,则停止标记是正确的,而程序将使打印机在打印该字符前停止。
字符记录包括一个对齐标记,若此标记置于正确位置,则意味着该字符可以被向右对齐。如果字符本身是一个空格,而要求的标记出现,则就意味着为向右对齐,可将该字符当作一个正规的非空格字符对待,而不把它当作为一个空格。
如果字符有一个复合标记,则它是一个复合字符的一个非原始的成分。如果出现底线,黑体打印,阴影打印或复打印标记,则这些特征将加到该现行字符上去。此外,如果出现连续对下一个字符加底线的标记,则在该行中,在该字符和下一字符之间的任何空格部分也应该加底线。
方框209起动文字处理资料的第一个副本的打印。将控制来自PCB的副本的打印的各变量初始化之后,复制循环开始。
如果操作者要求的话,则方块211打印资料概要。每一次复制可打印资料概要页一次,在资料概要中要打印的信息可以贮存在文字处理资料的概要记录中读取。
方块213为合并打印进行初始化。此初始化包括初始化数据结构,这些数据结构是为实现在合并打印时处理记录所必需的。
方块215实行打印下标所必需的初始化,本初始化仅在打印该资料的第一复制件时出现。
方块217起动合并打印循环。在方块217中,来自栏信息块的、合并打印所需的信息,例如,对合并资料的索引和记录键,都贮存到称之为RIBs的数据结构中。在每一格式的起始,将来自RIB的信息送入栏信息块(CIB)中,下面对CIB还要作介绍。在每页的顶部,CIB信息保存在RIB中。于是,如果遇到断开时,CIB可以从RIBs中恢复,以返回到合并资料的右边位置。
方块219为实际页面循环起动。这个方块执行在打印机上控制一张实际页的打印时所需的初始化。
在方块221中,实行页面送入。页面送入到打印机,而且,如果在打印机上有一个三者取二的送纸盘,则在页面送入前送出适当的指令序列以便选择适当的纸盘。在第一页面送入前完成打印机的初始化,或者在断开处送入页面前实行初始化。某些打印机要求此时也对左边空白,字距,每英寸的行数及可选用的字体,进行初始化。
方块223利用图3中的栏构建的程序在页面内建立和打印页首,对此下面还要作介绍。
方块225在起动打印每一页面内的正文中任何栏前,初始化脚注号。
方块227利用图3的栏构建的程序建立和打印正文的各栏。
方块229打印在打印正文页面期间积累起来的任何脚注。
方块231利用图3的栏构建的程序建立和打印页面脚注。
方块233处理由操作员中断打印操作引起的在页面内的任何断开,或处理由设备错误,例如纸或打印纸带脱出引起打印中断的在页面内的断开。
然后方块235检查是否所有的正文页面已经被打印,如果还没有打印完,则返回到方块221以便打印正文的下一页面。如果所有的正文页面已经被打印,则方块237进入建立和打印封面页面。
然后进入方块239判断是否所有合并打印已完成,如果尚未打印完,则返回到方块219,以便打印下一个合并资料。如果所有的合并打印已经完成,则进入方块241检查是否所有复制件已被打印,如果需要更多的副本,则返回到211,以便起动对资料的下一复制件的打印。如果所有的复制件已经被打印,则进行方块243并实行打印程序消除,并进行方块245,块245完成打印程序。
栏程序
图3示出了最佳实施例的栏构建和打印程序。栏程序通过访问字符检索器构建一个逻辑行,以便 从文体输入源得到一个字符,然后调用字符处理器以便贮存可打印的字符或者如果字符为控制字符的话,作相应的动作。当打印一个多栏资料时,则栏构建器必须被调用多次,以便产生多个逻辑行,这样使得在页面内的总打印行在其被实际输出到打印机前被完成。
该程序先进入方块301。而后进入方块303以便对当前打印的那个实际页面部分进行栏信息块(CIB)初始化。该CIB是一个数据结构,它包含所有的与一逻辑页面(例如正文页面,封面页面带页首或页尾的页面等)相关的内容,栏信息块的内容示于表3中。
表3
字符记录(CR):
指向下一个字符记录的指针
指向前一个字符记录的指针
垂直位置
水平位置
垂直偏移
水平偏移
字符输出码
字符组(例如规则或移出)
衔接点标记
停止标记
对齐标记
要求的标记
复合标记
底线标记
对下一字符继续加底线标记
黑体打印标记
阴影打印标记
复式打印标记
对于多栏打印,多个CIBs被连成环形,它可以被往返循环,以获取访问每一逻辑页面栏内容的入口,此逻辑页面包含现行实际页面的正文部分。于是,栏构建程序能被调用去构建一栏中的一行,再次调用去构建另一栏中的一行,并且当它在一给定纵列中不再使用时,总是可以继续往下工作。对于页首、页尾和单栏正文页面,只有一个CIB,并且指向本身。图7示出了四个连接的CIBs,当它们在打印一个实际页面的四个纵列组成部分时可能出现。
在方块305中,检查是否所有的栏都在页面的末尾,如果是,在方块329中返回,如果所有的栏都不在页面的末尾,则进入方块307,并确定哪一栏需要构建。一旦确定了那一栏需要构建,进入方块309以构建一栏。在方块309中,来自资料输入缓冲器的下一个字符被检索。
方块309利用指向贮存在栏信息块中的资料文件的指针,从文本中检索一个字符。该栏信息块中包含指向输入缓冲器的指针,这些缓冲器包含了从输入资料中读取的记录和现行文本。如果合并打印,则该信息块中也有一个指向包含由合并资料读取的现行正文的输入缓冲器的指针,它包含对正在使用的任何正文记录缓冲器和所有有关的记录键和页号的索引。它检验用于NIL记录缓冲器的指针。它检验进入记录器的索引,弄明白是否每个来自该记录器的字符都已检索,是否要读取一个新的记录。它更新指向缓冲器中的现行字符的指针,并且,在必要时,处理在记录之间的传输。
输入正文字符通常是根据一正文页面中的正文缓冲器进行检索的,此正文页面从头至尾循环。虽然,有时候字符检索必须专门处理,例如当文本来自一脚注参考页,或来自包含一正文串的虚缓冲器(此正文串由一页或脚注号或资料概要信息组成)时,就属这种情形。在所有这些情况时,为这种使用设立一个与用于正常情况的缓冲器相同的缓冲器,并适当地确立正文长度等。这就使逐字符检查时的数目最小,并且只有当现有记录用完和需要新的记录时才会执行异常码。
在对字符检索之后,进入方块311,判断被检索的字符必须被处理的方式。如果从资料文件的正文中检索到的字符是一个可打印的字符,则进入方块313。如果从资料文件检索到的字符不是一个可打印的字符,则进入方块327,执行任何需要的特殊处理。方块327处理那些特殊字符,这些特殊的字符指明水平定位功能(例如标记,(dectab),对中或缩排),垂直定位功能(例如下标或上标)以及注释,遮掩序列(hide    sequenas),和栏对齐功能。
水平定位功能定义为标记,dectabs,归中或缩排。用来处理水平定位功能的事体序列通常如下,在CIB中设定一个标志以便指明:一个水平定位功能已经遇见,过程继续进行。于是,如果由资料文件中检索到的下一字符是另一个水平定位功能,则结束前面的水平定位功能并在CIB中设定新的水平定 位功能标志。如果下一字符是一个可打印的字符,则在CIB中重新设定水平定位功能,并将CIB指针指向那个字符的字符记录(CR)。如果水平定位功能要求调整水平定位,例如一个标记,则也同样进行上述工作。最后,如果水平定位功能为行上的最后衔接点,则把那个指针作为断开行的地方,就出现文字衔接。由于缺乏有效的标记停止缺乏在正文之后的归中标志,者其它失效的中心栏标题而使水平定位失败,那么它可能使一行终止,被排队,或被一回车所终止。
当遇到一个垂直定位功能,例如一个上标或下标字符时,对在CIB中的现行垂直位置给予适当的调整。当遇到指示段落对齐的字符时,在CIB中设定等待标志,以便指明该栏应等到每个与其他栏相关的CIBS中的等待标记已经接通,或应该等待到每个其他栏中已遇见一页面的断开字符时为止。在处理完毕特殊字符后,方块327退至方块317。
一旦在资料文件中遇到一个可打印的字符,就进入方块313。方块313将来自资料文件的可打印的输入正文字符翻译成与输出设备相关的输出字符代码,上述输出设备将打印字符并在自前行的末尾产生一字符记录和在字符记录中贮存目前的字符信息。上述对可打印字符的翻译包括处理复合字符及可能的垂直和水平定位偏移。如果字符变换表包括几层复合,则产生该多个字符记录(CR),而且在第一字符记录之后的每个字符记录有合成标志集。
来自栏信息块(CIB)的当前标志信息和当前的相对垂直位置(根据上/下标)贮存在每个CR中,而且如果与字符变换表有一垂直位置偏差,上述相对的垂直位置可以调整。来自CIB的当前水平位置被贮存在第一复合部分字符记录中(此字符认为是最宽的字符),而在CIB中的水平位置则通过加宽字符宽度进行修正。在上述基本层之后的所有复合层都给与水平位置,这些水平位置把所有复合层都集中到第一个(最宽的)字符上。上述定中心位置是通过把当前复合元素宽度和最初的字符的宽度差之半与初级字符的水平位置相加。为了简化处理输出码,必须产生CMT以便将一个复合字符的最宽输出字符存贮到复合层1表(图6中的603表)。每个复合元素的输出字符也可在CMT中找到,并且存贮在CR中。其他的现行CIB信息,例如是否出现标记或dectabs,右对齐,停止,集中等等,也存贮在字符记录中,或用停用(turn    off)一个标记并设定一个指向当前字符记录的指向字而在CIB中对上述信息作修正。
方块315把字符记录的实际链接转变成由CIB指向的字符记录链。将字符记录链接成如图7所示的双向连结的表格结构。每个字符记录包含一可打印的字符及有关该字符的特殊信息和指向下一个和前一个字符记录的指示字。字符记录是一个输出字符和其相关信息的规范形式。包含各种指示字和标记的字符记录的内容示于表2中。
图7示出了三个字符记录链,这些链与在一页中所包含的四栏相对应。来自CIB701的链1包含字符记录711至727,来自CIB703的链2包含CRs731至737,来自CIB707的链3包含CRs771至783。CIB705有一个空链。
字符处理完毕,方块317就开始判断行终止是否已发生。如果还未出现行终止,则方块317出口到方块307,以便检索下一个字符。
方块317检查行构建循环是否应被终止。在几个条件之一发生时,行构建被终止。回车,页面表记,嵌入的格式行,或其他硬件终止符引起从循环中出口并把这一行立即排列并立即重置CIB中的行指针。行长超出条件也会产生从循环中出口。当前行上的最后字符于是被称为“非法字符”,因为它是一个已超过右边缘的字符。
在方块319,对一个衔接点进行搜索,所谓衔接点是这样一个点,即在行的末尾处的字符可以在该点上被接到下一个行开头的点。如果方块317不能找到一个由在字符记录中的衔接标记所指明的有效的衔接字符,则“非法字符”便成为衔接点。在图7中的衔接点,如在CIB中的点所指向的那样出现在在图7中的字符记录725,737和781上。在衔接点确定之后,通过在衔接点上切断连结表,将字符链在衔接点断开。然后将空格字符从完成的行的末尾移开,以便避免可能的字下划线悬置行的末尾,和以便简化向右对齐。完成的行于是在行信息块(LIB)中排队,在表4中示出了行信息块。来自衔接点之后的行的其余部分于是被重置到在CIB中的下一个行的开头。水平和垂直位置在CIB内被重置,并在下一次时,为本栏执行栏程序,在表的末尾处构建逻辑页面。
当制作行信息块(LIB)时,将来自CIB中的对齐边线标记贮于其中,于是,在CIB中的对齐边线标记 被倒换。(即,若它为正确的,则变成错误的,反之亦然)。由右边缘给定的行长,以及在行中的正文的最后宽度,也均贮存在LIB中。
表4
行信息块(LIB)
下一个LIB的指针
前一个LIB的指针
字符表开始的指针
字符表结尾的指针
边对齐标志
下一个长度
行长度
页面标志结尾
在段定位标志上等待
现行的行间字符
当一栏中的一个逻辑行结束以后,如果有格式行或行中的对齐字符,则进入框321,进行该行里正文本的对齐。下面将参考图4更详细地描述通过框321用对齐程序来对齐行内正文的过程。
把现行对齐以后,进入框323。框323取出与刚刚结束的逻辑行相关的字符记录表,并把它们插到排队输出信息块上,而该排队输出信息块是从来自正规正文的各个QOIBs上设置了上标和下标的CIB得到的。表5表示该QOIB的内容。这样就产生了各个水平行,它们位于其本身QOIB上的不同的垂直位置。通过进行这种垂直位置的排序,使得各行能以一个正确的顺序输给打印机,并且在该页面上产生出以正确垂直位置打印的正文本。
表5
排队输出信息块(QOIB)
下一个QOIB的指针
字符表开始指针
字符表结尾指针
相关的上标/下标层
绝对垂直位置
在本行里的停止字符
如果进行多栏打印,框323还要执行一个混合操作,在每个CIB的相同的垂直位置取出QOIBs,并把它们连接在一起。这样,通过从每栏的相同垂直位置上取出逻辑行,并把它们组合到用于输给打字机的实际行上,我们能够以正确的垂直位置把不同的栏输给打字机。于是,把整页上相同垂直位置上的所有字符,作为一个具有多行输出的连续行输出,来处理位于各种不同垂直位置的正文的情况。在图10中示出了一个QOIBs的排序表的例子,它示出了一个单栏行,它的形成是:读出图中正文的输入缓冲器,通过运用图6的字符变换表进行转换,以产生图9的字符记录链。
栏325判定是否已经准备好了将被输出到打印机上的一个实际打印行,如果没有,返回框307,为下一栏建立一行。如果已经准备好了输给打印机的打印行。则从框325进入框327。
当栏程序确定输给打印机的一行已准备好时,则把该行从排好队的输出信息块队列中取出,并把它输给适当的输出程序,该程序依赖于打印文件所用的具体的打印机。在框327中,根据打印控制块规定的输出设备的功能来调用校正设备驱动器。然后,该设备驱动器取出已传输给它的实际打印行,执行所用的具体输出打印机所要求的附加处理,然后把这处理的打印行输给该打印机。
当每个实际打印行完全构成存贮在QOIB上以后,进入框327,在框327中,把QOIB输给适当的输出程序,在该程序中把字符记录的连接表从该QOIB中移出。然后,把该字符记录表横移,并设立一个输出缓冲器,在该缓冲器中存贮来自字符的字符,打印机规定格式信息(比如,换码序列,打印机控制信息,这些控制信息用于执行下面划线、黑体打印、黑影打印或者复式打印、水平定位,等等)。
用随打印机的不同而不同的打印机的专门输出程序,来实现实际的水平定位。例如,在一个行式打印机上,在一行中空隙之间的分隔,是通过在缓冲器中插入空白字符来实现的,而在字母质量打印机中(letter    quacity    printer),分隔动作可在把该打印行输给打印机输出驱动器之前,在一行内插入与一个绝对水平标记对应的换码序列来实现。
应当指出,从一个QOIB连接起来的所有的字符块都有同样的垂直位置,并且是从最高的垂直位置到最低的垂直位置来对QOIBs进行处理,所以,可以从最高垂直位置行开始,逐步进展到最低垂直位置行,以这种方式把每一行输给打字机,因此,当要打印一个资料时,可以把该纸预先上移。
把该行输出以后,从框327进入框305,以建立每一栏中的下一行。
对齐程序
在框401进入对齐程序,图4是该最佳实施方案的对齐程序的方框图。如果需要,则在栏的建立程序的末尾调入对齐程序,以执行右侧对齐。它运用在行信息块(LIB)中的信息,以及来自打印控制块的水平移动变址(HMI)。该LIB包含有行的开始和结尾的指针、目标行的长度,以调整行和该行中文本的现行长度。
在框403中,把指针初始化,使之指向与该行相联系的字符记录链的开始和结尾,也就是被对齐。然后在框405中计算所要求的扩充量,它是右侧边缘与正文尺寸之差。
然后进入框407,对该行进行回扫,计能够扩充的空位数、能够扩充的字符数,和组合字符元素数。在遇到链的开始之前。或遇到带有未对齐字符标志的字符记录之前,一直继续这种回扫。例如,如果字符是在标记之后首先进入的,则将把未对齐字符标志设置在字符记录中。
如果在框407所执行的行回扫期间,在一个组合字符上该扫描被停止,则执行正扫,把指针提前移到组合中的最末字符记录。这样做是因为组合必须被一起扩充。
当通过框407的回扫发现链开始时,则该程序暂时脱开字符连接表,并在此定位,好象该行实际开始一样来使用指向该字符的指针。把这种结构称为半连接表,好象它是一个整个连接表一样把它用于横移一个表的一部分。
然后进入框409,用组合计数来修正字符计数,以得到该行中能扩充的字符计数。必须把字符的组合元素的数目从能扩充字符的总数同中扣除。因为必须把该组合当作是一个字符一样来扩充,因为把它们打印时只要求一个字符的空白。
在框411,把指针初始化到第一可扩充字符的末尾,以便跳过组合元素。在框413中,实现在第一可扩充字符上将该表切断,在切断之前,把指针存贮到该字符记录上。字符记录链的这种切断,是由一个字符记录引起的,该字符记录的对齐标志为“0”,这表示这个字符出现在一个标记点上,而在行中比标记字符出现早的字符在右侧对齐的过程中不能被移动。
框415进行检查,以判定是否可扩充的字符数同等于零。如果可扩充的字符数目不等于零,则进入框417,进行检查以判定可扩充空位数目是否等于零。如果可扩充空位的数目不等于零,则进入框419。
在框419中,进行计算,以确定分布在字中的字符之间的扩充部分,使得当对齐一行时,字间的空间不会变得太大。对齐程序试图放置字内的字符之间的某一扩充部分和字间扩展的剩余部分。在字内字符之间所分布的量和字间的空位所分布的量,是利用一个空位一字符比(SCRATIO)来确定的。在该最佳实施方案中。使用了1比8的比例,这意味着,对于在字符间引入的每个扩充单元,将在字间的每个空白字符引进入八个扩充单元。因此,在框419中,扩充的总量被除以字符数加上空位-字符比乘以字间出现的空白数后得来的。应当指出,因为每一空位字符都是单独扩充的,所以,如果操作员在某些字之间打进2个空位,不在其它的字之间打进一个空位,那么由两个空位隔开的字间扩充将为由一个空位隔开的字间扩充的两倍那样大。
然后进入框421,计算字符内扩充极限。该字符内扩充极限(ILECHECK)是在字符之间允许引进的扩充的最大量,它使字内的字符不致于超过最大量。通过把水平移动变址乘以NILEFAIL,而后再除以DILEFALL的一个常数比来计算字符内扩充极限。在该最佳实施方案中,NILEFAIL是3,而DILEFALL是2,所以在该最佳实施例方案中字符之间所允许的最大扩充量是标准字符宽度的三等分。
然后进入框423,检查是否字符内扩充值超过了字符内扩充极限。如果这个扩充值没有超过该极限,则从框423进入框427,把所计算出的扩充量用于字内字符间的扩充。
如果字符内扩充量比字符内扩充极限大,则进入框425,把该扩充量定为等于字符内扩充极限。
接着进入框427,把字符内扩充余量置为零,使得任何剩余扩充部分在字间出现。
然后进入框429,计算字符间的总扩充(EXPTOT),它是每个字符之间的扩充量乘以可扩充字符的数目。接着进入框431,通过分配字内字符之间的某些扩充来分配字符链内的字符内扩充。用图5的分配程序来完成这个分配。
接着进入框433,计算分配在字间的空位中的剩余扩充。通过取出所要求的总扩充量,并从中减去在字符之间已经出现的扩充量,我们可以计算出剩余量。
然后进入框435,计算分配在字对之间的每一字 内空间里的扩充量。通过取出扩充剩余量,并除以字符的数目来实现这个计算。
接着进入437,计算未被均匀地分配在字间空间的扩充剩余。当实现以扩充总量除以字间出现的空位数目的整理操作时取出剩余量。以此来完成这项工作。这是用取模函数(MOD)来做的。
然后进入框439,设置在字间分配的总的扩充剩余,它即是在框433中所计算的扩充量。
再进入框441,利用图5的分配程序来分配字符链内字间空间里的扩充。
当字符间和字之间所有的扩充都已出现以后,进入框443,重新连接在标记处或组合字符中被切断的字符记录链,以便把已经对齐的行的部分再连接到未能对齐的行的任何部分,并且完成行对齐,而后返回到框445中的调用程序。
下面将讨论分配程序,当正在分配行内字间的空间时,在剩余量被用尽之前,任何剩余量都是从字间实现的总扩充量除以字间的空位数目(这里在字间是均匀分配的)所得到的。在每一行信息块(LIB)中,有一个侧边标志位,在每一行排队后把它触发,使它从一行到另一行间倒换。这个侧边标志判定是否有剩余,如果有,则在行的左端或右端开始分配。通过倒换这种分配,引起页面故障的河沟或宽隙的可能性减少3。这对于基本单位较大的打印机(比如行式打印机)比起字母质量打印机(其上每一剩余单元可能只相当于1/120英寸)更为重要得多。
现在返回到框415,在这里进行检查,以判定对齐的行中可扩充字符的数目是否等于零。如果其回答是肯定的,则从框415进入框447。
如果进入了框447,这说明对齐的行不包含能在其间各位中产生扩充的任何连续的字符,并且说明所有的扩充必定发生在字之间。在框447中进行检查,以判定可扩充空位的数目是否等于零。如果等于零,则从框447进入框443,在从对齐程序出口之前进行清除。如果从框447进入了框443,这表明该行在字间不包含任何不扩充的字符,或可扩充的空位。因此,不能发生任何的扩充,且不能把行对齐。如果框447判定在行里有可扩充的空位,则进入到框449。
在框449中,通过把所要求的扩充量除以在其中进行分配的可扩充的空间字符的数目,来计算在字间的空位字符中分配的扩充部分。
然后进入框451,计算其扩充剩余,即在所有的空位中不能进行均匀分配的所要求的扩充量。通过取出所要求的扩充总量并被不扩充空位数目的整除,来计算该剩余量。通过取模(MOO)操作来完成这项工作。
在框453中,调用分配程序,以将扩充分配给字符链内的字内空位中。扩充分配以后,从框453进入框443,在这里完成行的对齐。
现在返回到框417进行检查,以判定可扩充空位的数目是否为零,如果是,则从框417进入框455。如果进到此分支,就表明在对齐的行内有可扩充字符,但在行内的字间没有任何对齐的可扩充空位。所以,如果有任何扩充,那么行的所有扩充必定出现在字内的字符之间,而在字之间的空位里不会有扩充发生。
在框455中,通过把所要求的扩充总量除以行内扩充字符的数目,来计算字符之间被扩充的量。
在框457中,通过在扩充总量除以字符数目的时候确定剩余量,来计算在字符之间不能平均分配的扩充量。这是利用取模操作,求总扩充量对可扩充字符数目的余数来实现的。
然后进入框459,如上对框421所说那样计算字符由扩充极限。计算这个字符内扩充极限的目的在于,不允许字内的字符之间的扩充量变得过大。
在框461中进行检查,以判定是否能使行内的字符之间剩余量的分配达到不引人注意的程度。这是通过把常量REMFAIL与HMI(这是标准字符的宽度)进行比较实现的。标准字符的宽度(HMI)是依据上述的用于打印该行的具体输出设备的基本单位的数目限定的。
例如,如果用一个12间距型的字母质量扩印机,它的最小的移动1/120英寸,则标准字符宽度就是空位的宽度,将为10,这意味着横移一个标准字符的距离打印机设备可做的最小移动距离为10。在该最佳实施方案中,常量REMFAIL是按照等于6限定的,这样,如果正用的扩充机的HMI为10,因为6不大于10,则从框461进入框465,而不用把剩余量设置为0。在这种情况下,能够在字符之间分配剩余量,因为已经确认,字符之间的扩充只是一个字符宽度的1/6(数值6为REMFAIL的常量),在某些字符之间多一些,这都不会引起打印资料的读者的注意。
就HMI为1的行式打印机而言,打印头所能移动的最小距离是一个完整的标准字符宽度,因为6比 1大,将从框461进入框463。在这种情况,不能在字符之间分配剩余量,因为人们感到,与其中未加入多于一个剩余的字符间的扩充相比,在一些字符之间比一个完整字符宽度还多的扩充(直到剩余用尽)将是显著的。在框463中,把剩余量置零,以便不在字符之间分配剩余量。
于是,在框461中做比较,在框463置剩余量,查明是否所有的扩充都发生在字符之间而在字之间没有扩充,如果至多为字符宽度的1/6,则只允许在字符之间分配剩余,当把所有的剩余量分配完成以后,在分配剩余部分的字符之间出现的扩充比其它字符之间出现的扩充多得多。
然后进入框465,判定在字符之间发生的扩充量是否大于或等于框459里所计算出的字符间扩充极限。如果框465确定字符间的扩充未超过该极限,则进入框469。如果字符间扩充量超过该极限,则从框465进入框467。
在框467中,把字符之间的扩充值设置为字符内扩充极限,并把剩余量置零,这样就没有任何剩余的分配在字符之间发生,因为那些包括剩余的一个附加单元的扩充将会超过字符内的扩充极限。
在框469中,将进行总扩充的计算,总的扩充是字符间的扩充乘以可扩充字符数,再加上剩余量。
然后进入框471,调用分配程序,来分配字内的字符之间的扩充。在字符之间分配了扩充以后,行的对齐完成了,在返回对齐程序的调用程序之前从框471进入框443。
分配空间程序
在图5中描述了扩充分配程序。当一行被扩充来对齐右边缘时,通过对齐程序来调用分配空间程序,来分配字内字符间的扩充,或字间的空格。在框501进入分配程序。在框503中,进行检查判定扩充分配是由左向右进行的(从字符记录链的始端开始)还是由右向左进行(从字符记录链的末端开始)。通过检查在行信息块(LIB)中的边标志来确定是否有余量分配在行的始端和末端。随着每一行产生边缘标志的倒换,通过改变不能均匀分配的扩充余量的分配可以有助于减少在行的始端和末端形成大量的空位的可能性。
如果从左向右分配,则进入框505并且将指向将要扩展的第一个字符的指针定在字符记录链的始端。如果扩充将从右到左进行,则把在框507中指针定在字符记录链的最后一个字符上。
在框509中,作一个检查来确定指在字符记录链中当前字符记录上的指针是否为NIL。
如果是NIL,它表示已到达链的末端并且做扩充分配,从框509进入框511,在框511返回到分配程序的调用程序。如果字符指针不是NIL那么,进入框513。
在框513中进行检查,看现行字符是否可扩充。如果下一个字符是现行字符的复合分量则现行的字符不可扩充,该现行字符是一个空白并且没在做字间扩充,或者该现行字符和下一个字符都不是空白且没在做字符间扩充。当现行字符不可扩充时,进入框515,通过把它在其字符记录中的水平位置增加一个总扩充的现行值(EXPTOT),把下一个字符右移。
如果即时字符可扩展,由框513进入框517来检查分配是由左向右还是由右向左进行的。如果分配扩充是由左向右的则进入框519并且扩充值增加了累计的扩充值。如果分配是由右向左进行,则由框517进入框533。
由框519转入512用来检查余量是否为零。如果余量为零,那么所有不能被均匀分配的扩充已被分配,并且不再需多余量了。
如果有一个余量并且末被全部分配(即通过每次分配一个最小移动单位进行字符扩展来使用余量)然后进入框523,并且累积扩充值加1而余量减1然后从523进入框525。
框525利用一个累积扩充值(EXPTOT)把下一个字符的水平位置调整到EXPTOT右边的字符位置,这项工作的完成是当与它有关的字符记录中看到其右端的下一个字符的水平位置时把它取出并将累积扩充值加到其上。
然后进入框527,进行检查以确定扩充分配是从左向右还是从右向左。如果是从左向右进行则进入框529,现行字符指针移到指向右边的下一个字符。如果扩充是从右向左,则进入框531,现行字符指针指向左边前一个字符。在框529或框531中调节了现行字符指针后,程序回到框509,检查是否记录链的末端字符。
在确定了现行字符是可扩充的以后,如果扩充是从右向左,则回到框533。在框533中,右边的下一个字符的水平位置调整一个累积扩充值。
然后进入框535,并且累积扩充值减少了一个该扩充值,这项工作的完成是在扩充由右向左时,在 行的右端的字符根据所需扩展的总量移动,并且每一个后续字符则根据不断减小量,移动这个减小量等于其本身的扩充值(EXPVAL)。
在框537,进行检查,来确定余量是否等于0,如果等于0则进入框527。如果余量不等于0,那么累积扩充值减1,同时余量减1。因此,可以知道当由右向左分配时,余量在各处一次分配一个单元,直到余量用尽完成扩充由框539进入框527。
对齐程序的源编码程序表和分配程序都附在本发明的附录中,这些程序都是用PASCAL语言编写的,它可用于Hoheywell,Information    System    InC霍尼维尔,信息系统公司的DPS6计算机,这种语言在霍尼维尔信息系统公司的题目为DPS6和Level    6    Gcos    6    Pascal用户指南的说明书中进行了详细描述,该说明书的序号为GZ40,在此附上以供参考。
从上述对齐程序和分配程序的讨论,可以知道通过首先试图分配字中字符间的扩充部分到某一限度来使行对齐,以使字符不会有超量的空间间隔,并把需要扩充的余量分配在字间的空间内。还可以更进一步了解到因为字符间和词间的扩充量不能总是均匀的,致使非均匀分配,或余量,扩充部分从行的左到右端之间变化,以便于尽可能多地减少大量的或超长空白格出现,否到,如果余量总是沿一边分配,就可能使空白总在行尾端出现。还可以进一步认识到,通过使用水平移动变址(HMZ)和打印机最小移动单元,一个规范的对齐程序可以用于所有的输出设备。
带一个复合字符的对齐之例
图8所示之例为打印正文中的一行及其相应的输入缓存器,它们提供给打印程序以便在输出设备上打印。图8中的第一行用了一个指示标记指示一页中的各栏,可要求有一组标记是在4和5列中间,而右端边缘标记组将出现在23和24列中间。图8中打印出的正文行表示希望在所打印的行中包括有一个带上标“1”的字“SUP”和一个带下标“2”的字“SUB”。还可看出在第15列中的字符是属于一个复合字符,它由大写字母“C”,在其下方加逗点并在其上方加重音号(例如模仿法语重音Cedila)所组成,在图8中的输入缓存器行示出了将提供到打印程序中去的要印到输出设备上的相应字符。
在图8的输入缓存器中,向右的箭头用于指示一个标记键被按下,向上的箭头用于指示上标键被按下,向下的箭头用于指示下标键被按下,三角形用于指示一个空白字符键被按下。须指出“C”和其上带有的重音号和其下带有的逗号的复合字符在缓存器中是以单一字符来代表的。这是假设在输入资料的键盘上有一个相应于该复合字符的键,实际上该复合字符可以由缓存器中的多个字符序列来表示,这个字符的字符码为一个特殊的字符码。
图9说明与图8的输入缓存器相对应的字符记录链,表示输入缓存器已经由打印程序通过应用图6所示的字符变换表转换过的情况。在图9中,字符记录之间的指针是用带箭头的弧线指示的,箭头指到链中的下一个字符记录和其前面的字符记录。在图9中,相应的字符记录顶上括号内的符号代表将要输出到打印资料页上的字符图形。在各字符记录中,字符图形是用多位码表示的,当这项多位编码被输出到输出设备上时即能产生相应的字符图形。在图9中各字符记录框内的第二行代表用于保持打印资料输出设备中的水平基本单位的水平位置和其水平偏移。在本例中,假定所有的字符(带重音号和逗号的字符除外)都是10个基本单位的标准宽度,于是,在第一栏上的字符在位置0处开始而在第二栏上的字符就在水平位置10处开始等等。在本例中重音字符占有6个基本单位的宽度,逗号则占有4个基本单位的宽度。这些重音号和逗号字符的水平位置按照上述的它们的宽度应把这些字符集中到“C”上头,此外逗号因为在字符变换表(见图6中表619)中已指定有一个水平偏移,故它已将其中心位置右移了一个基本单位。
图9中各字符记录框内的第三行包含有字符的垂直位置和垂直偏移,是以打印资料的输出设备的垂直基本单位来量度的。对此例来说是假定该输出设备能完成每英寸48个垂直运动基本单位,可把该资料可打印成每英寸8行,这就意味着该输出设备能够完成每行有6个基本单位的垂直运动,并且也说明分别向上移1/3或向下移1/3即能在每个上标层或下标层分别打出该上标和下标,所以下标层1将导致一个垂直运动-2,两层上标将导致垂直运动+4。
图9中字符记录框内底行的内容中包括有字衔接、复合字符以及对齐标志。如果字衔接标志是1,则即意味着这个字符是一个衔接的起始点,该衔接标志在具有水平位置90、140、142、145和190的各字 符记录中是一个1,这些字符各相应于正文行中的各字的起始。具有水平位置140、142和145的字符记录框中每个都具有衔接标志置位,这是因为它们的每一个都是一个字的起始字符,它们共同构成一个复合字符。
如果字符记录是一个复合字符中的第二到第N个字符,则该复合标志(底行中的中间标志)就是一个1,该组合标志在与水平位置为142和145的字符记录框相对应的字符记录框中是一个1。
对齐标志是底行中居于右侧的标志,如果该字符在对齐过程中能被移动,则该对齐标志为一个1,这个标志在图9中所有的字符记录框中都是一个1,而相应于水平位置为40的字符的字符记录则例外,它是在字“SUP”中的“S”,这个字不能被移动,因为它是在按下标志键后在一行中所出现的第一个字符。
图10说明对齐在图9中的字符记录链的结果。在图8所示,右侧边缘被置于23和24行之间,所以该右侧边缘是置于水平位置230的。当从字符记录链的末端回扫到发现一个衔接点时,所发现的第一个衔接点便是用于字“EXAMPLE”的字母“E”的字符记录,该字母具有一个水平位置190。因此,字符记录链在此点中断,并且与链中超过这一点的各字符记录相联系的字符记录将全变成正文的下一行,并且它们的水平位置被相应地调整成如图10中所示,即相应于字“EXAMPLE”的各字符记录从水图位置0开始接续地进行到水平位置70。在字“COMP”后面的字符空格也被删除,因此对齐的字符记录链包含有字符“1”,它始于水平位置0;直到字符“P”,它始于水平位置170。
为了确定在对齐过程中一行所必须被扩充的量,该占据180个水平基本单位宽度的行长应从水平位置被230右侧边缘位置所减,以产生所需要的扩充量,即是50个水平基本单位。当该行被回扫描时,发现在水平位置40处的S是“非对齐的”,于是处于该链中这个字符记录以前的任意字符都不能在此对齐过程中重改位置。当在能被调整的那行的区段中计算可扩充的字符数时,确定出可扩充的字符(CHARS)数是等于11,且复合分量(COMPS)是等于2,因此,对于复合分量调整的可扩充字符数就是11-2,即结果数为9。在能扩充的该行中存在的可扩充的空格数是2。这些空格字符就是出现在图9中水平位置80和130处的空格。
当对齐程序确定出每个可扩充的可扩字符数量时,即是扩充量(50)除以可扩充的字符数(9),加上字符空格比(8比1)乘以可扩充的空格数(2),其结果即为50被9除加8乘2,即等于25分之50,这生成一个字符间扩充值(EXPVAL)2。故该对齐程序即将调用分配程序用2个水平基本单位去扩充每个可扩充的字符。
然后,对齐程序确定在字间的空格中能实现的扩充量,这可由从所要求的总扩充量(该值是50)中减去已被完成的字间扩充量,它是2乘9,于是50-18等于总数为32个扩充的基本单位,这些需被分配在字符记录链中的空格中,每个字间空格的扩充值可通过把扩充量(32)除以空格数(2),以产生16个水平基本单位的字间扩充值,然后用扩充值16来调用分配程序,该值是用于扩充每个空格字符和改变任意邻近字符位置的。
在上述对齐的例子中,无论在计算字符间或是字间的扩充值时都没有任何余量,如果字符间扩充值在计算后产生了余量,则它将被置0,且不把它分配在字符之间,这是因为在这行中存有空格能分配它们的缘故。
如果在计算字间空格扩充时产生了余量,则在每次即分配一个基本单位加到每个被扩充的空格的16个基本单位上去,直到余量全被用尽为止。该余量可以该行的左端或右端开始分配,这取决于在被对齐行的信息方框中的边缘标志值在于何处而定。
对齐程序的末尾的字符记录链连同图9中的字符记录链一起如图10所示,它具有修正过的水平位置220的字符记录框(该行右端的“P”),该记录框的指针向前指到NIL,以及具有修正过的水平位置0的字符记录框(字“EXAMPLE”中前一个字母E)向后指向NIL,因为这个字符记录框是下一打印行的开始。
图11说明在一个输出行内的字符记录框在其垂直位置上的调整结果,这是在输出行被传送到驱动打印机的相应输出设备的驱动器完成的。如前所述,各输出行应被调整到这样子,即对位于纸上较高位置者先进行输出,然后对下一个较低行进行输出,这样以便使纸能在输出设备中向上行。在图11中有4个排队输出信息框(QOIB)它们是1101,1103,1105和1107。
图11中的4个QOIBs通过一个“接下步(NEXTQO)”指针连系起来,除去其最后一个是指向NIL外,每个NEXFTQO都指到下一步QOIB。QOIB1101中具有属于两 个字符记录框的一条字符记录链,这两个字符记录在垂直位置2被扩充。这些字符记录框相当于字符“1”,它被作为上标来打印,以及另一个相当于被打印在复合字符“C”上方的重音号。QOIB1103包含有14个字符记录框,它们相当于被打印正文的基本行。QOIB1105包含一单个字符记录框,它是逗号并以相对的垂直位置-1打在复合字符“C”的下方,以及QOIB1107也包含有一个字符记录框,它相当于字符“2”作为下标来出现,并具有相对的垂直位置-2。
当这些字符链按照垂直位置实际输出到输出设备中时,每条字符记录链将导致在输出设备上打印出正文的一行,所以在如图8所示的例中,输出到打印机上的正文将出现为4个独立行。
从以上的讨论中可知,本发明的对齐方法和处理复合字符的方法能够广泛灵活地实现对齐行内的文本和复合那些复合字符,以致可用多击那些能垂直或水平偏移的单个字符的方法而复合出复合字符。
虽然在此最佳实施方案中所阐明的是在一行中作右侧对齐,但是本方法对进行左侧对齐是同样能够应用的。
虽然在此最佳实施方案中已阐明的是关于交替地利用在相邻行间的余量并且是利用该行的右端或左端起始的余量进行对齐,但是把它发展成从每第三行的中央进行处理而用尽该余量。也是容易想到的。
虽然在本最佳实施方案中阐述的是关于利用一个打印机作为输出设备,但是本发明也同样能够应用于各种其它型式的输出设备。
虽然在本最佳实施方案中已阐明的是关于进行字间扩充附加上字符间扩充,但是也能借发生在所有的字间的空白的扩充而不用字符间的扩充。同样地,本方法也能改变成只作字符间的扩充,而不作字间扩充。这些变化都能通过整定字符对空格的扩充比(SCRATIO)分别为较大的数或为0来实现。借用修改该对齐程序逻辑而消除无用的逻辑能取得更好的方法,但这对本技术领域人员是显而易做的。
在结合本最佳实施方案揭示并阐明的本发明的同时,有关上述技术领域的人员都将懂得,对上述和形式和细节方面所做出的其它改变都离不开本发明的构思范围。

Claims (2)

1、一个字符处理系统中包含一个键盘和一个具有一个打印元件的打印机,在该系统中打印包含特殊字符的字符的一种方法,其中所有的包含特殊字符的字符在键盘上都有一个单一键,每个键的动作都产生一个单独的字符码,特殊字符是由两个或更多个字符构成,利用所述的打印元件,在同一个字符空间作重复打印便可打出这些字符,所述的方法包括下面的步骤:
a.相应于键盘上每个键上所产生的每个单独的字符码,检索出一个单独的字符记录,所述字符记录包括一个打印机码,当将其送入打印机时,则能打出具体的字符;相应于一特殊字符键的动作,检索出与单个字符的数目相等的多个键式字符记录,以用来打印特殊的字符,所述的每个链式记录包括一个第一比特,它的设置是用于指示何时单个字符是一个特殊字符的一部分并作为前面所打印的字符而打印在同样的字符空间,响应于所述的第一比特,打印机使打印元件不走到下一个字符空间;
b.从设置了第一比特的每一个链式记录中检索出垂直偏移量信息,它用来指示一个垂直位置,在此位置上,随着前一个打印字符,在字符空间中将打印出每个单个字符记录所代表的单个字符,所述打印机响应于所述垂直偏移信息,移动打印元件的字符空间,在一个垂直位置差上打出所述每个单个字符,而不是打在正常应该打印每个单个字符的位置上;
c.如检索垂直偏移信息一样,从同一链式字符记录中检索出水平偏移信息,它同来指示一个水平位置,在此位置上,随着前一个打印字符,在字符空间中将打印出每个单个字符记录所代表的单个字符,所述打印机响应于所述水平偏移信息,移动打印元件的字符空间,在一个水平位置差上打印所述每个单个字符,而不是打在正常应该打印每个单个字符的位置上。
2、根据权利要求1的方法,其中链式记录的连接利用了构成特殊字符的每个字符的字符记录中的信息,所述信息指向用于打印一特殊字符的相邻字符记录。
CN86103724A 1985-06-03 1986-06-03 文字处理及复合字符处理的方法 Expired CN1008564B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US74078485A 1985-06-03 1985-06-03
US740,784 1991-08-06

Publications (2)

Publication Number Publication Date
CN86103724A CN86103724A (zh) 1987-03-04
CN1008564B true CN1008564B (zh) 1990-06-27

Family

ID=24978052

Family Applications (1)

Application Number Title Priority Date Filing Date
CN86103724A Expired CN1008564B (zh) 1985-06-03 1986-06-03 文字处理及复合字符处理的方法

Country Status (7)

Country Link
EP (1) EP0205081A3 (zh)
JP (1) JPH0750392B2 (zh)
KR (1) KR910005349B1 (zh)
CN (1) CN1008564B (zh)
AU (1) AU590278B2 (zh)
CA (1) CA1258921A (zh)
MX (1) MX168135B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4749289A (en) * 1986-06-13 1988-06-07 Brother Kogyo Kabushiki Kaisha Printing device for attribute printing
CA1308201C (en) * 1987-03-31 1992-09-29 Douglas E. Hays Method and apparatus for processing keystrokes
WO1990006060A1 (en) * 1988-12-07 1990-06-14 San-Ei Chemical Industries, Ltd. Method for preparing milk/mineral concentrate and mineralized drink
CA2114988A1 (en) * 1993-02-05 1994-08-06 Matthew O'boyle Ultrasonic angioplasty balloon catheter

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3046216C1 (de) * 1980-12-08 1982-05-27 Siemens AG, 1000 Berlin und 8000 München Verfahren und Anordnung zum Darstellen von Zeichen
IT1144199B (it) * 1981-04-29 1986-10-29 Olivetti & Co Spa Dispositivo di scrittura
GB2113613A (en) * 1981-12-02 1983-08-10 British Telecomm Improvements in or relating to printers
JPS58116169A (ja) * 1981-12-29 1983-07-11 Fujitsu Ltd プリンタの出力方式
JPS58121862A (ja) * 1982-01-14 1983-07-20 Fujitsu Ltd 画信号編集レジスタ
JPS58166382A (ja) * 1982-03-19 1983-10-01 株式会社リコー キヤラクタデ−タ発生方法

Also Published As

Publication number Publication date
MX168135B (es) 1993-05-06
EP0205081A2 (en) 1986-12-17
KR910005349B1 (en) 1991-07-25
JPH0750392B2 (ja) 1995-05-31
KR870000651A (ko) 1987-02-19
CN86103724A (zh) 1987-03-04
EP0205081A3 (en) 1987-12-02
AU5805986A (en) 1986-12-11
CA1258921A (en) 1989-08-29
AU590278B2 (en) 1989-11-02
JPS6231890A (ja) 1987-02-10

Similar Documents

Publication Publication Date Title
CN1177276C (zh) 打印字符的字符信息处理装置
CN1271505C (zh) 用于进行图像检索的图像处理装置及方法
CN1014845B (zh) 在结构式文件中制作、扩展及收缩组元标记的技术
CN1205573C (zh) 用于同步合成,显示及处理文本和图象文件的方法和设备
CN1110745C (zh) 具有面向目标的打印接口的操作系统
CN1097795C (zh) 结构式文件处理方法和装置
CN1602463A (zh) 多页svg文档的目录
CN1009591B (zh) 计算机编辑排版系统及其方法
CN1648847A (zh) 布局控制方法和布局控制装置
CN101046729A (zh) 信息处理设备和其控制方法
CN101046728A (zh) 信息处理设备和其控制方法
CN1731397A (zh) 信息处理装置及其控制方法
CN1842126A (zh) 信息处理装置、图像处理装置和方法及为此的存储介质
CN1533529A (zh) 使打印机印刷所要设计页面成为可能的装置及其动作方法
CN1731819A (zh) 布局调整方法和装置
CN1811691A (zh) 信息处理装置及其控制方法
CN1655112A (zh) 文档输出方法和文档输出系统
CN1607524A (zh) 包含可变数据的文档或版面的选择性预览和校对
CN1230072A (zh) 图像信息处理装置及图像信息处理方法
CN1040276A (zh) 简繁字根汉字输入技术及其键盘
CN1752963A (zh) 文档信息处理设备、文档信息处理方法及处理程序
CN1251442A (zh) 文字打印方法及其装置和图像打印方法及其装置
CN1577229A (zh) 输入音符串进入计算机及文句生产方法及其计算机与媒体
CN1694049A (zh) 一种基于五键的汉字输入系统
CN1280748C (zh) 使用计算机键入字母表中字母的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C13 Decision
GR02 Examined patent application
C14 Grant of patent or utility model
GR01 Patent grant
C19 Lapse of patent right due to non-payment of the annual fee
CF01 Termination of patent right due to non-payment of annual fee