如何将肤色应用于 JavaScript 中的表情符号?

How do I apply a skin tone to an emoji in JavaScript?

鉴于此表情符号,我如何以编程方式在 JavaScript 中应用肤色?

笑脸是0x1F600

深肤色是 0x1F3FF

我是否只是将这些值连接在一起?

下面的代码,基于算法,仅仅打印出两个字符。

function units(codepoint) {
    const tmp = codepoint - 0x10000
    const padded = tmp.toString(2).padStart(20, '0')
    const unit1 = Number.parseInt(padded.substr(0, 10), 2) + 0xD800;
    const unit2 = Number.parseInt(padded.substr(10), 2) + 0xDC00;
    return [unit1, unit2]
}

const face = units(0x1F600)
const tone = units(0x1F3FF)
const ch = String.fromCharCode(...face, ...tone) 
console.log(ch) // 

只有少数表情符号真正占据了肤色。例如,面部 - 男人和女人 facepalming:

function units(codepoint) {
    const tmp = codepoint - 0x10000
    const padded = tmp.toString(2).padStart(20, '0')
    const unit1 = Number.parseInt(padded.substr(0, 10), 2) + 0xD800;
    const unit2 = Number.parseInt(padded.substr(10), 2) + 0xDC00;
    return [unit1, unit2]
}

const face = units(0x1F926)
const tone = units(0x1F3FF)
const ch = String.fromCharCode(...face, ...tone) 
console.log(ch)

其他不支持颜色变体的是不可能的。在这里,在 Every Emoji by Codepoint 中,您可以找到 支持 Emoji 修改器 Fitzpatrick

不支持修改器

支持修改器