搜索
首页web前端css教程编程更改表情符号肤色

Changing Emoji Skin Tones Programmatically

Emoji肤色修饰符:程序化处理指南

Emoji拥有多种肤色,这早已不是秘密。尤其是在文本和社交媒体中,它们非常受欢迎。✊?(举起的黑色拳头)表情符号甚至被Emojipedia的世界表情符号奖评为“2020年最佳表情符号”。

每个肤色都是一个修饰符,许多表情符号由修饰符和基本编码组成,这些编码对应于特定的字符。不幸的是,并非每个表情符号库都支持修饰符。但鉴于其流行程度,表情符号肤色修饰符远不止是“锦上添花”的功能。此外,它们也是一种巧妙的工作方式,因为它们使我们能够编写更模块化和更高效的代码。

因此,本文的目的就是:弄清楚如何以编程方式处理表情符号修饰符。这样,如果您遇到不支持肤色的情况,或者想要创建其他表情符号的自定义变体,您就知道该怎么做了!

Fitzpatrick肤色分级法

肤色修饰符作为Unicode 8.0的一部分,于2015年正式添加到表情符号中。它们基于Fitzpatrick肤色分级法,这是一种对人类肤色的正式分类。下表显示了表情符号字符如何与Fitzpatrick类型匹配:

在最简单的用例中,当这些字符之一附加到支持肤色修饰符的表情符号时,它会更改表情符号的肤色。

换句话说:? ? = ??

使用CSS应用肤色修饰符

要使用CSS在表情符号肤色之间切换,我们将从基本表情符号字符(?)开始,然后使用::after伪选择器附加肤色。

除了使用渲染的表情符号字符外,我们还可以使用Unicode十六进制代码:

使用JavaScript移除和切换肤色修饰符

如果正在处理的表情符号已经应用了肤色修饰符怎么办?为此,我们需要超越CSS。以下是一个使用JavaScript的示例:

这里发生了什么?首先,我们从一个具有Fitzpatrick 4型的婴儿表情符号开始。然后将其传递给removeModifier函数,该函数搜索任何肤色修饰符并将其从字符串中删除。现在我们有了没有修饰符的表情符号,我们可以添加任何我们喜欢的修饰符。

虽然这种方法适用于许多表情符号,但在引入其他修饰符时我们会遇到问题。这就是为什么我们现在需要讨论……

处理ZWJ序列

零宽度连接符(ZWJ)序列就像Unicode的复合词。它们由两个或多个由零宽度连接符U 200D连接的表情符号组成。

ZWJ序列最常用于向表情符号添加性别修饰符。例如,举重的人加上ZWJ,加上女性符号,等于一个举重的女人(️?️ ♀︎ = ?️‍♀️)。

处理ZWJ序列时,需要注意以下几点:

  • 这些序列只是建议。它们来自Unicode联盟,并非保证在每个平台上都受支持。如果平台不支持它们,则将显示常规表情符号的回退序列。
  • 如果存在肤色修饰符,则必须将其包含在表情符号之后但在ZWJ之前。
  • 一些ZWJ序列包含多个表情符号,每个表情符号都有不同的肤色修饰符。

鉴于此信息,我们需要对之前的代码示例进行以下更改:

  • 肤色修饰符需要插入到任何基本表情符号之后,而不仅仅是附加到表情符号的末尾。
  • 如果ZWJ序列中有多个表情符号具有肤色修饰符,则需要替换每个表情符号的修饰符。

限制

从这个例子中,您可以注意到一致性的局限性。编辑器视图分别显示ZWJ序列中的每个字符,肤色修饰符除外,它们会立即应用于其对应的表情符号。另一方面,控制台或结果视图将尝试渲染整个序列的字符。

对这一点的支持因平台而异。一些编辑器可能会尝试渲染ZWJ序列,并且并非所有浏览器都支持相同的ZWJ序列集。

此外,在ZWJ序列中添加肤色需要知道什么被用作基本表情符号。虽然在表情符号由已知集合提供的情况下这相对简单,但如果我们想要能够处理用户的任意输入,事情就会变得更加困难。

另外,请注意,本文中的CSS解决方案与ZWJ序列不兼容。

指导开发的问题

我整理了一些问题,您在设计需要处理表情符号肤色修饰符的系统时可能需要自问:

  • 我是否可以控制我的系统将与哪些表情符号交互?
  • 我的表情符号库是否包含有关哪些表情符号支持肤色修饰符的信息?
  • 我的系统是否需要添加、删除或更改修饰符?
  • 我的平台是否支持ZWJ序列?如果是,哪些?
  • 我的系统是否需要支持具有多个肤色修饰符的ZWJ序列?

希望通过对这些问题的解答以及我们在此处看到的示例,您将拥有在需要时支持表情符号肤色修饰符所需的一切。

以上是编程更改表情符号肤色的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
CSS Flexbox与网格:全面评论CSS Flexbox与网格:全面评论May 12, 2025 am 12:01 AM

选择Flexbox还是Grid取决于布局需求:1)Flexbox适用于一维布局,如导航栏;2)Grid适合二维布局,如杂志式布局。两者在项目中可结合使用,提升布局效果。

如何包括CSS文件:方法和最佳实践如何包括CSS文件:方法和最佳实践May 11, 2025 am 12:02 AM

包含CSS文件的最佳方法是使用标签在HTML的部分引入外部CSS文件。1.使用标签引入外部CSS文件,如。2.对于小型调整,可以使用内联CSS,但应谨慎使用。3.大型项目可使用CSS预处理器如Sass或Less,通过@import导入其他CSS文件。4.为了性能,应合并CSS文件并使用CDN,同时使用工具如CSSNano进行压缩。

Flexbox vs Grid:我应该学习两者吗?Flexbox vs Grid:我应该学习两者吗?May 10, 2025 am 12:01 AM

是的,youshouldlearnbothflexboxandgrid.1)flexboxisidealforone-demensional,flexiblelayoutslikenavigationmenus.2)gridexcelstcelsintwo-dimensional,confffferDesignssignssuchasmagagazineLayouts.3)blosebothenHancesSunHanceSlineHancesLayOutflexibilitibilitibilitibilitibilityAnderibilitibilityAndresponScormentilial anderingStruction

轨道力学(或我如何优化CSS KeyFrames动画)轨道力学(或我如何优化CSS KeyFrames动画)May 09, 2025 am 09:57 AM

重构自己的代码看起来是什么样的?约翰·瑞亚(John Rhea)挑选了他写的一个旧的CSS动画,并介绍了优化它的思维过程。

CSS动画:很难创建它们吗?CSS动画:很难创建它们吗?May 09, 2025 am 12:03 AM

CSSanimationsarenotinherentlyhardbutrequirepracticeandunderstandingofCSSpropertiesandtimingfunctions.1)Startwithsimpleanimationslikescalingabuttononhoverusingkeyframes.2)Useeasingfunctionslikecubic-bezierfornaturaleffects,suchasabounceanimation.3)For

@KeyFrames CSS:最常用的技巧@KeyFrames CSS:最常用的技巧May 08, 2025 am 12:13 AM

@keyframesispopularduetoitsversatoryand and powerincreatingsmoothcssanimations.keytricksinclude:1)definingsmoothtransitionsbetnestates,2)使用AnimatingmatematingmultationmatingMultationPropertiessimultane,3)使用使用4)使用BombingeNtibalibility,4)使用BombingingWithjavofofofofofoffo

CSS计数器:自动编号的综合指南CSS计数器:自动编号的综合指南May 07, 2025 pm 03:45 PM

CSSCOUNTERSAREDOMANAGEAUTOMANAMBERINGINWEBDESIGNS.1)他们可以使用forterablesofcontents,ListItems,and customnumbering.2)AdvancedsincludenestednumberingSystems.3)挑战挑战InclassINCludeBrowsEccerCerceribaliblesibility andperformiballibility andperformissises.4)创造性

使用卷轴驱动动画的现代滚动阴影使用卷轴驱动动画的现代滚动阴影May 07, 2025 am 10:34 AM

使用滚动阴影,尤其是对于移动设备,是克里斯以前涵盖的一个微妙的UX。杰夫(Geoff)涵盖了一种使用动画限制属性的新方法。这是另一种方式。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。