将自定义字体与Unity3D和ItextSharp一起使用

时间:2015-05-07 21:54:06

标签: android pdf fonts itextsharp

  

首先,这个问题是从Unity Answers复制而没有运气   得到任何解决方案如果这种方法不被接受,那就让我吧   知道。

因为我需要使用特殊字符,集成的itextsharp字体无法处理它们,我需要使用自己的自定义字体。自定义字体在我的应用程序中的集成在编辑器中工作,但在Android设备中没有。

是否有人知道如何访问android上的字体以与itextsharp一起使用?

我正在使用的字体路径:

 string fontPath = Application.dataPath + "/" + "FreeSans" + ".ttf";

我也试过了:

string fontPath = Application.persistentDataPath + "/" + "FreeSans" + ".ttf";

对于字体创建,我使用:

BaseFont bf = BaseFont.CreateFont(fontPath , BaseFont.CP1250, true);

当我使用第一个选项时,它仅适用于Unity Editor。

我也试过这两个选项没有运气。一条路径直接转到位于apk文件中的流资产文件夹,另一条路径位于android文件夹设备上,其中字体是从流资产文件夹复制的。每次,PDF都在中间取消,过程停止了。

path = "jar:" + Application.dataPath + "!/assets/" + "FreeSans" + ".ttf";

 path = System.IO.Path.Combine(Application.streamingAssetsPath, "FreeSans.ttf");

当你在android上制作PDF时,itextsharp表现得很奇怪。

是否有任何机构知道如何从Android系统访问系统字体,以及在设备上找到字体。也许itextsharp可以管理这种路径?

提前谢谢。

学家

1 个答案:

答案 0 :(得分:1)

因此。经过几个小时的刮擦,我终于做对了。

解决方案的第一部分写在这里。您必须将一些DLL文件放到项目文件夹中。哪一个取决于您必须使用的编码。

http://answers.unity3d.com/questions/42955/codepage-1252-not-supported-works-in-editor-but-no.html

第二部分是这样的:

首先,您必须使用字体名称:

创建Android系统字体目录的路径
path = Path.Combine("/system/fonts/", "DroidSans.ttf");

使用FontFactory注册该字体:

iTextSharp.text.FontFactory.Register(path, "DroidSans");

之后,您只需使用FontFactory.GetFont声明字体:

font = iTextSharp.text.FontFactory.GetFont("DroidSans", 
                                BaseFont.IDENTITY_H,
                                false, 
                                10, 
                                iTextSharp.text.Font.NORMAL);

就是这样!