广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP获取ttf格式文件字体名的方法
  • 260
分享到

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

2023-06-14 08:06:20 260人浏览 八月长安
摘要

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

这篇文章将为大家详细讲解有关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格式文件字体名的方法”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: PHP获取ttf格式文件字体名的方法

本文链接: https://www.lsjlt.com/news/269262.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • PHP获取ttf格式文件字体名的方法
    这篇文章将为大家详细讲解有关PHP获取ttf格式文件字体名的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 TTF(TrueTypeFont)是Apple公司和Microsoft公司共同推出的字体文件...
    99+
    2023-06-14
  • Java8通过Function获取字段名的方法(获取实体类的字段名称)
    看似很鸡肋其实在某些特殊场景还是比较有用的。 比如你将实体类转Map或者拿到一个Map结果的时候,你是怎么获取某个map的key和value。 方法一: 声明 String key1...
    99+
    2022-11-12
  • php获取文件后缀名的几种方法
    获取文件后缀的方法有很多种, 差不多能总结出7,8种,原理基本上都分成两种。 第一种: 得到文件名中最后一个“.”的位置,然后再进行截取; 第二种: 用explode将文件名以“.”进行分割成数组,再取数组中最后一个值。 具体实现源码参考:...
    99+
    2023-09-20
    php 服务器 开发语言
  • php获取文件扩展名的三种方法
    在php开发过程中,获取文件扩展名是非常常见的需求。比如我们在上传文件的时候,首先需要判断文件类型是否为我们允许上传的类型。这个时候就需要使用php来获取文件的后缀或者说扩展名。 本文中,我们介绍三种php获取文件扩展名的方法 方法一:使用...
    99+
    2023-09-28
    php 开发语言
  • php获取文件扩展名的方法有哪些
    本篇内容介绍了“php获取文件扩展名的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!方法:1、利用explode和array_po...
    99+
    2023-06-20
  • php获取文件后缀名的方法有哪些
    这篇文章主要介绍“php获取文件后缀名的方法有哪些”,在日常操作中,相信很多人在php获取文件后缀名的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php获取文件后缀名的方法有哪些”的疑惑有所帮助!...
    99+
    2023-06-20
  • Linux Shell获取文件夹下的文件名方法
    有时候需要获取某个文件夹下的所有文件名,可以用程序实现,但是打开IDE,编译klwYDx运行太麻烦,在linux服务器中通常不能打开IDE,此时可以用几行简单的shell命令来实现,结果保存到某个文件中即可。 Shell...
    99+
    2022-06-04
    Linux Shell 文件名
  • php获取文件扩展名的3种方法实例
    目录前言PHP pathinfo()获取文件扩展名PHP SplFileInfo获取文件后缀PHP substr()和strrchr()函数获取文件扩展名总结前言 在php...
    99+
    2023-01-15
    PHP获取文件扩展名的代码 php获取文件扩展名实验总结 php 获取文件扩展名
  • PHP字符串中提取文件名的实例方法
    第一种: 获取不带后缀的文件名,直接上代码: 就是直接用basename()函数就可以返回路径中的文件名部分,其语法是“basename(path,suffix)”,其中参数suff...
    99+
    2022-11-12
  • shellscript获取文件名或者目录名称的方法
    目录引言basenamedirnameshell script了解更多引言 个别时候需要将当前文件(文件自己)拷贝到一个固定的目录(项目组都熟悉的目录)下面,可以使用 shell 脚...
    99+
    2022-11-13
  • Python获取文件所在目录和文件名的方法
    实例如下: import os if __name__ == "__main__": file_path = 'D:/test/test.apk' parent_path = os.p...
    99+
    2022-06-04
    文件名 文件 目录
  • php获取文件后缀扩展名三种方法分享
    本文中,我们介绍三种php获取文件扩展名的方法 方法一:使用PHP pathinfo()获取文件扩展名 方法二:使用PHP SplFileInfo类获取文件后缀 方法三:使用PHP substr()和strrchr()函数获取文件...
    99+
    2023-10-08
    php 开发语言
  • shell script获取文件名或者目录名称的方法
    目录引言basenamedirnameshell script了解更多引言 个别时候需要将当前文件(文件自己)拷贝到一个固定的目录(项目组都熟悉的目录)下面,可以使用 shell 脚本来实现此功能,比较简单。 可以首先通...
    99+
    2022-06-09
    shellscript获取文件名 shellscript获取目录名称
  • C#获取文件名和文件路径的两种实现方式
    目录C#获取文件名和文件路径方法一方法二C#通过文件路径获取文件名小技巧C#获取文件名和文件路径 方法一 OpenFileDialog open = new OpenFileDia...
    99+
    2022-11-13
  • python脚本爬取字体文件的实现方法
    前言 大家应该都有所体会,为了提高验证码的识别准确率,我们当然要首先得到足够多的测试数据。验证码下载下来容易,但是需要人脑手工识别着实让人受不了,于是我就想了个折衷的办法——自己造验证码。 为了保证多样性,...
    99+
    2022-06-04
    脚本 字体 文件
  • 使用Bash Shell获取文件名和目录名的简单方法
    前言 还是今天再写一个自动化打包脚本,用到了从路径名中获取最后的文件名。这里记录一下实现过程。当然,最后我也会给出官方的做法。(ps:很澹迪滞炅瞬欧⑾衷ash Shell有现成的函数) 获取文件名 假设给定...
    99+
    2022-06-04
    文件名 简单 目录
  • PHP获取文件属性的最简单方法
    1、filesize($filename) 返回指定文件大小。 如果成功,会返回文件大小的字节数;如果失败,则返回 FALSE。 <?php header("con...
    99+
    2022-11-12
  • linux 获取文件名称并生成列表txt的方法
    如下所示: > 自己写的create_filelist.sh文件,如下 train_file=test.txt path=train/test find $path -name *.jpg > $trai...
    99+
    2022-06-04
    linux 文件名称 列表txt
  • JS怎么通过截取子串的方法获取文件扩展名
    本篇内容介绍了“JS怎么通过截取子串的方法获取文件扩展名”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!本文...
    99+
    2022-10-19
  • Python中获取指定目录下所有文件名的方法
    在《Python中文件名和路径的操作》中提到,os模块中的函数可以对文件进行操作。通过递归以及os模块中提供的函数,可以获取指定目录下所有的文件名。 1 基本流程 通过递归获取指定目录下所有文件名的基本流程,如图1所示。 图1 基本流程 ...
    99+
    2023-09-01
    python 显示所有文件名 递归 os 处理文件
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作