如何在Android中获取文字大纲?

时间:2015-01-22 09:16:36

标签: java android c++ fonts intersection

我想写一个像wordle.net这样的APP。

这是一个示例图像。 https://github.com/danbernier/WordCram/raw/master/wordcram.png

我需要获取字体字形和文字大纲。然后做交叉测试。

我知道如何用Java。

public class WordShaper {
private FontRenderContext frc = new FontRenderContext(null, true, true);
private Shape makeShape(String word, Font font) {
    char[] chars = word.toCharArray();

    // TODO hmm: this doesn't render newlines.  Hrm.  If your word text is "foo\nbar", you get "foobar".
    GlyphVector gv = font.layoutGlyphVector(frc, chars, 0, chars.length,
            this.rightToLeft ? Font.LAYOUT_RIGHT_TO_LEFT : Font.LAYOUT_LEFT_TO_RIGHT);

    return gv.getOutline();
}
}

此功能来自wordcram.org

但Android没有类FontRenderContext,GlyphVector和Shape。

我的问题是:

  1. 如何在Android中获取文字大纲?我找到FreeType,它可以移植到Android.It有一个API FT_Load_Glyph来获取一个字符的字形。但是我需要得到一个单词的轮廓,而不仅仅是一个角色。是否有任何图书馆可以完成这项工作,例如上面的makShape()?
  2. 是否有类Shape的均衡。我找到了一个可以像Shape一样进行相交测试的库(Java或C ++)。
  3. 感谢。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我使用freetype来获取每个角色的字形,然后将它们组合起来。所以我得到了一个单词的字形。这是一个bmp文件。我写了一个jni lib来使用bmp文件。

我没有找到任何可以在Android平台上用Java做这项工作的解决方案。