当前位置: 首页 > 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

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

http://www.xdnf.cn/news/939727.html

相关文章:

  • Python实例题:Python计算数理统计
  • 大语言模型(LLM)面试问题集
  • beckHoff_FB --> GET SNC 功能块
  • 程序问题实录
  • 模块缝合-把A模块换成B模块(没写完)
  • Spring缓存注解的陷阱:为什么@CacheEvict删不掉Redis缓存?
  • 正常流程、可选流程和异常
  • OPENCV图形计算面积、弧长API讲解(1)
  • 【Linux】文件赋权(指定文件所有者、所属组)、挂载光驱(图文教程)
  • 如何计算1920*1080分辨率的YUV或RGB图像数据占用大小?
  • Cinnamon修改面板小工具图标
  • 分词算法总结:不同分词算法的优点和缺点
  • 【量化】策略交易类型
  • Razor编程RenderXXX相关方法大全
  • 鸿蒙的一些布局
  • 更新积木报表2.0.0注意事项
  • 第八章 信息安全基础知识
  • 大三下第16周总结
  • 华为OD机考-内存冷热标记-多条件排序
  • 4、docker常用命令
  • 前端八股笔记
  • 设备驱动与文件系统:05 文件使用磁盘的实现
  • 2025-05-01-决策树算法及应用
  • Kotlin REPL初探
  • 单片机 传感器知识讲解 (一)红外避障模块,声控模块,人体红外模块
  • 9.贪心算法(随想录)
  • 电子学会Python考前英语单词
  • art-template模板引擎
  • SpringCloudAlibaba和SpringBoot版本问题
  • 【差分】详解二维前缀和和差分问题