Mac 和 Windows 的中文字体显示效果

本来这篇和上面的 “把简单的事情做好就是不简单” 是一篇,后来加了更多的对比图片导致文章太长,而且内容不怎么相关,所以分成了两篇。

周末在修改了网站的 CSS、测试浏览器兼容性的时候发现一个问题,中文大字体在 IE 上显示发虚。每次使用 Windows 都会觉得不爽,这次是因为 IE 和字体的问题。朋友去度假看世界杯了,留下一台 Sony VGN-Z12GN,不错的机器,超轻、双核、4GB 内存,可是在 Windows 7 上启动一个 IE 的空白页面就不明白为什么鼠标在那里转啊转,转了十几秒才进入 IE,输入博客地址后发现大字体在 IE 上发虚、很难看,多次调整 IE 里面的字体选项也没用,我不清楚在 Windows 上有没有其他的方法和技巧可以绕过这个问题,在我看来这么基本的问题还需要用户手工调整的话本身就是问题,这种事情发生在 Linux 上是可以原谅的,我们可以找理由说 Linux 是免费的、开源的,需要自己加好看的字体(事实上以前大部分人用 Linux 桌面的时候都会从 Windows 那里 “偷” 中文字体),但是发生在久经考验的商业版 Windows 上就说不过去了。很惊讶 Microsoft 为什么没人解决这个基本的问题:字体,拜托,现在是2010年,字体在我的 iPhone HTC Android 上显示都没有问题。下面两张图分别取自 Mac OS X 10.6.4 + Safari 5.0 和 Windows 7 + IE 8.0,很明显 Safari 上的字体(第一张图片)要饱和好看得多:

font on mac

font on windows

更新:下面有位匿名网友在评论里指出可能和 Win 默认语言 or IE 默认语言 or 字体设置有关,我朋友这台 Sony 是英文版 Windows 7,不知道怎么会出来中日文混合字体(日文渲染,缺的字用中文补?),也许曾经在上面装过日语环境吧。重新让其他朋友在 “Windows XP + IE 8.0 + 新宋体” 截了个图,应该是标准宋体:

font on windows

再次得到下面匿名网友的建议,加上 “Windows XP + IE 8.0 + 微软黑体” 的显示效果:

font on windows

感谢 “匿了” 网友的截图,加上 “IE + 雅黑” 的显示效果:

font on windows

评论里又现一位热心网友 hivpn 的截图,“Windows + 雅黑 + MacTypeTray” 的效果:

font on windows

对比上面6张图片,大家喜欢哪个显示效果呢?抛开技术不谈,个人还是喜欢 Mac 上的效果。90%的用户每天90%的时间里都用电脑来处理文字,字体是如此重要,为什么 Microsoft 视而不见呢?字体真的不算高科技。

Vexxhost:$1 1GB XenServer VPS

vexxhost

Vexxhost 是加拿大 Montreal 的一家 VPS 服务商,有一款测试 VPS,1GB Xen VPS 只要1美元,不过只限第一个月,估计他们是为了想吸引客户免费帮助他们测试控制面板,他们自己写了一款 XenServer 的控制面板软件,从他们的视频介绍来看这个控制面板做得不错。与一般的 Xen VPS 服务商不同的是他们采用 Citrix XenServer 版本的 Xen,这款虚拟软件和 VMware ESXi 是同一级别的产品,有 Free, Advanced, Enterprise, Platinum 4个版本可以选择,价格从最低0到最高5000美金,最便宜一款收费 XenServer 也要1000美金,都够买1台低端 DELL 服务器了,估计 Vexxhost 是使用的免费版本的 XenServer. 他们还有 shared, dedicated 等多种 hosting 业务,域名显示是2006年注册的,已经有一段历史了。VPSee 推荐这款 VPS 给新手朋友们,可以拿这款1美元 VPS 练练手,1个月后再转到其他 VPS 服务商。VPS 配置如下:

1GB RAM
60GB 硬盘
1000GB 流量
1个 IP
1美元

没有服务器硬件配置信息。

HostVillage:$3.49 128MB OpenVZ VPS

hostvillage

HostVillage 是来自加拿大多伦多的一家新 VPS 服务商,在 LowEndBox 上放出一个只要2.49美元的白菜价 64MB VPS,官网上找不到,需要通过这个链接购买,不过这款 VPS 只有 1GB 硬盘,实际用途不是很大,还不如官网上正常价格、内存翻倍、价格只加1的一款3.49美元 VPS,这么便宜的 VPS 居然还给 SolusVM 控制面板。域名检查显示这家服务商的域名注册了10年,不过根据网站上的信息来看是从2008年才开始的,在 WHT 上找不到评论,网上也没有太多信息可以参考(只有一些广告),应该来说算一家很新的服务商。他们的数据中心在 Dallas, TX,服务器放在 Colo4. VPS 配置如下:

LowEndBox Basic Upgraded Advanced
64MB Guaranteed 128MB Guaranteed 256MB Guaranteed 512MB Guaranteed
128MB Burst 192MB Burst 384MB Burst 768MB Burst
1GB 硬盘 5GB 硬盘 15GB 硬盘 45GB 硬盘
50GB 流量 25GB 流量 75GB 流量 200GB 流量
1 IP 1 IP 1 IP 1 IP
2.49美元 3.49美元 5.49美元 9.99美元

没有服务器配置信息。

Server Complete:$5 128MB OpenVZ VPS

servercomplete

Server Complete 在 LowEndBox 上放出一个5美元的优惠 VPS,这款 VPS 在官方网站上找不到,需要通过这个链接购买,不知道优惠能维持多久。他们的数据中心有 Dallas TX 和 Atlanta GA 两地可以选择。他们的博客透露了他们正在开发一个叫做 “ Nova” 的 VPS 控制面板,看上去很不错。从博客上来看这家来自佛罗里达的 LLC 公司已经做了2年的 vps/dedicated hosting 业务了,比起那些什么都没有、”fly by night” 的服务商来说要可靠得多。VPS 配置如下:

VSXPathway 控制面板
128MB guaranteed RAM
192MB burst
10GB 硬盘
125GB 流量
1个 IP
5美元

服务器硬件配置信息:

Dual Quad Core Intel Xeon L5420 Processors (8-cores of fury), 24GB Fully Buffered ECC Registered DDR2 memory (holy smokes!), 4 x 1TB Western Digital RAID Edition Server-grade Hard Disks, RAID-10 Disk Array(s)

在 CentOS 上安装和配置 NFS 4.0

NFS 网络文件系统协议最早是于1984年由 SUN 公司开发的,NFSv4 是最新的修订版本,2003年4月发布(RFC 3530)。由于 NFS 是一个开放的协议和标准,所以各个系统上的实现不同,所表现出来就是稳定性和性能差异,VPSee 的经验是 NFS 在 Solaris 上最稳定、功能最丰富;在 FreeBSD 上的性能最好,但是缺少一些功能,比如 FreeBSD 8.0 内核才增加了 NFS 文件锁的支持;NFS 在 Linux 上表现最一般了,所以我们至今仍有部分服务器低调地运行着古老的 Solaris 2.5 和 NFSv3,相比 NFSv3 来说 NFSv4 做了一些重大改进,比如:性能的提升、安全性的增强和 ACL,更容易与防火墙集成等。下面地操作在 CentOS 5.5 上完成。

安装 NFS 服务器

安装 NFS 服务器所需的软件包:

# yum install nfs-utils nfs4-acl-tools portmap

配置 NFS 共享

和安装任何其他服务器软件一样,安装完 NFS 服务后就需要对 NFS 服务进行配置。输出服务器端的某个目录,以便 NFS 客户端能挂载和访问到这个目录:

# vi /etc/exports
/bak              172.16.20.11(rw,sync,fsid=0) 172.16.20.12(rw,sync,fsid=0)

172.16.20.11 和 172.16.20.12 上面的用户可以挂载 NFS 服务器(172.16.20.1)上的 /bak 目录到自己文件系统里;rw 在这里表示可读可写。

把 NFS 服务加入系统启动脚本并且手动启动 NFS 服务:

# chkconfig nfs on
# chkconfig portmap on

# /etc/init.d/portmap start
# /etc/init.d/nfs start

确认 NFSv4 服务器成功运行:

# rpcinfo -p
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    ...
    100005    3   tcp    750  mountd

检查 NFS 服务器是否输出我们想共享的目录 /bak:

# exportfs
/bak          	172.16.20.11
/bak          	172.16.20.12

注意 NFS 使用 portmap,而且新版本的 portmap 使用 hosts.deny 和 hosts.allow 文件来控制访问源,修改这2个配置文件以便 NFS 客户端能正常连接到服务器:

# vi /etc/hosts.deny
portmap:ALL

# vi /etc/hosts.allow
portmap:172.16.38.0/255.255.254.0

使用 NFS 客户端

首先启动 portmap:

# /etc/init.d/portmap start

检查 NFS 服务器端是否有目录共享:

# showmount -e 172.16.20.1
Export list for 172.16.20.1:
/bak 172.16.20.11,172.16.20.12

使用 mount 挂载服务器端的目录 /bak 到客户端某个目录下:

# mkdir /home/vpsee/bak
# mount -t nfs4 172.16.20.1:/ /home/vpsee/bak/

# df -H
Filesystem             Size   Used  Avail Use% Mounted on
...
172.16.39.1:/        232G    23G   198G  11% /home/vpsee/bak

在 /etc/fstab 中挂载 nfs 文件系统:

# vi /etc/fstab
172.16.20.1:/    /bak  nfs4   soft,intr,rsize=8192,wsize=8192,nosuid

# chkconfig netfs on

在成功挂载服务器端的 /bak 后就可以在客户端里操作了,这时候写文件或者拷贝文件的时候会遇到一个权限问题报错 : Permission denied,这是因为上面我们在服务器端建立了 /bak 但是 /bak 的 owner 是 root:root,而客户端的正在访问 NFS 的用户是 vpsee,NFS 要求服务器端和客户端的 UID 和 GID 必须一致,所以要在 NFS 服务器端修改 /bak 的权限和所属:

# chown -R vpsee:vpsee /bak

注意使用 NFS 的时候,客户端的用户 UID 和 GID 必须和服务器端的 UID 和 GID 完全符合,否则会造成权限错误。在小规模用户的情况下,我们可以偷懒通过在客户和服务器两端同时建立相同的用户和组来解决这个问题,但是在大规模用户情况下最好的办法是利用 NIS 或者 OpenLDAP 来统一管理用户,做到一次登录,到处访问。

Troubleshooting

1、在上面的操作过程中,如果你不幸遇到下面这个问题的话,可以尝试更新 Linux kernel 或通过打开 IPv6 来解决这个问题,这是1个 bug

# mount -t nfs4 172.16.20.1:/ /home/vpsee/bak/
mount.nfs4: Cannot allocate memory

2、如果遇到如下问题,可能是因为你的 mount -t nfs 使用的是 nfsv3 协议,需要明确指出使用 nfsv4 协议挂载 mount -t nfs4:

# mount -t nfs 172.16.20.1:/ /home/vpsee/bak/
mount: mount to NFS server '172.16.20.1' failed: RPC Error: Program not registered.

# mount -t nfs4 172.16.20.1:/ /home/vpsee/bak/

NordicVPS:$10 512MB Xen VPS

nordicvps

NordicVPS 是哥本哈根 Active Media 旗下的一个子品牌、是家来自丹麦的 VPS 服务商,2007年开始提供 IT 相关产品和服务,2008年开始做 VPS 业务,域名显示去年3月才注册。他们有多个位置的服务器,德国、法国、美国等,欧洲的服务器托管在 Hetzner,美国的服务器在 San Jose,但不清楚在哪个数据中心。他们曾经提供过只要6美元的 256MB Xen VPS,这次的优惠尺度更大,512MB 的 Xen VPS 只要10美元,而且年付的话有进一步折扣,相当与8.33美元每月。他们家的服务器全部采用8核的 Xeon 或 i7 服务器,他们只公布了高配置的 CPU 而没有公布内存信息可能意在超售,8核 CPU 搭配 24GB-32GB 的内存后理论上可以出售 45-60个 512MB VPS,问题在于不管 CPU 多快内存多大,磁盘 IO 跟不上的话都是白搭,性能瓶颈通常出现在磁盘而不是 CPU,更糟糕的是磁盘 IO 不能简单通过增加磁盘来解决。很多人认为 Xen VPS 不会超售是错误的,只要内存足够大就可以超售,比如1台8 cores/32GB 内存的服务器,理论上可以分出120个 256MB VPS,显然超售了。VPS 配置如下:

SolusVM 控制面板
512MB RAM
1024MB Swap
20GB 硬盘
1000GB 流量
2个 IP
10美元

服务器硬件配置信息:

Duesseldorf DC: 2 x Intel XEON 5504+ @ 8x 2.0+ Ghz, 1 Gbps (1000 Mbps)
Falkenstein DC: Intel i7-920 @ 8x 2.67+ Ghz/Intel i7-975@ 8x 3.33+ Ghz, 100 Mbps
Paris DC: Intel i7-920@ 8x 2.67+ Ghz, 100 Mbp & 1Gbps
San Jose DC: 2 x Intel XEON 5420+ @ 8x 2.50+ Ghz, 50 Mbps

IGXHost:$5.95 96MB Xen/OpenVZ VPS

igxhost

IGXHost 于2008年12月底创立,一家加拿大多伦多的 VPS 公司,主要经营 VPS, semi-dedicated, dedicated server 等业务,自己拥有所有的硬件设备,现在硬件发展迅猛,对于个人和小公司来说租用设备比自己买设备更划算一些、也更灵活一些,在硬件上投资是愚蠢的,设备3年就完全淘汰,3年后可以用一半的价格买到强大一倍的机器,实在没必要自己买硬件,而且里面还有隐含的维护成本和损耗,这家公司自己购买和维护硬件成本应该较高。他们家有支持 Xen 和 OpenVZ 的 VPS,并且有 managed 和 self managed 的,当然价格也不一样,他们使用 SolusVM 控制面板,数据中心在 Netriplex 的 UberBandwidth 数据中心,位置在 North Carolina,也有部分服务器在 Chicago,现在他们家正在 WHT 上打折,6月30日以前购任意一款 VPS 有30%的永久优惠。VPS 配置如下:

XNLIT01 XNLIT02 VZLIT01 VZLIT02
96MB RAM 128MB RAM 96MB RAM 128MB RAM
10GB 硬盘 10GB 硬盘 10GB 硬盘 10GB 硬盘
200GB 流量 300GB 流量 200GB 流量 300GB 流量
1 IP 1 IP 1 IP 1 IP
Xen Xen OpenVZ OpenVZ
5.95美元 7.95美元 4.95美元 6.95美元

服务器配置信息:

Our servers consist of high end dual quad core processors (Intel or AMD) with a 4 ~ 8 hard drive RAID-10 set up to ensure high performance and redundancy.

Cohoster:$5 128MB VMWare VPS

cohoster

Cohoster 是荷兰的一家新 VPS 服务商,网站很粗糙,一些东西没对齐,在订购的时候还出现 “Warning: file_put_contents(/var/www/cache/daily.xml) [function.file-put-contents]: failed to open stream: Permission denied in convertECB.php on line 104” 错误,好像用的是 Joomla CMS 加上一些 shopping cart 的插件搭建的。域名是2个月前注册的,估计还来不及整网站就迫不及待开始在 WHT 上打广告了,这不是砸自己牌子么?他们家 VPS 的特色是采用 VMware 的一款为数据中心定制的 VMware ESXi 免费虚拟产品,这是一款非常棒的虚拟服务器产品,VPSee 曾在一台 SUN Fire x2100 上用 VMware ESXi 虚拟了20个 Minix 用来教操作系统原理和 Minix 内核方面的实验课,VMware ESXi 非常稳定和容易使用,但是定制性没有 Xen 这么灵活。使用这么简单和不确定的产品(VMware ESXi 虽然是免费的,但是是在某种限制使用条款下,可在内部免费使用 VMware ESXi 但是 license 好像不允许这样公共使用)作为自己 business 的基础让人怀疑这家服务商的技术背景和前途,会不会是一个 one man,而且还只会在 Windows 界面上拖拽的那种 “技术人员” 呢。他们的 VPS 正在打8折,价格倒是很便宜,他们有美国和荷兰两地 VPS,美国的 VPS 比荷兰的要便宜一些,据 LowEndBox 透露,他们的机房在 Kansas City,可能是 Wholesale Internet 或 Joe’s Datacenter 中的某家。VPSee 不推荐这家服务商。VPS 配置如下:

Starter Value
128MB RAM 256MB RAM
5GB 硬盘 15GB 硬盘
50GB 流量 100GB 流量
1 IP 1 IP
5美元 10美元

没有服务器配置信息。

AgniHost:$4.99 384MB OpenVZ VPS

agnihost

AgniHost 是佛罗里达的一家 VPS 服务商,域名虽然是去年3月份注册的,不过他们的最早的一篇官方博客是今年5月底才写的,VPSee 猜测他们最近才开始提供 VPS 服务。LowEndBox 上提到他们自家的网站是托管在 RackSpace 的,为啥不放在自己的 VPS 或者服务器上呢?VPSee 总是不能理解那些 hosting 公司把自己家的网站 host 在别家服务器上的做法,自己的网站都不敢放在自己的服务器上怎么能说服别人把东西 host 在自己服务器上呢?他们的 VPS 结点服务器没有放在 RackSpace,而是放在 Chicago 或者 Kansas City 的某两个数据中心里,Kansas City 比较有名的机房有 Wholesale Internet,猜测他们的服务器放在这里。他们家的流量给的很充足,不过他们机房走的是 Level (3) 线路,据说 L3 在中国是杯具,联通、网通、电信最近都有抽的厉害的时候。他们的 VPS 使用 SolusVM 控制面板,每天都会有备份。VPS 配置如下:

U-VPS 0 U-VPS 1
384MB Guaranteed RAM 512MB Guaranteed RAM
512MB Burstable RAM 1024MB Burstable RAM
10GB 硬盘 25GB 硬盘
5 Mbps 带宽、无限流量 5 Mbps 带宽、无限流量
1 IP 2 IP
4.99美元 7.99美元

服务器配置信息:

All nodes feature at least 12 GB of RAM, RAID Redundant hard drives and top of the line processors.

Xen domain0 和 domainU 的时间同步

在 Xen 的默认设置下,domainU 的时间总是要自动和 domain0 保持同步,所以想简单的在 domainU 内部用各种时间、日期等命令改变 domainU 的系统时间并不起作用。如何给 domainU 设置单独的时钟而不受 domain0 的影响呢?我们经常接到我们的 Xen VPS 客户的询问是否能把他们的 VPS 时钟改成北京时间,为什么他们改变了时钟和时区却不起作用等问题。如果每个 VPS 用户(domainU)来自不同国家或时区而想在自己的 VPS 里使用自己的区域时间该怎么办?很简单,只需要在自己的 VPS(domainU)里改变一个参数就可以了,Linux/Xen 很灵活,传递参数方式有很多种,可以用下面任意的一种方式来改变这个设置。

直接改变 xen 内核的运行时参数:

# echo 1 > /proc/sys/xen/independent_wallclock

不过上面的方法会在重启 domainU 的时候丢失,可以把上面的命令加到某个自动启动文件中。

或者也可以把改变 xen 内核设置的参数加到 sysctl.conf 文件中,VPSee 更偏向采用这种方法:

# vi /etc/sysctl.conf
xen.independent_wallclock=1

# sysctl -p

另外一种方法在 VPS 外面进行,需要 VPS 服务商的干预,在 domainU 的启动配置文件种加上以下参数:

# vi /etc/xen/vps01
...
extra='independent_wallclock=1'
...