2015-08-21 88 views
2

幫助鄉親, 我正在開發的Android應用程序,只需要使用1怪異的Unicode字符:的Android使用一種特殊的Unicode字符

\u0180 - ƀ 

我的問題是:

是它可以簡單地插入此字符到現有的字體或任何其他方式,而不是包括一個巨大的5-10 MB字體到支持此Unicode字符的應用程序? 請任何想法,任何鏈接,一些方向。 謝謝大家。

+0

就真正的字母而言,unicode中沒有「奇怪」的字符。你稱之爲怪異的,別人會稱之爲「我的書面語言只是一個普通的字母」,所以當你問的是一個不受支持的unicode字符。不是一個奇怪的。此外,如果您想立即獲得幫助,請添加更多詳情。你在哪裏搜索過,你曾經嘗試過什麼,爲什麼沒有這樣的工作,等等。不要只是建議你還沒有做任何研究,而期待即時答案=) –

回答

2

谷歌周圍的關鍵詞:Typeface,MetricAffectingSpan,SpannableString

你不必包含你不需要的整個字符集。您可以使用您選擇的代碼創建包含唯一字符的自己的字體。然後,您可以使用此字體來跨越包含該字符的字符串。

假設你有一個名爲custom_font與你的性格TTF字體文件,你可以把它放在你的assets/fonts文件夾,並創建一個字體對象:

Typeface customTypeface = Typeface.createFromAsset(context.getAssets(), "fonts/custom_font.ttf"); 

,然後你可以跨串跨越你的特殊字符(假設你不知道它的確切位置提前):

SpannableStringBuilder resultSpan = new SpannableStringBuilder(yourString); 

for (int i = 0; i < resultSpan.length(); i++) { 
    if (resultSpan.charAt(i) == '\u0180') { 
    CustomTypefaceSpan typefaceSpan = new CustomTypefaceSpan(customTypeface); 
    resultSpan.setSpan(typefaceSpan, i, i + 1, 0); 
    } 
} 

SpannableStringBuilder實現CharSequence,所以你TextView S和EditText旨意欣然接受它。您可以從this answer開始執行CustomTypefaceSpan

+0

是的,我嘗試了不同的字體,但我不知道你可以跨越字符集,謝謝你的朋友。 –