我的编程空间,编程开发者的网络收藏夹
学习永远不晚

PHP获取ttf格式文件字体名的方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

PHP获取ttf格式文件字体名的方法

这篇文章将为大家详细讲解有关PHP获取ttf格式文件字体名的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

TTF(TrueTypeFont)是Apple公司和Microsoft公司共同推出的字体文件格式,随着windows的流行,已经变成最常用的一种字体文件格式,在日常使用过程中的使用也在所难免。

<?php$names = GetFontName('c:/windows/fonts/FZHPJW.TTF');foreach ($names as $name) {  if ($name['language'] == 1033)    $code = 'utf-16le';  elseif ($name['language'] == 2052) $code = 'utf-16be';  var_dump(mb_convert_encoding($name['name'],'utf-8',$code));}function GetFontName($FilePath) {  $fp = fopen($FilePath, 'r');  if ($fp) {    //TT_OFFSET_TABLE    $meta = unpack('n6', fread($fp, 12));    //检查是否是一个true type字体文件以及版本号是否为1.0    if ($meta[1] != 1 || $meta[2] != 0)      return FALSE;    $Found = FALSE;    for ($i = 0; $i < $meta[3]; $i++) {      //TT_TABLE_DIRECTORY      $tablemeta = unpack('N4', $data = fread($fp, 16));      if (substr($data, 0, 4) == 'name') {        $Found = TRUE;        break;      }    }    if ($Found) {      fseek($fp, $tablemeta[3]);      //TT_NAME_TABLE_HEADER      $tablecount = unpack('n3', fread($fp, 6));      $Found = FALSE;      for ($i = 0; $i < $tablecount[2]; $i++) {        //TT_NAME_RECORD        $table = unpack('n6', fread($fp, 12));        if ($table[4] == 1) {          $npos = ftell($fp);          fseek($fp, $n = $tablemeta[3] + $tablecount[3] + $table[6], SEEK_SET);          $fontname = trim($x = fread($fp, $table[5]));          if (strlen($fontname) > 0) {            $names[] = array (                'platform' => $table[1], //平台(操作系统)    'language' => $table[3], //字体名称的语言    'encoding' => $table[2], //字体名称的编码    'name' => $fontname //字体名称            );            //break;          }          fseek($fp, $npos, SEEK_SET);        }      }    }    fclose($fp);  }  return $names;}?>

运行结果:

string(6) "SimHei"string(5) "SimHe" //貌似有UTF-16LE编码漏字的BUGstring(6) "黑体"

注:如果仅需要获取字体名称,可将上述代码进行改进如下:

<?php$names = GetFontName('c:/windows/fonts/FZHPJW.TTF');$newnames = array();foreach ($names as $name) {  if ($name['language'] == 1033)    $code = 'utf-16le';  elseif ($name['language'] == 2052) $code = 'utf-16be';  array_push($newnames,@mb_convert_encoding($name['name'], 'utf-8', $code));}$font_name=array_pop($newnames);echo $font_name;function GetFontName($FilePath) {  $fp = fopen($FilePath, 'r');  if ($fp) {    //TT_OFFSET_TABLE    $meta = unpack('n6', fread($fp, 12));    //检查是否是一个true type字体文件以及版本号是否为1.0    if ($meta[1] != 1 || $meta[2] != 0)      return FALSE;    $Found = FALSE;    for ($i = 0; $i < $meta[3]; $i++) {      //TT_TABLE_DIRECTORY      $tablemeta = unpack('N4', $data = fread($fp, 16));      if (substr($data, 0, 4) == 'name') {        $Found = TRUE;        break;      }    }    if ($Found) {      fseek($fp, $tablemeta[3]);      //TT_NAME_TABLE_HEADER      $tablecount = unpack('n3', fread($fp, 6));      $Found = FALSE;      for ($i = 0; $i < $tablecount[2]; $i++) {        //TT_NAME_RECORD        $table = unpack('n6', fread($fp, 12));        if ($table[4] == 1) {          $npos = ftell($fp);          fseek($fp, $n = $tablemeta[3] + $tablecount[3] + $table[6], SEEK_SET);          $fontname = trim($x = fread($fp, $table[5]));          if (strlen($fontname) > 0) {            $names[] = array (                'platform' => $table[1], //平台(操作系统)    'language' => $table[3], //字体名称的语言    'encoding' => $table[2], //字体名称的编码    'name' => $fontname //字体名称            );            //break;          }          fseek($fp, $npos, SEEK_SET);        }      }    }    fclose($fp);  }  return $names;}?>

关于“PHP获取ttf格式文件字体名的方法”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

PHP获取ttf格式文件字体名的方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PHP获取ttf格式文件字体名的方法

这篇文章将为大家详细讲解有关PHP获取ttf格式文件字体名的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 TTF(TrueTypeFont)是Apple公司和Microsoft公司共同推出的字体文件
2023-06-14

php获取文件后缀名的方法有哪些

这篇文章主要介绍“php获取文件后缀名的方法有哪些”,在日常操作中,相信很多人在php获取文件后缀名的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php获取文件后缀名的方法有哪些”的疑惑有所帮助!
2023-06-20

php获取文件扩展名的方法有哪些

本篇内容介绍了“php获取文件扩展名的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!方法:1、利用explode和array_po
2023-06-20

php获取文件扩展名的3种方法实例

PHP获取文件后缀名是PHP学习者常见的一种操作,无论是在面试过程中还是PHP新手自学中,下面这篇文章主要给大家介绍了关于php获取文件扩展名的3种方法,需要的朋友可以参考下
2023-01-15

Linux Shell获取文件夹下的文件名方法

有时候需要获取某个文件夹下的所有文件名,可以用程序实现,但是打开IDE,编译klwYDx运行太麻烦,在linux服务器中通常不能打开IDE,此时可以用几行简单的shell命令来实现,结果保存到某个文
2022-06-04

Python获取文件所在目录和文件名的方法

实例如下:import os if __name__ == "__main__": file_path = 'D:/test/test.apk' parent_path = os.path.dirname(file_path) print(
2022-06-04

php获取文件列表的方法有哪些

使用PHP的glob()函数可以获取满足指定模式的文件列表,例如:$files = glob('path/to/directory/*');foreach ($files as $file) {echo $file .
php获取文件列表的方法有哪些
2024-03-02

python脚本爬取字体文件的实现方法

前言 大家应该都有所体会,为了提高验证码的识别准确率,我们当然要首先得到足够多的测试数据。验证码下载下来容易,但是需要人脑手工识别着实让人受不了,于是我就想了个折衷的办法——自己造验证码。 为了保证多样性,首先当然需要不同的字模了,直接用类
2022-06-04

shell script获取文件名或者目录名称的方法

目录引言basenamedirnameshell script了解更多引言 个别时候需要将当前文件(文件自己)拷贝到一个固定的目录(项目组都熟悉的目录)下面,可以使用 shell 脚本来实现此功能,比较简单。 可以首先通过两个小的例子来了解
2022-06-09

使用Bash Shell获取文件名和目录名的简单方法

前言 还是今天再写一个自动化打包脚本,用到了从路径名中获取最后的文件名。这里记录一下实现过程。当然,最后我也会给出官方的做法。(ps:很?澹?迪滞炅瞬欧⑾衷??ash Shell有现成的函数) 获取文件名 假设给定的路径名为:/tmp/cs
2022-06-04

PHP多文件上传实现格式化的方法

这篇文章主要介绍PHP多文件上传实现格式化的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php有什么特点1、执行速度快。2、具有很好的开放性和可扩展性。3、PHP支持多种主流与非主流的数据库。4、面向对象编程:
2023-06-15

linux 获取文件名称并生成列表txt的方法

如下所示:> 自己写的create_filelist.sh文件,如下 train_file=test.txt path=train/test find $path -name *.jpg > $train_fil
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录