我正在尝试几种不同的方法,但是我无法获得用飞碟生成的pdf(来自html文件)来显示印度卢比的Unicode字符-“₹”
这是我目前拥有的:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style>
body {
font-family: Arial Unicode MS, Lucida Sans Unicode, Arial, verdana, arial, helvetica, sans-serif;
}
@font-face {
font-family: 'Arial Unicode MS';
src: url(arialunicodems.ttf);
-fs-pdf-font-embed: embed;
-fs-pdf-font-encoding: UTF-8;
-fs-pdf-font-encoding: Identity-H;
font-weight: normal;
}
</style>
</head>
<body>
<p>We want to see a Indian Rupees symbol between the asterisks on one or more of these lines, in the PDF (if any of the symbols make it through to the PDF then we're good):</p>
<p>Using the glyph itself in the markup: * ₹ *</p>
<p>Using &#x20B9; in the markup: * ₹ *</p>
<p>Using &#8377; in the markup: * ₹ *</p>
</body>
</html>
代表许多不同的实验,没有一个起作用。它所指的字体文件位于上述html文件版本的旁边。
字体本身似乎正在加载,因为pdf文件中的文本看起来像Arial。它只是缺少卢比符号。我不知道该怎么办-在浏览器中查看时,我正在提取Unicode字体,并且html文件本身看起来还不错。当我用铬打印时,它看起来也不错,所以问题肯定出在我想的飞碟上。
我正在如下使用飞碟:
/usr/bin/java -Djava.awt.headless=true -cp .:$FS_PATH/acts_as_flying_saucer/lib/java/bin:$FS_PATH/acts_as_flying_saucer/lib/java/jar/minium.jar:$FS_PATH/acts_as_flying_saucer/lib/java/jar/itext-paulo-155.jar:$FS_PATH/acts_as_flying_saucer/lib/java/jar/core-renderer.jar:$FS_PATH/acts_as_flying_saucer/lib/java/jar/java-getopt-1.0.13.jar Xhtml2Pdf /home/max/font_test.html /home/max/font_test.pdf
谁能看到我做错了什么吗?
答案 0 :(得分:0)
我在这里回答自己的问题,以防其他人犯同样的错误。答案很简单-它不是字体!原来,“₹”符号仅在2010年发明,因此在很多Unicode字体文件中都没有出现,包括我使用的那个。
它在浏览器中起作用是因为浏览器(Chrome)会自动以其他字符集查找它(我没有明确要求它),并在Deja Vu Sans中找到了它(Linux Chromium的后备)。
我更改了代码以使用较旧的(但仍可接受)“₨”符号,但更适当的解决方法是包括实际上具有现代卢比符号的字体。