Android上的Unicode字符无法显示

时间:2013-01-28 16:59:12

标签: android unicode

我正在使用响应式设计开发一个网站。我正在尝试显示unicode字符&#9776(☰符号),并且它没有显示在Android上。有没有办法让这个角色正确显示,还是我需要用它制作一个图像?

由于

5 个答案:

答案 0 :(得分:17)

☰表示的字符未出现在Android字体中,其font coverage在其他环境中也相对有限。

基本选项是通过@font-face使用可下载字体(网络字体)并使用适当缩放到文字大小的图像。

如果这是你需要的唯一“特殊”角色,那么图像方法可能是合适的:它很容易,而且角色的形状非常简单,可以很好地扩展。

使用可下载的字体可能会产生更好的效果,尤其是如果字符在内部文本中使用。但是你可能需要像Quivira或Symbola这样的字体,这些字体是大型(> 1 Mbyte)免费字体,如果只是一个字符,这似乎意味着不成比例的开销。

有关详细信息,请参阅我的Guide to using special characters in HTML

答案 1 :(得分:5)

为什么没有人建议CSS3方法超出我的范围。几乎所有设备都支持此功能。

这里有一个小小的动作,http://jsfiddle.net/328k7/

使用CSS3创建三元组,如下所示:

div {
    content: "";
    position: absolute;
    left: 0;
    display: block;
    width: 16px;
    top: 0;
    height: 0;
    -webkit-box-shadow: 1px 10px 1px 1px #69737d,1px 16px 1px 1px #69737d,1px 22px 1px 1px #69737d;
    box-shadow: 0 10px 0 1px #69737d,0 16px 0 1px #69737d,0 22px 0 1px #69737d;
}

答案 2 :(得分:2)

它没有为当前字体定义。如果您只关心自己的设备,可以将字体更改为适合的字体,但确保在所有设备上显示它的唯一方法是使用图像。

答案 3 :(得分:2)

查看Android上支持的字符:Android character sets。似乎没有得到支持。 您可以使用<img src="http://www.fileformat.info/info/unicode/char/2630/trigram_for_heaven.png">标记替换它。

答案 4 :(得分:-1)

我将此代码用于hamburger-menu-icon:

public class MenuButton extends Button
{
    public MenuButton(android.content.Context context){
        super(context);
    }

    public MenuButton(android.content.Context context, android.util.AttributeSet attrs) {
        super(context,attrs);
    }
    public MenuButton(android.content.Context context, android.util.AttributeSet attrs, int defStyleAttr) {
        super(context,attrs,defStyleAttr);
    }
    public MenuButton(android.content.Context context, android.util.AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context,attrs,defStyleAttr,defStyleRes);
    }
    Paint paint = new Paint();
    @Override
    protected void onDraw(Canvas canvas){
        //super.onDraw(canvas);
        MarginLayoutParams lp=(MarginLayoutParams)getLayoutParams();

        float p=lp.rightMargin;
        float w=getWidth()-lp.leftMargin-lp.rightMargin;
        float h=getHeight()-lp.topMargin-lp.bottomMargin;

        paint.setColor(Color.WHITE);
        paint.setStrokeWidth(0.0f);
        float ww=(h)/5.0f;
        canvas.drawRect(0+p, ww*0+p, p+w, ww*1+p, paint);
        canvas.drawRect(0+p, ww*2+p, p+w, ww*3+p, paint);
        canvas.drawRect(0+p, ww*4+p, p+w, ww*5+p, paint);
    }
}