【问题标题】:Unicode character on Android not displayingAndroid上的Unicode字符不显示
【发布时间】:2013-01-28 16:59:12
【问题描述】:

我正在开发一个使用响应式设计的网站。我正在尝试显示 unicode 字符 ☰(☰ 符号),但它没有出现在 Android 上。有什么方法可以让这个角色正确显示,还是我需要用它制作图像?

谢谢

【问题讨论】:

  • 你是如何显示它的?很可能是由于您以某种方式阅读它
  • 不确定您的意思。它在一个纯html页面中,通过android的默认浏览器阅读。
  • 抱歉,错过了“网站”关键字。可能是设备上不可用的字符,也可能是使用的编码问题
  • 我很确定它不可用,因为其他 unicode 字符显示正常。有解决办法吗?

标签: android unicode


【解决方案1】:

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

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

如果这是您唯一需要的“特殊”字符,则图像方法可能是合适的:它很简单,而且字符的形状非常简单,可以很好地缩放。

使用可下载字体可能会产生更好的效果,尤其是在文本内嵌使用该字符时。但是您可能需要 Quivira 或 Symbola 之类的字体,它们是大(> 1 MB)免费字体,如果仅用于一个字符,这似乎意味着不成比例的开销。

欲了解更多信息,请参阅我的Guide to using special characters in HTML

【讨论】:

    【解决方案2】:

    为什么没有人建议 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;
    }
    

    【讨论】:

    • 要拥有清晰纯净的黑色线条,请使用box-shadow: 1px 10px 0px 1px #000,1px 16px 0px 1px #000,1px 22px 0px 1px #000;
    【解决方案3】:

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

    【讨论】:

    • 谢谢,这大概就是我要做的事情
    【解决方案4】:

    查看 Android 上支持的字符:Android character sets。好像不支持。 您可能可以将其替换为 <img src="http://www.fileformat.info/info/unicode/char/2630/trigram_for_heaven.png"> 标记。

    [编辑] 链接的 URL 不再有效,但您仍然可以在 archive.org 上查看:
    https://web.archive.org/web/20130603091753/http://www.ascendercorp.com/pdf/Droid_fonts.pdf

    【讨论】:

    • 不要挑剔,但是能不能把这张图弄成白色?
    【解决方案5】:

    我知道原来的帖子很旧。我就是这样完成的。

    CSS

    /*⮛*/
    .caretdown:before {
    font-size: 13px;
    font-weight:900;
    content:"\002b9b";
    }
    

    在移动设备上替换为@media 标签

    /* If the screen size is 600px or less */
    @media only screen and (max-width: 600px) {
    /*substitute ⮛  on mobile for ▼ */
        .caretdown:before {
        content:"\25BC";
        }
    }
    

    【讨论】:

      【解决方案6】:

      我将此代码用于汉堡菜单图标:

      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);
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2014-05-26
        • 1970-01-01
        • 1970-01-01
        • 2011-07-18
        • 2016-08-25
        • 1970-01-01
        • 2023-04-01
        • 1970-01-01
        相关资源
        最近更新 更多