![在“独立”环境中推断字符/文本/方程的基线高度和边界框宽度](https://linux22.com/image/451332/%E5%9C%A8%E2%80%9C%E7%8B%AC%E7%AB%8B%E2%80%9D%E7%8E%AF%E5%A2%83%E4%B8%AD%E6%8E%A8%E6%96%AD%E5%AD%97%E7%AC%A6%2F%E6%96%87%E6%9C%AC%2F%E6%96%B9%E7%A8%8B%E7%9A%84%E5%9F%BA%E7%BA%BF%E9%AB%98%E5%BA%A6%E5%92%8C%E8%BE%B9%E7%95%8C%E6%A1%86%E5%AE%BD%E5%BA%A6.png)
我正在使用 C++ 和 OpenGL 编写一个数学可视化工具,并希望整合 LaTeX 文本和方程式。我最初正在寻找一个 C++ 库来直接将 LaTeX 文本/方程式渲染为位图,然后将其渲染为屏幕上的纹理。但我认为从 C++ 编译所需的 LaTeX 代码、使用 dvipng 转换为 .png 图像,然后将 .png 文件读取为纹理(然后可以由 OpenGL 使用)会更简单。我目前正在尝试解决的一个障碍是如何推断每行文本/数学的基线以及每个字符的框的尺寸(为简单起见,我们假设我只想渲染单行)。为了以防我错误地使用了术语“基线”,我在下图中用红色标出了“基线”的含义。每行都是使用“独立”类编译为单独文档的单行,例如:
\documentclass[preview]{standalone}
\begin{document}
bake
\end{document}
对于“bake”,基线与文档底部重合。对于“page”,基线相对于文档底部的高度约为文档高度的 30%。等式也是如此。对于我的用例,我理想情况下希望将每个字符串拆分为边界框中的单个字符,以便我可以对每个字符的布局和动画进行细粒度控制。但为了做到这一点,我需要将每个单词/字符相对于其他单词/字符垂直对齐,还需要知道每个单词/字符的边界框的宽度,以便进行适当的水平对齐。有人可以告诉我如何推断任意字符串的基线相对高度以及与每个字符关联的边界框的尺寸吗?