问题标签 [fontmetrics]

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 回答
3807 浏览

java - FontMetrics.stringWidth() 和 FontMetrics.getStringBounds() 有什么区别?

我需要找到在屏幕上绘制的文本的宽度。该线程表明 FontMetrics.stringWidth() 有时不如 FontMetrics.getStringBounds() 准确。

有谁知道这是否正确,如果正确,这种差异在哪种情况下可见?FontMetrics.stringWidth() 似乎使用得更频繁,包括在 SwingUtilities.computeStringWidth() 中。此外,明显的优点是它不需要 Graphics 对象,但这本身与在 Graphics 对象中定义抗锯齿和类似设置的事实相结合,可以解释为什么 FontMetrics.getStringBounds() 可能更准确。

0 投票
3 回答
6805 浏览

java - Java获取给定高度的字体大小

有没有一种(简洁的)方法,而不是获取特定字体大小的高度,而是获取产​​生给定高度的特定字体(在这种情况下为 SansSerif)的字体大小?

我当然可以循环使用字体大小或使用某种形式的二进制印章,但如果可能的话,我想使用一些更干净、资源更少的东西。我发现最好的方法是使用这样的东西

0 投票
2 回答
1827 浏览

c++ - 没有 CDC 的 MFC 字符串宽度

有没有办法在不使用 CDC 或使用未与显示器链接的 CDC 的情况下获取以像素为单位的字符串的宽度。需要检索字符串宽度的类不会从 CWnd 继承以使用 CWnd::GetDC() 并且无法将现有 CDC 传递给函数。

我试图创建一个不与显示器链接的虚拟 CDC,但这会导致 MFC 崩溃。理想情况下是这样的:

编辑:应该用字体名称变量替换字符串文字。

0 投票
0 回答
473 浏览

fonts - 获取在 Java Graphics 2 中使用任意 .ttf 字体呈现的字符串的总宽度

目前我们尝试获取使用任意字体呈现的字符串的宽度。

问题出在这条线...

对于大多数字体,这有效,但对于一些更高级的脚本字体,它似乎比我们预期的要宽。根据 FontMetrics.stringWidth 的 javadoc,您甚至可以阅读...

返回在此字体中显示指定字符串的总前进宽度。前进是字符串基线上从最左边点到最右边点的距离。请注意,字符串的前进不一定是其字符前进的总和

0 投票
2 回答
1559 浏览

java - JLabel 宽度在构造函数中总是返回 0。那么如果宽度超过X值,插入换行符?

我创建了一个扩展 JLabel 类的类。这个类本质上使我将相关的 IconImage 附加到我的 JLabel 并正确调整它的大小变得“更好”。

当我通过代码创建一个新的 JLabel 时,我现在通过代码来完成它。something = new MyClass("message", 1); 对于上面的代码,我已经准备好MyClass(String msg, int type) {}构造函数。在这个构造函数中,我希望能够获得用户指定的文本的宽度。如果该宽度超过某个值,300px那么我想插入一个换行符(基本上根据最大宽度使 JLabel 自动换行)。

我已经删除了下面代码中将图像添加到 JLabel 的部分,因为这与问题无关——我创建了一个单独的类来处理这个问题,它已经可以工作了。

当我运行此代码时,它会返回“WIDTH:java.awt.Dimension[width=0,height=0]”,就像我在评论中放置的那样。

有什么方法可以在构造函数中获取 JLabel 的宽度?JLabel 还有什么方法可以让我自动换行吗?

0 投票
1 回答
1195 浏览

actionscript-3 - 是否有可能在 AS3 中获得准确的字符/字体度量?

我创建了一个类,它将使用嵌入式字体在运行时动态生成位图字体。到目前为止,它运行良好,除了我对字符间距有一个小问题。

在下图中,第一行是实际TextField的,第二行是使用生成的位图字体渲染的。

字符间距问题示例

如果您查看单词“fox”或单词“jumped”的“ed”,您会发现字母间距看起来有点奇怪。

是否有任何替代TextLineMetrics课程可以为我提供更准确的性格指标?

更新 :

使用新的 Flash 文本引擎的文本渲染质量:

使用新的 Flash 文本引擎的文本渲染质量

更新 2:

偶然我最终找到了解决方案:

第一个问题是antiAliasType设置为 的属性AntiAliasType.ADVANCED
尽管它会产生更高质量的文本,但它也会导致TextLineMetrics返回不正确的字符宽度。

第二个是它还必须向上取整(使用Math.ceil)到最近的像素,而不是向下取整。

0 投票
1 回答
158 浏览

java - 找到真正字体边界的最佳方法

我正在寻找一种方法来查找渲染文本的边界并遇到了 FontMetrics getStringBounds 方法。这似乎忽略了某些字体的下降并且具有夸张的上升,因此它返回一个不允许我正确垂直对齐的边界。我挖得更深一点,发现 GlyphVector.getPixelBounds() 似乎可以做我想做的事,但我不知道使用它是否会出现一些问题。

我写了一个小程序 http://breadmilkbeer香烟.com/bmbc/shelves/users/bbb/src/java/applet / glyphvector.html显示两者之间的差异,而且对于我的系统字体来说,它似乎返回了正确的边界。有谁知道这是否是一种昂贵的方法,或者使用它是否还有其他可能的陷阱?FontMetrics 似乎从来没有对我正常工作。或者也许我对它的期望是错位的。

谢谢,BBB

0 投票
1 回答
1658 浏览

imagemagick - Ruby & RMagick:确定文本的实际宽度和高度

我正在使用 RMagick,我想使用用户设置的背景颜色垂直或水平绘制文本(取决于用户输入)。我遇到了奇怪的问题: get_type_metrics(text) 返回无效数据。实际宽度/高度小于方法返回的值。

我一直在尝试使用上升/下降值,但没有运气。有没有办法确定文本字符串的实际宽度/高度?我已经看到几个解决方案在空图像上绘制文本然后确定宽度高度然后逐个像素地查看整个图像,但恕我直言,这很愚蠢而且真的很消耗资源。另外,我发现 PHP GD 也有同样的问题,但没有解决方案。

PS 我不能使用 Draw#annotate 因为用户应该能够改变背景框的大小。

0 投票
1 回答
627 浏览

cocoa - 在 OSX 中按指定特征查找字体

CreateFont(..)在 OSX 中是否可以替代 Windows 的功能?

我试过使用NSFontDescriptor和它的matchingFontDescriptorsWithMandatoryKeys:方法,但是这个方法没有找到“最接近”的字体,它找到了匹配的特征并且它也可以返回nil.

有没有办法通过OSX 中的指定特征(如CreateFont )找到最接近的字体?

更新

NSFontDescriptor 发生了一些奇怪的事情。

我有两段代码:

关于可可:

并使用 CoreText API:

我在这两种情况下都创建了相同的字体描述符,但在第一种情况下matchedDescriptorsnil使用 CoreText API 有一些字体在matchedDescriptors. 它是一个错误吗?

但总的来说,如果我作为强制属性传递nilXXXMatchingFontDescriptorsXXX它是否应该返回至少一个描述符?

0 投票
1 回答
80 浏览

resize - 有没有办法调整 MdiTab 的大小以适应您新更新的文本?(基础设施)

我正在重置 UltraWinTabbedMdi 中 MdiTab 的文本。我将它重置为粗体和更长,但选项卡不会调整大小,因此文本被截断。现在,我只是将选项卡的大小重置为我发现在我的计算机上看起来不错的某个幻数,但我不知道它是否可以在其他地方工作。我希望能够获得新文本的尺寸并每次添加相同的大小或调用一些自动调整大小的方法。

有没有办法做到这一点?