【问题标题】:How do I apply a skin tone to an emoji in JavaScript?如何在 JavaScript 中将肤色应用于表情符号?
【发布时间】:2020-05-02 19:41:34
【问题描述】:

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

笑脸是0x1F600

深肤色是0x1F3FF

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

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

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) // ????????

【问题讨论】:

    标签: javascript unicode emoji


    【解决方案1】:

    实际上只有少数表情符号会占用肤色。例如,面孔 - 男人和女人捂脸:

    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 Modifier Fitzpatrick

    不支持修饰符

    支持修饰符

    【讨论】:

    • 所以“笑脸”不支持肤色?
    • @BenAston 是的,没错,它不支持肤色,正确地说,它不支持 Emoji Modifier Fitzpatrick。
    猜你喜欢
    • 1970-01-01
    • 2016-05-25
    • 2019-12-26
    • 1970-01-01
    • 2021-01-12
    • 2020-05-26
    • 2018-06-05
    • 2023-03-10
    • 2016-07-19
    相关资源
    最近更新 更多