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

Android 与Unity3D和ItextSharp一起使用自定义字体,android,pdf,fonts,itextsharp,Android,Pdf,Fonts,Itextsharp,首先,这个问题是从Unity答案中抄来的,没有运气 得到任何解决方案。如果这种方法不可接受,请让我 知道 因为我需要使用特殊字符,集成的itextsharp字体无法处理它们,所以我需要使用我自己的自定义字体。我的应用程序中自定义字体的集成在编辑器中工作,但在Android设备中不工作 有没有人知道如何在android上访问字体以便与itextsharp一起使用 对于我正在使用的字体路径: string fontPath = Application.dataPath + "/" + "FreeS

首先,这个问题是从Unity答案中抄来的,没有运气 得到任何解决方案。如果这种方法不可接受,请让我 知道

因为我需要使用特殊字符,集成的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编辑器中工作

我也尝试了这两种选择,但运气不佳。一条路径直接指向位于apk文件中的流媒体资产文件夹,另一条路径位于android文件夹设备上,其中字体是从流媒体资产文件夹复制的。每次PDF在中间被取消,进程停止。
path = "jar:" + Application.dataPath + "!/assets/" + "FreeSans" + ".ttf";

 path = System.IO.Path.Combine(Application.streamingAssetsPath, "FreeSans.ttf");
在android上制作PDF时,itextsharp的行为非常奇怪

有人知道如何从android系统访问系统字体,在设备上定位字体吗。也许itextsharp可以管理这种路径

先谢谢你


J.

所以。经过几个小时的搔头,我终于把它弄对了

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

第二部分是这样的:

首先,您必须使用字体名称创建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);
就这样