我正在为Android平台开发一个小型的OpenGL游戏,我想知道是否有一种简单的方法可以在渲染帧的顶部渲染文本(比如带有玩家得分的HUD等).文本也需要使用自定义字体.
我已经看过使用View作为叠加层的示例,但我不知道是否要这样做,因为我可能希望稍后将游戏移植到其他平台.
有任何想法吗?
是否有(便携式)方法将HTML表格单元格中的文本旋转90°?
(我有一个包含许多列和大量文本的表格,所以我想垂直写它以节省空间.)
我正在实现一个基于OpenGL构建的GUI.我遇到了每个GUI都有的问题 - 文本渲染.我知道在OpenGL中渲染文本的几种方法,但是,我想知道哪种方法最适合GUI.
通常在GUI中我们有两种类型的文本 - 静态和实时.静态很容易 - 我们可以将TTF渲染到纹理并忘记它.这是"现场"文本,更让我烦恼 - 想象控制台,或多人游戏中的实时聊天.
我想到了几个选择:
因此问题是 - 如何有效地在OpenGL中呈现文本?
如果这有帮助,我将使用STL/Boost-heavy C++进行编码,并针对GForce 6及更高版本的显卡.
我注意到这个woo主题例如它设置在HTML标签上,因此整个网站的文本都设置了它.我读到它可能会导致性能问题,但那是一段时间以前.有些人建议只将它添加到标题和大文本中.
规则现在改变了吗?浏览器是否表现良好?
我见过一些在CSS中提到的网站 - font-weight: 700或者font-weight: bold.但两种结果都是一样的.哪一个是正确的,我们应该如何遵循?请建议我.
符号是:ؤ
这个符号有什么特别之处,它来自哪里?
可以采取哪些措施来验证此类输入?或者甚至更好,这些符号如何正确显示(即不让它们与其他元素重叠)?
我在IntelliJ IDEA中遇到了反锯齿文本的问题.那个东西由于某种原因附带了自己版本的OpenJDK 8.无论如何......子像素别名对于明亮的暗文本是可以接受的:
但对于明亮的黑暗文本,伽玛是错误的:
这意味着在这个方案中,文本看起来好像是粗体和水平模糊/模糊.
是否可以指定系统属性或破解系统,否则将AA插值的伽玛值更改为更暗的颜色?我已经选择了一个非常精细的字体(FicaCode Light),在这台计算机上没有显示较少粗体的字体(带有Gnome 3,19000x1080显示屏的Linux).
编辑:我真的在寻找一种控制AA伽玛的方法.我没有使用过IDEA 2017.1 EAP,但是发布版本已经附带了"固定"捆绑调整版本1.8.0_112,这在gist评论中提到过.如果我下载该版本,我会得到与上面两张图像完全相同的像素输出.这些是idea64.jvmoptions:
-Xms128m
-Xmx750m
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-Dawt.useSystemAAFontSettings=lcd
-Dsun.java2d.renderer=sun.java2d.marlin.MarlinRenderingEngine
-Djava2d.font.loadFontConf=false
Run Code Online (Sandbox Code Playgroud)
添加或删除最后一个属性只是使零差价,也改变从lcd到on或off具有零效果.
将这些图片与我通过Debian安装的常规OpenJDK 1.8.0_121进行比较:
很明显,这里的AA被破坏了(1:1它看起来完全是彩色的).所以我认为捆绑版本的子像素渲染基本上是正确的.只有在深色背景上使用错误的伽玛才能显示浅色文字.
编辑:经过更多的调查,问题归结为:我可以使用之间的自定义font.conf文件,和.对于轻微提示,字体在宽高比方面看起来平衡,但抗锯齿具有错误的伽玛,因此字体线条很粗(一切看起来都是粗体).对于中等或完全提示,字体看起来更细,更清晰,但现在宽高比被打破,字体太宽.hintstylehintslighthintmediumhintfull
我有一个多语言项目(目前有13种语言),它使用了许多不同的字体变体"Helvetica Neue",大多是LinoType Pro字体集(包括西欧字符)的粗体,浓缩和常规剪辑,以及西里尔字母.我们可能会在未来添加中文和日文版本.
我已经设置了项目以使用不同的CSS样式表,并根据用户选择的语言单独加载每个版本的字体,因此我可以使用不同的行高,字距调整和/或字体大小来使所有内容保持原始外观,即使字体看起来没什么相似之处.
所有这些都很有效,除了一个问题:由于某种原因,所有西里尔字母似乎都被取代了.它们显示在正确基线下方2-3个像素处,实际上突出显示在文本字段的下边框上,即使该字段设置为自动调整大小.当我使用时textfield.getCharBoundaries(),所有值似乎都是正确的,即使它们显然没有正确呈现.
为了使一切看起来整洁,我当然可以根据语言和字体大小手动上下移动所有有问题的文本字段,但我想知道是否有某种方法可以防止或至少检测到这种位移以便自动处理调整 - Flash Player应该有关于如何呈现事物的某种信息,不是吗?你们有没有类似的问题?或者更好:解决方案?
flash fonts internationalization actionscript-3 text-rendering
我已经知道,与GDI相比,子像素定位会导致DirectWrite文本呈现模糊.
但是,我的问题更为基础:为什么 DirectWrite(和相关方法)不能像GDI一样呈现文本?
换句话说:
什么阻止 DirectWrite能够将文本捕捉到最近的像素,就像GDI一样?
例如,它是硬件问题吗?驱动程序架构问题?它根本没有实现吗?或者是其他东西?

Direct2D,别名:

Direct2D,默认:

Direct2D("经典GDI"):

Direct2D("天然GDI"):

实际 GDI:

[原标题:IE 9文字渲染效果很差; 有解决方法吗?)
IE 9正在渲染我的应用程序中的文本非常糟糕.问题不在我的显示器的清除类型设置中,因为兼容模式下的IE 9,Firefox和Chrome都能很好地呈现文本.以下是对IE 9,兼容模式下的IE 9和Chrome进行文本渲染的并排比较:



我尝试应用这个答案,但它似乎不适用于IE 7后的任何内容.有人知道我们可以应用于我们的网站来修复IE 9的坏文本呈现的任何变通方法吗?
编辑:
我把问题页面简化为最基本的要点.正如您所看到的,重现并不需要太多.如果IE9和IE9标准的文档模式,请确保IE具有浏览器模式:
<html xmlns="http://www.w3.org/1999/xhtml">
<body style="background-color: rgb(30, 34, 59); color: rgb(255, 85, 0); font-size: 20px">
Home
</body>
</html>
Run Code Online (Sandbox Code Playgroud) text-rendering ×10
css ×3
antialiasing ×2
fonts ×2
android ×1
browser ×1
cleartype ×1
css3 ×1
directx ×1
flash ×1
gdi ×1
html ×1
java ×1
java-2d ×1
opengl ×1
opengl-es ×1
performance ×1
smoothing ×1
text-styling ×1
unicode ×1
validation ×1
winapi ×1
zalgo ×1