问题标签 [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 投票
1 回答
4113 浏览

java - 在 Android 设备上运行时,FontMetrics 不正确。模拟器不错

我有一个 Android 应用程序,它可以根据 android 设备的分辨率动态缩放文本。我已经在 Android 模拟器中的所有预定义分辨率上测试了这段代码,并且我的代码运行良好。(这包括与 HTC Desire 和 Motorola Droid 相同的分辨率)

它在我的 HTC Wildfire 上也能正常工作。

以下是模拟器的一些屏幕截图:

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

但是......我已经在 HTC Desire 上尝试过这个,并且我收到了来自使用 Motorola Droid 的用户的报告,即字体没有正确缩放:

在此处输入图像描述

请注意它是如何切断文本的。

任何想法为什么这不适用于这些特定设备?

我目前有一个功能,可以根据文本的可用高度缩小文本......像这样:

任何想法为什么只在几个设备上发生这种情况?以及我该如何解决?是否还有其他我不知道的字体指标需要在这里考虑?像比例或 DPI?

谢谢。

0 投票
0 回答
202 浏览

java - FontMetrics 的滞后问题

从关于 FontMetrics 的 Oracle 文档页面:

“请注意,这些方法的实现效率低下,因此它们通常被更有效的工具包特定实现覆盖。”

任何人都可以提出任何建议吗?我问的原因是我实现了fontMetrics来测量一个字符串的宽度,计算它大约需要半秒钟。由于每次绘制窗口时我都需要多次执行此操作,有没有一种方法可以获得字符串的宽度而不会出现疯狂的延迟?

如果我实际上做错了什么,这里是导致滞后的代码:

谢谢 :)

0 投票
2 回答
8713 浏览

java - 在 Java 中更改字体和绘制字符串的正确语法是什么?

有人可以在这里检查我的语法吗?我将“Times New Roman”、“Arial”、“Verdana”传递给fontName并使用 8、12、15 等fontSize。它永远不会改变这里的字体。我这样做是为了在图像上写一些文字。

0 投票
4 回答
14196 浏览

java - Java:获取具有特定高度(以像素为单位)的字体

使用 确定字体的渲染高度很容易FontMetrics,但反过来呢?如何获得适合特定像素高度的字体?

“给我Verdana一个从上升到下降 30 像素高的尺寸。”

我如何向 Java 询问这个?

0 投票
2 回答
4217 浏览

.net - 获取单个字形指标 (.net)

如何从所选字体中获取有关单个字形的完整信息(例如 Arial -> 符号“A”)

这张图片描述了我需要找到哪些变量:

字形指标

0 投票
3 回答
948 浏览

java - 哪个 API 在 Java 中返回正确的字体宽度?

Java的哪个字体API返回正确的宽度?我们目前使用

这会在图像和显示上返回正确的值。但是使用 Java SE 6 打印是错误的。使用 Java 7 一切都是正确的。差异非常小。但是我们在一行的末尾丢失了一个“i”。我们在打印时收到完全相同的值。但是文本需要更多的空间在打印图形上。

我们使用反别名和分数指标。

我知道有不同的 API。但是推荐的 API 是什么?

0 投票
3 回答
8095 浏览

java - Java:FontMetrics 上升不正确?

当我查看 javadoc 时,FontMetric.getAscent()我看到:

字体上升是从字体基线到大多数字母数字字符顶部的距离。字体中的某些字符可能会超出字体上升线。

但我写了一个快速演示程序,我看到了这个: 在此处输入图像描述

其中每行文本的 4 条水平线是:

  • 基线位置降低getDescent()
  • 基线位置
  • 基线位置由getAscent()
  • 基线位置由getHeight()

注意 getAscent() 行和字符顶部之间的空间。我查看了大多数字体和大小,总是存在这种差距。(而字体下降看起来恰到好处。)什么给出了?

0 投票
4 回答
2183 浏览

java - Java:如何找出字体的大写高度和 x 高度?

FontMetrics没有字体的大写高度x 高度的吸气剂。

我怎样才能获得这些值?

就大写高度而言,不能保证特定大写字母的上升与大写高度相同。(例如,大写的 H 不能保证在顶部是平的)

就 x 高度而言,我认为它可能与“x”的高度相同,但同样不能保证。


编辑:Grr!我只是尝试FontMetrics.getBounds()FontMetrics.getLineMetrics()特定的字符序列,对于高度我总是得到相同的答案(很明显,getBounds() 的宽度确实不同)。该hasUniformLineMetrics()方法中有一条关于具有多种字体来覆盖字符集的字体度量的注释,但它涵盖了字符组,而不是单个字符。

0 投票
0 回答
148 浏览

java - 使用未安装的字体调用 LineBreakMeasurer

我认为这里的答案是否定的(即如果 fontmetrics 不存在,那么你怎么能)。但我认为最好问问。

我需要找出经常在 Linux 机器上运行的 Java 程序中的软换行符。为我们要中断的文本指定的字体来自 Word 文件,因此它使用在 Windows 系统(如 Times New Roman)上找到的字体。

大多数 Linux 系统都没有安装 Times New Roman。有没有办法在未安装指定字体的情况下获得准确的中断?

第二个问题 - 我们发现将 Windows 字体复制到 Linux 机器会给我们带来与在 Windows 系统上不同的休息时间。fontmetrics 是否必须针对 O/S 和/或 Java 实现进行调整?

谢谢 - 戴夫

0 投票
2 回答
1054 浏览

shell - imagemagick 字体度量——如何在网格中放置文本?

让我们看一下下面的图片:

在此处输入图像描述

我有一个水平网格,我想在这个网格中放置一个文本。上面的例子是错误的,因为我想要的是每个字符都被准确地放置在网格的一个单元格中。

我想知道,我是否可以调整 imagemagick 中的文本输出来实现这一点,不必使用它自己的命令放置每个字符。

一些额外的事实:

  • 我正在使用一些 shell 脚本中的 imagemagick
  • 我正在用 imagemagick 的 MVG 做相当复杂的绘图——所以如果文本仍然可以用 MVG 命令放置会很好
  • 如果您的解决方案需要,我可以将网格的宽度调整几个像素,但所有单元格当然需要具有相同的宽度
  • 我总是为此使用相同的固定宽度字体(Courier)
  • 我能够解析我的 shell 脚本中的字体指标并使用此信息将值应用于我的文本命令
  • 我只关心水平放置,垂直放置并不重要,因为我渲染每一行

考虑到这一切——我的问题有什么解决方案吗?

非常感谢!