参考文字:どうもありがとうございました
复制到:
AGE_IN_DAYS
和一个字体系列(Lucida控制台也在这里显示方框),如果我是对的,可以显示它们是否可以解释为什么记事本可以在任何字体系列中显示任何文本而LibreOffice + Console不能?差异在哪里?例如,记事本可以在控制台上具有相同的行为吗?
答案 0 :(得分:4)
某些Windows字体有许多不同脚本的字形,有些包含几个脚本,而且很多只包含一个脚本。 (支持许多脚本的字体有时被称为“Unicode字体”,这可能是一个误导性的术语。在其他操作系统中,这些字体更为普遍.Windows本身不附带任何,但我认为你得到一两个使用Office套件。)
当您尝试使用一种众所周知的字体使用标准Windows函数在多个脚本中输出文本时,Windows使用font fallback and/or font linking,它会根据需要自动切换字体以输出整个字符串。因此,大多数程序(如Notepad和Notepad ++)都会自动覆盖。
我还没有阅读过LibreOffice代码,但我怀疑当你为一段文本选择一种字体时,它会坚持使用该字体,从而有效地阻止了Windows的字体回退和字体链接机制的帮助。这并不奇怪,因为WYSIWYG编辑器可能会使用较低级别的API来输出文本,以便进行更多的排版控制。但是使用较低级别的API意味着你不会免费获得后备和链接,所以你必须自己实现它,这是很多额外的工作,对很多用户来说可能并不重要。
Windows控制台具有许多遗留问题和限制因素,以便与旧程序向后兼容。控制台主要模拟DOS系统,它没有任何类型的Unicode支持,而是依赖于“代码页”,粗略地说,它是字符值和字形之间的替代映射。代码页面仅适用于一个(或两个)脚本,因此如果您需要来自其他脚本的字符,那么您基本上就不走运了。我认为现代版本的Windows已经破解了对支持UTF-8的伪代码页的一些支持,但我从来没有让它运行良好,它也有局限性。