Как мне применить оттенок кожи к смайлику в JavaScript? - PullRequest
1 голос
/ 02 мая 2020

С учетом этого смайлика, как программно применить тон кожи в 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) // ??

1 Ответ

1 голос
/ 02 мая 2020

Есть только несколько смайликов, которые на самом деле принимают тона кожи. Например, лица - мужское и женское лицо:

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)

Это невозможно с другими, которые не поддерживают цветовые варианты. Здесь, в Каждое Emoji по Codepoint , вы можете найти эти support Модификатор Emoji Fitzpatrick .

Без поддержки модификаторов

nomod

Поддерживается модификатор

yesmod

...