[译]在 Andriod/IOS 程序中使用自己的字体

原文链接:http://firemonkeyblog.blogspot.com/2014/12/using-custom-fonts-in-android-delphi.html

你应该能够在 Andriod 应用中使用任何 TrueType 字体。

示例使用了字符 Script MT Bold。这个字体在 Windows 的字体文件夹。这个字体的文件名为 SCRIPTBL.TTF。

1. 复制 SCRIPTBL.TTF 到你的工程目录。

2. 在发布(Deployment)窗口中,添加 SCRIPTBL.TTF 文件。设置它的远程目录(Remote Path)为 .\assets\internal\

设置远程名称(Remote Name)为 SCRIPTBL.ttf (使用小写的 ttf 扩展名是因为我们在程序中使用硬编码)

3. 在 IDE 编辑器中打开 FMX.FontGlyphs.Android.pas。(文件位于 C:\Program Files (x86)\Embarcadero\Studio\15.0\source\fmx)

如果它被标记为只读,在编辑器中右击关闭只读。

保存文件到工程目录。不要更改文件名。接下来你可以在编辑器中修改它。

A. 添加对 System.IOUtils to 的引用到 uses 部分。

B. 找到 procedure TAndroidFontGlyphManager.LoadResource;

  • 添加一个变量 FontFile: string;
  • 在过程中有一行是:Typeface := TJTypeface.JavaClass.create(FamilyName, TypefaceFlag);
  • 将上面的行替换为:

1

2

3

4

5

FontFile := TPath.GetDocumentsPath + PathDelim + CurrentSettings.Family + ‘.ttf‘;

if FileExists(FontFile) then

Typeface := TJTypeface.JavaClass.createFromFile(StringToJString(FontFile))

else

Typeface := TJTypeface.JavaClass.Create(FamilyName, TypefaceFlag);

这将让其查找前面指定名称的字体文件。

4. 对于每一个想使用该字体的组件,设置  TextSettings 的字体家族(FontFamily)属性为 SCRIPTBL

这个名称是不包含扩展名的字体文件名称。不要设置为 “SCRIPTBL.ttf” 或 “Script MT Bold”。

你将不得不手动输入或粘贴它到属性编辑框。

注意: 在 Android 里文件名区分大小写,所以你必需保证他们一致。

这个窗体包括 label, textbox, memo, checkbox, radio button:

原作者还有一篇文章描述了如何在 iOS 中使用自己的 TTF 字体,和上面的差别在于:

1、在 IDE 的编辑器中打开 info.plist 文件,将它命名为 custom.info.plist 并保存到工程目录。

添加一个 key :

1

2

3

4

<key>UIAppFonts</key>

<array>

<string>SCRIPTBL.TTF</string>

</array>

这将告诉 IOS 能够使用额外的字体文件。IOS将自动寻找它。

2、发布页中的远程目录设置为 “.\”

3、将第一步的custom.info.plist 文件加入到发布页中,并重命名为 info.plist,然后去掉原来的 info.plist 的选择。

4、中文字体要使用它的默认名称,也就是英文名称,不能使用中文名称。

其它的就一样了。

原文地址:https://www.cnblogs.com/westsoft/p/8442595.html

时间: 2024-10-10 07:49:37

[译]在 Andriod/IOS 程序中使用自己的字体的相关文章

关于iOS程序中插入广告的问题

版权所有,转载请注明出处 陈军刚 对于开发面向全球用户的免费软件,插入Google的Admob广告和Apple的iAd是开发者实现盈利的最好选择.那接下来将介绍一些在iOS程序中插入Google的Admob广告的一些步骤. 第一步:加入ADBannerView 首先,在你的工程中引入iAd.framework ScenicViewController.h 1 #import <UIKit/UIKit.h> 2 #import <iAd/iAd.h> 3 4 @interface S

iOS程序中打开其他程序的方法

1.1 如果被打开程序不是自己的,则要找到被打开App的URL Schemes. http://jbguide.me/2012/09/12/how-to-find-url-schemes%EF%BC%9F/ 1.2 如果被打开程序是自己写的,那么写程序时要实现 1) appname-info.plist里增加 <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes<

如何在iOS开发中添加新的字体

iOS 开发默认字体是 Heiti SC ,即我们常用的「黑体-简」 用过一段时间后,就会发现字体过于单调了 ,那么怎么在iOS开发中添加新的字体呢 ,这里教你两种方法. 1.使用系统自带的字体 搜索fonts,不难发现,系统中是有不少字体的,而这些字体也是都是可以使用的. 这些字体只用时可以通过代码来设置,也可以直接来设置,方法很简单: 将text的属性设置为Attributed,再选择自己想要的系统字体就OK啦 2.使用自己从网上下载的字体 首先从网上下载自己喜欢的字体,将下载好的字体拖入当

DUILIB-编译ZIP皮肤到程序中

为了防止客户随意的修改皮肤文件,可以把皮肤文件打包为ZIP编译到程序中.虽说不能阻止牛掰软件的资源提取,但是防一般的菜鸟客户足矣. 下面是示例代码 #include "resource.h" //导入的资源类型必须为ZIPRES,和WindowImplBase的定义一致.为所有资源打包,而不要直接打包资源的文件夹 class CDYFrameWnd : public WindowImplBase { public: explicit CDYFrameWnd(LPCTSTR pszXML

iOS程序中的内存分配 栈区堆区全局区(转)

在计算机系统中,运行的应用程序的数据都是保存在内存中的,不同类型的数据,保存的内存区域不同.一.内存分区 栈区(stack) 由编译器自动分配并释放,存放函数的参数值,局部变量等.栈是系统数据结构,对应线程/进程是唯一的.优点是快速高效,缺点时有限制,数据不灵活.[先进后出] 栈空间分静态分配 和动态分配两种. 静态分配是编译器完成的,比如自动变量(auto)的分配. 动态分配由alloca函数完成. 栈的动态分配无需释放(是自动的),也就没有释放函数. 为可移植的程序起见,栈的动态分配操作是不

ios程序中的通知机制

每一个应用程序中都有一个NSNotificationCenter实例,用来协助不同的对象之间的通信,任何一个对象都可以向通知中心发布通知(NSNotication),在通知中描述自己做什么.其他的感兴趣的对象可以申请在某个特定的通知或者特定对象发出通知时接收到这个通知. 一个通知一般包含有3个属性: //通知的名称 - (NSString *)name; //通知的发布者 - (id)object; //通知附加的额外信息 - (NSDictionary *)userinfo; 初始化一个通知对

IOS 程序中状态栏的显示与隐藏

项目中有时需要将顶部的状态栏给隐藏掉,在网上搜了搜基本上都不能用,原因大概是当程序运行的时候状态栏已经显示出来,然后再调状态栏的set方法会不起作用(至于为什么不起作用还不清楚). 隐藏状态栏方法1: 修改plist文件,添加 Status bar is initially hidden  当设置成为YES时,程序启动的时候就隐藏了(启动页也不显示) 添加View controller-based status bar appearance   设置为NO 这种修改方法会隐藏整个项目中的状态栏(

在自己的iOS程序中引入自定义字体

在网上找了下教程, 大多数都要获取字体文件的真实字体名,用起来比较麻烦. 在iOS7中,引入了UIFontDescriptor,so...可以这么写. UIFontDescriptor *fontdesc = [UIFontDescriptor fontDescriptorWithFontAttributes:@{UIFontDescriptorVisibleNameAttribute : fontName}]; [_richTextView.textStorage addAttributes:

在MacOS和iOS系统中使用OpenCV

来源:http://blog.devtang.com/blog/2012/10/27/use-opencv-in-ios/ 前言 OpenCV 是一个开源的跨平台计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法. 最近试着在MacOS和iOS上使用OpenCV,发现网上关于在MacOS和iOS上搭建OpenCV的资料很少.好不容易搜到些资料,却发现由于OpenCV和XCode的版本更新,变得不再有用了.有些问题费了我很多时间,在此总结分享给大家,希望后来人少走些弯路. 可以预见到,随着