问题 在JavaScript中获取计算字体系列


这是一个后续行动 这个问题

我正在研究一个组件 CKEditor的,字体下拉菜单的调整版本,始终显示当前所选字体系列/大小值,无论它们在何处定义,使用 computedStyle 和配偶。

正如您在其他问题中所看到的,确定字体大小现在可以跨浏览器工作。现在我无法使用 fontFamily 属性。我的通用“计算样式”函数仅返回已定义的完整字体字符串,例如

Times New Roman, Georgia, Serif

我需要的是,为了使设置与字体系列下拉列表中的条目相匹配,我需要的是 固定字体名称 的 实际的字体 我正在检查的DOM元素。

这可以以某种方式完成,至少对于最常见的Web字体?


3165
2017-12-25 08:54


起源



答案:


我认为没有任何方法可以直接进行,但Lalit Patel提出了一种巧妙的技术,可以创建一个带有一些字母的元素,并从元素的宽度猜测字体。

看到 http://www.lalit.org/lab/javascript-css-font-detect


9
2017-12-25 17:12



是的,我也想到了这一点,这是一个非常聪明的主意。在我的情况下,它是过度的,因为每次用户在WYSIWYG编辑器中更改光标位置时都必须发生整个过程。 - Pekka 웃
啊,是的。我不熟悉CKEditor,但有没有办法跟踪哪些样式应用于哪些文本?而不是在光标移动时计算它,您可以记录每当用户更改它们时应用于文本的样式吗? - Paul D. Waite
@Pekka然后你需要记住检测结果。而且,也许,还会预先测试一些常见字体。 - kangax


答案:


我认为没有任何方法可以直接进行,但Lalit Patel提出了一种巧妙的技术,可以创建一个带有一些字母的元素,并从元素的宽度猜测字体。

看到 http://www.lalit.org/lab/javascript-css-font-detect


9
2017-12-25 17:12



是的,我也想到了这一点,这是一个非常聪明的主意。在我的情况下,它是过度的,因为每次用户在WYSIWYG编辑器中更改光标位置时都必须发生整个过程。 - Pekka 웃
啊,是的。我不熟悉CKEditor,但有没有办法跟踪哪些样式应用于哪些文本?而不是在光标移动时计算它,您可以记录每当用户更改它们时应用于文本的样式吗? - Paul D. Waite
@Pekka然后你需要记住检测结果。而且,也许,还会预先测试一些常见字体。 - kangax


UA选择它找到的列表中的第一个字体。 OS上安装的字体实际上并不是DOM的一部分,所以你能做的最好的就是猜测。


2
2017-12-25 09:14



你是对的。 Paul D. Waite提出了一个我不会在这种情况下使用的解决方法,但可以对其进行排序。 - Pekka 웃