在 Unity3D 和 ItextSharp 中使用自定义字体
Use Custom font with Unity3D and ItextSharp
First of all, this question is copied from Unity Answers with no luck
getting any solution. If this approach is not acceptable just let me
know.
因为我需要使用特殊字符,集成的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 文件放入项目文件夹。哪一个取决于你必须使用什么编码。
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);
就是这样!
First of all, this question is copied from Unity Answers with no luck getting any solution. If this approach is not acceptable just let me know.
因为我需要使用特殊字符,集成的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 文件放入项目文件夹。哪一个取决于你必须使用什么编码。
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);
就是这样!