发明内容
本发明的目的是提供一种基于阿拉伯字母名义形式编码的文字输入方法,克服了现有技术中输入时所见非所得的显示缺陷,更符合人日常的书写习惯,另外还可以根据需要调整词的长度,显示的效果更美观。
为实现上述目的,本发明采用如下技术方案:
一种基于阿拉伯字母名义形式编码的文字输入方法,所选用的阿拉伯字母名义形式映射在键盘上,所述阿拉伯字母名义形式编码符合ISO/IEC国际标准10646-1,其中:
在通过键盘键入阿拉伯字母时还包括插入截断符的步骤;
输出时分析所键入的阿拉伯字母所处位置并输出其对应的显现形式,分析时所述截断符作为一具有四种显现形式的阿拉伯字母看待,输出时所述截断符作为零宽不可见字符。
优选地,该方法中在键入词的第一个阿拉伯字母时在其后自动插入截断符,分析当前键入的阿拉伯字母在词中的位置并输出其对应的显现形式;
之后每键入一个阿拉伯字母,将截断符自动移位到新键入的阿拉伯字母后面,分析当前键入的阿拉伯字母在词中的位置并输出其对应的显现形式;
该方法中通过输入空格或标点符号来确定所键入的为词的最后一个阿拉伯字母,键入词的最后一个阿拉伯字母之后点击空格或标点时,自动删除所述截断符,最后一个阿拉伯字母随之以其词尾形式出现。
优选地,该方法中所述截断符被映射在键盘的一个键位上,插入截断符的方式为通过点击所述键位插入;
在键入阿拉伯字母前点击所述键位,或在键入阿拉伯字母后点击所述键位,或在键入阿拉伯字母前后均点击所述键位,即可得到该字母的单独出现的起始形式、词中形式、结尾形式,即“头符”、“中符”、“尾符”。要想得到字母的独立形式,只要顺序点击“空格-字母-空格”即可。这些单独出现的显现形式用于教学和其他必用的场合。
优选地,该文字输入方法用于输入使用阿拉伯字母的各种文字如阿拉伯文、波斯文、维吾尔文、哈萨克文、柯尔克孜文等。
优选地,该方法中映射时还包括在所述键盘上选择一个键位映射延长符的步骤,所述延长符具有两种显现形式,其中一种显现形式为不可连阿拉伯字母之间的空白,另一种显现形式为可连阿拉伯字母之间的连线;
在需要加入延长符的位置点击该键位时,根据所述位置前后相邻阿拉伯字母的连接状况确定所输出的延长符的显现形式。
优选地,需要加入延长符的位置在词中时,若摁住Ctrl键在词中的任一处点击所述键位,则从头至尾在该词的所有相邻阿拉伯字母之间插入延长符,根据相邻阿拉伯字母的连接状况确定所输出的延长符的显现形式。
优选地,该方法中摁住Ctrl键在词中的任一处点击键位的次数为至少一次,每点击一次,则从头至尾在该词的所有相邻阿拉伯字母之间插入延长符,根据相邻阿拉伯字母的连接状况确定所输出的延长符的显现形式。
优选地,如果点击延长符时光标不处在两个阿拉伯字母之间,则响铃报错。
利用本发明提供的基于阿拉伯字母名义形式编码的文字输入法具有以下有益效果:
1)解决常用的如阿拉伯文、波斯文、维吾尔文、哈萨克文、柯尔克孜文字等基于阿拉伯字母名义形式编码的文字输入方法中显示中出现的所见非所欲得的缺陷,显示效果更符合人的书写习惯;
2)单独录入字母的各个变形显现形式,以利教学之用;
3)用户利用可控空铅可以根据需要灵活调整词的长度,显示效果更美观。
具体实施方式
本发明提出的基于阿拉伯字母名义形式编码的文字输入法,结合附图和实施例说明如下。
本发明提出的基于阿拉伯字母名义形式编码的文字输入方法,所选用的阿拉伯字母名义形式映射在键盘上,阿拉伯字母名义形式编码符合ISO/IEC国际标准10646-1,以ISO/IEC国际标准10646-1中的阿拉伯字母显现形式编码为显示码,具体选用哪些阿拉伯字母、具体映射在键盘的哪些位置,根据所输入的语言而定,本发明不关注这些内容,采用现有的方法即可,本发明的改进在于输出显示步骤,具体为,在通过键盘键入阿拉伯字母时还包括由系统自动插入截断符的步骤;输出时分析所键入的阿拉伯字母所处位置并输出其对应的显现形式,分析时所述截断符作为一具有四种显现形式的阿拉伯字母看待,输出时所述截断符作为零宽不可见字符。因此,本发明是通过插入零宽不可见的截断符来改变所输出的该阿拉伯字母的显现形式,以得到人们期望看到的所键入的阿拉伯字母的显现形式。
本发明所提出的输入法适用于以ISO/IECG国际标准10646-1中的阿拉伯字母名义形式编码为内码、以上述标准中的阿拉伯字母显现形式编码为显示码的文字输入法,尤其适用于维吾尔文、哈萨克文、柯尔克孜文的文字输入法,下面结合实施例详细说明。
实施例1
在本实施例中,本发明提出的基于阿拉伯字母名义形式编码的文字输入法,所输入的为维吾尔文,通过本发明的方法输入维吾尔文中的词时,由于可以在词中插入截断符来改变当前所输入的阿拉伯字母在词中的位置,因此输出时在整个词没有输入完毕前可以得到第一个阿拉伯字母的“头符”显现形式,中间阿拉伯字母的“词中”显现形式及最后一个阿拉伯字母的“词尾”显现形式,如图2所示,词的整个输入过程与人的书写方式一致,所见即所欲。
本发明所说的截断符由于作为具有4种显现形式的普通阿拉伯字母对待,在输入步骤插入供分析所键入的阿拉伯字母的位置使用而不进行显示,因此输出显示时该截断符为零宽不可见字符(Z-WJoin,200D),在进行位置分析时将该截断符作为具有四种显现形式的阿拉伯字母,其中Z-WJoin代表截断符,200D为该截断符的编码。采用自动方式插入截断符适合平常人们输入词的时候使用,本实施例中自动插入截断符的方式为:在键入词的第一个阿拉伯字母时在第一个阿拉伯字母后自动插入,输出时分析第一个阿拉伯字母所处位置输出第一个阿拉伯字母的显现形式,由于分析时截断符作为一具有四种显现形式的阿拉伯字母看待,因此第一个阿拉伯字母应输出“头符”显现形式,而不是象现有技术那样输出“独符”的显现形式;之后每键入一个阿拉伯字母,将截断符自动移位到新键入的阿拉伯字母后面,输出时分析新键入的阿拉伯字母所处的位置以决定其显现形式,由于分析时截断符作为一具有四种显现形式的阿拉伯字母看待,因此第二个阿拉伯字母应输出“中符”显现形式,而不是象现有技术那样输出“尾符”的显现形式(如果该字母只有“独符”和“尾符”两种显现形式,则不论采用哪种方法,此时都只会输出“尾符”);直至词的最后一个阿拉伯字母输入完毕时由后续输入的空格或标点删除所述截断符,由于截断符被删除,词的最后一个阿拉伯字母很自然地以词尾形式显示出来。
如图3所示为输入维吾尔文中的词的流程图,该输入步骤包括:
s11,获取当前被键入的字符k;
s12,查当前被键入的字符k的前一个字符pre,因为输出显示时需要分析所键入的阿拉伯字母所处的位置,因此需要分析当前所键入的阿拉伯字母的前一个字符,判断所键入的阿拉伯字母是处于词首还是前面已键入阿拉伯字母;该步骤具体包括子步骤:
s120,记录内存指针的初始位置,即标记当前键入的字符k在内存中所处的位置;
s121,指针后移,即找到当前被键入字符k之前被键入的字符;
s122,判断指针是否指向ttwl、NB的任一个,若是,返回执行步骤s121,若否,执行步骤123;
NB(no-break space):空铅,用于匀行时填空,有两个变体:一个是form1即空白(编码为00A0);一个是form4即NBHyph(non-breaking hyphen,编码为2011,用来延长阿拉伯字母之间的连线,本实施例中form1代表独符显现形式,form4代表中符显现形式。
tatweel:醒目空铅,用于把词拉长,使之醒目,也有两个变体:一个是空白NBQD(编码为2000);一个是tatweel(编码为0640),用来延长阿拉伯字母之间的连线,tatweel常略作ttwl。
因为需要找到的是当前所键入字符k的前一个字符,而指针后移有可能指向非字母,即上面的ttwl或NB,若执行此类非字母,需要指针返回s121继续后移。(此处所谓“非字母”特指“非阿拉伯字母”,下同)
s123,判断指针是否指向分行符、SHY的任一个,若是,返回执行步骤s121,若否,执行步骤124;
SHY(soft hyphen):软连线,只用于移行时使用。
同理,因为需要找到的是当前所键入字符k的前一个字母,而指针后移有可能指向非字母,即分行符或软连线,若指向此类非字母,需要指针返回s121继续后移。
s124,判断指针是否指向辅音字母,若是,将pre赋值为1,并执行步骤s127,若不是辅音字母,则执行步骤s125;
s125,判断指针是否指向元音字母,若是,将pre赋值为2,并执行步骤s127,若不是元音字母,则执行步骤s126
s126,将pre赋值为0,执行步骤s127;
若当前被键入的字符的前一个字符既不是元音字母也不是辅音字母,则说明是非阿拉伯字母的字符,有可能是空格、标点符号、数字等字符,此时,说明当前所键入的字符是词的第一个阿拉伯字母。
s127,指针回到初始位置,即指针重新指向当前所键入的字符;
s13,判断当前所键入的字符k是否为元音,若是,执行步骤s14’,若否,执行步骤s14;
维文中输入的阿拉伯字母是元音时,需要增加一个判断,看看其前字符是“非阿拉伯字母”、元音的阿拉伯字母还是辅音的阿拉伯字母,就知道在该元音字母之前该不该加前缀hamza。如果是“非阿拉伯字母”或元音字母则加前缀hamza,如果是辅音字母则不加前缀hamza。
s14’,判断当前所键入的字符k的前一个字符是否是辅音的阿拉伯字母,若是,执行步骤s19’,若否,执行步骤s15’;
s15’,判断当前所键入的字符k的前一个字符是否是元音的阿拉伯字母,若是,执行步骤s18’,若否,执行步骤s16’
s16’,插入零宽不可见的截断符;
s17’,指针后移,即指针指向所插入零宽不可见的截断符的前一位置;
s18’,插入前缀hamza,采用现有常用的方法插入维文元音;
s19’,插入当前被键入的字符k,结束。
s14,判断当前所键入的字符k的前一个字符是否是辅音的阿拉伯字母,若是,执行步骤s17,若否,执行步骤s15;
s15,插入零宽不可见的截断符;
s16,指针后移,即指针指向所插入零宽不可见的截断符的前一位置;
s18,插入当前被键入的字符k,结束。
当前所键入的阿拉伯字母是非元音字母的情况下,经过步骤s14~s19,在当前所键入的阿拉伯字母k的前一个字符是非阿拉伯字母的情况下,说明是空格、标点符号、数字等非阿拉伯字母字符,此时,说明当前所键入的阿拉伯字母是词的第一个阿拉伯字母,插入零宽不可见的截断符,并将指向截断符的指针后移插入当前所键入的阿拉伯字母k,使插入的截断符位于所键入的阿拉伯字母k之后,输出时分析所键入的阿拉伯字母k的位置而输出其相应的显现形式;在当前所键入的阿拉伯字母k的前一个字符是元音字母或辅音字母的情况下,说明当前所键入的阿拉伯字母k不是词的第一个阿拉伯字母,且在当前指针所指向的位置已经插入有截断符了,则直接在当前指针指向的位置插入所键入的阿拉伯字母k。
当前所键入的阿拉伯字母是元音字母的情况下,经过步骤s14’~s19’,在当前所键入的字符k的前一个字符既不是元音阿拉伯字母也不是辅音阿拉伯字母,则说明是非阿拉伯字母的字符,说明是空格、标点符号、数字等非阿拉伯字母字符,此时,说明当前所键入的阿拉伯字母是词的第一个阿拉伯字母,插入零宽不可见的截断符,并将指向截断符的指针后移插入当前所键入的阿拉伯字母k,使插入的截断符位于所键入的阿拉伯字母k之后,输出时分析所键入的阿拉伯字母k的位置而输出其相应的显现形式;在当前所键入的字符k的前一个字符是辅音的阿拉伯字母时,说明当前所键入的阿拉伯字母不是词的第一个阿拉伯字母且不需要加前缀,且在当前指针所指向的位置已经插入有截断符了,则直接在当前指针指向的位置插入所键入的阿拉伯字母k;在当前所键入的字符k的前一个字符是元音字母时,说明当前所键入的阿拉伯字母不是词的第一个阿拉伯字母且需要加前缀,且在当前指针所指向的位置已经插入有截断符了,则加入前缀后在当前指针指向的位置插入所键入的阿拉伯字母k。
本实施例中通过输入空格或标点符号来确定所键入为词的最一个阿拉伯字母,如图4所示,在当前所键入的字符为空格或标点符号时,首先查当前被键入的字符的前一个字符pre,查pre的步骤通图3中的查pre的过程,在前一个字符pre为元音字母或辅音字母的情况下,说明输入的词结束,删除所插入的截断符并插入空格或标点输出显示,词的输入结束;在前一个字符pre为非阿拉伯字母的情况下,如前面是个标点符号或数字等,则直接插入空格或标点并输出显示。
实施例2
在本实施例中,本发明提出的基于阿拉伯字母名义形式编码的文字输入法,用于哈萨克文的文字输入,同理,通过本发明的方法输入哈萨克文中的词时,由于可以在词中插入截断符来改变当前所输入的阿拉伯字母在词中的位置,因此输出时在整个词没有输入完毕前可以得到第一个阿拉伯字母的“头符”显现形式,中间阿拉伯字母的“词中”显现形式及最后一个阿拉伯字母的“词尾”显现形式。另外,与实施例1不同的是,不需要对元音字母进行加前缀的处理,其输入流程如图5所示,基本过程与输入维文相同,这里不再赘述。不同的是哈萨克文共有9个元音字母,因此在插入当前被键入的字符后需进行前元音符(fs)处理,前元音符(fs)处理可采用现有的方法进行处理。
实施例3
在本实施例中,本发明提出的基于阿拉伯字母名义形式编码的文字输入法,用于柯尔克孜文的文字输入,同理,通过本发明的方法输入柯尔克孜文中的词时,由于可以在词中插入截断符来改变当前所输入的阿拉伯字母在词中的位置,因此输出时在整个词没有输入完毕前可以得到第一个阿拉伯字母的“头符”显现形式,中间阿拉伯字母的“词中”显现形式及最后一个阿拉伯字母的“词尾”显现形式。另外,与实施例1不同的是,不需要对元音字母进行加前缀的处理,与实施例2不同的是,不需要进行前元音符处理,其输入流程如图6所示,基本过程与输入维文、哈文相同,这里不再赘述。
另外,使用阿拉伯字母编码的阿拉伯文和波斯文,采用同样的方法进行输入,如图9a、图9b分别给出了采用现有方法和采用本发明方法的阿拉伯文输出显示过程,图10a、图10b给出了采用现有方法和采用本发明方法的波斯文的输出显示过程。具体过程这里不再赘述。
实施例4
本发明所提出的基于阿拉伯字母名义形式编码的文字输入法中,在通过键盘键入阿拉伯字母时还包括插入截断符的步骤,截断符所插入的方式既可以通过程序自动插入,也可以通过键盘方式插入,实施例1~3给出了程序自动插入的方式,截断符自动插入到键入阿拉伯字母的后面,适于日常输入时词的输入,以满足符合人的书写习惯的显示方式。而本实施例中通过键盘方式插入截断符,既可以将截断符插在所键入的阿拉伯字母的前面、也可以将截断符插入在所键入的阿拉伯字母的前面、或前后都插入截断符,用于单独录入阿拉伯字母的各个变形显现形式,以利教学之用。
具体实施方式为在标准键盘的一个键位如大写J的位置上另外专门设有一个“截断符键”(Z-WJoin,200D),本实施例中分别用维、哈、柯文标记为借助该截断符的“不可见”特性,在键入某个阿拉伯字母之前或之后敲击此键,或在字母前后均敲击此键,便可得到该阿拉伯字母的单独存在的各个显现形式。当然也可以得到我们需要的词的非正常形式——截头去尾的形式。因此,可供教学使用。
实施例5
本发明所提出的基于阿拉伯字母名义形式编码的文字输入法中,通过插入截断符来改变当前所输入的阿拉伯字母在词中的位置,以输出需要的显现形式。现有技术中通过程序自动调整词的长度,而本发明在词输入完成后,可以根据需要在词中需要加空铅的地方填塞一延长线或者空白。具体实施方式详述如下。
该方法中映射时还包括在键盘上选择一个键位映射延长符的步骤,如映射在标准键盘大写T的位置上,分别标作维、哈、柯文的“拉长符”一词,所述延长符具有两种显现形式(变体),其中一种显现形式为不可连阿拉伯字母之间的空白,另一种显现形式为可连阿拉伯字母之间的连线;在需要加入延长符的位置点击该键位时,根据所述位置前后相邻阿拉伯字母的连接状况确定所输出的延长符的显现形式(单插ttwl)。本实施例中将延长符称为“可控空铅”。现有技术中在程序中自动使用NB和ttwl,本发明将ttwl标记为延长符映射在键盘上,由用户根据需要键入,由程序根据键入位置的前后字符来判断使用哪个变体形式。可以达到用户期望的显示效果。需要加入延长符的位置在词中时,若摁住Ctrl键在词中的任一处点击所述键位,则从头至尾在该词的所有相邻阿拉伯字母之间插入连接符,根据相邻阿拉伯字母的连接状况确定所输出的延长符的显现形式(词内遍插ttwl)。下面结合附图详述单插ttwl和词内遍插ttwl的步骤。
如图7所示,在需要加入延长符的位置点击该键位时插入连接符具体包括步骤:
s21,查询需加入延长符的位置之前后相邻阿拉伯字母Rar、Lar,其具体包括子步骤:
s210,记录内存指针的初始位置,此时,内存指针指向需加入延长符的位置;
s211,指针后移;
s212,判断指针是否指向ttwl、NB、分行符和SHY等非字母,若是,返回步骤s211继续后移,若否,说明找到右边字母,执行步骤s213;
s213,将指针指向的字符赋值给Rar,Rar代表需加入延长符的位置的右边字符;
s214,指针回到初始位置,即指针重新指向需加入延长符的位置;
s215,记录内存指针的初始位置;
s216,指针前移;
s217,判断指针是否指向ttwl、NB、分行符和SHY等非字母,若是,返回步骤s216继续前移,若否,说明找到了左边字母,执行步骤s218;
s218,将指针指向的字符赋值给Lar,Lar代表需加入延长符的位置的左边字符;
s219,指针回到初始位置,即指针重新指向需加入延长符的位置;
s22,判断Rar、Lar是否均大于0,若否,说明有错误直接报错并结束,若是,则指向步骤s23;
s23,判断Rar、Lar中的值是否有一个等于0627或0675,若是,执行步骤s24,若否,指向步骤s28;
s24,指针后移,即指向Rar或Lar的前一字符;
s25,判断指针是否指向0644,若是,说明不能加入延长符,执行步骤s26,若否,说明可以加入延长符,执行步骤s27;
s26,指针前移,回到需加入延长符的位置并报错,结束;
s27,指针前移,回到需加入延长符的位置,执行步骤s28;
s28,在需加入延长符的位置插入延长符,根据Rar、Lar确定所输出的延长符的显现形式。
上述0627、0675、0644分别代表ISO/IEC国际标准10646-1中编码值为0627、0675、0644的阿拉伯字母,由于0627和0644、0675和0644分别组成合体字
,在0627和0644之间、0675和0644之间不能加入延长符,所以增加了上述判断是否能加入延长符的步骤。
如图8所示,遍插ttwl具体包括步骤:
判断指针指向的阿拉伯字母是否为非阿拉伯字母,若为非阿拉伯字母,报错并结束,若指向阿拉伯字母,将n初始化为0,图中ar代表阿拉伯字母(阿字、波字、哈字、维字、柯字),图中:
ar=0:非阿拉伯字母
ar=1:具有一种显现形式的阿拉伯字母
ar=2:具有两种显现形式的阿拉伯字母
ar=3:代表tatweel(-),SHY(-),NB
ar=4:具有四种显现形式的阿拉伯字母;
′:的,如k′ar=k的ar
↑:内存指针,简称指针,也表示所指字符
↑退一:指针后移
↑=ttwl:指针指向ttwl
↑′ar:指针指向的阿拉伯字母有几种显现形式
如图8所示,经过图中的“到词首”、“定当前位置”部分,经过指针一直退回到词首,通过n统计出当前位置距词首有几个阿拉伯字母;
通过图中的遍插ttwl部分,从词首开始通过查左边字符和右边字符依次在相邻可插入延长符的地方插入延长符,在不能插入延长符的地方继续向前走找下一个能插入延长符的位置,直到遇到标识词结束的非阿拉伯字母时遍插结束;
图中退至词首部分表示,由于遍插过程中指针会逐步移至词尾,这一部分的功能是让指针退回到词首;
图中回到原位部分表示,由于之前已记录了当前位置距词首有几个阿拉伯字母,因此,可以再将指针前移到原位,方便用户的下一步操作。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。