【问题标题】:livecode and unicode on the android and greek letter (π)android 和希腊字母 (π) 上的 livecode 和 unicode
【发布时间】:2014-05-03 20:13:32
【问题描述】:

我已将我的应用程序部署到 android,并且每个带有希腊字母 (π) 的单词都已替换为矩形(是唯一缺少的字母。 任何人都对此有所了解?任何人都可以提供解决此问题的任何方法吗? 谢谢

  put uniDecode(the unicodetext of fld "t01","UTF8") into Rtext
set the unicodeText of field "t1" to uniEncode (Rtext,"UTF8")

【问题讨论】:

  • 您是在编写原生应用还是在使用什么框架?有代码吗?
  • 矩形通常表示在使用的字体中缺少字符的字形。请提供更多信息。您的文本中是否包含其他希腊字母?
  • 我正在使用 livecode,是的,是原生的,但是在 ios(在 iphone、ipad、模拟器上测试)一切正常,在 android 平台上的字母丢失了.. 所有项目都在希腊语所以是的,我有很多希腊字母,只有 (π) 丢失了
  • 您使用的是哪个版本的 LiveCode?​​span>

标签: android unicode livecode


【解决方案1】:

尚不清楚该脚本与您的问题有何关联。而不是

put uniDecode(the unicodetext of fld "t01","UTF8") into Rtext
set the unicodeText of field "t1" to uniEncode (Rtext,"UTF8")

你可以使用

set the unicodeText of fld "t1" to the unicodeText of fld "t01"

(在 LiveCode 7 中,这将不再需要)。

如果您使用的是装有 OSX 的计算机,您可能正在键入 option-p 以快速获取 π 符号。不幸的是,这是一个更高的 ASCII 符号,在其他计算机系统上以不同的方式解码。因此它在 Android 上显示不正确。

要获得 π 的 unicode 等价物,而不是更高的 ASCII 符号,您可以使用以下脚本:

set the useUnicode to true
set the unicodetext of fld 1 to numToChar(0x3c0)

Android 应该能够正确显示它。如果这不起作用,您可以尝试通过将自己的字体包含在您的独立包中来包含它。

要在独立包中包含字体,请转到独立应用程序设置的文件选项卡。只需将您自己的字体文件添加到列表中即可。不要选择字体文件的父文件夹。该字体将位于独立包内项目的主堆栈旁边,LiveCode 会自动找到它。确保相应地设置字段的 textFont 属性。

【讨论】:

    【解决方案2】:

    Jukka 说得对,您是使用自定义字体还是内置字体?无论哪种方式,我建议切换到自定义字体并确保它有(或自己添加)丢失的字母。如果您需要帮助设置自定义字体,请告诉我!

    【讨论】:

    • 不,我不使用任何自定义字体,但我做了一个检查程序,我在 android 模拟器和我的 LG 手机上看到字体只有 3 并且是 Droid Sans、Droid Sans mono、Droid serif ,我已经制作了下面的代码来测试 unicode,但我仍然得到相同的结果,我已经更新了我的原始帖子..
    • 1001freefonts.com/comic-cartoon-fonts.php 找到您需要的字符的字体,在您的资产文件夹中创建一个名为 fotns 的新文件夹并将其放在那里...然后在 oncreate Typeface font = Typeface.createFromAsset(getAssets() , "字体/YOURFONT.ttf");
    【解决方案3】:

    http://www.1001freefonts.com/comic-cartoon-fonts.php 找到您需要的字符的字体,在您的资产文件夹中创建一个名为 fotns 的新文件夹并将其放在那里...然后在 oncreate 中

      Typeface  font = Typeface.createFromAsset(getAssets(), "fonts/YOURFONT.ttf");                                //then set each textview like so                                                   tv = (TextView) findViewById(R.id.cheatwarn);
            tv.setTypeface(font);
    

    如果您使用表面来绘制文本,请在创建表面时传入字体并创建 TextPaint() 并将其字体设置为相同...如果您使用表面视图,则需要将 getassets 更改为 getBaseContext.getAssets()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-30
      • 1970-01-01
      • 1970-01-01
      • 2021-07-16
      • 2021-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多