当前位置: 首页 > news >正文

​**​CID字体​**​ 和 ​**​Simple字体​**​

在PDF中,字体类型主要分为 ​​CID字体​​ 和 ​​Simple字体​​ 两大类,它们的主要区别在于编码方式和适用场景。以下是它们的详细对比:


​1. CID字体(CID-keyed Fonts)​

CID(Character Identifier)字体使用 ​​数字索引(CID)​​ 直接映射字形,适用于 ​​多语言、复杂字符集​​(如中文、日文、韩文等)。
主要分为两种:

​(1) CIDType0Font​
  • ​特点​​:
    • 基于 ​​CFF(Compact Font Format)​​ 的PostScript轮廓字体(通常为 .otf
    • 支持 ​​CID-keyed​​ 编码,适合高压缩率的矢量字体
    • 常用于 ​​Adobe Asian Fonts​​(如中文字体)
  • ​示例​​:思源黑体、Adobe 宋体
​(2) CIDType2Font​
  • ​特点​​:
    • 基于 ​​TrueType​​ 轮廓(通常为 .ttf
    • 同样使用CID映射,但字形数据是TrueType格式
    • 支持 ​​Unicode​​ 映射(通过ToUnicode表)
  • ​示例​​:大部分支持多语言的TrueType字体(如Arial Unicode MS)

​2. Simple字体(Simple Fonts)​

Simple字体使用 ​​字符名称(Glyph Name)或8位编码​​ 直接引用字形,适用于 ​​拉丁语系等小字符集​​。
主要分为三种:

​(1) SimpleType1Font​
  • ​特点​​:
    • 基于 ​​Type1​​ 格式(PostScript .pfb.afm
    • 使用 ​​标准编码​​(如WinAnsi、MacRoman)或自定义编码
    • 仅支持 ​​256个字符​​(8位编码)
  • ​示例​​:Times New Roman、Helvetica
​(2) SimpleTrueTypeFont​
  • ​特点​​:
    • 基于 ​​TrueType​​ 轮廓(.ttf
    • 同样限制在 ​​256个字符​​,但使用TrueType字形数据
    • 可通过ToUnicode表支持部分Unicode字符
  • ​示例​​:Symbol、Wingdings(符号字体)
​(3) StandardFonts(PDF内置14种标准字体)​
  • ​特点​​:
    • PDF规范定义的 ​​14种标准字体​​,无需嵌入
    • 使用 ​​WinAnsi/MacRoman​​ 编码
    • 仅支持基本拉丁字符
  • ​列表​​:
    Courier, Courier-Bold, Courier-Oblique, Courier-BoldOblique
    Helvetica, Helvetica-Bold, Helvetica-Oblique, Helvetica-BoldOblique
    Times-Roman, Times-Bold, Times-Italic, Times-BoldItalic
    Symbol, ZapfDingbats

​核心区别总结​

​特性​​CID字体​​Simple字体​
​编码方式​CID数字索引8位编码(0-255)
​字符集支持​多语言(如CJK)拉丁语系(有限字符)
​字形数据格式​CFF(Type0)或TTF(Type2)Type1或TTF
​是否支持Unicode​是(通过ToUnicode表)有限支持(仅SimpleTrueType)
​典型用途​中文/日文/韩文PDF英文PDF、符号字体

​如何选择?​

  1. ​用CID字体(Type0/Type2)​​:

    • 需要嵌入中文、日文、韩文等宽字符集
    • 字体包含超过256个字形
  2. ​用Simple字体(Type1/TrueType)​​:

    • 仅需支持英文、数字、符号(如Webdings)
    • 兼容旧版PDF阅读器(某些设备对CID支持较差)
  3. ​用StandardFonts​​:

    • 文档仅使用基本拉丁字符,且希望减小文件体积(无需嵌入字体)。

​你的代码中的应用​

在之前的EmbedFontSmart函数中:

  • ​Symbol/Webdings等符号字体​​ → 适合SimpleTrueTypeFont(因为它们是8位编码的符号集)
  • ​普通TrueType字体(如Arial)​​ → 优先用CIDType2Font以支持Unicode

如果有其他特定需求(如兼容性优化),可以进一步调整判断逻辑。

相关文章:

  • 新手如何选择前端框架?
  • 行为型设计模式之Mediator(中介者)
  • 【Redis】持久化
  • 苍穹外卖-day01
  • 告别 @MockBean!在 Spring Boot 3.2+ 中使用 @MockitoBean 进行单元测试
  • NLP学习路线图(三十三): 文本分类
  • redis--黑马点评--分布式锁实现详解
  • uni-app学习笔记二十七--设置底部菜单TabBar的样式
  • AWS 公开数据集下载与操作说明
  • iOS 抖音导航栏首页一键分两列功能的实现
  • 【iOS】多线程NSOperation,NSOperationQueue
  • 从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(十二)
  • 【iOS】 Block再学习
  • Ubuntu20.04中 Redis 的安装和配置
  • Cursor 编辑器, 使用技巧,简单记录一下
  • 【人工智能 | 项目开发】Python Flask实现本地AI大模型可视化界面
  • 2025年与2030年AI及AI智能体 (Agent) 市场份额分析报告
  • 【GO性能优化】第十五章:性能优化艺术——揭秘Go程序的性能调优技巧
  • CppCon 2015 学习:Live Lock-Free or Deadlock
  • MS39531N 是一款正弦驱动的三相无感直流电机驱动器,具有最小振动和高效率的特点
  • 问佛教网站大师做早课烧香烛可以吗/公司产品推广文案
  • 兰州做网站改版的公司/引流推广平台
  • 律师怎样做网站/游戏代理平台
  • 人才市场招聘网站/百度关键词搜索排名帝搜软件
  • 建设网站排名/外链交易平台
  • 网站和域名的关系/关键词挖掘站长