openSUSE 11.0出来了,听说比原来漂亮了很多,还引入了KDE 4和Compiz Fusion。想想自己配置好openSUSE 10.2虽然花了很长时间,但这么久没有用过,抹除掉似乎也不心疼。结果openSUSE 11给我的印象很糟糕,主要的问题是Compiz Fusion不能正常工作,另外字体比原来还要更显得虚。思来想去,我决定暂时把分配给Linux的10GB空间还给已经很紧张的Windows D盘(为了这个无损调整空间我提心吊胆了3个小时,因为开始调整大小时我才想到我们楼经常停电的,不过还好,很多邻居都搬走了)。
Linux是一个很优秀的系统,我花了很多时间在上面,虽不说了解到了系统的方方面面,但从图形界面到命令行,基本的操作都已经明白了。我相信,只要愿意花时间,Linux一定可以配置得很好用,而且对我来说没有什么太大的困难在Linux的硅基世界里“活着”。可是,如果说花大量时间转型到Linux只是完成和Windows下面我能完成的同样事情,并附加一点美感的话,我觉得不值。看看我用的软件,倒大多是跨平台的(Firefox,SciTE,LaTeX排版引擎等),可是这也意味着我为了在Linux底下使用他们就又得重新进行配置。更重要的还是Windows下软件的制约:我需要使用MATLAB,而Linux下的MATLAB不很好找破解;公司给我的软件是Windows only的;Linux底下没有极点五笔这样称手的输入法,没有Babylon这样专业的翻译软件,没有Total Commander……
我没有办法改变某些习惯吗?很大程度上是的,但我想说,如果改变某些习惯,去找低一等级或者不同理念的替代品去重新习惯,结果也只不过是完成同样的事情,效率并没有提高多少的话,那么这个过程中花费的时间,是不是用到别的地方更有意义呢?同样是这个问题,在Word和LaTeX之争中我的回答与Windows和Linux之争不尽相同,对前面两个对手来说,我认为LaTeX对我更有学习的意义,因为LaTeX相对于Word的优势正是我需要的(所见非所得=>集中精力在文档内容、源文件兼容性好、严谨性高、输出美观专业),用LaTeX可以大大提高我写文章的能力和效率;相反,Word相对于LaTeX的优势我基本用不上(写短文章方便、字体选择方便、绘制表格与插图方便)。所以我会选择LaTeX,但不排除我建议很多人不要使用LaTeX,因为在他们的排版应用中,Word的优势占重头。说到Windows和Linux,答案也不言而喻了:Linux相对Windows的优势(文件系统效率高、多用户与安全性、适合编程与开发、美观的桌面、免费开源),我很少真正能用上;Windows的优势,光是软件支持一点就让我只能(更多地)留在Windows。
我自问没有仅仅因为跟风而尝试Linux,而是了解到了Linux好在哪里,所以说现在放弃Linux的行为也是清醒的:它(它们)是优秀的操作系统,但只有真正需要用到它们的时候,我才有必要去学习。人生的节奏一旦开始加速,有限的时间就应该更加合理地去把握。
正则表达式中的look(ahead|behind|around)功能是使其强大的重要原因。关于这种匹配方式存在下面几个术语:
positive lookahead
negative lookahead
positive lookbehind
negative lookbehind
positive lookaround
negative lookaround
中文往往会把它们按字面意思翻译,positive和negative翻译成正向/负向,从而有了“正向预查”,“负向预查”的译法,但这显然没有表明出术语的真实含义---positive和negative表示的是检查是否存在这个pattern,positive表示存在,negative表示不存在。或者说检查pattern后的结论,"是"或者"否"。而ahead和behind才是向前/向后,或者正向/反向。关于ahead和behind,也可以从逻辑上来理解:lookahead是预查(文字尚未出现),lookbehind是复查(文字已经出现)。或者延用原来的一种译法,negative 译为“排除”,那么我想positive就可以译为“确认”,negative lookbehind译为“反向排除”,positive lookahead译为“正向确认”,等等
结合起来我认为这样翻译比较像术语:
positive lookahead -- 预查确认
negative lookahead -- 预查排除
positive lookbehind - 复查确认
negative lookbehind - 复查排除
positive lookaround - 双向确认
negative lookaround - 双向排除
这样比英文还要明了一点。
接触到SciTE编辑器跟我的学习有关,当初写LaTeX用的是WinEdt。不可否认WinEdt在编写LaTeX方面的优势:WinEdt的设计相当复杂,有好多功能或许我一辈子都用不到,但这并不是我放弃WinEdt的主要原因,事实上,WinEdt对UTF-8的支持才让我最终割爱。这都是因为我要在学校和家里同步LaTeX文档,由于法语系统跟中文系统保存和显示方面的问题,只有Unicode才是我的不二选择。WinEdt虽然支持UTF-8编码,但复杂一点的字符在打开时就会丢失,这是完全不能忍受的。换编辑器其实对用惯了WinEdt的我来说是一个重大决定,但事实证明我碰巧选择到的SciTE一点也不让我后悔,反而让我有点沾沾自喜。
由于初衷是为了LaTeX文档,所以自然会在CTeX中文论坛上问问其他人用什么编辑器,这时看到instanton和mathmhb的SciTE定制版,下载了下来。当时学校的任务不重,于是仔细看了看这个文本编辑器。SciTE跟我喜欢的LaTeX,Firefox一样,都属于默认功能并不强大,越研究越可以自己添砖加瓦,产生梦寐以求的效果。开始的时候没有多研究,只是在定制版的基础上自己修改了PDFLaTeX的快捷键,并加入了XeTeX的编译选项。但这两个小小的操作让我感觉到,SciTE有相当强的可定制性。
SciTE的另一个特点就是设置文件的可读性,SciTE的诸多设置都保存在纯文本格式的.properties文件中,并且设置使用的语法也比较表面化,一看就能看懂。这让使用Total Commander的我十分满意,因为Total Commander的查找文本功能可以让我轻松地定位到想要修改的地方。在弄明白设置文件的优先级后,很多功能都可以自己修改了。一直到这时,我所做的也只是用SciTE来编译LaTeX文档,但仅此一点就让它成为我学校机器上几乎天天启动的程序。
不久,依然是学习的缘故我开始要编辑和调试C语言程序。最初我希望使用的是Visual Studio 2008,但装上去后发现过于庞大一时不好上手,所以退回来用学校机器上预装的Dev C++。这时我发现Dev C++的编辑器实在是让人难以习惯,首先我最需要的注释/取消注释的快捷键就不能正常工作,而我想到了SciTE中方便的Ctrl+Q的来回切换注释/取消注释。于是我考虑改用SciTE来编辑源代码,并且根据cpp.properties文件设置好了集成开发环境的一些参数,这个过程又复习了一下Makefile文件,Linux底下原来用在Emacs中的Makefile现在一样能用。为C调好了SciTE,才发现SciTE的功能真不赖:缩进指示、语法高亮、自动完成、函数提示一应俱全。写LaTeX文档不容易养成排版的好习惯,因为LaTeX帮你把输出排得好看一般就够了,LaTeX也不能算真正的编程(写LaTeX宏包除外),但写C程序,不排版好代码,自己写的代码都会忘掉。这时还发现了SciTE在细部修改上面的一些贴心功能:行剪切、行交换和行复制。
后来为了处理公司发过来的文本数据开始学习VBScript,用的也是SciTE,但由于VBScript并不复杂,所以默认的功能也大致够用,唯独有一点不能像EmEditor一样为保留字和默认程序(如MsgBox)定义不同的高亮颜色,仔细看了看才知道原来这要在编译SciTE程序之前就声明,所以没去多研究。
到这时对SciTE的了解依然是冰山一角,下面出现了另一个开发环境:Scilab,让我得以有机会再深入地了解一些SciTE。按理说Scilab不能集成到SciTE中,我应该是没法在SciTE中编辑Scilab的源代码后直接调试的,但Scilab自带的编辑器比Dev C++更难用。最后权衡的结果是我情愿用SciTE编辑好了再到Scilab中去调试,因为用Scilab编辑器排版代码要多花一倍的时间和心情。
这时我才开始真正了解语法高亮的原理,如果说语法高亮的颜色是用户指定的,那么如何去高亮代码的某一部则是由lexer来指定的,而这个lexer,就是展示编辑器设计者对一门程序语言的理解的地方。SciTE中默认没有Scilab的lexer,我试着调用MATLAB的,但由于注释字符的不同而失败。这时instanton告诉我只要照着MATLAB的lexer改一改就行,那么我想不得不去看看SciTE的源代码了。开源的东东上手很难,但没有什么神奇的,一切实现过程都通过源代码展示出来,诚然Documentation是少了点,但只要肯花时间,是能看懂的。下面的过程就是用SciTE自己来编辑SciTE的源代码,经过instanton关于双斜杠的提点,我写出了Scilab的lexer并编译出了属于自己的SciTE程序。不久,又被告知还是要去用MATLAB,这下好,几种编程语言一块用,则更需要用一个统一的编辑器了。MATLAB的编辑器功能上并不弱,可偏偏居然不支持ClearType字体,不能用consolas还有什么用,继续用SciTE编MATLAB吧。由于要长期面对代码,自然把白色的背景换成了暗一点的苹果绿。
当我真正要开始编程的时候,另一个问题出现在我面前:光标移动和细部修改。我是一个很懒的人,我认为要讲求效率的话,打字的时候双手是不应该离开主键盘区的。虽然我可以准确地用右手打中次键盘区里面的Home/End/PgUP/PgDN和四个光标键,但有时为了移动出一个括号去这样实在是不值得。我不习惯Vim的一键移动功能,开始怀念起Emacs,当时在Emacs底下编程的时候,光标的移动是很方便的(虽然有个笑话说Vim的用户笑Emacs的用户需要CTRL和ALT的两个脚踏板)。我也想在SciTE中实现这些功能,这时才认真去研究SciTE内建的Lua脚本,仔细看了看高人们原来就写好的脚本,“搬运”了好多Emacs类型的快捷键,打造出一套自己的配置来,如上下左右,行选定,行搬运,移动/选定到行首行尾,按单词进退/选定和删除单词,连Delete键我都搬运到了Alt+D上,这样基本上用不着次键盘区了(只是目前还在适应中,不时还用Shift+上下来选定)。继续发现SciTE默认的功能如Ctrl+F3(查找选定单词),插入书签的功能方便在文档中跳来跳去,增量搜索也是必不可少的,相信在以后,Ctrl+E(检查匹配括号)也会成为维护括号类编程语言(C语言)的利器。快捷键一多起来还真有点记不住,我干脆打印出来帖在墙上……
另外一个功能是挺晚才发现的(相见恨晚!)——缩写功能。SciTE的缩写功能我已经专门单开了一篇文章来讲述,总之,这个功能能延长人的有效生命……
感觉最近花了相当多的时间在打造SciTE上,很熟悉的感觉,就像自己在一点点地为Firefox学习JS正则表达式,一点点地为XeTeX学习字体调用一样,对它了解得越多,它就越听话。我想下面要继续学习的是SciTE的Lua脚本语言,因为懒,我已经学了批处理和VBScript了,看来我还想更懒吧……就如同文章标题说的,今天花两个小时学一个命令,将来会为我省下几天的时间。
目前发现SciTE还存的不足就是没有分割屏幕的功能,而这个功能在源代码中就没有,有时在对比维护程序的时候是相当麻烦的。
自从迷上了收集和研究字体后,去国外的论坛的共享网站下载了几GB的字体。价值不菲的字体,光收藏着自得其乐似乎太浪费了,而平时写电子文档的机会也并不多(加上对Minion的热爱似乎让其它的字体也没有用武之地),所以屏幕显示方面使用的字体反而成为了主要研究的对象。
我平时使用的标准文本大小是12pt,Windows在这个尺寸下,如果没有hinting(字体微调)技术的话,即便打开ClearType,字体也依然会发糊。或许有gdi++这样的第三方渲染引擎,但试用gdi++后我感觉它还是把字体弄得太粗,而且占用的系统资源不是一般的高。在这个前提下,真正能显示良好的字体只有带hinting的TrueType字体了。从技术层面来看,大部分TrueType字体使用下面的设置:0-6pt: smoothed; 7-13pt:hinted; 14+:smoothed and hinted。相反,OpenType字体则都是0+就smoothed and hinted,自然不适合显示。
首先要说一下,本文讲的都是西文字体,中文字体我看遍了也只有宋体(我指的是SimSun)最适合屏幕显示,所以中文我想我再不用找寻了。
Windows操作系统中默认就带了很多微调良好的字体,比如Tahoma, Arial, Verdana和Georgia,前面三兄弟是无衬线(sans serif),后面的Georgia是衬线字体(serif)。有一点常识的人都知道,在小尺寸下系统对衬线的显示会力不从心,所以衬线字体很难有发挥的空间。不过,粗衬线(slab serif)字体还是不错的,因为它们的衬线的宽度够粗,能显示出来。话虽这么说,多少人在用Time New Roman看网页上的文章啊……
本文介绍的字体很多来自于Will Harris大师的介绍Georgia和Verdana一篇文章,http://www.will-harris.com/verdana-georgia.htm
其中提到的很多字体确实相当不错。此外的字体都是我自己用肉眼去尝试和评判的。还有一点是,我操作系统是Windows XP,打开ClearType级别到1600(还没打开的,不管你是液晶还是CRT,为了视力都赶紧去打开吧)
本文介绍的字体,我用FontExpert在12pt大小生成了预览报告,到时候会想办法找地方传上去。写这篇文章是在EmEditor中写,一边写一边切换到相应的字体看效果,写评价。下面按字母序介绍:
### 无衬线类 ###
- Avenir:一般般吧,虽然名气比较大,在很多pdf中见过。显示的效果比较扁,高度不够。
- Blueprint:Harris介绍的一个字体。挺活泼的,只是有点偏淡,粗体效果还可以。
- Calibri
- Candara
- Corbel:上面三个C开头的字体是微软ClearType家族的,我不太明白微软为什么要开发三个这么像的字体。都用的是不齐线数字,可是12pt时都偏小(注,这里的偏大偏小都是跟12pt的Tahoma,也就是大家最熟悉的字体的尺寸来比较)。我觉得Candara比较柔和,Calibri锐利一些,Corbel没有什么个性。
- Consolas:这个等宽字体也跟上面的“头文字C”兄弟一样是微软的字体,由于等宽,用做屏幕文本的确不太合适,但介绍它的原因是因为写程序代码用它实在太棒了。它也是头文字C字体集中唯一免费下载的,赶紧用它来替代代码编辑器中的courier new吧。
- DejaVu Sans:这个是Bitstream的免费字体,也是很多Linux发行版的默认字体(是Vera系列的升级版),因为里面字符集相当全,单个字体的尺寸达到了500kB。试用了一下,发现虽然里面带了2500多个kerning pairs,kerning的效果反而不太理想(过犹不及?)。DejaVu Sans Mono是很多Linux程序员的推荐字体,但我还是喜欢Consolas多一些。(杂:DejaVu这个名字我很喜欢,因为在我身上也总是发生既视性现象。)
- Gill Sans MT:学校的法语系统中默认有这个,但中文系统中没有。这个字体还可以,斜体设计得不错。
- Helvetica:用得特别多的字体了,几乎不用介绍也知道,没有Arial的地方就有它。
- Humanist 777:自己淘到的一款Bitstream字体,效果很锐利,我用做任务栏显示。
- Incised 901 BT:也是在Bitstream字体中发现的一款,非常逼近Tahoma的效果
- Lucida Grande / Lucida Sans:Lucida Grande是的确很“大”,在显示的时候行距都加宽了,只是它显示不出一些中文的字体,比如全角冒号。Lucida Sans嘛,没有kerning pairs,效果不太均匀,但Lucida Sans Italic却很漂亮。
- Myriad Web:这是我全面用来替换Tahoma的字体,它的效果非常棒,据说和微软的Segoe UI一样是模仿Frutiger的,可是我这个列表中甚至没有Frutiger字体。Myriad和Minion是Adobe用得最多的文档字体,而为了屏幕显示专门设计的Myriad/Minion Web一下就抢占了我的视线。
- Neo Sans:很新发布的一个字体,有点生硬,看久了会累,优点是很饱满,高度也够。
- N.O.- Perfect Kiss:这个字体吸引人的名字让它进入我的视线,效果还是可以的,比较窄一些。
- Optima:大名鼎鼎的Optima,无衬线中的“准衬线”,在12pt的位置上略微有点淡,行距也比较大。我比较推荐GE Optical,虽然一看后者几乎是无耻地照抄前者,但效果确实要好一些。
- Page Sans:在字体论坛下载回来后让我眼前一亮,随后拍案叫绝的字体,我就把它安排给了我的Total Commander用。Page Sans设计得相当清晰,但大写的U在12pt上依然表现出左粗右细的精美效果。Page Sans还配着不齐线数字,非常有型。
- Palatino Sans Com:另一个让我振奋不已的大作,Palatino的衬线字体胖胖的非常可爱,但由于衬线太豪华,显示效果一般。被设计成无衬线后,原来的圆滑风格得以保留,虽然有点小,但行距的增大让阅读文本更方便。由于跟12pt的宋体相比更矮些,夹杂几个英文单词在中文中的效果挺特别的,所以目前经常在Google Talk聊天时使用。
- Proxima Sans:我以为它跟FontExpert的出品公司有什么联系才试了试它,现在感觉一般。
- Sassoon Sans:Harris推荐的字体,小巧玲珑,活泼的程度跟前面的Blueprint相似,但不会那么淡,行距加大。
- Stone Sans:名气不小的公司Stone出名的同名主打字体。不过,我是用了Medium尺寸才觉得够粗的。配合不齐线数字。
- Swiss 721 BT:Harris推荐的字体之一,大小写高度差比较明显,字母e显得特别圆润。
- Zurich BT:又是Bitstream公司的杰作。跟Swiss挺像的(名字也都跟瑞士有关),kerning效果各有千秋。
### 衬线类 ###
- Cambria
- Constantia:上面这两个是“头文字C”中的衬线字体。Constantia多一组不齐线数字,比Cambria好看些。只是Constantia 粗/斜/粗斜中居然都没有数字,估计是我收集的这个版本有问题。
- Egyptian 505 Medium BT:论坛上有人求这个字体,找来后发现确实不错。粗衬线字体,“削”出来的效果很漂亮。
- Esta:DSType公司的作品,细细的衬线处理得相当好,笔划既不会发虚也不会粘在一起,不齐线数字1用的是英文I的效果,多少有点偏艺术型。
- Georgia:微软精心设计的字体,打开ClearType后才能看到它最美的效果。目前我写电子邮件用Georgia,相信既能让别人眼睛一亮(相比Times, Arial和Courier),通用性又很强。
- GeoSlab703 Md:跟上面的Egyptian比,GeoSlab更早进入我的首选列表,大小写字母的高度差和行距都很大,很适合阅读大段的纯文本英文说明。字母y的末尾都是向右推出去,跟Minion相同。
- Maiandra GD:原来在看一篇pdf文档中就认识了这个活泼的字体,用来打印信件一定很不错。没想到在12pt时也表现得十分优秀,字体圆润饱满,在小尺寸上依然展示出丰富的线宽变化。聊天一定也是不错的选择。
- Memphis:名字来自美国一城市,是Harris推荐的字体,粗衬线,比Egyptian和GeoSlab细了一些,大字T也有点左右不等。
- Minion Web:我最爱字体的Web版,不过总觉得14pt才能显出它漂亮的笔锋,Minion小写y的右顿收笔是我最欣赏的。
- Page Serif:Page Sans的衬线版,笔划特别粗,跟宋体放一块比就接近粗体了。阅读大段文本应该很不错,写文章也值得推荐。
- Caecilia:Harris推荐的衬线字体之一,只能说是中规中矩。
- Serifa:这是Harris自己常用的屏幕字体,也是粗衬线,效果有点像在看Courier,个人觉得看久了会累。
- Stone Serif:Stone的衬线版。衬线表现力十分出众,尖的尖圆的圆,方寸空间利用到了极致。为了好看选用的同样是带不齐线数字的Medium版。
- Zapf Elliptical:字体大师Hermann Zapf在1952年设计的字体,由Bitstream推出,曾经是Linotype报纸所用的字体。想必“超椭圆曲线”是一个技术含量很高的东东,视觉效果也的确很舒服。
这篇文章的字体巡礼在这里
字体下载链接
- Windows外观主题(Dogmax):Myriad Web, 10pt
- Aston开始菜单:Minion Web, 10pt
- Aston任务栏:Humnst777 BT, 8pt
- Aston时钟:Consolas, 10pt
- Total Commander:Lucida Grande, 8pt
- Google Talk:Calibri, 12pt
- 再加上在LaTeX写文档中的最爱——Minion Pro!
XeTeX确实能够很方便地调用字体的特殊属性(Text Figures,Ligatures),但自从开始用XeTeX,就发现一个问题,那就是这些特殊的功能虽然能够被看到,却不能够被复制到。比如说在XeTeX中这样写:
\setmainfont[Numbers=OldStyle]{Minion Pro}
在生成的PDF文件中,无法复制/搜索不齐线数字,如果用齐线数字则正常。同样,对ligatures(连字)的支持也有问题,fi,fj和fl连字复制不到,可ff,ffi和ffl就能复制出来。查了一圈XeTeX的文档和相关的文档都没有查到,何况,在fontspec的说明文档中,这样的问题同样存在(不齐线数字复制不到),另外XeTeX Companion里面倒是没有出现连字的错误,只是我没有Goossens的源代码。
看腻了Windows的默认字体,我开始学着了解其他字体,在成为字体迷之后,对字体的选择也出苛刻起来。我认为,电脑的显示字体用无衬线比较舒服,文档(如pdf)和打印字体选择衬线字体则更加适合阅读,对写程序来说自然是等宽字体的天下。
中文Windows XP默认的显示字体是中文宋体(Simsun)英文用Tahoma。事实上这个选择也是被动型的,即在桌面属性-外观-高级中,默认选择的字体是Tahoma,只不过碰到中文字体的时候,由于Tahoma中不含中文,故而选择系统默认的中文字体宋体。如果主动选择宋体的话,由于宋体中带有英文字符,看到的效果将相当难看。Simsun对显示中文来说我觉得足够棒,即便Vista中引入了雅黑,我还是觉得宋体是看不腻的。Tahoma也是挺棒的,清楚美观。让我看腻了的应该是网页显示中的Times New Roman,这个字体在打印方面的效果或许比较好,但在屏幕显示方面乏善可陈。此外,无衬线的Arial字体亦不如Tahoma好看,可由于习惯的原因Arial运用得几乎跟Times一样广泛。
使用Firefox浏览器后,对字体的设置比IE大为详尽,故而我有机会尝试用不同的字体来优化网页的显示效果。和想像的不同,曾经打算使用Myriad Pro这个专业级的字体来作无衬线,可它在小尺寸下的显示效果发虚,和它的衬线兄弟Minion Pro一样。选来选去,还是Tahoma胜出。不过,微软在Vista中引入的Calibri,Candara,Cambria和Corbel(不知道为什么这几个风格相近的无衬线字体都要C开头,很难记的……)也很不错,这几个字体和Tahoma比要偏小一些,所以没有用来显示网页,但横向空间的利用更合理了些,不会像Tahoma显得很窄,所以我用了Calibri给Google Talk的显示,Emeditor用的也是Calibri。
Emeditor很长时间都用的是Georgia,不过Georgia字体要在打开Cleartype后才会显得饱满。Blogger默认的模板都使用的是Georgia字体,'g'的圆润,'y'的小勾和一组不齐线数字是Georgia的亮点。不过由于上面提到的几种微软字体也带有不齐线数字,所以我在纯文本的Emeditor中暂时试用一下。
显示字体和纯文本方面无衬线字体优势较大,可到了富文本的世界,衬线字体的优雅才展现出来。这里面有老牌的Garamond,Bembo,胖胖可爱的Palatino,也有Adobe免费发放的Minion Pro,Myriad Pro,其中Minion Pro更是得到了LaTeX用户的重视,为它制作了LaTeX的Metrics和宏包,目前我LaTeX文档都默认采用Minion Pro宏包。XeTeX出现后,对于专业字体的使用达到了一个新的高度,而衬线字体的功能往往比无衬线字体要丰富得多。
程序设计是枯燥的工作,如果没有一种舒服的字体,则更容易在代码中晕厥。程序代码和人类的语言文字不同,程序代码往往由变量,数字和标点符号配合着不等的缩进和注释来呈现,所以也不能按照文字排版的视角来看待。由于程序代码的美观标准之一就是两行之间某些元素的对齐,所以在程序代码中使用等宽字体能够让代码显得更均匀更可读;相反,等宽字体如果用在文本中,则会显得既生硬又臃肿。大部分编辑器默认都使用长期以来的标准等宽字体Courier/Courier New,但这个字体看久了容易累,因为它的粗衬线显得比较夸张,加上对数字0没有特别处理,并不是完美的程序代码字体。我目前选择的是微软的Consolas字体,也就是上面的C家庭字体中的等宽兄弟,他继承了Lucida Console的优点,看着清爽稳重并且是为数不多有斜杠0的免费字体(微软的网站上提供下载)。此外,Linux下面的Vera Sans Mono和后继的Dejavu Sans Mono也都很不错,毕竟是经过多少Linux程序员的苛刻遴选的。
不过,要让字体尤其是新型的字体显示出应有的美感,千万别忘了打开ClearType哦(即便是CRT显示器,效果也是相当明显的),除了上面提到的Georgia,微软C家族,微软的雅黑就专门是为ClearType而生的,关掉ClearType的话他们将因为Aliased得厉害而变得像Fixedsys一样难看。
昨天才发现Minion/Myriad有专门为屏幕显示设计的版本:Minion Web和Myriad Web,两个都是TTF,包含在Font Folio 9 CD中。两者的效果都还不错,只是,同样12pt在Emeditor显示得不错,在Firefox中显示得却偏小。选来选去,我发现还是只有Tahoma适合做网页字体,配上Georgia作为衬线字体。
对了,忘了说,本Blog的字体设置如下:模板设置中Body Text:'Tahoma',Verdana;其他标题和日期字体使用了Tahoma, Verdana, Trebuchet MS。考虑到Minion Web不普及,这篇Entry的字体使用了Palatino Linotype,一般系统中都自带了。Minion/Myriad Web到这里下载。
看到很多人都在Blog上介绍自己用的Firefox扩展,还有“十大”、“二十大”扩展介绍的震撼标题,作为一个精通Firefox的用户,也觉得有必要写一写。
我使用的是Firefox 3.0pre,事实上我是从Firefox 3.0开发的中期加入Nightly使用者行列并一直更新到现在的,在此之前,由于2.0的使用已经足够方便,加上我觉得浏览器毕竟是浏览器,只要浏览功能正常,就没有必要关注太多。但事实上Firefox 3.0引入的实用和新鲜的功能让我毫不后悔选择了经常性地更新(并面对新Bugs)。版本的升级让扩展又一次成了Firefox爱好者心急的对象。从开始用3.0到现在,有些扩展紧紧地跟住官方Trunk,有些扩展即使不更新也一直可以用,有一些功能失效的找到了替代品,还加入了一些新的功能。现在手头的Firefox 3和一年前的Firefox 2相比真的是焕然一新。
- Adblock Plus 0.7.5.3+.2008040421: http://adblockplus.org/
- Adblock Plus Watcher 0.9+.2008032400: http://adblockplus.org/
- Adblock Plus: Element Hiding Helper 1.0.2+.2008011108: http://adblockplus.org/
上面这三兄弟是Adblock Plus一家的,ABP是从我用Firefox开始就首先认识到的广告过滤扩展,不过当时是Adblock,后来衍生出的Plus,现在大家基本上都是用它。当时很疯狂地正则表达式,现在网上还流传着自己写过的文章。慢慢地,广告过滤的规则已经慢慢成型,我便很少去调整这个扩展的设置,而只是让它默默地在后台工作着。但是,这绝对是必不可少的Firefox扩展之一
- BBCode 0.5.2.2: http://www.mrtech.com/extensions/#bbcode
方便插入论坛代码的扩展,对泡坛子又喜欢格式化文字的我很有用。这个扩展目前被MrTech接手过来开发。原来还有一个能很方便转帖的bbcode formatting extension扩展,已经失效,至今没有更新过,也没有找到合适的替代品。
- ChatZilla 0.9.81: http://chatzilla.hacksrus.com/
IRC扩展,个头很庞大。原来用单独的mIRC,后来看见Firefox中能实现干脆就装上的扩展,现在用IRC的人应该很少很少了……
- Context Search 0.4.1: http://www.cusser.net
在右键菜单中添加一个搜索引擎菜单,这样在网页上选定文字后直接可以右键中选择需要的搜索引擎。挺不错的功能,补上了搜索引擎关键字搜索的不足(必须自己打搜索词)。本来有一个更酷的扩展(drag & dropzone searching),选定文字后一拖动就会出现一个网格把屏幕分隔成代表不搜索引擎的区域。但这个扩展跟Drag de Go冲突,后者的功能我更需要,只有割爱。
- CustomizeGoogle 0.71: http://www.customizegoogle.com/
对于几乎天天要使用Google搜索的我,这个扩展很必要。主要用得上的几个功能是:1. 锁定使用偏好,这样无论是什么后缀的Google域名,无论我有没有登录Google帐户,搜索的偏好都是一样的(例如每页100项结果,英文Google界面);2. 过滤搜索结果。有一些网站并不是恶意网站,但比恶意网站还干扰搜索结果,比如要收费的技术网站,二次搜索网站和收费P2P资源站。这类站点以骗钱为目的,却因为关键字涵盖量之大,总是出现在靠前的位置。3. 去除广告和Google推荐,这个自不待言,都是为了让搜索结果更接近搜索的初衷,少浪费时间。
- Dictionnaire MySpell en Français 1.6
法语拼写检查
- DOM Inspector 2.0.0: http://www.mozilla.org/projects/inspector/
Firefox默认集成的扩展之一,开发者和Firefox Hacker必备。对我来说虽不是必备,但考虑到应该有机会用得上,也便没有卸载。
- Drag de Go 0.2.5.1: http://forums.mozillazine.org/viewtopic.php?t=440259
超级拖拽功能。对于习惯中键点击的我,拖拽链接几乎是已经忘记了的习惯。对我而言,DdG主要还是用来拖文字搜索,拖图片/扩展保存,拖链接调出菜单在外部的IE内核中打开(这就基本上省了IETab)。强大的方向性和自定义的文件夹列表功能——很好很强大。
这个扩展早就在Firefox 3.0中失效,作者没有更新,不过开源的优势得以让某个爱好者进行了小小的修改,这个扩展起死回生至今。
- FireGPG 0.4.9: http://www.getfiregpg.org/
最近两天研究GPG(或者PGP)加密装上的扩展,纯属好玩。
- Flashblock 1.5.6a: http://flashblock.mozdev.org/
由于Firefox目前没有原生的Flash支持,碰到Flash多的网站很容易假死或减速,默认不下载Flash是不错的主意,但要是用Adblock把*.swf全部B掉,想打开又麻烦。Flashblock会在Flash的位置上放一个播放按钮,需要看的时候才看。白名单功能,让你不会错过Youtube这样非广告Flash站。
- FlashGot 0.8.9: http://flashgot.net
调用外部下载器的扩展。由于外部下载器种类繁多,这个扩展的升级频率等于下载器升级频率的总和,也应该是升级最频繁的扩展了。它基本的功能是使用Firefox不可或缺的,而建立图库的新鲜功能,只用过几次。
- Foxmarks Bookmark Synchronizer 2.0.44.14: http://www.foxmarks.com/
同步书签的扩展。同类的扩展一定不少,选择它其实也出于不得已。在学校工作的时候,其实是很少修改自己书签的,所以与其同步,不如用Google Notebook来记载。可后者最近几乎失效了,只好暂时装上书签同步扩展。不过,能把自己的书签放在网站上也提高了自动的移动能力(Portability)。类似的有Mozilla官方出品的Weave扩展,目前还很初级,但据说在4.0中会成为默认的功能。
- Gmail Notifier 0.6.3.2: http://www.nexgenmedia.net/extensions/
Gmail已经成为我的主力邮箱并且看Gmail的发展趋势,即使有一天收费,我也不会离开Google。所以我必须要能随时随地知道有没有新邮件。原来用的是Gmail Manager,但在3.0的扩展失效大潮中,GM首先倒下了,GN走在了前面,而当我装上GN的时候才知道它已经实现了GM的多账号功能。所以,即便GM重新兼容3.0,我也没有转回头去。
- Google 笔记本 1.0.0.19(目前失效中): http://www.google.com/notebook
在我眼中,Google Notebook是Google实验室最优秀的产品(没有“之一”)。以至于另一个着眼于和其它在线书签抗争的Google Bookmarks也并入了Google Notebook。没错,Google Notebook的初衷并不是在线书签,而它最终比在线书签还要强大。期待这个扩展重新兼容Firefox的一天。
- Greasemonkey 0.8.20080408.1: http://www.greasespot.net/
油猴子脚本大师。为高手设计的扩展,能够通过脚本来实现无数的功能。该扩展称得上是“生成扩展的扩展”,因为有些脚本的功能已经达到了扩展的水平。
我使用的几个脚本:Google搜索关键字红色显示。因为英文版的Google只是用粗体来强调关键字,不够显眼。要是按照Google Toolbar的多色高亮法,容易头晕。为这个简单的功能不至于装Google Toolbar。原来还装过All-in-One search button,被这个脚本淘汰了,一个脚本淘汰两个扩展,GM的厉害可见一斑。只是由于跟Firefox的关系太紧密,GM需要经常更新才能不失效。
- Locationbar² 1.0b1: http://en.design-noir.de/mozilla/locationbar2/
一个主要是eye candy的扩展。把地址栏的显示效果优化——强调主域名(防钓鱼),加大分段宽度,淡化子网域,分节可点击。
- Menu Editor 1.2.3.3: http://menueditor.mozdev.org/
个性化菜单项的扩展。虽然一直没有更新,但一路带过来都没有失效。
什么?在我顺手打开主页的时候,我才发现,这个2007年3月最后一次更新的扩展在昨天2008年4月8号又更新了(1.2.4)!
(该作者的另一个重头扩展是Download Statusbar,2.0中曾经非常喜爱,可惜在3.0中早早失效,加上3.0对默认下载管理器的更新,让我最终觉得没有必要用回它了)
- Metrics Collector 2a6: http://www.google.com/search?q=Minefield%20Metrics%20Collector
原名是叫Spectator,收集匿名的使用习惯信息,帮助开发者了解用户并优化软件。作为Nightly Tester,这样透明地作贡献何乐不为?
- Mouse Gestures Redox 1.9.20080318: http://www.mousegestures.org/
鼠标手势扩展。鼠标手势用的人喜欢到不行,不用的人完全看不上,所以目前还没有成为Firefox的内建功能。相关的扩展有All-in-One gestures,我2.0时是用它,3.0开发到某个Beta时,AIOg突然失效。对完全依赖鼠标手势的我,这简直是panic。于是换到了Mouse Gestures,功能上更开放一些,支持自定义手势。此外还有FireGestures,更省资源。目前AIOg,MG和FireG都已经兼容3.0。
- MR Tech Toolkit 6.0a28: http://www.mrtech.com/extensions/local_install/
这是一个大型的扩展包。一个扩展涵盖了47个小扩展的功能,连我在2.0中一直使用的Nightly Tester Tools,也被它淘汰。虽然装上它后Firefox会有比较明显的降速,但权衡一下,是完全值得的。
- NextPlease 0.6.6: http://nextplease.mozdev.org
论坛、搜索引擎的翻页扩展。再也不用去找那个小得不行的“下一页”按钮了,跟鼠标手势配合起来非常好用。
- OpenSearchFox 0.1.5
添加搜索引擎的扩展,有了它,我的搜索引擎列表暴增到20个,Context Search也因为这个扩展显得有用了。
- PDF Download 1.0.1.1: http://www.pdfdownload.org
这个扩展的出现改变了PDF链接总是调用内建的Acrobat(reader)查看从而减速的局面,对PDF链接弹出提示让用户选择。目前该扩展卖给了Nitro PDF Software。
- Regular Expressions Tester 1.0.8.9: http://sebastianzartner.ath.cx/firefoxExtensions/RExT/
测试正则表达式的扩展。要是在当初研究Adblock时有它该多好,我也不至于去在外部的测试工具中测试自己写的表达式了。现在装着完全是备用。
- ScrapBook 1.3.3.2: http://amb.vis.ne.jp/mozilla/scrapbook/
保存网页的扩展。功能十分强大,保存下来的网页也是原汁原味(占空间也不小)。对于重要的信息,保存到书签并不好,网站可能失效。所以,当场存到硬盘上。
- SecurePassword Generator 0.5.4: http://mozmonkey.com
我比较喜欢密码,这个是用来生成随机复杂密码的。只是好玩而已,跟前面的FireGPG没法比。
- ShowIP 0.8.06build0210: http://code.google.com/p/firefox-showip/
在状态栏显示当前网站的IP,很简单的一个功能。
- Tab Mix Plus 0.3.6.1.080406: http://tmp.garyr.net
多标签浏览增强型扩展。或许有人说Firefox2或者3的多标签能力已经足够,装TMP这么个庞然大物(比MrTech Toolkit还大)不值得,但我需要的功能(标签栏放下方,高亮当前和未读,标签进度条,单窗模式,防下载空白页和自定义是否后台或激活)加一块儿也真非TMP不可。可惜也是经常失效的扩展,好在作者onemen知道自己的扩展很流行,从而十分关注Firefox的开发,对得起众多的支持者。
- TinyUrl Creator 1.0.4: http://mozmonkey.com/
利用TinyUrl服务简化冗长的网址,非常实用的功能。
- Tweak Network 1.1.2: http://www.bitstorm.org/extensions/tweak/
该扩展用来Boost Firefox的网络性能,在ping值低的网络中效果特别明显。
- xyzproxy 1.16: http://xyzboard.com/
网络代理扩展。Foxyproxy的功能更加强大,用户也不少。由于我在功能上要求不高,所以只用它也就够了。
进展缓慢的Google Talk终于在最近发布了一个实验室版(Google Talk Labs Edition,以下简称GTLE)。
其实没有什么特别的新鲜东西,只是引入了Gadget的一些元素(群聊,表情),界面成为了Gadget的样式,有点Flash的味道,在联系人上点右键已经不会出现菜单,为了调出设置菜单,需要在Systray图标上点右键,而这个设置菜单亦是简单到不能再简单。
没有了语音和文件传输功能。事实上这两个功能也只有双方均使用Google Talk客户端才能正常使用,事实上Google允许用Gmail和Gadget两种登录方式,加上非Windows系统中只能通过XMPP/Jabber来登录,这两个功能几乎没有生存空间。
GTLE并不是Google Talk的升级版,安装采用了Google惯常的强制安装(即没有任何选择),安装的位置居然在C:\Documents and Settings\$USERNAME\Local Settings\Application Data\Google\Google Talk, Labs Edition下面(天哪,逗号都出现了,是不是在做梦)。到安装目录下看了看,软件界面是XML写成的,图标文件全部拆散了和dll存放在子目录下,外面有一个EXE程序。或许是好事。
这个版本大力介绍的是和Calendar的集成,也就是说Calendar的提醒会通过GTLE发给用户。这也是GTLE唯一的新亮点吧,其它Gmail和Orkut提醒只是界面上卡通化了点。
最令人期待的隐身功能(已经出现在Gmail chat模块中)并没有出现,这个GTLE给人的感觉有点桌面版Gadget的味道,事实上我并不喜欢Gadget,我觉得Google Talk更像一个正常的Windows程序。但愿Google能把Gadget的功能往Google Talk里面融合,而不是朝另外一个方向发展。
Google Talk发展的缓慢真的让人很失望,现在的about:里面还写着2005-2006 Google,依然是1.0.104……
乱蓬蓬的图标?这Show的是XeTeX中调用Zapfino字体中的9个Variant(变体字型)。XeTeX是一个TeX引擎,最初在Mac系统下使用。它的一大优点就是良好的Unicode支持和简易的字体调用。正如前面的日志写到,LaTeX中安装字体相当麻烦,而XeTeX的出现让Mac用户首先尝到了直接使用系统字体的甜头。后来XeTeX被Port到各个主流平台上,鉴于我一直在Windows下面使用MiKTeX系统,在MiKTeX 2.7 Beta 5 开始集成XeTeX后,我考虑再三升级了自己的MiKTeX。
字体调用方式的改变,使得原有的代码需要进行相应的调整,好在原来安装字体用的是fontinst,这样字体是用宏包方式载入,没有冗余的字体选择代码夹杂在正文中,要修改起来并不算难。XeTeX有一个经典的宏包fontspec来进一步把字体的调用表面化,查阅这个宏包的说明文档后就基本上知道如何使用字体了,为了达到预期的效果,有时要加上几处修正:
\XeTeXinputencoding "bytes"
\XeTeXdefaultencoding "bytes"
%这两条用于修正汉字的编码长度
\XeTeXlinebreaklocale "zh"
\XeTeXlinebreakskip = 0pt plus 1pt
%这两条用于修正汉字断行问题
\defaultfontfeatures{Mapping=tex-text}
%启用tex风格字符,主要是---和--的组合字符
\usepackage[cm-default]{fontspec}
%默认使用Computer Modern系字体,后面可以使用
\setmainfont[Numbers=OldStyle]{Minion Pro}
%来调整正文英文字体,但有了cm-default后,页码会使用CM字体而不是难看的LM字体。
\usepackage{xunicode}% provides unicode character macros
\usepackage{xltxtra} % provides some fixes/extras
hyperref宏包选项中加上xetex,去掉pdftex或者dvipdfm,否则pdf书签乱码。
西方文字方面,如果要在tex文档中直接输入法语重音字,需要把文档按UTF-8编码保存。此时,惯用的WinEdt不能很好支持UTF-8编码,只有考虑换编辑器,这时我选择了轻型、可定制的SciTE,坦率地说,SciTE不好上手,像Firefox一样,刚刚拿到手时你根本不知道它能干什么,同样需要慢慢地配置和扩充才能发挥它最大、最贴心的作用。一边配置SciTE一边实践着XeTeX,西文方面已经可以发挥出OTF字体的优势了,要集成自己很喜欢的Adobe Minion Pro再不需要用fontinst去创建无穷的Type 1字体,而这个Minion Pro比原来Type 1 Minion还要更新、更全。不过在字体上,XeTeX也不是没有缺点,抛开和某些宏包不能很好结合外,它对Computer Modern字体的调用也跟LaTeX的习惯有些不同,比如用\up指令放到上标的文字。
中文方面的工作要更复杂一些(不过在中文系统下文件无需用UTF-8编码):前面提到断行、编码长度的问题都有被XeTeX的作者考虑到,但具体到中文的排版,还是要靠CTeX论坛的高手们,为此,在那里出现了很多具体的解决方案:jjgod的xcp,yindian的zhspacing,孙老师的xCJK和xCCT。刚开始时是因为孙老师的TeXfriend中有给WinEdt添加一个XeTeX编译按钮,装了TeXfriend,自然在其中发现了采用xCJK宏包的例子,但当我尝试了一下后发现,XeTeX的中文编译速度好慢啊!30几页的文档要高cpu高内存地编170秒。生成的文件质量当然是令人很满意,但这个速度够呛。询问了好几次,今天听孙老师说是因为xCJK宏包的处理方式本来就慢,对应到XeTeX来就更慢(XeTeX编译普通英文文档也比LaTeX慢,估计是调用字体的方法不同),用xCCT会快一点。折腾了半天改用xCCT宏包,果然快多了,17秒(10倍!),相应地又要做一些修改,不过有了XeTeX,中文方面真的省事多了。在我看来,PDF中只有集成TTF中文字体才是王道,因为Type 1字体对中文来说来复杂,渲染速度也很低。(更新:孙老师优化了xCJK,速度现在跟xCCT一样了)
最近还解决了一个西欧编码的问题:学校机器是法语系统,里面默认用西欧编码保存tex文件,拿到家里来就是乱码,编译倒是没问题,但编辑起来太累了(看不清混杂着乱码的单词)。本以为是WinEdt非Unicode程序造成的,但用SciTE打开问题依旧,看来还是系统内码问题,只有彻底走上UTF-8路线才能一劳永逸,为此,tex文档要相应地改变一些:
- inputenc宏包的选项由latin1改成utf8x-- \usepackage[utf8x]{inputenc}
- fontenc选项依然是T1字体-- \usepackage[T1]{fontenc}
- 为了保证hyperref生成的pdf信息没有乱码,在导言区hyperref宏包出现之前需要加上一条神奇的\PrerenderUnicode{é},看起来好像只是指定了é字体,实际上所有法语重音字符全部解决了。这个也真是巧合,是在PDF作者、关键字出现的一堆乱码中找到的“Please insert PrerenderUnicode...in preamble”……
- hyperref中加上unicode的选项。
- 文件保存成UTF-8编码,为保证在SciTE中正常显示打开,不要添加UTF-8签名(BOM)——这一条折腾我好久啊。即使是这样,由于没有UTF-8签名,在SciTE中依然需要手动切换显示编码,不过比起只有看着乱码进行编辑,这只要看一眼就也还算省事了。

