下面通过一个例子来介绍如何制作一个Office Ready的字体。
在浏览字体的时候看上了Compatil Fact,兴高采烈地装上,打开Firefox一看:
四个字体没有被组合到一起,换句话说,常规/粗体/斜体/粗斜体之间没有关联,无论是网页中的还是Word里面的Ctrl+B等,都无法调用相应的字体。
可事实上这个字体的设计并没有错,打开Win7的字体目录,它们确实归在同一个家族。Photoshop/Illustrator这样的软件里的效果也相同。
实际上这是一个难以两全的问题。简单说,Word/Firefox遵守的是规则可俗称为“Office 4字体规则”, 即常规/粗体/斜体/粗斜为一组。这是一个比较保守和传统的字体家庭结构,在这个结构下无法变更字重和字宽,换句话说一家最多四口。而对设计者而言,一个 字体大家庭远远不止四口,而是存在着Thin, Light, …, Ultra Bold, Black的字重变化和Compress, Condensed, …, Extended, Extra Wide的字宽变化。Compatil Fact这个字体虽然目前只有四个字形,但它的设计已经前瞻性地考虑到了添丁进口的问题,它遵守的规则可以俗称“大家庭规则”。
但是我现在只是想把这个字体制作成显示字体,而不是给Photoshop用,为了方便,我可以使用Fontlab调整字体使之“Office Ready”。
- 把四个字体用Fontlab打开。从Regular开始,点File-Font info(Ctrl+Alt+F):
- 为了不和原版混淆,我把Family Name改一下,改成Compatil Fact Office
- 然后点击Build Names(绿色钻石图标),自动生成了新的名称
- 然后切换到OpenType-specific names点一下Build Opentype Names。最后点OK,Regular就修改完成了。
- 下面是Bold,打开Font info后是这样
问题就出在这里,Family Name里面就多了Bold,而4字体规则要求的是Family Name要相同才被认为是一家。所以跟上面一致的话,家庭名统一改成Compatil Fact Office。
- 另一个重点是要勾上“Font is bold”,然后点Build Style Name,再点Build Names
- 然 后再重复“4”里面的步骤一次。细心的人应该已经理解,大家庭规则是靠这个菜单,也就是OpenType-specific names来维系的。点Build Opentype Names这个步骤只是为了在改成4字体规则后,象征性地遵守一下大家庭规则。其实上不会影响Office Ready字体的生成,因为后者是由Basic set of font names决定的。
- Italic和Bold Italic类似,但是我还是把截图放上来。
- 全 部改好,点了OK之后,回到Fontlab,点菜单File-Generate All。设置好Format(推荐TrueType/OpenType TT,这样生成的字体有分级Hinting,即使不用Mactype也有更好的适应性(这才算Office Ready)。选好保存路径后点Start。
- 在生成过程中碰到这样的提示,选Compiled,其实Binary也无所谓。
字体就生成好了,虽然文件名还是没变,但是字体名已经变了并且Office Ready了。再看Firefox:
自《字体迷的显示字体推荐》(以下简称“原文)”一文已经过去3年半的时间了,对字体方面有了不少新的认识,再回头看这篇文章时,觉得有很多值得更新的地方,有些甚至是勘误。于是决定再写一篇文章。
时过境迁,很多观点会随着使用的软件和审美观的不同而变化。原文中一上来就说“中文字体我看遍了也只有宋体最适合屏幕显示”,事实上,一者这几年黑体越来越流行,Windows有雅黑,苹果有丽黑/华文黑体,Linux有文泉驿正黑/微米黑,手机操作系统上也大力使用黑体。其二,由于加入了极限论坛,我开始使用和研究gdi++(Mactype)字体渲染,它让字体的美感一下就提高到了一个新的境界。在有Mactype的时候,黑体的美观程度就相当于拉丁的无衬线字体。而事实上宋体之美,或者说原文中提到的“宋体”之美,事实上是局限于ClearType配合点阵宋体,那个严格上来说真的不是宋体。真正的宋体跟拉丁的衬线体一下,在小尺寸下表现能力有限,即使是用Mactype渲染,也是灰蒙蒙的效果,看着吃力。
由于有了Mactype,TrueType字体内建的hinting也可以被无视,OpenType字体同样可以被直接使用。事实上Mactype使得字体的屏幕显示效果大大接近字体真实的效果,很多字体都“化腐朽为神奇了”,从这个意义上来说,字体之间的比拼又回到了字形设计上,而不是依赖于文件格式。但Mactype并不是系统的标配,在很多情况下如果一个字体有良好的hinting,它就有了良好的适应性,这在下文Office ready字体中会提到。
原文中一些错误和值得商榷的地方:
** BitStream字体的含糊命名:
- Incised 901 BT = Antique Olive,它的显示效果也并非“非常接近Tahoma”
- Swiss 721 BT = Helvetica,我居然没有认出来……
- GeoSlab703 = Memphis
- Humanist 777 = Frutiger
- Blueprint
- Maiandra GD
- Sassoon Sans
- Stone Serif
- ZapfEllipt BT
- Optima (GE Optical)
- Memphis
选择屏幕字体的一些标准
- 空间利用。在小尺寸下,字体必须要合理地利用空间,在这方面不用再多说无衬线比衬线的优越性,但即使这样,Gill Sans却依然不如Georgia易读。
在有Mactype的介入下,少数衬线体的确也值得一试,这里推荐Georgia, Cambria, Minion Pro(或者Web Pro)和Times Europa Office。
需要说明的是Mactype的渲染会让字符变粗,这时又成就了无衬线字体的一大优势——字重。在Regular显得拥挤时,很多Sans字体都有比Regular更细的Light版用来匹配。 - 简洁明快。不想用“易读性”这个概念,因为它太泛。简洁明快指的是字体的个性不宜太张扬,尤其不能有一两个字符漂亮得让人每看见它就不由得停下来欣赏一番——这影响了文字内容的转达。Helvetica为什么成功?因为它像空气一样。不过这也是一个见仁见智的问题,因为看久了之后就会习惯的……
举例我现在正使用的Thesis Sans Office,Thesis Sans是很优秀的字体,但它的大写Q的尾巴是悬空的,每次看到,确实会不由自主多欣赏两眼,好在英文中大写Q出镜率不高,可法语就大不相同了。难怪Thesis Sans OT里面有3种关于大写Q的替代字。 - 特色字符。刚刚说了不要字符太有个性,为什么马上就来了个“特色字符”?这里主要是针对几个字符的典型写法上的区别。例如:小写a的单/双层版,小写g的单/双圈版,大写G横杠的处理和衔接,大写I是否带双杠,等等。
单从字符看似乎是这样,实则它们往往是区别Humanist Sans和Geometric Sans的标志。Humanist Sans比较流行使用双圈g(Thesis Sans),Geometric Sans的大写G往往就要更圆润(Neuzeit Office)。另外,Humanist Sans的优势在于独立的斜体,这也是为什么我非常推荐Myriad而非Frutiger,Segoe而非Lucida Grande的原因。独立的斜体用作强调的时候,比伪斜(Slanted)更容易被发现,也显得更有个性(没错,被强调的部分应该要多一点变化)。同样是这个原因,我对Sans Grotesque有点逃避,从而也很少提到Helvetica/Arial和Din。 - Office ready: 4字形。对于屏幕字体来说,Regular, Bold, Italic, Bold Italic是最好的搭配,因为网页字体一般也就只使用这标准的四个字形。这也是为什么近些年出现一个新概念“Office ready字体”(在极限论坛推荐过),主要的出发点就是适合网页显示和Word排版。简而言之,在Word里面可以用Ctrl+B和Ctrl+I来访问。
如果你看上了一套字体,而它的命名未必符合上述规则。这时最好用Fontlab自己修正一下(重点就是在字体信息中合理地勾上“Font is bold”和“Font is italic”),并生成四个TrueType版再安装使用。如果Light是你的基准字重,你甚至可以把它强制定为Regular。具体操作。
但是如果一字体连这4个字形都无法提供的话还是扔了吧,因为网页和Word中都使用的是伪粗和伪斜。
原文提到的字体中,我依然推荐的有
- Avenir:在原文中是比较消极的口气,但现在感觉这个字体非常清晰,强烈推荐。Avenir Next和Avenir在做屏幕字体时没有太大的差异。
- Calibri
- Myriad Pro/Myriad Web
- Georgia
- Minion Pro/Minion Web:一定要开Mactype哦!
- Thesis Sans Office:Humanist风格,偏向柔和。
- Neuzeit Office:Geometric风格,偏向硬朗,跟Avenir有相似之处。事实上它是Din Neuzeit Grotesk演变而来的,也就是减少了Grotesque的成分,合理地走向Geometric。
- Times Europa Office:Times是永恒的经典,但是Times New Roman对人是一种伤害,所以,喜欢Times的,换这个吧。
- Compatil Fact:Compatil事实上是Linotype重金开发的大家族。光拿无衬线版的Office 4字形来做网页显示,就看出制作水平的精良:清晰、和谐、易读。
- 首先确认4个字形符合Office Ready标准(否则用Fontlab自定义)。
- 然后安装,或者用FontExpert的Activate Temporarily Now功能,不好看的话省得卸载。
- 用Firefox选择字体后,打开 www.lipsum.com ,先读那些介绍文字,测试字体能否太有个性而让人无心阅读正文内容,然后点Generate Lorem Ipsum生成没有意义的赘文,可以快速了解字体显示大段文字的屏幕灰度(与字符的空间利用直接相关)。再去浏览几个外文网站。当然用记事本保存一段测试文本也是可以的,只是我觉得那种测试太纯粹,只能测一种颜色,一种尺寸。
好的屏幕字体就像老婆,首先她漂亮,但却不张扬;她有很多动人之处,可能你都已经看习惯,但依然能感受到那种整体美。
你冷不丁想瞟一眼的女生,往往只是一两个特点吸引着你,如果天天看,全方面地跟她在一起生活,你会发现其实她那一两个优点掩饰了她很多的缺点,一如漂亮的Swash容易造成行间重叠和整体灰度不均匀。
更为重要的是,这些优点属于字体本身,它们无法有效地帮助传达文字的内容,这就是为什么这种字体更适合引人眼球的Logo。相反,两个人的生活中不免充斥着柴米油盐,这些内容必须要一颗包容和体谅的心才能装得下——就像一个简约淡定的字体。
我曾经因为Firefox的缺点和Google Chrome的吸引,放弃了Firefox一个多月,在这一个多月中我用一个重度Firefox使用者的心态(简而言之就是“能不能”的心态,而不是“快不快”)去配置和使用了Google Chrome,在这里分享一下自己的经历和感触。首先要说的是因为Firefox 4.0的吸引,我又把Firefox变回了自己的默认浏览器。
为什么暂时放弃Firefox?
Firefox 3.7a1 2010-02-14版后引入了新的图标,但是这组浮雕状的图标在我机器上严重拖慢了Firefox的界面和菜单响应,甚至影响了网页打开的速度。症状就是CPU一直居高不下。该问题一直没有得到解决,我也曾经尝试新的配置文件使用0214之后的3.7alpha,但是效果一直不理想。
为什么开始使用Google Chrome?
要放弃Firefox肯定得有一个能替代的浏览器。老婆一直在使用Iron,我一直是抱着“她的需求比较简单所以Google Chrome就够了”的心态,自己并不使用它。后来看到Google Chrome的扩展中心真的提供了很多好的扩展,于是开始认真地对待Google Chrome,看看能不能把它打造成“自己的浏览器”。
Google Chrome的卖点是速度,这一点在刚刚开始使用的时候得到了很好的体现。尤其是我之前用Firefox开Gmail,Google Docs等Google的重度AJAX服务非常痛苦,有时关闭Gmail后,浏览器都会假死好久。这一点对Google Chrome来说是得心应手的,毕竟Google Chrome的跑分能力在那儿摆着。如果说Google Chrome在功能上能够齐全一些,它就会吸引我去用。
真正让我开始使用Google Chrome的契机,乃是字体。Firefox的字体设置非常完备和明了,而Google Chrome的字体只能用 *惨不忍睹* 来形容,我这篇文章如果有一个相当苛刻的词汇,就得用来形容Google Chrome的默认字体。好在找到了Chrome Stylist扩展,用CSS把Google Chrome的字体锁定为Myriad Pro + 微软雅黑。我这才开始愿意用眼睛看Google Chrome。
Google Chrome的优势
冷启动快:这一点毋庸置疑,所以说,需要快速开关浏览器的话,Google Chrome的优势明显。
添加/禁用/启用扩展不用重启。这个是我目前认为Google Chrome最值得借鉴的地方,如果有了它,Firefox一样可以大大缩短启动时间。但是架构的不同让Firefox不可能直接把这个概念搬过来,而只能先通过Jetpack来实现一些简单的扩展。
Google Chrome的不足?
使用它一个月后,我又被Firefox 4.0吸引回去了。为什么我会这么快又放弃Google Chrome?除了一方面自己已然是Firefox的长期用户外,Google Chrome的一些不足让我又可以舍弃它。
** 资源开销巨大 **
Google Chrome是以速度为卖点的。在刚开始用的时候,倒没有觉得速度上的巨大优势是以什么为代价的。直到装了一堆扩展,把它打造成“自己的浏览器”之后,才发现每次启动时CPU风扇响个不停。冷启快不假,点下按钮到界面出现只要3~5秒,如果是无扩展的Google Chrome,界面出现基本上就是能用了。但是我至少有10个扩展是随浏览器启动的(其余有一些备用,因为Google Chrome启用扩展不用重启),这些扩展加载的方式是一个扩展一个chrome.exe进程,需要相当一段时间。也就是说,从界面出现,到真正可以把光标放到地址栏进行输入之类的操作,还要卡住5秒左右。
真正重要的是内存的占用,Google Chrome除了扩展单进程外,每个网站也是单进程的,任务管理器中一排的chrome.exe累加起来,我2G的内存都显得吃力。我不是任务管理器症候群,也一直认为内存闲置着不如不用,但是Google Chrome开着的情况下,再开一个Photoshop做设计,多休眠/唤醒几次之后,就会频频出现“计算机内存不足,请关闭Adobe Photoshop”的提示,而在使用Firefox的时候我甚至可以Photoshop和Illustrator同时开着。
在扩展装多了之后,Google Chrome打开标签页也频频出现一卡一卡的现象。Firefox也存在这个现象,应该是相应的扩展对页面内容进行处理需要额外的CPU开销。在硬件配置不变的前提下,这属于资源占用和软件功能不可调和的矛盾,但至少说明简单地换一个浏览器并不能解决问题——在功能提高之后,Google Chrome的速度也有比较大的下滑。
此外,Google Chrome对磁盘空间的消耗也比较大:在用户数据目录下有几个History Index文件和一个Thumbnail文件,到目前为此他们加进来已经达到了341MB。看来现在不用诟病Firefox的places.sqlite和urlclassifier3.sqlite了。
** 功能和易用性 **
转去Google Chrome本来就是因为它在功能上的提高,这方面是值得称道的,毕竟Google的号召力吸引了大批的扩展作者。Chrome扩展中心里面也有很多优秀的扩展(下文会提到),相信Google Chrome在这方面还会继续进步。但是目前来说,Firefox的易用性和可扩展性依然对我很有吸引力。举个例子,Google Chrome的网页右键菜单至今依然是神圣不可侵犯的禁地。而对于一个普通的电脑用户而言,右键往往是最直接的“功能触角”,没有了它,调用很多功能将是相当复杂的事情。
以Tineye反向图片搜索扩展来说,在Firefox里面,装上了之后只要对某个网页图片点右键便可立即呼叫这个搜索引擎。可是Google Chrome的右键不可侵犯,于是Tineye为它设计的同名扩展在安装之后,便会在工具栏生成一个Tineye按钮,在某网页看到自己想找的图片,你需要点击这个按钮,然后该扩展生成一个新的弹出式窗口,里面包含了该页所有的图片,然后,你去选中你要的那一张吧……说实在的我还蛮佩服Tineye的开发人员解决问题的能力,可是Flashgot(或同类下载器调用扩展)的作者们似乎仍然在捉襟见肘中,目前Google Chrome调用外部下载器依然是比较困难的事情——事实上我在用Google Chrome的这一个月中,凡是要调用外部下载器,我情愿打开那个很慢很慢的Firefox 3.7a1。
Context Search的同名扩展,实现的方式是在你选中任何文本的时候自动出现一个小箭头,让你选择搜索引擎,这些搜索引擎需要你自己独立配置,而不是直接调用Google Chrome的搜索引擎。说起来Context Search想自动调用Google Chrome的搜索引擎也的确有难处:Google Chrome的搜索引擎往往是自己识别某个网站的搜索引擎代码后不加提示地加入到用户的搜索引擎列表中去的,这个功能我不能说它就不好,至少它让用户不需要自己学如何添加搜索引擎,但是用户还是需要在此后的地址栏输入中慢慢发现它们。
其余诸如BBcode这类很依赖右键的扩展都已经没有了自己的容身之处。
此外扩展想改变浏览器本身的一些行为也很难。例如Ctrl+Tab的顺序问题,在诸多使用多标签的应用程序中,Ctrl+Tab的顺序是MRU(Most Recently Used),即用户可以通过反复按这个组合键(按一次后放开Ctrl)来在两个标签页之间切换,通过不放Ctrl连按Tab,在最近使用的标签页之间切换(或者按标签页的左右顺序切换,由某个about:config选项进行控制)。然而Google Chrome却无论如何都是按标签页的左右顺序切换,试想在两个标签页之间进行一些文字的复制粘贴,通过Google Chrome实现进来很难,不过我倒是找到了一个偏方:放弃Ctrl+Tab,而把另一个标签页拖成一个单独的窗口,这样可以用Alt+Tab来切换,后者是系统级的快捷键,遵守MRU。
Google Chrome的地址栏合并了搜索栏的功能:书签、历史、搜索全部整合。有它好的一面——简约并节省空间。但是也有不足:提示条目太少,使得有时想找书签找不到,有时想找历史找不到。在Firefox中,首先提示的条目数可以自己定义,其次提示的内容可以加以限制(例如不显示匹配的书签条目)。最关键的一点:Google Chrome的书签没有Tag功能,大部分时候我无法通过地址栏找到我要的书签。
** 某些扩展 **
在这一个月的使用过程里,鼠标手势和平滑滚动是我认为Google Chrome比较不足的扩展。关于平滑滚动,我承认我有点先入为主,毕竟自己已经习惯了Firefox的平滑滚动(浏览器自带,并非扩展),但是Google Chrome默认的滚动效果我没法接受,几个平滑滚动扩展实现的效果也不好。最好的扩展应该是YASS的Chrome版(Chromium Wheel Smooth Scroller),但是这个扩展在我的机器上使用时,一是会有“滚动到页面外”的奇特效果(在Ubuntu下的Firefox上用YASS,也是这个效果),二是会受到鼠标手势扩展Chrome Gestures的影响,后者自己也有一个平滑滚动的参数,而且即使不启用,也依然有效果,除非整个扩展给禁用了。最终只有割爱,放弃了平滑滚动扩展,只使用鼠标手势扩展和它自带的平滑滚动。
但是鼠标手势的流畅感和功能性依然无法比拟我在Firefox中用的Mouse Gestures Redox。例如:滚轮手势不能用来灵活地切换标签页,取而代之地是出现一个列表。在有新标签页占用资源时,浏览器会卡住,导致手势失灵(不过这一点Firefox也是一样的,依然是硬件能力的问题,因为系统繁忙的时候也有可能无法处理连续的键盘和鼠标动作)。另外Google Chrome的扩展设置页面看着像一个标签页,事实上不具备普通标签页的特性,一个明显的例子就是鼠标手势不可用,往往会影响迅速关闭一系列标签页的动作。
** 号称的功能(暂时)没有效果或没有实用价值 **
* 独立进程
Google Chrome一个很吸引我的功能是多进程:一个网站的所有标签页共用一个进程(并非一个标签页一个进程),这个进程崩溃了,浏览器的其它标签页不会崩溃。相比于Firefox一杆子打翻一船,这个功能能减少崩溃带来的损失,例如论坛发帖白写几千字。
不过很可惜,用 Google Chrome的一个月,这个功能基本上没有享受到。预设的情况是,如果只有一个标签页崩溃,Google Chrome会给你一个深蓝底的页面,中间是一个类似“囧”字的图标,刷新即可显示这个崩溃的标签页。事实上我基本上没有碰到这种情况,我碰到的全都是“Chromium has crashed,restart now?”,点重启,会提示你是否恢复崩溃前的标签页。可是这一点Firefox也完全不赖啊:除了内存不能为read/written这种“硬”崩溃,只要崩溃管理器来得及捕捉到崩溃信息,就可以恢复标签页。而且这也不是Google Chrome的卖点。不仅如此我还发现,想看这个“囧”得不行的小人也不是没有办法:把网络切断,Google Chrome马上给出一排扩展崩溃的信息,这真的有点奇怪。也就是说,在关机之前,如果忘了关Google Chrome,则100%出现崩溃的提示。
相比之下,同样是整个浏览器崩溃掉,Firefox做得更好一些,如果可以进行崩溃恢复,在文字编辑框中写的文字很有可能可以保留,而Google Chrome则肯定无法保留。
不难想像要实现标签页独立的安全保护(多线程?)还有很长的路走,所以说我暂时不期待Firefox实现该功能了。
* 同步功能
Google Chrome有着Google得天独厚的同步功能,书签同步早已是默认的功能,最近的新Builds中又加入了扩展同步,让Firefox的fans们好不眼馋,但是平心而论,这两个功能都还是刚刚起步。书签同步利用的不是Google Bookmarks,而是一个Google Docs的暂存档,并且无法直接查看网络上存放的书签。这一点Xmarks做得更好些,可惜Google Chrome和Firefox书签格式的不同(尤其是没有Tags)使得用Xmarks来在两个浏览器之间同步也显得不太可能。
扩展同步则吸引了相当多的眼球,为了测试,我在Windows 7和Ubuntu Linux底下各安装了最新支持同步的Chromium 6.0版。在Windows 7下先打开同步功能,然后到Linux底下启动Chromium——的确很快,扩展一个个不加提示地就被装上了。不加提示?对,不加提示。这让我有点担忧,不加提示,你知道我想从哪台电脑同步到哪台电脑呢?我在A机器上删除了一个扩展,是马上被B机器的版本同步回来,还是到时候B机器上那个相应的扩展在同步过程中被删除?
目前还没有扩展设置的同步,我想这才是用户比较关心的。但是,通过长期使用Xmarks,我自己也觉得同步这种事情是相当复杂的,所以暂时也不再对这功能望眼欲穿,我情愿要一个优秀的备份扩展。
** 其他 **
在使用Google Chrome的过程中,经常会出现一崩溃,扩展就没了的现象。例如,我之前还挺喜欢Google Chrome的把Application shortcut功能,也就类似于Firefox之前的尝试——Prism。用户可以把常用的网站例如Gmail生成一个快捷方式,双击后打开一个没有地址栏的窗口直接访问相应的Web App(在Win7中可以直接Pin到任务栏)。不知道为什么后来就不能正常工作了,例如我任务栏有一个Google Task的Application shortcut,在Google Chrome运行时,点击这个快捷方式直接会造成Google Chrome崩溃。再重启Google Chrome后,就会丢失一系列扩展。需要去Chrome Extensions Center一个个装回来,虽说扩展设置并没有丢,但不能不让人担心。何况最要命的是Google Chrome不像Firefox,备份一个配置文件目录到时候拷贝一下就行了——我至今没有找到方便的方式能通过备份还原把Windows下的配置同步到Linux下去。
** 缺少交流讨论 **
这也是我用Google Chrome越用越孤独的原因。我以为Google Chrome的得势,相应地在国内会有比较热闹的讨论区(我的参考是Ubuntu,小红伞,卡巴斯基),可是我搜索了一下,国内有两个论坛是比较热门的Chrome论坛,我在两个论坛都注册了,可惜,有一个论坛用Chrome自己都无法登录,遑论发帖交流。另一个论坛在我注册的时候,主讨论区已经7天没有人发帖,查看了一下帖子内容,我想知道的都没有。
Google Chrome的优秀扩展
作为Firefox用户,能在Google Chrome找出的优秀扩展不多,也不足为奇。Chromed Bird是我印象最深的Twitter扩展,它的功能性和易用性远远超过了Echofon(Twitterfox)。另外是一些Google服务的扩展,例如Unofficial Google Task,DayHiker(Google日历扩展),Reader Plus(Googel Reader强化)都是不错的推荐。Ultimate Chrome Flag是一个集成了IP地址解析/国旗/PageRank/Alexa Rank/WOT信息的大型扩展。至于其它,不是逊于Firefox,就是Firefox中已有类同。
为什么回到Firefox?
那是因为Firefox 4.0b2pre。虽然暂时淡出了Firefox的世界,但是还经常回到Firefox中文社区看看讨论,不经意间看到Firefox 4.0的发布。其实在开始用Google Chrome之前,我一直试着用新建配置去尝试2010-02-14之后的几个3.7a1/a2版本,但是那套新图标始终让Firefox的界面响应缓慢。但是Firefox 4.0给我的第一印象是足够快,我开始的时候还跟自己开玩笑说,嗯,图标少了好多,所以不觉得慢了,后来发现不只是这样。我又跟自己说,装多了扩展肯定会慢一点的,可是Google Chrome装多了扩展照样慢啊。于是我说服了自己来看看这个4.0b2pre。
界面上变成了标签页置顶,除了标题栏没有隐藏,已经很像Google Chrome了。这一点我在很长时间都不太赞同,我比较习惯标签页在底下,不过好像Mozilla团队已经彻底关上了这扇门,标签页不再可能放底下了。好在(笑),使用Google Chrome的这个月我已经习惯了标签页在上面……界面简约了一些,开始时略微有不适应,主要是菜单栏不见了,橙色的按钮里面又没有全部的菜单选项,后来才发现可以按一下Alt调出来。我对界面要求不高,屏幕面积多一点,少一点,不是要命的事情,但是如果要优先牺牲性能去搞界面,我觉得有点本末倒置,因为Firefox本来就不太快。
但是这个Firefox 4.0给我的印象是很快!最明显的是之前提到的类似“关闭Gmail后,浏览器都会假死好久”的现象不复存在了,从地址栏输入Gmail地址到看到信件列表只要3秒不到。再装上Adblock之后,很多页面都是眨眼间就打开了。诚然,比起裸体Google Chrome的点链接后秒开还是略有延迟,但是已经大大接近了,尤其是最后渲染页面的视觉效果非常好:一瞬间全部显示出来,完全没有原来的那种自上而下显示出来的印象。而且我听说Google Chrome快的方式是DNS预读,我查了一下也不太理解它的原理。
我又试着装了几个扩展,我承认在装扩展的时候我显得有点谨小慎微,生怕这短暂的迅捷马上毁在Firefox的扩展臃肿手里,而我之前是一个使用50多个扩展的人。即使是现在我也不能确定装回这么多扩展是不是会把Firefox 4.0拖回到原来那个Firefox 3.7,但是经过了使用Google Chrome的这样一个真空期,这个新的Firefox 4.0暗示我也需要改变自己的一些习惯,去尝试着从纯粹的“能不能”的心态过渡到“能不能+快不快”的混合心态。
结语:
如果前天有人要我推荐一个浏览器,我会问对方是一个喜欢速度的人(Google Chrome)还是功能的人(Firefox),如果今天这个人再问我,我会说,用Firefox吧。
2%的市场占有率,这是写本文前不久听说的。
不管受到了来自Linux世界自身的多少反对,Ubuntu对这个百分比的贡献是难以磨灭的。之前让我放弃Linux的是openSUSE 10.2,而让我回来继续使用的是Ubuntu 8.10,为什么?
时至今日,Linux的用户群依然是Geek为主,作者Firefox和LaTeX的熟练用户,我不可能不是Geek,但我要说为什么回来继续使用Linux,我的答案是:更好用。在Geek的眼里,Windows是给傻瓜用的,所以才好用,才会有这样那样由于好用带来的负面效应,诸如安全性、速度等等;而Linux则往往被高手拿来炫耀。诚然Ubuntu把Linux的使用门槛降低了很多,但要装上一个Linux,调整到适合日常使用,没有强烈的探索精神和极高的耐心是不可能的,而更多的时候,有些人只是玩玩它并拿Compiz Fusion来鄙视Aero。
在这里要反思一下自己一直持有的一个观点:对没有任何电脑基础(像我的长辈们一样),那么学Linux和学Windows的难度是一样的。很遗憾自己电脑中毒甚久,无法自己回答这个问题,却又没有机会拿父母来做测试,更何况自己教Windows都未必教得好,Linux还是一知半解,根本无法对比教学成果。即使学Windows的难度跟学Linux一样,我开始用电脑就走上的是命令行并最终成为Linux高手,这也只是证明Windows的卫道士没有足够的证据死批Linux难学,却并不能证明这世界上不用Linux的人要转去用Linux有多容易——习惯的力量太可怕了。
微软不可能为双击安装软件申请专利,可这这的专利却注册到了数亿人的心中。Linux该怎么办?不是任何问题都有两个旗鼓相当的解决办法,在最优的解决之道已经被占据时,只有尽量向对手学习,有鉴于此,Linux世界有了软件源的概念,把开放和简便的优点集中到了一起。这仅仅是一个例子。
Linux的目标是什么?各人有各人的想法,因为Linux的载体(发行版)太多。而最让我不习惯的注解,就是“Linux要战胜并消灭Windows!”。类似的现象有很多,往往是一群使用新兴的免费软件的用户(7-zip,Linux,Firefox)叫嚣着要消灭它们的对手,而对方往往是垄断级别的商业软件(WinRAR,Windows,IE)。这像什么?太平天国?很想知道,报着这种心态的卫士们看到xx软件在终有一天战胜对手,自己成为孤家寡人的时候,会如何面对新的挑战者呢?所幸Linux社区没有输在自我膨胀,如果Linux是社会主义,那么现在的它是中华人民共和国,不是朝鲜民主主义共和国——重要的是放下姿态去向对手学习,失去了对手,博弈就变成了俄罗斯方块,只有以失败来结束。Windows在学Linux的安全理念,像Vista的UAC,诚然是给Windows的用户带来了不少不适,但是微软并没有迁就用户:想要调整UAC?先证明自己除了知道双击还知道控制面板。Linux也是一样,只不过是反方向:想要装软件?除了./configure make外,现在可以用图形界面的新立得、YAST……
自由是Linux的信条,它为Linux的今天奠定了基础,却也给它带来了相应的麻烦。首先是发行版之争,我曾经看见有人不遗余力地在任何关于Ubuntu的帖子中大声疾呼“一个没有自己技术,把别人东西拿来打包炫耀的版本,不要使用!要用就用Fedora……”云云。Linux有太多的外沿,以致Linux社区内部就已经起了纷争,太多人容易把一些细小的问题上升到“Linux精神”层面。有精神是好的(因为我至少没有听过什么Windows精神),但若只剩精神没有“物质”,那不奇怪它总是非主流(难怪没有什么Windows精神)。
那要不要有人扛旗呢(因为Ubuntu的支持者号称要一统Linux江湖来跟Windows斗争)?扛旗并不能解决什么:假设Ubuntu要变得Windows一样“易用”,它可以在短时间吸引大量的用户,累积起虚假的繁荣,但最终又不免要把Windows的毛病全面地复制到Linux,自由的精神又无法得到体现。这几年搜索Ubuntu的比搜索Linux的还多,这种涨势是Canonical喜闻乐见的,却是Linux世界的隐患。不过就像我前面说过的一样,Linux并不是也不该是为了战胜谁,故而Linux发行版之间的竞争也会更多地导向良性的一面,它刺激着Linux世界的发展和演变,我想未来的Linux世界不会出现统一,但至少会逐渐出现明朗的分类(沙盒型、大众型、服务器型等等)。因为一方面,自由的探索让Linux时时刻刻有机会为Geek用户带来最新的理念,促成沙盒版;另一方面在Linux的探索和发展中,必定会有不够成熟的例子要被淘汰,开源的理念会像自然界的一样,把最优秀的留下,给大众和服务器带来安全和稳定。
打开魔盒——Firefox每夜版(Firefox Nightly Builds)介绍
Tagged_by_kmc
Firefox, hourly, nightly, download, update, 每夜版, 小时版, 每小时版, 更新
为了减少不必要的阅读,请先判断自己是否适 合/有必要用Firefox Nightly Builds(以下简称FNB)
这类用户的特点包括但不限于:
* 就是喜欢测试最新Firefox,把Firefox浏览器不光当浏览器用
* 不折腾会死或者不折腾就难受:有耐心和足够的心理承受力(相信我,征服Firefox的过程绝对是一个有普遍意义的软件学习和个人提高的过程)
* 既然要折腾,显然得了解如何保护自己:具有一定的电脑知识,例如知道Firefox配置文件夹在哪里,知道Firefox多配置是怎么回事,知道备份
* 知道碰到问题可以通过搜索和交流来解决,知道如何在虚拟世界中交流
* 懂一点英语,会用英语搜索(会用英语提问则更好)
如果你确定要使用,那么下面的文章请 -全 -部-看-完-
什么是FNB(Firefox nightly builds,火狐每夜版)?
Firefox是一个开源的浏览器,有着强大的开发团队和社区支持。Firefox还是一个变化和发展着的浏览器——新功能的引入、旧功能的改进/废除、 性能的提升……这一切都需要一个强大的团体,来测试、反馈并参与浏览器的成长历程,有鉴于此,出现了FNB(后来还出现了Hourly Builds,简称FHB):每一天(几乎是每一天),Mozilla的编译机器都会把当前最新的Firefox代码生成各个平台下的FNB,放置在 FTP上供下载测试。事实上FNB有各种形式的衍生,本文在此不进入具体的细节,仅仅关注下面目录中的文件:
| 代码: |
| http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/ |
根据我的经验,这个URL在很长一段时间会保持稳定不变,所以最新的FNB在这里可以提货。
以下以Windows用户为例,其他系统用户类似。
下载
在上面的目录中下载命名为firefox-%version%-en-US.win32.zip的文件,其中%version%是目前最新的开发版本号, 在本文(2009年5月18)写作时,%version%=3.6a1pre,其中
3.6等于目标版本号(根据经验,这个版本号也不一定是最终版本号,但是既然已经用FNB了,知道自己用的是最新的即可)
a1=alpha 1,第一个alpha版
pre估计指的是preliminary
安装
下载回来一个ZIP文件,不考虑术语的精确性,这个压缩包可称为一个绿色版的Firefox——免安装。你可以把它解压到合适的目录下,例如 d:\firefox (注意,压缩包内已经有一级子目录)。当然,不排除解压缩对你来说比较麻烦,那么也可以在上面的目录下载firefox-%version%-en- US.win32.installer.exe,双击安装。
配置后启动
下面是关键:Firefox配置文件。
OK,你准备要测试Firefox最新版,这意味着潜在的bug和崩溃已经不可避免。但显然,你不光是为了测试Firefox而已,因为你更希望这个蓝色 的地雷可以比较好地陪伴着你的浏览生活。要么你会希望FNB和你现在使用的稳定版(正式版)互不干扰,要么你会希望把主要的Firefox设置迁移到 FNB中,那么首先你应该知道如何操作Firefox配置文件。
配置文件(以下也简称profile)默认的位置(针对Windows XP操作系统):
| 代码: |
| C:\Documents and Settings\用户名\Application Data\Mozilla\Firefox\Profiles\%8HEX%.default |
其中%8HEX%是8位随机生成的十六进制数。
Application Data是一个隐藏目录,你可以在资源管理器里面设置允许查看隐藏系统文件,就可以看见了。如果你已经在用Firefox正式版,那么这个文件夹肯定是存 在的,我们把它称为正式版配置文件。
但是做为测试人员,我的建议是新建一个独立的FNB配置文件。假设FNB装在d:\firefox,那么使用命令提示符(cmd回车),输入下面两条命令
| 代码: |
| cd d:\firefox firefox -p |
打开Firefox的配置文件管理器(Profile manager)
然后参照图片中建立你的配置文件夹,让它跟FNB程序文件在同一个目录下:
然后在第一张图片中,选中FNB(如果你想直接碰碰运气使用旧的配 置文件,则选中default,危险!解释在下面),勾上Don't ask at startup,再start Minefield。这样你就可以启动FNB了,如果一切正常你将看到:
新启动的Firefox,但是标题上写的是Minefield,图标是蓝色地雷,这使得它跟Firefox正式版很容易区分。
纯净的Firefox,没有安装扩展,也没有改动设置。
英文版。
也就是说,这个版本没有影响到你原来安装的Firefox。你可以测试这个版本,一切的改动都在d:\firefox目录下,不会影响其他位置的 Firefox。
现在问题来了,你对这个版本很满意,可惜它是裸体的,没有扩展功能,你想迁移正式版配置文件过 来。上面我说了,你可以在Choose user profile的窗口选Default启动,那么FNB就会使用你c:\documents and settings下面那个旧配置文件启动,这样做是非常危险的。第一,FNB可能无法适应从而无法正常工作;第二,由于FNB会改写正式版配置文件内的数据,那么原来的Firefox,例如Firefox 2.0,Firefox 3.0.10将也无法正常工作!——双输的结果,太惨了。
两个建议:
1. 尽量不要用旧的配置文件,因为首先2.0能用的扩展可能已经比较老了,应该更新,其次,版本跳跃很大,有很多设置也会不兼容。如果你的扩展不是太多的话, 还是一个个手动装上最保险,就像重装Windows后,很多软件你也不得不重装一样。如果扩展实在太多,建议用FEBE打包,此不赘述。
2. 如果非要用,就把正式版配置文件下面相应目录中的文件复制到 d:\Firefox\fnb_profile目录中去,再启动Firefox。
如果你只是零星地用一用FNB,平时还是用正式版居多。那么建议建立一个批处理文件来启动FNB,方法是在d:\firefox下面建立一个批处理文件 start_fnb.bat,内容为
| 代码: |
| start "" firefox -profile "fnb_profile" |
其中fnb_profile就是你前面建立的子目录。这样你不用担心FNB不小心启动了你正式版的配置文件。
备份
当你对配置文件逐渐熟悉了之后,你会明白他跟Firefox主程序是两个不同的概念,这样你会知道如何备份它——最简单的办法就是把配置文件夹(例如这里 的fnb_profile)目录打包压缩。另外由于你的配置文件夹在安装目录(主程序)下面,又有一个批处理来启动,那么把d:\firefox打包就得 到了一个绿色版的FNB。
升级/更新
既然是FNB,那么每天都会有一个新版本,你可以通过Help菜单Check for updates来下载更新。如果你每天都更新的话,下载量比较小,目前大约是2MB,超过一天的话,就要全部重新下载,10MB左右。如果你网速不够,可 以每天用多线程下载软件下载latest-trunk下的同一个文件,自己解包覆盖更新到d:\firefox
相关链接:
(分享)Firefox每小时版下载/更新脚本(附注释) - 阅读主题 :: Mozilla Firefox中文社区
原文发表于CTeX中文论坛(bbs.ctex.org)
可能有不少人像我一样在用LaTeX不久就开始跟字体较劲。我走的是这样一个过程:
- 最初用惯了Word,从而无法理解为什么LaTeX调用字体那么难;
- 为了在LaTeX中调用字体,想用现有的工具一蹴而就(像TTFshape,MTFI,xGBKfonts),往往不能轻易成功,沮丧;
- 之后重新静下心来逐渐了解了什么是字体,LaTeX中字体成功调用的方式,才注意到Mapping,TFM,vf等文件的相互关系,理顺了这一切后,把前面几个软件装不成功的字体装好(我印象中装上过Verdana,GE Quartz等几个);
- 后来发现也有些宏包有现成的字体可用,那个时候主要就是关心TrueType字体,所以见到了winfonts宏包(这个宏包不在MiKTeX的宏包列表中),开始用上一些系统中有的字体;
- 又发现OpenType字体更棒,再去看的时候才知道解包OpenType不但麻烦,还会失去glyphs;
- 在一个相当漫长的时间内没有动过LaTeX,再碰它时,又是从一篇Philipp Lehman的《The font installation guide》开始,这篇文章100多页从头到尾看完,已经比较清楚如何用fontinst来安装手头拥有的Type1字体。也正是从这篇文章开始喜欢上了 Minion字体并且成功安装。由于安装过程相当繁琐,我还写了一些安装Type1字体的批处理,有时间的话会整理出来(因为通用性太差);
- 再次碰字体就是在CTAN上看到MinionPro宏包,这时我已经开始搜集字体,所以MinionPro宏包要求的所有Optical Size我都有。MinionPro包特别大,装上它后刷新文件名数据库都慢几十秒,这也说明了OpenType字体的复杂性。我想要不是Adobe把这个经典字体免费提供,应该不会有谁有心去为它生成那么多的TFM文件(1511个之多)。Minion Pro字体对我而言真的是压倒性的,我估计学校允许的话我的论文都会申请用这个字体排版。
- 后来XeTeX被port到Windows,我这才终于把MiKTeX升级到2.7beta,并且花了大量时间研究XeTeX。XeTeX似乎就是为字体而生的,但同样需要有字体的相关知识,这些知识并不同于前面Type1字体,而更多是字体的OpenType features,这些features,Type1字体要么是根本没有(calt, salt),有也不容易打开(smcp, onum)。
但XeTeX同样有这样那样的问题,而且如果直接访问OpenType字体,编译速度就更不如PDFLaTeX访问Type1字体那么快,在长文章中表现得非常明显。所以才有了今天这个帖子,因为在这几天求助区的讨论过程中,自己又回去看了看。加上之前也注意到,其实打开$texmf/fonts目录就能发现LaTeX发行版中早就自带了不少字体,这些字体虽然是免费,功能上确不输专业字体。更重要的是,这些字体很多都是精心设计过的字体包,用来同时载入正文和数学环境的字体,保持文档统一的风格(在严谨的学术文章中,也确实不该想在哪改字体就在哪改)。
原来自己有个文本文件,就是记录机器上可以为我所用的现成字体包(主要来自于$texmf\doc\latex\psnfss\psnfss2e.pdf文档的介绍),但最近去到tug看过,早就有人写了完整的LaTeX字体巡礼:
http://www.tug.dk/FontCatalogue/
这个网站罗列了156个LaTeX中可以免费使用的字体,并且给出了例子和调用的源代码,需要注意的是这些字体并非默认安装在机器上,但至少都能从 CTAN得到——不光是宏包,还有字体文件(因为像winfonts,MinionPro这些宏包需要用户自己拥有相应的字体,CTAN上并没有)。不过拾人牙慧的工作还是要作,那就是推荐一下几个字体/字体包:
1. Palatino
Will Robertson的文档总是用Palatino,这字体的名气也不小。胖胖的很活泼,笔锋也优雅,有羽毛笔的进化痕迹。LaTeX中最省事的是用\usepackage{mathpazo}来统一修改正文和数学字体,这个宏包还有[sc, osf]参数,分别对应小大写字母和不齐线数字。此外还有一个palatinox宏包可以直接调用Windows系统中的Palatino Linotype(这是微软认证发布赫尔曼·察普夫的原作),相关网址是:http://www.ctan.org/tex-archive/fonts/truetypemetrics/palatinox/,需要手动安装。在这个URL的上一层还能看到另一个经典字体frutiger,只是我手头没有Linotype Frutiger。
2. Garamond
1530年诞生的经典字体,LaTeX中通过mathdesign可以使用:\usepackage[garamond]{mathdesign}来使用。Garamond字体十分大气,打印在纸张上也特别好看,法国很多口袋图书用的是Garamond。
3. Times
除了\usepackage{times}外,\usepackage{mathptmx}可以把数学字体也改成类似Times的字体。这个字体真的不需要再多说什么了,总之我觉得看久了眼睛会累。
4. Utopia
Utopia有点像Times,但更宽敞一些。\usepackage{fourier}统一修改正文和数学字体为Utopia,\usepackage[adobe-utopia]{mathdesign}则是mathdesign的调用方法,差别不太明显。
5. Avant Garde/Courier/Bookman/New Century Schoolbook
不是我懒,这几个字体在PSNFSS中是可以搭配着用的:
\usepackage{avant}只载入Avant Garde
\usepackage{bookman}则同时载入Bookman(衬线),Avant Garde(无衬线)和Courier(等宽)字体
\usepackage{newcent}同时载入New Century Schoolbook(衬线),Avant Garde(无衬线)和Courier(等宽)字体
6. Charter
十分饱满的衬线字体,适合屏幕阅读。\usepackage{charter}
7. Helvetica/Optima
这两个字体放一块是因为我觉得它们是无衬线字体,比较适合用来作幻灯片。Helvetica可以\usepackage{helvet},Optima没有写成宏包的形式,就可以用\renewcommand{\sfdefault}{uop}然后\renewcommand* \familydefault{\sfdefault}来调用。在幻灯片这样的尺寸上,Optima变化的线宽才显现出优美来。
8. 其他数学宏包
建议看看ftp://tug.ctan.org/pub/tex-archi ... t_Survey/survey.pdf 这篇文章,介绍得相当详细,而且有效果图展示。
9. Minion Pro
http://tug.ctan.org/tex-archive/fonts/minionpro/ 有详细的安装说明,只要不出错是肯定能安上的,装了Acrobat Reader 7.0以上的用户都能在Acrobat安装目录下找到MinionPro-Bold.otf, MinionPro-BoldIT.otf, MinionPro-It.otf, MinionPro-Regular.otf这四个文件,按照安装说明拆解它们四个已经能满足日常文档的需要。此外,MnSymbol宏包(MiKTeX 可以自动安装)是配合Minion Pro的数学宏包,最好装上,不过\usepackage{MinionPro}就够了,会自动载入MnSymbol宏包。
其实用来用去才发现,LaTeX自带的这些字体才是真正经过时间和实践检验的经典字体,是TUG智慧的结晶。而且,这150多种字体也涵盖了绝大部分(LaTeX能触及到的)字体使用领域。这是不应该被遗忘的宝藏。
原文发表于CTeX中文论坛(bbs.ctex.org)
版面上用SciTE的人应该不少吧,这个编辑器一个相当强大的功能是他的缩写(Abbreviation)展开功能。简单说,就是把常用的代码段、单词甚 至句子和环境都定义成几个字母的缩写,打入这几个字母后ctrl+B就自动展开。开始的时候也觉得是挺平常的功能,但后来才知道简直就是Life saver。
1. 使用abbrev.properties文件
首先我想说当时为了用成这个功能就花了不少周折。我在SciTE的菜单中选择open abbreviations file,里面是空的,写了几个保存。发现没有写到SciTE目录下的abbrev.properties文件中去,满电脑找才知道写到 documents and settings里面去了。这个问题很多人碰到,作者在邮件列表中给出一个命令行的解决方法,也可以写成批处理。
set SCITE_HOME=D:\Program Files\Scintilla Text Editor\ start Scite.exe %1
存成start_SciTE.bat即可。用Total Commander的朋友可以把这个图标放在工具栏上,然后把文件往上拖就能用SciTE打开。SciTE关联.tex文件后,如果用双击启动tex文 件,则要在双击tex前保证SciTE是用批处理开着的,否则SciTE还是会用doc&settings目录下的设置,包括还原上次打开的文件 (session restore)。我干脆就把这个批处理加入到启动菜单,开机就开着SciTE。
然后,用SciTE打开abbrev.properties,输入你想要的缩写,规则很简单: abbreviation=expansion,例如
ltx=LaTeX
2. 定义缩写名
关于缩写名(abbreviation): 喜欢在等号边上加空格的朋友注意了,等号的左边最好不要有空格,否则要输入ltx加上相应的空格才能展开。等号的右边也是一样,有空格就会展开出空格。缩 写名中不能用#开始,否则注释掉了,但后面可以;不能用空格和tab开始,缩写名不能有=号,因为只接受第一个=号,后面都会认为是展开式中的=号。如果 缩写名重名,后面出现的优先。
3. 定义展开式
关于展开式(expansion):展开式的书写方式支持标准的转义符--反斜杠'\',比如
up=\\usepackage{}
即:两个连续的反杠输入一个反杠。展开式的书写方式支持一个光标定位符--竖线'|',这样展开后光标会留在这个位置,比如
up=\\usepackage{|}
这样你可以很方便地马上输入宏包名称。要输入一个真正的竖线,连续输入两个竖线'||'即可,例如c语言中的或逻辑
or=||||
展开式不允许回车换行,但转义符中的\n, \t都是有效的,所以换行和制表位都能轻松输入。例如c语言的if语句:
i=if (|) {\n\t\n}
表示展开后光标在小括号里,下面自动把大括号排版并且加入了一个tab。这在写多重循环的时候非常有用,你会发现只要用缩写功能,下面的右大括号都会自动地找到缩进位置。
这几个功能结合着用,可以写出相当复杂的环境,例如我的subfigure环境:
sbf=\\begin{figure}[!htb]\n\t\\centering\n\t\\subfigure[|]{\t % Caption of subfigure in []\n\t\\label{}\t % Label of subfigure in {}\n\t\\includegraphics[width=0.45\\textwidth ]{}}\n\t\\subfigure[]{\n\t\\label{}\n\t\\includegraphics[width=0.45\\textwidth ]{}}\n\t\\caption{}\t % Caption of figure\n\t\\label{}\t % Label of figure\n\\end{figure}
展开后的效果是:
\begin{figure}[!htb]
\centering
\subfigure[]{ % Caption of subfigure in []
\label{} % Label of subfigure in {}
\includegraphics[width=0.45\textwidth ]{}}
\subfigure[]{
\label{}
\includegraphics[width=0.45\textwidth ]{}}
\caption{} % Caption of figure
\label{} % Label of figure
\end{figure}
不但自动插入代码,还把注释原汁原味地加上,因为我老是要去查subfigure里面的中括号写什么,大括号写什么。
只要花时间,甚至可以把你常用的导言区全部定义成一个展开式,连文档模板都可以写出来,省得学写cls文件。
4. 多重展开
还有更有趣的,缩写功能支持多重展开!比 如,LaTeX的手动输入要按三次shift,十分麻烦,定义一个ltx=LaTeX就省事了,而LaTeX logo的代码是\LaTeX,并且为了保证不吞掉后面的空格,最保险的写法是\LaTeX{},真不是一般的麻烦,这时可以再定义一条LaTeX= \\LaTeX{},那么,在平时需要LaTeX这五个字母的时候,ltx后按一次ctrl+B,在需要输入logo的时候,ltx按两次ctrl+B就 OK了!像有一些关键字一般要切换字体来输入,也可以这样:
mt=MATLAB
MATLAB=\\textsf{MATLAB}
再举个例子,section, subsection, subsubsection这三兄弟可以用多重展开这样写
sec=\\section{|}
section{=subsection{
subsection{=subsubsection{
然后输入sec,按一下ctrl+B出来section,两下出subsection,三下出subsubsection,挺俏皮的……
5. 追加展开
下面的追加展开功能也让人倾倒。比方说经常要给一 段文字/代码什么的两边加括号,SciTE的括号补齐功能本来是好功能,这时反而成了累赘:在左边补开括号后要按del键删掉自动补上的那个闭括号,然后 光标移到最后去加闭括号。SciTE支持选定这部分文字后按ctrl+shift+R打开缩写输入框,例如我的一对中括号是这样的:
ac={|}
那么,我选定文字后ctrl+shift+R再输入ac回车,括号就加上了。也就是说,选定的文字会替换竖线.
6. 合理定义缩写名
根据熵编码原理(笑),建议最常用的编最短的码,所以我figure环境就一个f:
f=\\begin{figure}[!htb]\n\t\\centering\n\t\\includegraphics[width=\\textwidth ]{|}\\\\\t % e.g.,[scale=0.75], [width=0.75\\textwidth ]\n\t\\caption{}\n\t\\label{}\n\\end{figure}
因为只要你不按 ctrl+B就不会展开,就算不小心按出来了,ctrl+z马上会把展开式还原成缩写名。而且我还发现,在出现一个缩写名包括在另一个缩写名中的情况时,SciTE用的是贪婪匹配(SciTE说明文档中的说法不对)。SciTE帮助文档说,如果你定义ring和gathering两个缩写名,那么在输 入gathering后按ctrl+B,只会按ring来展开,事实上是按gatherring来展开的,也就是说,在按下ctrl+B的时 候,SciTE从光标处往前查找,一直匹配到abbrev文件中最长的那个缩写名并展开,并且这与缩写名的顺序无关,这个设置是相当好的(估计是后来改 了,但帮助文档没改)。不过,也可以养成让缩写名完全不互相包含的习惯,例如,section, subsection, subsubsection,我原来是定义成sec, ssec, sssec,这样一个包含一个如果你不放心的话(其实没问题),不如就改成s0, s1, s2(数字表示有几个sub)。
7. 根据文件类型定义单独的缩写文件
当你开始“滥用”缩写后,你会发现冲突得厉害,但又不想把缩写名复杂成诸如for@c, for@matlab这样怎么办?SciTE支持每个文件类型单独一个缩写文件。例如,在matlab.properties最后加上
abbreviations.$(file.patterns.matlab)=$(SciteUserHome)/abbrev_matlab.properties
再新建一个abbrev_matlab.properties文件放在根目录下,就可以在打开matlab文件后,用菜单'options - open abbreviations file'来打开独立的缩写文件进行编辑。保存后不用重启SciTE立即生效。那么,在abbrev_matlab.properties里面写 for=for i=|\n\t\nend,在abbrev_cpp.properties里面写for=for(i=0;i<|;i++){\n},这样你只要记 一个for就ok了。
最后,警告:很容易中毒,现在我在这里回帖的时候经常想着缩写&展开....
正则表达式中的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还存的不足就是没有分割屏幕的功能,而这个功能在源代码中就没有,有时在对比维护程序的时候是相当麻烦的。
用电脑比较多的玩家一般都倾向于更多采用键盘操作,电脑高手则更能不混淆地记住不同软件的不同快捷键。使用键盘快捷键的优势在于准确和快速,比如鼠标点击几个菜单来打开一个菜单项或执行一个指令,键盘一次组合就能达到;配合一些全局软件,用户可在操作系统中用快捷键启动程序(无论是Windows还是Linux等);活用Alt+助忆字(Mnemonic)更是将键盘的使用活化到每个设计精良的软件中。相比来说,鼠标的优势往往更多体现在指点精确位置上,比如Photoshop绘图,这时键盘一般用在切换工具方面。纯粹使用键盘或鼠标都是极端主义,键盘鼠标的合理配合才能让硅基生活更快捷。上面提到的Photoshop就是一例,类似的还有诸多经典的游戏(反恐精英、星际争霸)。原因很简单:鼠标提供不了键盘上那么多组合,键盘照顾不到屏幕上所有的像素。
下面说Firefox浏览器——在网页浏览中,用户主要还是使用鼠标,因为页面上的链接分布没有规律,一般只有精确指点的鼠标能完成。真的如此么?其实,Firefox问世的初期,也有键盘狂人开发过一个扩展,可以把页面上所有的链接全部用数字命名,从而达到“全部使用键盘”的目的。不过很显然,这样的扩展只能是留给最钻牛角尖的人使用,就像反恐精英其实也可以完全通过键盘操作一样。
Firefox是一个多标签页的浏览器,网页浏览时操作主要在于对标签页的控制,比如打开、切换、关闭等,这些功能主要在键盘的左手区,所以鼠标键盘完全可以像打星际和打CS一样配合好。除掉键盘操作外,Firefox的All-in-one gestures(AIO)提供了详尽的鼠标手势操作用来弥补键盘的不足和提高鼠标的使用空间。下面就介绍一下自己平常的浏览操作(键盘在前):
- 新建标签页(Ctrl+T)我很少使用,因为配合Tab mix plus(TMP),诸多位置(地址栏、书签、历史和搜索)都能直接打开新标签页。
- 关闭标签页(Ctrl+W),很好用(我按左Ctrl是用左手外侧压下去,所以在笔记本键盘上按不到,很郁闷)。这个操作由于太过经常使用,远远超过了“前进”这个操作,根据熵编码原理,鼠标手势中的“→”被我用来关闭标签页(默认“→”是用来前进的,与“←”后退相对应),而“前进”的功能我需要的时候宁可去点击工具按钮。
- 标签页切换(Ctrl+Tab*N次),键盘操作是根据标签页被打开的顺序来切换,所以有时并不能准确地切到你要的标签页,所以这个键盘操作我一般只是用“中键打开-Ctrl+Tab一次”,用来切换到刚刚打开的标签页(根据我TMP的设置,这个标签页会紧邻当前标签页打开,所以这个切换也显得很直观)。更多的时候我使用的是AIO提供的滚轮导航功能,因为它遵循的是标签页的排列顺序,也就是说你按住右键滚动滚轮的时候能一个不漏地顺序(从左往右or从右往左)遍历所有标签页。这个功能默认会打开一个列表,可以选择不显示这个列表(AIO高级选项#2中“标签滚动-滚轮导航:直接切换标签页(无弹出窗口)”)。上述切换到紧邻的新建标签页动作现在我更多使用的是“中键打开-滚轮导航一格(后滚)”;AIO还提供标准的鼠标手势“↑←”和“↑→”来左右切换,但鼠标行程太长了。
- 撤销关闭标签页(Ctrl+Shift+T)由于键位太复杂,加上左手键位已经很满,用Keyconfig改快捷键显得没有必要,于是自己在AIO中设置了一个“→↑”来Undo,略微有一点不足就是连续撤销几个的时候,由于第一个页面恢复时会卡一下,所以下一个页面接受到的指令会变成“→”,结束刚刚恢复的页面又被关闭掉了,在这个时候,最好还是放开鼠标,双手操作键盘的好(按作Ctrl+Shift然后按几次T),键盘的精准性可见一斑。TMP还在鼠标动作中提供了诸如中键点标签栏空白处Undo的方式,不过我总是忘记这个:P
- 停止载入(Esc)本来应该是最快的一个键,可当初使用IE时我就发现有些网页总是不能停止载入,按Esc和按工具按钮“停止”均无效。换到Firefox来后改善了很多,按工具按钮一定能停止下来,但经常会出现Esc键无效的情况,也就是说Esc并不总能再现工具按钮的功能,有鉴于此,我在AIO中设置“←↑”来停止载入,这个鼠标手势完全等价于工具按钮“停止”。我还是希望Esc键的Bug能够解决掉,因为一般需要快速停止载入的地方是论坛发帖时发现按错了或者还要继续撰写,这时Esc不管用,等右手抓到鼠标的时候页面都刷新了……
- 定位文本框(Tab*N次)远远不如用鼠标直接点方便,除非你很清楚你目前焦点的位置和焦点与目标文本框的距离次数。比方说在编辑这篇日志的时候用Alt+D(见下)去地址栏复制了链接,再想用快捷键就不容易回来了……
- 定位地址栏(Alt+D或Ctrl+L)反而是键盘更方便,因为这时双手一般都紧张地等待着输入,去抓鼠标则浪费时间了,何况地址栏比较细小……从IE时代就喜欢这个功能,IE时Tab就能进入地址栏,其它IE外壳和Firefox都至少通用Alt+D,所以这个键是我最常用的(相当好按,左手在拇指Alt、中指D)
- 定位搜索栏(Ctrl+K)。在这之前我一直是用Alt+D再Tab一次的,因为两个栏相邻,可万一把搜索栏改变了位置可能就不相邻了,所以Ctrl+K稳重一点。光标在搜索栏内还可以使用Ctrl+上下箭头来切换搜索引擎。
- 刷新/重新载入(F5或Ctrl+R),都是很方便的快捷键。鼠标手势的“↑↓”稍微麻烦了点,有时用用。
- 滚动到页面底部/顶部(Home/End),弊端是在文本框中会变成文字操作的Home/End功能,而且远离大键盘区,不好按。干脆在AIO中设置“↓”“↑”为滚动到页面底部/顶部的手势(默认手势是“向上/下滚动”,而这个对滚轮鼠完全是多余),特别好用。
- 滚动/翻页(上下箭头/空格或PgUP&PgDown),键盘方面没有什么特别的优势,因为滚动精度太差,用鼠标好得多(感谢设计鼠标滚轮的人,因为这个滚轮还是中键)。
- 上一页/下一页:虽然这个是跟网页设计有关的,但在网络浏览中普遍存在,与之相关的产品繁多,所以也要着重介绍一下。典型的例子是浏览论坛分页和搜索引擎的结果页,这时键盘是只能干瞪眼,鼠标也会被那小小的“1, 2, 3, ..., Next”气死。为此,有不同的途径:1. 使用脚本(Greasemonkey),著名的有Autopager,Pagerization等,功能上或是自动读取下一页的内容追加到当前页(加长),或是“帮”你点击下一页达到自动载入,优点是完全无缝,缺点则是死板,并且网页太长的话不好查看,并且GM脚本兼容性一般,Firefox3.0中很多不好用;2. 根据URL模拟点击。Maxthon的鼠标手势中就有“↓→”和“↓←”,AIO默认也是如此,不过会询问使用URL的哪一部分来判断增量。这个功能很有限,因为URL未必就是用±1代表上/下页;3. 根据网页代码(例如出现Next>字样)来模拟点击。例如Nextplease扩展,AIO自己也有这个功能。由于这方面网页设计就标准得多,这个翻页法有相当高的兼容性,无论是哪种语言哪种性质的网页。经过尝试,发现AIO中一直被冷落的摇杆手势很值得开发利用(按住左键再按右键表示右摇,反之是左摇),于是这两个动作成了主力翻页动作,唯一的缺点是:鼠标不能指在链接上。
- 网页中查找文字(Ctrl+F增量查找,(Shift+)F3前后继续查找),这个一般只能用键盘完成,但也有扩展允许你用鼠标划一个词然后立即全部高亮出来的。小技巧:快速关闭查找栏,无论焦点在哪里,只要按Ctrl+F后Esc就行,用鼠标点那个小叉太辛苦了。
- 使用搜索引擎搜索文字。分几种情况,各有高招:1. 由别的程序进入剪贴板的内容:这时用键盘最好:Alt+Tab切换到Firefox后,Ctrl+K、Ctrl+V再回车;2. 如果是Firefox所显示的网页中的内容,要用鼠标选定后Ctrl+C再重复1中的动作就不值得了,因为Drag de Go(前身是Super drag and go)提供拖拽搜索的功能,一拖即搜!而且即使不装这个扩展,把文字拖到搜索框也会激活Firefox默认的搜索功能。想临时切换搜索引擎?用Context Search扩展即可。3. 自己临时想到的内容,这个如果是用默认搜索引擎,那么Ctrl+K过去打字即可;如果是使用很多个搜索引擎的玩家比如说我,我会给每个搜索引擎定制一个关键字(添加不同搜索引擎推荐使用OpenSearchFox扩展),用地址栏来搜,比如平时不太用百度,但Google中文搜索不合意时,可以在地址栏输入“bd 我要搜索的内容”(这就是因为我设置了bd为百度的关键字)。至于搜索结果的高亮,就不详细介绍了。
作为一个很喜欢/依赖/常用电子邮件的家伙,我跟垃圾邮件的斗争历史也很漫长。原来使用Yahoo!电子邮件系统的时候,钟意于它提供的"替身邮"服务¹;后来改用Gmail,也不忘设置一些转信账户来隐蔽自己真实的邮件地址(参见 用Gmail的多账号功能实现替身邮+超酷地址全能收发)。
看起来,邮件地址安全了,我可以用转信地址去各式各样不放心的论坛、网站去注册,什么时候垃圾信太多了,只要停止转信,你的真实Email信箱中就再也不会收到垃圾信。可事实上,真的当你收到垃圾信的时候,谁又能知道是哪个论坛出了问题,把邮件地址出卖给别人了呢?这时候的局面是,我想当然地注册了很多可能我自己都记不起来的网站,如果现在停止掉这个转信信箱(或者替身邮),有用的信件呢?我当然可以创建各种不同类型的替身邮,帮助我回忆出可能是哪个出了问题然后有选择性地取消转信,不用说,这个一听就够麻烦。
我主要使用的转信信箱("kmc在alum刀com")开始收到越来越多垃圾信,其实垃圾信会被放到"Spam"目录中去,但烦人的是依然显示一个未读数目,于是总让人不由自主地点开,再清空。不久,我发现Trash目录中的新邮件不会显示未读数目,于是研究了很久Gmail强大的针对内容Filter这个功能,创建出比较有效的Filters,让垃圾邮件直接进Trash目录。可惜,这种用户层面的过滤始终需要分析垃圾邮件的关键字,只能靠智慧,而且也只有手动增加Filters的长度。
终于我想到Gmail中一个一直被我忽略的特色:转信。这个本身不是特色,而是Gmail转信过程中,如果从a地址转到b地址(均是Gmail信箱地址),那么a地址中已经确认为垃圾的邮件就不会被转发到b地址,而是直接扣押在a地址的Spam目录中!也就是说,用其它网站的转信账号,不如就用另一个Gmail账号来转信,唯一损失的只是地址的精简程度(Gmail需要用户名至少6个字符,于是kmc@gmail.com是申请不到的),但转信时间则以Gmail为准,就像这封邮件直接发到你主信箱一样快。
这样设置之后,再也不会为垃圾邮件烦恼了,事实上Gmail过滤垃圾邮件的能力并没有因此而增强,让我烦恼的只不过是"眼见",眼不见则心不烦。
-----
外传:其实原来也看到有说用加号(+)来实现有针对性过滤的,也就是说,如果你拥有a@gmail.com,向a+bbs@gmail.com这个账号发信也能发到你的信箱来,这样万一这个地址被出卖,你可以为这个a+bbs@gmail.com设置一个Filter,当场杀到Trash中去。问题在于
- 很多邮件系统不支持这个+号地址,认为是错误的邮件地址从而发不出去。
- 真实的地址终归还是暴露在外面,垃圾邮件制作者只不过需要用一个文本处理器去掉+号(含)到@号之间的内容
[注1]:这个服务似乎在英文界面中不会出现,不仅如此,即使在中文雅虎中打开后,切换成英文界面也会造成之前替身邮地址全部失效。
我是一个爱泡论坛的人,最烦的就是总有人会用硕大无比的图片、文字或者巨大容量的Gif作签名档,以标榜“个性”。这喧宾夺主的网页成分一来加长了页面载入的时间,二来降低了有用信息的可读性,而且图片内容会严重影响阅读质量。这种“个性”,实在是一种狗皮膏药一样的网络垃圾。
相信为此烦恼的不止我一个,针对这种现象也存在不同的解决办法。最好的如战斗在法国,vBulletin程序允许用户打开和关闭签名显示,但完全不显示所有会员的签名也有相应的弊端,比如错过有用二手信息等等;次一点的,不允许一定级别的人使用图片签名,有它的好处,但又过分强调论坛等级制度;或者像赢政天下干脆不允许使用图片签名,这又限制得太死,一些灵光闪现的创意得不到展示;至于限制图片大小和尺寸之类的,出发点很好,实现起来似乎有难度,所以并不是每个论坛都会采纳,而且,限制到多少才是合适往往也是个难题,像userbar这种350*20的尺寸,想必大部分人都会觉得太小。
我认为在上述方法之上,还可从以下几个角度来考虑:
- 从论坛程序出发:给用户更多选择,比如:用户除了可以彻底关闭签名外,还可以默认打开签名显示,但手动屏蔽某些“无良”会员的签名;在vBulletin中有“不显示图片,包括帖子和签名中的图片”,我认为这两个选项分开就好,帖子中的图片当然要显示,否则多图帖就需要每张都点击查看了,但签名图片可以不显示。
- 从用户角度出发,如果一个论坛完全没有限制签名图片,但这个论坛又不得不经常访问,那就只好不厌其烦,利用浏览器的过滤功能,手动把你看到的巨幅图片,几MB的Gif给过滤掉。
WLM呢,情况略为好一点,首先50*50这个尺寸显得合情合理(这说的是Gif,静态图片好像允许得更小,大概是25*25);其次,WLM批量导入导出麻烦,不像QQ,一下能搞进去一套“3500常用动画字”。不过这也无法限制那些喜欢“个性化”的人,我经常收到一句话中几个字是图片替代字的。如果光是自定义也就算了,无非是显得不太整齐而已,不影响理解,最可气的是有些人用的图片替代字完全不可理解。我的一个朋友,用一个扭腰的企鹅表示“不”,用一个左指指右指指的小人表示“去”,看聊天消息像猜密码似的。
其实我也用自定义表情,但我是用它们来补充WLM表情的不足,更有效地传达心情,相反,我从来不用图片替代文字。也就是说,我要打一个自定义表情,它就是一个表情,一般出现在句尾或单独出现,不会影响理解。
那么尴尬的事情在于:我是不是应该关掉自定义表情呢?如果关掉,那些替代字能正确地显示,我看那些“个性化”朋友打过来的句子,是完全可以理解的;可偏偏是那些像我一样自觉的朋友(包括我MM),有时要特别地表达一点心情(比方说MM特别的“吻”啊),反而只能看到一种不太明朗的符号(因为并不是替代字,所以可能会用图片名来命名,这样如果没有看到图片,就理解不了)。
所以一直很希望WLM能加上这个功能:自定义表情策略。比方说,对于饱受其害的朋友,可以选择默认关闭,对特别联系人实行显示;相反,也可能选择默认显示,对某些滥用者进行封锁。可惜WLM一直没有在协议层加上这个功能。
转而考虑Messenger Plus! Live的插件,在Messenger Plus! Live论坛上已经有相当多的人在要求这个功能,不过据了解插件开发的人说,要实现针对特定用户启用/禁用自定义表情,属于协议层的事情,如果微软不改善,恐怕不好实现。退而求其次,我认为可以至少用插件的形式实现一键切换自定义图释的显示/禁用,这样至少可以在发现一个联系人正用大量替代字轰炸的时候临时关闭,然后在别的聊天窗口打开之前启用,因为更改这个设置只会对当前聊天窗口有效,新开的窗口会服从新的设置。可惜,有人制作了一键切换在线状态,却一直没有人制作这个切换自定义图释的简单的插件出来。
简约之美,什么时候才能被接受?想原来在telnet BBS上面钻研ASCII艺术的时候,仅仅用一点点字符和符号配上颜色,能制作出多少灵光闪现的美丽图案来,现在图片色彩越来越丰富,却招来这么多喧闹的困扰。
不知道什么时候在国外的论坛上看到Userbar的理念,这是一种尺寸大致在350×20的小Banner图片。这样的图片不但容量小,个头也小,在论坛中作签名,既不会浪费用户的网络带宽也不会强占用户的注意力。
Userbar的初衷顾名思义,是为了说明自己的一种爱好,无论是使用某个软件、某个产品还是观看某个节目、崇拜某个明星,都要在方寸之间展露出来。看起来不起眼的小图片,往往因为它难看清,反而更加吸引人,而且userbars.org网站也是展示个人爱好和宣传产品的平台。
制作Userbar需要一定的Photoshop功底,所以开始的时候一直没有机会尝试,以为后面蕴含着很高深的技巧。而且由于自己喜欢的软件大部分有人制作好了现成的图片可以选择,我也就信手拈来。但我的好奇心终于还是驱使我静下心来按照一篇教程中说的一步一步制作了一个极点五笔的Userbar:
然后我发现事情并不像我想像的那么难,于是循序渐进地演练,慢慢地也掌握了Photoshop的一些基本且重要的知识,之后制作的Userbar就能看到进步了。下面按照时间顺序将他们贴出来:
Aston外壳替换程序
KOF98爱好者
千千静听
Windows Live Messenger和我的联系方式
Messenger Plus! Live
Xtreme电驴衍生版
Acrobat Professional
然后,为我深深喜爱着的萧亚轩制作了两个,后面一个中我详细实践了PS中的重要技巧——抠图,并且感受到了成功的喜悦。
我对这个Userbar喜欢得无以复加:)