美文网首页
BUG|字体和国际化

BUG|字体和国际化

作者: 厘米姑娘 | 来源:发表于2022-12-08 16:04 被阅读0次

排查土耳其文显示异常的问题。

发现问题

适配同学反馈某个设备在土耳其环境下无法显示部分字符,出现乱码:

因为自测机能显示出来,且异常字符主要是ğş,所以一开始怀疑是设备字符集不全导致。而心细的产品又发现虽然其他设备能显示这两个字符,可是又明显和旁边的其他文本字体不一致,略大一点:

于是又找了几个测试机,确实存在要么显示乱码要么显示偏大,看来并不是单机而是共性问题。

定位原因

在上次排查BUG|Flutter Text组件和国际化时了解到字体也会影响UI显示,所以第一步想先看下是否和字体相关。项目里引用的字体就是常用的TTF格式,打开这个字体表:

通过官方介绍文档可知,TTF文件由多张表组成,在文件头部先有一张Font Directory目录文件记录有多少表格以及它们的长度、起始位置等信息:

紧接着目录文件就是各个Font Tables,关键表格是这几个:

其中,核心的glyf表就是描述一个字符是如何绘制的,包括制定描述构成轮廓的轮廓点和网格匹配该字形的指令。比如这个AgencyFB字体的ç字符:

靠肉眼查二进制文件效率很低,这里使用解析工具opentype.js可以快速看到İŞĞşğ这几个土耳其特殊字符都找不到导致显示不出来;而其他设备能展示出来的只是系统默认字体,所以和规定字体看起来不一样。

解决办法

明确了是字体问题,解决办法就是联系设计同学来提供更完备的字体文件。Agency FB 多了298-302这几个土耳其字符:

总结

事实上,可能不止是土耳其这几个字符缺失,参考Google提供的一个声称是Global Font的字体Noto Sans 足足包括了3700个字符。因此海外产品在引用自定义字体时,要考虑到字体支持的字符集是否满足当前地区所需。

相关文章

  • BUG|字体和国际化

    排查土耳其文显示异常的问题。 发现问题 适配同学反馈某个设备在土耳其环境下无法显示部分字符,出现乱码: 因为自测机...

  • 时间控件

    My97DatePicker 感觉这个插件还不错 国际化 因为工作要求,网站做了国际化,测试提了一个BUG,日期控...

  • BUG|Flutter Text组件和国际化

    发现问题 新版本引入了一个新勋章,测试走查其多语言时发现,泰文版勋章名没有一行展示而是换行了,如图所示: 因为其他...

  • 关于字体适配的问题

    之前没有做过字体适配.这次突然提 bug 说是,字体在5上面看着大.突然觉得有点蒙.?怎么办那么多字体....言归...

  • android studio报错: error: Apostro

    TextView控件常见问题 为了国际化需要,通常需要采用多种字体。 run后,报error: Apostroph...

  • tinymce的bug修改

    测试提了几个bug:1.默认的字体单位是pt,修改为px2.默认字体大小18px3.字体要有微软雅黑,宋体,黑体4...

  • iOS 国际化bug总结

    前言 首次接触iOS国际化,创建了Localizable.strings 文件之后,就开始在Localizable...

  • webapp字体自动变大bug

    场景描述: 今天开发移动端webapp时候,用手机测试的时候发现6s手机的字体无缘无故的变大 原因: 这是webk...

  • iOS 运行发现,view随着屏幕的变大整体放大的问题

    前言 今天忽然接到测试那边传来的bug说,我的字体没有做适配。字体会随着屏幕变大而变大,当时可凌乱,因为我明明做了...

  • BUG|Java 大小写转化和国际化

    当国际化遇上大小写转化(Java),可能需要知道的这个坑。 发现问题 在PUBG内嵌社群用户可以发布想法结交好友。...

网友评论

      本文标题:BUG|字体和国际化

      本文链接:https://www.haomeiwen.com/subject/iozoxdtx.html