- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的应用程序允许用户即时切换语言。我发现大约 10% 的用户切换到中文或日文时,UI 文本的字形呈现不正确。
此应用程序在 iMX6 平台上的 Linux 下运行。正在使用 Qt 5.5.0。 QML 用于渲染 UI。损坏的文本正在使用 QML 文本控件呈现。
Example of corrupt font rendering
所使用的字体是 Source Hans Sans Regular。我曾尝试使用 QML FontLoader 加载它,并在 C++ 端将其加载到应用程序字体数据库中(这两种方法都存在问题)。我试过使用(公认非常相关的)Noto 字体;同样的问题。
在将 Roboto 用于非 CJK 文本时,我从未见过文本渲染的损坏,并且如上所述,这通常适用于 CJK/Source Hans Sans。
损坏很有趣,因为它看起来像是在渲染位图级别,而不是字形定义级别(注意某些字形的下半部分是正确的,但上半部分已损坏)。
腐败有时确实会发展。这让我认为字形位图缓存内存正在被进一步覆盖(只是一个理论,因为我不确定 Qt 如何进行字体渲染)。我认为这可能是 QML 垃圾收集做了一些奇怪的事情,但是在 C++ 端加载字体并没有什么区别。
接下来我将尝试对 QML 文本控件使用“ native 渲染”。
有没有人见过这个?任何人都可以确认 FreeType 用于 Qt 5.5.0 下的字体管理/渲染吗?有没有办法影响字体位图缓存的管理方式?
谢谢!
更新 :使用 'renderType: Text.NativeRendering' 并没有消除问题(尽管损坏的表现略有不同)。而且,鉴于该模式的局限性,最终的结果通常是呈现较差的文本(软、缩放不良等 - as documented)。
更新 2 :我构建 Qt 时(据我所知)禁用了所有字形缓存——shouldDrawCachedGlyphs() 在我的本地构建中为我能够找到的那个调用的四个实例返回 false——但仍然遇到字形损坏。
更新 3 :尝试通过设置 QMLSCENE_DEVICE=softwarecontext per docs 切换到使用软件(非 OpenGL)Qt Quick 2 渲染器;字形损坏仍然发生。
最佳答案
在这种特殊情况下,我正在使用的平台上的 OpenGL 驱动程序中存在一个错误。它会影响 FBO 回读。在环境中设置 QML_USE_GLYPHCACHE_WORKAROUND=1 会强制 Qt 在 RAM 中保留一个额外的字形缓存副本(因为当添加新字形时无法从图形硬件读回它)。
这意味着虽然渲染将是正确的(因为我们使用的是未损坏的第二个缓存)性能会稍微降低,因为 CPU 上有一个额外的副本并且字形缓存将使用两倍的内存.渲染质量不受影响。
Qt 支持能够为我指明正确的方向并限定与 QML_USE_GLYPHCACHE_WORKAROUND 相关的含义。
关于qt - 为什么我的 QML CJK 文本呈现损坏的字形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33241827/
这真是一个奇怪的要求,我正在制作一个香港网站。我需要在同一个网页上支持简体和繁体中文,并且我还希望它是谷歌Noto字体。 Google 提供了简体和繁体两种字体版本。 我的问题是,如果我只设置Noto
1.sqlite3 import sqlite3 con=sqlite3.connect("g:\\mytest1.db") cur=con.cursor() cur.execute('create
1.sqlite3 import sqlite3 con=sqlite3.connect("g:\\mytest1.db") cur=con.cursor() cur.execute('create
我有一个 PHP 脚本,它通过 Salesforce API 从 Salesforce 获取数据并使用 file_put_contents 将输出写入一个文件。数据是韩文字符和英文字符的混合。 当我在
Xamarin写Android程序时,通常要使用按中文首字母分组显示(如通讯录) 。 于是需要被迫包含CJK,不过包含后包肯定是会变大的,于是。。。。自己写了一个硬枚举的中文转拼音的类。 原理是
有没有好的(最好是开放的)中/日/韩语发音音频文件的 API 或数据库?我一直在环顾四周,但不知何故除了Forvo之外什么也找不到。或谷歌翻译。两者对我来说都是矫枉过正,因为我只需要这些语言的数据,只
我有一个文件,file1.txt ,包含英文、中文、日文和韩文文本。为了在 ConTeXt 中使用,我需要根据语言(英语除外)标记文件中的每个文本区域,并输出一个新文件,例如,这是一个示例行: The
我有一个字符串,可以是英文单词,也可以是单个 CJK 字符。我保证该字符串采用 UTF-8 编码。我正在 perl 脚本内部工作。 更高级别的问题是我有一个像上面描述的那样的字符串数组。我正在做一个连
当给定一个包含 CJK 字符的字符串时,String.length 返回字符串中错误的字符数,因为它计算的是字节数。例如: # String.length "第1";; - : int = 4 字符串
我使用 JavaScript 创建音译。我想知道是否有可能将 CJK 文本拆分成一系列单词,根据某些分词标准定义。还有其他选择吗? 期望的行为: 设置:动的密习近平 结果:[动,的,密,习,近平] 最
如您所知,在中国大陆、台湾、日本和韩国,人们有时会垂直书写和阅读,here's a simple example : 几年前,没有办法这样做。 好吧,至少没有漂亮的方法,你知道当时流行的一种方法是:每
抱歉我的英语不好,这不是我的第一语言。 我有一个 Python3 文件,其内容是 print(input(">")) 当我在 zsh 或 bash 上运行它并编写 hangul 并使用我的退格键时,会
问题:“仅支持 Unicode BMP 是否足以使以中文/日文/韩文为母语的人使用其母语的应用程序?” 我现在最关心的是说日语的人,但我也对中国人的答案感兴趣。如果应用程序仅支持 BMP 上的字符 -
我的应用程序允许用户即时切换语言。我发现大约 10% 的用户切换到中文或日文时,UI 文本的字形呈现不正确。 此应用程序在 iMX6 平台上的 Linux 下运行。正在使用 Qt 5.5.0。 QML
我确定这是由 gdb 的编码引起的,并在 gdb 中找到了改变编码的命令: 设置字符集字符集名称 我试过utf8, UTF8, UTF-8, utf-8,gbk、gb2312等来替换charsetna
这个问题在这里已经有了答案: Use regular expression to match ANY Chinese character in utf-8 encoding (8 个答案) 关闭 9
我的首选字体是 Inconsolata,它会破坏 GitHub 的 octicon 网络字体。昨天我更新了我的 Google Chrome 用户样式表以在 GitHub 上正确显示 octicon 字
我正在使用 iTextSharp 生成一系列 PDF,使用 Open Sans 作为默认字体。有时,名称会插入到 PDF 的内容中。但是我的问题是我需要插入的一些名称包含 CJK 字符(存储在 SQL
我正在尝试在 Excel 2016 中创建一个 IF 语句。我的电子表格有日语字符,我需要进行比较 =IF(A2="ア", TRUE, FALSE) 但是,即使 A2 实际上包含片假名 ア,该函数也总
我要查找的文件格式为 cmn-我.flac ,其中 CJK 字符是可变的。 使用 find命令,我应该使用什么正则表达式来 查找名称中包含单个 CJK 字符的所有文件? 提示: 以下正则表达式查找所有
我是一名优秀的程序员,十分优秀!