導航:首頁 > 操作系統 > 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獲取字體相關的資料

熱點內容
蘋果筆記本t2加密晶元怎麼打開 瀏覽:796
安卓如何把手機投屏至電視 瀏覽:737
方舟編譯器現在可提速哪些軟體 瀏覽:58
微信加密為什麼是黑屏 瀏覽:473
android去電狀態 瀏覽:602
蘋果13如何加密視頻 瀏覽:813
linuxweblogic緩存 瀏覽:67
雲伺服器不同地域 瀏覽:946
python鬧鍾怎麼打 瀏覽:686
虛擬主機伺服器有什麼區別 瀏覽:833
演算法與程序的奧秘章節檢測 瀏覽:377
找pdf 瀏覽:529
與伺服器連接斷開如何處理 瀏覽:833
伺服器維修預計十分鍾什麼意思 瀏覽:170
黑馬程序員主打教學是什麼 瀏覽:41
python九乘法表怎麼編寫 瀏覽:974
思維方式pdf 瀏覽:656
tcc社區app怎麼注冊 瀏覽:941
央視網下載加密 瀏覽:454
命令行訪問伺服器 瀏覽:36