首先,这个问题是从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可以管理这种路径?
提前谢谢。
学家
答案 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);
就是这样!