所以我给了一些使用EM空间,EN空间和各种其他Unicode固定大小的空格字符格式化的文本,它在英文Windows上的Firefox,Chrome和Edge(最新版本)中运行良好10 64位。我使用以下CSS来使其正确显示。
white-space: pre
然而,我得到的投诉是台湾用户没有正确对齐。我建议尝试使用其他浏览器。他开始使用Edge,转移到Chrome(同样的问题),然后转到Firefox(同样的问题)。在他的计算机上远程调试(并使用我最熟悉的Firefox调试器),我终于确定他的计算机上的EM空间(中文Windows 10,64位)宽度计算与EN空间相同,或者是一半大小它应该是。这是错位的根源。作为一种解决方法,在调试器中,我用一对EN空格替换了许多EM空间,这产生了正确的对齐。
由于3种不同浏览器的症状相同,似乎可能是Windows问题......但为什么在不同语言版本的Windows中对EM空间的处理方式不同?我知道普通空间U + 0020的宽度可能因字体而异,但在此文本体中没有使用普通空格来进行对齐。
我确认两台机器上都使用了相同的网络托管字体,并且使用fonttools验证了U + 2003的宽度为1000,而U + 2002的宽度为500(设计单位)。
如果Unicode EM空间在不同的计算机上的大小不同,它有什么用? 还有其他角色的大小不同吗?
虽然我有一个解决方法,我可以使用搜索和替换,当我获得此文本正文的更新,这将适用于此用户,其他语言版本的Windows的解决方法有多强大(如果这是问题的根源)?
对于具有明确定义尺寸的其他字符,是否还需要其他语言版本的其他类似解决方法?
布局也适用于我手头的英文版Android,但我一般都没有Linux,Mac或非英文Android或Windows进行测试。