我在我的Android项目中使用自定义字体。但是当文本包含连续的字母IJ
时,它会给出以下字形:
这似乎是字体PUA区域中位置为\uE2C5
的字形。
单个的I
和J
字形都存在于字体中,如果我将文本设置为I J
,它们就可以显示出来。
这不是OpenType字体(我认为Android甚至不支持自定义字体中的OpenType渲染),因此不应该发生这种情况。到底发生了什么?
以下是可重现该问题的简单项目:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = (TextView) findViewById(R.id.textview);
Typeface tf = Typeface.createFromAsset(this.getAssets(), "MenksoftHawang.ttf");
textView.setTypeface(tf);
textView.setText("IJ");
}
}
字体可以从这里下载。将其放入项目的assets文件夹中。
ij
还是IJ
都会生成其他字符,而fi
则会产生一个空白格。这听起来可能就是问题所在了。你有任何想法在字体文件中应该查找哪里吗? - SuragchTextView
的setFontFeatureSettings()
方法。它支持 CSS 字体特性设置。那里有一些代码似乎可以控制连字的开启和关闭。这看起来很有前途,但也可能是一个兔子洞。 - Cheticamp