源码路径odoo/openerp/report/render/rml2pdf/customfonts.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# Search path for TTF files, in addition of rl_config.TTFSearchPath TTFSearchPath = [ '/usr/share/fonts/truetype', # SuSE '/usr/share/fonts/dejavu', '/usr/share/fonts/liberation', # Fedora, RHEL '/usr/share/fonts/truetype/*','/usr/local/share/fonts' # Ubuntu, '/usr/share/fonts/TTF/*', # Mandriva/Mageia '/usr/share/fonts/TTF', # Arch Linux '/usr/lib/openoffice/share/fonts/truetype/', '~/.fonts', '~/.local/share/fonts', # mac os X - from # http://developer.apple.com/technotes/tn/tn2024.html '~/Library/Fonts', '/Library/Fonts', '/Network/Library/Fonts', '/System/Library/Fonts', # windows 'c:/winnt/fonts', 'c:/windows/fonts' ] |
可见对于windows、mac及linux大部分发行版的默认系统字体路径都做了比较全面的配置
1 2 3 4 5 6 7 8 9 10 11 12 13 |
def list_all_sysfonts(): """ This function returns list of font directories of system. """ filepath = [] # Perform the search for font files ourselves, as reportlab's # TTFOpenFile is not very good at it. searchpath = list(set(TTFSearchPath + rl_config.TTFSearchPath)) for dirname in searchpath: for filename in glob.glob(os.path.join(os.path.expanduser(dirname), '*.[Tt][Tt][FfCc]')): filepath.append(filename) return filepath |
接着根据正则*.[Tt][Tt][FfCc]对所有配置路径下的文件扩展名做字体匹配以生成odoo可供配置选择的字体列表
一般Linux下使用最多的开源中文字体是文泉译系列,简称wqy,Centos下yum search wqy相关英文描述(中文笔者补充):
wqy-microhei-fonts.noarch : Compact Chinese fonts derived from Droid
文泉驿微米黑是一个”自由字体”。该字体包含了所有常用简体中文、繁体中文所需要的汉字(最新版本包含超过20932个汉字,完整覆盖GB2312/Big5以及GBK标准字符集)。该字体同时还包含了日文、韩文和其他几十种语言符号。以外,该字体还包含了高质量的Droid Sans拉丁符号和Droid Sans Mono等宽字体,并内置Hinting和Kerning信息。微米黑字体文件极小,特别使用于便携式电脑设备
wqy-unibit-fonts.noarch : WenQuanYi Unibit Bitmap Font
文泉驿Unibit是一款等宽的点阵字体,该字体包含了46,000多个unicode符号,超过27,000多个符合国家标准的汉字点阵字型,是已知的开源字体当中包含符号最完整的字体之一
wqy-zenhei-fonts.noarch : WenQuanYi Zen Hei CJK Font
黑体由于笔画略宽,显示对比度比宋体大,所以越来越得到桌面用户的青睐。文泉驿正黑体正是为这种目的设计的一款开源字体
据上描述可直接根据需要yum install对应的字体名称即可快速安装
当然也可以直接去文泉译官网http://wenq.org/获取最新版本及其它类型中文字体,如文泉驿点阵宋体
然后以优秀的文泉驿微米黑字体为例:
1 2 3 4 5 6 7 8 9 |
[srj@x1c ~]# rpm -ql wqy-microhei-fonts /etc/fonts/conf.d/65-wqy-microhei.conf /usr/share/doc/wqy-microhei-fonts-0.2.0 /usr/share/doc/wqy-microhei-fonts-0.2.0/LICENSE_Apache2.txt /usr/share/doc/wqy-microhei-fonts-0.2.0/LICENSE_GPLv3.txt /usr/share/doc/wqy-microhei-fonts-0.2.0/README.txt /usr/share/fontconfig/conf.avail/65-wqy-microhei.conf /usr/share/fonts/wqy-microhei /usr/share/fonts/wqy-microhei/wqy-microhei.ttc |
最后一行是字体文件物理位置,很不幸用了独立子目录wqy-microhei,这在官方配置列表里是没有的,不过好在扩展名正则已经支持ttc字体了,之前只有ttf字体才可匹配到,所以很多老教程都是直接在源码里加路径加扩展名匹配来解决
那不改源码最简单的方法就是从配置里与系统最低耦合的~/.fonts用户目录来存放可识别字体:
1 |
cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc ~/.fonts/ |
最后重启odoo,设置-配置-常规设置-报表字体-重载字体,字体下拉里就可以直接选择或者搜索到WenQuanYi Micro Hei选择并应用生效后即可完美使用中文打印各种报表了