在各种处理系统的应用之中,例如不同的应用软件、视窗系统或是各类的图形环境之下,均需使用到显示各种文字字体及符号的功能,以藉由中文、英文或是其他的语言文字,来传达系统的信息,达到与使用者的交流及构通,而完成系统的各项功能及操作。
在目前常见的应用程序及视窗系统下,较常被应用的字体可包含点阵字体、向量字量以及全真字体。点阵字体是直接以图形数据、也就是以某一区域中所显示出的显示点(或是被点亮的点)的分布,来构成代表特定文字或符号的形状,例如一般所谓的16×16字型或是24×24字型,即是以长宽各为16、或是24点的区域,利用区域中各点的显示与否,来描述字形;向量字体所提供的则是组成字形各线段端点的集合,利用向量的方式,经过运算来显示各种文字的图案;而在全真字之中,则是以组成字形轮廓的线段与曲线,再加上修饰的功能来描述文字或符号的形状。
比较以上述三种字体,点阵字体的字形具有固定的大小,如16×16点或是24×24点,因此每个相对于所有文字所需使用的数据量较小,储存文字的字库文档很小,字体处理的代码亦较为简单,在显示过程的处理上,由于所需的运算过程较为简化,显示处理的速度亦较快,所需的软硬件资源很少。但由于点阵字是以固定的显示点数目来表示文字,因此并不适合做缩小或是放大的处理,否则很容易使缩小或放大后的字形产生失真,而影响到字体显示及辨别的效果,因此使得应用程序在字体大小上的变化受到许多的限制。
而以向量字体及全真字体而言,由于其字体本身并没有特定的点阵大小,因此在缩小及放大上可以较不受限制,且在缩放之后仍能保持原有的字形,能充分满足应用程序对各种大小字体的需求。但向量字体的全真字库文裆较点阵字体的数据文档大许多,往往会占用数兆(百万位元组)至数百兆的储存空间,字体处理的代码亦较为复杂,在处理系统资源有限的情况下,显示时的处理速度会较为缓慢,也因此对主机速度以及硬件与软件的资源要求会较使用点阵字体的应用要高出许多。
上述的各种字体形式,可使用于各种语系的文字显示以及基本图形及符号显示的应用之中,而以便用于如汉字等象形文字的应用而言,由于其字形复杂、字元的变化种类极多,且字符集庞大,以在视窗环境下的使用为例,汉字全真字体较适于在个人电脑及更高阶的处理系统之中使用,而对于资源有限的处理系统,如多数的可携式处理系统,或是其中的个人数字助理(personal digital assistant;PDA)等的处理系统来说,只有对软硬件资源需求较低的汉字点阵字体较为适用。
以目前如个人数字助理等的处理系统的应用,在汉字字型上多使用16×16的汉字点阵字库,对字库点阵的缩放处理手段十分有限,能显示输出的汉字字体仅限于16×16(即字符点阵的宽高各为16点)、24×24及32×32等少数几种位组组对8位对齐的字体,不仅无法显示16×16以下的点阵汉字,更没有如15×13、21×25等非8位对齐的汉字字体,因此在如个人数字位助理等的处理系统应用中,其输出或显示界面上汉字字体大小的变化受到很大的限制,而无法视使用者或不同应用程序的需求来自由的调整所显示字体的大小。
本发明的目的为提供一种字体缩放的方法及其装置。
本发明的另一目的为提供一种点阵字体缩放的方法、以及点阵字体缩放的装置,可应用各种处理系统之中,以减少对硬件资源的使用。
本发明的另一目的为提供一种字体缩放的方法及其装置,可控制点阵字体的各种不同大小比例及整数及非整数倍率的字体无级缩放,增进各种大小不同字体显示时的效率及效果。
本发明中字体缩放的方法,可包含以下步骤:首先读取字体点阵数据;并读取设备环境中的字体显示设定数据;接着依据字体点阵数据及字体显示设定数据,计算横向缩放比率及纵向缩放比率;再进行字体的横向缩放及纵向缩放;最后进行缩放后字体的修饰,修饰过程针对字体各相邻显示点间的断裂处进行显示点的增加修补。
上述字体缩放方法,还可包含在上述缩放后字体的修饰步骤后,加入将缩放后字体的数据输出至设备环境中显示的步骤。
本发明中字体缩放的装置可包含:字体点阵数据库、字体控制模祖、处理单元、缩放字体储存装置、及显示单元等;字体点阵数据库用以存储字体点阵数据;字体控制模组则用以存储并产生字体控制代码;处理单元用以进行字体缩放的运算及字体显示的处理;而缩放字体储存装置则记录缩放后的字体数据,以供处理单元存取;显示单元并用以由处理单元控制在显示单元上产生显示数据。
上述字体缩放装置还可加入输入单元,以输入字体显示的设定;亦可包含创建字体数据库,以记录应用程序所创建的字体数据。
本发明中提供一种字体缩放的方法及其装置,可用于点阵字体的缩放处理之中,并减少对硬件资源的使用,而可应用各种资源有限的处理系统之中,例如便携型的处理系统、如个人数字助理系统等。在缩放处理时,利用字体在横向及纵向上的缩放处理,并加入对缩放字体的修饰处理,可使点阵字体在各种不同大小比例、以及整数与非整数倍率缩放上均能维持良好的显示效果,达到字体无级缩放的功能,增进各种字体显示时的效率及效果。
参见图1所示,图1为本发明中的字体缩放装置的系统功能方块示意图,字体缩放装置主要包含:字体点阵数据库10、字体控制模组12、处理单元14、储存装置16、以及显示单元18。
字体缩放数据库10用以储存字体点阵数据,以汉字点阵字体的应用而言,字体点阵数据库10即可储存汉字点阵字体的数据,而在应用于其他语系的文字中时,字体点阵数据库10的内容即为该语系(例如韩文、日文、或英文等)的字体点阵数据。因此,字体缩放装置应用于汉字字体的缩放时,字体点阵数据库10内即是储存包含汉字字体的点阵数据;而当字体缩放装置应用于文字字元及图形符号的缩放时,字体点阵数据库10即可包含各种不同语系的文字字元、以及图形符号等的字体点阵数据。
字体控制模组12则用以储存并产生字体控制代码,以供系统运作使用,由于字体点阵数据库10及字体控制模组12内的数据均为固定不变的数据,因此在较佳实施例中,可将两者整合于如只读存储器或是其他种为的储存装置中,以作为一字体控制组件。
以本例中应用于汉字点阵字体的控制为例,字体控制模组12内可包含多个内部函数,以满足各种汉字点阵字体处理所需,各个内部函数数的功能及名称如下表所示:
函数名称 |
功能 |
SysFontEntry |
载入各种字体资源与控制代码,分配所需的存储器 |
|
资源,登录各种字体操作函数入口地址。在开机时初始化过程中被调用。 |
CreateFixFontIndirect |
在创建汉字点阵字体时,要求该字体汉字点阵在缩放过程中所需的存储器资源,记录并检查所创建的汉字点阵字体属性数据。在创建汉字点阵字全时被调用。 |
FixFontOutString |
对汉字点阵缩放处理,并在一定设备环境下输出显示点阵字体的汉字。向设备输出显示点阵字体汉字时被调用。 |
DeleteFixFont |
释放创建汉字点辽字体时所点用的存储器资源。删除汉字点阵字体时被调用。 |
因此,以个人数字助理系统为例,在开机启动系统初始化时即将调用函数SysFontEntry,也就是一般系统载入字体资源的过程。而函数CreateFixFontIndirect即可于使用者创建字体应用,而提供相对应的资源及显示时的应用。
在设备环境欲显示缩小或放大的汉字点阵字体时,即可应用函数FixFontOutString从点阵字库10中读出组成汉字串各个字符的点阵数据,将字体固定大小的点阵缩小或放大到所选字体的尺寸,并对缩放后的点阵数据作适当的修饰处理以保持原有的字形;最后将此处理后的点阵赋予位元图,将此位元图选入设备环境显示之。而当应用程序不再使用已创建的汉字点阵字体时,即可藉由函数DeleteFixFont释放点阵字体所占用的系统内存资源。
处理单元14则为进行运算处理的中心,例如个人数字助理系统中的中央处理器,以进行字体缩放的运算以及字体显示的处理;缩放字体储存装置16则可用以记录缩放后的字体数据,例如以字体位元图(bitmap)的方式储存于其内,以供处理单元14存取,以本例而言,此一缩放字体储存装置可使用随机存取存储器,例如一般常见的动态随机存取存储器等。
显示单元18在处理单元14将缩放字体储存装置16内的点阵字体位元图读出后,即可藉以产生控制显示单元18的讯号,而在显示单元18上产生显示数据。
此外,字体缩放装置并可包含输入单元20,以输入使用者对字体显示大小或比例等缩放条件的设定,例如使用者可视其需要的不同,而由输入单元20的操作设定字体显示的大小及比例,以便于阅读或操作,输入单元20并可用以输入系统运作时所需的各种指令及信息;以个人数字助理系统而言,输入单元20可为触控式的感应输入元件,或是其他形式的键盘或按钮等。
在输入单元20之外,字体缩放装置还可包含创建字体数据库22,以记录由使用者藉由应用程序所创建的字体数据,同样地,创建字体数据库22亦可使用随机存取存储器,例如一般常见的动态随机存取存储器等,在本例中,即可整合缩放字体储存装置16与创建字体数据库22,而共用系统的随机存取存储器资源。
而本发明中的字体缩放方法,其流程示意图如图3所示,首先在步骤30中读取字体的点阵数据,也就是由字体点阵数据库中取出所需的字体;再在步骤32中读取设备环境中的字体显示设定数据,也就是使用者欲显示字体的大小,例如原点阵字为16×16,而使用者对设备环境中的字体显示设定是设定为13×24;接着在步骤34中,即依据字体点阵数据(16×16)及字体显示设定数据(18×24),计算横向缩放比率(=18/16)及纵向缩放比率(=24、16)。
之后在步骤36中,进行字体的横向缩放及纵向缩放,本例中字体的横向缩放及纵向缩放,是以点阵字体中各相邻显示点所组成的线段为基础,进行线段或单独显示点的缩放。由于字体点阵中各点的重要性各不相同,其中有显示的点(或是被点亮的点)比没有显示的点(或是未被点亮的点)更为重要,因此在点阵缩小时,显示线段的最小长度是一,也就是一个点,而不会固缩小而变成0,以免点阵中的显示点在缩放过程中消失。而在本实施例之中,在点阵放大时,为保持粗细均匀的笔画,线条放大后要作适当的调整,在放大点阵小于32×32、放大率为m时,线段放大方法在本例中可使用的计算方法之一例为:
放大后的线段长度=(原线段长-1)*m+1;
此外,若放大后的线段长度大于(原线段长*m),则:
放大后的线段长度:原线段长*m-1。
以保持粗细均匀笔画,但是一般字体在非整倍放大时,笔画可能因而发生断裂,因此即须进行修饰处理。
因此在步骤38中,即进行缩放后字体的修饰,修饰过程即针对字体各相邻显示点间的断裂处进行显示点的增补,以针对汉字字体或是其化象形文字的笔画特征,保持笔画的完整连续及笔画之间的位置衔接关系。
而在步骤38中缩放后字体的修饰步骤之后,可进一步加入显示控制的步骤40,将缩放后字体的数据输出至设备中显示。
以较佳实施例而言,在步骤38中缩放后字体修饰的过程,可以检查原点阵字体各个显示点及其所组成的线段与周围八个方向上其他点的邻接状况,在尽量保持其原有的笔画衔接状态与笔画连续性的规则下,决定缩放后的点阵上某些点的显示状况,可避免字体在缩放过程中笔画衔接部分及转折处被削去,并避免字笔断裂的情形。
在修饰过程中对显示点(也就是被点亮的点)进行邻接关系的检查时,实际上只需检查单侧例如左侧或右侧的邻接关系,以判断是否需进行修补,追加显示点的方式来保持笔画的连续性。
参见图3,图3即为步骤38中缩放后字体的修饰其实施方式之一例的细节流程示意图,缩放后字体修饰的步骤可包含以下步骤,首先在步骤38a中,在字体点阵数据中取一个显示点作为基准点,假设其座标为(x,y);并在步骤38b中,在缩放后字体对应于基准点位置处,依(x,y)按比例缩放后得到一对应点[X,Y];接着即在步骤38c中,先判定原点阵字中显示点相对于左下方的连接关系,当基准点(x,y)的下方点(x,y-1)未显示、而基准点左下方点(x-1,y-1)有显示时,即于步骤38d中显示对应点(X,Y)的左下方点[X-1,Y-1]。
接着再至步骤38e,判定原点阵字中显示点相对于左上方的连接关系,当基准点(x,y)的上方点(x,y+1)未显示、而基准点左上方点(x-1,y+1)有显示时,即于步骤38f中显示对应点[X,Y]的左上方点[X-1,Y+1]。因此,藉由步骤38c至步骤38f,即可藉由判断原点阵字体每一显示点左侧的连接关系,利用增加缩放后字体对应点左侧的显示点,达成修饰的目的。最后并重复上述步骤,直到完成对应于所有显示点的修饰,也就是利用图中的步骤38g,其中进行对于基准点是否为最后一个处理的显示点的判断,即可达到反复针对各个原点阵字显示点做判断处理的目的。
参见图3第所示,即为本发明中的缩放方法应用后字体缩放后显示效果改善的一例,图号42所示为原16×16的汉字点阵字体的「文」字;图号44则为点阵字体经直接缩放处理后的13×24字体,可看出由于笔画断裂而使字体遭到破坏的状况;而图号46即为使用本发明中的缩放方法处理后的18×24字体,可看出字体笔画的连续性有明显的改善,而避免因笔画断裂而影响到缩放后字体,尤其是非整数倍缩放时的显示效果。
因此,藉由本发明中的方法与装置,可使如汉字或是其他象形文字、字元或符号等的点阵字体,在缩放后仍能保持良好的连接关系,而显示较完整的字形,且由于使用资源为点阵字的字库及控制数据,可减少系统资源的负荷及运作时对系统资源的需求,增进各种大小不同字体显示时的效率及效果,并可达到控制点阵字体的各种不同大小比例及整数及非整数倍率的字体无级缩放的目的。
本发明以一较佳实施例说明如上,仅用于藉以帮助了解本发明的实施,非用以限定本发明的精神,而熟悉此技术者在领悟本发明的精神后,在不脱离本发明的精神范围内,当可作些许更动润饰及等同的变化替换,其专利保护范围当由所附的权利要求书来限定。