<?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; fop - Fwolf's Blog</title>
	<atom:link href="http://www.fwolf.com/blog/post/tag/fop/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>为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>
	</channel>
</rss>
