<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Fwolf's Blog &#187; font - Fwolf's Blog</title>
	<atom:link href="http://www.fwolf.com/blog/post/tag/font/feed" rel="self" type="application/rss+xml" />
	<link>http://www.fwolf.com/blog</link>
	<description>随心·随意·随缘·努力～</description>
	<lastBuildDate>Sun, 29 Aug 2010 14:52:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Ubuntu升级到9.04 Jaunty的变化和遇到的问题</title>
		<link>http://www.fwolf.com/blog/post/442</link>
		<comments>http://www.fwolf.com/blog/post/442#comments</comments>
		<pubDate>Fri, 15 May 2009 15:20:55 +0000</pubDate>
		<dc:creator>Fwolf</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[fluxbox]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[jaunty]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[upgrade]]></category>
		<category><![CDATA[xorg]]></category>

		<guid isPermaLink="false">http://www.fwolf.com/blog/post/442</guid>
		<description><![CDATA[长按键盘自动连续击键的间隔缩短了。 显卡驱动没有问题，终于能够摆脱8.10里像涂了墨水一样的中文字乱码了。 Firefox的速度好像也快了不少，或许也是显卡驱动的原因？ Fluxbox apps文件中Position设置LOWERLEFT/BOTTOMLEFT原来时从屏幕最下方算间距，现在时从工具栏上方开始算，所以原来的值要减去工具栏的高度（25）。 消失很久的启动时的Splash屏又回来了，不过是Xubuntu的小老鼠（我用的WM是Fluxbox），想取消的话，删掉usplash及其相关的包即可。 如果在没有正式发布的时候就升级了，每天的更新比正式发布后要多得多，每天都要下载一大堆包升级，得考虑好，当然你也可以忍着不频繁升级。 Fluxbox任务栏上当前聚焦的窗口和其他窗口的风格是一样的，区分不开了，更换任何styles都无效。 Firefox窗口的标题栏里中文字显示为方块 先这个是Gnome的问题，所有窗口标题栏中包含中文时都是方块，而Fluxbox工具栏上是能够正确显示中文的。尝试更换不同的fluxbox styles发现menu.title.font设置为dejavu字体时窗口标题栏就能正常显示中文了，其他的窗口内容、网页中文全部显示正常。 终于让我找到原因了，又是一个哭笑不得的问题，在我自定义风格里，使用了dejavusans这个字体，而这个字体现在好像在系统中找不到了，因此它就像出错后就不再往下执行了一样，导致后面overlay里定义的新字体也不生效，窗口栏上的中文就成方块了。换其他style之所以能正常显示窗口标题栏上的中文，是因为他们没用dejavusans这个字体。最后的解决方案，把这个自定义style里的dejavusans替换成dejavu -_-! 字体大小dpi优化 字体DPI设置会根据显示器进行优化，而不再局限于默认的96DPI，还可以在System → Preferences → Appearance → Fonts → Details里自行定义。原来是在.Xresources里设置的Xft.dpi:96，不知道还有用没。目前发现的问题是窗口标题栏中的文字比以前大了一些。 我的Fluxbox还遇到了一个问题，屏幕尺寸、位置计算出现了错误，原先我是/etc/gdm/Init/Default中用xrandr -s 1024x768强制重设分辨率，现在把这行禁用后发现桌面的“尺寸”比1024大，鼠标移动到屏幕边缘后会自动移动，但显示不全。 $ xdpyinfo &#124;grep resolution resolution: 78x78 dots per inch 78是显示器真正的dpi数，但按这个设置又显得字太小了。最后，把xorg.conf里大于1024的分辨率都删掉，这样就可以去掉上面xrandr那句了，显示也正常了，dpi仍然用的是96。 上某些网站中文字模糊（像粗体字那样的模糊） 打开/etc/fonts/conf.d/44-wqy-zenhei.conf，找到下面这行： &#60;edit name=&#34;antialias&#34; mode=&#34;assign&#34;&#62;&#60;bool&#62;true&#60;/bool&#62;&#60;/edit&#62; 把true改成false后重启X即可。 Ctrl+Alt+Backspace关闭X的组合键被禁用了 编辑/etc/X11/xorg.conf，在最后加上： Section &#34;ServerFlags&#34; Option &#34;DontZap&#34; &#34;no&#34; EndSection Tags: fluxbox, font, jaunty, Ubuntu, [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li>长按键盘自动连续击键的间隔缩短了。</li>
<li>显卡驱动没有问题，终于能够摆脱8.10里像涂了墨水一样的中文字乱码了。</li>
<li>Firefox的速度好像也快了不少，或许也是显卡驱动的原因？</li>
<li>Fluxbox apps文件中Position设置LOWERLEFT/BOTTOMLEFT原来时从屏幕最下方算间距，现在时从工具栏上方开始算，所以原来的值要减去工具栏的高度（25）。</li>
<li>消失很久的启动时的Splash屏又回来了，不过是Xubuntu的小老鼠（我用的WM是Fluxbox），想取消的话，删掉<code>usplash</code>及其相关的包即可。</li>
</ul>

<p>如果在没有正式发布的时候就升级了，每天的更新比正式发布后要多得多，每天都要下载一大堆包升级，得考虑好，当然你也可以忍着不频繁升级。</p>

<h4>Fluxbox任务栏上当前聚焦的窗口和其他窗口的风格是一样的，区分不开了，更换任何styles都无效。</h4>

<h4>Firefox窗口的标题栏里中文字显示为方块</h4>

<p>先这个是Gnome的问题，所有窗口标题栏中包含中文时都是方块，而Fluxbox工具栏上是能够正确显示中文的。尝试更换不同的fluxbox styles发现<code>menu.title.font</code>设置为dejavu字体时窗口标题栏就能正常显示中文了，其他的窗口内容、网页中文全部显示正常。</p>

<p>终于让我找到原因了，又是一个哭笑不得的问题，在我自定义风格里，使用了dejavusans这个字体，而这个字体现在好像在系统中找不到了，因此它就像出错后就不再往下执行了一样，导致后面overlay里定义的新字体也不生效，窗口栏上的中文就成方块了。换其他style之所以能正常显示窗口标题栏上的中文，是因为他们没用dejavusans这个字体。最后的解决方案，把这个自定义style里的dejavusans替换成dejavu -_-!</p>

<h4>字体大小dpi优化</h4>

<p>字体DPI设置会根据显示器进行优化，而不再局限于默认的96DPI，还可以在System → Preferences → Appearance → Fonts → Details里自行定义。原来是在<code>.Xresources</code>里设置的<code>Xft.dpi:96</code>，不知道还有用没。目前发现的问题是窗口标题栏中的文字比以前大了一些。</p>

<p>我的Fluxbox还遇到了一个问题，屏幕尺寸、位置计算出现了错误，原先我是<code>/etc/gdm/Init/Default</code>中用<code>xrandr -s 1024x768</code>强制重设分辨率，现在把这行禁用后发现桌面的“尺寸”比1024大，鼠标移动到屏幕边缘后会自动移动，但显示不全。</p>


<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">	$ xdpyinfo <span style="color: #000000; font-weight: bold;">|</span><span style="color: #c20cb9; font-weight: bold;">grep</span> resolution
	  resolution:    78x78 dots per inch</pre></div></div>


<p>78是显示器真正的dpi数，但按这个设置又显得字太小了。最后，把<code>xorg.conf</code>里大于1024的分辨率都删掉，这样就可以去掉上面<code>xrandr</code>那句了，显示也正常了，dpi仍然用的是96。</p>

<h4>上某些网站中文字模糊（像粗体字那样的模糊）</h4>

<p>打开<code>/etc/fonts/conf.d/44-wqy-zenhei.conf</code>，找到下面这行：</p>


<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;edit</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;antialias&quot;</span> <span style="color: #000066;">mode</span>=<span style="color: #ff0000;">&quot;assign&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;bool<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>true<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/bool<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/edit<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>


<p>把true改成false后重启X即可。</p>

<h4>Ctrl+Alt+Backspace关闭X的组合键被禁用了</h4>

<p>编辑<code>/etc/X11/xorg.conf</code>，在最后加上：</p>


<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;">	Section <span style="color: #933;">&quot;ServerFlags&quot;</span>
		Option <span style="color: #933;">&quot;DontZap&quot;</span> <span style="color: #933;">&quot;no&quot;</span>
	EndSection</pre></div></div>


	Tags: <a href="http://www.fwolf.com/blog/post/tag/fluxbox" title="fluxbox" rel="tag">fluxbox</a>, <a href="http://www.fwolf.com/blog/post/tag/font" title="font" rel="tag">font</a>, <a href="http://www.fwolf.com/blog/post/tag/jaunty" title="jaunty" rel="tag">jaunty</a>, <a href="http://www.fwolf.com/blog/post/tag/ubuntu" title="Ubuntu" rel="tag">Ubuntu</a>, <a href="http://www.fwolf.com/blog/post/tag/upgrade" title="upgrade" rel="tag">upgrade</a>, <a href="http://www.fwolf.com/blog/post/tag/xorg" title="xorg" rel="tag">xorg</a><br />

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.fwolf.com/blog/post/170" title="[Ubuntu]明明白白安装中文字体 (2006-05-17)">[Ubuntu]明明白白安装中文字体</a> (20)</li>
	<li><a href="http://www.fwolf.com/blog/post/403" title="Ubuntu从Gutsy升级到Hardy，php5-sybase又掉链子 (2008-06-12)">Ubuntu从Gutsy升级到Hardy，php5-sybase又掉链子</a> (2)</li>
	<li><a href="http://www.fwolf.com/blog/post/414" title="接多显示器的一点提示 (2008-07-17)">接多显示器的一点提示</a> (0)</li>
	<li><a href="http://www.fwolf.com/blog/post/428" title="升级到Ubuntu Intrepid后感觉到的一些变化 (2009-01-06)">升级到Ubuntu Intrepid后感觉到的一些变化</a> (0)</li>
	<li><a href="http://www.fwolf.com/blog/post/426" title="升级到8.10 intrepid过程中libc6依赖性死循环问题的解决 (2009-01-04)">升级到8.10 intrepid过程中libc6依赖性死循环问题的解决</a> (6)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.fwolf.com/blog/post/442/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>在GLPI中输出中文PDF文件</title>
		<link>http://www.fwolf.com/blog/post/434</link>
		<comments>http://www.fwolf.com/blog/post/434#comments</comments>
		<pubDate>Wed, 01 Apr 2009 17:19:00 +0000</pubDate>
		<dc:creator>Fwolf</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[chinese]]></category>
		<category><![CDATA[diff]]></category>
		<category><![CDATA[export]]></category>
		<category><![CDATA[ezpdf]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[GLPI]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[TCPDF]]></category>
		<category><![CDATA[utf8]]></category>

		<guid isPermaLink="false">http://www.fwolf.com/blog/post/434</guid>
		<description><![CDATA[PDF，好东西，就是麻烦，以前鼓捣ThingkingRock的时候打过交道，感觉挺复杂，现在捣鼓GLPI时又遇到了，GLPI用的是ezpdf。 先说点闲话，有些比较偏门的东西是真难找啊，比如今天要说的，算不上是学术问题，也没有企业级的支持（如果你愿意打电话咨询GLPI官方又懂法语我没话说），只能在网上大海捞针的找，一方面这是很辛苦的，查阅各类资料几十篇（前提还是你得能找到），写下来也就寥寥百余字，所以我一般愿意把我翻到的资料列在后面作为参考，或许能为别人省点力气；另一方面就是搜索引擎的功劳了，记得还没有google和百度的时候，只有一个yahoo分类目录，要搜问题就得到几个大型论坛比如CSDN里去翻，信息量就窄多了，另外搜索引擎的质量在这里也起到了很大的作用，信息重复率高不高、能否最快速度找到原创内容、信息关联度、是否有用等因素都关系到用户花费时间的多少，这也是我很少用百度的原因之一，还有就是感觉百度的英文资料差太多了。────谨以此纪念我几乎24小时的连续工作以及疲惫的眼睛和脖子。 EZPDF EZPDF一般是不支持unicode多字节编码的，不过还是作了一些尝试，毕竟是GLPI内置的，搞定了用着方便。首先EZPDF使用afm字体，要得到afm字体，需要用到ttf2tex，在pdfTeX包里： $ aptitude install ttf2tex 转换字体，这次我不用宋体了，用于打印的，还是仿宋看着舒服，用了个方正仿宋简体： $ ttf2afm -e T1-WGL4.enc -o fzfangsong.afm fzfangsong.TTF 试了试不能用，然后用afm2font处理： $ php5 afm2font.php fzfangsong 得到php_fzfangsong.font等文件，但这些文件无论怎么套上ezpdf都是不行，什么文字都没了，pdf文件中倒是显示了正确的字体名： fzfangsong Type1 Not embedded 再在网上翻资料，简直就是钻到TeX用户堆儿里去了，忽然发现windows字体应该是TrueType字体，而ezpdf使用的难道是Type1字体，两者之间还需要转换？终于查到基于texlive2008的中文绿色免安装tex系统中有打包的字体，这里面有给TeX用的Type1字体，就是大了点，“dottexlive2008.tar.bz2 仅包含全部字体包和相关宏包”一共是685M，拉下来，好在网速还算很快。把里面的afm字体单独解压出来： $ tar xjvf /big1/dottexlive2008.tar.bz2 .texlive2008/texmf-var/fonts/afm/ $ cd .texlive2008/texmf-var/fonts/afm/cjk/gbkfs $ cat gbkfs??.afm &#62; gbkfs.afm 拿这个gbkfs.afm配置到ezpdf里，能打出字来了，但中文还是问号，估计是因为数据是utf-8编码，而字体是gbk编码的？修改class.ezpdf.php，在function ezProcessText的第一行加上（参考：ezpdf打印德文的处理）： $text = mb_convert_encoding&#40;$text, 'gbk', 'utf-8'&#41;; 还是问号，难道字体要嵌入pdf才行？ 结果又查到一篇Choosing a PHP PDF generation library [...]]]></description>
			<content:encoded><![CDATA[<p>PDF，好东西，就是麻烦，以前<a href="419">鼓捣ThingkingRock</a>的时候打过交道，感觉挺复杂，现在捣鼓GLPI时又遇到了，GLPI用的是ezpdf。</p>

<p>先说点闲话，有些比较偏门的东西是真难找啊，比如今天要说的，算不上是学术问题，也没有企业级的支持（如果你愿意打电话咨询GLPI官方又懂法语我没话说），只能在网上大海捞针的找，一方面这是很辛苦的，查阅各类资料几十篇（前提还是你得能找到），写下来也就寥寥百余字，所以我一般愿意把我翻到的资料列在后面作为参考，或许能为别人省点力气；另一方面就是搜索引擎的功劳了，记得还没有google和百度的时候，只有一个yahoo分类目录，要搜问题就得到几个大型论坛比如CSDN里去翻，信息量就窄多了，另外搜索引擎的质量在这里也起到了很大的作用，信息重复率高不高、能否最快速度找到原创内容、信息关联度、是否有用等因素都关系到用户花费时间的多少，这也是我很少用百度的原因之一，还有就是感觉百度的英文资料差太多了。────谨以此纪念我几乎24小时的连续工作以及疲惫的眼睛和脖子。</p>

<h2>EZPDF</h2>

<p>EZPDF一般是不支持unicode多字节编码的，不过还是作了一些尝试，毕竟是GLPI内置的，搞定了用着方便。首先EZPDF使用afm字体，要得到afm字体，需要用到ttf2tex，在<a href="http://www.tug.org/applications/pdftex/">pdfTeX包</a>里：</p>


<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">	$ <span style="color: #c20cb9; font-weight: bold;">aptitude</span> <span style="color: #c20cb9; font-weight: bold;">install</span> ttf2tex</pre></div></div>


<p>转换字体，这次我不用宋体了，用于打印的，还是仿宋看着舒服，用了个方正仿宋简体：</p>


<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">	$ ttf2afm <span style="color: #660033;">-e</span> T1-WGL4.enc <span style="color: #660033;">-o</span> fzfangsong.afm fzfangsong.TTF</pre></div></div>


<p>试了试不能用，然后用<a href="http://ez.no/developer/contribs/hacks/afm2font__1">afm2font</a>处理：</p>


<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">	$ php5 afm2font.php fzfangsong</pre></div></div>


<p>得到php_fzfangsong.font等文件，但这些文件无论怎么套上ezpdf都是不行，什么文字都没了，pdf文件中倒是显示了正确的字体名：</p>

<pre><code>fzfangsong
Type1
Not embedded
</code></pre>

<p>再在网上翻资料，简直就是钻到TeX用户堆儿里去了，忽然发现windows字体应该是TrueType字体，而ezpdf使用的难道是Type1字体，两者之间还需要转换？终于查到<a href="http://thinfilm.ustc.edu.cn/~liangzi/software/CTeXlive/">基于texlive2008的中文绿色免安装tex系统</a>中有打包的字体，这里面有给TeX用的Type1字体，就是大了点，“dottexlive2008.tar.bz2 仅包含全部字体包和相关宏包”一共是685M，拉下来，好在网速还算很快。把里面的afm字体单独解压出来：</p>


<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">	$ <span style="color: #c20cb9; font-weight: bold;">tar</span> xjvf <span style="color: #000000; font-weight: bold;">/</span>big1<span style="color: #000000; font-weight: bold;">/</span>dottexlive2008.tar.bz2 .texlive2008<span style="color: #000000; font-weight: bold;">/</span>texmf-var<span style="color: #000000; font-weight: bold;">/</span>fonts<span style="color: #000000; font-weight: bold;">/</span>afm<span style="color: #000000; font-weight: bold;">/</span>
	$ <span style="color: #7a0874; font-weight: bold;">cd</span> .texlive2008<span style="color: #000000; font-weight: bold;">/</span>texmf-var<span style="color: #000000; font-weight: bold;">/</span>fonts<span style="color: #000000; font-weight: bold;">/</span>afm<span style="color: #000000; font-weight: bold;">/</span>cjk<span style="color: #000000; font-weight: bold;">/</span>gbkfs
	$ <span style="color: #c20cb9; font-weight: bold;">cat</span> gbkfs??.afm <span style="color: #000000; font-weight: bold;">&gt;</span> gbkfs.afm</pre></div></div>


<p>拿这个gbkfs.afm配置到ezpdf里，能打出字来了，但中文还是问号，估计是因为数据是utf-8编码，而字体是gbk编码的？修改<code>class.ezpdf.php</code>，在<code>function ezProcessText</code>的第一行加上（参考：<a href="http://issues.ez.no/6574">ezpdf打印德文的处理</a>）：</p>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">	<span style="color: #000088;">$text</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mb_convert_encoding</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$text</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'gbk'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'utf-8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>


<p>还是问号，难道字体要嵌入pdf才行？</p>

<p>结果又查到一篇<a href="http://dokeoslead.wordpress.com/2007/12/28/choosing-a-php-pdf-generation-library-for-dokeos/">Choosing a PHP PDF generation library for Dokeos</a>，说ezpdf根本、确实、100%就不支持utf-8编码，合着白折腾了。</p>

<p>到<a href="http://www.ros.co.nz/pdf/">ezpdf官网</a>确认一下，最近的新闻是<code>17 June 2006</code>的，比上面那篇文章还晚，看来ezpdf确实是没法用了。用tcpdf吧，不过在<a href="https://dev.indepnet.net/glpi/roadmap">glpi的roadmap</a>里，<a href="https://dev.indepnet.net/glpi/ticket/712">换上tcpdf</a>是要在0.80实现的，前面还有100+ ticket没完成，也是遥遥无期啊，只好自己动手，丰衣足食了。</p>

<h2>TCPDF</h2>

<p>从官网下载<a href="http://www.tcpdf.org/">tcpdf</a>放到php的include路径下，对照<a href="http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf_fonts">字体设置方法</a>来准备字体：</p>


<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">	$ <span style="color: #7a0874; font-weight: bold;">cd</span> tcpdf<span style="color: #000000; font-weight: bold;">/</span>fonts
	<span style="color: #666666; font-style: italic;"># Simsun字体好像还不是truetype（嵌入了点阵字体），转换有些问题，先拿方正字体来用，正好方正仿宋简体打印用更好看</span>
	<span style="color: #666666; font-style: italic;">#$ ln -s /big2/fonts/xpfonts/simsun.ttf</span>
	<span style="color: #666666; font-style: italic;"># 注意文件名转为小写</span>
	$ <span style="color: #c20cb9; font-weight: bold;">ln</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>big2<span style="color: #000000; font-weight: bold;">/</span>fonts<span style="color: #000000; font-weight: bold;">/</span>fzfont<span style="color: #000000; font-weight: bold;">/</span>fzfangsong.TTF fzfangsong.ttf
	$ utils<span style="color: #000000; font-weight: bold;">/</span>ttf2ufm <span style="color: #660033;">-a</span> <span style="color: #660033;">-F</span> fzfangsong.ttf 
	<span style="color: #666666; font-style: italic;"># 生成了3个新文件</span>
	$ <span style="color: #c20cb9; font-weight: bold;">ls</span>
	fzfangsong.ufm fzfangsong.t1a fzfangsong.afm	
	<span style="color: #666666; font-style: italic;"># 我选的这个方正字体应该是TrueTypeUnicode字体，用TrueType转的不显字</span>
	<span style="color: #666666; font-style: italic;"># 文中有说明，在ttf ufm后面还可以跟参数，这里的false代表不将字体嵌入PDF文档，</span>
	<span style="color: #666666; font-style: italic;"># 那样会使pdf文件大小增大为自身+字体文件大小，很恐怖的</span>
	$ php5 <span style="color: #660033;">-q</span> utils<span style="color: #000000; font-weight: bold;">/</span>makefont.php fzfangsong.ttf fzfangsong.ufm <span style="color: #c20cb9; font-weight: bold;">false</span>
	<span style="color: #666666; font-style: italic;"># 生成可用的文件了</span>
	<span style="color: #007800;">$ls</span>
	fzfangsong.z fzfangsong.php</pre></div></div>


<p>现在弄个简单的例子，能够用tcpdf输出pdf文件了，里面要有这么一句：</p>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetFont</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'fzfangsong'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">16</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>


<p>现在文件尺寸还是太大，因为字体依然是全嵌入的（如果是embedded subset更好，不过TCPDF现在还做不到）。按照那篇文章修改fzfangsong.php文件：</p>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">	<span style="color: #666666; font-style: italic;">//$type='TrueTypeUnicode';</span>
	<span style="color: #000088;">$type</span><span style="color: #339933;">=</span><span style="color: #0000ff;">'cidfont0'</span><span style="color: #339933;">;</span>
	<span style="color: #339933;">...</span>
	<span style="color: #666666; font-style: italic;">//$dw=600;</span>
	<span style="color: #000088;">$dw</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">1000</span><span style="color: #339933;">;</span>
	<span style="color: #339933;">...</span>
	<span style="color: #666666; font-style: italic;">//$enc='';</span>
	<span style="color: #000088;">$diff</span><span style="color: #339933;">=</span><span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">//$file='fzfangsong.z';</span>
	<span style="color: #666666; font-style: italic;">//$ctg='fzfangsong.ctg.z';</span>
	<span style="color: #000088;">$originalsize</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">3548232</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// Chinese Simplified</span>
	<span style="color: #000088;">$enc</span><span style="color: #339933;">=</span><span style="color: #0000ff;">'UniGB-UTF16-H'</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$cidinfo</span><span style="color: #339933;">=</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Registry'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'Adobe'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Ordering'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'GB1'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'Supplement'</span><span style="color: #339933;">=&gt;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">include</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">dirname</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">__FILE__</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'/uni2cid_ag15.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>


<p>现在生成的pdf文件尺寸倒是很小了，但用eivnce看文字全部是空白，这是在Linux下看，跑到windows下看正常，而且完美，gb和big5编码都能显示。又用其它一些字体试了试，都是windows正常但linux下看不了，应该是刚才作的步骤正确，但与平台配合起来还欠点什么。</p>

<p>仔细对比了上面生成的两种pdf文件，以及另外一个用openoffice.org生成的pdf文件（这个应该比较标准吧），发现还是openoffice.org生成的文件又小、效果又好，用的是“已嵌入子集/embedded subset”方式，</p>

<p>最终查到，我基本上已经作好了，问题出在evince身上，安装<code>poppler-data</code>包（evince用这个来处理中文）后，完美解决，字体为非嵌入not embedded方式。生成的pdf文件非常小，用windows和evince浏览也都正常。混合gb2312和big5编码的内容也没问题：evince下中文出西欧字符不出，windows下Adobe Reader只出gb2312的字，Foxit Reader全部中文和西欧字符完美。而在全内嵌字体的情况下，用evince查看big5字符都是小黑块。</p>

<h2>hack GLPI</h2>

<p>接下来是大工程，把ezpdf换成tcpdf。修改<code>inc/export.function.php</code>的<code>function displaySearchFooter</code>函数，把<code>case PDF_OUTPUT_LANDSCAPE</code>和<code>case PDF_OUTPUT_PORTRAIT</code>两部分的内容都换成TCPDF的处理，源数据还借用原来的<code>$PDF_HEADER</code>,<code>$PDF_ARRAY</code>。除了纸张参数不一样，两部分的处理是相同的，下面是一个简单的例子：</p>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">	<span style="color: #666666; font-style: italic;">// --------</span>
	<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'tcpdf/tcpdf.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$PDF_HEADER</span><span style="color: #339933;">,</span><span style="color: #000088;">$PDF_ARRAY</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// create new PDF document</span>
	<span style="color: #000088;">$pdf</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> TCPDF<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'L'</span><span style="color: #339933;">,</span> PDF_UNIT<span style="color: #339933;">,</span> PDF_PAGE_FORMAT<span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'UTF-8'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
&nbsp;
	<span style="color: #666666; font-style: italic;">// set document information</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetCreator</span><span style="color: #009900;">&#40;</span>PDF_CREATOR<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetAuthor</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Fwolf'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetTitle</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$title</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetSubject</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'GLPI Export'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetKeywords</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'TCPDF, PDF, GLPI, export, fwolf, work, asset'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// set header and footer fonts</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setHeaderFont</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">Array</span><span style="color: #009900;">&#40;</span>PDF_FONT_NAME_MAIN<span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> PDF_FONT_SIZE_MAIN<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setFooterFont</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">Array</span><span style="color: #009900;">&#40;</span>PDF_FONT_NAME_DATA<span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> PDF_FONT_SIZE_DATA<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">// remove default header/footer</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setPrintHeader</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setPrintFooter</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
&nbsp;
	<span style="color: #666666; font-style: italic;">// set default monospaced font</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetDefaultMonospacedFont</span><span style="color: #009900;">&#40;</span>PDF_FONT_MONOSPACED<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//set margins</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetMargins</span><span style="color: #009900;">&#40;</span>PDF_MARGIN_LEFT<span style="color: #339933;">,</span> PDF_MARGIN_TOP <span style="color: #339933;">-</span> <span style="color: #cc66cc;">10</span><span style="color: #339933;">,</span> PDF_MARGIN_RIGHT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetHeaderMargin</span><span style="color: #009900;">&#40;</span>PDF_MARGIN_HEADER<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetFooterMargin</span><span style="color: #009900;">&#40;</span>PDF_MARGIN_FOOTER<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//set auto page breaks</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetAutoPageBreak</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #339933;">,</span> PDF_MARGIN_BOTTOM<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//set some language-dependent strings</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setLanguageArray</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$l</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
&nbsp;
	<span style="color: #666666; font-style: italic;">// ---------------------------------------------------------</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// add a page</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">AddPage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// Column width, by conteng max length</span>
	<span style="color: #000088;">$w_max</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getPageWidth</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> PDF_MARGIN_LEFT <span style="color: #339933;">-</span> PDF_MARGIN_RIGHT<span style="color: #339933;">;</span>
	<span style="color: #000088;">$w</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$PDF_ARRAY</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$row</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$row</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$i</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$cell</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #666666; font-style: italic;">// Chinese utf8 2 words length=6, should be 4 here</span>
			<span style="color: #000088;">$cell</span> <span style="color: #339933;">=</span> <span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cell</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$l</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mb_strwidth</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cell</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'utf-8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #666666; font-style: italic;">// FZFangSong is not fixed font, so add some to en chars</span>
			<span style="color: #666666; font-style: italic;">// eg: 哈哈abc</span>
			<span style="color: #666666; font-style: italic;">// strlen = 6 + 3 = 9</span>
			<span style="color: #666666; font-style: italic;">// mbstrlen = 5</span>
			<span style="color: #666666; font-style: italic;">// mbstrwidth = 7</span>
			<span style="color: #000088;">$l</span> <span style="color: #339933;">+=</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$l</span> <span style="color: #339933;">+</span> <span style="color: #990000;">mb_strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cell</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'utf-8'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cell</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
				<span style="color: #339933;">*</span> <span style="color:#800080;">0.3</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$w</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000088;">$w</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$l</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$w</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&lt;</span> <span style="color: #000088;">$l</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000088;">$w</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$l</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #666666; font-style: italic;">// Compare with max width, maybe below 0</span>
	<span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$w_max</span> <span style="color: #339933;">-</span> <span style="color: #990000;">array_sum</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$w</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">// Add back spaces left to each width</span>
	<span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$i</span> <span style="color: #339933;">/</span> <span style="color: #990000;">count</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$w</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$w</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$k</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$v</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$w</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$k</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$v</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$i</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
	<span style="color: #666666; font-style: italic;">// Table title</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetFont</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'fzfangsong'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">14</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Write</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'设备一览表'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'C'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// set font</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetFont</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'fzfangsong'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// Table header</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetFillColor</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">208</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">220</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">255</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetTextColor</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$PDF_HEADER</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$i</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$head</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$w</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">7</span><span style="color: #339933;">,</span> <span style="color: #000088;">$head</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'C'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Ln</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// Rows</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetFillColor</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">224</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">235</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">255</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SetTextColor</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$fill</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$PDF_ARRAY</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$row</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$row</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$i</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$cell</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$w</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">6</span><span style="color: #339933;">,</span> <span style="color: #000088;">$cell</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'LR'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'L'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$fill</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Ln</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$fill</span><span style="color: #339933;">=!</span><span style="color: #000088;">$fill</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Cell</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array_sum</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$w</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'T'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
&nbsp;
	<span style="color: #666666; font-style: italic;">// ---------------------------------------------------------</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//Close and output PDF document</span>
	<span style="color: #000088;">$pdf</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Output</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'glpi.pdf'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'I'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
	<span style="color: #b1b100;">return</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">break</span><span style="color: #339933;">;</span></pre></div></div>


<p>总体上这个例子是照着<a href="http://www.tecnick.com/pagefiles/tcpdf/example_011.phps">官网Colored Tables例子</a>来的。</p>

<p>最后，把这个文件中所有的utf8_decode处理都去掉，完成。</p>

<h4>参考</h4>

<ul>
<li><a href="http://junist.googlepages.com/latex.html">LaTeX说明</a></li>
<li><a href="http://ez.no/ezpublish/documentation/incoming/truetype_font_in_pdf">Truetype font in PDF</a></li>
<li><a href="http://www.joomla.org.tw/phpbb3/viewtopic.php?f=39&amp;t=3040&amp;st=0&amp;sk=t&amp;sd=a&amp;start=30">1.5 PDF中文顯示（大家協助測試~）</a></li>
<li><a href="http://hi.baidu.com/yangzetao888/blog/item/ab10bbd412214106a18bb7cd.html">tcpdf的使用（中文）</a></li>
<li><a href="http://twpug.net/modules/newbb/viewtopic.php?post_id=9348">請問有關 tcpdf 的問題</a></li>
<li><a href="http://drupal.org/node/303499">Make &#8220;Enable/Disable Unicode Mode&#8221; optional?</a></li>
<li><a href="http://drupaltaiwan.org/module/print_friendly_pages">Print Friendly Pages</a></li>
<li><a href="http://joomlab15.exonsoft.com/zh-cn/articles/joomla!15x/50-generatelightweightchinesepdf?showall=1">产生轻薄短小的中文 PDF</a></li>
<li><a href="http://www.wazu.jp/gallery/Fonts_ChineseTraditional.html">U_fonts Traditional Chinese</a></li>
<li><a href="http://www.wazu.jp/gallery/Fonts_ChineseSimplified.html">U_fonts Simplified Chinese</a></li>
<li><a href="http://www.joomla.org.tw/phpbb3/viewtopic.php?f=39&amp;t=3040&amp;p=9785">1.5 PDF中文顯示（大家協助測試~）</a></li>
<li><a href="http://www.lakeice.com/?action=show&amp;id=6">FPDF中文应用攻略</a></li>
<li><a href="http://www.zhaipeng.cn/2008/01/29/php%E4%BD%BF%E7%94%A8fpdf%E5%88%9B%E5%BB%BApdf/">PHP使用FPDF创建PDF</a></li>
</ul>

<h4>Update @ 2009-11-06</h4>

<p>Print to pdf 的时候，Historical 中的 Comments 如何显示？默认的不好，可以考虑换成 diff 信息，如果又不愿用 pear 里的 <a href="http://pear.php.net/package/Text_Diff">xdiff</a>，可以考虑它的前身──用 php 直接实现的 <a href="http://software.zuavra.net/inline-diff/">PHP inline diff</a>。</p>

	Tags: <a href="http://www.fwolf.com/blog/post/tag/chinese" title="chinese" rel="tag">chinese</a>, <a href="http://www.fwolf.com/blog/post/tag/diff" title="diff" rel="tag">diff</a>, <a href="http://www.fwolf.com/blog/post/tag/export" title="export" rel="tag">export</a>, <a href="http://www.fwolf.com/blog/post/tag/ezpdf" title="ezpdf" rel="tag">ezpdf</a>, <a href="http://www.fwolf.com/blog/post/tag/font" title="font" rel="tag">font</a>, <a href="http://www.fwolf.com/blog/post/tag/glpi" title="GLPI" rel="tag">GLPI</a>, <a href="http://www.fwolf.com/blog/post/tag/pdf" title="pdf" rel="tag">pdf</a>, <a href="http://www.fwolf.com/blog/post/tag/php" title="PHP" rel="tag">PHP</a>, <a href="http://www.fwolf.com/blog/post/tag/tcpdf" title="TCPDF" rel="tag">TCPDF</a>, <a href="http://www.fwolf.com/blog/post/tag/utf8" title="utf8" rel="tag">utf8</a><br />

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.fwolf.com/blog/post/133" title="截取固定长度的中文字符串 (2006-02-06)">截取固定长度的中文字符串</a> (2)</li>
	<li><a href="http://www.fwolf.com/blog/post/400" title="选择Eclipse PHP Development Tools(PDT)作为PHP开发工具 (2008-05-03)">选择Eclipse PHP Development Tools(PDT)作为PHP开发工具</a> (8)</li>
	<li><a href="http://www.fwolf.com/blog/post/176" title="让phpmailer支持中文名称的附件 (2006-05-23)">让phpmailer支持中文名称的附件</a> (5)</li>
	<li><a href="http://www.fwolf.com/blog/post/170" title="[Ubuntu]明明白白安装中文字体 (2006-05-17)">[Ubuntu]明明白白安装中文字体</a> (20)</li>
	<li><a href="http://www.fwolf.com/blog/post/315" title="Ubuntu FeistyFawn中文字体配置的变化 (2007-04-22)">Ubuntu FeistyFawn中文字体配置的变化</a> (3)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.fwolf.com/blog/post/434/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>升级到Ubuntu Intrepid后感觉到的一些变化</title>
		<link>http://www.fwolf.com/blog/post/428</link>
		<comments>http://www.fwolf.com/blog/post/428#comments</comments>
		<pubDate>Tue, 06 Jan 2009 15:43:05 +0000</pubDate>
		<dc:creator>Fwolf</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[ATI]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[innodb]]></category>
		<category><![CDATA[intrepid]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[nvidia]]></category>
		<category><![CDATA[ping]]></category>
		<category><![CDATA[sysinfo]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[WenQuanYi]]></category>

		<guid isPermaLink="false">http://www.fwolf.com/blog/?p=428</guid>
		<description><![CDATA[第一，一台服务器，双网卡，配置两个ip地址，这两个ip地址同属一个网段，因此网关设置为相同。升级前一切正常，升级后只能让同网段的其它机器ping通，其它网段机器即使防火墙规则允许也ping不通，去掉其中一个ip地址的网关设置后就可以了。 第二是和mysql相关的怪怪的问题，以前mysql设置中都有一项： innodb_flush_log_at_trx_commit=1 升级后，一台P4 1.7 256M内存的机器insert数据正常，另外一台IBM x3650 双5160 3.0GHz cpu 4G内存机器的insert却极慢（10条数据要5秒），不光是比以前Feisty慢，比刚才那台P4机器都要慢很多倍。将此项值调整为2以后恢复正常，insert 1000条数据耗时0.25秒左右。P4机器也将此值调整为2后有改进，但不如x3650明显，insert 1000条数据耗时5秒多。 第三，登录后欢迎屏幕里的那个系统信息我很喜欢： System information as of Tue Jan 6 23:50:02 CST 2009 System load: 0.0 Memory usage: 77% Processes: 118 Usage of /home: 19.4% of 24.03GB Swap usage: 34% Users logged in: 3 如果没有出现，把landscape-common这个包装上，并且平时可以用landscape-sysinfo命令调出类似信息。 Update @ 2009-01-13 字体问题又出现了，网上有很多修改文泉驿字体的方法，我则是/etc/fonts/conf.avail下44-wqy-zenhei.conf和69-language-selector-zh-cn.conf中WenQuanYi Zen Hei或WenQuanYi Bitmap Song前面加上Simsun，字体倒是还是原样（默认宋体），但firefox和其它X程序有时候字体乱成一片，也有说像墨点或者重叠的，反正鼠标选中后就恢复了，有人说是驱动的问题，把nvidia-glx-96换成nvidia-glx-71干脆X就起不来了，其它的173 177 [...]]]></description>
			<content:encoded><![CDATA[<p>第一，一台服务器，双网卡，配置两个ip地址，这两个ip地址同属一个网段，因此网关设置为相同。升级前一切正常，升级后只能让同网段的其它机器ping通，其它网段机器即使防火墙规则允许也ping不通，去掉其中一个ip地址的网关设置后就可以了。</p>

<p>第二是和mysql相关的怪怪的问题，以前mysql设置中都有一项：</p>

<pre><code>innodb_flush_log_at_trx_commit=1
</code></pre>

<p>升级后，一台P4 1.7 256M内存的机器insert数据正常，另外一台IBM x3650 双5160 3.0GHz cpu 4G内存机器的insert却极慢（10条数据要5秒），不光是比以前Feisty慢，比刚才那台P4机器都要慢很多倍。将此项值调整为2以后恢复正常，insert 1000条数据耗时0.25秒左右。P4机器也将此值调整为2后有改进，但不如x3650明显，insert 1000条数据耗时5秒多。</p>

<p>第三，登录后欢迎屏幕里的那个系统信息我很喜欢：</p>

<pre><code>  System information as of Tue Jan  6 23:50:02 CST 2009

  System load:    0.0                Memory usage: 77%   Processes:       118
  Usage of /home: 19.4% of 24.03GB   Swap usage:   34%   Users logged in: 3
</code></pre>

<p>如果没有出现，把<code>landscape-common</code>这个包装上，并且平时可以用<code>landscape-sysinfo</code>命令调出类似信息。</p>

<h4>Update @ 2009-01-13</h4>

<p>字体问题又出现了，网上有很多修改文泉驿字体的方法，我则是<code>/etc/fonts/conf.avail</code>下<code>44-wqy-zenhei.conf</code>和<code>69-language-selector-zh-cn.conf</code>中<code>WenQuanYi Zen Hei</code>或<code>WenQuanYi Bitmap Song</code>前面加上<code>Simsun</code>，字体倒是还是原样（默认宋体），但firefox和其它X程序有时候字体乱成一片，也有说像墨点或者重叠的，反正鼠标选中后就恢复了，有人说是驱动的问题，把<code>nvidia-glx-96</code>换成<code>nvidia-glx-71</code>干脆X就起不来了，其它的173 177 180根本就不支持我的GForce4 MX440。</p>

<p>如果不换Simsun，用网上的方法调整一下文泉驿字体的处理方式，倒是不乱，但字体略显模糊，还能接受。但其它X程序依然有时文字是乱的。查到可能是显卡驱动的问题，只能等待了？</p>

<p>另外注意一点，<code>nvidia-glx-??</code>安装后必须重启系统，只重启X是不起作用的。</p>

<h4>Update @ 2009-01-16</h4>

<p>旧IBM本本，raedon9000的显卡，fglrx不支持，所以卸掉<code>xorg-driver-fglrx</code>后X能起来了，但登录界面无法输入，并且小红点失效，reinstall xserver-xorg-vesa后<code>dpkg-reconfigure xserver-xorg</code>后好了。总体来说反而比N卡好配。</p>

<h4>Update @ 2009-02-08</h4>

<p>如果安装nvidia显卡驱动时出现这样的错误：</p>

<pre><code>  dpkg-divert: `diversion of /usr/lib/xorg/modules/extensions/libGLcore.so to /usr/lib/nvidia/libGLcore.so.xlibmesa by nvidia-glx-96' clashes with `diversion of /usr/lib/xorg/modules/extensions/libGLcore.so to /usr/lib/nvidia/libGLcore.so.xlibmesa by nvidia-glx-71'
  dpkg: error processing /var/cache/apt/archives/nvidia-glx-96_96.43.09-0ubuntu1.1_i386.deb (--unpack):
   subprocess pre-installation script returned error exit status 2
  Errors were encountered while processing:
   /var/cache/apt/archives/nvidia-glx-96_96.43.09-0ubuntu1.1_i386.deb
  E: Sub-process /usr/bin/dpkg returned an error code (1)
</code></pre>

<p>可以试着用<code>dpkg-divert --list|grep GL</code>找到libGLcore.so相关的内容，可能会定义到另外一个包里了：</p>

<pre><code>$ dpkg-divert --list|grep GL
diversion of /usr/lib/xorg/modules/extensions/libGLcore.so to /usr/lib/nvidia/libGLcore.so.xlibmesa by nvidia-glx-71
diversion of /usr/lib/libGL.so.1 to /usr/lib/nvidia/libGL.so.1.xlibmesa by nvidia-glx-96
diversion of /usr/lib/libGL.so.1.2 to /usr/lib/nvidia/libGL.so.1.2.xlibmesa by nvidia-glx-96
</code></pre>

<p>可以看出是nvidia-glx-71没删干净，在这里手工清除就可以了：</p>

<pre><code>$ sudo dpkg-divert --remove /usr/lib/xorg/modules/extensions/libGLcore.so
Removing `diversion of /usr/lib/xorg/modules/extensions/libGLcore.so to /usr/lib/nvidia/libGLcore.so.xlibmesa by nvidia-glx-71'
</code></pre>

<h4>Update @ 2009-02-09</h4>

<p>ati的驱动也出问题了，rv3??核心的显卡全不支持，比如我的<code>Radeon X600</code>，暂时只能删掉fglrx，用其它的驱动替代。删除<code>xorg-driver-fglrx</code>相关的包，装上<code>xserver-xorg-video-ati</code>，然后<code>sudo dpkg-reconfigure xserver-xorg</code>，生成了一个极小的xorg.conf，图形就有了，但据说3D性能几乎没有，办公用没啥大事。</p>

<pre><code>Section "Device"
    Identifier  "Configured Video Device"
    Option      "UseFBDev"      "true"
EndSection

Section "Monitor"
    Identifier  "Configured Monitor"
EndSection

Section "Screen"
    Identifier  "Default Screen"
    Monitor     "Configured Monitor"
    Device      "Configured Video Device"
EndSection
</code></pre>

<p>Firefox工具栏的自定义设置总是丢失的问题原因也<a href="http://forum.ubuntu.com.cn/viewtopic.php?f=73&amp;p=1015447">找到了</a>，可以暂时禁用TabMixPlus扩展，或者是禁用Ubuntu Firefox Modifications，我选择后者。</p>

<p>字体也有一点小问题，比如方正小标宋的“黑体”效果就没有了，重新刷新一下<code>fc-cache -fv</code>就好了。</p>

	Tags: <a href="http://www.fwolf.com/blog/post/tag/ati" title="ATI" rel="tag">ATI</a>, <a href="http://www.fwolf.com/blog/post/tag/benchmark" title="benchmark" rel="tag">benchmark</a>, <a href="http://www.fwolf.com/blog/post/tag/firefox" title="Firefox" rel="tag">Firefox</a>, <a href="http://www.fwolf.com/blog/post/tag/font" title="font" rel="tag">font</a>, <a href="http://www.fwolf.com/blog/post/tag/innodb" title="innodb" rel="tag">innodb</a>, <a href="http://www.fwolf.com/blog/post/tag/intrepid" title="intrepid" rel="tag">intrepid</a>, <a href="http://www.fwolf.com/blog/post/tag/ip" title="ip" rel="tag">ip</a>, <a href="http://www.fwolf.com/blog/post/tag/mysql" title="mysql" rel="tag">mysql</a>, <a href="http://www.fwolf.com/blog/post/tag/nvidia" title="nvidia" rel="tag">nvidia</a>, <a href="http://www.fwolf.com/blog/post/tag/ping" title="ping" rel="tag">ping</a>, <a href="http://www.fwolf.com/blog/post/tag/sysinfo" title="sysinfo" rel="tag">sysinfo</a>, <a href="http://www.fwolf.com/blog/post/tag/ubuntu" title="Ubuntu" rel="tag">Ubuntu</a>, <a href="http://www.fwolf.com/blog/post/tag/wenquanyi" title="WenQuanYi" rel="tag">WenQuanYi</a><br />

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.fwolf.com/blog/post/152" title="[Ubuntu]使用点滴 (2006-07-08)">[Ubuntu]使用点滴</a> (7)</li>
	<li><a href="http://www.fwolf.com/blog/post/414" title="接多显示器的一点提示 (2008-07-17)">接多显示器的一点提示</a> (0)</li>
	<li><a href="http://www.fwolf.com/blog/post/426" title="升级到8.10 intrepid过程中libc6依赖性死循环问题的解决 (2009-01-04)">升级到8.10 intrepid过程中libc6依赖性死循环问题的解决</a> (6)</li>
	<li><a href="http://www.fwolf.com/blog/post/170" title="[Ubuntu]明明白白安装中文字体 (2006-05-17)">[Ubuntu]明明白白安装中文字体</a> (20)</li>
	<li><a href="http://www.fwolf.com/blog/post/442" title="Ubuntu升级到9.04 Jaunty的变化和遇到的问题 (2009-05-15)">Ubuntu升级到9.04 Jaunty的变化和遇到的问题</a> (2)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.fwolf.com/blog/post/428/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>为ThinkingRock报表添加字体</title>
		<link>http://www.fwolf.com/blog/post/419</link>
		<comments>http://www.fwolf.com/blog/post/419#comments</comments>
		<pubDate>Fri, 01 Aug 2008 07:59:08 +0000</pubDate>
		<dc:creator>Fwolf</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[fop]]></category>
		<category><![CDATA[GTD]]></category>
		<category><![CDATA[ThinkingRock]]></category>

		<guid isPermaLink="false">http://www.fwolf.com/blog/?p=419</guid>
		<description><![CDATA[ThinkingRock是一款用Java编写的跨平台的GTD工具，我试用过很多GTD工具，在线的、单机的、自架服务器的，转了好几个圈，最后又转回来用它了，主要理由就是方便，该复杂的功能就要复杂，该简单的功能就要简单，可以用Project/Action来组织复杂事务，支持任务分配（当然只是给自己看的，没有协作功能），还算方便够用的报表功能。说到报表就到本文的主题了，软件自带的几个字体都无法显示中文，生成pdf报表之后里面的中文都会变成井字号#，所以需要自己安装中文字体。 参照官方的字体安装说明，核心意思是该软件的字体读取使用了FOP，而这个FOP需要Font Metrics文件才能工作。FOP是Apache中的一个项目，我没有深入去研究，不过网站上也有一篇比较清楚的文章教人如何生成这个Font Metrics文件。 但文章中的例子，使用库文件的位置和形式有点小问题，-cp后面是各个库文件，要能访问到才行，文中的路径显然不合适；文中各个库文件之间是用分号;间隔，这是在Windows中的写法，放nix下就错了，可以换成冒号:。所以，命令就变成了这个样子，注意所在路径的变化和相对路径： $ cd /big2/tools/tr-2.0.1/tr/resource/fop $ ln -s /big2/fonts/xpfonts/simsun.ttf $ java -cp ../../modules/ext/fop-0.93.jar:../../modules/ext/avalon-framework-4.2.0.jar:../../modules/ext/commons-logging-1.0.4.jar:../../modules/ext/commons-io-1.1.jar org.apache.fop.fonts.apps.TTFReader -ttcname "SimSun" simsun.ttf simsun.xml 如果字体文件中包含多个字体，而你指定了错误的字体名称，系统会给出提示： TTF Reader for Apache FOP 0.93 Parsing font... Reading simsun.ttf... This is a TrueType collection file with 2 fonts Containing the following fonts: SimSun NSimSun Error while building XML font metrics file. java.io.IOException: [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.thinkingrock.com.au/">ThinkingRock</a>是一款用Java编写的跨平台的GTD工具，我试用过很多GTD工具，在线的、单机的、自架服务器的，转了好几个圈，最后又转回来用它了，主要理由就是方便，该复杂的功能就要复杂，该简单的功能就要简单，可以用Project/Action来组织复杂事务，支持任务分配（当然只是给自己看的，没有协作功能），还算方便够用的报表功能。说到报表就到本文的主题了，软件自带的几个字体都无法显示中文，生成pdf报表之后里面的中文都会变成井字号<code>#</code>，所以需要自己安装中文字体。</p>

<p>参照<a href="http://www.thinkingrock.com.au/faq.php#faq6">官方的字体安装说明</a>，核心意思是该软件的字体读取使用了FOP，而这个FOP需要Font Metrics文件才能工作。FOP是Apache中的一个项目，我没有深入去研究，不过网站上也有<a href="http://xmlgraphics.apache.org/fop/0.94/fonts.html#custom">一篇比较清楚的文章教人如何生成这个Font Metrics文件</a>。</p>

<p>但文章中的例子，使用库文件的位置和形式有点小问题，<code>-cp</code>后面是各个库文件，要能访问到才行，文中的路径显然不合适；文中各个库文件之间是用分号<code>;</code>间隔，这是在Windows中的写法，放nix下就错了，可以换成冒号<code>:</code>。所以，命令就变成了这个样子，注意所在路径的变化和相对路径：</p>

<pre><code>$ cd /big2/tools/tr-2.0.1/tr/resource/fop
$ ln -s /big2/fonts/xpfonts/simsun.ttf
$ java -cp ../../modules/ext/fop-0.93.jar:../../modules/ext/avalon-framework-4.2.0.jar:../../modules/ext/commons-logging-1.0.4.jar:../../modules/ext/commons-io-1.1.jar org.apache.fop.fonts.apps.TTFReader -ttcname "SimSun" simsun.ttf simsun.xml
</code></pre>

<p>如果字体文件中包含多个字体，而你指定了错误的字体名称，系统会给出提示：</p>

<pre><code>TTF Reader for Apache FOP 0.93

Parsing font...
Reading simsun.ttf...
This is a TrueType collection file with 2 fonts
Containing the following fonts: 
SimSun
NSimSun
Error while building XML font metrics file.
java.io.IOException: Name does not exist in the TrueType collection: Simsun
</code></pre>

<p>看到没，SimSun和NSimSun俨然就是宋体和新宋体啊。生成成功之后，simsun.xml就是我们得到的Font Metrics文件，所以接下来只需要再修改一下<code>fop.xconf</code>，把新字体的设置加进去就可以了：</p>

<pre><code>&lt;font metrics-url="simsun.xml" kerning="yes" embed-url="simsun.ttf"&gt;
  &lt;font-triplet name="SimSun" style="normal" weight="normal"/&gt;
&lt;/font&gt;
&lt;font metrics-url="simsun.xml" kerning="yes" embed-url="simsun.ttf"&gt;
  &lt;font-triplet name="SimSun" style="normal" weight="bold"/&gt;
&lt;/font&gt;
&lt;font metrics-url="simsun.xml" kerning="yes" embed-url="simsun.ttf"&gt;
  &lt;font-triplet name="SimSun" style="italic" weight="normal"/&gt;
&lt;/font&gt;
</code></pre>

<p>好了，现在ThinkingRock的Tools -&gt; Options -&gt; Miscellaneous -&gt; Action Screens中，就可以选择中文字体SimSun了，各种报表pdf中的中文也都会正常显示。</p>

<h4>参考</h4>

<ul>
<li><a href="http://www.fallleaf.net/content/view/148/9/">为ThinkingRock的REPORT添加中文字体</a></li>
<li><a href="http://www.mifengtd.cn/articles/add_fonts_for_thinkingrock_reports.html">ThinkingRock Hacks:让Report输出中文</a></li>
</ul>

	Tags: <a href="http://www.fwolf.com/blog/post/tag/font" title="font" rel="tag">font</a>, <a href="http://www.fwolf.com/blog/post/tag/fop" title="fop" rel="tag">fop</a>, <a href="http://www.fwolf.com/blog/post/tag/gtd" title="GTD" rel="tag">GTD</a>, <a href="http://www.fwolf.com/blog/post/tag/thinkingrock" title="ThinkingRock" rel="tag">ThinkingRock</a>, <a href="http://www.fwolf.com/blog/post/tag/tools" title="Tools" rel="tag">Tools</a><br />

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.fwolf.com/blog/post/400" title="选择Eclipse PHP Development Tools(PDT)作为PHP开发工具 (2008-05-03)">选择Eclipse PHP Development Tools(PDT)作为PHP开发工具</a> (8)</li>
	<li><a href="http://www.fwolf.com/blog/post/17" title="我的email客户端软件选择历程 (2005-05-23)">我的email客户端软件选择历程</a> (7)</li>
	<li><a href="http://www.fwolf.com/blog/post/439" title="小巧的编辑器Geany (2009-04-20)">小巧的编辑器Geany</a> (6)</li>
	<li><a href="http://www.fwolf.com/blog/post/433" title="好玩有趣又有用的Mockups (2009-03-02)">好玩有趣又有用的Mockups</a> (4)</li>
	<li><a href="http://www.fwolf.com/blog/post/434" title="在GLPI中输出中文PDF文件 (2009-04-02)">在GLPI中输出中文PDF文件</a> (2)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.fwolf.com/blog/post/419/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>选择Eclipse PHP Development Tools(PDT)作为PHP开发工具</title>
		<link>http://www.fwolf.com/blog/post/400</link>
		<comments>http://www.fwolf.com/blog/post/400#comments</comments>
		<pubDate>Fri, 02 May 2008 17:56:21 +0000</pubDate>
		<dc:creator>Fwolf</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[Develop]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PDT]]></category>
		<category><![CDATA[Smarty]]></category>
		<category><![CDATA[wordwrap]]></category>
		<category><![CDATA[Zend]]></category>

		<guid isPermaLink="false">http://www.fwolf.com/blog/?p=400</guid>
		<description><![CDATA[vi虽然轻巧，但一来在图形界面下没有必要一定用纯cli的东东，二来在项目开发的环境中vi有些吃力。Zend Studio呢一直用着他的keygen也挺不好意思的，功能上我只能说是一般，再一般不过了，就是个图形化的编辑器，带代码提示什么的辅助功能，最有用印象最深的居然是选择多行然后用TAB整体缩进。 所以，尝试着把开发工具更换为PHP Development Tools(PDT)，eclipse的大名早有耳闻，只是从来不用java，也就没有摸过。早在2004年底作项目的时候见同事用过，慢就一个字，强也是一个字。至于为何不选PHPEclipse，倒也不是听到网上一边倒的声音，而是我实在是有点不习惯它的复杂，相比之下刚出炉不久功能不全的PHP Development Tools(PDT)正和我意。 我是从官网下载的pdt-all-in-one-R20080103-linux-gtk.tar.gz，有点像懒人包，直接解压就能用了，功能基本上都配置好了。额外装了几个插件，都是用系统自带功能Help -&#62; Software Updates -&#62; Find and Instal安装的： SimpleTest, http://simpletest.org/eclipse/，单元测试工具 Subclipse, http://subclipse.tigris.org/update_1.2.x WordWrap, http://ahtik.com/eclipse-update/, 自动折行，不过不太好用，每自动折一行行号也会随之增加，作者说这个问题还比较麻烦，暂时无法解决呢。还是养成手工断行的好习惯吧。 ZendDebugger, http://downloads.zend.com/pdt 基本上就够我用了。这种安装方式实在是很方便，能够后台运行更方便。 配置Debug的时候麻烦一些，其实到后来我也没弄太明白，本来想用XDebug的，不过上官网一看基本上只有for windows的二进制包，linux下的多半还得自己编译（网上的例子也多半是基于windows的环境，很无奈），就转向Zend了。谁知Zend官网上这个Debugger的链接也不好找，产品列表里根本就没有，现在这个更新/安装地址已经忘记是从哪里搞来的了，不过能用。 Debug能用了，不过只限于PHP Script运行方式，如果要完整的web测试的话，还得去修改php.ini加Zend Debugger的扩展，懒得弄了，处理得当的话需要debug的时候不多，一般print_r/var_dump也基本够用了。 PHP Development Tools(PDT)的编辑区比Zend Studio要“小”一些，因为界面的边框太“厚”了，Tab也有点大，可以在界面设置中取消圆角，能省点地方。编辑区小的问题不要紧，Ctrl-M能放到最大，加上其它窗口可以缩起来，用的时候调出来，用完自己还会缩回去，所以总体界面上还是要比Zend Studio要好用。 功能上，最喜欢的就是Eclipse无时无刻不在的语法检查，可以迫使我们摒弃掉一些坏毛病。不过这个功能和Smarty模板合不来，像我原来smarty模板文件都是.html扩展名的，这下可遭殃了，一大堆无法处理的错误信息。中间试过PHPEclipse，它支持Smarty模板，不过是另外分配了一个编辑器，同样也只能认.tpl扩展名，模板编辑功能几乎没有，就剩下一个模板语法高亮显示，居然还不像其它编辑窗口一样能够调整背景（我习惯把编辑区背景设置为#CCE8CF，节省眼力），索性不用了。费点功夫把所有模板都改成.tpl扩展名的，然后当一般纯文本处理，也没有什么不爽的，js和css基本上都是在单独的文件中，有相应的编辑器，手工写点html code也无妨。 不过还是推荐一个PHP Development Tools(PDT)中的for Smarty的插件smartypdt，主意虽好，但程序非常不成熟，在PHP Development Tools(PDT)的eclipse 3.3上基本上没法用，先关注一下，期待以后能成熟起来吧。 最后，总体感觉Eclipse虽然速度依然不快，尤其是启动速度，尤其是我调用远程主机上的项目文件，但其强大的功能足以掩盖这些缺点，还是那句话，谁用谁知道~~这几乎是我用过的可操作性最强的Java软件了。 参考 在Zend Studio for Eclipse 6中自动换行 Eclipse项目的编码设置 Update @ 2008-05-03 [...]]]></description>
			<content:encoded><![CDATA[<p>vi虽然轻巧，但一来在图形界面下没有必要一定用纯cli的东东，二来在项目开发的环境中vi有些吃力。Zend Studio呢一直用着他的keygen也挺不好意思的，功能上我只能说是一般，再一般不过了，就是个图形化的编辑器，带代码提示什么的辅助功能，最有用印象最深的居然是选择多行然后用TAB整体缩进。</p>

<p>所以，尝试着把开发工具更换为<a href="http://www.eclipse.org/pdt/">PHP Development Tools(PDT)</a>，eclipse的大名早有耳闻，只是从来不用java，也就没有摸过。早在2004年底作项目的时候见同事用过，慢就一个字，强也是一个字。至于为何不选<a href="http://www.phpeclipse.de/">PHPEclipse</a>，倒也不是听到网上一边倒的声音，而是我实在是有点不习惯它的复杂，相比之下刚出炉不久功能不全的<a href="http://www.eclipse.org/pdt/">PHP Development Tools(PDT)</a>正和我意。</p>

<p>我是从<a href="http://download.eclipse.org/tools/pdt/downloads/">官网</a>下载的pdt-all-in-one-R20080103-linux-gtk.tar.gz，有点像懒人包，直接解压就能用了，功能基本上都配置好了。额外装了几个插件，都是用系统自带功能<code>Help -&gt; Software Updates -&gt; Find and Instal</code>安装的：</p>

<ul>
<li>SimpleTest, <a href="http://simpletest.org/eclipse/">http://simpletest.org/eclipse/</a>，单元测试工具</li>
<li>Subclipse, <a href="http://subclipse.tigris.org/update_1.2.x">http://subclipse.tigris.org/update_1.2.x</a></li>
<li>WordWrap, <a href="http://ahtik.com/eclipse-update/">http://ahtik.com/eclipse-update/</a>, 自动折行，不过不太好用，每自动折一行行号也会随之增加，<a href="http://ahtik.com/blog/eclipse-word-wrap/">作者说</a>这个问题还比较麻烦，暂时无法解决呢。还是养成手工断行的好习惯吧。</li>
<li>ZendDebugger, <a href="http://downloads.zend.com/pdt">http://downloads.zend.com/pdt</a></li>
</ul>

<p>基本上就够我用了。这种安装方式实在是很方便，能够后台运行更方便。</p>

<p>配置Debug的时候麻烦一些，其实到后来我也没弄太明白，本来想用XDebug的，不过上官网一看基本上只有for windows的二进制包，linux下的多半还得自己编译（网上的例子也多半是基于windows的环境，很无奈），就转向Zend了。谁知Zend官网上这个Debugger的链接也不好找，产品列表里根本就没有，现在这个更新/安装地址已经忘记是从哪里搞来的了，不过能用。</p>

<p>Debug能用了，不过只限于PHP Script运行方式，如果要完整的web测试的话，还得去修改php.ini加Zend Debugger的扩展，懒得弄了，处理得当的话需要debug的时候不多，一般print_r/var_dump也基本够用了。</p>

<p><a href="http://www.eclipse.org/pdt/">PHP Development Tools(PDT)</a>的编辑区比Zend Studio要“小”一些，因为界面的边框太“厚”了，Tab也有点大，可以在界面设置中取消圆角，能省点地方。编辑区小的问题不要紧，Ctrl-M能放到最大，加上其它窗口可以缩起来，用的时候调出来，用完自己还会缩回去，所以总体界面上还是要比Zend Studio要好用。</p>

<p>功能上，最喜欢的就是Eclipse无时无刻不在的语法检查，可以迫使我们摒弃掉一些坏毛病。不过这个功能和Smarty模板合不来，像我原来smarty模板文件都是.html扩展名的，这下可遭殃了，一大堆无法处理的错误信息。中间试过<a href="www.phpeclipse.de/">PHPEclipse</a>，它支持Smarty模板，不过是另外分配了一个编辑器，同样也只能认.tpl扩展名，模板编辑功能几乎没有，就剩下一个模板语法高亮显示，居然还不像其它编辑窗口一样能够调整背景（我习惯把编辑区背景设置为#CCE8CF，节省眼力），索性不用了。费点功夫把所有模板都改成.tpl扩展名的，然后当一般纯文本处理，也没有什么不爽的，js和css基本上都是在单独的文件中，有相应的编辑器，手工写点html code也无妨。</p>

<p>不过还是推荐一个<a href="http://www.eclipse.org/pdt/">PHP Development Tools(PDT)</a>中的for Smarty的插件<a href="http://code.google.com/p/smartypdt/">smartypdt</a>，主意虽好，但程序非常不成熟，在<a href="http://www.eclipse.org/pdt/">PHP Development Tools(PDT)</a>的eclipse 3.3上基本上没法用，先关注一下，期待以后能成熟起来吧。</p>

<p>最后，总体感觉Eclipse虽然速度依然不快，尤其是启动速度，尤其是我调用远程主机上的项目文件，但其强大的功能足以掩盖这些缺点，还是那句话，谁用谁知道~~这几乎是我用过的可操作性最强的Java软件了。</p>

<h4>参考</h4>

<ul>
<li><a href="http://www.gaobo.info/read.php/498.htm">在Zend Studio for Eclipse 6中自动换行</a></li>
<li><a href="http://www.v-sky.com/blog/?p=17">Eclipse项目的编码设置</a></li>
</ul>

<h4>Update @ 2008-05-03</h4>

<p>eclipse的配置都保存在workspace目录下，比如设置了php的文件模板，就保存在<code>$workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/</code>目录下的<code>org.eclipse.php.ui.prefs</code>文件中。</p>

<p>快捷键的设置保存在<code>org.eclipse.ui.workbench.prefs</code>中。</p>

<p>隐藏得好深，找了半天。</p>

<h4>Update @ 2008-05-04</h4>

<p>字体方面，建议选择英文等宽字体<code>Bitstream Vera Sans Mono</code>或者<code>DejaVu Sans Mono</code>，这样英文配合中文的显示效果比较好，粗体效果也不错，不影响代码的对齐，看着更舒服。</p>

<h4>Update @ 2008-05-24</h4>

<p>PDT拷贝到另外一台旧机器上，能运行，但PHP相关的内容死活就是不出来，鼓捣了将近4个小时，终于发现，这玩意儿需要jre 1.5以上，安装java 1.6以后，一切正常。唉，望各位引以为戒哪。</p>

<p>就是这篇文章提醒了我：<a href="http://hi.baidu.com/lisri/blog/item/c637327e2cb4d13c0cd7da3a.html">eclipse 最新安装 配置</a></p>

	Tags: <a href="http://www.fwolf.com/blog/post/tag/debug" title="debug" rel="tag">debug</a>, <a href="http://www.fwolf.com/blog/post/tag/develop" title="Develop" rel="tag">Develop</a>, <a href="http://www.fwolf.com/blog/post/tag/eclipse" title="Eclipse" rel="tag">Eclipse</a>, <a href="http://www.fwolf.com/blog/post/tag/editor" title="editor" rel="tag">editor</a>, <a href="http://www.fwolf.com/blog/post/tag/font" title="font" rel="tag">font</a>, <a href="http://www.fwolf.com/blog/post/tag/linux" title="Linux" rel="tag">Linux</a>, <a href="http://www.fwolf.com/blog/post/tag/pdt" title="PDT" rel="tag">PDT</a>, <a href="http://www.fwolf.com/blog/post/tag/php" title="PHP" rel="tag">PHP</a>, <a href="http://www.fwolf.com/blog/post/tag/smarty" title="Smarty" rel="tag">Smarty</a>, <a href="http://www.fwolf.com/blog/post/tag/wordwrap" title="wordwrap" rel="tag">wordwrap</a>, <a href="http://www.fwolf.com/blog/post/tag/zend" title="Zend" rel="tag">Zend</a><br />

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.fwolf.com/blog/post/404" title="忙碌的5月 (2008-06-13)">忙碌的5月</a> (10)</li>
	<li><a href="http://www.fwolf.com/blog/post/439" title="小巧的编辑器Geany (2009-04-20)">小巧的编辑器Geany</a> (6)</li>
	<li><a href="http://www.fwolf.com/blog/post/434" title="在GLPI中输出中文PDF文件 (2009-04-02)">在GLPI中输出中文PDF文件</a> (2)</li>
	<li><a href="http://www.fwolf.com/blog/post/315" title="Ubuntu FeistyFawn中文字体配置的变化 (2007-04-22)">Ubuntu FeistyFawn中文字体配置的变化</a> (3)</li>
	<li><a href="http://www.fwolf.com/blog/post/300" title="针对$_SERVER['PHP_SELF']的跨站脚本攻击（XSS） (2007-03-18)">针对$_SERVER['PHP_SELF']的跨站脚本攻击（XSS）</a> (3)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.fwolf.com/blog/post/400/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
