JavaScript 将文本转换为像素坐标
JavaScript convert text to pixel coordinates
简而言之,给定一个字体(大小、粗细等)和一个字符串,有没有一种方法可以使用 JavaScript 提取相对于第一个字母左上角的像素坐标数组?
例如I
可能会变成
[
[0,0],
[0,1],
...
]
编辑: 我不是在寻找边界框,而是在寻找构成文本的每个像素的坐标。我需要此信息以便稍后使用正方形重新创建文本。
是的,可以使用canvas元素获取text metrics:
// setup canvas
var c = document.createElement("canvas"),
ctx = c.getContext("2d");
// define (pre-loaded) font:
ctx.font = "bold 16px sans-serif";
// get metrics
var m = ctx.measureText("Hello");
指标对象会给你宽度和高度等。但是 - 目前大多数浏览器只支持宽度。存在一个 poly-fill,它将涵盖您需要的上升和下降等内容。
另一种方法是扫描位图以检测文本隐藏的矩形。我在这里给出了涵盖此技术的答案:
Javascript Method to detect area of a PNG that is not transparent
此外,如果您只需要文本的边界框(而不是文本本身的像素精确起点),您可以使用 DOM 元素来获取该框的宽度和高度。这是一种方法:
Use Javascript to get Maximum font size in canvas
澄清后更新:从位图中提取像素并将其转换为点:
简而言之,给定一个字体(大小、粗细等)和一个字符串,有没有一种方法可以使用 JavaScript 提取相对于第一个字母左上角的像素坐标数组?
例如I
可能会变成
[
[0,0],
[0,1],
...
]
编辑: 我不是在寻找边界框,而是在寻找构成文本的每个像素的坐标。我需要此信息以便稍后使用正方形重新创建文本。
是的,可以使用canvas元素获取text metrics:
// setup canvas
var c = document.createElement("canvas"),
ctx = c.getContext("2d");
// define (pre-loaded) font:
ctx.font = "bold 16px sans-serif";
// get metrics
var m = ctx.measureText("Hello");
指标对象会给你宽度和高度等。但是 - 目前大多数浏览器只支持宽度。存在一个 poly-fill,它将涵盖您需要的上升和下降等内容。
另一种方法是扫描位图以检测文本隐藏的矩形。我在这里给出了涵盖此技术的答案:
Javascript Method to detect area of a PNG that is not transparent
此外,如果您只需要文本的边界框(而不是文本本身的像素精确起点),您可以使用 DOM 元素来获取该框的宽度和高度。这是一种方法:
Use Javascript to get Maximum font size in canvas
澄清后更新:从位图中提取像素并将其转换为点: