reportlab的通用unicode字体

我需要从ReportLab创建多语言发票.我觉得是这样的
可以使用UTF 8字符串,但字体存在问题.我
找不到任何可以执行拉丁1,拉丁2,阿拉伯语的免费TTF字体
中文和其他语言同时.有一个字体吗
能够处理这些语言吗? (我们的大多数发票将是
对于en,fr,de,hu,sk,cz,ro,但其中一些需要使用中文.)
谢谢,
laszlo

# 回答1


laszlo nagy gnu unifont
Unicode基本多语言平面.
unifont最初是位图字体,但最近可用
以trueType格式
.
两者都在Debian" Lenny"中找到; " unifont"和" ttf-unifont"
包装分别.
- -
\科学不通过投票工作,它不起作用|
`\授权.
_o__)2006-12-27)|
本·芬尼
# 回答2


gnu unifont
Unicode基本多语言平面.
unifont最初是位图字体,但最近可用
以trueType格式
.
两者都在Debian" Lenny"中找到; " unifont"和" ttf-unifont"
包装分别.
我发现Dejavu就是我所需要的.它涵盖了我需要的语言
和更多:http://dejavu.svn.sourceforge.net/vi.../langcover.txt
谢谢四,您的帮助!
l
# 回答3


我发现Dejavu就是我所需要的.它涵盖了我需要的语言
和更多:http://dejavu.svn.sourceforge.net/vi.../langcover.txt
抱歉,这也没有起作用. Dejavu确实支持西里尔和希腊
字符,但我必须为此加载其他TTF.他们没有
统一. :-(到目前为止唯一工作的是" unifont.tff",但这是
非常丑陋的点大小= 10.
您能告诉我我的Ubuntu系统中使用了哪种字体?
偏好告诉它是"单层",但是当我加载时
veramono.ttf在ReportLab中,它甚至不会显示Latin2字符.
相比之下,请查看此示例,该示例在Geany中显示我的测试程序:http://www.shopzeus.com/geany.jpg
这是一种真正可伸缩的truetype字体,显示拉丁1,拉丁2,
中文,俄语和日本角色.是同一字体吗?做这个
意味着ReportLab是越野车吗?如果我可以加载与geany的字体
用途,它可能会永远解决我的问题.
谢谢,
laszlo
# 回答4


伊恩·道尔顿(Iain Dalton)写道:
您是对的,但是这些PDF文档会显示混合的字符串.结束
用户可以在数据库中输入任意字符串,必须是
提出了.例如,产品的名称可以是阿拉伯语或德语.
可能是可能的 e猜测Unicode字符串使用的语言,
然后选择其他字体.但是我不想遇到麻烦.
使用Pango将是一个好主意.显然Pango能够
随时更改字体并渲染请求的字形.但是,如果我
然后使用Pango,然后我放松了更高的抽象水平
使用ReportLab和Platypus:我需要自动页面标头和页脚,
我需要能够自动重复每个页面上的表标头
(当桌子不适合一页时)等我自己的"柏拉图"
像Pango和PDF渲染的引擎一样,也是一场噩梦.
比这更好,我可以为鸭嘴兽开发自己的可流动对象:
特殊段落,该段落即时更改了使用的真实类型字体.
(将输入字符串分为零件,确定零件的语言和
用自己的字体显示每个部分.)但是,这当然是很多
额外的编程.
最简单的解决方案是使用能够处理所有的字体
我需要的编码.
谢谢,
laszlo
# 回答5


我在winxp上的OpenOffice使用Unicode字体,我相信Lucida Sans
Unicode,这似乎涵盖了整个BMP.我不知道它是否
已经由OO安装或安装,或者如何进入
提取它.
# 回答6


Terry Reedy Lucida sans unicode仅覆盖一小部分Unicode.看起来似乎
覆盖更广泛的范围,因为Windows(可能是OpenOffice)将
如有必要,可以自动从其他字体替换字符.
这是标准的窗口字体.
罗斯·里奇
- -
l/ //罗斯·里奇(Ross Ridge) - 伟大的HTMU
[oo] [oo] rrxplub.uwaterloo.ca
- () - /()/http://www.csclub.uwaterloo.ca/~rridge/
D b //
# 回答7


罗斯·里奇(Ross Ridge)写道:
Lucida sans unicode仅覆盖一小部分Unicode.看起来似乎
覆盖更广泛的范围,因为Windows(可能是OpenOffice)将
如有必要,可以自动从其他字体替换字符.
抱歉,我发布了错误的名字.
Ariel Unicode MS是看起来很完整的.
这是标准的窗口字体.
从MS来看,我猜那也是Windows字体;-).
# 回答8


Terry Reedy ...
它是由Microsoft制作的,但不是标准的Windows字体.我认为
它带有Microsoft Office.
罗斯·里奇
- -
l/ //罗斯·里奇(Ross Ridge) - 伟大的HTMU
[oo] [oo] rrxplub.uwaterloo.ca
- () - /()/http://www.csclub.uwaterloo.ca/~rridge/
D b //
# 回答9


Jeroen Ruigrok van der Werven写道:
并不真地.它错过了很多角色.
好吧,它有拉丁语,希腊,西里尔,希伯来语,阿拉伯语,几个南方
亚洲,藏族,CJK,日语,韩语以及许多符号和特殊的符号
形式.我不知道它想念什么,但我认为这涵盖了OP
要求.
# 回答10


罗斯·里奇(Ross Ridge)写道:
...
它是由Microsoft制作的,但不是标准的Windows字体.我认为
它带有Microsoft Office.
无论如何,我都需要使用HTML.我意识到通用Unicode字体是
Si中的5MB以上 ZE.该报告将是10kb PDF,但我需要嵌入
我可以将其发送给任何人之前的字体.由于某些报告需要是
发送电子邮件,我需要使用其他东西.我不能发送10MB
"一页"报告的电子邮件.
我最终在HTML中实施了报告.我假设
用户的浏览器能够显示所需的任何字符.现在在那里
是另一个问题:如何在没有页面标头/页脚的情况下打印HTML
信息,来自浏览器?但这是另一个问题,可能是
与Python无关.
还是要谢谢你的帮助.
最好的,
laszlo
# 回答11


laszlo nagy 我认为通常,当您将字体嵌入PDF中时,只有字形
实际上是在文档中使用的.不幸的是快速测试
使用ReportLab似乎表明它没有进行优化:看起来
好像它只是嵌入了整个字体.
- -
Duncan Booth http://kupuguy.blogspot.com
# 回答12


Duncan Booth 是的,PDF文件通常仅包含使用字体的嵌入式子集.
可以使用ghostscript的ps2pdf命令(可以接受
PDF文件作为输入)从嵌入式字体中剥离未使用的字形.
罗斯·里奇
- -
l/ //罗斯·里奇(Ross Ridge) - 伟大的HTMU
[oo] [oo] rrxplub.uwaterloo.ca
- () - /()/http://www.csclub.uwaterloo.ca/~rridge/
D b //
# 回答13


Duncan Booth 我认为通常,当您将字体嵌入PDF中时,只有文档中实际使用的字形就会嵌入.不幸的是,快速testWith ReportLab似乎表明它没有进行优化:它看起来只是嵌入了整个字体.
不,它确实子集.一两年前就辩论了
ReportLab列表有关字体子集应如何在结果中命名的列表
PDF文件.
您有可能有较旧的版本吗?
- -
蒂姆·罗伯茨(Tim Roberts),ti@probo.com
Providenza&Boekelheide,Inc.
# 回答14


蒂姆·罗伯茨(Tim Roberts) 我认为通常,当您将字体嵌入PDF中时,只有文档中实际使用的Glyphswhich就会嵌入.不幸的是,使用ReportLab测试的Aquick测试似乎表明它并没有进行这种优势:它似乎只是嵌入了整个字体.

不,它确实子集.一两年前就辩论了
ReportLab列表有关字体子集应在
结果PDF文件.
您有可能有较旧的版本吗?
在我的帖子前约30分钟下载了2.1.
我做的不太科学测试是复制字体嵌入示例
从ReportLab文档中,对其进行修改以使其实际上
运行,然后将输出更改为只有一个字形.所结果的
PDF实际上是相同的.我不是ReportLab专家,所以我可以
已经犯了一些盲目的明显初学者错误(或者也许只是
子集的字体在一定尺寸或字形上的字体外部字体 ASCII范围?).
---------------------------------------------
导入OS,系统
导入ReportLab
文件夹= os.path.dirname(reportlab .__文件__) + os.sep +'fonts'
afmfile = os.path.join(文件夹,'leerc___.afm')
pfbfile = os.path.join(文件夹,'leerc___.pfb')
从reportlab.pdfbase导入pdfmetrics
JustFace = pdfmetrics.embeddedtype1face(afmfile,pfbfile)
facename ='LetterRorrobot-chrome'#从AFM文件中取出
pdfmetrics.registertypeface(Justface)
JustFont = pdfmetrics.font('LetterRorrobot-Chrome',facename,'winansiencoding')
pdfmetrics.registerfont(JustFont)
从reportlab.pdfgen.canvas导入画布
canvas = canvas('temp.pdf')
canvas.setFont('Letterrorolobot-Chrome',32)
如果sys.argv:
canvas.drawString(10,150,'tttt ttttt tt tt tt')
canvas.drawString(10,100,'ttttttttttttttttttttttttttttt')
别的:
canvas.drawString(10,150,'This应该在')
canvas.drawString(10,100," LetterRorrobot-Chrome')
canvas.save()
-------------------------------------------
- -
Duncan Booth http://kupuguy.blogspot.com

# 回答15


Duncan Booth 我让愚蠢的初学者错误地清理了代码
在发布并在此过程中将其分解之前. "如果应该"
当然说:
如果Len(sys.argv)1:
但是,我的原始测试是通过切换评论的线条来完成的
代码因此我的结论保持不变:
输出是创建日期,页面流和摘要.
- -
Duncan Booth http://kupuguy.blogspot.com
# 回答16


Duncan Booth 好的,当我疯狂地回去时,请另行.对话
去年的邮件集中在TrueType字体上.这些是子集.
用于1类字体的EmbeddedType1face确实嵌入了整个
字体.
- -
蒂姆·罗伯茨(Tim Roberts),ti@probo.com
Providenza&Boekelheide,Inc.

标签: python

添加新评论