在EditText中输入“ae”会自动变为æ

时间:2014-01-22 04:26:29

标签: android ios special-characters android-edittext

我刚刚继承了一些android代码,我遇到的第一个错误之一是一个奇怪的EditText问题,当我按顺序键入字母'a'和'e'时,EditText会自动将它们合并到字符'æ'中。完整的xml声明如下:

<EditText
  android:id="@+id/editFirstname"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:background="@drawable/profile_edittext_selector"
  android:ems="10"
  android:inputType="textCapSentences"
  android:paddingBottom="6dp"
  android:paddingLeft="15dp"
  android:paddingRight="5dp"
  android:paddingTop="5dp"
  android:textColor="#666666"
  android:textColorHint="#666666"
  android:textSize="12sp" >
</EditText>

我使用xml搜索了相关的Activity和Fragment,但是我没有找到任何可以归咎的东西 - 没有TextWatcher,也没有任何例程试图修改EditText中的输入或charsequence。输入语言为“使用默认值”(设置为英语 - 美国)。

奇怪的是,iOS版本的应用程序中存在相同的错误(不同的开发人员,也不知道为什么会发生这种情况)。

有没有人遇到过这个?

编辑: 可提交的声明,如要求:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">\
  <item android:drawable="@drawable/bgd_form_selected" android:state_pressed="true"/>
  <item android:drawable="@drawable/bgd_form_selected" android:state_focused="true"/>
  <item android:drawable="@drawable/bgd_form"/>
</selector>

EDIT2:

其他信息: - 适用于所有测试设备:gs2,gs3,xperia z,nexus 4,galaxy ace

  • 如上所述:iOS上提交的相同错误

  • 重要:服务器在提交值时收到正确的输入(例如“ae”未转换)(这可能会缩小到显示问题)

2 个答案:

答案 0 :(得分:4)

我只知道ios,没有安装机器人,对不起...... 但是你在这里看到的文本的属性叫做'ligature'

来自维基百科

  

在写作和排版中,印刷结扎发生在两个或两个或两个   更多的字形或字母作为单个字形连接在一起。连字   通常替换共享通用组件的连续字符   是一类更普遍的字形的一部分,称为“上下文形式”,   字母的具体形状取决于上下文,例如   周围的字母或靠近一条线的末端。

您可能会尝试使用没有连接字形的字体,或者可能有一个属性可以翻转以关闭相关文本视图的连字。有趣的是

也是维基百科..

  

字符Æ - 小写æ(在古代称为æsc)使用时   丹麦语,挪威语或冰岛语,或古英语,是   不是印刷结扎。这是一个独特的字母 - 一个元音 - 何时   字母顺序,按字母顺序给出不同的位置。在   现代英语拼写Æ不被视为独立的字母   但是拼写变体,例如:“encyclopædia”与   “百科全书”或“百科全书”。 Æ来自MediævalLatin,在那里   在某些词中,它是可选的连字词,例如“Æneas”。它是   仍被发现是英语和法语的变体,但趋势是   最近一直在分别打印A和E. [8]同样,Œ   和 - 虽然通常用法语打印成连字,但是错误的   如果技术限制要求,则用组件字母替换。

虽然这个特定的元素在某种程度上不是连字而是新的元音,但它仍然通常在连字设置中被发现和管理,例如在iOs中的NSAttributedString中,你将使用连字属性(enum的实际名称)来影响它。现在回想一下,NSAttributedString有点乱,因为它使用不同的属性名称,这取决于你是否在UIKit或CoreText中使用它。)祝你好运,看看关于连字的android文本文档

答案 1 :(得分:4)

您写道:

  

奇怪的是,在iOS版本中提交了同样的错误   应用程序(不同的开发人员,也不知道为什么会发生这种情况)。

所以我想知道你是否在应用的资产中添加了buggy version of the font Roboto。它包含一个错误的连字规则,它将“ae”改为“æ”:

  <Lookup index="1">
    <LookupType value="4"/>
    <LookupFlag value="0"/>
    <!-- SubTableCount=1 -->
    <LigatureSubst index="0" Format="1">
      <LigatureSet glyph="a">
        <Ligature components="e" glyph="ae"/>
      </LigatureSet>
      <LigatureSet glyph="f">
        <Ligature components="i" glyph="fi"/>
      </LigatureSet>
    </LigatureSubst>
  </Lookup>

它已经修复,因此您可以通过更新应用资产中的Roboto字体来解决问题。