Javascript - 获取真实的字母宽度和高度(没有行高)

标签 javascript height width

在 Adob​​e Illustrator(或 Photoshop)中

字母A 字体系列:Arial 字体大小:396.55pt 措施: - 宽度:93.8 毫米(266 像素) - 高度:100.2 毫米(284 像素)

用 Javascript 进行测量: - 宽度:265px(匹配,正确) - 高度:456px(不匹配,抓取行高,这是错误的)

如何获得字母的确切高度?

// 6pt ---------------- 8px
// 96px --------------- 25.4mm

var arial_A_upper_pt = jQuery("#arial_A_upper_pt").html();
jQuery("#arial_A_upper").html("A");
jQuery("#arial_A_upper").css("font-size", arial_A_upper_pt + "px");

var arial_A_upper_width_on_px = jQuery("#arial_A_upper").width(); // on PX
//  var arial_A_upper_width_on_mm = ((arial_A_upper_width_on_px * 25.4) / 96);
//  arial_A_upper_width_on_mm = arial_A_upper_width_on_mm.toFixed(2);
jQuery("#arial_A_upper_width").html(arial_A_upper_width_on_px + "px");

var arial_A_upper_height_on_px = jQuery("#arial_A_upper").height(); // on PX
//  var arial_A_upper_height_on_mm = ((arial_A_upper_height_on_px * 25.4) / 96);
//  arial_A_upper_height_on_mm = arial_A_upper_height_on_mm.toFixed(2);
jQuery("#arial_A_upper_height").html(arial_A_upper_height_on_px + "px");

示例:http://jsfiddle.net/7Cunp/6/

我需要这个:http://www.javiscript.es/desarrollo/letrascortadas/img/letter_size.jpg

最佳答案

这是一个不容易回答的问题。我几乎可以保证没有任何属性可以调用来获取该值。

首先,数据嵌入在字体文件中,并且可能无法通过 JS 访问(如果我错了,请纠正我)。其次,几乎每个字体文件的值都不同。

但是,您可以使用一些数学来获得尺寸的近似值。

字母的大小是从上升部顶部到下降部底部测量的。也称为 EM。这既可以水平使用,也可以垂直使用。大写字母的大小有时被概括为 EM 的 2/3。

因此,由于 jQuery 错误地返回了高度,但返回了正确的宽度。(EM 大小,而不是字母的实际宽度,如果你测量的话:D)我会这样做:

var EM_height = jQuery("#arial_A_upper").width()
var uppercase_height = Math.floor(EM_height / 3 * 2)

JS 不是我的强项,所以有人可能会告诉我是否有更好的方法。

如果您知道它只会用于特定字体(例如 Arial),您可以获得更好的值。

例如。 72pt Arial 在我的电脑上大写 A 上的尺寸为 51.37pt。

51,37/72 = 0,713472222 这就是您需要得出的比率。所以 7/10 可能是一个不错的建议。

希望能有点帮助。

关于Javascript - 获取真实的字母宽度和高度(没有行高),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23217307/

相关文章:

HTML 表格列宽 : combining fixed and variable widths

javascript - 在精确的区域 Javascript 中拖动任何一个跨度

javascript - 带有 event.preventDefault 的 HTML

html - CSS:流体包装高度取决于 float 元素

java - 获取状态栏的高度

css - 文本区域高度 Chrome 问题

javascript - 单击除一个元素之外的所有内容时执行事件?

javascript - 如何使用 jQuery 查找已调整大小的元素

css - 图像中心,而不是背景 CSS 或负边距

html - 边距顶部 : 100% gets parent width value. .. 奇怪