导航:首页 > 操作系统 > android获取字体

android获取字体

发布时间:2023-03-21 20:43:55

❶ 在安卓 字体管家 下载的字体在哪个文件夹

在font文件夹里,以oppor9为例,找到该文件夹的具体操作步骤如下:

1、首先,打开手机中的【文件管理】,如下图所示,然后进入下一步。

❷ 怎样获得android上的字体列表

怎样遍历自定义的字体自定义的字体放在assets/fonts/下

❸ Android更换系统默认显示的字体使用自定义字体

上一篇 Android 自定义字体,更换系统默认显示的字体使用自定义字体 有讲到怎样指定控件显示指定字体,怎样整个软件显示指定字体,怎样WebView加载指定字体,但是还留下一个怎样修改整个系统的默认字体,由于内容较多,所以单独抽离出来讲,由于要操作系统文件,因此需要Root权限或系统签名,自己在操作前建议先备份下字体配置文件/system/etc/system_fonts.xml和/system/etc/fallback_fonts.xml,否则操作失败有可能开机后无法进入桌面,此时就需要将备份的system_fonts.xml推送到对应目录下并修改为对应的权限。

system_fonts.xml示范文件

fallback_fonts.xml 示范文件

修改系统默认字体的原理:根据系统字体加载原理可知,我们只需要在路径 /system/fonts/ 下添加我们自定义的ttf字体文件,然后修改 /system/etc/system_fonts.xml 字体配置文件,按照响应的格式添加一个节点,由于需要系统默认使用该字体,因此该节点需要是根节点familyset下的第一个子节点,系统在system_fonts.xml中找到了该字体的配置,故不会去fallback_fonts.xml 寻找,因此也只需要修改这一个配置文件即可,文件修改成功后需要注意已修改文件的读写权限(否则会没有效果),为了方便,我们设置全部用户可读可写。

和添加字体相对应,需要先删除字体文件,然后再删除 system_fonts.xml和fallback_fonts.xml两文件中的对应节点,由于我们没有修改过fallback_fonts.xml文件因此不需要做删除操作

我的CSDN博客: http://blog.csdn.net/wo_ha/article/details/79202632

❹ android中字体的设置

你是指修改系统字体吗?字体本身是无法设置的,只能修改字体。修改字体的方法主要有2类:
一、通过软件修改android系统字体
这类系统字体修改软件较多,可以在各大android手机论坛(机锋论坛等等)里搜索一下,比如《字体替换》这个软件。
二、手动修改android系统字体
1、首先需要获取root权限,然后手机需要安装类似R.E.explorer这样的高级文件管理器。
2、将需要替换的字体放置在手机SD卡中,并重命名。重命名按照以下形式命名:
英文字体重命名为:DroidSans.ttf;中文字体重命名为:DroidSansFallback.ttf
3、以R.E.explorer为例,打开该文件管理器后,访问SD卡中存放替换字体的文件夹,然后选择需要替换的字体,长按该字体,选择“复制”。在不关闭R.E.explorer文件管理器的前提下,点击文件管理器上的返回按钮,访问system/fonts文件夹,然后点击“粘贴”
4、粘贴完成后,需要设置替换文件的权限。(替换的DroidSans.ttf则设置DroidSans.ttf的权限,替换的DroidSansFallback.ttf则设置DroidSansFallback.ttf的权限)长按该文件后,选择“权限”,设置权限。(也可以参考其他文件的权限配置,和其他文件一样配置为rw-r--r--)
5、替换完成后,重启手机

常见问题:
Q1:替换后为什么部分中文字体是方框?
A1:出现该情况是由于替换字体本身就不支持部分中文汉字的显示,需要换一个字体。一般微软雅黑、圆体等常见字体都不会出现该异常情况。

Q2:替换后为什么英文字体还是原样?
A2:英文字体和中文字体由两个字体文件分别管理,如果只替换了中文字体,英文字体就仍然是默认的样式。

Q3:为什么没有替换英文字体,英文字体的样式也变了呢?
A3:出现该情况,一般是由于替换的中文字体本身就包含了英文字符的样式。替换这样的中文字体后,当需要显示英文时,会显示中文字体包中含有的英文字符样式

❺ 如何获取android系统的字体名称

java环境中有一个专门的获取ttf文件的头信息的Font类
Font f = Font.createFont(Font.TRUETYPE_FONT, new FileInputStream("seguisym.ttf"));
String name = f.getName();
System.out.println(name);

但是在android环境下,我们无法直接用到该类去解析TTF文件,下面我将附上代码来解析ttf文件
TTFParser.Java

import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.Map;

/**
* TTF Font file parser
* <p>
* sample:
* <code><pre>
* File fs = new File("C:\\Windows\\Fonts");
* File[] files = fs.listFiles(new FilenameFilter() {
* public boolean accept(File dir, String name) {
* if (name.endsWith("ttf")){ return true;}
* return false;
* }
* });
* for (File file : files) {
* TTFParser parser = new TTFParser();
* parser.parse(file.getAbsolutePath());
* System.out.println("font name: " + parser.getFontName());
* }
* </pre></code>
* <p/>
* Copyright: Copyright (c) 12-8-6 下午3:51
* <p/>
* Version: 1.0
* <p/>
*/
public class TTFParser {
public static int COPYRIGHT = 0;
public static int FAMILY_NAME = 1;
public static int FONT_SUBFAMILY_NAME = 2;
public static int UNIQUE_FONT_IDENTIFIER = 3;
public static int FULL_FONT_NAME = 4;
public static int VERSION = 5;
public static int POSTSCRIPT_NAME = 6;
public static int TRADEMARK = 7;
public static int MANUFACTURER = 8;
public static int DESIGNER = 9;
public static int DESCRIPTION = 10;
public static int URL_VENDOR = 11;
public static int URL_DESIGNER = 12;
public static int LICENSE_DESCRIPTION = 13;
public static int LICENSE_INFO_URL = 14;

private Map<Integer, String> fontProperties = new HashMap<Integer, String>();

/**
* 获取ttf font name
* @return
*/

public String getFontName() {
if (fontProperties.containsKey(FULL_FONT_NAME)) {
return fontProperties.get(FULL_FONT_NAME);
} else if (fontProperties.containsKey(FAMILY_NAME)) {
return fontProperties.get(FAMILY_NAME);
} else {
return null;
}
}

/**
* 获取ttf属性
* @param nameID 属性标记,见静态变量
* @return 属性值
*/
public String getFontPropertie(int nameID) {
if (fontProperties.containsKey(nameID)) {
return fontProperties.get(nameID);
} else { return null; }
}

/**
* 获取ttf属性集合
* @return 属性集合(MAP)
*/

public Map<Integer, String> getFontProperties() { return fontProperties; }

/**
* 执行解析
* @param fileName ttf文件名
* @throws IOException
*/
public void parse(String fileName) throws IOException {
fontProperties.clear();
RandomAccessFile f = null;
try {
f = new RandomAccessFile(fileName, "r");
parseInner(f);
} finally {
try {
f.close();
}catch (Exception e) {
//ignore;
}
}
}

private void parseInner(RandomAccessFile randomAccessFile) throws IOException {
int majorVersion = randomAccessFile.readShort();
int minorVersion = randomAccessFile.readShort();
int numOfTables = randomAccessFile.readShort();
if (majorVersion != 1 || minorVersion != 0) { return; }

//jump to TableDirectory struct
randomAccessFile.seek(12);

boolean found = false;
byte[] buff = new byte[4];
TbleDirectory tableDirectory = new TableDirectory();
for (int i = 0; i < numOfTables; i++) {
randomAccessFile.read(buff);
tableDirectory.name = new String(buff);
tableDirectory.checkSum = randomAccessFile.readInt();
tableDirectory.offset = randomAccessFile.readInt();
tableDirectory.length = randomAccessFile.readInt();
if ("name".equalsIgnoreCase(tableDirectory.name)) {
found = true;
break;
}else if (tableDirectory.name == null || tableDirectory.name.length() == 0) {
break;
}
}

// not found table of name
if (!found) { return; }
randomAccessFile.seek(tableDirectory.offset);
NameTableHeader nameTableHeader = new NameTableHeader();
nameTableHeader.fSelector = randomAccessFile.readShort();
nameTableHeader.nRCount = randomAccessFile.readShort();
nameTableHeader.storageOffset = randomAccessFile.readShort();
NameRecord nameRecord = new NameRecord();
for (int i = 0; i < nameTableHeader.nRCount; i++) {
nameRecord.platformID = randomAccessFile.readShort();
nameRecord.encodingID = randomAccessFile.readShort();
nameRecord.languageID = randomAccessFile.readShort();
nameRecord.nameID = randomAccessFile.readShort();
nameRecord.stringLength = randomAccessFile.readShort();
nameRecord.stringOffset = randomAccessFile.readShort();
long pos = randomAccessFile.getFilePointer();
byte[] bf = new byte[nameRecord.stringLength];
long vpos = tableDirectory.offset + nameRecord.stringOffset + nameTableHeader.storageOffset;
randomAccessFile.seek(vpos);
randomAccessFile.read(bf);
String temp = new String(bf, Charset.forName("utf-16"));
fontProperties.put(nameRecord.nameID, temp);
randomAccessFile.seek(pos);
}
}

@Override
public String toString() {
return fontProperties.toString();
}

private static class TableDirectory {
String name; //table name
int checkSum; //Check sum
int offset; //Offset from beginning of file
int length; //length of the table in bytes
}

private static class NameTableHeader {
int fSelector; //format selector. Always 0
int nRCount; //Name Records count
int storageOffset; //Offset for strings storage,
}

private static class NameRecord {
int platformID;
int encodingID;
int languageID;
int nameID;
int stringLength;
int stringOffset; //from start of storage area
}
}

❻ 安卓手机更换字体教程

手机必备条件:

1、已获取ROOT权限

2、已安装文件管理器(RootExplorer)

步骤:

1、把你要替换的字体文件命名为“DroidSansFallback.ttf”

DroidSans.ttf(英文/数字常规)

DroidSans-Bold.ttf(英文/数字粗体)

DroidSansFallback.ttf(中文)

备注:假如你要替换英文部分,则将字体命名为“DroidSans.ttf”以此类推,简单明确的`教程,请灵活运用。

2、把命名好的字体文件复制到内存

3、手机上打开文件管理器(RootExplorer)找到刚才复制的字体文件“DroidSansFallback.ttf”

4、将字体文件“DroidSansFallback.ttf”复制到手机内存的“system”目录

5、改字体文件的权限为“rw-r--r--”(即用户 可读可写打勾,群组 可读打勾,其他可读打勾)

6、把改好权限的“DroidSansFallback.ttf”剪切到“fonts”目录下替换源文件

7、重启手机

阅读全文

与android获取字体相关的资料

热点内容
如何用python写vlookup函数 浏览:796
社保加密狗厂商 浏览:214
php编译运行说法 浏览:955
程序员说喂 浏览:246
抖音直播云服务器 浏览:627
一加7pro文件夹data 浏览:424
程序员淋雨 浏览:955
python输出数字序列中的空格 浏览:78
怎么将pdf文件大小 浏览:734
氧原子相对分子量算法 浏览:988
加密机为什么是安全的 浏览:451
单片机拼音输入法 浏览:797
苹果笔记本t2加密芯片怎么打开 浏览:796
安卓如何把手机投屏至电视 浏览:747
方舟编译器现在可提速哪些软件 浏览:60
微信加密为什么是黑屏 浏览:473
android去电状态 浏览:612
苹果13如何加密视频 浏览:815
linuxweblogic缓存 浏览:75
云服务器不同地域 浏览:947