系列文章目录
keil-STM32开发-俄语
—增加俄语显示
前言
—最近正好要将一个项目的语言增加俄语功能,正好拿平台做个资源整合以及做记录功能,发现自己写的程序过了一段时间没看过 真的有种我当初是咋想的感觉,想明白后嗯得加个注释进去。
一、俄文的编码
俄文的编码有西里尔(DOS),西里尔(ISO),西里尔(window-1251),西里尔(KOI8-U)
Unicode范围: 0400-052F (西里尔文)
locale编码: Windows, ISO, KOI8-U, KOI8-R
1.Windows
HTML charset: windows-1251
RTF charset: 204
编码方式: 1 byte语系
2.ISO
HTML charset: iso-8859-5
RTF charset: 无
编码方式: 1 byte语系
3.KOI8-U
HTML charset: koi8-u
RTF charset: 无
编码方式: 1 byte语系
4.KOI8-R
HTML charset: koi8-r
RTF charset: 无
编码方式: 1 byte语系
因为本人keil开发使用的语言方式是GBK2312,为了方便我个人开发方便,使用的是GBK2312的俄文编码:大写 a7a1-a7c1 小写:a7d1-d7f1
当然上面的编码方式都是可以使用的 这里推荐使用易木雨软件工作室制作的点阵字库生成器
二、字库的使用
1.俄文取模
俄文33个字母,大小写如下
АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ
абвгдеёжзийклмнопрстуфхцчшщъыьэюя
针对俄文来说大小其实跟英语差不了太多,但是因为字库是双字节的原因,跟中文的代码写法很类似,但是显示字形差强人意,主要还是俄文的翻译显示普遍比英文长很多 再加上字库字形的原因在显示开发上更改会增加很大的难度。
通过互联网这个大平台寻找到了相关资源,当然也可以用取模软件自己画,我比较相信我的画画天赋,选择相信了互联网,感谢大佬的分享,分享链接: https://download.csdn.net/download/yjdnjgg/10781259 逐行式 高位在前
2.代码编写
因为数据量比较少,可以直接放在FLASH中,查找方式跟keil的语言有关,例如你是unicode则判断当前字是否在0400-052F之间,这里有一点不同 因为俄文跟中文一样占用2个字节所以要进行双字节的判断:
优先级最好设置英文优先级最高来区分,这样很多标点字符可以利用英文来显示
/* unicode 的编码查找 */
font_16 = (u16)(*Str_p*0x100+*(Str_p+1)) ;
if( font_16 >=0x0400 && font_16<=0x052F ){} //在当前范围时则为俄文
/* GBK2312 的编码查找 */
font_16 = (u16)(*Str_p*0x100+*(Str_p+1)) ;
if( font_16 >=0xa7a1 && font_16<=0xa7f1 ){} //在当前范围时则为俄文
总结
以上就是今天要讲的内容,本文仅仅简单介绍了关于我个人开发中知识总结相关代码就不献丑了,可以参考正点原子写的显示程序,基本差不多。