2008年12月28日星期日

为ThinkingRock报表添加字体

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: Name does not exist in the TrueType collection: Simsun 

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

               

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

参考

Tags: , , , ,

Related posts

Source: http://www.fwolf.com/blog/post/419

2008年7月25日星期五

Wine下运行的广发委托系统退出时可能会误删mail目录

这个问题不是第一次出现了,网上也查不到相关资料,所以感觉有必要说一说,看有没有和我同样遭遇的朋友。

用wine运行广发委托软件,是比较老的版本了,用起来没什么问题的,新版wine下中文的表现还改进了:

stock_trade_client

偶尔的,好像是打开以后发呆时间比较长了更容易出现,点左上角"退出"按钮的时候,原本应该一下子就关闭的,突然变得迟钝、没有响应了。后来一检查,发现$HOME/mail下的文件都没了,把文件删完之后委托程序才正常关闭。

猜测是委托软件为了防病毒、盗号之类的,在进行安全检查的时候,会检查目录下有没有mail文件(因为一般盗号会采用生成邮件,然后发送到自己邮箱的方式),如果有就删除之。windows下一般人很少会用到mail目录的,用wine运行的委托软件不知怎地阴差阳错的就找到了系统默认的mail目录,文件还删得挺干净。

原先想过把mail放到别处,然后ln过来,可并不解决问题;并且mail这个目录也不宜放到别处,因为那样系统生成的邮件就放不过来了,比如crontab里程序运行的输出。

所以现在只能采取两个临时措施,以观后效。一是在用wine启动程序的时候,先cd到委托软件所在目录,即当前目录下就没有mail目录了;二是在winecfg里把到$HOME下的映射都删掉:

wine_remove_my_documents

话再说回来,在$HOME下操作其实也挺危险的,因为对于个人用计算机来说,系统坏了倒是小事,资料丢了才心疼呢。

Tags: , , ,

Related posts

Source: http://www.fwolf.com/blog/post/418

2008年7月22日星期二

接多显示器的一点提示

前两天为了工作需要,打算用我的ATI X600双头显卡接两个显示器,显示同样的内容,鼓捣了一番,记录于此。

ubuntu默认的双头显卡是左右屏的方式,即主屏是正中央,第二个屏在右边,对应xorg.conf中是这样的:

Section "ServerLayout"     Identifier     "Default Layout"     Screen         "Default Screen" 0 0     Screen         "aticonfig-Screen[1]" RightOf "Default Screen" 

其中Default Screen就是主屏,aticonfig-Screen[1]是第二个显示器。RightOf是设定在主屏右边,还有其它值可选,在man xorg.conf里ServerLayout部分有详细解释,大概在1324行:

  • RightOf 右边
  • LeftOf 左边
  • Above 上边
  • Below 下边

但我是想显同样的内容,所以需要删除xorg.conf中的两行内容,一行就是上面贴过的:

Screen         "aticonfig-Screen[1]" RightOf "Default Screen" 

另外一行是和aticonfig-Screen[1]相对应的Device段中的Screen 1,比如:

Section "Device"     Identifier  "aticonfig-Device[1]"     Driver      "fglrx"     BusID       "PCI:1:0:0" # 2 screen same display 2/2: delete below line     Screen      1 

删掉上面的最后一句,然后重启X就可以了。

-EOF-

Tags: , , , ,

Related posts

Source: http://www.fwolf.com/blog/post/414