编辑:我不再要求 Unicode 库。不仅有一个相关联,而且原始问题不适合问,如下所述。现在这个问题的重点是如何在 XSL-FO 中实现 unicode。
我现在的主要问题是实现 unicode 需要哪些步骤。我已经有了必要的 unicode 字符引用,但我知道还需要选择正确的“字体”,并且我相信还需要采取其他步骤才能在我的 XSL-FO 文档中实现它.
“写外文”是什么意思?XSL-FO 文件只是一个 XML 文件,因此您可以使用任何 Unicode 引用来计算字符编号,然后使用 XML 数字字符引用来包含它。
例如,欧元符号 € 的 Unicode 十六进制为 U+20ac,因此在 XML (XSL-FO) 中为 €
我遇到了同样的问题。unicode 字符的问题是在 FONET.DLL 中硬编码的。在类TrueTypeFont
方法MapCharacter
中写为:
public override ushort MapCharacter(char c)
{
if (c > Byte.MaxValue)
return (ushort) FirstChar;
return mapping.MapCharacter(c);
}
因此,任何值大于 255 的字符都将被“忽略”。我下载了源代码(来自https://fonet.codeplex.com/)并将方法修改为:
public override ushort MapCharacter(char c)
{
return mapping.MapCharacter(c);
}
使用这个库和这个新方法,欧元符号神奇地变得可见!