forked from Qortal/qortal-ui
AlphaX-Projects
3 months ago
6 changed files with 65 additions and 10 deletions
Binary file not shown.
@ -0,0 +1,20 @@
|
||||
import { supportsEmojiFlags } from './ChatTestEmojiFlags' |
||||
|
||||
export function supportCountryFlagEmojis(fontName = "Twemoji Country Flags", fontUrl = "/font/TwemojiCountryFlags.woff2") { |
||||
if (typeof window !== "undefined" && supportsEmojiFlags("😊") && !supportsEmojiFlags("🇨🇭")) { |
||||
const style = document.createElement("style") |
||||
|
||||
style.textContent = `@font-face {
|
||||
font-family: "${fontName}"; |
||||
unicode-range: U+1F1E6-1F1FF, U+1F3F4, U+E0062-E0063, U+E0065, U+E0067, U+E006C, U+E006E, U+E0073-E0074, U+E0077, U+E007F; |
||||
src: url('${fontUrl}') format('woff2'); |
||||
font-display: swap; |
||||
}` |
||||
|
||||
document.head.appendChild(style) |
||||
|
||||
return true |
||||
} |
||||
|
||||
return false |
||||
} |
@ -0,0 +1,32 @@
|
||||
const FONT_FAMILY = '"Twemoji Mozilla","Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji","EmojiOne Color","Android Emoji",sans-serif' |
||||
|
||||
function makeCtx() { |
||||
const canvas = document.createElement("canvas") |
||||
canvas.width = canvas.height = 1 |
||||
|
||||
const ctx = canvas.getContext("2d", { willReadFrequently: true }) |
||||
|
||||
ctx.textBaseline = "top" |
||||
ctx.font = `100px ${FONT_FAMILY}` |
||||
ctx.scale(0.01, 0.01) |
||||
|
||||
return ctx |
||||
} |
||||
|
||||
function getColor(ctx, text, color) { |
||||
ctx.clearRect(0, 0, 100, 100) |
||||
ctx.fillStyle = color |
||||
ctx.fillText(text, 0, 0) |
||||
|
||||
const bytes = ctx.getImageData(0, 0, 1, 1).data |
||||
|
||||
return bytes.join(",") |
||||
} |
||||
|
||||
export function supportsEmojiFlags(text) { |
||||
const ctx = makeCtx() |
||||
const white = getColor(ctx, text, "#fff") |
||||
const black = getColor(ctx, text, "#000") |
||||
|
||||
return black === white && !black.startsWith("0,0,0,") |
||||
} |
Loading…
Reference in new issue