1. 程式人生 > >Android中新增思源字型/NotoSansCJK/SourceHanSans

Android中新增思源字型/NotoSansCJK/SourceHanSans

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

系統版本:Android 4.2.2_r1

本文主要是在Android中新增思源字型的過程記錄。思源字型是Google和Adobe在2014.07.18釋出的中文字型。

1.獲取思源字型

(Google:Noto Sans CJK; Adobe:Source Han Sans)

2.解壓後如下幾個才是思源字型。

  •  NotoSansHans-Regular.otf    常規
  •  NotoSansHans-Black.otf      黑體
  •  NotoSansHans-DemiLight.otf  
  •  NotoSansHans-Medium.otf 
  •  NotoSansHans-Thin.otf 
  •  NotoSansHans-Bold.otf        
  •  NotoSansHans-Light.otf

注:這裡說下otf,意為opentypettf(truetype)是相容的。

3.安裝體驗

由於Android中只使用到常規和加粗體,這裡也只以這兩個做實驗(同時也有容量的考慮),在高PPI(解析度)的螢幕上或許只是感覺到字形變了,在低解析度的螢幕上變的更加清晰了,前後對比:

之前:


之後:


(上傳到這裡就不清晰了,真是怪,點選連結看原圖更為清晰)

  1) 將NotoSansHans-Regular.otf NotoSansHans-Bold.otf放到/system/fonts/目錄下。

  2) 將如下fallback_fonts.xml放到/vendor/etc/

<?xml version="1.0" encoding="utf-8"?>

<!--

    Vendor-provided fallback fonts

 

    This file can be edited to add references to fonts that are not installed or referenced in the

    default system. The file should then be placed in /vendor/etc/fallback_fonts.xml. Note

    that in your makefile, this directory should be referenced as $(TARGET_COPY_OUT_VENDOR)/etc/:

 

        PRODUCT_COPY_FILES += \

            frameworks/base/data/fonts/vendor_fonts.xml:$(TARGET_COPY_OUT_VENDOR)/etc/fallback_fonts.xml

 

    For example, vendors might want to build configurations for locales that are

    better served by fonts which either handle glyphs not supported in the default fonts or which

    handle these glyphs differently than the default fallback fonts.

    Each entry in this list is a "family", which consists of a list of "files"

    (the filenames for that family). The files objects are

    provided in the order of the styles supported for that family: regular, bold, italic, and

    bold-italic. Only providing one font means that all styles will be rendered with that font.

    Providing two means that these two fonts will render regular and bold fonts (italics will

    be mapped to these two fonts).

 

    There is also an optional "order" attribute on the Family tag. This specifies the index at

    which that family of fonts should be inserted in the fallback font list, where the

    default fallback fonts on the system (in /system/etc/fallback_fonts.xml) start at index 0.

    If no 'order' attribute is supplied, that family will be inserted either at the end of the

    current fallback list (if no order was supplied for any previous family in this file) or

    after the previous family (if there was an order specified previously). Typically, vendors

    may want to supply an order for the first family that puts this set of fonts at the appropriate

    place in the overall fallback fonts. The order of this list determines which fallback font

    will be used to support any glyphs that are not handled by the default system fonts.

 

    Han languages (Chinese, Japanese, and Korean) share a common range of unicode characters;

    their ordering in the fallback or vendor files gives priority to the first in the list.

    Language-specific ordering can be configured by adding a BCP 47-style "lang" attribute to

    a "file" element; fonts matching the language of text being drawn will be prioritised over

    all others.

 

    The sample configuration below is an example of how one might provide two families of fonts

    that get inserted at the first and second (0  and 1) position in the overall fallback fonts.

 

    See /system/etc/system_fonts.xml and /system/etc/fallback_fonts.xml for more information

    and to understand the order in which the default system fonts are loaded and structured for

    lookup.

-->

 

<!-- Sample fallback font additions to the default fallback list. These fonts will be added

    to the top two positions of the fallback list, since the first has an order of 0. -->

<familyset>

    <family order="0">

        <fileset>

            <file>NotoSansHans-Regular.otf</file>

            <file>NotoSansHans-Bold.otf</file>

        </fileset>

    </family>

 

<!-- Italic 等等會造成啟動不了的問題,所以只新增前兩個足矣。

    <family>

        <fileset>

            <file>NotoSansHans-Regular.otf</file>

            <file>NotoSansHans-Italic.otf</file>

            <file>NotoSansHans-Bolditalic.otf</file>

            <file>NotoSansHans-Black.otf</file>

            <file>NotoSansHans-DemiLight.otf</file>

            <file>NotoSansHans-Light.otf</file>

            <file>NotoSansHans-Medium.otf</file>

            <file>NotoSansHans-Thin.otf</file>

        </fileset>

    </family>

-->

</familyset>

同時也有做好的字型檔加xml在這裡下載,還原的時將這三個檔案刪除即可。

4.以原始碼方式新增

如果需要在製作rom時就可以自動新增預設中文字型,思路和上邊的類似,以下是git log資訊。

commit xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Author: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Date:   Mon Aug 18 15:44:24 2014 +0800

 

    Add Noto Sans CJK fonts for Chinese

 

diff --git a/device/rockchip/rk30sdk/device.mk b/device/rockchip/rk30sdk/device.mk

index 8befd40..b4e2822 100755

--- a/device/rockchip/rk30sdk/device.mk

+++ b/device/rockchip/rk30sdk/device.mk

@@ -119,6 +119,10 @@ PRODUCT_COPY_FILES += \

+#fonts

+PRODUCT_COPY_FILES += \

+    frameworks/base/data/fonts/vendor_fonts.xml:$(TARGET_COPY_OUT_VENDOR)/etc/fallback_fonts.xml

diff --git a/frameworks/base/data/fonts/Android.mk b/frameworks/base/data/fonts/Android.mk

index e02e95a..0b4bc6c 100755

--- a/frameworks/base/data/fonts/Android.mk

+++ b/frameworks/base/data/fonts/Android.mk

@@ -157,6 +157,8 @@ font_src_files += \

     DroidSansHebrew-Regular.ttf \

     DroidSansHebrew-Bold.ttf \

     DroidSansThai.ttf \

+    NotoSansHans-Regular.otf \

+    NotoSansHans-Bold.otf \

     DroidSansArmenian.ttf \

     DroidSansGeorgian.ttf \

     AndroidEmoji.ttf

diff --git a/frameworks/base/data/fonts/NotoSansHans-Bold.otf b/frameworks/base/data/fonts/NotoSansHans-Bold.otf

new file mode 100644

index 0000000..006372e

Binary files /dev/null and b/frameworks/base/data/fonts/NotoSansHans-Bold.otf differ

diff --git a/frameworks/base/data/fonts/NotoSansHans-Regular.otf b/frameworks/base/data/fonts/NotoSansHans-Regular.otf

new file mode 100644

index 0000000..923f89c

Binary files /dev/null and b/frameworks/base/data/fonts/NotoSansHans-Regular.otf differ

diff --git a/frameworks/base/data/fonts/fonts.mk b/frameworks/base/data/fonts/fonts.mk

index 875795a..490c6e6 100755

--- a/frameworks/base/data/fonts/fonts.mk

+++ b/frameworks/base/data/fonts/fonts.mk

@@ -38,6 +38,8 @@ PRODUCT_PACKAGES := \

     DroidSansHebrew-Regular.ttf \

     DroidSansHebrew-Bold.ttf \

     DroidSansThai.ttf \

+    NotoSansHans-Regular.otf \

+    NotoSansHans-Bold.otf \

     DroidSerif-Regular.ttf \

     DroidSerif-Bold.ttf \

     DroidSerif-Italic.ttf \

diff --git a/frameworks/base/data/fonts/vendor_fonts.xml b/frameworks/base/data/fonts/vendor_fonts.xml

index 8690ee1..fba0c88 100755

--- a/frameworks/base/data/fonts/vendor_fonts.xml

+++ b/frameworks/base/data/fonts/vendor_fonts.xml

@@ -45,17 +45,26 @@

 

 <!-- Sample fallback font additions to the default fallback list. These fonts will be added

     to the top two positions of the fallback list, since the first has an order of 0. -->

-<!--

 <familyset>

     <family order="0">

         <fileset>

-            <file>MyFont.ttf</file>

+            <file>NotoSansHans-Regular.otf</file>

+            <file>NotoSansHans-Bold.otf</file>

         </fileset>

     </family>

+

+<!-- Italic 等等會造成啟動不了的問題,所以只新增前兩個足矣。

     <family>

         <fileset>

-            <file>MyOtherFont.ttf</file>

+            <file>NotoSansHans-Regular.otf</file>

+            <file>NotoSansHans-Italic.otf</file>

+            <file>NotoSansHans-Bolditalic.otf</file>

+            <file>NotoSansHans-Black.otf</file>

+            <file>NotoSansHans-DemiLight.otf</file>

+            <file>NotoSansHans-Light.otf</file>

+            <file>NotoSansHans-Medium.otf</file>

+            <file>NotoSansHans-Thin.otf</file>

         </fileset>

     </family>

+-->

 </familyset>

---->

需要強調一點,關於字型拷貝,經過測試發現需要同時修改Android.mkfonts.mk才可以完成拷貝。Google是以Apache License, version 2.0協議釋出的,所以大可不必擔心會有律師函的問題,在高版本的Android中這套字型已經是內建到Android中了。DroidSansFallback.ttf並不是完全指中文字型,由於之前並沒有開發出專心的中文字型,目前處理方法是把所以暫時不規範的字型都放入了DroidSansFallback.ttf中,Fallback是備胎的意思,所有的胎都爆了才會使用這個。

參考:《關於Android的字型》。低版本的Android參考《Android 如何增加新的字型檔》 <>

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述