多语言字符串的字体问题

一个字符能够在Windows界面上显示出来,首先是当前编码要跟该字符的编码一致,同时还需要当前的字体支持。如果编码不匹配,显示出来往往就是乱码,如果字体不匹配,显示出来则往往是一个个方框。这里我们要分析一下字体的问题,对于一段字符串,如果里面包含了多种语言,尤其东亚语言,则用户选定的字体,往往不能支持所有的语言,比如中文并不支持Arial和Tahoma等字体。如果该字符没有对应的字体支持,就不会正常显示。那么究竟如何选择字体来显示含有多语言的字符串呢?

首先来介绍一下原理。OpenType font是由Microsoft和Adobe联合开发的基于Unicode的字体系统,它扩展了由Apple开发的TrueType font,能够对应字符(character)和它的图形(glyph)。在Windows中,核心字体包括Times New Roman, Courier New, Arial, Microsoft Sans Serif和Tahoma,这些字体能够显示包括了拉丁,希伯来、阿拉伯、希腊等语言,但没有包括东亚语言。当选择上面这些字体时,对于东亚语言,实际上是用了另外的字体进行了显示。也就是说,对于一段含有多语言的字符串,虽然选定了一种字体,但实际上对于那些该字体支持不了的字符,有另外的字体与之对应

这种字体对应的技术,在Windows中主要包括Font Fallback和Font Linking两种技术。一般而言,Font Fallback是在Application中完成,而Font Linking是在操作系统的GDI中完成。可以想见,如果两种技术都用到的话,那么一个字符的显示,首先用Font Fallback处理,然后还会用Font Linking处理,也就说后者可能会覆盖前者的结果。

Font Fallback - 为每种语言提供默认字体
------------------
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值