字体基线-字体属性信息

更新于 2024年2月25日 精品教程

字体属性

字体的度量,是指对于指定字号的某种字体,在度量方面的各种属性,其描述参数包括:
baseline:字符基线。
ascent:字符最高点到baseline的推荐距离。
top:字符最高点到baseline的最大距离。
descent:字符最低点到baseline的推荐距离。
bottom:字符最低点到baseline的最大距离。
leading:行间距,即前一行的descent与下一行的ascent之间的距离。
参照下面的图来理解特殊的参数:

GD库的应用

在php中有一个imagettftext函数,其中的y参数指的就是baseline(很容易用错,我一直以为是字符最底端)

imagettftext(
GdImage $image,
float $size,
float $angle,
int $x,
int $y,
int $color,
string $font_filename,
string $text,
array $options = []
): array|false
?>

size

字体的尺寸,单位:点(磅)。

angle

测量字符串的角度(以度为单位)。

fontfile

想要使用的 TrueType 字体的路径。

根据 PHP 所使用的 GD 库版本,当 fontfile 没有以 / 开头时则 .ttf 将追加到文件名之后,并且会在库定义字体路径中尝试搜索该文件名。

当使用的 GD 库版本低于 2.0.18 时,space 字符而不是分号将被用来作为不同字体文件的“路径分隔符”。不小心使用了此特性将会导致一条警告信息:Warning: Could not find/open font。对受影响的版本来说唯一解决方案就是将字体移动到不包含空格的路径。

很多情况下字体与使用字体的脚本在同一个目录中,下面的小技巧可以缓解 include 的问题。

<?php
// Set the environment variable for GD
putenv('GDFONTPATH=' . realpath('.'));

// Name the font to be used (note the lack of the .ttf extension)
$font = 'SomeFont';
?>

注意:

注意 open_basedir  适用于 fontfile

string

要测量的字符串。

PHP如何获取字体基线

官网的文档没有详细说明,给的返回值是

imagettfbbox() 成功时返回包含 8 个元素的数组,代表构成文本边界框的四个点。失败时返回 false。

内容
0左下角,X 位置
1左下角,Y 位置
2右下角,X 位置
3右下角,Y 位置
4右上角,X 位置
5右上角,Y 位置
6左上角,X 位置
7左上角,Y 位置

包括下面的评论,使用方法都是错的。 可以这样使用


$ascent = abs($rect[7]);
$descent = abs($rect[1]);
$textWidth = abs($rect[0])+abs($rect[2]);
$textHeight = $ascent + $descent;

你可能还喜欢下面这些文章

wordpress怎么改中文字体wordpress怎么改中文字体

让wordpress国外主题字体变为微软雅黑其实只需要加一句自定义CSS就可以了,如果你的主题选项里有个自定义CSS输入的地方,把这段代码拷贝进去即可:如果你的主题不支持自定义CSS输入,那就把上面这句添加到你的style.css第一行。

WordPress 文章自动配图、缩略图插件 WPAC 介绍与下载WordPress 文章自动配图、缩略图插件 WPAC 介绍与下载

2、自动生成的图片并非真实在磁盘中的图片,而是动态生成的,如果保存到磁盘会占用大量空间,这个空间没必要浪费,因此修改主题代码,直接将缩略图的地址改为wpac自动生成的缩略图地址是一个非常好的方案。

Magic Quotes是什么Magic Quotes是什么

Quotes功能有三个选项,其中magic_quotes_gpc作用于HTTP请求所发送的数据(GET、POST、COOKIE),这个选项在PHP中的默认值是开启的(on)。当magic_quotes_gpc开启时,PHP引擎会自动转义Get

如何在wordpress中对the_content()和the_excerpt()设置字符限制如何在wordpress中对the_content()和the_excerpt()设置字符限制

例子:-用于使用函数(用于显示页面的主要内容)用于使用函数(用于显示页面的摘录短内容)用下面的代码替换php。只是为了帮助,如果有人想限制帖子长度..然后可以使用下面的代码来做到这一点..下面的代码只是对先生的修改我知道这篇文章有点旧,但我想