过去我们经常接触的字库类型有两种,它们分别是TrueType字库和PostScript字库。

TrueType是由Apple和Microsoft在1991年共同推出的,供前端排版时显示和打印输出。它用数学函数描述字体轮廓外形,含有字形构造、颜色填充、数字描述函数、流程条件控制、栅格处理控制、附加提示控制等指令。TrueType采用几何学中二次B样条曲线及直线来描述字体的外形轮廓,其特点是:TrueType既可以作打印字体,又可以用作屏幕显示;由于它是由指令对字形进行描述,因此它与分辨率无关,输出时总是按照打印机的分辨率输出。无论放大或缩小,字符总是光滑的,不会有锯齿出现。但相对PostScript字体来说,其质量要差一些。特别是在文字太小时,就表现得不是很清楚。虽然打印质量没有PostScript字库好,但是完全可以满足一般用字的需求。

  PostScript是Adobe于1985年发表的文件描述技术,按该 PostScript页面描述语言语法定义的字库就是PostScipt字库,其主要特点是可以精确地描述绘制字型,因而按印刷工业中的质量标准,PostScript字库在平滑性、细节和忠实性方面比TrueType字库要好。PostScript字库一般装于后端输出设备如激光打印或RIP软件中,而它在前端的使用需要依靠特殊的软件比如Adobe 的ATM,由于PostScript字库在操作系统软件中的兼容性不是很理想,目前主要还是用于后端输出。

OpenType也叫Type 2字体,是由Microsoft和Adobe公司开发的另外一种字体格式。它也是一种轮廓字体,比TrueType更为强大,最明显的一个好处就是可以在把PostScript字体嵌入到TrueType的软件中。并且还支持多个平台,支持很大的字符集,还有版权保护。可以说它是Type 1和TrueType的超集。OpenType标准还定义了OpenType文件名称的后缀名。包含TureType字体的OpenType文件后缀名为.ttf,包含PostScript字体的文件后缀名为.OTF。如果是包含一系列TrueType字体的字体包文件,那么后缀名为.TTC。

OpenType的主要优点有: 1)增强的跨平台功能 2)更好的支持Unicode标准定义的国际字符集 3)支持高级印刷控制能力 4)生成的文件尺寸更小 5)支持在字符集中加入数字签名,保证文件的集成功能。

  Adobe和Microsoft从1995年就开始着手联合开发OpenType项目,该项目除了开发一种新型的跨平台字体文件格式外还旨在为用户提供具有更丰富排版特性的字体格式,目前该字体格式已经成为一种业内标准,越来越多的软件支持OpenType字体格式,越来越多的字体厂商将自己的字库升级到OpenType字体格式。

  Microsoft从Windows 2000系统开始兼容OpenType字库,其系统自带的西文字库都已升级到了OpenType字体格式,苹果公司也从MAC OS X开始完全兼容OpenType字库。而Adobe 公司不仅将自己Adobe 字体全部升级到OpenType格式,还推出Adobe Creative Suite 2 软件包,其中的InDesign,Illustrator 和Photoshop对OpenType 的排版特性都有非常好的支持。

  同一个OpenType字体文件可以用于Mac OS,Windows 和 Linux系统,这种跨平台的字库非常方便于用户的使用,用户再也不必为不同的系统配制字库而烦恼了。我们从以下几个方面更详尽地了解一下OpenType字库:

  A、 文件结构

  从OpenType文件结构来说,确切地讲它是TrueType 格式的扩展延伸,它在继承了TrueType格式的基础上增加了对PostScript字型数据的支持,所以OpenType的字型数据即可以采用TrueType的字型描述方式也可以采用PostScript的字型描述方式,这完全由字体厂商来选择决定。从文件结构的角度来讲OpenType或许并不是一种真正新的字体格式,但是该字体格式所增加的排版特性却从功能上为用户开辟了新的用字方式,为用户提供了更高效率的排版模式。

  B、 字型描述方式

  OpenType字体带有“O”图标。如果在双击Arial字体文件,可以看到如下画面:
     https://p-blog.csdn.net/images/p_blog_csdn_net/brucehuang1982/EntryImages/20091025/font.PNG
  
  "OpenType Font,Digitally Signed,TrueType Outlines"说明这款OpenType字库采用的就是TrueType描述方式,这种字库在原有的TrueType字库的基础上增加入了OpenType的排版特性使其升级到了OpenType字库格式,这些排版特性的加入可以更好地控制字型的替换和排版位置。

过去前端可使用的PostScript字库很少,一般是Type1字库,它仅能容纳256个字符,显然这种字型格式不适合我们的中文字库,并且不是所有软件都支持这种格式。而OpenType字体格式不仅可以包含上万的字型,而且兼容性非常好,对于图形或排版的专业人员来说前端使用CFF OpenType字库是很好的选择。目前Adobe在大陆发行的Adobe CS 2 专业版、标准版、InDesign CS2软件均提供一张汉仪开元字宝光盘,该产品就是30款 CFF OpenType 字库。

  C、 编码方式

  OpenType字体格式采用Unicode编码,Unicode是国际编码标准,它为不同语言的字型分配了唯一的编码,几乎包含了世界上的所有字符,每个字符都有一个单一的Unicode值,所以在同一款OpenType字库中可以同时包含很多种语言的字型,比如西文、中文、韩文、日文、俄文等,从这方面讲OpenType是一种兼容各种语言的字体格式。

  目前OpenType 可以包含65,000 多个字型,对于中文字库而言最基本的字汇应该包含GB2312-80标准的6763个常用字型,这些字应该能满足一般用户的使用,对于户籍管理、银行系统和出版社等用户而言需要2万多字甚至7万多字的支持。

  D、 排版特性

  这是OpenType字体格式最突出的特点,它可以协助排版用户更快地设计出色版面,比如提供了分数字、上下标、连笔字的替换功能。下面举一些例子:

  自由连笔功能: 有些用户可能在排以下符号时会觉得字母之间距离过大,会通过调字间距的功能来缩小间距,如今字体厂商可以在字库中为用户做一些常用的连笔字型,然后利用OpenType的自由连笔特性将这个字型与需要连笔的字符进行关联,在Indesign中打开OpenType的自由连笔字功能,用户在敲“m”“m”两个字符时就自动被一个“mm”图形所替代。

  分数字,上下标功能:当文章中需要敲一些分数字或上下标时用户往往会为数字的位置高低而烦恼,同样利用OpenType的分数字、上标、下标、分子字、分母字的功能可以帮用户很快实现用户想达到的效果。

  花饰字功能:在排英文版面时,如果段落的第一个大写字母是一个漂亮的花体字是不是很漂亮呢,现在OpenType提供的花饰字功能就可以达到锦上添花的效果。  

最后,介绍一点利用GDI+绘制文字Outline的方法。基本思路就是将一串文字传入GraphicsPath::AddString方法,获取这串文字的Outline,然后利用Graphics::DrawPath绘制出来。例如,

#include <Gdiplus.h>

void CScratchPadDlg::OnPaint()
    {
        //CDialog::OnPaint();
        CPaintDC dc(this);
        using namespace Gdiplus;
        Graphics graphics(dc.GetSafeHdc());
        graphics.SetSmoothingMode(SmoothingModeAntiAlias);
        graphics.SetInterpolationMode(InterpolationModeHighQualityBicubic);

FontFamily fontFamily(L"Arial");
        StringFormat strformat;
        wchar_t pszbuf[] = L"Text Designer";

GraphicsPath path;
        path.AddString(pszbuf, wcslen(pszbuf), &fontFamily,  FontStyleRegular, 48, Gdiplus::Point(10,10), &strformat );
        Pen pen(Color(234,137,6), 6);
        graphics.DrawPath(&pen, &path);
        SolidBrush brush(Color(128,0,255));
        graphics.FillPath(&brush, &path);
    }

当然,这只是最基本的一点思路,绘制出来的效果不一定如你所愿。如果想达到Photoshop或者像WPF中的那些特效,还得下许多功夫。下面有一些可供参考地方,

Reference:

http://www.codeproject.com/KB/GDI-plus/OutlineText.aspx

http://outlinetext.codeplex.com:80/

TrueType和OpenType字库简介相关推荐

  1. OpenType字库文件

    OpenType字库文件 一个OpenType字库文件以表的格式包含有数据,这些数据包含一个TrueType或一个PostScript outline 字库.光栅化程序使用字库里包含的表中的数据来渲染 ...

  2. TrueType、PostScript 和 OpenType 字体之间的区别是什么? truetype vs opentype

    TrueType.PostScript 和 OpenType 字体之间的区别是什么? TrueType 字体可调整到任意大小,并且在所有大小情况下,都是清晰可读的.可以将它们发送给 Windows 支 ...

  3. 量子OFFICE:TrueType/FreeType/OpenType的概念

    FreeType各项功能都有,为什么要改进呢?为了做得跟WORD一样啊. 结合自己以前在研究的时候,看到的资料,介绍几个概念: TrueType是一种矢量字体规范 如果是位图字体,不同字号就要有不同的 ...

  4. truetype韩文字库显示

    以前在我们的系统上实现了韩文字体的显示,采用的minigui的显示方式,由于不认识韩文,所以只是知道显示的是韩文,并不知道是否正确.使用了 一段时间以后,有客户反映韩国留学生认为韩文有问题,看不明白韩 ...

  5. truetype技术和矢量字库的技术原理及实现(转)

    源:truetype技术和矢量字库的技术原理及实现 广泛汉字矢量字库(HZKSLxxJ)格式             在矢量字库中,每个汉字都是以128   X   128点阵制成矢量数据.每个汉字  ...

  6. truetype技术和矢量字库的技术原理及实现

    广泛汉字矢量字库(HZKSLxxJ)格式              在矢量字库中,每个汉字都是以128   X   128点阵制成矢量数据.每个汉字      的矢量数据都由一指针指向,   指针区在 ...

  7. 【每日AI】什么是矢量字库?

    一,矢量字库 矢量字库是一种记录每个字符的矢量信息的字符库.它的基本原理是根据一定的数学模型,把每个字符的笔画分解成数学模型中定义好的各种直线和曲线,然后记下这些直线和曲线的参数.在显示的时候根据具体 ...

  8. 【第3版emWin教程】第32章 emWin6.x的矢量字体(支持汉字全字库,Unicode编码,QSPI Flash方案)

    教程不断更新中:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429 第32章       emWin6.x的矢量字体(支持汉字全字库 ...

  9. FreeType简介及在vs2010的编译使用

    FreeType库是一个开源.高质量.可扩展.可定制.可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括点阵字.TrueType.OpenType.Type1.CID.CFF.Window ...

最新文章

  1. Jupyter Notebook 的快捷键
  2. 如何入门技术、进阶技术(技术开发人员)
  3. 全球及中国天然肠衣行业投资盈利分析及竞争格局展望报告2022-2027年
  4. OpenCV均值漂移meanshift algorithm算法的实例(附完整代码)
  5. VC中的#pragma指令的用法
  6. 你有一个向LiveVideoStackCon讲师提问的机会
  7. draft.js_如何使用快捷方式在Draft.js中创建有序列表和无序列表
  8. halcon 相似度_Halcon分类函数,shape模型
  9. 【转载】挖坑浪费时间
  10. 知云文献翻译打不开_文献翻译工具-知云文献翻译
  11. socket编程 —— 非阻塞socket (转)---例子已上传至文件中
  12. JavaSE----常用类(String、StringBuilder、StringBuffer)
  13. hibernate配置文件hibernate.cfg.xml的详细解释
  14. 利用PS和抠图软件轻松换证件照背景
  15. C语言if语句的基本用法
  16. 【整理】linux学习笔记整理8
  17. mac重启php-fpm
  18. 五一劳动节的由来与发展,你知道吗?
  19. 您计算机处于状态或者您计算机时钟设置,您的Windows 10时间不正确? 这是如何固定时钟 | MOS86...
  20. python|简单实现英文单词大小写转化

热门文章

  1. wxpython列表框_wxpython中列表框(ListBox类)、复选列表框(CheckListBox)、下拉选项(Choice)、进度条(Gauge)、滑块(Slider)使用实例源码分享...
  2. 手动生成token_生成 Token
  3. 数独程序python
  4. 类似于网易新闻客户端的界面实现01
  5. 腾讯START云游戏 v0.287.2中文版
  6. Python讯飞语音转文字保存到文件
  7. 【初等数学】基本不等式
  8. VoLTE学习笔记(1)
  9. 种绿色稻养黄沙鳖 国稻种芯·中国水稻节:广西玉林稻田新门道
  10. Learn OpenGL 笔记6.10 SSAO(Screen Space Ambient Occlusion屏幕空间环境光遮蔽)