CN1508722B - 国际自动行高、字体大小和字体测量系统和方法 - Google Patents

国际自动行高、字体大小和字体测量系统和方法 Download PDF

Info

Publication number
CN1508722B
CN1508722B CN031093523A CN03109352A CN1508722B CN 1508722 B CN1508722 B CN 1508722B CN 031093523 A CN031093523 A CN 031093523A CN 03109352 A CN03109352 A CN 03109352A CN 1508722 B CN1508722 B CN 1508722B
Authority
CN
China
Prior art keywords
text
font
row
language
font size
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 - Fee Related
Application number
CN031093523A
Other languages
English (en)
Other versions
CN1508722A (zh
Inventor
内森·W·埃佛里特
大卫·C·布朗
马克·B·麦克唐纳
詹姆斯·D·柏尔斯
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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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
Priority claimed from US10/323,059 external-priority patent/US7385606B2/en
Priority claimed from US10/323,038 external-priority patent/US20040119714A1/en
Priority claimed from US10/322,857 external-priority patent/US7271806B2/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN1508722A publication Critical patent/CN1508722A/zh
Application granted granted Critical
Publication of CN1508722B publication Critical patent/CN1508722B/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • 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/109Font handling; Temporal or kinetic typography

Abstract

一种系统和方法自动为不同的显示介质和任何语言的不同的可读性参数确定适当的字体特征。一种方法包括通过接收包括字体标识符和语言标识符的数据确定字体特征,以标识的语言并用标识的字体产生代表性的一行字,测量代表性的一行字的特征,以及跨许多字体和许多语言规范化测量值。一种系统和方法确定字体的最佳大小,以确保可读性。一种方法通过确定字体的字符密度和将字符密度乘以查看介质的最清晰的可聚焦区域来确定字体特征。该方法进一步包括根据每个固定距离中的簇数范围改变字符密度,以确定最大字体大小和最小字体大小。系统,方法和计算机可读的介质自动为不同的显示介质,任何语言的不同的可读性参数确定适当的行高。

Description

国际自动行高、字体大小和字体测量系统和方法
技术领域
一般来讲,本发明涉及字体、文本和字符对齐方式,更具体来说,涉及国际自动字体测量系统和方法。
发明背景
“他们说:来吧,让我们建一座城市和塔,它的顶部可以到达天堂;在我们被散落到国外的所有陆地之前,让我们出出名。”此项工作很快就开展起来;“他们用砖头而不用石头,用粘土(柏油)而不用灰泥。”但上帝混淆了它们的语言,这样它们没有能彼此理解对方的语音,因此将他们从那个地方散落到所有陆地,于是他们停止建造城市。创世纪11:1-9。自从巴别塔倒塌以来,发现与不同的语言以及它们关联的书写系统进行通信的方法一直是一个挑战。
随着全球化的兴起,克服此挑战变得尤为重要。然而,在不同的国家之间有复杂的文化差异,这些差异阻止着全球社会全面地一体化。在计算机工业,这些差异由于多语言显示和互换的限制给国际合作带来了问题。
迎接多国家计算行业的挑战的一个步骤是1988年成立的Unicode Consortium,该组织开发了全球性字符识别标准。该联合会的目标是开发允许对每一种语言的字符进行唯一识别的标准。该联合会开发了Unicode标准,现在是版本2.1,Addison-WesleyDevelopers Press 1997出版了该标准,(可以从http://www.unicode.org下载)。
不幸的是,能够打印和显示许多语言中的一种语言的字符只是迎接国际挑战的一小步。同样重要并且常常更加重要的问题是脚本的布局,字体的特征,以及使文本可读的文本的一般要求。然而,当前语言的字体和脚本形式是不同的,折衷的,并且不遵守相同的规则。例如,典型的英文字体Times New Roman遵守印刷公式,该公式唯一地基于Roman,其中,行高通常被设置为字体的大小的120%(以磅为单位)。术语基于Roman字符。Roman字型的概念包括基线、大写高度、字母高出部分的高度、下伸部分的高度和行高。
书写的语言不遵守诸如默认行长度或字体之类的的字体特征的相同规则。相反,每一种语言和脚本在文化上是从不同的基础派生而来的。例如,某些亚洲脚本使用绘画般地派生而来的点符,而其他亚洲脚本从右往左阅读,并且是从符号派生而来的。甚至在同一语言内,脚本和字体也不遵守预先确定的特征公式。发现用于确定默认字体特征的公式似乎是不可能的。不是发现适用于所有语言的公式,图形设计人员依靠直观上改变行长度、字体和行高,改变每一个脚本,以使呈现令人赏心悦目,并满足对图形设计人员已知的可读性要求。
当前,没有用于确定适用于所有已知脚本的字体特征的解决方案。每一种脚本都是在文化上派生而来的,并具有不同的基础和完全不同的概念。即使适用于每一种脚本内的特定语言的特定脚本的公式,也没有适用于脚本的许多特征的线性关系。例如,对同一脚本中的字体大小或行长度的任何更改都要求考虑可读性的行高度的变化。图形设计人员通常直观地改变行长度、字体和行高。较长的一行字要求更高的行高,才能确保可读性。此外,字体的大小与行高相关,但较大的字体不要求与较小的字体相同的行高。
由于在行高、行长度和变化的字体大小之间没有线性或明显的关系,因此许多计算机应用程序都要求手动更改。此外由于布局问题变得复杂,由于呈现计算机器过多,图形设计人员不知道字型的呈现设备。例如,为网页设计的键入的页,可以在任何大小的屏幕上呈现,让行长度、行高和字体大小的最佳读取大小保持未知。所需要的是一种用于自动确定当前要求图形设计人员的那些特征的方法。需要一种可以计算诸如行高、字体大小和行长度之类的可读性参数的自动方法和系统,以使文字可以在任何显示器,以任何语言和任何大小呈现,而不必进行手动调整。
发明内容
相应地,一种系统和方法自动为不同的显示介质和任何语言的不同的可读性参数确定适当的字体特征。一个实施例是说明通过接收包括字体标识符和语言标识符的数据确定字体特征的方法,以标识的语言并用标识的字体产生代表性的一行字,测量代表性的一行字的特征,以及跨许多字体和许多语言规范化测量值。更具体来说,测量代表性的一行字的特征可以包括测量代表性的一行字中的许多像素行中的黑色与总像素的比,标识具有最高的黑色与总像素比的行,以及与许多字体和语言相比,使用标识的行标识代表性的文本行中的字体特征。
在一个实施例中,测量代表性的一行字的特征进一步包括标识字体高度,在字体高度内,标识包括具有最高的黑色与总像素比的行的第一部分,第一部分包括比平均像素行更暗的第一行像素和最后一行像素,标识第一部分上方的第二部分;以及标识第一部分下面的第三部分。在下面的讨论中,这些部分被称为与“黑河”相关的宽度,“黑河”这一术语用于标识绘制的测量的特征,以确定跨垂直于读取方向的垂线的平均灰度。平均灰度能与许多字体和语言进行比较。
在一个实施例中,使用国际转换器接收包括字体标识符和语言标识符的数据,接收到的数据包括一种语言的文本。语言标识符可以包括国际转换器将文本转换到其中的一个或多个语言。
另一个实施例是说明国际文本布局的方法,文本布局涉及以字体大小呈现的文本字符串,字体大小以全方表示,该方法使用预先确定的字体的国际文本的规范化的代表性行的测量特征,确定最佳的字体大小、行高、列计数和行长度。国际文本的规范化代表性行的特征每个固定距离提供许多簇,每个全方提供许多簇。一个说明一种字体的文本的国际文本布局的系统的实施例包括被配置为保存一个或多个文本参数的结构和布局输入筛选器,连接到数据结构的读取指标引擎,该读取指标引擎被配置为接收文本的一个或多个参数;以及连接到读取指标引擎的文本引擎。文本引擎包括一个被配置为确定字体的图形浓度的模块,图形浓度是以标识的语言中的字体呈现的文本的平均灰度。文本引擎确定的字型特征包括表示每个全方的簇数、字型深度、字型宽度、字型的最暗的水平部分的宽度,以及字型的最暗的水平部分的深度的值。根据一个实施例的另一个系统包括在布局引擎内配置的并连接一个应用程序的国际转换器。国际转换器从应用程序接收数据并向应用程序提供具有转换后的文本的适当的文本布局特征的转换后的文本。在一个实施例中,国际转换器被配置为从应用程序接收一个或多个语言标识符和文本,并提供转换后的文本,并确定结构和布局输入筛选器所需要的参数,以创建可以用读取指标引擎和文本引擎操作的一个或多个数据结构。国际转换器可以是从应用程序调用的外部国际转换器。应用程序可以是服务器或客户端机器,并根据具有适用于调用应用程序的任何显示器的可读性参数的语言标识符显示转换后的文本。应用程序还可以是许多计算机可访问的因特网应用程序,应用程序接收提供转换后的文本的请求,并以许多计算机中的每一台计算机请求的语言传输为许多计算机中的每一台计算机的每个显示器相应地格式化的转换后的文本。
从下面参考附图对某些优选实施例的详细描述中,本发明的其他功能和优点将更加清楚。
附图说明
虽然所附的权利要求阐明了具有特殊性的本发明的功能,但是从下面结合附图进行的详细说明中很好地理解本发明,以及其目标和优点:
图1是一般性地显示了本发明驻留的示范计算机系统的方框图;
图2是显示了根据本发明的一个实施例的计算机系统内的示范数据流的方块图。
图3是显示了根据本发明的一个实施例的图2中所示的数据流的更详细的方框图。
图4是显示了根据本发明的一个实施例的用于确定国际文本特征的方法的流程图。
图5是显示了根据本发明的一个实施例的用于确定国际文本特征的更详细的方法的流程图。
图6是显示了根据本发明的一个实施例的用于确定国际文本特征的更详细的方法的流程图。
图7显示了表示由于应用根据本发明的一个实施例的方法产生的图形和文本的两个图片。
图8是显示了根据本发明的一个实施例的用于自动确定行高和字体大小的方法的流程图。
图9A是显示了实现根据本发明的一个实施例的用于确定字体特征的方法的图形。
图9B是显示了实现根据本发明的另一个实施例的用于确定字体特征的方法的另一个图形。
图10是显示了根据本发明的一个实施例的用于确定字体大小的方法的流程图。
图11是显示了一个曲线的图形,该曲线适用于根据本发明的一个实施例确定涉及视距的文本特征。
图12是显示了如何根据本发明的一个实施例确定最清晰的可聚焦区域的图形。
图13是显示了如何根据本发明的一个实施例应用三角函数确定最清晰的可聚焦区域的图形。
图14是显示了根据本发明的一个实施例的用于自动确定最小和最大字体大小的方法的流程图。
图15是显示了根据本发明的一个实施例用于确定字体大小的数据流的方块图。
图16是显示了根据本发明的一个实施例用于确定文本特征的数据流的方块图。
图17显示了不同语言的相同的字体的示例,显示了根据本发明的一个实施例的宽度变量。
图18是显示了根据本发明的一个实施例的用于自动缩放字体大小的方法的流程图。
图19是根据本发明的一个实施例用于基于一行中的簇数的函数调整行高的方法的流程图。
图20是显示了根据本发明的一个实施例的采用经验法查找的以磅为单位的给定字符大小的可能性的图形。
图21是显示了根据本发明的一个实施例的用于自动确定对默认行高的调整的方法的流程图。
图22是显示了根据本发明的一个实施例的读取指标引擎内的数据流的方框图。
图23是显示了根据本发明的实施例的行长度判断的图形。
图24是显示了根据本发明的一个实施例的计算机系统内的使用国际转换器的数据流的方框图。
图25是显示了根据本发明的一个实施例的结合实施例使用转换器的方法的流程图。
图26是显示了根据本发明的一个实施例的在布局引擎内使用转换器的方法的流程图。
具体实施方式
回到图形,其中,类似的引用号码是指类似的元素,本发明是作为在合适的计算环境中实现来说明的。虽然不作要求,是在由个人计算机执行的诸如程序模块之类的计算机可执行的指令的一般上下文中对本发明进行描述的。一般来讲,程序模块包括例程、程序、对象、组件和执行特定任务或实现特定抽象数据类型的数据结构。此外,那些精通本技术的人可以理解,本发明可以用其他的计算机系统配置来实施,包括掌上设备、多处理器系统、基于微处理器或可编程的消费类电子产品、网络PC、小型机、大型机等等。本发明还可以在任务由通过通信网络链接在一起的远程处理设备执行的分布式计算环境中应用。在分布式计算环境中,程序模块可以位于本地和远程内存存储设备中。
图1显示了可以在上面实现本发明的合适的计算系统环境100的示例。计算系统环境100只是一个合适的计算环境的示例,不对本发明的应用范围或功能作任何限制。操作环境100不应被解释为与示范操作环境100中所示的任何一个组件或组件组合有任何依赖关系或要求。
本发明可以应用于很多其他一般目的或特殊目的的计算系统环境或配置。可以应用本发明的已知的计算系统、环境、和/或配置的示例包括但不仅限于个人计算机、服务器计算机、手提或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程的消费类电子产品、网络PC、小型机、大型机、包括上述任何系统或设备的分布式计算环境。
可以在由个人计算机执行的诸如程序模块之类的计算机可执行的指令的一般上下文中对本发明进行描述。一般来讲,程序模块包括例程、程序、对象、组件和执行特定任务或实现特定抽象数据类型的数据结构。本发明还可以在任务由通过通信网络链接在一起的远程处理设备执行的分布式计算环境中应用。在分布式计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机存储介质中。
请看图1,一个用于实现本发明的示范系统包括一个计算机110形式的一般用途计算设备。计算机110的组件可以包括,但不仅限于,处理单元120、系统内存130,以及连结包括系统内存的各种系统组件与处理单元120的系统总线121。系统总线121可以是任何类型的总线结构,包括内存总线或内存控制器、外围总线,以及使用任何种类的总线体系结构的本地总线。作为示例,而不仅限于,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强的ISA(EISA)总线、视频电子产品标准协会(VESA)本地总线,以及外围组件互连(PCI)总线,也就是通常所说的附加板总线。
计算机110通常包括各种计算机可读的介质。计算机可读的介质可以是由计算机110访问的任何可用的介质,并包括易失性和非易失性介质、可移动以及非可移动介质。作为示例,而不仅限于,计算机可读的介质可以包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现的易失性的和非易失性的、可移动的和非可移动的介质,以用于存储诸如计算机可读的指令、数据结构、程序模块或其他数据之类的信息。计算机存储介质包括,但不仅限于,RAM、ROM、EEPROM、闪存或其他内存技术,CD-ROM、数字多功能磁盘(DVD)或其他光盘存储器、磁带机、磁带、磁盘存储器或其他磁性存储设备,或者可用于存储所需要的信息并且计算机110可以访问的任何其他介质。通信介质通常在一个诸如载波之类的调制数据信号或其他传输机制中实施计算机可读的指令、数据结构、程序模块或者其他数据,并且包括任何信息提供介质。术语“调制的数据信号”是指具有一个或多个其特征集或以这样的方式以便对信号中的信息进行编码的信号。作为示例,而不仅限于,通信介质包括有线介质,如有线网络或者直接有线连接,以及无线介质,如声控、RF、红外和其他无线介质。上述任何几项的组合也应包括在计算机可读的介质的范围内。
系统内存130包括易失的和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)131和随机存取存储器(RAM)132。ROM 131中通常存储了一个基本输入/输出系统133(BIOS),里面包含帮助在计算机110内的各个元素之间(如在启动过程中)传输信息的基本例程。RAM 132通常包含处理单元120立即可访问和/或目前正在对其进行操作的数据和/或程序模块。作为示例,而不仅限于,图1显示了操作系统134、应用程序135、其他程序模块136,以及程序数据137。
计算机110还可以包括其他可移动的/非可移动的、易失性/非易失性计算机存储介质。仅作为示例,图1显示了一个可以从非可移动的非易失性磁介质中读取或写入的硬盘驱动器,一个从可移动的非易失性磁盘152读取或写入的硬磁驱动器,以及可以从诸如CD ROM或其他光学介质之类的可移动的非易失性光盘156读取或写入的光盘驱动器155。其他可用于示范操作环境的可移动/非可移动的易失性/非易失性计算机存储介质包括但不仅限于磁带、快速内存卡、数字多功能磁盘、数字视频磁带、固态RAM、固态ROM等等。硬盘驱动器141通常通过一个诸如接口140之类的非可移动的内存接口连接到系统总线121,硬磁盘驱动器151和光盘驱动器155通常由诸如接口150之类的可移动的内存接口连接到系统总线121。
驱动器和上面讨论并在图1中显示的与它们关联的计算机存储介质,将为计算机110存储计算机可读的指令、数据结构、程序模块以及其他数据。例如,在图1中,硬盘驱动器141存储了操作系统144、应用程序145、其他程序模块146,以及程序数据147。请注意,这些组件可以与操作系统134、应用程序135、其他程序模块136,以及程序数据137相同,也可以不同。操作系统144、应用程序145、其他程序模块146,以及程序数据147在这里使用了不同的编号,以至少说明它们是不同的副本。用户可以通过诸如键盘162和指示设备161(通常是指鼠标、轨迹球或触摸板)之类的输入设备向计算机110中输入命令和信息。其他输入设备(未显示)可以包括麦克风、游戏杆、游戏板、碟形卫星天线、扫描仪或类似的装置。这些和其他输入设备通常通过一个连接到系统总线的用户输入接口160连接到处理单元120,但也可以通过诸如并行端口、游戏端口或通用串行总线(USB)之类的其他接口和总线结构进行连接。监视器191或其他类型的显示设备也通过一个诸如视频接口190之类的接口连接到系统总线121。除了监视器外,计算机还可能包括其他外围输出设备,如扬声器197和打印机196,它们可以通过一个输出外围接口195进行连接。
计算机110可以使用与诸如远程计算机180之类的一台或多台远程计算机的逻辑连接在一个网络环境中运行。远程计算机180可以是另一台个人计算机、服务器、路由器、网络PC、对等设备或其他通用网络节点,通常包括上文描述的关于个人计算机110的许多或者全部元素,虽然在图1中只显示了内存存储设备181。图1中描述的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可以包括其他网络。这样的网络环境在办公室、企业计算机网络、Intranet以及因特网中是常见的。
当个人计算机110在一个LAN网络环境中使用时,它通过网络接口或适配器170连接到LAN 171。当计算机110在一个WAN网络环境中使用时,它通常包括一个调制解调器172或其他用于在诸如因特网之类的WAN 173建立通信的装置。调制解调器172可以是内置的,也可以是外置的,可以通过用户输入接口160或其他相应的机制连接到系统总线121。在网络环境中,涉及个人计算机110的程序模块,或者它的一部分,可以存储在远程内存存储设备中。作为示例,而不限于,图1显示了驻留在存储设备181上的远程应用程序185。显然,这里显示的网络连接是示范性的,也可以使用其他装置在计算机之间建立通信链路。
在后面的描述中,除非特别声明,将参考一个或多个计算机执行的操作和操作的符号表示来对本发明进行描述。如此,可以理解,有时由计算机执行的操作包括以结构形式表示数据的电信号的计算机的处理单元执行的操作。操作转换数据或将它保持在计算机的存储系统中的位置,计算机重新配置或以那些精通本技术的人理解的别的方式改变计算机的操作。在其中保存数据的数据结构是具有由数据的格式定义的特定属性的内存的物理位置。然而,尽管是在前述的上下文中对本发明进行描述的,但是不作为限制,正如那些精通本技术的人理解的,在下文中描述的各种操作还可以以硬件来实现。
根据本发明的一个重要方面,对图2进行了引用,该图表示了诸如用于实现本发明的实施例的
Figure G031093523D00101
客户端的客户端软件的方框图。该方框图显示了应用程序200,该应用程序可以是在图1所示的计算机110上运行的任何应用程序。例如,合适的应用程序包括Microsoft Word、Microsoft Publisher、QuarkXPress、Adobe InDesign等等。显示的应用程序200包括属性页210。属性页210与布局引擎202交互,该引擎可以在计算机110内或可通过客户端-服务器连接进行访问。布局引擎202可以是在计算机110上运行的客户端应用程序或者可以通过网络连接访问到。位于应用程序200内的属性页210向布局引擎202提供属性值,这些属性值是在结构和布局、输入筛选器230上接收到的。除了结构和布局输入筛选器230之外,布局引擎202还包括读取指标引擎240和文本引擎250。属性页数据结构包括布局引擎202所需要的那些元素,以为应用程序200提供用于呈现字体的合适的布局和文本。结构和布局输入筛选器230组织元素,以便输入到读取指标引擎240并向读取指标引擎240提供输入属性。读取指标引擎240对属性进行操作并向文本引擎250发送数据。文本引擎250接收包括字体系列计数据的标识符和语言的标识符的数据,并将计算出的有关文本特征的数据输出,以便供读取指标引擎240使用。
如下面比较详细地描述的,读取指标引擎240对输入值进行操作,以从调用应用程序提供给定约束内的最佳印刷设置。输入约束可以包括,但不仅限于,环境约束和设计约束。环境约束可以包括放大、屏幕大小和分辨率、读者光学增强,以及读者距离。设计约束可以包括字体要求、页边距要求、列要求,以及布局矩形要求。在这些约束内,读取指标引擎240提供包括窗口设置的设置,页和实况内容大小、页边距宽度、最佳的列计数、最佳的列和装订线宽度,以及最佳的字体大小和行高。提供的设置可以根据设计要求是以像素为单位的测量值或以磅为单位的测量值。优选情况下,读取指标引擎240输出的设置适用于已知的语言和字体。
现在请参看图3,图2的方框图以方框图的形式展开,以显示数据结构流。图3显示了属性页210,包括诸如页大小312、页边距314、字体系列316、字体大小318、行高320、列计数322、列宽334和页大小326之类的项目。属性页210中还包括不能被覆盖的值。可以通过方框329修改的以及不能修改的值被提供到结构和布局输入筛选器230。更具体来说,结构和布局输入筛选器230包括元素方框330和文本流呈现器352。元素方框330将数据组织到数据结构中。显示的示范数据结构包括字体系列332、语言334、字体大小变化336、行高变化338、页边距340、页边距灵活性342和列首选项344。数据组织在元素方框330中,并作为读取指标引擎输入属性346提供。文本流呈现器352单独地向读取指标引擎240提供窗口大小354。文本流呈现器352可以是联网的组件,或计算机110内的系统组件。在一个实施例中,布局引擎202与介质集成层360交互。介质集成层360向读取指标引擎240提供介质大小362。介质大小362的一个示例包括图1所示的计算机110的屏幕的大小。
如下面进一步详细讨论的,读取指标引擎240实现本发明的实施例。在一个实施例中,读取指标引擎240与文本引擎250和元素方框230交互。元素方框230保存读取指标引擎输入属性346。元素方框230连接到文本流呈现器352。在一个实施例中,元素方框230和文本流呈现器352一起构成了一个组件,包括了元素方框230中的结构和文本流呈现器252中的一个布局。
读取指标引擎240接收输入,并对它们进行操作,以为调用应用程序中的文本的布局产生有用的设置。设置可以考虑调整大小的用户设置,或者可以自动确定默认大小。文本引擎250是布局引擎202的重要功能。文本引擎250向读取指标引擎240提供输入,以添加有关文本值的语言特定的数据。文本引擎250接收字体系列标识符364和语言标识符366。文本输出引擎250包括到文本引擎250的在内部计算的测量值。更具体来说,如下面的图5比较详细地讲述的,文本引擎250测量呈现的字型行中的每一行像素中的黑白像素的比例,并使用标识提供的字体和语言的代表性文本行的特征的术语提供那些测量值。这些文本测量值368被提供到读取指标引擎240。读取指标引擎240向测量值和输入属性346应用等式等等,以提供输出属性值380,包括页大小382、页边距384、字体系列386、字体大小388、行高389、列间距390、图像宽度392、列宽394、列计数396和文本缩进398。这些属性被返回到调用应用程序200。
现在再请参看图4与图3,在流程图中显示了根据一个实施例的确定文本布局属性的方法。该方法涉及在读取指标引擎240和文本引擎250中执行的功能,如图2和3所示。具体来说,方框410用于接收有关国际文本布局的环境的数据。如图3所示,数据可以包括一个或多个属性页210中的元素、文本流呈现器252和文本引擎250。有关环境的数据包括有关呈现介质的数据,如屏幕大小、纸张大小等等,以及用户定义的或者系统要求的有关页边距、字体大小、列、行高、行长度和语言的参数。方框420用于使用预先确定的字体的国际文本的规范化代表性的行的测量特征和环境的测量特征对数据进行操作。在文本引擎250中测量国际文本的规范化代表性行的特征。读取指标引擎240可以连接到文本引擎250或者可以通过应用程序编程接口(API)调用文本引擎250。在读取指标引擎240中测量环境特征。在接收国际文本的规范化代表性行的测量特征之后,读取指标引擎240对接收到的计算出的数据执行许多操作。向调用应用程序200提供读取指标引擎的输出。
以图5和6中的流程图的形式比较详细地描述文本引擎250的操作。如图所示,在方框510中,文本引擎250接收字体系列标识符364和语言标识符366。在方框520中,文本引擎测量标识的语言和标识的字体的代表性的一行字的特征。优选情况下,提供的测量值允许对任何给定布局中的任何给定语言和字体的字体大小和行高作出公正的判断。在方框530中,文本引擎250跨许多字体和语言规范化测量值。然后,使用测量值判断合适的大小。
在本说明中,大小的术语包括,但不仅限于,行高,行高是从一行字的基线到下一行的基线的距离。基线是写入系统中的字符所在的或者它们从中悬挂的感觉到的行。对于英语字符,基线是指大写和小写字符所在的虚线。X高度是指小写字母的标准高度,大约相当于字体中的小写x的高度。大写高度是指一行字中的大写字母的高度,不等于但常常等同于上行字母的高度。在某些字体中,上行字母比大多数大写字母的高度高或低。字母高出部分是小写字母l、t、f、b、d、h、k的延伸到x高度上方的部分。字母下伸部分是指小写字母g、j、p、q、y的在基线下面延伸的部分。
全方是等于字体的大小的度量单位。如此,全方是只要字体大小发生变化就变化的可变单位。本说明中的全方是测量的字的平方。例如,如果字体是以12磅字呈现的,全方就是12磅高和12磅宽。如果字体是以100磅字呈现的,那么全方就是100磅高和100磅宽。因此,全方用作字型的非代表性大小单位,并基于字型的设计方式,而不基于实际的特征。结果,某些字体设计可以具有在全方之外的墨迹,如泰文,还有的设计占用的空间比全方小得多,如朝鲜语。对于本说明,“簇”是指分析后的字体和文本的呈现单位。具体来说,簇是由可以在其中在电子文本的行中插入光标的点之间的许多打印的物质。术语“簇”是无处不在的,因为它是由在行中缺乏空间标识的,而不是由击键、字符或点符标识的,因此,适合于所有语言。在拉丁语字体中,簇和字符可以是等价物。
现在将参考图6,比较详细地对图5的方法进行描述。图6中描述的方法提供了任何字体和任何语言的文本的任何字型的灰度的数字特征。数字特征基于在一页上摊开字型时读者看到的内容,即,在读取操作中眼睛所跟随的许多暗行。由于这些行的大小和它们之间的间距随不同的写入系统、脚本类型、语言和文化而变化,测量值适用于任何语言的任何写入系统。一行文本中的带墨迹的空间此处被称为“黑河”。具体来说,“黑河”是指给定字体和语言的单行文本中由墨迹占用的总空间,包括代表性的一行字中的墨迹最高点和最低点。
图6描述了对黑河进行测量的方法。在接收字体系列标识符和语言标识符之后,如方框610所示,文本引擎250测量代表性的一行字中的许多像素行中的黑色与总像素的比例。在一个实施例中,文本引擎250测量呈现的一行字中的每一行像素中的黑色与总像素的比例。在对具有黑色像素的每一行像素进行测量之后,黑色与总像素比例最高的行被规范化为黑色,如方框620所示。所有其他行的测量值也被规范化为该黑色点。规范化能对各种粗细的字体进行等价测量,以便可以跨所有字体规范化字体的黑色点。例如,黑河的最暗部分,正如以全方的1/200测量的,被视为100%黑色,无论在现实中它黑到什么程度。黑河的所有其他部分的灰色深度都是作为0%(白色)和100%(规范化的黑色,或黑河的最暗的部分)之间的一个值测量的。计算平均比例,然后,标记比平均值更暗的第一行像素和最后一行像素。
方框630用于使用黑色和总像素的测量比例标识字体高度。在方框640中,文本引擎使用字体高度并标识第一部分,此处是指包括具有最高的黑色与总像素比的行的“通道”,第一部分包括比平均像素行更暗的第一行像素和最后一行像素。在拉丁语文本中,通道等同于x高度。在其他脚本类型中,没有x高度的直接等价物。由于在一行文本中呈现的每一种语言中的每一种字体具有该行文本中的黑暗部分,而不是x高度,此处的实施例是指相对于通道的通道和测量值。在此处描述的许多实施例中,通道是用于确定一个脚本中的一行文本的适当的行高和其他设置的重要度量单位。在方框650中,文本引擎250标识第一部分上方的第二部分。在方框660中,文本引擎250标识第一部分下面的第三部分。第二部分和第三部分此处分别被称为“前浅区”和“后浅区”,统称为“浅区”。在大多数脚本中,在标识的通道的两侧通常有浅区。浅区是一行字具有墨迹的区域,但不是每一个字符都延伸到其中。在拉丁语中,字型具有相当于字母高出部分和字母下伸部分的浅区。具有大量的重音符号的语言通常具有包括重音符号的浅区。大体上均匀的语言可以被标识为具有一个几乎没有浅区的通道。许多亚洲语言将被标识为只有一个通道并且没有浅区。这些语言具有相同大小的河和通道。在方框670中,文本引擎250将测量值图形化,以标识对齐点、暗度的峰值等等。
在标识通道和后浅区之后,方框680用于确定每一部分中的黑色与总像素平均比。各个部分通过提供三个测量值的宽度描述特定字体的一行字,包括通道的宽度、前浅区的宽度以及后浅区的宽度。
在一个实施例中,文本引擎250将测量值返回到读取指标引擎240,包括一个或多个黑暗的像素行的黑色与总像素的比,整个代表性字行的黑色与总像素的平均比、前浅区的宽度,前浅区的黑色与总像素的比,通道的宽度,通道的黑色与总像素的比、后浅区的宽度,后浅区的黑色与总像素的比。当语言是垂直书写时,如某些亚洲语言,可以通过测量垂直语言的垂直文字的列代替测量水平语言的横排文字的行进行相同的测量。正如那些精通本技术的人借助于本说明所能理解的,确定垂直语言特征的原理是相同的,例如,垂直文字的通道将是与横排文字的通道的90度的置换。
在其他实施例中,可以按需要由读取指标引擎240返回其他测量,与三部分不同的细微度的对齐点,或对应于最暗的行的测量值,或任何创建的图形中的峰值。
请参看图7,该图显示了根据一个实施例的具有对应的图形的模拟文本的图片。图片710显示了serif Latin字体,显示了,峰值一般在大写字母的顶部、在x高度、在小写“e”的交叉栏、在基线,以及在下伸部分。不同的是,图片720用不同的和更多居中对齐点显示了非拉丁语脚本形式。
返回的另一个测量值可以是相对于全方的测量值。在文本引擎250和在读取指标引擎240中,使用全方建立水平和垂直测量值。可以由文本引擎250返回的另一个测量值是每个全方的簇数,该测量值还可以是返回到读取指标引擎240的测量值。每个全方的簇数相当于字体的高度与平均簇宽度的比。
可以对读取指标引擎240有用的其他测量值包括作为相对于全方的实数的黑河的宽度;作为相对于全方的实数的前浅区的宽度;作为相对于全方的实数的后浅区的宽度;通道和每一个浅区的作为实数的平均深度,以使在规范化之后0=全白色,1=全部黑色;每个全方的平均簇数;代表性的文本行中的总簇数。宽度值可以作为相对于全方的实数被返回到读取指标引擎240,并且深度值可以作为相对于规范化的黑点的实数返回到读取指标引擎240。一个实施例中的总簇数,被预先存储在读取指标引擎240或文本引擎250中的语言表中。
图8以流程图显示了一个示范方法,显示了读取指标引擎240和文本引擎250内的操作之间的交互。在方框810中,用户在一个应用程序中标记文档。标记包括语言和字体的指示。指示可以通过系统链路或通过用户输入进行。在方框820中,标识语言和字体的指示被传递到读取指标引擎240。在一个实施例中,文本引擎250暴露了进行测量时读取指标引擎240可以调用的字体对象和API。如果在方框822中读取指标引擎240实例化字体对象,那么字体和语言标识符被传递到文本引擎250。如果不是,读取指标引擎240在不调用文本引擎250的情况下对语言和字体进行操作。例如,如果读取指标引擎240具有一个带有该字体和语言的必需的测量值的表,则没有必要调用文本引擎250。在方框828中,在文本引擎250内,通过将语言和字体与预先确定的表进行比较,以检索有关字体特征的数据,或者通过检索该语言的代表性的文本字符串,来使用语言和字体标识符。如果检索代表性的文本字符串,则向语言应用字体或字体系列,以在方框829中创建代表性的文本字符串,该方框可以是单行文本或其他适当的可测量的格式。在方框830中,文本引擎测量黑河、通道和浅区。在方框832中,然后文本引擎250将黑点和所有其他相关的值规范化为百分比。在方框840中,文本引擎250返回宽度和深度测量值,文字的每个全方的平均簇数,代表性的一行文字中的总簇数和诸如上文描述的那些测量值。
在一个实施例中,文本引擎250以1/200的全方间隔测量代表性的文本行中的像素行,并作为平均灰度级别记录代表性的文本行中的黑像素与总像素的比。可以作为0-255之间的值,或者作为两个小数点的百分比来进行测量。在方框850中,在测量值被传递回到读取指标引擎250之后,读取指标引擎250计算字体大小和行高。在方框860中,用户在具有大小和空格适当的字型的任何查看表面上看到的页。现在请参看图9A,图形900显示了在文本引擎250计算图8描述的测量值之后的测量的示例。该图形显示了Times New Roman的测量值,如图7中所示的图形的规范化版本。所示的测量值包括从0(黑)到255(白)测量的每一行像素的平均灰度。图形900显示了作为百分比显示灰度的规范化版本。在图形900中规范化了原始数据,以使字型的最暗的行作为绝对黑或100%对待,最亮的像素是0%。更具体来说,图形900显示了以磅为单位表示的沿着X轴910的代表性的文本行的高度,作为百分比沿着Y轴920的每一行像素的平均灰度。规范化的测量值以实线902显示,通道和浅区的绝对测量值以虚线909显示,灰度的中间值作为行906显示。图7中显示的图形710与图形900的比较显示了对齐点930和940,还以此字体和语言显示了x高度940和基线930描绘的通道。线906与标准曲线902的交集位于数据点24,下一个交集位于数据点71。字体的总高度是91。对于全方方框100,一组相对于全方的实数将是:前浅区=.24;通道=.45;后浅区=.20;以及黑河=.91。
图9B用虚线950显示了具有相同的标准曲线902的图形990,表示每一个浅区和通道的平均深度。作为百分比的平均深度值可用于确定行高值。返回的值可以包括前浅区平均深度0.099;通道平均深度0.61;以及后浅区平均深度0.038。
从文本引擎250获得的测量值被返回到读取指标引擎240。读取指标引擎240使用测量值的目的多种多样。读取指标引擎240的一个功能是确定任何语言的可读的文本的默认字体大小。现有技术的默认字体大小使用以磅为单位的硬连线数字或基于打字机上的Elite和十二点活字的字体大小的像素,如12pitch或10磅,以及10pitch或12磅。读取指标引擎240采取新的方法,通过确定任何给定语言或脚本类型的文本的相应的大小,基于语言和文化的读取特征,以及字体的呈现的物理特征,是通过文本引擎250和环境因素确定的。读取指标引擎240可以是自动的和可扩展的,并可以使用文化特定的输入和用户可调整的输入。更具体来说,读取指标引擎240应用根据一个实施例的方法,该方法确定字体大小作为与查看介质和语言的特征相关的特征的函数。查看介质的特征包括确定查看介质的默认距离,该距离可以按需要由用户输入修改。
请参看图10,一个流程图显示了一种用于计算处于显示器的默认距离的字体大小的方法。在方框1010中,该方法使用任何显示器的最小距离的指数关系确定显示器的最小和最大默认距离。在一个实施例中,最小距离被设置为“12”,最大距离大约被设置为“27”。显示器越大,指数曲线迅速地加速到更大的距离。函数ad2+b=D是用于确定默认距离的示范指数函数。在该函数中,a表示d2的常数乘数,b表示与ad2相加以使a+b=12的常数,或者读者可以查看一页字的最小距离。D和d是实际读取距离和显示大小的图形上的可观察的点。小写字母d表示以英寸为单位的显示表面的对角线;D表示以英寸为单位的显示表面的距离。在一个示例中,如果a和b被求解,a=0.02353,b=11.97647,磅通过乘以72进行了转换,给出了一个指数曲线,如图11的图形所示。如图所示,x轴表示以通用术语表示的显示器的对角线,y轴1102是以通用术语表示的显示器的距离。虽然图11中的图形显示的是英寸,如果示例被转换为另一个单位,还将必须进行a和b常数的类似的转换。
在确定默认显示距离之后,该距离被读取指标引擎240用来确定预先确定的字体的字型的默认大小。更具体来说,在方框1020中,使用视角和字符密度的三角函数确定适用于在一个环境中读取的预先确定的字体的字型的大小。正如此处所使用的,预先确定的字体的字型的大小被称为字体大小。视角被用来确定查看介质上的最清晰的可聚焦区域。要确定此区域,该函数使用视角乘以查看表面的距离的一半的正切的两倍。在另一个实施例中,用于确定距离的视角是由读者特定视角的一个或多个输入或大约为0.75度的标准视角。读者特定的视角可以反映读者的视觉灵敏度。例如,读者特定的视角考虑到黄斑变性、视力障碍、视力清晰度、管状视、眼睛疾病、近视眼、远视、诵读障碍,以及散光中的一个或多个。为演示视角,图12和13是显示了如何确定最清晰可聚焦区域的图形。如图所示,眼睛1202从视距1206看到查看表面1204。对人的眼睛能力的研究表明,.75度视角1208是眼睛1202的最清晰的焦距的最大角度。图13中显示了确定最清晰的可聚焦区域的长度1210的方法。通过使用三角函数,长度1210可以被描述为视角1304的一半的正切1302的两倍。基于各种研究,人的眼睛的视角大约为0.75°。侧视角是10-12°。除了在其中可察觉到数据的视力的范围之外,但不在焦距的峰值,12°大约为在头开始自然而然地移动以帮助眼睛定位之前眼睛的移动范围。在一个实施例中,在最佳行长度中大约有16个视角固定距离。在文化上定义了簇数。对英语行长度的研究通过目标研究和通过对书设计的进化的观察进行了很好的描述。在英语中,研究表明,每个视角固定距离大约有4个立即可识别的类型的字符。如此,一个实施例使用每行4x16=64簇的最佳英语行。观察表明,每个簇比英语包含更多信息的字符集要求每个固定距离有较少的簇数才能加速理解。由于这不是一个绝对关系,一个实施例使用一个表,该表一种语言一种语言地指出对于该语言每个视角固定距离将有多少簇。该表可以一种语言一种语言地显示或按语言组显示,包括但不仅限于罗马、阿拉伯语、泰文、亚洲和印度语。这些分组是按书写系统的特征进行的。任何单个语言可能会具有不同的或更好的最佳值。
回过头来看图10,方框1020是使用字符密度确定字体大小的情形。字符密度可以通过将每个全方的簇数除以每个固定距离的簇数来确定。语言类型的每个固定距离的簇数是与许多语言中的一种语言关联的常数,许多语言中的每一种语言都具有表示信息浓度以便以该语言读取的常数。每个全方的簇数是对图形浓度的描述。因此,字符密度可以被描述为字符的图形浓度和信息浓度的函数。在一个实施例中,图形浓度和信息浓度是依赖于语言的,包括根据每个最清晰的聚焦区域读者可查看的信息量确定的语言的读取特征。根据一个实施例,读取指标引擎240包括或每个视角固定距离的簇的语言表或可以对其进行访问。单个视角固定距离中的可理解的最大簇数可以通过一种语言一种语言的调查来确定,并生成一个表,或者可以由可以访问读取指标引擎240的用户输入。每一种语言都以一个分数定义了您可以看到多少簇,如侧角度的1/16。因此,每一种语言每个侧视角都具有可确定的簇数。此值可用于确定行长度、列宽等等。在一个实施例中,对于每一种语言,一个行长度中可以查看的簇数大约为十。为一种语言确定的簇数可以乘以一个表示字母之间的比较的数字。或者,确定一行中的簇数,并将簇数除以一个表示该文本行中的人眼睛的固定数的常数,便可以确定每个视角固定距离的簇数。一个或多个语言的常数大约为16。每个固定距离的簇数乘以侧视场中的视角固定距离数,这就提供了每个可读行的最佳簇数。侧视角是一个比视角更宽的角度,一般是指眼睛可以看到可以看到最大可聚焦区域的角度。在一个实施例中,侧视角大约为10度。如上文所讨论的,视角大约为.75度,在每个视角焦距区域两个和四个字母之间。使用人眼睛在一行文本中的固定数的常数16,并乘以每个视角固定距离的簇数,每一种语言的每行的簇数可以如表1所示的那样确定。
表1
语言        每个固定距离簇数    每行固定数    每行簇数
            (Cpf)               (16)          (Cpl)
英语        4                   16            64
法语        4                   16            64
德语        4                   16            64
希腊语      3.7                 16            59.2
俄语        3.5                 16            56
阿拉伯语    4.4                 16            70.4
日语        1.8                 16            28.8
中文        1.8                 16            28.8
朝鲜语      2.2                 16            35.2
请参看图14,确定字符密度的方法包括在方框1410中确定一种字体的每个全方的簇数。在一个示范实施例中,每个全方的簇数从文本引擎250派生而来。在方框1420中,确定字体的每个全方的簇数与预先确定的视角内的可见簇数(在下文中,被称为每个固定距离的簇数)之比。如上文所述,每个固定距离的簇数可以从诸如表1之类的来源中派生或检索,对于每一种语言的每一种字体,该值是不同的。在方框1430中,将每个全方的簇数与每个固定距离的簇数之比乘以查看介质的以磅为单位的宽度,以获得给定视距的字体系列的最佳磅值。在方框1440中,可选地根据用户输入的标记或其他来源缩放所获得的字体大小。在方框1450中,确定最小字体大小和最大字体大小。更具体来说,在一个实施例中,最小字体大小基于在单个视角固定距离中用户可以理解的最大簇数。最大字体大小基于在单个视角固定距离中用户可以理解的并且仍对该行字仍有意义的最小簇数。在另一个实施例中,最小和最大字体大小可以基于预先确定的最佳字体大小的百分比确定,例如,每个固定距离的簇数的表值的±25%(Cpf)。这可以转化为最小字体大小,为.8乘以最佳字体大小,最大字体大小,为1.33乘以最佳字体大小。在另一个实施例中,最小字体大小可能由呈现引擎基于输出分辨率和完整而成功地呈现该字体所要求的最小像素数确定的。
现在请参看图15,该图显示了一个用于调整一种字体的文本以确保在查看介质上获得最佳的可读性的系统1500。该系统包括客户端应用程序200,包括了保存一个或多个文本参数1510的数据结构。该系统进一步包括连接到客户端应用程序200的读取指标引擎240,读取指标引擎240被配置为接收文本的一个或多个参数1510。读取指标引擎240包括被配置为确定字体的字符密度的模块1520,被配置为将字符密度乘以眼睛的最清晰的焦距区域以产生最佳的字体大小以确保可读性的模块1530。字符密度模块1520通过API 1540连接到文本引擎250检索该字体的每个全方的簇数1550。字符密度可以通过将每个全方的簇数除以每个固定距离的簇数来计算。在一个实施例中,读取指标引擎240进一步包括被配置为通过字体的最佳大小、语言类型的每个固定距离的簇数、每个全方的簇数和查看介质的距离的函数确定最佳列宽的模块。系统1500进一步包括针对查看介质1560的呈现设备,查看介质可以是打印页、计算机屏幕、个人数字助手、全息图像、广告牌、电影屏幕和一副眼镜中的镜片。作为示例,如果语言是英语(每个固定距离的簇数为4.0),监视器的距离为1368磅(19英寸),字体是Times New Roman(每个全方2.58簇),那么为确保清楚可读,最佳的字型大小由2x正切0.006544x1368x2.58/4.0=11.5磅字型给出。对于不同的字体LinotypePalatino,该字体每个全方只有2.33簇,最佳字型大小由2x正切0.006544x1368x2.33/4.0=10.4磅字型给出。
不同的语言和脚本形式会产生显著不同的结果。例如,阿拉伯语Times New Roman。每个固定距离的簇数的文化测量值是4.4而不是4.0,每个全方的簇数是2.97。因此,在阿拉伯语中Times New Roman的最佳可读字型大小是2x正切0.006544x1368x2.97/4.4=12.1磅字型。
虽然必须为每一种语言组确定每个固定距离的簇数值,但是还可以对该公式本身针对管状视、查看表面的距离,以及其他视觉障碍进行辅助功能调整。这些将对公式的输入进行操作以更改提取的默认值。还可以自动进行一些特殊的调整以帮助使文本适应不同的查看条件,如多个列、小型设备,以及大屏幕、高分辨率的监视器。在另一个实施例中,可以根据用户输入修改侧视角、视角和字符密度,以帮助残疾用户或视力敏锐的用户。对于管状视用户,其侧视角的角度较小。对于视力敏锐的用户,其侧视角角度较大。对于患有黄斑变性的用户,其视角较小。
现在请参看图16并结合图7和8,在图8的方框850中,计算字体大小和行高。在本技术中已知,行高要求是随着行的长度和不同的字型大小而变化的。甚至对于相同的字体大小,行高要求也是随着每一页的列数而变化的。根据此处的实施例,行高是用不同的方法根据可用的信息来确定的。在一个实施例中,在如上文所讨论的那样确定字型大小之后,该大小字型的行高也已确定。然后可以基于一行的簇数、行长度等等处理行高。
现在将参考图16描述计算行高的一种方法。如图所示,读取指标引擎240从文本引擎250接收与给定语言的给定字体的灰度有关的许多计算值。这些计算值包括每个全方的簇数1610、河宽度1620、河深度1630、通道宽度1640和通道深度1650。在读取指标引擎240内,最佳可读行高乘法器模块1660计算行高。
更具体来说,一个实施例是基于一种字体的文本的一般河和通道与该字体的字符密度之间的对比关系来计算行高。下面将详细描述对于确定行高有用的文本引擎250中的五个输出1610、1620、1630、1640和1650。第一个是河宽度。作为全方平方的乘数,从字体中的墨迹最顶部到字体中的墨迹最底端,测量河宽度(Rw)。河宽度通常不与全方平方相同,因为大多数拉丁语和亚洲语言字体的河宽度比全方平方小得多,大多数阿拉伯语和泰文字体的河宽度比全方平方大得多。例如,请参看图17,英语Tahoma 1710的呈现位于阿拉伯语Tahoma 1720旁边。Tahoma中的全方的字体大小在行1730和1740之间。该图表明,英语Tahoma小于全方,而右边的阿拉伯语Tahoma则比全方大得多。
回过头来看图16,规范化的河深度(Rd)1620涉及文本引擎250内的计算值,这些计算值被规范化为测量的文本的代表性行中的最暗的像素行,如上文图8所述。所有深度表达式都可以相对于最暗的像素行。深度是黑色的平均值,并表示为给定跨度的文本中的像素的总比例。RwxRd是河的总灰度值。
通道的灰度值是使用相同的公式但基于河通道宽度(RCw)和河通道深度(RCd)计算出来的。通过将通道的灰度值除以河的总灰度值,即可计算出通道和河的其余部分之间的反差度。
最佳可读行高乘法器模块1660是这样确定的,通过将通道灰度值与总灰度值之比除以字体的字符密度(Cpm)以产生应该与行高的字体大小相加的字体大小的一个分数。通过将1与此数字相加,系统生成一个最佳行高(LO)作为字体大小的乘数。下面的等式概述了最佳可读行高乘法器模块内的操作:(1+((RCwxRCd)/(RwxRd)/Cpm))xLΔ=LO
在一个实施例中,在确定最佳行高之前,将行高乘以标记行高比例(LΔ)。
在另一个实施例中,来自文本引擎250的计算值包括Bh=前浅区宽度;Bd=前浅区深度;Ah=后浅区宽度;Ad=后浅区深度;RCw=通道宽度;RCd=通道深度;Cpm=每个全方的簇数;FS=默认字体大小,下面的等式是在最佳可读行高乘法器模块1660内确定的,以计算行高:FS/(((BhxBd)+(AhxAd)+(RCwxRCd))xCpm)=行高
换句话说,河的三个部分的深度乘以宽度再乘以每个全方的簇数的总和,再除以字体大小,即为行高。如此,十磅Times New Roman将按如下公式计算:10/(((0.24x0.09)+(0.45x0.6)+(0.22x0.04))x2.58)=10/(0.0216+0.27x0.0088)x2.58=10/0.775032=12.9
同一方法的更简单的版本使用下面的公式:FS/(RdxRwxCpm)=L
在其他实施例中,用于文本高度的120%的英语文本的典型行高调整用来全球化其他语言的行高。通过使用此已知的120%,在图18中描述了确定行高的另一种方法。在方框1810中,通过采用字体大小的120%来确定默认行高。在方框1820中,通过应用预先确定的字体的单个簇的平均宽度的指数函数来修改默认行高。更具体来说,该函数可以是任何字体的任何单个簇的平均宽度和字型的实际高度的平方的总和的平方根。可以在文本引擎250中为任何国际字体确定任何簇的实际高度和宽度。一个实施例使用下面的等式:1.2FS(Rw 2+(1/Cpm 2))1/2,该公式是一个指数函数,具有FS作为默认字型的大小;1.2作为用户输入或标准默认行高乘数;Rw作为每个全方的从其墨迹顶部到其墨迹底部的字型的实际高度;Cpm作为每个全方的簇数。
作为示例,对10磅的默认字体大小,下面是计算出的行高:10x1.2x(0.912+1/2.582)1/2=12x0.9891=11.9
因此,Times New Roman 10磅的最佳行高是11.9磅。然而,同一公式,当应用到10磅Linotype Palatino字体(该字体每个全方墨迹高度为1.01,每个全方有2.33簇)时,将产生13.2磅的最佳行高。
在另一个实施例中,如果行长度增大,则修改行高。请参看图19,一个流程图显示了基于文本行的物理长度或一行中的簇数的函数调整行高的方法。在方框1910中,确定需要的每行字的簇数和以每行的簇数表示的最佳默认行长度。在方框1920中,通过使用需要的每行的簇数和以每行的簇数表示的最佳默认行长度,按一个商缩放原始字体大小。
一旦根据字体大小确定了行高,更改字体大小将会改变行高。如果字体大小变大,发现行高不是线性关系。在一个实施例中,通过应用一个具有指数关系的函数,可以发现,随着字体大小的变化,行高也有所变化。指数函数可以考虑每个全方的簇数。原始字型大小是已知的,该字型大小的行高也是已知的。比较大的字型大小变化也是有界的。行高不能小于字型本身。因此,请参看图20,图形2000显示了以磅为单位的给定字体大小的采用经验法计算的行高可能性。x轴2002表示以磅为单位的字体大小;y轴2004表示以磅为单位的行长度。45度线2010显示了等于字体大小的行高。随着字体大小的增大,行高的大小不遵守线性关系。相反,随着字体大小的增大,要求的行高却变小,如线2020所示。在一个实施例中,一种确定行高的自动方法使用指数函数。该函数使用每个全方的可变的簇数。具体来说,已经发现,可以使用幂函数,该幂函数使用1.02和1.07之间的一个常数的幂。此外,还已经发现,对于所有字型都有用的一个常数可能是1.047。此常数大约等于3。另一个变量涉及向后兼容性。如果应用30磅字型的20%行高,另一个字体大小必须涉及并为同一字体大小提供相同的行高,不管该方法在哪里开始。
现在请参看图21,一个流程图显示了用于确定字体大小的方法。在方框2110中,确定与预先确定的可读行长度和字体大小的相关的行高的相应的默认说明。在方框2120中,确定不同于指定默认值的字体大小所产生的对字体大小的值的任何更改。已知更大的字型要求较小的行高作为字体大小的一个因子。现有技术中的方法要求设计人员用肉眼调整。如果字之间太紧,则设计人员应增加行空间。如果字之间太稀疏,则设计人员应减少行空间。在方框2130中,通过确定最佳默认字体大小和实际字体大小之间的差来自动确定新行高,在方框2140中,通过将一个常数用字体大小中的差的幂进行乘方运算来调整行高。等式:(1.047(FSO-FSA)x(LO/FSO-1))xFSA=LA表示根据该方法确定新行高的一个实施例。在该等式中,FSO表示原始默认字体大小;FSA表示新字体大小;LO表示原始默认行高;LA表示新行高。
作为示例,为求出字体大小为14磅的Times New Roman的新行高,其默认值可以根据上文描述的方法来确定,字体大小为10磅,行高为12.9磅,等式如下:(1.047(10-14)x(129/10-1)+1)x14-((1.047.4x.29)+1)x14=((.8321x.29)+1)x14=1.2413x14=17.38
读取指标引擎流
现在请参看图22,一个流程图显示了读取指标引擎240如何对输入进行操作以及如何共享每一个计算出的测量值以确定其他测量值。图22显示了上文描述的实施例与读取指标引擎240的整个系统的关系。
方框2202表示“每个固定距离的簇数”语言表或其他来源的输入。方框2202流到方框2204,而方框2204输出每个最佳可读行的簇数。计算值可以根据表1获得。
方框2206表示从计算机系统的输入,提供一个查看介质的大小值,如屏幕对角线。方框2208表示用于确定查看介质的默认距离的计算值。上面参考图10描述了一种用于确定默认距离的方法。方框2210提供了可以由用户或通过标记页输入的“字体比例”输入。此类标记可以类似于<Element FontScale=″1.2″>Elementcontent.</Element>。
方框2210、2212、2208和2202中的每一个方框都提供用于计算最佳可读字体大小的输入。方框2214表示计算最佳可读字体大小的过程。如上文所讨论的,求得最佳字体大小的过程包括首先确定在预先确定的距离预先确定的视角内查看介质上的水平面积,以及根据适用于给定语言和字体的每个固定距离的簇数的大小字型。在一个实施例中,字体比例2210提供了一个用于确定字体大小的乘数。
方框2214提供了方框2216的输入,用于确定最小和最大字体大小。在一个实施例中,最小和最大字体大小基于与最佳字体大小的25%的偏差,或0.8乘以最小字体大小的预先确定的字体大小,或1.33乘以最大字体大小的预先确定的字体大小。在另一个实施例中,单个视角固定距离中可理解的最大簇数确定了一种给定语言的最小字体大小和最大字体大小。
方框2218、2220、2222、2224可以表示来自文本引擎250的输出,它们提供了用于确定最佳可读行高乘法器2228的输入,如上文参考图15所述的。在一个实施例中,方框2228从诸如<ElementLineHeightScale=″1.5″>Element content.</Element>之类的标记或用户输入接收行高比例输入2226。
在2230中,确定每一行的最小和最大簇数。最小和最大行长度有助于确定可以由用户输入的列首选项。在一个实施例中,列首选项“低”提供了以簇数表示的最佳可读行长度,以便进行全面的读取。选择“中”、“高”和“最大”列首选项时,随着簇数的变少,行逐渐变短。“单个”列首选项扩展了以簇数表示的行长度,超出了普遍的读取标准。
在一个实施例中,增量是均匀的,从每一行的最佳簇数的二分之一到最佳值的1.167倍。为确定以簇数表示的最小行长度(Cm)和以簇数表示的最大行长度(CM),可应用下面的等式:Cm=0.5xCpl;CM=1.167xCpl
每一行的最小和最大簇数2232,以及每一最佳可读行的簇数2204,最小和最大可读字体大小2216和每个全方的簇数2212是方框2232的输入,在方框2232中,确定最佳最小和最大列宽。
最小列宽可以通过计算最小字体大小和将最小字体大小乘以一行上允许的最少簇数来确定。下面的等式分别确定最佳、最小和最大列宽:CWo=FSo÷CpmxCpl(每个最佳可读行的簇数);CWm=FSm÷CpmxCm(每个最佳可读行的最小簇数)CWM=FSM+CpmxCM(每个最佳可读行的最大簇数)。
在确定最佳、最小和最大列计数2242之前,读取指标引擎240首先确定潜在的实况内容宽度2240。实况内容区域是位于一页的页边距内的布局区域。潜在的实况内容区域是窗口的大小和用户定义的页边距首选项之间的差。页边距是基于页的最短尺寸计算出来的。因此,求值步骤首先是确定是页的垂直尺寸还是水平尺寸为最短。然后,将最短的尺寸减去标记中请求的页边距的量。结果就是实况内容区域。用于确定潜在的实况内容宽度的输入包括窗口宽度(WW)2234、窗口高度(WH)2236,以及用户页边距首选项(MP)2238。如此,为确定潜在的实况内容区域的宽度(LWO),将WindowWidth(以磅为单位)减去标记MarginPreference(MP)并乘以窗口最短的尺寸:WW-(最小值(WW、WH)xMPx2)。
潜在的实况内容2240和最佳、最小和最大列宽(分别是CWO;CWm和CWM)2232提供输入以确定最佳、最小和最大列计数(分别是CCO;CCm和CCM)2242。在一个实施例中,为确定列计数,一个等式计算可以适合于潜在的实况内容宽度的每一个宽度的列数。输出提供适合于该页的最小、最大和最佳列数的范围。可以通过将列宽分为潜在的实况内容宽度为最小、最大,和最佳列宽计算出可能的列计数(CC)。下面的等式适用于确定最佳、最小和最大列计数:CCo=LWo÷CWo;CCm=LWo÷CWM;CCM=LWo÷CWm.
请参看方框2244和2246,在列计数确定之后,读取指标引擎240使用该计数和用户输入的列首选项确定首选的列的实际数量。
实际数量计算是需要的,因为方框2242的等式不产生整数列。在方框2242中,通过列首选项2244请求的实际列数被四舍五入到相应的整数列(CCA)。在一个实施例中,方框2246是可求值的。如果“ColumnPreference”=“单”(“0”),那么CCA将自动等于1。如果“ColumnPreference”=“低”(“1”),那么,CCA将从CCO四舍五入。
如果“ColumnPreference (CP)”=“中|高”(“2|3”),那么必须计算CCA
如果“ColumnPreference(CP)”=“最大”(“4”),那么将从CCM四舍五入CCA
“中”和“高”计算将是“最佳”和“最大”之间的三分之一和三分之二。因此,CCA可以从下列等式四舍五入:
((CCM-CCO)÷3)+CCO(Medium)
(((CCM-CCo)÷3)x2)+CCO(High)
下面的伪代码演示了方框2246的操作:
IF CP=0
      THEN CCA=1
      ELSE CCA=(((CCM-CCO)/3)x(CP-1))+CCO
如果被请求的列数具有超过0.75的分数列,则列的整数的舍入将是上舍入,否则即为下舍入。值0.75可以由用户或作者输入来改变。
在方框2248中,确定实况内容宽度,并从方框2232最佳、最小和最大列宽,方框2240潜在的实况内容宽度,方框2244列首选项,和方框2246列计数接收输入。
由于实际的实况内容宽度(LWA)绝不会大于以前计算的潜在的实况内容宽度(LWO),计算将把计算的值与潜在的宽度进行比较,以验证哪一个较小。较小的哪个是决定性的。计算实况内容宽度也有基于用户的列首选项的标记的特殊情况。如果列首选项=“单”,在方框2248提供能适合每一行簇数2204和字体大小2214的参数的页上的列大小。如果列首选项是“低”,读取指标引擎240尝试一个最佳读取体验。较高的列首选项可以受到可用的空间的宽度的限制。下面的伪代码演示了确定实况内容宽度的方法。
IF CP=0,
    THEN Minimum of CWM or LWO=LWA
    ELSE
       IF CP=1,
           THEN Minimum of(CCAxCWO)+(CWOx(CP-1)
x.075)or LWO=LWA
         ELSE LWO=LWA
列计数2246和实况内容宽度2248是对方框2250的输入,该方框计算实际装订线宽度(CGA)。装订线宽度可以相当于标记属性列间距。一个区别在于,方框2250的度量单位可以基于列的小部分,但可以稍微影响多列散布中的列的度量。下面的等式可以确定实际装订线宽度(CGA):LWA÷CCAx0.075=CGA
请参看方框2252,一旦确定了实际装订线宽度,便可以确定实际列宽(CWA),该值相当于标记属性ColumnWidth。一旦列计数、实况宽度和装订线已知,则可以使用下面的等式计算准确的列单位:(LWA÷CCA)-((CCA-1)xCGA)=CWA
请参看方框2254,读取指标引擎240使用来自方框2252、2212、2214和2230的输入计算实际字体大小(FSA)。在一个实施例中,实际字体大小是这样计算的:计算布局的建议的字体大小(FSr),然后对照最小字体大小和最大字体大小检查建议的字体大小,以确保字体大小在前面计算出的范围内。第一个也是一个条件进程,确定是否该行太长或太短,由于将出现在该行中的簇数而无法使用最佳字体大小。只有当在最佳字体大小时超过簇数的范围,才会导致字体大小变化。下面的伪代码可以为方框2254执行计算:
IF:CWA>FSoxCM÷Cpm
    THEN CWA÷CMxCpm
       ELSE IF:CWA<FSOxCm÷Cpm
       THEN:CWA÷CmxCpm
    ELSE:FSO=FSr
检查以确定实际字体大小(FSA)的边界也是一个条件语句:
IF:FSr>FSM
  THEN:FSM
     ELSE IF:FSr<FSm
   THEN:FSm
ELSE:FSr=FSA
现在请参看方框2256,每一行的实际簇数的计算是使用在方框2254和方框2252中确定的值来执行的。每一行的实际簇数是在确定一个特定字体的相应的行高值之前确定的。下面的等式确定了每一行的簇数:CWA÷FSAxCpm
请参看方框2258,读取指标引擎240确定实际行高(LA)作为将应用于此环境的最可读的文本的字体大小的乘数。用于确定实际行高的方法至少包括两个调整。首先,如果FSA≠FSO,读取指标引擎240优化字体大小的行高。优化可以确保较大的字体不能像较小的字体那样成比例地接收同样大的行高。其次,读取指标引擎240为行的长度调整行高。下面的等式执行优化和调整:((CAx(1.047(FSO-FSA)x(LO-1)))÷Cpl)+1
等式的下面部分:(1.047(FSO-FSA)x(LO-1),调整字体大小。其余部分调整行长度。结果是实际列宽中的实际字体大小的最佳行高。
回过头来看图20,图20中显示了等式的字体大小部分。图23显示了行长度调整的图形2300。如图所示,x轴2302表示字体大小,y轴2304表示行高。对行2320进行调整(与2020相同),为行2323中显示的长度的一半,在行2330中,为行的1.5。
回过头来看图22,在方框2260中,实际默认标题字体大小的计算方式大体上与正文文字字体大小的计算方式相同,但是基于用户可设置的0.75乘以“每一行的最小簇数”(Cm)和实际实况内容区域(LWA)的宽度。下面的等式成立:HFSA=LWA÷(0.75xCm)xCpm
在一个实施例中,标题字体大小固定了读取指标引擎240磅输出的比例的最顶端。
请参看方框2262,标题字体大小的默认行高(HLA)是根据与正文文字字体大小的实际行高2258相同的等式来确定的。乘数是基于HFSA生成的,而不是FSA和用户可设置的0.75乘以每一行的最小簇数(Cm),如下:
((0.75xCmx(1.047(FSO-HFSA)x(LO-1)))÷Cpl)+1=HLA
行高是基于行的长度和字体的大小的灵活值,并在正文文字大小和标题大小之间形成不同的连续区,作为字体大小的乘数。因此,由于正文文字可能具有是字体大小的1.16倍的行高,标题字体的行高可能只有标题字体大小的1.05倍。
现在请参看方框2264,读取指标引擎磅是使用来自实际标题字体大小2260和实际字体大小2254的输入确定的。读取指标引擎磅涉及两个印刷参考点:布局的最佳可读字体大小,以及窗口中的字体的最佳顶级标题大小。在这些参考点之间,读取指标引擎240绘制一定的增量数,其中每一个都作为该字体系列的印刷点分割。要在“1/72的实磅”和读取指标引擎磅之间传输,可以为顶部和底部创建等价物。
读取指标引擎磅的值是基于默认窗口字体大小和计算出的实际字体大小的比较得出的。默认值是12磅。因此,在转换到读取指标引擎240值时,任何对12磅字型的引用都被解释为对FSA的引用。12磅以下的大小被将FSA分为12部分的乘数解释。因此:
读取指标引擎磅=FSA÷12
然而,12磅以上的读取指标引擎磅的值不一定与12磅或12磅以下的磅的值相同。以上的读取指标引擎磅的值基于48磅的预设最佳标题大小(诸如
Figure G031093523D00331
文本字体大小默认值之类的默认值)和12磅正文文字大小之间的空间的划分。因此,在12磅以上时,公式是:
读取指标引擎磅=(HFSA-FSA)÷36
为了计算任何标记FontSize(FSμ)的输出大小,下面将是复合公式:
IF,FSμ≤12,
     THEN,FSμxFSA÷12
     ELSE,((FSμ-12)x((HFSA-FSA)÷36))+FSA
作为此操作的结果,任何被标记的FontSize都可以根据读取指标引擎磅的值来解释,包括从诸如级联样式表(CSS)之类的标准生成的FontSizes的默认测量值,如在XXSmall、XSmall、Small、Medium、Large、XLarge、XXLarge和所有HeadingLevel 1-7的默认值。注意,读取指标引擎磅只适用于FontSize磅,而不适用于以磅为单位的任何其他测量值。
请参看方框2266,实际页边距值是名为“页边距”的单位,该单位可以结合起来使用,将调整一些其他单位的值(特别是“例”)。实际页边距(MA)从实况内容宽度(LWA)或窗口高度,以及MarginPreference(MP)中的较小的反向起作用。如果窗口高度小于实况内容宽度,那么实际页边距是窗口高度乘以MarginPreference。然而,如果实况内容宽度小于窗口高度,那么读取指标引擎从实况内容宽度除以1减MarginPreference向后起作用。因此,页边距(MA)的公式如下:
IF,WH<LWA
THEN,WHxMP
ELSE,((LWA÷(I-2Mp))-LWA)÷2
请参看方框2268,过去500年的布局设计人员的基本工具一直是网格。但它们始终被视为只与给定页大小上的一个出版物相关的静态工具。Allen Hurlburt在他的1977年出版的名为“布局:打印页的设计”(Watson-Guptill Publications,NY,NY 1977,1989.Page 82.)的一本书中陈述到:
设计人员的网格相对于特定内容将占用的准确空间组织该内容。当网格工作时,它将允许设计人员创建许多不同的布局,这些布局在网格的框架内包含各种元素。当在出版、广告活动,或一系列活动的设计中使用时,即使当在每个单位的内容中有相当大的变化时,也会有一种连续的感觉。
虽然Hurlburt在这本书以及他后来的著作“网格(1978)”和“设计概念(1981)”中都强调了一个好的网格的重要性和必要性,但是他反复地强调,网格的静态性质正是对于设计人员有用的性质。然而,在电子世界,显示器大小和形状无法预先知道,该世界的设计人员无法创建可靠的网格,除非他们预先冻结显示器的大小和形状。
读取指标引擎240输出GridUnit(Gu)2268,后者是动态的并可跨各种各样的显示器和字体大小而扩展。方框2268的输入包括实际列宽(CWA)2252、实际字体大小(FsA)2254、每一最佳可读行的簇数(Cpl),以及每个全方的簇数(Cpm)。每一GridUnit的宽度基于确定的每一行的最佳簇数(Cpl)与列的实际宽度(CWA)的平衡。该等式将Cpl除以6,然后确定在FSA多少个单位的该长度适合于CWA。分数单位均衡地在整个GridUnit的宽度分布。因此:
GUA=CWA÷Trunc((6xCWAxCpm)+(FSAxCpl))
网格基于其宽度具有单个测量值。如果GridUnit被用作一个单位的高度的值,它具有与宽度的值相同的值。在一个实施例中,GridUnit可以是动态的,划分垂直空间的方式与划分水平空间的方式不同。
请参看方框2270,当在高度和宽度中使用时,列单位具有不同的外形尺寸。如此,当在标记中使用时,1列的宽度与1列的高度具有不同的测量值。在一个实施例中,实际列高度被整数行整除。因此,窗口的高度(WH),减去页边距,等于潜在的实况内容高度(LHO)。LHO除以行(LA),之后舍去小数位,再乘以行,等于ColumnHeight(CH)。换句话说,WH-(2xMA)(或如果标记表示比1MA页边距更深,则为其他倍数)=LHO
(Truncated(LHO/LA))XLA=CH
请参看方框2272,实际的PageHeight(PH)等于列高度加上顶部和底部页边距。因此,PH=CH+2MA(或如果标记表示在顶部或者底部比1MA页边距更深,为其他倍数)。
请参看方框2274,实际的PageWidth(Pw)等于ColumnWidth、GutterWidth和左和右页边距的总和。因此,Pw=(CWAxCCA)+(CGAx(CCA-1))+(2xMA)
如此,与宽度相比,该页具有不同的高度值,并且这些值可以不等于窗口的大小。
回过头来看图2并结合图22,上文描述的用于确定行高、列和字体大小的方法能用于自动确定最佳大小,以便在呈现文本时确保查看介质上的可读性。在每一种情况下,用于实现此处提供的方法的相应的设备可以包括诸如微处理器之类的计算机组件,用于实现这些方法。例如,为了确定最佳字体大小,诸如打印机或能够与打印机进行通信的手提计算设备或呈现设备之类的设备可以接受查看介质的宽度和查看介质的距离作为输入,并提供字体的最佳大小和行高作为输出,或使用确定的最佳大小和行高自动输出。设备还可以是计算机、便携计算设备或安装在打印机内的微处理装置等等。打印机或设备的输出可以是查看介质。此外,查看介质还可以是打印页、屏幕、无线连接的查看介质、广告牌、图像或任何字体呈现介质。在某些实施例中,输入查看介质的外形尺寸和查看介质的距离的操作可以通过网络或在客户网络环境中通过因特网连接等等来完成。
上文描述的图22显示了图2所示的布局引擎202内发生的操作。现在请参看图24,一个实施例是说明与国际转换器结合使用布局引擎202的情形。此情况下的国际转换器包括软件类型的转换器,能够转换一种给定语言的文本并提供不同语言的输出,这是已知的。例如,已知在因特网上有一些适用于此处的实施例的转换器,可以将位于特定通用资源定位器(URL)位置的文本转换为不同的语言。请参看图24,该图显示一个方框图,包括布局引擎202和应用程序200。应用程序200可以是在图1所示的计算机110上运行的任何应用程序。对于此实施例,合适的应用程序包括,例如,Microsoft Word、Microsoft Publisher、QuarkXPress、Adobe InDesign以及其他的与服务器一起或通过服务器连接一起运行的应用程序,如与浏览器或诸如Microsoft
Figure G031093523D00361
之类的电子邮件类型的应用程序一起运行的应用程序。应用程序200包括属性页210和属性值220,虽然,在一个实施例中,属性页210和属性值220可以是被访问的组件,以使应用程序200只有一个到另一个提供属性页210组件和属性值220组件的内容的应用程序的链接。图24进一步显示了一个外部国际转换器2460,该转换器通过连接2470连接到应用程序200。外部国际转换器是作为这样的实施例的外部组件显示的,其中,应用程序200通过因特网或通过到联网转换器的服务器连接(如通过局域网)访问转换功能。或者,外部国际转换器可以只相对于应用程序200来说是外部的,如通过计算机系统中的中心总线可访问的转换器。请参看图25并结合图24,在一个实施例中,在方框2510中,外部国际转换器转换应用程序200创建的文本或应用程序200接收的文本。由于外部国际转换器2460而发生的属性变化被提供到应用程序200以改变属性页210或属性值220中的元素或者直接提供到布局引擎202,如方框2520所示。布局引擎202可以具有国际转换器2462,但这不是此实施例的要求。如果有,则外部国际转换器2460可以向国际转换器2462发送数据以及从中接收数据,国际转换器2462提供兼容性组件,以便在外部国际转换器2460和布局引擎202之间进行无缝交互(方框2520)。在一个实施例中,外部国际转换器2460向应用程序200提供一种语言的转换后的文本和基本文本,然后应用程序200又通过连接280向布局引擎202发送相关的数据(方框2520)。然后,如上文所讨论的,布局引擎202对数据进行操作,以向应用程序200提供可读性参数(方框2530)。更具体来说,布局引擎202使用读取指标引擎240和文本引擎250,对应用程序200接收的和/或直接从外部国际转换器2460接收的数据进行操作,以便以具有列、行高、字体大小等等的可读的适用于文本转换目标语言的格式提供转换后的文本。
在另一个实施例中,如图26所示,应用程序200不与外部国际转换器进行交互,但向布局引擎202提供文本数据以及表示所提供的语言和需要输出的一个或多个语言的语言标识符(方框2610)。然后,国际转换器2462接收语言标识符和文本,并提供转换后的文本,以便确定结构和布局输入筛选器230创建可以用读取指标引擎240和文本引擎250操作的数据结构所需要的参数(方框2620)。如此,在一个实施例中,应用程序200可以向布局引擎提供一种语言的数据,并接收返回数据,允许应用程序200显示多个语言的文本,这些语言的文本已经为显示每一个所需要的语言格式化并适用于单个语言(方框2630)。应用程序200还可以在不同的显示器上运行,每一台显示器都具有不同的大小,每一台显示器都接收不同语言的为该显示器和该语言格式化的相同文本。如此,例如,如果应用程序200在为多个国家(地区)的客户端机器服务的服务器上运行,服务器组中的每一台显示器都将接收相应的语言的文本,这些文本的大小和格式都适合该语言并适用于相应的显示器。对于运行电子邮件程序等等的服务器,应用程序200可以在每一台客户端机器上运行,如Microsoft
Figure G031093523D00381
或可以在服务器上运行,如
Figure G031093523D00382
服务器,并且服务器可以是,例如,交换服务器类型。运行应用程序200的服务器或客户端机器接收任何语言的文本,并可以被配置为与布局引擎202交互,以自动将任何接收到的语言翻译为本地语言或以国际转换器2462编程的语言,并将针对该语言和显示器格式化转换后的文本所需要的参数输出到应用程序200。
此处的所有引用,包括任何专利、申请专利和出版物,都全部加以引用。
考虑到可以应用本发明的原理的许多可能的实施例,应该承认,此处参考附图描述的实施例只作说明,不应该限制本发明的范围。例如,那些精通本技术的人将承认,软件中所示的实施例的元素可以以硬件实现,反之亦然,显示的实施例可以修改,而不偏离本发明的精神。因此,此处描述的本发明预期所有此类实施例都在下面的权利要求以及它们的等价物的范围内。

Claims (27)

1.一种用于判断文本字符串的行高的方法,文本以簇方式组织,每个簇都是一个文本字符串的呈现单位,由可以在其中插入光标的点之间的许多打印的物质标识,文本字符串以字体大小呈现,字体大小以全方表示,每个全方由型号的平方标识,该方法包括:
判断表示文本字符串中的每个全方的许多簇的值;
以及
按指数函数缩放默认行高。
2.根据权利要求1所述的方法,其特征在于,默认行高大致为文本字符串中使用的字体大小的120%。
3.根据权利要求1所述的方法,其特征在于,指数函数是一个常数乘以函数(c2+1)/c2
4.根据权利要求3所述的方法,其特征在于,该常数是默认字体和字体大小乘数的乘积。
5.一种计算机系统,包括:
一个处理器;
连接到处理器的内存;
连接到处理器和内存的数据结构,数据结构被配置为保存定义字体特征的许多元素;以及
连接到数据结构的模块,该模块被配置为通过向具有字体特征的簇的平均宽度应用指数函数来调整使用该字体特征的文本的行高。
6.根据权利要求5所述的计算机系统,其特征在于,数据结构在布局引擎内,布局引擎包括:
被配置为从应用程序接收许多文本属性的结构和布局输入筛选器;
被配置为至少接收许多文本属性中的一个属性并判断以字体为单位簇的平均宽度;以及
一个连接的读取指标引擎,用于从文本引擎接收以字体为单位的单簇的平均宽度并应用指数函数。
7.根据权利要求5所述的计算机系统,其特征在于,随着查看条件的变化,模块动态地对字体特征进行操作。
8.根据权利要求5所述的计算机系统,其特征在于,指数函数是默认字体大小乘以簇的平均宽度的函数的平方根。
9.根据权利要求5所述的计算机系统,其特征在于,模块通过应用程序编程接口而实例化。
10.根据权利要求5所述的计算机系统,其特征在于,可以通过客户端-服务器连接对模块进行访问。
11.根据权利要求5所述的计算机系统,其特征在于,模块是一个最佳可读行高乘法器模块,被配置为判断文本的预先确定的部分的灰度值与文本的总灰度值之比,并将该比例除以文本的预先确定的字体的字符密度。
12.根据权利要求11所述的计算机系统,其特征在于,模块在被除后的比例上加1以判断字体大小的乘数。
13.根据权利要求5所述的计算机系统,其特征在于,模块判断行高并用标记行高比例乘以行高。
14.根据权利要求5所述的计算机系统,其特征在于,模块判断文本的最小的三个预先确定的代表部分的区域并将该区域乘以字体大小以判断行高。
15.根据权利要求5所述的计算机系统,其特征在于,模块根据字体大小乘以(Rw 2+(1/Cpm 2))1/2的函数判断行高,其中,Rw是字型的每个全方从其顶部墨迹到其底部墨迹的实际高度,Cpm表示每个全方的许多字符。
16.根据权利要求5所述的计算机系统,其特征在于,函数可以通过其中一个用户输入和标准默认行高乘数来修改。
17.根据权利要求5所述的计算机系统,其特征在于,如果文本的行长度发生变化,模块自动改变行高。
18.根据权利要求17所述的计算机系统,其特征在于,行高的自动改变是基于文本的物理长度和文本的一行中的许多簇的函数进行的。
19.一种用于确定文本的行高的方法,包括下列步骤:
存储文本的参数;以及
应用使用文本的参数的指数函数。
20.根据权利要求19所述的方法,其特征在于,指数函数是一个常数,使用文本的参数乘以指数函数。
21.根据权利要求19所述的方法,其特征在于,文本的参数是单个字符的平均宽度。
22.根据权利要求19所述的方法,其特征在于,常数与文本的默认字体大小的大小相关。
23.根据权利要求19所述的方法,进一步包括执行将行高乘以标记行高比例的步骤。
24.根据权利要求19所述的方法,其特征在于,文本的参数是字体大小,指数函数是字体大小乘以(Rw 2+(I/Cpm 2))1/2,其特征在于,Rw是字型的每个全方从其顶部墨迹到其底部墨迹的实际高度,Cpm表示每个全方的许多字符。
25.根据权利要求24所述的方法,其特征在于,函数可以通过其中一个用户输入和标准默认行高乘数来修改。
26.根据权利要求24所述的方法,其特征在于,如果文本的行长度发生变化,函数操作以自动改变行高。
27.根据权利要求26所述的方法,其特征在于,行高的自动改变是基于文本的物理长度和文本的一行中的许多簇的函数进行的。
CN031093523A 2002-12-18 2003-04-04 国际自动行高、字体大小和字体测量系统和方法 Expired - Fee Related CN1508722B (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US10/323,059 US7385606B2 (en) 2002-12-18 2002-12-18 International font measurement system and method
US10/322,857 2002-12-18
US10/323,038 2002-12-18
US10/323,038 US20040119714A1 (en) 2002-12-18 2002-12-18 International automatic font size system and method
US10/322,857 US7271806B2 (en) 2002-12-18 2002-12-18 International automatic line height system and method
US10/323,059 2002-12-18

Publications (2)

Publication Number Publication Date
CN1508722A CN1508722A (zh) 2004-06-30
CN1508722B true CN1508722B (zh) 2010-04-28

Family

ID=32397934

Family Applications (1)

Application Number Title Priority Date Filing Date
CN031093523A Expired - Fee Related CN1508722B (zh) 2002-12-18 2003-04-04 国际自动行高、字体大小和字体测量系统和方法

Country Status (10)

Country Link
EP (1) EP1431881B1 (zh)
JP (1) JP2004199021A (zh)
KR (1) KR101002524B1 (zh)
CN (1) CN1508722B (zh)
AT (1) ATE438146T1 (zh)
AU (1) AU2003200654B2 (zh)
BR (1) BR0301148A (zh)
CA (1) CA2421511C (zh)
DE (1) DE60328578D1 (zh)
MX (1) MXPA03002285A (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7576749B2 (en) * 2005-09-15 2009-08-18 Microsoft Corporation Positioning screen elements
US20070094591A1 (en) * 2005-10-24 2007-04-26 Etgen Michael P System and method for text legibility enhancement
KR100777444B1 (ko) * 2006-01-02 2007-11-21 삼성전자주식회사 폰트 크기를 변경하여 인쇄하는 방법 및 이에 사용되는호스트와 프린터
FR2911974B1 (fr) * 2007-01-25 2009-04-17 Streamezzo Sa Procede de gestion de polices de caracteres dans un terminal de radiocommunication, pour restituer des contenus multimedia sur un ecran, et terminal correspondant
RU2460151C1 (ru) * 2011-01-12 2012-08-27 Альберт Владимирович Патраль Устройство для индикации с наилучшей идентификацией знаков
CN103186506A (zh) * 2011-12-31 2013-07-03 北大方正集团有限公司 一种调整字符对间距的方法和系统
KR101302292B1 (ko) * 2012-01-05 2013-09-03 (주)이스트소프트 렌더링엔진 자동변환을 위한 웹브라우저를 기록한 컴퓨터 판독가능한 기록매체 및 렌더링엔진 자동변환방법
CN103699520A (zh) * 2012-09-27 2014-04-02 茵弗维尔株式会社 用于维持电子文档布局的字体处理方法
JP6295541B2 (ja) * 2013-08-09 2018-03-20 オムロン株式会社 情報処理装置、プログラマブル表示器、データ処理方法、およびプログラム
CN104503955B (zh) * 2014-12-03 2018-07-20 中建材国际贸易有限公司 一种生成个性化excel表单据的方法
CN104537004A (zh) * 2014-12-15 2015-04-22 小米科技有限责任公司 网页文字显示方法及装置
KR101755807B1 (ko) 2015-07-10 2017-07-10 김성일 휴대단말의 화면에 문자를 표시하는 방법 및 저장매체
JP6682865B2 (ja) * 2016-01-15 2020-04-15 セイコーエプソン株式会社 印刷装置、及び印刷装置の制御方法
CN106383689B (zh) * 2016-09-20 2019-11-29 青岛海信电器股份有限公司 显示字体大小调整方法、装置及终端设备
CN110162232A (zh) * 2018-02-11 2019-08-23 中国移动通信集团终端有限公司 屏幕显示方法、具有显示屏幕的装置、设备及存储介质
CN117669494A (zh) * 2018-10-09 2024-03-08 创新先进技术有限公司 文本行高的调整方法及装置、电子设备
CN112840305B (zh) * 2018-12-19 2023-11-28 深圳市欢太科技有限公司 字体切换方法及相关产品
CN112631491A (zh) * 2020-12-31 2021-04-09 咪咕文化科技有限公司 屏幕文字调整方法、装置、网络设备及存储介质
CN113778582A (zh) * 2021-07-28 2021-12-10 赤子城网络技术(北京)有限公司 本地化多语言适配的设置方法、装置、设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6075892A (en) * 1995-01-06 2000-06-13 Xerox Corporation Methods for determining font attributes of characters

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5416898A (en) * 1992-05-12 1995-05-16 Apple Computer, Inc. Apparatus and method for generating textual lines layouts
JPH0749865A (ja) * 1993-08-06 1995-02-21 Omron Corp テキスト表示装置
US5598520A (en) * 1994-09-26 1997-01-28 Microsoft Corporation Methods and apparatus for hinting a font for controlling stem width as font size and resolution of output device vary
JP3364868B2 (ja) * 1995-11-24 2003-01-08 日本電信電話株式会社 階層毎に書体を推奨する方法および装置
US6320587B1 (en) * 1996-08-26 2001-11-20 Fujitsu Limited Font processing apparatus in network environment and method thereof
WO1998050880A1 (de) * 1997-05-07 1998-11-12 Siemens Aktiengesellschaft Verfahren zur anpassung eines referenzdatensatzes anhand mindestens eines eingabedatensatzes durch einen rechner
JP3604902B2 (ja) * 1998-04-10 2004-12-22 キヤノン株式会社 画像処理装置
US6256650B1 (en) * 1998-05-18 2001-07-03 Microsoft Corporation Method and system for automatically causing editable text to substantially occupy a text frame
US6282327B1 (en) 1999-07-30 2001-08-28 Microsoft Corporation Maintaining advance widths of existing characters that have been resolution enhanced

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6075892A (en) * 1995-01-06 2000-06-13 Xerox Corporation Methods for determining font attributes of characters

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JAMES THORNTON.Font Specification Options.2002,全文. *

Also Published As

Publication number Publication date
KR101002524B1 (ko) 2010-12-17
KR20040054467A (ko) 2004-06-25
JP2004199021A (ja) 2004-07-15
ATE438146T1 (de) 2009-08-15
MXPA03002285A (es) 2004-10-29
EP1431881A3 (en) 2006-02-15
EP1431881B1 (en) 2009-07-29
AU2003200654A1 (en) 2004-07-08
AU2003200654B2 (en) 2009-04-02
CA2421511A1 (en) 2004-06-18
CN1508722A (zh) 2004-06-30
DE60328578D1 (de) 2009-09-10
EP1431881A2 (en) 2004-06-23
BR0301148A (pt) 2004-08-17
CA2421511C (en) 2011-02-08

Similar Documents

Publication Publication Date Title
CN1508722B (zh) 国际自动行高、字体大小和字体测量系统和方法
US20040119714A1 (en) International automatic font size system and method
US7385606B2 (en) International font measurement system and method
US7271806B2 (en) International automatic line height system and method
US8819541B2 (en) System and method for converting the digital typesetting documents used in publishing to a device-specfic format for electronic publishing
CN101432770A (zh) 用于创作动态布局环境的广告的技术
CN101441619A (zh) 改进阅读BiDi文档时的用户体验的方法和装置
JP2009540359A (ja) リモートサブピクセル解像度の特性
US10366142B2 (en) Identifier based glyph search
US9886426B1 (en) Methods and apparatus for generating an efficient SVG file
Sandnes An image-based visual strategy for working with color contrasts during design
KR102471343B1 (ko) 사용자로부터 입력받은 텍스트의 키워드 분석을 이용한 온라인 인쇄물 제작 시스템
Powers Beginning Css3
US20140320527A1 (en) Hardware glyph cache
Barvir et al. Graphic map load measuring tool–development and verification
US11763064B2 (en) Glyph accessibility and swash control system
US9984053B2 (en) Replicating the appearance of typographical attributes by adjusting letter spacing of glyphs in digital publications
Ledermann Minimum dimensions for cartographic symbology–history, rationale and relevance in the digital age
Wayne Wu et al. “I Kept Browsing and Browsing, But Still Couldn’t Find the One”: Salient Factors and Challenges in Online Typeface Selection
KR20080110485A (ko) 기호 표시 장치, 프린터, 기호 표시 방법, 폰트데이터베이스, 기억 매체
RU2323470C2 (ru) Система и способ автоматического измерения высоты строки, размера и других параметров международного шрифта
Ross Digital typeface design and font development for twenty-first century bangla language processing
King Design spaces: The limitations of variability in typeface design
Imjai et al. Analysis of Ink/Toner Savings of English and Thai Ecofonts for Sustainable Printing
Pormehr Yabandeh et al. How visualisations with typography are used in Persian and English corporate identity logos

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100428

Termination date: 20130404