首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >飞碟(xhtmlrenderer)不加粗我的字体?

飞碟(xhtmlrenderer)不加粗我的字体?
EN

Stack Overflow用户
提问于 2010-07-23 17:11:07
回答 2查看 3.8K关注 0票数 4

我在一个由飞碟xhtmlrenderer生成的pdf中使用了一个自定义的truetype字体。

代码语言:javascript
复制
ITextRenderer renderer = new ITextRenderer();
renderer.getFontResolver().addFont("myfont.ttf", BaseFont.CP1252, BaseFont.EMBEDDED);
renderer.setDocument(XMLResource.load(in).getDocument(), url);
renderer.layout();
renderer.createPDF(out);

在所呈现的html中,我有以下内容(例如)

代码语言:javascript
复制
<html>
<head>
<style type="text/css">
*{font-family:myfont;} /* <-- this works, trust me */
</style>
</head>
<body>
<p>some plain text<b>some bold text</b> <span style="font-weight:bold;">more bold</span></p>
</body>
</html>

但是,即使使用<b>font-weight:bold,我也不能让文本以粗体显示。

现在,我知道这应该是可行的,因为我有一个类似的(遗留)项目,它使用相同的字体和普通的旧itext (即没有xhtmlrenderer),并且它确实通过以下方式生成带有粗体文本的pdf:

代码语言:javascript
复制
myFont = BaseFont.createFont("myfont.ttf", BaseFont.CP1252, BaseFont.EMBEDDED);
Font boldFont = new Font(myFont);
boldFont.setStyle(Font.BOLD);

com.lowagie.text.Document document = ...;
document.add(new Paragraph("plain", myFont));
document.add(new Paragraph("bold", boldFont));

有没有人能解释一下为什么我不能在xhtmlrenderer中使用粗体,也许有一种方法可以克服这个问题?

谢谢你,p。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-27 08:58:23

我不是专家,但如果你的字体没有粗体的变体,那么飞碟可能会简单地“不让它变得粗体”。当您以编程方式将字体设置为粗体时,您所使用的字体类可以(在幕后)使用某种内部机制使字体本身变得更“粗体”。在现实世界中的一个很好的例子是Photoshop:如果你有一个没有粗体变化的字体,你不能把它变成粗体,但Photoshop有一个“模拟粗体”选项,它可以在不真正使用“真正”粗体的情况下增加符号的厚度。

确定诊断这个问题的一个好方法是切换你在飞碟中使用的字体,但保留相同的文档。如果新字体也不是粗体,那么问题就不那么热门了。如果它确实变成了粗体,那是因为没有粗体版本的字体。

希望这能有所帮助。

票数 4
EN

Stack Overflow用户

发布于 2010-07-27 21:42:31

如果您的遗留iText代码可以生成粗体,那么看起来很可能TTF文件确实包含粗体变体,即使file不使用它。如果在CSS样式表中指定粗体变量的确切名称,则可以在may中使用粗体变量。

例如:

代码语言:javascript
复制
<style type="text/css"> 
* {font-family:myfont;}
b {font-family:"myfont bold";}
</style> 

通过在Adobe Reader中打开由旧代码生成的PDF,您应该能够找到字体的确切名称。转到文件-->属性...--> Fonts可查看文档中所有字体的列表。可能会有一个"myfont“条目和一个"myfont粗体”条目,或者类似的条目。在样式表中使用后者。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3316810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档