如何正确显示表情符号?

4

在你自己的应用程序中。

[编辑]

好的,我完全同意 - 比你知道的还要多 - 毫不犹豫地认为图形表情符号是一种憎恶。 但是!当项目所有者告诉我我们必须支持图形表情符号时,这对我没有帮助。

[/编辑]

这个问题比起初看来要复杂得多,特别是当你考虑到编辑、自动换行、可变宽度字体和彩色表情符号时。

所以我的问题实际上是针对那些已经解决了这个问题的人,你们有没有想出一种令人满意的表情符号呈现方式,而不只是一个巨大的hack?

让我们开始讨论:

在两个实现中,我尝试了以下方法。

在一个渲染文本到“纹理”中的3D应用程序中,我用图片替换了表情符号字符串,匹配文本渲染的类型,这样表情符号就成为了文本的另一个元素。

基本上,文本渲染引擎必须在最深层次上进行修改。这会产生良好的结果,但非常耗时,而且很难正确实现(或者至少对我来说是这样的 ;P)

在第二种方法中(使用不同的语言和平台),我决定尝试一个更高级别的“假”,通过将表情符号字符串替换为单个字符,并在替换字符上绘制情感。当然,这有很多限制,但它的好处是实现起来相当快速,并且可以在不过度努力的情况下达到相对稳定的状态。

3个回答

6
  1. 创建一个新字体。这取决于读者自己的练习。
  2. 将您的字符串转码为您的新字体的字符集。
  3. 绘制:
  • 反复调用操作环境函数来计算文本度量-定位表情符号的位置。
  • 在文本之前绘制表情符号(如果您使用字体来增强任何背景图像,比如一张脸,通过字形绘制黑色)或在文本之后绘制表情符号(在这种情况下,每个表情符号的字形是无意义的,只有字形的大小是重要的)。

  • 这是一个很好的答案,跟我目前在示例二中所做的非常接近,只是需要添加一个字符到字体中。这可能会稍微改善一下过程。但唯一尚未解决的问题是该过程非常缓慢,必须进行大量优化... - Aaron H.

    5

    你考虑不将表情符号转换成图片,这个答案可以接受吗?文本表情符号的整个意义在于它们是可识别的...以文本形式存在。

    [编辑] 请不要让这个意见/建议阻止任何人回答这个问题。有时候你不能与客户争论,尽管可能值得再试几次。


    0

    这里有一个想法:不要以任何方式转换它们,而是将它们旋转90度。

    例如,您可以渲染表情符号的图像,然后将该图像顺时针旋转90度并显示它。


    那可能在第一个示例实例中能够工作,但并不能真正解决问题... - Aaron H.

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接