linux美化原理,x-window字体原理及美化

x-window字体原理及美化

发布时间:2006-10-07 01:25:15来源:红联作者:caldo

1. 简介

在我必须处理的一堆讨厌事中,有一项就是没完没了的 X 缺省字体和字体设定 (我专指 XFree86,其它的 X 也许比较好)。有些程序缺省使用固定宽度字体 (fixed width fonts),但其实可变宽度字体 (variable width fonts) 较为适当。而有些程序使用不可思议的小字,而无法辨认。伴随 XFree86 而来的字体根本不适於使用。它的确有还算体面的 courier 字体,但是它附的 Times 和 Helvetica 只是简单的点阵字,当缩放的时候就产生锯齿状。

本 HOWTO 尝试说明如何调整各式各样的字体设定,如何安装新字体,和其它可以大大改善 X window 字体的外观和可读性的方法。这是藉由调整 XF86Config 档中的字体路径 (FontPath),在 startx 或 xdm 加上 X server 命令列选项(command line options),加入新的字体,安装 TrueType 字体服务器 (font server) xfstt,和使用 K Desktop Environment 1.1 的功能来调整许多应用程序的字体设定,包含设定让非 KDE 应用程序的颜色和字体能够与 KDE 一致。

欢迎评论,更正,增补和批评。您可以在 meldroc@frii.com 联络到我。

1.1 更新纪录

* 0.1: Feb. 21, 1999: 第一次公布。

* 0.11: Feb. 27, 1999: 放入 copyright。

* 0.12: Jun. 10, 1999: 放入请求援助。

* 0.20: Sep. 14, 1999: 为 redhat 使用者放入有关于 xfs 的一节。感谢 Hal Burgiss 的贡献。

* 1.0: Nov. 23, 1999: 将文章转为 SGML 格式,传送给 Linux Document Project。将请求援助的部份移除。

2. XF86Config 档

要想解决字体的问题,首先先得看看 XF86Config 档。(通常放在 /usr/X11/lib/X11/XF86Config 或 /etc/X11/XF86Config)。您猜到了吗? 这个档中关于字体最重要的部份就是 FontPath。在我们研究它之前,最好先检查 X 的其它设定。错误的屏幕设定比错误的字体设定更令人头痛。确定您屏幕的更新频率 (refresh rate) 在正常使用范围中已经设到最高 (85Hz 很好,75Hz 普通,60 Hz 很不舒服)。

2.1 设定 FontPath

用您最顺手的文字编辑器来编辑 XF86Config。在文件的开头,您应该会看到类似下面的东西:

FontPath "/usr/X11R6/lib/X11/fonts/misc/"

FontPath "/usr/X11R6/lib/X11/fonts/Type1/"

FontPath "/usr/X11R6/lib/X11/fonts/Speedo/"

FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"

FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"

FontPath 告诉 X 到那里去找在屏幕上显示用的字体。顺序是很重要的,当一个 X 的应用程序向 X 要求使用一些字体,X server 通常偏好使用正在用的字体。然后它去看看 FontPath,使用最先看到能满足 X client 要求的字体。

缺省的 FontPath 通常将 75dpi 的字体放在 100dpi 的字体前面。若您有一台高解析度的屏幕,这表示非常小的字。第一个你要用的方法就是将 75dpi 和 100dpi 的 FontPath 对调。

FontPath "/usr/X11R6/lib/X11/fonts/misc/"

FontPath "/usr/X11R6/lib/X11/fonts/Type1/"

FontPath "/usr/X11R6/lib/X11/fonts/Speedo/"

FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"

FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"

然后指出您偏好使用不能缩放的点阵字。若您曾经使用 Netscape 或是其它使用较大字体来显示标题的程序,您将会发现这些字体呈现锯齿状的。这样很丑,需要修改。所以在 misc,100dpi 和 75dpi 的最后加上 :unscaled。若您想要的话,您也可以同时使用能缩放和不能缩放的字,只要将不能缩放的字的 FontPath 放在前面,告诉 X 说若可能的话,尽量使用不能缩放的字。

FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled"

FontPath "/usr/X11R6/lib/X11/fonts/100dpi:unscaled"

FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"

FontPath "/usr/X11R6/lib/X11/fonts/Type1"

FontPath "/usr/X11R6/lib/X11/fonts/Speedo"

FontPath "/usr/X11R6/lib/X11/fonts/misc"

FontPath "/usr/X11R6/lib/X11/fonts/100dpi"

FontPath "/usr/X11R6/lib/X11/fonts/75dpi"

再做了这些改变後,重新启动 X。桌面是不是已经比较漂亮呢?

3. X server 命令列选项 (command line options)

下面一件要做的事是调整 X server 的命令列选项。您将会想要用 -dpi 来指定显示的解析度是每英□几点。现在很多的系统使用高解析度的显示器,可能它们将会要用 100dpi。

若您在 console 下启动 X,键入

startx -dpi 100

若您用 xdm 这种图形登录界面,您需要编辑您的 /usr/X11/lib/X11/xdm/Xservers 档。在里面有 Xserver 的命令列。我的文件里有下面这一行

:0 local /usr/X11R6/bin/X -dpi 100 -gamma 1.6

您可在 X 和 Xserver 的 manpage 中找到更多的信息。

4. TrueType 字体 (少数 Windows 做的很好的事情)

因为在 Redmond 的那群家伙非常关心他们软件的外观而不是内容,他们在 Windows 里加上对 TrueType 字体的支持。Window 95 和其它的 Windows 都内含 Arial,Times New Roman,和 Courier New。他们约等於 Helvetica,Times,和 Courier。TrueType 字体是能缩放的,所以它们在放大时很好看,而它们也被好好的调整过,故在缩小的时候依然可读。有许多的 Windows 应用程序附送好几打的 TrueType 字体。先别急著把您的 Windows CD 拿去微波,您得先拿到这些字体。

4.1 xfstt

不幸的是 XFree86 并没有内部支持 TrueType 字体,所以必须自己加入。最简单的方式使用 xfstt,一个没镅的 TrueType 字体服务器。(译注: 这里没镅是 free,严格来说,并不是没镅,而是自由的意思)

Installation

xfstt 安装非常容易。首先从网站上下载 tarball。最新的版本是 http://metalab.unc.edu/pub/Linux/X11/fonts/Xfstt-0.9.10.tgz

有了 tarball後,把它解开

tar -zxvf Xfstt-0.9.10.tgz

然后编译和安装它。INSTALL 档有简单的说明。有个不用大脑的方法 make; make install 就可以了。当做好後,把由各式管道取得的 TrueType 字体拷贝到 /usr/ttfonts 就可以了。键入下面的指令来启动 xfstt

xfstt --sync # 更新 xfstt 的字体数据库

xfstt & # 在背景执行 xfstt

然后键入

xset +fp unix/:7100 # 让 X 使用 xfstt

或是在您的 XF86Config 档中加入下面的指令,让 X 使用这项服务

FontPath "unix/:7100"

调整缺省字体的大小

若您的 TrueType 字体显得相当小,下面的指令可能有帮助

在 X server 命令列加上 -dpi (请参考第 3 章)。

使用 --res 来告诉 xfstt 增加缺省的解析度。用下面的指令

xfstt --res 120

4.2 xfs

xfs 是另一种字体服务器的选择。它已经包含在以 RedHat 为基础的 distribution 中。xfs 是基於 FreeType Font library,提供了类似於 xfstt 的功能。xfs 不只能处理 TrueType 和 Type 1 字体,也可以对付原本的 X 字体。

安装

第一步是将 TrueType 字体加入您的 linux 里。su 为超级使用者,建一个目录来存放这些字体:

mkdir /usr/share/fonts/ttfonts

然后将字体放入这个目录里。您可以从您的 Windows 系统中拷贝过去

cp /mnt/win/path_to_fonts/*ttf /usr/share/fonts/ttfonts/

或是从 Microsoft 直接下载。

这些字体是自解压缩的 zip 档。您仍可在 linux 中安装

unzip

注意字体的文件名必须小写。一个快速又容易的转换方法是将他们拷贝到一个 DOS(FAT16) 文件系统中,然后再拷贝回来。DOS 不处理大写。另一个较像 linuxer 会用的方法是先进入到存放字体的目录下,然后键入:

ls *TTF | while read f

do

[ -f "$f" ] && mv -f "$f" "`echo \"$f\" | tr A-Z a-z`"

done

您在键入每一行得时候会有 ">" 的提示符号,在上述每一行的最后按下 return。 注意标点符号 -- 那些 "backquotes" 很重要。当 TrueType 字体正确安装後,以超级使用者执行:

ttmkfdir -o fonts.scale

mkfontdir

当您字体目录下的内容改变後,重新执行上面的命令。接下来,编辑您的 xfs 字体设定文件 /etc/X11/fs/config 在您字体表中加入您的 TrueType 字体:

catalogue = /usr/X11R6/lib/X11/fonts/misc:unscaled,

/usr/X11R6/lib/X11/fonts/100dpi:unscaled,

/usr/X11R6/lib/X11/fonts/75dpi:unscaled,

/usr/X11R6/lib/X11/fonts/misc,

/usr/X11R6/lib/X11/fonts/Type1,

/usr/X11R6/lib/X11/fonts/Speedo,

/usr/share/fonts/default/Type1,

/usr/share/fonts/ttfonts,

/usr/X11R6/lib/X11/fonts/100dpi,

/usr/X11R6/lib/X11/fonts/75dpi

或是您也可以用 'chkfontpath --add ' 命令来加入字体。当使用时,您或许也会想要更改您的字体的缺省点数。

default-point-size = 140

这让我从缺省的 12 点字变为 14 点字。有些 X 的应用程序使用这个,有些则否。接下来,确定您的 XF86Config 档中的 FontPath 是

FontPath "unix/:-1"

注意 "unix/:7100" 也可以做到,但是在刚出来时无法使用。将所有的 FontPath 用 '#' 让它变成注解,反正你也不用它们了。xfs 的 packages 应该和其它 XFree 的 packages 一起安装了。要确定它是缺省的服务,您可以使用 'ntsysv' 或是

chkconfig --add xfs

现在 xfs 在您每一次开机的时候都会启动。 现在重新启动 X 来读入新的 FontPath。用下面的的方式 启动/重新启动 xfs

/etc/rc.d/init.d/xfs restart

现在您应该有个可以使用的字体服务器了。您可以检查那些字体有被使用

xlsfonts | less

或用 xfontsel 甚至更好的 gfontsel 来检查它们。

5. KDE

在这段日子里,KDE 是在 Linux 和 X 发生过最好的事情之一。它提供了一个一致的使用者界面,让一般大众能够接触 Linux。您可以在 http://www.kde.org/. 找到更详细的数据。为什么我会在这大大称赞它呢? 这是因为 KDE 1.1 有个新特色,能够让您程序的字体和颜色与现在的 KDE 风格一致,这也包括非 KDE 的应用程序。

5.1 应用 KDE 的字体和颜色於非 KDE 的应用程序上

这很简单。只要打开 KDE 的控制中心(Control Center)下面的 Desktop 下面的 style。那里有个选项叫做 "Apply fonts and colors to non-KDE apps"(将字体与颜色应用到非 KDE 的应用程序),打开他,选 OK,这样就好了! 下次您开启许多的应用程序,它们就会像其它的 KDE 应用程序般,有相同的颜色与字体。有些人最喜欢这项特色,但若您不喜欢的话,您也可以将它关掉。

6. 在特定的应用程序中调整字体

6.1 Netscape Navigator/Communicator

Netscape Communicator 对于字体的问题相当的敏感。若您使用缺省的 FontPath,您的字体将会非常小非常丑。您第一件要去做的事情就是修改您的 XF86Config 档中的 FontPath (参考第二章)。使用 100dpi 的字体大大的改善了可读性。您也会想要去检查在 Edit/Preferences/Appearance/Fonts 的字体设定。不选 Font 选项中的 "Allow Scaling" 可以让点阵字不会锯齿状。

若您有 xfstt 或 xfs,Netscape 非常适合使用 TrueType 字体。然而,它不能得体的处理 xfstt 的锐角。在 Edit/Preferences 中,您可以将 TrueType 字体设为固定宽度或是可变宽度,然而当您关闭 Netscape 後,它将不记得您选取的字体点数。若您在开启 X 时未用 -dpi 或是在 xfstt 未使用 --res,您的字体将会很小。当我用了上面两个修正,TrueType 字体真的很棒!

6.2 WordPerfect

即将登场。

6.3 StarOffice

即将登场。

7. 致谢

本 HOWTO 是由 Doug Holland 所撰写

外加 Hal Burgies 的贡献。

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

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

相关文章

易流即时配送_即时大数据流处理=即时风暴

易流即时配送在Ubuntu背后的公司Canonical,每6个月进行一次技术工作,以第一手测试我们的工具并向其他人展示新想法。 这次,我创建了一个即时大数据解决方案,更具体地讲是“即时风暴”。 Storm现在是Apache基金会的一部分&#xf…

c语言有参有类最小公倍数,【C语言】写一个函数,并调用该函数求两个整数的最大公约数和最小公倍数...

程序分析:在数学中,两个数的最小公倍数两个数的乘积/两数的最大公约数。求两个数的最大公约数,运用辗转相除法:已知两个整数M和N,假定M>N,则求M%N。如果余数为0,则N即为所求;如果…

csp真题字符串匹配c语言,CCF CSP认证考试历年真题 模板生成系统 C语言实现

试题编号:201509-3试题名称:日期计算 时间限制:1.0s 内存限制:256.0MB问题描述:成成最近在搭建一个网站,其中一些页面的部分内容来自数据库中不同的数据记录,但是页面的基本结构是相同的。例如&…

osgi架构与linux_OSGi:进入微服务架构的门户

osgi架构与linux在构建可扩展,可靠的分布式系统的背景下,“模块化”和“微服务体系结构”这两个术语如今经常出现。 众所周知,Java平台本身在模块化方面很弱( Java 9将通过交付Jigsaw项目来解决此问题),这为…

引入我们全新的YouTube频道进行视频课程编程

嘿,极客们, 收到社区的反馈并紧贴行业发展趋势,我们非常高兴宣布推出全新的Youtube频道 ! 在我们的频道上,我们将主持与Java编程有关的视频课程,但通常也会进行软件开发。 我们将介绍代码演练以及完整的…

田忌赛马c语言程序设计,还是杭电1052田忌赛马

已结贴√问题点数:20 回复次数:2还是杭电1052田忌赛马//昨天那个算法漏洞挺大,但我重新构思了,但运行到312ms还是wa了。我测试了许多数据,结果是对的,郁闷了,谁能救救我啊?#include&…

ArrayList clone()– ArrayList深拷贝和浅拷贝

示例程序以ArrayList克隆方法为例。 学生对象上的ArrayList深层复制和浅层复制示例。 1.简介 ArrayList clone()– ArrayList深复制和浅复制 。 ArrayList clone()方法用于创建list的浅表副本 。 在新列表中,仅复制对…

南京邮电大学c语言实验报告4,南京邮电大学算法设计实验报告——动态规划法...

《南京邮电大学算法设计实验报告——动态规划法》由会员分享,可在线阅读,更多相关《南京邮电大学算法设计实验报告——动态规划法(12页珍藏版)》请在人人文库网上搜索。1、实 验 报 告(2009/2010学年 第一学期)课程名称算法分析与设计A实验名称动 态 规 …

启动jboss_3种启动JBoss BPM流程的基本方法

启动jboss这一集提示和技巧将帮助您了解根据需要启动流程实例的最佳方法。 规划项目可能包括流程项目,但是您是否考虑过可以启动流程的各种方式? 也许您的JBoss BPM Suite在您的体系结构中本地运行,也许您在云中运行,但是无论它…

单片机控制灯光亮度c语言程序,基于51单片机控制LED灯光亮度并报警

利用pwm控制led灯光亮度大小。可以显示许多亮度等级 到最低或者最高亮度等级会发出报警。设计思路:LED一般是恒流操作的,如何改变LED的亮度呢?答案就是PWM控制。在一定的频率的方波中,调整高电平和低电平的占空比,即可…

将Quarkus应用程序部署到AWS Elastic Beanstalk

Elastic Beanstalk允许在AWS云中部署和管理应用程序,而无需了解运行这些应用程序的基础架构。 使用Elastic Beanstalk,您可以运行可处理HTTP请求的网站,Web应用程序或Web API,但也可以运行辅助应用程序以运行长任务。 Elastic Be…

c语言中rand()%900,c语言 n=rand()%5是什么意思

rand()函数会产生范围为0至32767的随机数,% 让它与5求余,变成0至4的随机数,不过每次启动程序产生的随机数都相等,在用srand(unsigned int)输入种子数后产生的才不一样,一般都用的 srand((unsigned int)time(NULL)) 产生…

gradle 构建应用流程_使用Gradle构建和应用AST转换

gradle 构建应用流程最近,我想在Gradle项目中构建并应用本地ast转换。 虽然我可以找到几个有关如何编写转换的示例,但找不到完整的示例来显示完整的构建过程。 转换必须单独编译然后放在类路径中,因此其源代码不能简单地放在Groovy源代码树的…

c语言malloc calloc,C语言内存管理:malloc、calloc、free的实现

任何一个对C稍稍有了解的人都知道malloc、calloc、free。前面两个是用户态在堆上分配一段连续(虚拟地址)的内存空间,然后可以通过free释放,但是,同时也会有很多人对其背后的实现机制不了解。这篇文章则是通过介绍这三个函数,并简单…

在雅加达EE TCK中使用Arquillian的可能方法

最近,我们讨论了如何创建独立的Jakarta Batch测试套件(TCK)。 对于大多数提交者而言,使用Arquillian将测试从实现中如何执行抽象化是很自然的。 但是Romain提出了一个有趣的想法,即使用纯JUnit5引起了我的思考。 它并没…

c语言怎么循环输入单个字符,c语言 帮我检查一下 输入一段文字,每行用回车结束,文字输入完毕可以使用某个特殊字符作为结束,...

c语言 帮我检查一下 输入一段文字,每行用回车结束,文字输入完毕可以使用某个特殊字符作为结束,0HIDE152019.04.28浏览4次分享举报c语言输入一段文字,每行用回车结束,文字输入完毕可以使用某个特殊字符作为结束&#xf…

gradle发布jar_使用Gradle将JAR工件发布到Artifactory

gradle发布jar因此,我浪费了一两天(只是投资)来了解如何使用Gradle将JAR发布到本地运行的Artifactory服务器。 我使用Gradle Artifactory插件进行发布。 我迷失在无穷循环中,包括各种版本的各种插件和执行各种任务。 是的&#xf…

c++语言 自己构造函数 成员对象构造函数 调用顺序,C++类成员构造函数和析构函数顺序示例详细讲解...

对象并不是突然建立起来的,创建对象必须时必须同时创建父类以及包含于其中的对象。C遵循如下的创建顺序:(1)如果某个类具体基类,执行基类的默认构造函数。(2)类的非静态数据成员,按照声明的顺序创建。(3)执行该类的构造函数。即构…

最新的20多个JMS面试问答(2020)

快速浏览JMS(Java消息服务)常见问题面试问题和答案。 2020年以来的最新问题已添加到列表中。 1.简介 在本教程中,我们将了解2020年常见的JMS面试问题。作为面试的一部分,如果您有6年以上的经验,就有机会在JMS领域提出…

【学习笔记】SAR相关概念

文章目录 1. 基础SAR—复数据转换—多视处理—自适应滤波—地理编码—斜地距转换—地形辐射校正—转DB影像 2. SAR 平差—自动匹配—区域网平差—几何精校正—镶嵌线编辑 3.干涉 SAR(InSAR/DInSAR)—配准—干涉图计算—基线计算—去除平地相位—相干性计算—干涉图滤波—相位解…