Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP(服务器时间)测量一段文本在web浏览器屏幕中的体积?_Php_Math_Fonts - Fatal编程技术网

如何使用PHP(服务器时间)测量一段文本在web浏览器屏幕中的体积?

如何使用PHP(服务器时间)测量一段文本在web浏览器屏幕中的体积?,php,math,fonts,Php,Math,Fonts,我需要在数据库中存储文本片段和将在浏览器屏幕中包装文本的层的大小(我无法在客户端构建层-这是项目的要求)。整段文字必须正确地放入方形层中。用户将能够从一小组选项中使用不同的字体大小和字体系列,我们将在计算时知道选择 现在,我根据每个字符大小是其字体大小像素高度和字体大小宽度的50%的理论来计算层体积。使用50%的值,我得到了平均情况下的最佳近似值,但它仍然不是一个好的解决方案,因为它会剪切文本片段或在末尾留下太多空白。更糟糕的是,有些字体更宽 有没有办法解决这个问题?考虑到用户在浏览器中覆盖字体

我需要在数据库中存储文本片段和将在浏览器屏幕中包装文本的层的大小(我无法在客户端构建层-这是项目的要求)。整段文字必须正确地放入方形层中。用户将能够从一小组选项中使用不同的字体大小和字体系列,我们将在计算时知道选择

现在,我根据每个字符大小是其字体大小像素高度和字体大小宽度的50%的理论来计算层体积。使用50%的值,我得到了平均情况下的最佳近似值,但它仍然不是一个好的解决方案,因为它会剪切文本片段或在末尾留下太多空白。更糟糕的是,有些字体更宽


有没有办法解决这个问题?

考虑到用户在浏览器中覆盖字体选择是多么容易,这充其量只是一个“最佳猜测”尝试,但您可以使用GD绘制文本,然后使用GD计算文本的边界框


但是它只支持简单的文本,所以如果你用粗体/斜体、可变大小等等来做“复杂”的事情。。那么你在很大程度上就是SOL了。

鉴于这些要求,做到这一点的唯一方法是100%保证:

在服务器上渲染图像——可以是普通图像、SVG等矢量格式,甚至(更极端)要闪存--请以某种形式在客户端上使用生成的输出,以保证精确的渲染,因为任何CSS渲染/本地字体问题都可能与服务器生成的值不同,因此不可靠

因此,框的确切尺寸与本地字体呈现问题无关,因为它们仅取决于服务器的“视图”

愉快的编码。

很抱歉,我之前没有回答(我有交货日期)。谢谢!这是非常有用的。这是最终解决方案的一个重要部分。我们实际上有非常“复杂”的文本,所以这种方法对我们来说并不是特别有用。不过还是要谢谢你。你的是一个伟大的方法为正常的文本。