一笔一划间蕴藏的学问 浅谈计算机字体

2023-11-08 23:10

本文主要是介绍一笔一划间蕴藏的学问 浅谈计算机字体,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转载:http://pcedu.pconline.com.cn/340/3409828_all.html#content_page_2

1、点阵字体和矢量字体

字体虽小,但却无处不在。每天我们打开电脑,掏出手机,我们都能看到形态各异的字体。而电脑及手机等设备的屏幕质材不一,要如何让字体在各种屏幕上清晰美观地显示,却又是一门不可小觑的大学问。

我们知道,显示器拥有很多的发光点(起码看上去是发光点),一个个明暗、色彩不同的发光点组成了能显示各种内容的屏幕。既然屏幕上的点可以组成各种图案,那么当然也可以用这些点来排列出文字,显示各种字体。这听上去好像很简单的样子,最初人们也是这样子认为的,于是就简单地使用点阵来显示电脑字体。
这里写图片描述
点阵字体

点阵字体其本质是图片,用点的虚实来描绘出字符轮廓。人们用一张图片来表示一个字符,并为每个字符提供了正常、粗体、斜体、粗斜体四种变体。于是人们就为各个字母制作了各种各样的图片,简单地实现了字体的显示。这的确很简单,不就把字符画到图片上去嘛,请个临时工,不到几天就能把英文字母通通搞完,简直就是人力资源和高科技的完美协作。
这里写图片描述
人力资源总是有的

但是很快人们就发现这十分不靠谱了。点阵字体是一张张图片,这就意味着这些图片是有大小尺寸的。当人们试图放大点阵字体的时候,字符纷纷打上了马赛克。这就是点阵字体的一个问题——点阵字体很难缩放,每个字符都只能清晰显示特定字号,放大会打码,缩小会断裂。面对满屏幕的马赛克和凌乱的笔画,大家纷纷表示不能接受。
这里写图片描述
马赛克阻碍着人类文明的进步

数学拯救了世界,矢量字体诞生了。人们用数学方程来描述笔画,把字符分隔成若干关键点,并用光滑的曲线予以连接。这些曲线可以用有限个参数来唯一确定,通过计算可以无损地放大缩小每一个字符。Adobe(嗯,就是卖Photoshop那个)在1985年提出了一套矢量字体标准PostScript并广泛流行,包含了PostScript Type 1和Type3。Type 1复杂且精细,可向字体内增添自己的隐含信息,面向那些打算在自己的字体增添隐含信息的厂商高价售卖。Type 3则无法增添隐含信息,也包括了其他一些特性,Adobe将其公开出版发行。
这里写图片描述

由于Type 3是公开发行的,其他厂商迅速搞出了可以创造Type 3字体的工具,人人都能创作字体,Adobe霎时老泪纵横。也许是受了刺激,很快Adobe又创造了另一个版本的PostScript,渲染效率更高,可以在当时十分缓慢的个人电脑上运行。这个版本的PostScript被命名为Display PostScript。

2、TrueType和OpenType的诞生

时间来到了20世纪90年代,当时个人计算机市场主要有两家大家都比较熟悉的公司,它们就是苹果和微软。看着个人计算机市场的日益红火,Adobe当然不想放过商机。Adobe向苹果和微软两家公司卖力兜售Display Postscript,只可惜对方就是不买账——字体是操作系统的重要部分,这个部分绝然不可能让第三方来控制的。苹果和微软商量了一下,决定进行合作来开发类似Display PostScript的东西。
这里写图片描述
设计对白:“我们一起来搞Adobe?”“甚善!”

在拒绝Adobe Display PostScript的兜售以后,鉴于此前也有着一些开发矢量字体的研究,苹果决定制作一个全新的格式,代号为“Bass”。当开发完成后,“TrueType”这种至今仍在广泛使用的字体格式就诞生了。TrueType格式十分常见,如果看到后缀名是ttf的字体文件,那么这就是TrueType格式的字体了。
这里写图片描述
被广泛使用的TrueType

但是TrueType在当时并不叫座,因为大部分厂商已经重金购买了Adobe的Type 1字体,不愿意更换。于是苹果向合作伙伴微软进行了求助,共同对抗Adobe。苹果给予微软TrueType认证,微软把自己开发的TrueImage打印技术授予了苹果。这两套东西一个用来显示一个用来影印,合起来就有了PostScript的功能。

但是,很快苹果就发现自己被微软坑了。微软开发的TrueImage打印技术错漏百出,连微软自己都不用。苹果顿时泪流满面,TrueImage事实上也并未在苹果和微软的任何产品中出现。不仅如此,在1996年,微软还出乎意料地和Adobe合作开发新一代字体格式,合并了PostScript Type 1和TrueType技术,推出了OpenType。
这里写图片描述
微软的TrueImage打印技术不靠谱

OpenType支持Unicode,能支持任何语言文本,体积小,开发难度也比较小,并且具有高级字形特征,效果十分好。由于特性先进,大受业界欢迎。Adobe在2002年末已经将其所有字体库都改用了OpenType,连苹果也在Mac OS X 10.4 Tiger系统开始支持OpenType功能,微软则在Windows 2000以后广泛内置OpenType字体支持。OpenType也在许多软件中得到了良好兼容,比如说PDF可以无缝内嵌OpenType字体,OpenType的确是业界未来的趋势。
这里写图片描述
业界未来OpenType

3、两种迥然不同的字体渲染理念

实际上,苹果和微软都在系统中都广泛支持OpenType和TrueType,但我们仍可以发现苹果电脑Mac和微软Windows PC在显示字体方面有一些微妙的不同。排除字体本身的原因,这是由于Mac和Windows对字体的渲染方面有一些理念差异。

矢量字体解决了字体本身的精度问题,但是把高精度的字体显示到屏幕上,倒不见得一定会高精度。把字体打印输出,纸张和字体黑白分明,笔画轮廓清晰,衬线体的棱角细节纤毫毕现,这得益于300dpi(dots per inch,每英寸点数)的印刷精度。而显示屏则很少达到这个精度,所以屏幕精度能达到300ppi(pixels per inch,每英寸像素)以上的Retina屏幕能在业界中引发一阵分辨率狂潮。
这里写图片描述
乔布斯在介绍Retina屏幕

在显示字体的时候,在笔画周围增加一些辅助显示的像素,可以减少锯齿、笔画断裂等由于显示屏精度不够而产生的不良效果,这种技术被称为“次像素渲染”。目前苹果和微软都采用了次像素渲染技术,但对于如何在精度逊于印刷品的显示屏上实现较好的字体显示效果,苹果和微软有着不同的理念。或者说,对于什么才叫“好的显示效果”,苹果和微软有着不同的理解。
这里写图片描述
美观和实用的交锋

苹果有着丰富的印刷和出版经验,对印刷成品十分重视。苹果认为,在显示屏上所显示的字体应该和印刷出来的成品效果接近,这样才能让设计师“眼见即所得”,提高工作效率。为此,Mac上面所显示的字体都比较接近字体原样,苹果大量使用次像素渲染来增添字体的细节——即使这样会导致字体看上去有些模糊。

微软则有着长久的桌面系统开发历史,从命令行到图形界面,侧重于考虑计算机用户阅读文字是否方便。微软认为,显示字体的时候应该针对显示屏作一定的优化,使之适应较低精度的像素分布,获得清晰效果,方便用户阅读。微软在渲染字体的时候让字体作了一定程度的变形,令字体看上去足够清晰——即使会让字体偏离本身设计的形状。
这里写图片描述
网友制作的对比图

我们不能说哪种理念才是正确的,因为这两种想法所针对的人群不同。对于一个设计师来说,他会喜欢Mac,因为他在Mac上制作的作品和最终的成品十分相似,不必反复校对;而对于文字工作者来说(比如说小编),则会更倾向于Windows PC,因为不必离屏幕很近也可以看清楚文字,能减轻眼球负担。

有趣的是,苹果和微软在字体渲染方面理念的差别也导致了双方机器设计的差别。苹果的机器无论是Macbook还是iPhone,屏幕都拼命向高分辨率高精度发展,因为高精度的屏幕可以极大减轻苹果式渲染字体而导致的模糊,最终的结果就是得到几乎和印刷品一样精细而清晰的字体。而微软则在新系统设计上大量使用大字号的文字——不明白的话可以看看Windows Phone的界面,这让能令用户十分容易看清楚界面的文字。
这里写图片描述
Windows Phone UI中大字体随处可见

说完了苹果和微软在字体渲染方面的差异,再说说Linux的字体渲染吧。很多朋友都觉得Linux太高端,完全不知道是什么东西,实际上很多人手中把持着的Android设备,其系统就是基于Linux Kernel的。事实上Linux的字体渲染介于苹果和微软之间——不如苹果精细,也不如微软清晰,但是比其余两者泛用性都强。

Android设备的屏幕分辨率和质材各种各样,从QVGA到720p,从RGB排列到Pentile排列,什么奇葩都有。人们常常埋怨Android设备上显示的字体不好看,实际上Android在这方面已经足够好了。可以想象一下,如果Android使用Mac的方式渲染字体,那毫无疑问在很多低端机器上的字体都会糊成一坨;若使用Windows PC上的方式渲染字体,那在Pentile屏幕上字体的边缘无疑会多出很多红红绿绿的马赛克。
这里写图片描述
Pentitle像素排列的屏幕(左)对字体的显示并不好

4、MacType:强大的字体渲染工具

上面说到了各种机器渲染字体的方式不同,也没有什么优劣之分。但人总会有个喜好,有人说,我就是喜欢苹果Mac上的那种字体渲染,但是又由于种种原因不得不使用Windows PC,每次看到Mac都羡慕嫉妒恨啊。
这里写图片描述
有人就是喜欢Mac的字体

这也的确,Windows PC上面的字体,特别是中文字体,特别特别是除了雅黑之外的中文字体,虽然能看得很清楚,但是缺乏美观。这是因为除了雅黑全字号使用ClearType次像素渲染技术外,其他大多数中文字体在小字号的时候为了保持清晰度,使用了点阵显示,效果类似于古董货点阵字体。这怎么看都明显不够LifeStyle啊,一夜回到解放前啊亲,于是有人就在想能不能在Windows PC上使用类似Mac的字体渲染了。
这里写图片描述
中文非雅黑字体在小字号下会以点阵显示

在Windows PC上,我们可以通过第三方软件接管Windows的字体渲染功能,来实现其他渲染方式。这里我们使用的是一款叫“MacType”的软件。

软件名称: MacType
软件版本: 2012
软件大小: 3.59MB
软件授权: 免费
适用平台: Win9X Win2000 WinXP Win2003 Vista Win7
下载地址: http://dl.pconline.com.cn/download/91429.html

MacType的前身是日本人写的一款开源软件gdi++,可以通过进程注入自己的动态链接库截取Windows的字体渲染引擎Windows GDI+(gdi32.dll)来接管Windows的字体渲染。gdi++允许自定义字体类型和字体的渲染效果,深得用户喜爱,可惜的是gdi++在2006年停止了更新。

由于gdi++是开源软件并且品质优秀,自然而然会有第三方的开发者使用其源代码进行开发。MacType就是一款使用了gdi++源代码的软件,在继承了gdi++的优秀特性的同时,也开发了一些新功能。至于MacType的实际使用效果如何,我们下面一起来看看。

首先我们下载MacType的安装程序。MacType支持Windows XP和Windows 7(包括32位和64位)等主流操作系统,但是并不支持Windows 8。安装MacType以后,会出现一个用户向导,可以选择MacType的加载模式,向导界面中对各种模式的特点也有说明。
这里写图片描述
MacType向导界面:选择加载模式

这里推荐使用MacTray托盘加载。使用托盘加载可以很方便地实时更换各种字体渲染方式,也很容易开启和关闭MacType,对系统也没有额外的改动。

接着MacType会让你选择一个配置文件,不同的配置文件有不同的效果,其中差异大家可以亲自尝试。我们也可以点击左下角的“进程管理”来让MacType只对特定的进程进行字体渲染,之后向导就完成了。
这里写图片描述
Mactype向导界面:选择配置文件及渲染进程

选择MacTray托盘加载模式以后,MacType会在通知区域显示一个托盘图标。我们可以双击图标来选择对哪些进程加载MacType,也可以右击图标来设置MacType,选择配置文件,或者自定义配置文件。

MacType的配置十分详细,可以用MacTray Tuner和记事本两种方式对字体的渲染核心、反锯齿等一系列特性进行调整,或者是对某些字体进行替换,并且给出实时预览。由于MacType可以对字体渲染方式作十分详细的配置,所以我们可以把字体渲染成苹果Mac风格的,也可以渲染成Windows风格的,还有其他效果,其中妙处大家可以慢慢体会。
这里写图片描述
使用MacType Tuner修改配置文件

这里写图片描述
点击“高级”后有更多详细选项

当然,我们也可以去网上下载他人的配置文件来尝试别人配置好了的渲染效果。不过MacType自带的字体渲染效果就有12个,一般而言已经够用了。

配置好MacType以后,很明显可以看到字体的渲染方式有了变化。至于效果如何,大家可以亲自试试。
这里写图片描述
开启MacType前

这里写图片描述
开启MacType后

5、后话

字体虽小,学问却大。字体的问题涉及计算机运算、显示、影印、美术等多个方面,本文所提到的不过是九牛之一毛。然而字体的重要性又是不言而喻的,我们可以离开图形,但即使回到命令行的时代我们也离不开文字。小小字体美观与否,甚至能影响一个人的心情乃至心态。最后,愿各位每天都有好心情。

这篇关于一笔一划间蕴藏的学问 浅谈计算机字体的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/372996

相关文章

浅谈主机加固,六种有效的主机加固方法

在数字化时代,数据的价值不言而喻,但随之而来的安全威胁也日益严峻。从勒索病毒到内部泄露,企业的数据安全面临着前所未有的挑战。为了应对这些挑战,一种全新的主机加固解决方案应运而生。 MCK主机加固解决方案,采用先进的安全容器中间件技术,构建起一套内核级的纵深立体防护体系。这一体系突破了传统安全防护的局限,即使在管理员权限被恶意利用的情况下,也能确保服务器的安全稳定运行。 普适主机加固措施:

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

计算机视觉工程师所需的基本技能

一、编程技能 熟练掌握编程语言 Python:在计算机视觉领域广泛应用,有丰富的库如 OpenCV、TensorFlow、PyTorch 等,方便进行算法实现和模型开发。 C++:运行效率高,适用于对性能要求严格的计算机视觉应用。 数据结构与算法 掌握常见的数据结构(如数组、链表、栈、队列、树、图等)和算法(如排序、搜索、动态规划等),能够优化代码性能,提高算法效率。 二、数学基础

浅谈PHP5中垃圾回收算法(Garbage Collection)的演化

前言 PHP是一门托管型语言,在PHP编程中程序员不需要手工处理内存资源的分配与释放(使用C编写PHP或Zend扩展除外),这就意味着PHP本身实现了垃圾回收机制(Garbage Collection)。现在如果去PHP官方网站(php.net)可以看到,目前PHP5的两个分支版本PHP5.2和PHP5.3是分别更新的,这是因为许多项目仍然使用5.2版本的PHP,而5.3版本对5.2并不是完

java计算机毕设课设—停车管理信息系统(附源码、文章、相关截图、部署视频)

这是什么系统? 资源获取方式在最下方 java计算机毕设课设—停车管理信息系统(附源码、文章、相关截图、部署视频) 停车管理信息系统是为了提升停车场的运营效率和管理水平而设计的综合性平台。系统涵盖用户信息管理、车位管理、收费管理、违规车辆处理等多个功能模块,旨在实现对停车场资源的高效配置和实时监控。此外,系统还提供了资讯管理和统计查询功能,帮助管理者及时发布信息并进行数据分析,为停车场的科学

《计算机视觉工程师养成计划》 ·数字图像处理·数字图像处理特征·概述~

1 定义         从哲学角度看:特征是从事物当中抽象出来用于区别其他类别事物的属性集合,图像特征则是从图像中抽取出来用于区别其他类别图像的属性集合。         从获取方式看:图像特征是通过对图像进行测量或借助算法计算得到的一组表达特性集合的向量。 2 认识         有些特征是视觉直观感受到的自然特征,例如亮度、边缘轮廓、纹理、色彩等。         有些特征需要通

【python计算机视觉编程——7.图像搜索】

python计算机视觉编程——7.图像搜索 7.图像搜索7.1 基于内容的图像检索(CBIR)从文本挖掘中获取灵感——矢量空间模型(BOW表示模型)7.2 视觉单词**思想****特征提取**: 创建词汇7.3 图像索引7.3.1 建立数据库7.3.2 添加图像 7.4 在数据库中搜索图像7.4.1 利用索引获取获选图像7.4.2 用一幅图像进行查询7.4.3 确定对比基准并绘制结果 7.

【python计算机视觉编程——8.图像内容分类】

python计算机视觉编程——8.图像内容分类 8.图像内容分类8.1 K邻近分类法(KNN)8.1.1 一个简单的二维示例8.1.2 用稠密SIFT作为图像特征8.1.3 图像分类:手势识别 8.2贝叶斯分类器用PCA降维 8.3 支持向量机8.3.2 再论手势识别 8.4 光学字符识别8.4.2 选取特征8.4.3 多类支持向量机8.4.4 提取单元格并识别字符8.4.5 图像校正

Python计算机视觉编程 第十章

目录 一、OpenCv基础知识 1.读取和写入图像 2.颜色空间 3.显示图像和结果 二、处理视频 1.输入视频 2.将视频读取到NumPy数组中 三、跟踪 1.光流 2.Lucas-Kanade算法 一、OpenCv基础知识 OpenCV 自带读取、写入图像函数以及矩阵操作和数学库。 1.读取和写入图像 import cv2# 读取图像im = c

浅谈java向上转型和乡下转型

首先学习每一种知识都需要弄明白这知识是用来干什么使用的 简单理解:当对象被创建时,它可以被传递给这些方法中的任何一个,这意味着它依次被向上转型为每一个接口,由于java中这个设计接口的模式,使得这项工作不需要程序员付出任何特别的努力。 向上转型的作用:1、为了能够向上转型为多个基类型(由此而带来的灵活性) 2、使用接口的第二个原因却是与使用抽象基类相同,防止客户端创建该类的对象,并确保这仅仅