问题标签 [kerning]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3131 浏览

java - 在 Java2D 中访问字体字距信息

小背景。。

我正在使用JavaLWJGL制作 OpenGL 游戏。我编写了一个TextRenderer使用缓存的字形页面呈现文本的类。字形本身在 Java2D 中呈现为BufferedImages 并与字形测量一起打包到纹理页面中。TextRenderer使用缓存的信息将字符绘制为带纹理的四边形。

所有这一切都很好,除了一件事:缺少字距调整。当然,没有必要因为文本看起来很好,但如果我可以访问字体字距调整信息,它会提高质量。

问题是..

是否有可能使用纯 Java 以一种可在 Windows、Linux 和 MacOS X 之间移植的方式获取字距调整信息?当我写这篇文章时,TextRenderer我短暂地环顾四周,但找不到这样的方式..

一种可能的解决方案

如果在纯 Java 中无法做到这一点,我正在考虑使用Freetype编写一个单独的工具。如其功能页面中所列:

FreeType 2 提供了其他类似字体引擎通常无法提供的信息,例如字距调整、字形名称、垂直度量等。

该工具会将常用字符的字距调整对存储到我的文本渲染器将加载并使用的文件中。所以如果你们没有提出更好的选择,这可能就是我会做的。:)

0 投票
4 回答
4367 浏览

fonts - 如何阻止 rxvt 将字体隔开几英里?

我安装了最新版本的 MinGW/MSYS,我喜欢在无聊的 windows 命令提示符下使用 rxvt 终端。但是这个新版本的字母太多了:我尝试过的大多数字体都搞砸了——甚至是 Courier New (ttf)、Consolas (ttf) 或 PC6X13 (fon)。

我坚持使用普通的 OLD Courier,因为至少它是可读的。有什么解决方案吗?EASY 解决方案首选,我不想修补源代码并重新编译 rxvt!

0 投票
3 回答
1061 浏览

text - Uniscribe Kerning

At work, I have been tasked with improving the text rendering of our application to better support text character kerning. Our application generates images that appear on Television, so image quality is paramount. Therefore, even small improvements to the appearance of any output we generate is very useful.

Our current text engine is implemented using Uniscribe, which seems to be an ideal solution. As mentioned here, it supports ligature substitution in a context aware fashion with complex scripts. It also handles right-to-left languages, and BiDi. This is all important as we need to be able to render arabic/cursive languages perfectly.

It therefore seems rather peculiar that Uniscribe doesn't appear to output glyph kerning information. I have attached a screenshot to demonstrate the issue.

alt text http://www.aliparr.net/kerning.jpg

My app performs the same as notepad in that every glyph appears 'monospaced'. Notice how in Photoshop CS2, the bridge at the top of the 'T' nicely overhangs the 'e'. I want to recreate this.

I am aware of other APIs such as Pango/Freetype - but it seems a rather heavyweight solution to include all of that just to do the final 1% of this task, if Uniscribe is so great at everything else.

Am I missing a step using Uniscribe? What is the best solution to this? Can Freetype export kerning information in a lightweight fashion, so that I can integrate it with the existing Uniscribe solution?

N.b. We only need to run on Windows - platform portability is thankfully not an issue I need to worry about right now.

Cheers in advance !

0 投票
1 回答
3160 浏览

c++ - 提取字形紧缩信息 C++

在问了我之前关于 Uniscribe glyph kerning的问题之后,还没有收到答案,再加上在 google 等上的进一步阅读,似乎 Uniscribe 可能不支持从字体中提取字形字距调整信息。

因此,我有一个简单的后续问题 - 是否有任何好的示例(最好是一些 C++ 代码)从字体中提取指定字符串的字形字距调整信息?

很多地方都提到过 Pango、QT 或 ICU 都能够做到这一点,但是文档有点薄,我很难知道从哪里开始。

任何为我指明正确方向的帮助都非常感激。我已经有代码以所需的方式呈现字形,我只是在扩展字距调整信息之后,所以我可以更好地定位字形。

谢谢,

0 投票
12 回答
34565 浏览

android - 如何在 Android TextView 中调整文本字距?

有没有办法调整 Android 中字符之间的间距TextView?我相信这通常被称为“字距调整”。

我知道该android:textScaleX属性,但这会压缩字符和间距。

0 投票
2 回答
2384 浏览

wpf - 如何在 WPF 中启用字距调整?

我正在尝试在我的 WPF TextBlock 中启用字距调整,如

但是,将 Kerning 设置为 True 或 False 似乎没有任何区别。我做错了什么?

0 投票
2 回答
1806 浏览

vb.net - vb.net 中的字距调整

有谁知道如何在 vb.net 中更改字距(字符之间的空格)?例如,我想将“STRING”更改为“STRIN G”。如果可能的话,我希望能够创建自己的字体,我可以根据需要指定字距!提前致谢!

0 投票
1 回答
1723 浏览

.net - 修改 System.Drawing.Graphics.DrawString() 中的字距

我正在使用 System.Drawing.Graphics 类和 DrawString() 方法将文本渲染到图像上。

我需要以一种非常具体的方式为该图像生成文本,以便它与现有图像完全匹配——逐个像素。

问题是 DrawString() 生成的文本与现有图像中的文本具有不同的字距(我的最佳猜测是每个字母大约 0.5 - 1 个像素)。

谁能告诉我在使用这个命名空间和方法时是否可以修改字距?

此外,它是我们正在使用的自定义字体,我们必须将其从 open-type(源图像使用的)转换为 true-type。在这个阶段可能已经修改了字距吗?

0 投票
1 回答
467 浏览

iphone - iPad/iphone 字体前导和字距调整

我在互联网上搜索过,但找不到确切的细节。

有没有为 uilabels、textfields 或 textviews 指定领先和热衷?

我可以为每个领先和热衷的配对创建自定义字体,但这似乎有点矫枉过正。

0 投票
0 回答
178 浏览

text - Firefox 等应用程序如何有效计算文本高度?

我很好奇快速应用程序(也许 Safari 在这里是一个更好的例子)使用什么技术来计算非常长的文本页面(例如,聊天日志或巨大的文档)的高度。

考虑到具有相同行高的大量文本,这已经是可以乘以这些行数的东西了。<p>但是,如何知道在特定宽度上将跨越多少行?

我能带来的是他们:

  • 计算每个字符的宽度并将其存储以便快速添加,
  • 用它来计算单词的宽度,
  • 在与块级宽度比较的同时添加单词和空格的宽度,根据需要添加行。

这看起来确实非常快,因为添加和比较比在 GDI+ 中测量字符串要快得多。但是我不知道这样的事情是否已经完成,因为可靠性是第一位的,而且 AFAIK 文本渲染通常会引入字距调整,而且我不知道从 GDI+ 获取这些信息有多容易或多难。

此外,ReactOS 的截图让我相信 Firefox 会计算每个字母的大小和位置。