具体实施方式
下面结合附图对本发明实施例提供的一种多语种文字的混排方法及装置进行详细描述。
如图1所示,为本发明实施例子提供的一种多语种文字的混排方法,该方法包括:
101:获取排版规则集合RS,复合语言ML,复合字体MF以及对应的选择文字;
102:根据所述选择的文字以及其对应的排版规则集合RS,复合语言ML,复合字体MF,进行语言解析,对所述选择文字进行排版。
需要说明的是,该方法还包括:
创建排版规则集合RS,复合语言ML,复合字体MF;
其中,所述排版规则集合RS包括:语言属性,标点禁排属性,断字属性,自动拉长属性,竖向文字旋转属性;所述复合语言ML包括:主语言属性,辅助语言属性N,N≥1;所述复合字体MF包括:至少一个字体项;所述字体项包括:语言属性和字体属性。
以上所述排版规则集合RS中的语言属性,是指该排版规则对应的文字语言;标点禁排属性,指在行首或行尾处,禁止排版部分该种语言的标点符号;断字属性,是指在该种语言的单词或短语位于行尾时,自动插入连字符,控制断字位置;自动拉长属性,是指在该种语言的单词中自动插入拉伸字符,控制行格式撑满;所述竖向文字旋转属性,是指竖向排版时,该种语言的文字自动旋转某个角度进行显示。
以上所述复合语言ML中主语言属性与所述辅助语言属性,是系统支持的任何一种语言。
以上所述复合字体MF包括多个字体项,每个字体项包括:语言属性和字体属性;所述语言属性,是指定该复合字体对应的文字语言;所述字体属性,是指定该种语言的文字应用的字体名称,字体风格等。
基于以上实施例的步骤102,如图2所示,为本发明实施例子提供的一种多语种文字的混排方法中步骤102的具体实现流程,具体包括:
201:依次对所述选择的文字中的每个字符,进行语言解析,构建字符的大样排版;该步骤构建字符的大样排版的过程如图3所示。
202:根据所述解析字符的实际语言,查找相应的排版规则集合RS;
203:按照所述排版规则集合RS,依次对于各个文字行进行排版处理,构建行的大样排版。该步骤的具体实现流程如图5所示。
如图3所示,为本发明实施例子提供的一种多语种文字的混排方法中依次对所述选择的文字中的每个字符,进行语言解析,构建字符的大样排版步骤的具体实现流程,该流程包括:
301:解析当前字符,构建所述当前字符的大样信息;其中,所述当前字符的大样信息包括:实际语言、显示字体、旋转角度;
302:根据所述解析获取到的当前字符的语言属性L与字符编码,与所述复合语言ML进行匹配,将所述与复合语言相匹配的语言属性设置为所述当前字符的实际语言;所述设置为所述当字符的实际语言过程如图4所示。
303:根据所述当前字符设置的实际语言,在所述复合字体MF中查找对应的字体属性;将与所述复合字体MF相匹配的字体属性设置为所述当前字符的大样字体信息中的显示字体;
304:当所述当前字符的排版方向为竖向排版时,根据所述当前字符设置的实际语言,在所述排版规则集合RS中查找对应的排版规则;将与所述排版规则集合RS中排版规则相匹配的竖向文字旋转角度设置为所述当前字符的大样字体信息中的旋转角度;
305:获取当前字符的大样信息,并继续对下一个字符构建字符的大样信息,直到所有字符处理完毕。
如图4所示,为本发明实施例子提供的有关步骤302的具体实现流程:该步骤具体实现流程如下:
401:根据所述解析获取到的当前字符的语言属性L与字符编码,获取与其对应的复合语言ML;
402:根据所述复合语言ML中的主语言以及该语言的编码区间,判断所述当前字符的编码是否包含在区间内;如果在所述区间内,将所述当前字符的实际语言设置为主语言,然后,退出;如果不在所述区间内,否则,转入下一步骤;
403:依次遍历复合语言ML中的辅助语言,根据所述辅助语言的编码区间,判断所述当前字符的编码是否包含在其区间内;如果在所述辅助语言的区间内,则将所述当前字符的实际语言设置为辅助语言,然后,退出;否则,转入下一步骤;
404:将所述当前字符的实际语言设置为主语言。
如图5所示,为本发明实施例步骤203的具体实现流程;该流程具体实现如下:
501:依次对所述选择的文字中的每行,进行语言解析,构建当前行的大样信息,其中,所述当前行的大样信息包括:显示字符范围、断字结果、自动拉长结果;
502:根据所述解析获取到的行区域的宽度和该行中字符的排版宽度,获取行的显示字符范围;
503:如果所述当前行的行尾处是标点符号,根据所述标点字符的实际语言,在排版规则集合RS中查找对应的排版规则;如果找到与其匹配的排版规则,则将按照所述排版规则的标点禁排属性进行处理,将行尾禁排的标点从显示字符范围移除,将行首禁排的标点保留在显示字符范围内;
504:如果所述当前行的行尾处是单词,根据所述单词的实际语言,在排版规则集合RS中查找对应的排版规则;如果找到与其匹配的排版规则,则按照所述排版规则的断字属性处理,自动插入连字符,将连字符前的字母保留在显示字符范围内,并记录断字结果;
505:如果所述当前行的总的显示字符宽度小于所述行区域的宽度且没有行结束符,则遍历行中的每个单词,根据所述单词的实际语言,在排版规则集合RS中查找对应的排版规则;如果找到与其匹配的排版规则,则按照所述排版规则的自动拉长处理,自动插入拉伸字符,拉长单词的宽度,使行的总显示字符宽度撑满区域的宽度,并记录自动拉长结果;
506:获取当前行的大样信息,并继续对下一行构建行的大样信息,直到所有行处理完毕。
针对以上实施例的描述,现假设文章共有5个段落。其中,第1、3、5段为中文段落,其中,第2段为阿文段落,第4段为维文段落。
设置排版规则集合RS如下:
语言属性 |
标点禁排属性 |
断字属性 |
自动拉长属性 |
竖向旋转属性 |
中文 |
有 |
无 |
无 |
无 |
阿文 |
有 |
有 |
无 |
逆时针90度 |
维文 |
有 |
有 |
有 |
逆时针90度 |
设置复合语言ML1:中文(主)、阿文。
设置复合语言ML2:中文(主)、维文。
选中整篇文章应用复合语言ML2,选中第2段应用复合语言ML1。
以上假设,通过上述图1至5中实施例的自动排版流程,即可整齐快速的按照各种语言文字的要求,完成混排。
例如:首先整篇文章作为选择文字;系统通过自动获取所述选择文字以及排版规则集合RS,复合语言ML2,复合字体MF,根据以上获取的信息,进行语言解析,对所述选择文字进行排版。
在完成所述整篇文章排版之后,所述系统再通过自动的方式获取所述选择文字(第2段)以及排版规则集合RS,复合语言ML1,复合字体MF,根据以上获取的信息,进行语言解析,对所述选择文字(第2段)进行排版。
在完成所述第2段文字的排版之后,则完成上述整个文章的多语种文字的混排。
如图6所示,为本发明实施例提供的一种多语种文字的混排装置,该装置包括:
信息获取单元601,用于获取排版规则集合RS,复合语言ML,复合字体MF以及对应的选择文字;
排版单元602,用于根据所述选择的文字以及其对应的排版规则集合RS,复合语言ML,复合字体MF,进行语言解析,对所述选择文字进行排版。
需要说明的是,该装置还包括:
规则创建单元,用于创建排版规则集合RS,复合语言ML,复合字体MF;
其中,所述排版规则集合RS包括:语言属性,标点禁排属性,断字属性,自动拉长属性,竖向文字旋转属性;所述复合语言ML包括:主语言属性,辅助语言属性N,N≥1;所述复合字体MF包括:至少一个字体项;所述字体项包括:语言属性和字体属性。
还需要说明的是,所述排版单元,具体包括:
字符解析子单元,用于依次对所述选择的文字中的每个字符,进行语言解析,构建字符的大样排版;
查找子单元,用于根据所述解析字符的实际语言,查找相应的排版规则集合RS;
行排版子单元,用于按照所述排版规则集合RS,依次对于各个文字行进行排版处理,构建行的大样排版。
还需要说明的是,所述字符解析子单元,具体包括:
字符解析分单元,用于解析当前字符,构建所述当前字符的大样信息;其中,所述当前字符的大样信息包括:实际语言、显示字体、旋转角度;
字符匹配分单元,用于根据所述解析获取到的当前字符的语言属性L与字符编码,与所述复合语言ML进行匹配,将所述与复合语言相匹配的语言属性设置为所述当前字符的实际语言;
字符设置分单元,用于根据所述当前字符设置的实际语言,在所述复合字体MF中查找对应的字体属性;将与所述复合字体MF相匹配的字体属性设置为所述当前字符的大样字体信息中的显示字体;当所述当前字符的排版方向为竖向排版时,根据所述当前字符设置的实际语言,在所述排版规则集合RS中查找对应的排版规则;将与所述排版规则集合RS中排版规则相匹配的竖向文字旋转角度设置为所述当前字符的大样字体信息中的旋转角度;
字符构建分单元,用于获取当前字符的大样信息,并继续对下一个字符构建字符的大样信息,直到所有字符处理完毕。
还需要说明的是,所述字符匹配分单元,具体根据所述解析获取到的当前字符的语言属性L与字符编码,获取与其对应的复合语言ML;根据所述复合语言ML中的主语言以及该语言的编码区间,判断所述当前字符的编码是否包含在区间内;如果在所述区间内,将所述当前字符的实际语言设置为主语言,然后,退出;如果不在所述区间内,否则,转入下一步骤;依次遍历复合语言ML中的辅助语言,根据所述辅助语言的编码区间,判断所述当前字符的编码是否包含在其区间内;如果在所述辅助语言的区间内,则将所述当前字符的实际语言设置为辅助语言,然后,退出;否则,转入下一步骤;将所述当前字符的实际语言设置为主语言。
还需要说明的是,所述行排版子单元具体包括:
行解析分单元,用于依次对所述选择的文字中的每行,进行语言解析,构建当前行的大样信息,其中,所述当前行的大样信息包括:显示字符范围、断字结果、自动拉长结果;
行匹配分单元,用于根据所述解析获取到的行区域的宽度和该行中字符的排版宽度,获取行的显示字符范围;如果所述当前行的行尾处是标点符号,根据所述标点字符的实际语言,在排版规则集合RS中查找对应的排版规则;
行设置分单元,用于如果找到与其匹配的排版规则,则将按照所述排版规则的标点禁排属性进行处理,将行尾禁排的标点从显示字符范围移除,将行首禁排的标点保留在显示字符范围内;如果所述当前行的行尾处是单词,根据所述单词的实际语言,在排版规则集合RS中查找对应的排版规则;如果找到与其匹配的排版规则,则按照所述排版规则的断字属性处理,自动插入连字符,将连字符前的字母保留在显示字符范围内,并记录断字结果;如果所述当前行的总的显示字符宽度小于所述行区域的宽度且没有行结束符,则遍历行中的每个单词,根据所述单词的实际语言,在排版规则集合RS中查找对应的排版规则;如果找到与其匹配的排版规则,则按照所述排版规则的自动拉长处理,自动插入拉伸字符,拉长单词的宽度,使行的总显示字符宽度撑满区域的宽度,并记录自动拉长结果;
行构建分单元,用于获取当前行的大样信息,并继续对下一行构建行的大样信息,直到所有行处理完毕。
本发明实施例提供的一种多语种文字的混排方法及装置,通过自动获取排版规则集合RS,复合语言ML,复合字体MF以及对应的选择文字;根据所述选择的文字以及其对应的排版规则集合RS,复合语言ML,复合字体MF,进行语言解析,对所述选择文字进行排版,从而使得多语种文字的混排过程不但方便、高效,而且大大降低了排版人员的工作量,减少了误排率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,包括如下步骤:(方法的步骤),所述的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。