这两天折腾的换上了新的主题，也修改了不少东西，发现我现在的口味真是越来越清淡了，网站的配色也都基本是淡色系了，而且风格也越来越简化。我终于发现了我的需求：简单明快的风格，大大的文章宽度，和一套可以分享图片，视频和代码的插件。是的，这样足矣！这篇日志主要是想讲讲我是如何实现文章的字体大小切换调节的，其实这也算是我的宿愿了，一直希望wordpress可以像之前用过的pjblog一样可以允许读者自己调节文章字体的大小。这两天在网上找找，折腾了一下还真实现了这个功能！其实大家不喜欢看废话，咱们就直接药到病除吧！HTML部分 小 中 大 以上的html代码是用来贴到你需要实现该功能的地方的，大家懂的，比如我就放在了文章信息栏（见文章右上角）这个功能是通过jQurey实现的，所以需要引入jQurey代码（引入方式如不清楚请google之），代码如下：$(document).ready(function() { $('#resizer li').click(function() { var fontSize = 14; var name = $(this).attr('id'); if (name == 'f_s') { fontSize -= 2 } else if (name == 'f_l') { fontSize += 2 } else if (name == 'f_m') { fontSize == 14 } $('.post_content p').css('font-size', fontSize + 'px') }); });以上JS代码可以直接写在 footer.php里，但是为了减少非单文章页面不必要的加载多余的代码，可以用以下代码把这段JS括起来：<?php if( is_single() ): ?><?php endif; ?>好了，做完这些工作，相信你的网站已经可以实现字体大小的调节了！有问题请留言，能力范围内尽量解答。（我也是个半吊子） :) 注：以上信息部分来自网络。
设想一个情景，hillin想在自己的710+中安装又小又好看的SofiaSans字体。通过这个情景，让我们来看看在WM系统中修改字体到底是怎么一回事。 1 复制字体文件到系统 情景1.0：复制字体文件sofiasans.ttf到\Windows下，如果剩余空间足够大，就可以成功复制。 情景1.1：hillin的手机刷的是SofiaROM。SofiaROM从定制时就以SofiaSans作为默认字体，但是版本比较低，hillin想升级它。这时候，hillin复制到sofiasans.ttf到\Windows下，出现覆盖文件的提示。选择覆盖文件之后，成功复制文件。 情景1.2：SofiaSans又更新了，hillin再次按情景1.1的方式复制文件，但是系统提示文件正在使用，无法覆盖。 这里我们就要考虑WinCE特殊的文件管理机制。对于刷到ROM中的文件，可以使用一个新的同名文件将其覆盖。覆盖时不会删除ROM中的文件，而是用某种 方式隐藏了它，以后每次当调用这个文件时，都会调用覆盖后的新文件。但是需要注意到是，旧文件依然存在。因此即使执行了覆盖操作，即使你看不见旧文件了， 旧文件依然占据它所占有的空间。 而对于并非处于ROM中的文件，则是另一套运作方式。覆盖操作会删除旧文件，然后写入新文件。这样旧文件将彻底不复存在，也就不会占据额外的空间了。 但是，区别于我们见过的几乎所有操作系统，WinCE有一个奇怪的特性，就是即使一个文件正在使用，我们也可以修改它的文件名。这为解决情景1.2中 hillin遇到的麻烦提供了一个机会。系统中原有的Sofiasans.ttf文件正在使用，所以hillin将其改名为Sofiasans.xxx。 这样，系统中正在使用的文件变成了Sofiasans.xxx，他把新的Sofiasans.ttf复制进了系统。重新启动后，系统会调用 Sofiasans.ttf而非Sofiasans.xxx，因此可以将Sofiasans.xxx，也就是之前的Sofiasans.ttf删除。2 修改FontLink hillin查阅了很多关于修改WM字体的文章。这些文章都精确地指出，应该修改注册表来告诉系统应该使用什么字体。修改方法是这样的，找到一个注册表编 辑器，可以用在PC端执行的CE Registry Editor，也可以在手机端使用各种注册表编辑器，例如Resco Explorer就带有这样一个东西。在注册表编辑器中找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft \FontLink\SystemLink，然后修改下面所有项的值为：复制内容到剪贴板代码:字体文件路径,字体名比如说hillin要修改字体为SofiaSans，字体文件路径无疑是\Windows\Sofiasans.ttf，而字体名则是SofiaSans。于是他把所有项都改成了：复制内容到剪贴板代码:\Windows\Sofiasans.ttf,SofiaSans然后重新启动手机。 情景2.0 hillin以前使用的ROM是SofiaROM，使用的是老版本的SofiaSans字体，注册表中的所有键值都是已经修改好的，因此他什么都不用做。重新启动后，他发现修改字体很成功，老版本字体中显示不正确的一些字都被纠正了。 情景2.1 hillin以前使用了一个使用宋体的ROM。复制完文件、改完注册表后，他发现，只有一部分字体变成了SofiaSans，而很多字体依然是宋体。 在WM系统中，FontLink并不是设置系统字体的唯一的地方。系统指定了一些默认字体，这些设置无视FontLink中的任何修改。它们位于注册表的四个不同位置，对应不同的用途：复制内容到剪贴板代码:HKEY_LOCAL_MACHINE\SYSTEM\GDI\SysFnt：系统字体 HKEY_LOCAL_MACHINE\SYSTEM\GWE\Menu\BarFnt：菜单条字体 HKEY_LOCAL_MACHINE\SYSTEM\GWE\Menu\PopFnt：弹出菜单字体 HKEY_LOCAL_MACHINE\SYSTEM\GWE\OOMFnt：内存不足窗口字体每一个键下面都有若干项，指定了这个键对应的用途所使用的字体规则，例如Ht、It、Wt之类。而我们最关心的则是一个叫Nm的项。这个项指定了字体的名称。 于是hillin兴高采烈地把这四个项下的Nm值都改成了SofiaSans。 情景2.3 hillin修改了上述键值后，终于把所有系统字体都改成了SofiaSans。 情景2.4 WM依然顽固，并不是所有字体都改过来了，宋体依然存在。 这是一个令人头疼的问题。 hillin分析了一下，可能是因为宋体之类的字体依然存在于系统中，系统会无条件地优先调用这些字体。他翻了翻\Windows文件夹，发现了两个可疑 文件：sunfon.ac3，大家都知道这是宋体的字体文件，以及nina.ttf，这应该是系统中的英文字体。但是这些文件位于ROM中，是无法删除 的。怎么办呢？hillin灵机一动，把sofiasans.ttf复制了两份，改名为sunfon.ac3和nina.ttf，覆盖了系统中原有的文 件。 情景2.5 覆盖文件后，hillin重新启动了手机。结果很多文字变成了框框。 看起来直接覆盖这两个文件是行不通的？事实是这样的：sunfon.ac3是一个特殊的Truetype字体文件(ttf文件)。它包含了字模信息，但是 不包含字体名称之类的信息。系统调用sunfon.ac3时只会读取其中的字模，而不管这是个什么字体，因此用sofiasans.ttf代替 sunfon.ac3是可行的。但是nina.ttf不一样。系统调用时，指名道姓要调用“nina”字体，而非“nina.ttf”这个文件。看，情况 就是这样。虽然nina.ttf被sofiasans.ttf代替了，但是系统无法从新的nina.ttf中找到nina这个字体。因此应该用这个字体显 示的地方都变成了框框。 情景2.6 好在hillin懂得一些字体制作的知识。他用字体编辑软件打开sofiasans.ttf，然后把字体名改成nina，得到一个改名为nina的SofiaSans字体，并且把这个字体替换掉原有的nina.ttf。终于，重新启动后，一切都表现正常了。 常用的字体编辑软件有Font Creator Program(FCP)、FontForge 等。FCP因本身的问题是无法编辑sofiasans.ttf的，而FontForge是一个UNIX软件，让它在Windows下运行不是一个简单的事 情。况且nina.ttf本身只包含英文字模信息，大小只有100来KB，用一个2M多的(如果本例中使用的是其他字体，还会更大)的Sofiasans 来代替它实在很划不来。因此，可以变通一下，使用其他字体来代替nina.ttf。例如本例中，Sofiasans.ttf的英文部分是Segoe Condensed，那么可以找来这个字体(segoe.ttf)，修改字体名为nina后代替nina.ttf。 3 打开ClearType ClearType可以平滑字体的边缘，使其显示更加美观。对于一些没有点阵字库的字体，不开启ClearType简直就是一场灾难，因为这些字体会显示得极其难看。 打开ClearType很简单，只要在HKEY_LOCAL_MACHINE\SYSTEM\GDI\下建立一个叫ClearType的值即可。如果你觉得不保险，还可以在这个键下建立一个叫ClearType的DWORD值，值为1。修改后重新启动即可。 4 修改FontAlias调整字体大小 很多人向hillin抱怨说SofiaSans太小了。这里太小了不是说字体文件太小了，而是文字的显示有点小。修改FontAlias可以解决这个问 题。按照MSDN的说法，FontAlias有两种用法：字体别名(Font name aliasing)和字体固定(Font fixing)。两种用法的玄机都存在于注册表项HKEY_LOCAL_MACHINE\System\GDI\FontAlias里。 第一种用法是给一个字体取一个别名。例如，我们想让应该显示Tahoma字体的地方显示为SofiaSans，那么只要在这个键下新建一个字符串值项取名 为Tahoma，值为SofiaSans。当然这一点FontLink已经替我们做过了，我们关心的是如何整体放大（或缩小）字体的大小，也就是第二种用 法。 例如，我们想让所有10pt(点)大小的SofiaSans字体都显示成14pt。那么新建一个字符串值：SofiaSans:-10，值为 SofiaSans:-14。不过hillin觉得SofiaSans的大小其实正好，所以如果你觉得这个大小让你不够舒服，就自己在这里摸索一下吧。转载自IOICN