mpdf增加字体并进行使用

news/2024/11/20 3:25:13/文章来源:https://www.cnblogs.com/zhaoying/p/18197109

 

1、先将字体复制到目录:\vendor\mpdf\mpdf\ttfonts

2、再修改文件\vendor\mpdf\mpdf\src\Config\FontVariables.php,对照已经添加的simsun,simkai,simhei,fangzhenweibei,fangzhenheiti等字体进行增加即可。

3、再在需要设置字体的文字加上font-family:fangzhenweibei;样式即可。

 

 

附FontVariables.php文件代码:

  1 <?php
  2 
  3 namespace Mpdf\Config;
  4 
  5 class FontVariables
  6 {
  7 
  8     private $defaults;
  9 
 10     public function __construct()
 11     {
 12         $this->defaults = [
 13 
 14             //指定要使用的字体度量:
 15             //-'winTypo使用OS/2表中的sTypoAscender等,通常建议使用-BUT
 16             //-“win”使用OS/2中的WinAscent等,inpractice似乎在Windows环境中更常用
 17             //-'mac'使用hhea表中的Ascender等,并在mac/OSX环境中使用
 18 
 19             'fontDescriptor' => 'win',
 20 
 21             //对于自定义字体数据文件夹,请设置配置项“fontDir”。它也可以是目录阵列,
 22             //然后将返回第一个找到的文件
 23             //可选地设置字体(在“fontdata”中定义的名称)以用于缺少的字符
 24             //使用useSubstitutions时。使用覆盖范围广的字体-dejavusansconsted是一个好的开始
 25             //只能使用子集(否则将添加非常大的文件)
 26             //可以指定多个字体,但每个字体都会增加脚本的处理时间
 27 
 28             'backupSubsFont' => ['dejavusanscondensed', 'freesans', 'sun-exta'],
 29 
 30             //可选地设置用于CJK字符的字体(名称在“fontdata”中定义如下)
 31             //使用useSubstitutions时,在平面2 Unicode(>U+20000)中。
 32             //如果可用,请使用类似hannomb或sun-extb的字体
 33             //只能使用子集(否则将添加非常大的文件)
 34 
 35             'backupSIPFont' => 'sun-extb',
 36 
 37             /*
 38                 此数组定义CSS或HTML字体系列的翻译
 39                 到mPDF中使用的内部字体系列名称。
 40                 无论安装了何种字体,都可以包含任意数量的字体。
 41                 默认情况下,mPDF将采用CSS/HTML字体系列并删除空格
 42                 更改为小写,例如“Times New Roman”将被识别为
 43                 “时间新罗马”
 44                 您只需要定义其他翻译。
 45                 您也可以使用它来定义特定的替换,例如。
 46                 “helvetica”=>“arial”
 47                 设置通用替换(即无衬线或衬线字体)
 48                 通过在下面的“sans_fonts”中包含字体系列
 49              */
 50             'fonttrans' => [
 51                 'times' => 'timesnewroman',
 52                 'courier' => 'couriernew',
 53                 'trebuchet' => 'trebuchetms',
 54                 'comic' => 'comicsansms',
 55                 'franklin' => 'franklingothicbook',
 56                 'ocr-b' => 'ocrb',
 57                 'ocr-b10bt' => 'ocrb',
 58                 'damase' => 'mph2bdamase',
 59             ],
 60 
 61             /*
 62                 此数组列出TrueType.ttf或.otf字体文件的文件名
 63                 (内部mPDF)字体系列名称的每个变体。
 64                 ['R']=常规(普通),其他为粗体、斜体和粗体斜体
 65                 每个条目必须包含一个['R']条目,但其他条目是可选的。
 66                 仅此处输入的字体(文件)可用于mPDF。
 67                 将首选默认值放在首位
 68                 如果在以下任何文件中找不到命名字体,将使用此选项
 69               'sans_fonts', 'serif_fonts' or 'mono_fonts'
 70 
 71               ['sip-ext'] = 'sun-extb', name a related font file containing SIP characters
 72               ['useOTL'] => 0xFF,    Enable use of OTL features.
 73               ['useKashida'] => 75,    Enable use of kashida for text justification in Arabic text
 74 
 75                 如果引用了.ttc TrueType集合文件,则字体编号
 76                 在集合中。集合中的字体已编号
 77                 从1开始,如.ttc文件中所示,例如。
 78               "cambria" => array(
 79                     'R' => "cambria.ttc",
 80                     'B' => "cambriab.ttf",
 81                     'I' => "cambriai.ttf",
 82                     'BI' => "cambriaz.ttf",
 83                     'TTCfontID' => array(
 84                         'R' => 1,
 85                     ),
 86                 ),
 87                 "cambriamath" => array(
 88                     'R' => "cambria.ttc",
 89                     'TTCfontID' => array(
 90                         'R' => 2,
 91                     ),
 92                 ),
 93              */
 94 
 95             'fontdata' => [
 96                 "dejavusanscondensed" => [
 97                     'R' => "DejaVuSansCondensed.ttf",
 98                     'B' => "DejaVuSansCondensed-Bold.ttf",
 99                     'I' => "DejaVuSansCondensed-Oblique.ttf",
100                     'BI' => "DejaVuSansCondensed-BoldOblique.ttf",
101                     'useOTL' => 0xFF,
102                     'useKashida' => 75,
103                 ],
104                 "simsun" => [
105                     'R' => "simsun.ttf",
106 //
107                 ],
108                 "simkai" => [
109                     'R' => "simkai.ttf",
110                 ],
111                 "simhei" => [
112                     'R' => "simhei.ttf",
113                 ],
114                 "fangzhenweibei" => [
115                     'R' => "fangzhenweibei.ttf",
116                 ],
117                 "fangzhenheiti" => [
118                     'R' => "fangzhenheiti.ttf",
119                 ],
120             ],
121             //如果字体包含SIP或SMP Unicode平面中的字符,请将其添加到此阵列
122             ////但你不需要它们。这允许使用更有效的子设置形式。
123             'BMPonly' => [
124                 "simsun",
125                 "simkai",
126                 "simhei",
127                 "fangzhenweibei",
128                 "fangzhenheiti",
129             ],
130 
131             //接下来的3个阵列做两件事:
132             // 1. 如果HTML/CSS中引用的字体对mPDF不可用,这些数组将确定替换了衬线/无衬线或单空格字体
133             // 2. 每个数组中的第一个字体将是在上述情况下替换的字体(否则,顺序无关紧要)
134             //使用mPDF字体系列名称,即小写和无空格(在$fonttrans中进行任何翻译后)
135             //始终包含“sans-serif”、“serif”和“monospace”等。
136 
137             'sans_fonts' => ['simsun','simkai','simhei','fangzhenweibei','fangzhenheiti'],
138 
139             'serif_fonts' => ['simsun','simkai','simhei','fangzhenweibei','fangzhenheiti'],
140 
141             'mono_fonts' => ['simsun','simkai','simhei','fangzhenweibei','fangzhenheiti'],
142         ];
143     }
144 
145     public function getDefaults()
146     {
147         return $this->defaults;
148     }
149 
150 }
View Code

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/707589.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初识上位机(下):C#读写PLC数据块数据

作为一个工业自动化领域的程序员,不懂点PLC和上位机,貌似有点说不过去。这里我用两篇小文带你快速进入上位机开发领域。上一篇,我们搭建了一个PLC的模拟仿真环境,本篇我们使用C#开发一个简单的PLC数据读取和写入的应用程序。大家好,我是Edison。 作为一个工业自动化领域的…

Markdown Editor 好用的工具

必要要记录一下,下次好找到。 Office Viewer(Markdown Editor) 好用的工具。 很适合我的。

linux开发和部署lazarus中间件

linux开发和部署lazarus中间件linux开发和部署lazarus中间件 1)linux开发的编译中间件2)linux部署中间件 本文来自博客园,作者:{咏南中间件},转载请注明原文链接:https://www.cnblogs.com/hnxxcxg/p/18197098

dotnet 设置 X11 建立窗口之间的父子关系

在 X11 里面有和 Win32 类似的窗口之间的关系机制,如 Owner-Owned 关系,以及 Parent-Child 关系。本文将告诉大家如何进行设置以及其行为本文将大量使用到 new bing 提供的回答内容,感谢 new bing 人工智能提供的内容 Owner-Owned 关系在这种关系中,一个窗口可以被另一个窗…

学习 Avalonia 框架笔记 设置 X11 窗口从最小化状态还原为正常状态

本文记录在 dotnet 里面如何设置 X11 窗口从最小化状态还原为正常状态本文属于学习 Avalonia 框架系列笔记,更多请参阅 博客导航 核心设置方法如下 /// <summary> /// 代码从 Avalonia 抄的 https://github.com/AvaloniaUI/Avalonia/blob/5e323b8fb1e2ca36550ca6fe678e4…

[转帖]全网最硬核 JVM 内存解析 - 4.Java 堆内存大小的确认

https://cloud.tencent.com/developer/article/2277323 个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判。如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 issue,谢谢支持~…

[转帖]System Performance 读书笔记 - 操作系统(1)

https://cloud.tencent.com/developer/article/1927381 本系列是针对 Systems Performance: Enterprise and the Cloud, 2nd Edition (2020) 书籍的读书笔记,加入了一些个人理解以及拓展,并且针对一些难以理解的地方提供了一些额外的参考内核(Kernel) 经典模型中,内核在操…

读人工智能时代与人类未来笔记05_现代人工智能

读人工智能时代与人类未来笔记05_现代人工智能1. 图灵 1.1. 1950年,数学家和逻辑学家艾伦图灵的论文《计算机与智能》中,图灵建议把机器智能的问题完全搁置 1.2. 图灵认为,重要的不是智能的机制,而是智能的表现 1.2.1. 因为其他生命的内在体验仍然是不可知的,所以我们衡量…

[转帖]为什么我建议需要定期重建数据量大但是性能关键的表

https://cloud.tencent.com/developer/article/1999970 个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判。如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 issue,谢谢支持~…

尽微好物:从0到10亿+的抖音电商的TOP1“联盟团长”,如何使用NineData实现上云下云

杭州尽微供应链是抖⾳平台⽉均带货10E的TOP1“联盟团⻓”&#xff0c;是字节跳动⼀级代理商&#xff0c;巨量千川指定服务商&#xff0c;拥有商品库9万&#xff0c;是⾏业领先的电商供应链平台&#xff0c;达⼈陪跑机构。 杭州尽微供应链以天猫、京东抖音电商业务为依托&#x…

论文解读:Self-Promoted Supervision for Few-Shot Transformer

文章汇总 存在的问题 在没有归纳偏差的情况下&#xff0c;vit通常在只有少数标记训练数据可用的few-shot学习机制下学习低质量令牌依赖关系&#xff0c;这在很大程度上导致了上述性能下降。 动机 cnn的归纳偏置并不天生就适用于vit&#xff0c;也不能很好地增强和加速vit中…

Signal 即将成为JavaScript的一部分

什么是响应性&#xff1f; 在过去的几年中&#xff0c;响应性成为了所有现代前端框架以及React库的核心。 对于不熟悉前端开发的人来说&#xff0c;起初这可能是一个令人困惑的概念&#xff0c;因为它改变了常规的、自上而下的、从调用者到被调用者的顺序工作流。 在响应性范…