制作一个Office Ready的字体

2010年11月21日星期日

下面通过一个例子来介绍如何制作一个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”。

  1. 把四个字体用Fontlab打开。从Regular开始,点File-Font info(Ctrl+Alt+F):

  1. 为了不和原版混淆,我把Family Name改一下,改成Compatil Fact Office

  1. 然后点击Build Names(绿色钻石图标),自动生成了新的名称

  1. 然后切换到OpenType-specific names点一下Build Opentype Names。最后点OK,Regular就修改完成了。

  1. 下面是Bold,打开Font info后是这样

问题就出在这里,Family Name里面就多了Bold,而4字体规则要求的是Family Name要相同才被认为是一家。所以跟上面一致的话,家庭名统一改成Compatil Fact Office。

  1. 另一个重点是要勾上“Font is bold”,然后点Build Style Name,再点Build Names

  1. 然 后再重复“4”里面的步骤一次。细心的人应该已经理解,大家庭规则是靠这个菜单,也就是OpenType-specific names来维系的。点Build Opentype Names这个步骤只是为了在改成4字体规则后,象征性地遵守一下大家庭规则。其实上不会影响Office Ready字体的生成,因为后者是由Basic set of font names决定的。

  1. Italic和Bold Italic类似,但是我还是把截图放上来。

  1. 全 部改好,点了OK之后,回到Fontlab,点菜单File-Generate All。设置好Format(推荐TrueType/OpenType TT,这样生成的字体有分级Hinting,即使不用Mactype也有更好的适应性(这才算Office Ready)。选好保存路径后点Start。

  1. 在生成过程中碰到这样的提示,选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)
** 粗衬线字体(Slab Serif)容易让眼睛疲劳,适合标题而非正文:
  • Memphis
** 不是每个程序都会访问字体的Kerning。此外,在小尺寸、屏幕显示下,Kerning往往没有意义,因为hinting/Mactype渲染会改变字符的几何属性。

选择屏幕字体的一些标准
  1. 空间利用。在小尺寸下,字体必须要合理地利用空间,在这方面不用再多说无衬线比衬线的优越性,但即使这样,Gill Sans却依然不如Georgia易读。

    在有Mactype的介入下,少数衬线体的确也值得一试,这里推荐Georgia, Cambria, Minion Pro(或者Web Pro)和Times Europa Office。

    需要说明的是Mactype的渲染会让字符变粗,这时又成就了无衬线字体的一大优势——字重。在Regular显得拥挤时,很多Sans字体都有比Regular更细的Light版用来匹配。

  2. 简洁明快。不想用“易读性”这个概念,因为它太泛。简洁明快指的是字体的个性不宜太张扬,尤其不能有一两个字符漂亮得让人每看见它就不由得停下来欣赏一番——这影响了文字内容的转达。Helvetica为什么成功?因为它像空气一样。不过这也是一个见仁见智的问题,因为看久了之后就会习惯的……

    举例我现在正使用的Thesis Sans Office,Thesis Sans是很优秀的字体,但它的大写Q的尾巴是悬空的,每次看到,确实会不由自主多欣赏两眼,好在英文中大写Q出镜率不高,可法语就大不相同了。难怪Thesis Sans OT里面有3种关于大写Q的替代字。

  3. 特色字符。刚刚说了不要字符太有个性,为什么马上就来了个“特色字符”?这里主要是针对几个字符的典型写法上的区别。例如:小写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。

  4. 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字形来做网页显示,就看出制作水平的精良:清晰、和谐、易读。
想要快速测试一个字体的网页效果并不容易,我使用的方法是:
  1. 首先确认4个字形符合Office Ready标准(否则用Fontlab自定义)。
  2. 然后安装,或者用FontExpert的Activate Temporarily Now功能,不好看的话省得卸载。
  3. 用Firefox选择字体后,打开 www.lipsum.com ,先读那些介绍文字,测试字体能否太有个性而让人无心阅读正文内容,然后点Generate Lorem Ipsum生成没有意义的赘文,可以快速了解字体显示大段文字的屏幕灰度(与字符的空间利用直接相关)。再去浏览几个外文网站。当然用记事本保存一段测试文本也是可以的,只是我觉得那种测试太纯粹,只能测一种颜色,一种尺寸。


好的屏幕字体就像老婆,首先她漂亮,但却不张扬;她有很多动人之处,可能你都已经看习惯,但依然能感受到那种整体美。

你冷不丁想瞟一眼的女生,往往只是一两个特点吸引着你,如果天天看,全方面地跟她在一起生活,你会发现其实她那一两个优点掩饰了她很多的缺点,一如漂亮的Swash容易造成行间重叠和整体灰度不均匀。

更为重要的是,这些优点属于字体本身,它们无法有效地帮助传达文字的内容,这就是为什么这种字体更适合引人眼球的Logo。相反,两个人的生活中不免充斥着柴米油盐,这些内容必须要一颗包容和体谅的心才能装得下——就像一个简约淡定的字体。

Firefox 4.0 b8pre 2010-10-14

2010年10月17日星期日

从10月14号开始,Firefox B8pre呈现出恐怖的“抽风”状态,我这个Firefox 6年的多用户也从来不敢想像这个浏览器可以这么快。TraceMonkey和JaegerMonkey同时合并到Trunk之后的结果。

在Mozillazine论坛上甚至有人说“历史上第一次,Firefox的Sunspider成绩超过了Google Chrome”。Mozillazine上每夜版bug更新列表中出现了长长一片的绿色,并且90%的Bugfix都是关于JS引擎的。arewefastyet.com上的曲线也是急剧下滑。

我是带着20多个扩展跑Firefox的,根据我自己的体验,速度上的提升非常明显,网页基本上是秒开的感觉,热启动1~2秒。Firefox这回真给力!

相应地有一些扩展造成Firefox崩溃。Adblock plus、Noscript都需要更新到最新版,目前GreaseMonkey/Scriptish只要有脚本运行就会崩溃,只得暂时禁用GM。

PDFLaTeX的高速编译命令行开关

2010年10月13日星期三

用了这么久才知道原来 --interaction=batchmode 才是王道。
1. 编译速度奇快,比正常显示那些编译信息要快几倍。那些编译信息大大拖慢了编译速度不说,反正滚动的速度你也不可能看见太多。真的需要看warnings,查log吧。
2. 跟nonstopmode也不太相同。如果有错误,会尽量调整。例如我有一次就忘了放几张图片,然后出来的结果中图片就有一个占位符,类似于\usepackage[draft]{graphicx}的设定。

Firefox 4.0 b8pre 2010-10-12



☺ 圆形的进度指示器终于回来了,不喜欢进度条。这个新的指示器跟Google Chrome设计得几乎一样,姑且叫甜甜圈吧。

这段时间Firefox在别的方面变化不大,扩展工具栏的引入根本就是一个倒退。

Firefox 4.0 b6pre 2010-09-17

2010年9月18日星期六

今天才发现 general.useragent.extra.*的键值已经无效了,去Mozillazine打听了一下,外部软件/流氓工具栏往往通过这些键值来在UA上挂尾巴,Mozilla决定干掉这种可能。

不仅如此,连general.useragent.override都可能被取消。也就是说UA劫持将越来越难,可是用户自己想改UA也变得不可能。 但愿Mozilla不会把事做绝。

☯ 给所有的64位控(包括但不仅限于那些无止尽地求xx软件64位版和奔走疾呼64位软件有多么多么好,软件不开发64位就多么多么out的道士们):
Facts:
* The 32bit build is FAR more important.
* The 32bit build performs better as it is much better optimized
* Almost any plugin is available for the 32bit build.

The devs have their reasons for not making the x64 versions official, because it would make absolutely NO sense to hold them back without one or more valid reasons.

Really, there is no need to rush anything. 32bit builds are fine and Win32 isn't going to die tomorrow. One day, 64bit will be standard but this will take time. Not a few weeks, not even a few months. We are talking about YEARS from now because more than 5 years after the release of the first 64bit Windows, the development tools are not even at the same level as their 32bit counterparts.

The transition from 16bit Windows to Win32 took many years and from 32bit to 64bit it will probably take even longer, because the benefits of x64 vs Win32 are far less important than the benefits of Win32 vs. 16bit were. And today's software is far more complex than it was back in the 90's.

☺ 在圆饼扩展被开发回来之前,只有试着去接受进度条。好歹可以改颜色
/*Tab progress color*/
@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);

.tab-progress > .progress-bar,#urlbar-progress > .progress-bar
{background-image: -moz-linear-gradient(left, rgba(255, 255, 0, 0.5),
rgba(255, 255, 0, 0.7),
rgba(255, 255, 0, 0.95)) !important;}

☹ 地址栏的RSS图标被移除了。以后要知道一个站点是否能订阅,只有不时地点点书签菜单,看看“Subscribe to this page”的菜单是不是灰的。算了,自己用得也少,就不评价什么了。

Firefox 4.0 b6pre 2010-09-16

2010年9月17日星期五

☺ 终于出现能指示上载进度的扩展了。Google Chrome的上载指示是它的一个亮点,很奇怪这么多年来Firefox没有这方面的扩展。今天逛AMO时突然看到:

UploadProgress :: Add-ons for Firefox


测试有效,虽然实现的方式有点囧——跟下载对话框一样,搞了个上载对话框出来。Google Chrome显示在状态栏的方式显然更方便一些。不过它的代码不算复杂,没准改改就能进入状态栏(或者附加组件栏)。


☹ 圆饼没有了,全部变成了进度条。说实在的饼要客观一点,想知道百分之几,看饼更直观。而这个条条对应的百分之几,跟标签的长度挂钩,从Apptab那么短,到地址栏那么长……

☺ 输入框按End键会换行的bug解决了。

☺ 昨天密码消失,不能下载的问题依然出现。全部重装了一遍扩展,目前正常。另外扩展安装现在已经不需要解压了,全部以XPI文件的方式出现在extensions目录下。并且可以一次安装多个扩展了。

Firefox 4.0 b6pre 2010-09-15

2010年9月16日星期四

☺ 取消火狐橙,显示工具栏后,关闭按钮又回到了屏幕的最右上方。原来是略微偏下一点,鼠标无法盲移到关闭按钮上。

☺ Tab Candy随机生成一堆Groups的bug好像解决了
Bug 587990 – TabCandy arbitrarily creates new groups / orphans tabs in empty space after hovering over "Move This Tab To..." menu item

☯ 状态栏取消的话,那些载入信息(“Waiting for xxx.com...”,“done”)之类的往哪里放?

☺ 状态栏要取消,页面载入的进度条也应该移到别的地方去。改来改去,现在的结果是这样:
如果前台标签正在载入中,那么在地址栏下方会出现一细小的进度条,载入圆饼指示器依然存在。如果正在载入的是后台标签页,则仅用圆饼显示。

说实在我比较喜欢圆饼,觉得有饼就够了。

☺ Paste and Go扩展的功能被集成了,在地址栏点右键有Paste and Go,搜索栏点右键有Paste and Search,可惜Omnibar整合地址栏和搜索栏后,Paste and Search并没有出现。而且没有快捷键,所以暂时不能删除Paste and Go扩展。

☹ Check for updates被整合到about窗口中,但是在我这里用着用着这个按钮就变成空的了。




















另外突然密码都不见了,下载也不能。经过排查,在prefs.js里面找到这一堆键值
user_pref("extensions.{002349F5-59AB-4fdc-8329-BF4248243C95}.install-event-fired", true);
user_pref("extensions.{01F8DAE3-FCF4-43D6-80EA-1223B2A9F025}.install-event-fired", true);
user_pref("extensions.{103B2EA2-F063-4273-958D-6B46E5B6F98C}.description", "Copies the name (source anchor) of a link.");
user_pref("extensions.{103B2EA2-F063-4273-958D-6B46E5B6F98C}.install-event-fired", true);
user_pref("extensions.{1280606b-2510-4fe0-97ef-9b5a22eafe30}.install-event-fired", true);
user_pref("extensions.{19503e42-ca3c-4c27-b1e2-9cdb2170ee34}.install-event-fired", true);
user_pref("extensions.{19503e42-ca3c-4c27-b1e2-9cdb2170ee34}.update.enabled", false);
user_pref("extensions.{20291fcc-1471-46c8-8213-5911f5ce6d67}.install-event-fired", true);
user_pref("extensions.{21cfaec0-dbb3-11dc-95ff-0800200c9a66}.install-event-fired", true);
user_pref("extensions.{21e48e29-f574-4619-b65d-0f00eea92e5b}.install-event-fired", true);
user_pref("extensions.{35106bca-6c78-48c7-ac28-56df30b51d2a}.install-event-fired", true);
user_pref("extensions.{3541c267-2580-4144-854e-2e05c8670121}.install-event-fired", true);
user_pref("extensions.{37E4D8EA-8BDA-4831-8EA1-89053939A250}.install-event-fired", true);
user_pref("extensions.{37E4D8EA-8BDA-4831-8EA1-89053939A250}.update.enabled", false);
user_pref("extensions.{3892FE4C-6DCB-4669-9D01-E23BB9FB61FB}.install-event-fired", true);
user_pref("extensions.{3ED591BC-7CC7-495B-A526-B2431356EDC1}.install-event-fired", true);
user_pref("extensions.{3b71bd20-ee7e-11d9-8cd6-0800200c9a66}.install-event-fired", true);
user_pref("extensions.{3d7eb24f-2740-49df-8937-200b1cc08f8a}.install-event-fired", true);
user_pref("extensions.{3e270ac3-8936-43fb-ad20-b4685172a83d}.install-event-fired", true);
user_pref("extensions.{3e9bb2a7-62ca-4efa-a4e6-f6f6168a652d}.install-event-fired", true);
user_pref("extensions.{44d0a1b4-9c90-4f86-ac92-8680b5d6549e}.install-event-fired", true);
user_pref("extensions.{4BBDD651-70CF-4821-84F8-2B918CF89CA3}.install-event-fired", true);
user_pref("extensions.{53A03D43-5363-4669-8190-99061B2DEBA5}.install-event-fired", true);
user_pref("extensions.{55041000-4813-4816-AD30-DF68B17D7179}.install-event-fired", true);
user_pref("extensions.{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}.install-event-fired", true);
user_pref("extensions.{64161300-e22b-11db-8314-0800200c9a66}.install-event-fired", true);
user_pref("extensions.{65d1639c-419f-4b52-9520-2d1455e5091b}.install-event-fired", true);
user_pref("extensions.{6BFD307A-C040-11DA-9749-FB1C850B47DF}.install-event-fired", true);
user_pref("extensions.{71328583-3CA7-4809-B4BA-570A85818FBB}.install-event-fired", true);
user_pref("extensions.{73a6fe31-595d-460b-a920-fcc0f8843232}.install-event-fired", true);
user_pref("extensions.{752a85d4-68d6-48ae-ab7d-6640f5f75d85}.install-event-fired", true);
user_pref("extensions.{75e19832-90c0-4553-91a0-e5d0ac5d99fd}.install-event-fired", true);
user_pref("extensions.{84417002-6445-49b4-9fd7-1ef48240fa41}.install-event-fired", true);
user_pref("extensions.{888d99e7-e8b5-46a3-851e-1ec45da1e644}.install-event-fired", true);
user_pref("extensions.{902D2C4A-457A-4EF9-AD43-7014562929FF}.install-event-fired", true);
user_pref("extensions.{9669CC8F-B388-42FE-86F4-CB5E7F5A8BDC}.install-event-fired", true);
user_pref("extensions.{AE37D527-6604-461c-8102-975CF8053A2F}.install-event-fired", true);
user_pref("extensions.{DA144265-8D9B-4380-B8F7-9F85E2C37D05}.install-event-fired", true);
user_pref("extensions.{E31AE5B1-3E5B-4927-9B48-76C0A701F105}.install-event-fired", true);
user_pref("extensions.{EDA7B1D7-F793-4e03-B074-E6F303317FB0}.update.enabled", false);
user_pref("extensions.{F645A8C9-E969-42D9-B3F3-F325537222FD}.install-event-fired", true);
user_pref("extensions.{F78DC607-BB30-4e13-9E47-2C2E162E9094}.install-event-fired", true);
user_pref("extensions.{F8A55C97-3DB6-4961-A81D-0DE0080E53CB}.install-event-fired", true);
user_pref("extensions.{FFA36170-80B1-4535-B0E3-A4569E497DD0}.install-event-fired", true);
user_pref("extensions.{a0d7ccb3-214d-498b-b4aa-0e8fda9a7bf7}.install-event-fired", true);
user_pref("extensions.{a3b24d40-bac4-11dc-95ff-0800200c9a66}.install-event-fired", true);
user_pref("extensions.{aba3f5c2-35d5-4960-bdfc-de9c162e39ce}.install-event-fired", true);
user_pref("extensions.{ba243cb0-b824-4a26-9418-73ee795d9b9d}.install-event-fired", true);
user_pref("extensions.{bc7030f4-a50b-464f-9bff-45a3a9e97125}.install-event-fired", true);
user_pref("extensions.{c07d1a49-9894-49ff-a594-38960ede8fb9}.install-event-fired", true);
user_pref("extensions.{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}.install-event-fired", true);
user_pref("extensions.{d40f5e7b-d2cf-4856-b441-cc613eeffbe3}.install-event-fired", true);
user_pref("extensions.{e4a8a97b-f2ed-450b-b12d-ee082ba24781}.install-event-fired", true);
user_pref("extensions.{e5e868a3-2e53-4f10-a2a0-890c4a4774f4}.install-event-fired", true);
user_pref("extensions.{fce36c1e-58d8-498a-b2a5-66ad1cedebbb}.install-event-fired", true);
user_pref("extensions.{d37dc5d0-431d-44e5-8c91-49419370caa1}.data.update.prevupdate", 1242486071);
user_pref("extensions.{d37dc5d0-431d-44e5-8c91-49419370caa1}.prevrun.version", "2.4.97");

删除后重启Firefox,上面很多不存在的键值被清空,解决。话说最近我跟prefs.js裸斗的次数还真不少。


☹ 新变化:状态栏估计就快要没有了。昨天鼠标指向链接的URL显示就已经从状态栏整合到了地址栏,对宽屏用户,或者跟我一样Omnibar取消搜索栏来说,应该空间还够。

今天曾经出现过状态栏取消的build,取消状态栏,引入附加组件栏,会使得所有在状态栏有图标的扩展都不得不更新。目前这个功能暂时backout,但是据说一定要land。Mozilla现在心里永恒的愿望就是全部东东都放到浏览器上方去。好像Mozilla宁可牺牲作者们的修改时间也要去掉状态栏。说起来,既然他们把状态栏的URL显示合并到地址栏去,从而实现“在同一个地方显示所有的URL”,那么状态栏现在的确显得空空荡荡的。问题是附加组件栏就不空吗?

Firefox 4.0 b6pre 2010-09-13

2010年9月14日星期二

扩展管理器的滚动条回来了(可能不是每个的扩展列表都长得能看见滚动条的吧……)

把javascript.options.methodjit.content设为False能解决Gmail打不开邮件的问题,但是Gmail依然有很多地方打不开。

Firefox 4.0 b6pre 2010-09-12

2010年9月12日星期日

今天的小时版发现启动速度非常慢,曾经一度怀疑到新加入的Startup Cache去,但是经过反复排查,遗憾地发现是userchromeJS这个扩展拖了启动速度,即使不载入任何脚本,同样把启动速度拖到20几秒。禁用后正常。

Edit: 禁用后也不正常。看似重启Firefox快了,但是彻底关闭Firefox后等待一段时间,再启动(本应该是热启的速度),依然很慢。

但是今天的小时版在浏览器性能方面的提高非常明显,页面载入越来越快。

Bug: Gmail的内容暂时无法打开。不止是邮件,连Buzz,Contacts也一样。但是点击的时候,网页标题会变,只是内容不出现。

新闻:Echofon从1.9.6.6版开始高调地不再支持Ubuntu下的Firefox,号称是没有OAuth。在AMO的Echofon评论中已经出现了多个最低分。很多人都不理解,为什么一个扩展可以在不通知用户的情况下,就停止对一个操作系统的支持,相当多的用户都不屑地选择了放弃Echofon。

什么时候Chromed Bird能到Firefox下去就好了。Echofon被它甩好几条街,还这么牛脾气。

Firefox 4.0 杂感

2010年9月11日星期六

先喊一嗓子:“爱火狐,不跑分!”

-- 性能上有很大的提高,页面载入和渲染速度加快。

-- 启动速度越来越快。

--D2D颇受诟病,大部分用户反映一是“字体不好看了”,二是Flash/Gif很卡。对于用gdi++渲染的我来说,D2D字体是用不着的。但奇怪的是为什么显卡加速目前跟字体渲染绑定在了一起,不能分开设置。

-- Firefox Sync,很多人不喜欢。我是抱着无所谓的态度,比之跨平台跨浏览器的Xmarks,Sync还差得很远,但是我对同步这玩意已经不抱太大希望了——同步永远不可能让你时时刻刻满意,日日夜夜放心。不喜欢Sync的,有两种方法:
1. 不要连接,然后userChrome把图标隐藏掉(这样实际上Sync也不工作)。
#sync-status-button {display: none !important;}
2. 如果还认为这样会增加启动时间等的,我也能理解。不过就只有等第三方编译版了。

-- Tab Candy,又一个新鲜的尝试。咱不能说这玩意就很差,但至少还有很多地方要完善。到目前,我还是喜欢多窗口的方式来在浏览过程中进行“分支”的操作。很多人一样是不喜欢Candy,那没办法,等第三方编译版。

-- App tab。目前仍失败的尝试。至少之前存在的很多扩展,如Tab Utilities,AppTab,都实现得非常好。其一,一个Tab被Pin了之后就会在各个Candy Group里面出现。其二,能Pin不能锁定。我发现Tab Utilities的Pin Tab功能配合它自带的锁定+保护,才能真的实现永远Pin一个Gmail在左边。这一点,Google Chrome一样得考虑锁定+保护的功能。

-- 浏览体验有多重要?对我来说,这两天我总是感觉Firefox最新的Builds慢了一些,主要就是鼠标手势识别不出来(别的Tab在载入,CPU占用高的时候)。我马上就想是不是性能又跌下来了,正因为我不跑分,所以只能凭感觉。我还自嘲地说,是该升级老机器了。今天仔细一查:是因为Mouse Gestures Redox的最新版性能降下来了而已,回到旧版,OK。有时,就是因为这些地方差了这么一点点,对浏览器的体验就会差很多。所以我也试着理解那些因为Google Chrome启动快、跑分快就说它快的人,大家都只是偏执而已。

-- 最近经常跟扩展列表和prefs.js过不去,一旦删除重建prefs.js,则可能碰到这个情况:有些扩展由于版本号问题被禁用,但是除了删除,找不到“启用”的按钮,看起来只有重装。事实上,删除extensions.sqlite文件,重启Firefox即可。

-- Omnibar 冲突: 智能地址栏结果中,只有标题没有地址。已解决, 作者更新

从Google Chrome回归Firefox 4.0

2010年7月9日星期五

我曾经因为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的卖点是速度,这一点在刚刚开始使用的时候得到了很好的体现。尤其是我之前用FirefoxGmailGoogle DocsGoogle的重度AJAX服务非常痛苦,有时关闭Gmail后,浏览器都会假死好久。这一点对Google Chrome来说是得心应手的,毕竟Google Chrome的跑分能力在那儿摆着。如果说Google Chrome在功能上能够齐全一些,它就会吸引我去用。

真正让我开始使用Google Chrome的契机,乃是字体。Firefox的字体设置非常完备和明了,而Google Chrome的字体只能用 *惨不忍睹* 来形容,我这篇文章如果有一个相当苛刻的词汇,就得用来形容Google Chrome的默认字体。好在找到了Chrome Stylist扩展,用CSSGoogle 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的时候我甚至可以PhotoshopIllustrator同时开着。

在扩展装多了之后,Google Chrome打开标签页也频频出现一卡一卡的现象。Firefox也存在这个现象,应该是相应的扩展对页面内容进行处理需要额外的CPU开销。在硬件配置不变的前提下,这属于资源占用和软件功能不可调和的矛盾,但至少说明简单地换一个浏览器并不能解决问题——在功能提高之后,Google Chrome的速度也有比较大的下滑。

此外,Google Chrome对磁盘空间的消耗也比较大:在用户数据目录下有几个History Index文件和一个Thumbnail文件,到目前为此他们加进来已经达到了341MB。看来现在不用诟病Firefoxplaces.sqliteurlclassifier3.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的顺序是MRUMost 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默认的滚动效果我没法接受,几个平滑滚动扩展实现的效果也不好。最好的扩展应该是YASSChrome(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 crashedrestart now?”,点重启,会提示你是否恢复崩溃前的标签页。可是这一点Firefox也完全不赖啊:除了内存不能为read/written这种“硬”崩溃,只要崩溃管理器来得及捕捉到崩溃信息,就可以恢复标签页。而且这也不是Google Chrome的卖点。不仅如此我还发现,想看这个“囧”得不行的小人也不是没有办法:把网络切断,Google Chrome马上给出一排扩展崩溃的信息,这真的有点奇怪。也就是说,在关机之前,如果忘了关Google Chrome,则100%出现崩溃的提示。

相比之下,同样是整个浏览器崩溃掉,Firefox做得更好一些,如果可以进行崩溃恢复,在文字编辑框中写的文字很有可能可以保留,而Google Chrome则肯定无法保留。

不难想像要实现标签页独立的安全保护(多线程?)还有很长的路走,所以说我暂时不期待Firefox实现该功能了。

* 同步功能

Google Chrome有着Google得天独厚的同步功能,书签同步早已是默认的功能,最近的新Builds中又加入了扩展同步,让Firefoxfans们好不眼馋,但是平心而论,这两个功能都还是刚刚起步。书签同步利用的不是Google Bookmarks,而是一个Google Docs的暂存档,并且无法直接查看网络上存放的书签。这一点Xmarks做得更好些,可惜Google ChromeFirefox书签格式的不同(尤其是没有Tags)使得用Xmarks来在两个浏览器之间同步也显得不太可能。

扩展同步则吸引了相当多的眼球,为了测试,我在Windows 7Ubuntu 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 TaskApplication 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扩展,它的功能性和易用性远远超过了EchofonTwitterfox)。另外是一些Google服务的扩展,例如Unofficial Google TaskDayHikerGoogle日历扩展),Reader PlusGoogel 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吧。