Commit 7d9806b6 authored by wang's avatar wang

环境兼容

parent da3e5006
This source diff could not be displayed because it is too large. You can view the blob instead.
let fonts = [ try {
{"font": "50px sans-serif", "text": "0-_{w."}, { let fonts = [
"font": "50px serif", {"font": "50px sans-serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px serif",
}, {"font": "50px 'Andale Mono', sans-serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'Arial Narrow', sans-serif", }, {"font": "50px 'Andale Mono', sans-serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'Arial Narrow', sans-serif",
}, {"font": "50px 'Arial Unicode MS', sans-serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'Batang', sans-serif", }, {"font": "50px 'Arial Unicode MS', sans-serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'Batang', sans-serif",
}, {"font": "50px 'Batang', serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'Bell MT', sans-serif", }, {"font": "50px 'Batang', serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'Bell MT', sans-serif",
}, {"font": "50px 'Bell MT', serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'Brush Script', sans-serif", }, {"font": "50px 'Bell MT', serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'Brush Script', sans-serif",
}, {"font": "50px 'Brush Script', serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'Brush Script MT', sans-serif", }, {"font": "50px 'Brush Script', serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'Brush Script MT', sans-serif",
}, {"font": "50px 'Calibri', sans-serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'Calibri', serif", }, {"font": "50px 'Calibri', sans-serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'Calibri', serif",
}, {"font": "50px 'Charter', sans-serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'Courier', sans-serif", }, {"font": "50px 'Charter', sans-serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'Courier', sans-serif",
}, {"font": "50px 'Courier New', sans-serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'Curlz MT', sans-serif", }, {"font": "50px 'Courier New', sans-serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'Curlz MT', sans-serif",
}, {"font": "50px 'Curlz MT', serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'DejaVu Sans', sans-serif", }, {"font": "50px 'Curlz MT', serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'DejaVu Sans', sans-serif",
}, {"font": "50px 'DejaVu Sans', serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'DejaVu Sans Mono', sans-serif", }, {"font": "50px 'DejaVu Sans', serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'DejaVu Sans Mono', sans-serif",
}, {"font": "50px 'DejaVu Sans Mono', serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'DejaVu Serif Condensed', sans-serif", }, {"font": "50px 'DejaVu Sans Mono', serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'DejaVu Serif Condensed', sans-serif",
}, {"font": "50px 'DejaVu Serif Condensed', serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'Droid Sans', sans-serif", }, {"font": "50px 'DejaVu Serif Condensed', serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'Droid Sans', sans-serif",
}, {"font": "50px 'Droid Sans', serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'Droid Sans Fallback', sans-serif", }, {"font": "50px 'Droid Sans', serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'Droid Sans Fallback', sans-serif",
}, {"font": "50px 'Droid Sans Fallback', serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'Droid Serif', sans-serif", }, {"font": "50px 'Droid Sans Fallback', serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'Droid Serif', sans-serif",
}, {"font": "50px 'Droid Serif', serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'Forte', sans-serif", }, {"font": "50px 'Droid Serif', serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'Forte', sans-serif",
}, {"font": "50px 'Forte', serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'Futura', sans-serif", }, {"font": "50px 'Forte', serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'Futura', sans-serif",
}, {"font": "50px 'Geneva', sans-serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'Hei', sans-serif", }, {"font": "50px 'Geneva', sans-serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'Hei', sans-serif",
}, {"font": "50px 'Leelawadee', sans-serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'Leelawadee', serif", }, {"font": "50px 'Leelawadee', sans-serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'Leelawadee', serif",
}, {"font": "50px 'Levenim MT', sans-serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'Levenim MT', serif", }, {"font": "50px 'Levenim MT', sans-serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'Levenim MT', serif",
}, {"font": "50px 'Liberation Sans', sans-serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'Liberation Sans', serif", }, {"font": "50px 'Liberation Sans', sans-serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'Liberation Sans', serif",
}, { "text": "0-_{w."
"font": "50px 'Liberation Sans Narrow', sans-serif", }, {
"text": "0-_{w." "font": "50px 'Liberation Sans Narrow', sans-serif",
}, {"font": "50px 'Liberation Sans Narrow', serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'Marlett', sans-serif", }, {"font": "50px 'Liberation Sans Narrow', serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'Marlett', sans-serif",
}, {"font": "50px 'Marlett', serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'Meiryo UI', sans-serif", }, {"font": "50px 'Marlett', serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'Meiryo UI', sans-serif",
}, {"font": "50px 'Meiryo UI', serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'Microsoft Uighur', sans-serif", }, {"font": "50px 'Meiryo UI', serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'Microsoft Uighur', sans-serif",
}, {"font": "50px 'Microsoft Uighur', serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'Microsoft YaHei UI', sans-serif", }, {"font": "50px 'Microsoft Uighur', serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'Microsoft YaHei UI', sans-serif",
}, {"font": "50px 'Microsoft YaHei UI', serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'MS Mincho', sans-serif", }, {"font": "50px 'Microsoft YaHei UI', serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'MS Mincho', sans-serif",
}, {"font": "50px 'MS Mincho', serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'MS UI Gothic', sans-serif", }, {"font": "50px 'MS Mincho', serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'MS UI Gothic', sans-serif",
}, {"font": "50px 'MS UI Gothic', serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'NanumGothic', sans-serif", }, {"font": "50px 'MS UI Gothic', serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'NanumGothic', sans-serif",
}, {"font": "50px 'Nirmala UI', sans-serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'Nirmala UI', serif", }, {"font": "50px 'Nirmala UI', sans-serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'Nirmala UI', serif",
}, {"font": "50px 'Palatino', sans-serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'Papyrus', sans-serif", }, {"font": "50px 'Palatino', sans-serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'Papyrus', sans-serif",
}, {"font": "50px 'PMingLiU', sans-serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'PMingLiU', serif", }, {"font": "50px 'PMingLiU', sans-serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'PMingLiU', serif",
}, {"font": "50px 'PT Serif', sans-serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'SimHei', sans-serif", }, {"font": "50px 'PT Serif', sans-serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'SimHei', sans-serif",
}, {"font": "50px 'SimHei', serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'STIXVariants', sans-serif", }, {"font": "50px 'SimHei', serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'STIXVariants', sans-serif",
}, {"font": "50px 'STSong', sans-serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'Traditional Arabic', sans-serif", }, {"font": "50px 'STSong', sans-serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'Traditional Arabic', sans-serif",
}, {"font": "50px 'Traditional Arabic', serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'Urdu Typesetting', sans-serif", }, {"font": "50px 'Traditional Arabic', serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'Urdu Typesetting', sans-serif",
}, {"font": "50px 'Urdu Typesetting', serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'Verdana', sans-serif", }, {"font": "50px 'Urdu Typesetting', serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'Verdana', sans-serif",
}, {"font": "50px 'Wingdings', sans-serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'Wingdings 3', sans-serif", }, {"font": "50px 'Wingdings', sans-serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'Wingdings 3', sans-serif",
}, {"font": "50px 'Helkevtrica', sans-serif", "text": "0-_{w."}, { "text": "0-_{w."
"font": "50px 'Helkevtrica', serif", }, {"font": "50px 'Helkevtrica', sans-serif", "text": "0-_{w."}, {
"text": "0-_{w." "font": "50px 'Helkevtrica', serif",
}, {"font": "1000px sans-serif", "text": "₹"}, {"font": "1000px sans-serif", "text": "▁"}, { "text": "0-_{w."
"font": "1000px sans-serif", }, {"font": "1000px sans-serif", "text": "₹"}, {"font": "1000px sans-serif", "text": "▁"}, {
"text": "₺" "font": "1000px sans-serif",
}, {"font": "1000px sans-serif", "text": "ꜽ"}, {"font": "1000px sans-serif", "text": "�"}, { "text": "₺"
"font": "1000px sans-serif", }, {"font": "1000px sans-serif", "text": "ꜽ"}, {"font": "1000px sans-serif", "text": "�"}, {
"text": "₸" "font": "1000px sans-serif",
}, {"font": "1000px sans-serif", "text": "׆"}, {"font": "1000px sans-serif", "text": "ẞ"}, { "text": "₸"
"font": "1000px sans-serif", }, {"font": "1000px sans-serif", "text": "׆"}, {"font": "1000px sans-serif", "text": "ẞ"}, {
"text": "ॿ" "font": "1000px sans-serif",
}, {"font": "1000px sans-serif", "text": ""}, {"font": "1000px sans-serif", "text": "᳚"}, { "text": "ॿ"
"font": "1000px sans-serif", }, {"font": "1000px sans-serif", "text": ""}, {"font": "1000px sans-serif", "text": "᳚"}, {
"text": "៝" "font": "1000px sans-serif",
}, {"font": "1000px sans-serif", "text": "⎮"}, {"font": "1000px sans-serif", "text": "ം"}, { "text": "៝"
"font": "1000px sans-serif", }, {"font": "1000px sans-serif", "text": "⎮"}, {"font": "1000px sans-serif", "text": "ം"}, {
"text": "ஂ" "font": "1000px sans-serif",
}, {"font": "1000px sans-serif", "text": "ᅚ"}, {"font": "1000px sans-serif", "text": "␥"}, { "text": "ஂ"
"font": "1000px sans-serif", }, {"font": "1000px sans-serif", "text": "ᅚ"}, {"font": "1000px sans-serif", "text": "␥"}, {
"text": "〮" "font": "1000px sans-serif",
}, {"font": "1000px sans-serif", "text": "꠰"}, {"font": "1000px sans-serif", "text": "⬆"}, { "text": "〮"
"font": "1000px sans-serif", }, {"font": "1000px sans-serif", "text": "꠰"}, {"font": "1000px sans-serif", "text": "⬆"}, {
"text": "⇤" "font": "1000px sans-serif",
}, {"font": "1000px sans-serif", "text": "₽"}, {"font": "1000px sans-serif", "text": "ⱻ"}, { "text": "⇤"
"font": "1000px sans-serif", }, {"font": "1000px sans-serif", "text": "₽"}, {"font": "1000px sans-serif", "text": "ⱻ"}, {
"text": "₰" "font": "1000px sans-serif",
}, {"font": "1000px sans-serif", "text": "ﯮ"}, {"font": "1000px sans-serif", "text": ""}, { "text": "₰"
"font": "1000px sans-serif", }, {"font": "1000px sans-serif", "text": "ﯮ"}, {"font": "1000px sans-serif", "text": ""}, {
"text": "￿" "font": "1000px sans-serif",
}, {"font": "1000px sans-serif", "text": ""}, {"font": "1000px sans-serif", "text": "Ⴀ"}, { "text": "￿"
"font": "1000px sans-serif", }, {"font": "1000px sans-serif", "text": ""}, {"font": "1000px sans-serif", "text": "Ⴀ"}, {
"text": "𝞐" "font": "1000px sans-serif",
}, {"font": "1000px sans-serif", "text": "܀"}, {"font": "1000px sans-serif", "text": "ᥐ"}, { "text": "𝞐"
"font": "1000px sans-serif", }, {"font": "1000px sans-serif", "text": "܀"}, {"font": "1000px sans-serif", "text": "ᥐ"}, {
"text": "ゕ" "font": "1000px sans-serif",
}, {"font": "1000px sans-serif", "text": "匭"}, { "text": "ゕ"
"font": "1000px sans-serif", }, {"font": "1000px sans-serif", "text": "匭"}, {
"text": "؜" "font": "1000px sans-serif",
}, {"font": "1000px sans-serif", "text": "⃣"}, {"font": "1000px sans-serif", "text": ""}, { "text": "؜"
"font": "1000px sans-serif", }, {"font": "1000px sans-serif", "text": "⃣"}, {"font": "1000px sans-serif", "text": ""}, {
"text": "Ș" "font": "1000px sans-serif",
}, {"font": "1000px sans-serif", "text": "֏"}, {"font": "1000px sans-serif", "text": "ࣤ"}, { "text": "Ș"
"font": "1000px sans-serif", }, {"font": "1000px sans-serif", "text": "֏"}, {"font": "1000px sans-serif", "text": "ࣤ"}, {
"text": "঳" "font": "1000px sans-serif",
}, {"font": "1000px sans-serif", "text": "᱐"}, {"font": "1000px sans-serif", "text": "☙"}, { "text": "঳"
"font": "1000px serif", }, {"font": "1000px sans-serif", "text": "᱐"}, {"font": "1000px sans-serif", "text": "☙"}, {
"text": "₹" "font": "1000px serif",
}, {"font": "1000px serif", "text": "▁"}, {"font": "1000px serif", "text": "₺"}, { "text": "₹"
"font": "1000px serif", }, {"font": "1000px serif", "text": "▁"}, {"font": "1000px serif", "text": "₺"}, {
"text": "ꜽ" "font": "1000px serif",
}, {"font": "1000px serif", "text": "�"}, {"font": "1000px serif", "text": "₸"}, { "text": "ꜽ"
"font": "1000px serif", }, {"font": "1000px serif", "text": "�"}, {"font": "1000px serif", "text": "₸"}, {
"text": "׆" "font": "1000px serif",
}, {"font": "1000px serif", "text": "ẞ"}, {"font": "1000px serif", "text": "ॿ"}, { "text": "׆"
"font": "1000px serif", }, {"font": "1000px serif", "text": "ẞ"}, {"font": "1000px serif", "text": "ॿ"}, {
"text": "" "font": "1000px serif",
}, {"font": "1000px serif", "text": "᳚"}, {"font": "1000px serif", "text": "៝"}, { "text": ""
"font": "1000px serif", }, {"font": "1000px serif", "text": "᳚"}, {"font": "1000px serif", "text": "៝"}, {
"text": "⎮" "font": "1000px serif",
}, {"font": "1000px serif", "text": "ം"}, {"font": "1000px serif", "text": "ஂ"}, { "text": "⎮"
"font": "1000px serif", }, {"font": "1000px serif", "text": "ം"}, {"font": "1000px serif", "text": "ஂ"}, {
"text": "ᅚ" "font": "1000px serif",
}, {"font": "1000px serif", "text": "␥"}, {"font": "1000px serif", "text": "〮"}, { "text": "ᅚ"
"font": "1000px serif", }, {"font": "1000px serif", "text": "␥"}, {"font": "1000px serif", "text": "〮"}, {
"text": "꠰" "font": "1000px serif",
}, {"font": "1000px serif", "text": "⬆"}, {"font": "1000px serif", "text": "⇤"}, { "text": "꠰"
"font": "1000px serif", }, {"font": "1000px serif", "text": "⬆"}, {"font": "1000px serif", "text": "⇤"}, {
"text": "₽" "font": "1000px serif",
}, {"font": "1000px serif", "text": "ⱻ"}, {"font": "1000px serif", "text": "₰"}, { "text": "₽"
"font": "1000px serif", }, {"font": "1000px serif", "text": "ⱻ"}, {"font": "1000px serif", "text": "₰"}, {
"text": "ﯮ" "font": "1000px serif",
}, {"font": "1000px serif", "text": ""}, {"font": "1000px serif", "text": "￿"}, { "text": "ﯮ"
"font": "1000px serif", }, {"font": "1000px serif", "text": ""}, {"font": "1000px serif", "text": "￿"}, {
"text": "" "font": "1000px serif",
}, {"font": "1000px serif", "text": "Ⴀ"}, {"font": "1000px serif", "text": "𝞐"}, { "text": ""
"font": "1000px serif", }, {"font": "1000px serif", "text": "Ⴀ"}, {"font": "1000px serif", "text": "𝞐"}, {
"text": "܀" "font": "1000px serif",
}, {"font": "1000px serif", "text": "ᥐ"}, {"font": "1000px serif", "text": "ゕ"}, { "text": "܀"
"font": "1000px serif", }, {"font": "1000px serif", "text": "ᥐ"}, {"font": "1000px serif", "text": "ゕ"}, {
"text": "匭" "font": "1000px serif",
}, {"font": "1000px serif", "text": "؜"}, {"font": "1000px serif", "text": "⃣"}, { "text": "匭"
"font": "1000px serif", }, {"font": "1000px serif", "text": "؜"}, {"font": "1000px serif", "text": "⃣"}, {
"text": "" "font": "1000px serif",
}, {"font": "1000px serif", "text": "Ș"}, {"font": "1000px serif", "text": "֏"}, { "text": ""
"font": "1000px serif", }, {"font": "1000px serif", "text": "Ș"}, {"font": "1000px serif", "text": "֏"}, {
"text": "ࣤ" "font": "1000px serif",
}, {"font": "1000px serif", "text": "঳"}, {"font": "1000px serif", "text": "᱐"}, { "text": "ࣤ"
"font": "1000px serif", }, {"font": "1000px serif", "text": "঳"}, {"font": "1000px serif", "text": "᱐"}, {
"text": "☙" "font": "1000px serif",
}, {"font": "1000px monospace", "text": "₹"}, {"font": "1000px monospace", "text": "▁"}, { "text": "☙"
"font": "1000px monospace", }, {"font": "1000px monospace", "text": "₹"}, {"font": "1000px monospace", "text": "▁"}, {
"text": "₺" "font": "1000px monospace",
}, {"font": "1000px monospace", "text": "ꜽ"}, {"font": "1000px monospace", "text": "�"}, { "text": "₺"
"font": "1000px monospace", }, {"font": "1000px monospace", "text": "ꜽ"}, {"font": "1000px monospace", "text": "�"}, {
"text": "₸" "font": "1000px monospace",
}, {"font": "1000px monospace", "text": "׆"}, {"font": "1000px monospace", "text": "ẞ"}, { "text": "₸"
"font": "1000px monospace", }, {"font": "1000px monospace", "text": "׆"}, {"font": "1000px monospace", "text": "ẞ"}, {
"text": "ॿ" "font": "1000px monospace",
}, {"font": "1000px monospace", "text": ""}, {"font": "1000px monospace", "text": "᳚"}, { "text": "ॿ"
"font": "1000px monospace", }, {"font": "1000px monospace", "text": ""}, {"font": "1000px monospace", "text": "᳚"}, {
"text": "៝" "font": "1000px monospace",
}, {"font": "1000px monospace", "text": "⎮"}, {"font": "1000px monospace", "text": "ം"}, { "text": "៝"
"font": "1000px monospace", }, {"font": "1000px monospace", "text": "⎮"}, {"font": "1000px monospace", "text": "ം"}, {
"text": "ஂ" "font": "1000px monospace",
}, {"font": "1000px monospace", "text": "ᅚ"}, {"font": "1000px monospace", "text": "␥"}, { "text": "ஂ"
"font": "1000px monospace", }, {"font": "1000px monospace", "text": "ᅚ"}, {"font": "1000px monospace", "text": "␥"}, {
"text": "〮" "font": "1000px monospace",
}, {"font": "1000px monospace", "text": "꠰"}, {"font": "1000px monospace", "text": "⬆"}, { "text": "〮"
"font": "1000px monospace", }, {"font": "1000px monospace", "text": "꠰"}, {"font": "1000px monospace", "text": "⬆"}, {
"text": "⇤" "font": "1000px monospace",
}, {"font": "1000px monospace", "text": "₽"}, {"font": "1000px monospace", "text": "ⱻ"}, { "text": "⇤"
"font": "1000px monospace", }, {"font": "1000px monospace", "text": "₽"}, {"font": "1000px monospace", "text": "ⱻ"}, {
"text": "₰" "font": "1000px monospace",
}, {"font": "1000px monospace", "text": "ﯮ"}, {"font": "1000px monospace", "text": ""}, { "text": "₰"
"font": "1000px monospace", }, {"font": "1000px monospace", "text": "ﯮ"}, {"font": "1000px monospace", "text": ""}, {
"text": "￿" "font": "1000px monospace",
}, {"font": "1000px monospace", "text": ""}, {"font": "1000px monospace", "text": "Ⴀ"}, { "text": "￿"
"font": "1000px monospace", }, {"font": "1000px monospace", "text": ""}, {"font": "1000px monospace", "text": "Ⴀ"}, {
"text": "𝞐" "font": "1000px monospace",
}, {"font": "1000px monospace", "text": "܀"}, {"font": "1000px monospace", "text": "ᥐ"}, { "text": "𝞐"
"font": "1000px monospace", }, {"font": "1000px monospace", "text": "܀"}, {"font": "1000px monospace", "text": "ᥐ"}, {
"text": "ゕ" "font": "1000px monospace",
}, {"font": "1000px monospace", "text": "匭"}, {"font": "1000px monospace", "text": "؜"}, { "text": "ゕ"
"font": "1000px monospace", }, {"font": "1000px monospace", "text": "匭"}, {"font": "1000px monospace", "text": "؜"}, {
"text": "⃣" "font": "1000px monospace",
}, {"font": "1000px monospace", "text": ""}, {"font": "1000px monospace", "text": "Ș"}, { "text": "⃣"
"font": "1000px monospace", }, {"font": "1000px monospace", "text": ""}, {"font": "1000px monospace", "text": "Ș"}, {
"text": "֏" "font": "1000px monospace",
}, {"font": "1000px monospace", "text": "ࣤ"}, {"font": "1000px monospace", "text": "঳"}, { "text": "֏"
"font": "1000px monospace", }, {"font": "1000px monospace", "text": "ࣤ"}, {"font": "1000px monospace", "text": "঳"}, {
"text": "᱐" "font": "1000px monospace",
}, {"font": "1000px monospace", "text": "☙"}, {"font": "1000px cursive", "text": "₹"}, { "text": "᱐"
"font": "1000px cursive", }, {"font": "1000px monospace", "text": "☙"}, {"font": "1000px cursive", "text": "₹"}, {
"text": "▁" "font": "1000px cursive",
}, {"font": "1000px cursive", "text": "₺"}, {"font": "1000px cursive", "text": "ꜽ"}, { "text": "▁"
"font": "1000px cursive", }, {"font": "1000px cursive", "text": "₺"}, {"font": "1000px cursive", "text": "ꜽ"}, {
"text": "�" "font": "1000px cursive",
}, {"font": "1000px cursive", "text": "₸"}, {"font": "1000px cursive", "text": "׆"}, { "text": "�"
"font": "1000px cursive", }, {"font": "1000px cursive", "text": "₸"}, {"font": "1000px cursive", "text": "׆"}, {
"text": "ẞ" "font": "1000px cursive",
}, {"font": "1000px cursive", "text": "ॿ"}, {"font": "1000px cursive", "text": ""}, { "text": "ẞ"
"font": "1000px cursive", }, {"font": "1000px cursive", "text": "ॿ"}, {"font": "1000px cursive", "text": ""}, {
"text": "᳚" "font": "1000px cursive",
}, {"font": "1000px cursive", "text": "៝"}, {"font": "1000px cursive", "text": "⎮"}, { "text": "᳚"
"font": "1000px cursive", }, {"font": "1000px cursive", "text": "៝"}, {"font": "1000px cursive", "text": "⎮"}, {
"text": "ം" "font": "1000px cursive",
}, {"font": "1000px cursive", "text": "ஂ"}, {"font": "1000px cursive", "text": "ᅚ"}, { "text": "ം"
"font": "1000px cursive", }, {"font": "1000px cursive", "text": "ஂ"}, {"font": "1000px cursive", "text": "ᅚ"}, {
"text": "␥" "font": "1000px cursive",
}, {"font": "1000px cursive", "text": "〮"}, {"font": "1000px cursive", "text": "꠰"}, { "text": "␥"
"font": "1000px cursive", }, {"font": "1000px cursive", "text": "〮"}, {"font": "1000px cursive", "text": "꠰"}, {
"text": "⬆" "font": "1000px cursive",
}, {"font": "1000px cursive", "text": "⇤"}, {"font": "1000px cursive", "text": "₽"}, { "text": "⬆"
"font": "1000px cursive", }, {"font": "1000px cursive", "text": "⇤"}, {"font": "1000px cursive", "text": "₽"}, {
"text": "ⱻ" "font": "1000px cursive",
}, {"font": "1000px cursive", "text": "₰"}, {"font": "1000px cursive", "text": "ﯮ"}, { "text": "ⱻ"
"font": "1000px cursive", }, {"font": "1000px cursive", "text": "₰"}, {"font": "1000px cursive", "text": "ﯮ"}, {
"text": "" "font": "1000px cursive",
}, {"font": "1000px cursive", "text": "￿"}, {"font": "1000px cursive", "text": ""}, { "text": ""
"font": "1000px cursive", }, {"font": "1000px cursive", "text": "￿"}, {"font": "1000px cursive", "text": ""}, {
"text": "Ⴀ" "font": "1000px cursive",
}, {"font": "1000px cursive", "text": "𝞐"}, {"font": "1000px cursive", "text": "܀"}, { "text": "Ⴀ"
"font": "1000px cursive", }, {"font": "1000px cursive", "text": "𝞐"}, {"font": "1000px cursive", "text": "܀"}, {
"text": "ᥐ" "font": "1000px cursive",
}, {"font": "1000px cursive", "text": "ゕ"}, {"font": "1000px cursive", "text": "匭"}, { "text": "ᥐ"
"font": "1000px cursive", }, {"font": "1000px cursive", "text": "ゕ"}, {"font": "1000px cursive", "text": "匭"}, {
"text": "؜" "font": "1000px cursive",
}, {"font": "1000px cursive", "text": "⃣"}, {"font": "1000px cursive", "text": ""}, { "text": "؜"
"font": "1000px cursive", }, {"font": "1000px cursive", "text": "⃣"}, {"font": "1000px cursive", "text": ""}, {
"text": "Ș" "font": "1000px cursive",
}, {"font": "1000px cursive", "text": "֏"}, {"font": "1000px cursive", "text": "ࣤ"}, { "text": "Ș"
"font": "1000px cursive", }, {"font": "1000px cursive", "text": "֏"}, {"font": "1000px cursive", "text": "ࣤ"}, {
"text": "঳" "font": "1000px cursive",
}, {"font": "1000px cursive", "text": "᱐"}, {"font": "1000px cursive", "text": "☙"}, { "text": "঳"
"font": "1000px fantasy", }, {"font": "1000px cursive", "text": "᱐"}, {"font": "1000px cursive", "text": "☙"}, {
"text": "₹" "font": "1000px fantasy",
}, {"font": "1000px fantasy", "text": "▁"}, {"font": "1000px fantasy", "text": "₺"}, { "text": "₹"
"font": "1000px fantasy", }, {"font": "1000px fantasy", "text": "▁"}, {"font": "1000px fantasy", "text": "₺"}, {
"text": "ꜽ" "font": "1000px fantasy",
}, {"font": "1000px fantasy", "text": "�"}, {"font": "1000px fantasy", "text": "₸"}, { "text": "ꜽ"
"font": "1000px fantasy", }, {"font": "1000px fantasy", "text": "�"}, {"font": "1000px fantasy", "text": "₸"}, {
"text": "׆" "font": "1000px fantasy",
}, {"font": "1000px fantasy", "text": "ẞ"}, {"font": "1000px fantasy", "text": "ॿ"}, { "text": "׆"
"font": "1000px fantasy", }, {"font": "1000px fantasy", "text": "ẞ"}, {"font": "1000px fantasy", "text": "ॿ"}, {
"text": "" "font": "1000px fantasy",
}, {"font": "1000px fantasy", "text": "᳚"}, {"font": "1000px fantasy", "text": "៝"}, { "text": ""
"font": "1000px fantasy", }, {"font": "1000px fantasy", "text": "᳚"}, {"font": "1000px fantasy", "text": "៝"}, {
"text": "⎮" "font": "1000px fantasy",
}, {"font": "1000px fantasy", "text": "ം"}, {"font": "1000px fantasy", "text": "ஂ"}, { "text": "⎮"
"font": "1000px fantasy", }, {"font": "1000px fantasy", "text": "ം"}, {"font": "1000px fantasy", "text": "ஂ"}, {
"text": "ᅚ" "font": "1000px fantasy",
}, {"font": "1000px fantasy", "text": "␥"}, {"font": "1000px fantasy", "text": "〮"}, { "text": "ᅚ"
"font": "1000px fantasy", }, {"font": "1000px fantasy", "text": "␥"}, {"font": "1000px fantasy", "text": "〮"}, {
"text": "꠰" "font": "1000px fantasy",
}, {"font": "1000px fantasy", "text": "⬆"}, {"font": "1000px fantasy", "text": "⇤"}, { "text": "꠰"
"font": "1000px fantasy", }, {"font": "1000px fantasy", "text": "⬆"}, {"font": "1000px fantasy", "text": "⇤"}, {
"text": "₽" "font": "1000px fantasy",
}, {"font": "1000px fantasy", "text": "ⱻ"}, {"font": "1000px fantasy", "text": "₰"}, { "text": "₽"
"font": "1000px fantasy", }, {"font": "1000px fantasy", "text": "ⱻ"}, {"font": "1000px fantasy", "text": "₰"}, {
"text": "ﯮ" "font": "1000px fantasy",
}, {"font": "1000px fantasy", "text": ""}, {"font": "1000px fantasy", "text": "￿"}, { "text": "ﯮ"
"font": "1000px fantasy", }, {"font": "1000px fantasy", "text": ""}, {"font": "1000px fantasy", "text": "￿"}, {
"text": "" "font": "1000px fantasy",
}, {"font": "1000px fantasy", "text": "Ⴀ"}, {"font": "1000px fantasy", "text": "𝞐"}, { "text": ""
"font": "1000px fantasy", }, {"font": "1000px fantasy", "text": "Ⴀ"}, {"font": "1000px fantasy", "text": "𝞐"}, {
"text": "܀" "font": "1000px fantasy",
}, {"font": "1000px fantasy", "text": "ᥐ"}, {"font": "1000px fantasy", "text": "ゕ"}, { "text": "܀"
"font": "1000px fantasy", }, {"font": "1000px fantasy", "text": "ᥐ"}, {"font": "1000px fantasy", "text": "ゕ"}, {
"text": "匭" "font": "1000px fantasy",
}, {"font": "1000px fantasy", "text": "؜"}, {"font": "1000px fantasy", "text": "⃣"}, { "text": "匭"
"font": "1000px fantasy", }, {"font": "1000px fantasy", "text": "؜"}, {"font": "1000px fantasy", "text": "⃣"}, {
"text": "" "font": "1000px fantasy",
}, {"font": "1000px fantasy", "text": "Ș"}, {"font": "1000px fantasy", "text": "֏"}, { "text": ""
"font": "1000px fantasy", }, {"font": "1000px fantasy", "text": "Ș"}, {"font": "1000px fantasy", "text": "֏"}, {
"text": "ࣤ" "font": "1000px fantasy",
}, {"font": "1000px fantasy", "text": "঳"}, {"font": "1000px fantasy", "text": "᱐"}, { "text": "ࣤ"
"font": "1000px fantasy", }, {"font": "1000px fantasy", "text": "঳"}, {"font": "1000px fantasy", "text": "᱐"}, {
"text": "☙" "font": "1000px fantasy",
}, {"font": "72px monospace", "text": "mmmmmmmmlli"}, { "text": "☙"
"font": "72px sans-serif", }, {"font": "72px monospace", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px sans-serif",
}, {"font": "72px serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px ARNOPRO, monospace", }, {"font": "72px serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px ARNOPRO, monospace",
}, {"font": "72px ARNOPRO, sans-serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px ARNOPRO, serif", }, {"font": "72px ARNOPRO, sans-serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px ARNOPRO, serif",
}, {"font": "72px AgencyFB, monospace", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px AgencyFB, sans-serif", }, {"font": "72px AgencyFB, monospace", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px AgencyFB, sans-serif",
}, {"font": "72px AgencyFB, serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px ArabicTypesetting, monospace", }, {"font": "72px AgencyFB, serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px ArabicTypesetting, monospace",
}, {"font": "72px ArabicTypesetting, sans-serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px ArabicTypesetting, serif", }, {"font": "72px ArabicTypesetting, sans-serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px ArabicTypesetting, serif",
}, {"font": "72px ArialUnicodeMS, monospace", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px ArialUnicodeMS, sans-serif", }, {"font": "72px ArialUnicodeMS, monospace", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px ArialUnicodeMS, sans-serif",
}, {"font": "72px ArialUnicodeMS, serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px AvantGardeBkBT, monospace", }, {"font": "72px ArialUnicodeMS, serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px AvantGardeBkBT, monospace",
}, {"font": "72px AvantGardeBkBT, sans-serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px AvantGardeBkBT, serif", }, {"font": "72px AvantGardeBkBT, sans-serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px AvantGardeBkBT, serif",
}, {"font": "72px BankGothicMdBT, monospace", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px BankGothicMdBT, sans-serif", }, {"font": "72px BankGothicMdBT, monospace", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px BankGothicMdBT, sans-serif",
}, {"font": "72px BankGothicMdBT, serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px Batang, monospace", }, {"font": "72px BankGothicMdBT, serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px Batang, monospace",
}, {"font": "72px Batang, sans-serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px Batang, serif", }, {"font": "72px Batang, sans-serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px Batang, serif",
}, { "text": "mmmmmmmmlli"
"font": "72px BitstreamVeraSansMono, monospace", }, {
"text": "mmmmmmmmlli" "font": "72px BitstreamVeraSansMono, monospace",
}, { "text": "mmmmmmmmlli"
"font": "72px BitstreamVeraSansMono, sans-serif", }, {
"text": "mmmmmmmmlli" "font": "72px BitstreamVeraSansMono, sans-serif",
}, {"font": "72px BitstreamVeraSansMono, serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px Calibri, monospace", }, {"font": "72px BitstreamVeraSansMono, serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px Calibri, monospace",
}, {"font": "72px Calibri, sans-serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px Calibri, serif", }, {"font": "72px Calibri, sans-serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px Calibri, serif",
}, {"font": "72px Century, monospace", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px Century, sans-serif", }, {"font": "72px Century, monospace", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px Century, sans-serif",
}, {"font": "72px Century, serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px CenturyGothic, monospace", }, {"font": "72px Century, serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px CenturyGothic, monospace",
}, {"font": "72px CenturyGothic, sans-serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px CenturyGothic, serif", }, {"font": "72px CenturyGothic, sans-serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px CenturyGothic, serif",
}, {"font": "72px Clarendon, monospace", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px Clarendon, sans-serif", }, {"font": "72px Clarendon, monospace", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px Clarendon, sans-serif",
}, {"font": "72px Clarendon, serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px EUROSTILE, monospace", }, {"font": "72px Clarendon, serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px EUROSTILE, monospace",
}, {"font": "72px EUROSTILE, sans-serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px EUROSTILE, serif", }, {"font": "72px EUROSTILE, sans-serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px EUROSTILE, serif",
}, {"font": "72px FranklinGothic, monospace", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px FranklinGothic, sans-serif", }, {"font": "72px FranklinGothic, monospace", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px FranklinGothic, sans-serif",
}, {"font": "72px FranklinGothic, serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px FuturaBkBT, monospace", }, {"font": "72px FranklinGothic, serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px FuturaBkBT, monospace",
}, {"font": "72px FuturaBkBT, sans-serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px FuturaBkBT, serif", }, {"font": "72px FuturaBkBT, sans-serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px FuturaBkBT, serif",
}, {"font": "72px FuturaMdBT, monospace", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px FuturaMdBT, sans-serif", }, {"font": "72px FuturaMdBT, monospace", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px FuturaMdBT, sans-serif",
}, {"font": "72px FuturaMdBT, serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px GOTHAM, monospace", }, {"font": "72px FuturaMdBT, serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px GOTHAM, monospace",
}, {"font": "72px GOTHAM, sans-serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px GOTHAM, serif", }, {"font": "72px GOTHAM, sans-serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px GOTHAM, serif",
}, {"font": "72px GillSans, monospace", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px GillSans, sans-serif", }, {"font": "72px GillSans, monospace", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px GillSans, sans-serif",
}, {"font": "72px GillSans, serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px HELV, monospace", }, {"font": "72px GillSans, serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px HELV, monospace",
}, {"font": "72px HELV, sans-serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px HELV, serif", }, {"font": "72px HELV, sans-serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px HELV, serif",
}, {"font": "72px Haettenschweiler, monospace", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px Haettenschweiler, sans-serif", }, {"font": "72px Haettenschweiler, monospace", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px Haettenschweiler, sans-serif",
}, {"font": "72px Haettenschweiler, serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px HelveticaNeue, monospace", }, {"font": "72px Haettenschweiler, serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px HelveticaNeue, monospace",
}, {"font": "72px HelveticaNeue, sans-serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px HelveticaNeue, serif", }, {"font": "72px HelveticaNeue, sans-serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px HelveticaNeue, serif",
}, {"font": "72px Humanst521BT, monospace", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px Humanst521BT, sans-serif", }, {"font": "72px Humanst521BT, monospace", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px Humanst521BT, sans-serif",
}, {"font": "72px Humanst521BT, serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px Leelawadee, monospace", }, {"font": "72px Humanst521BT, serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px Leelawadee, monospace",
}, {"font": "72px Leelawadee, sans-serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px Leelawadee, serif", }, {"font": "72px Leelawadee, sans-serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px Leelawadee, serif",
}, {"font": "72px LetterGothic, monospace", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px LetterGothic, sans-serif", }, {"font": "72px LetterGothic, monospace", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px LetterGothic, sans-serif",
}, {"font": "72px LetterGothic, serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px LevenimMT, monospace", }, {"font": "72px LetterGothic, serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px LevenimMT, monospace",
}, {"font": "72px LevenimMT, sans-serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px LevenimMT, serif", }, {"font": "72px LevenimMT, sans-serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px LevenimMT, serif",
}, {"font": "72px LucidaBright, monospace", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px LucidaBright, sans-serif", }, {"font": "72px LucidaBright, monospace", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px LucidaBright, sans-serif",
}, {"font": "72px LucidaBright, serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px LucidaSans, monospace", }, {"font": "72px LucidaBright, serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px LucidaSans, monospace",
}, {"font": "72px LucidaSans, sans-serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px LucidaSans, serif", }, {"font": "72px LucidaSans, sans-serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px LucidaSans, serif",
}, {"font": "72px MSMincho, monospace", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px MSMincho, sans-serif", }, {"font": "72px MSMincho, monospace", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px MSMincho, sans-serif",
}, {"font": "72px MSMincho, serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px MSOutlook, monospace", }, {"font": "72px MSMincho, serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px MSOutlook, monospace",
}, {"font": "72px MSOutlook, sans-serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px MSOutlook, serif", }, {"font": "72px MSOutlook, sans-serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px MSOutlook, serif",
}, { "text": "mmmmmmmmlli"
"font": "72px MSReferenceSpecialty, monospace", }, {
"text": "mmmmmmmmlli" "font": "72px MSReferenceSpecialty, monospace",
}, { "text": "mmmmmmmmlli"
"font": "72px MSReferenceSpecialty, sans-serif", }, {
"text": "mmmmmmmmlli" "font": "72px MSReferenceSpecialty, sans-serif",
}, {"font": "72px MSReferenceSpecialty, serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px MSUIGothic, monospace", }, {"font": "72px MSReferenceSpecialty, serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px MSUIGothic, monospace",
}, {"font": "72px MSUIGothic, sans-serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px MSUIGothic, serif", }, {"font": "72px MSUIGothic, sans-serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px MSUIGothic, serif",
}, {"font": "72px MTExtra, monospace", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px MTExtra, sans-serif", }, {"font": "72px MTExtra, monospace", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px MTExtra, sans-serif",
}, {"font": "72px MTExtra, serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px MYRIADPRO, monospace", }, {"font": "72px MTExtra, serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px MYRIADPRO, monospace",
}, {"font": "72px MYRIADPRO, sans-serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px MYRIADPRO, serif", }, {"font": "72px MYRIADPRO, sans-serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px MYRIADPRO, serif",
}, {"font": "72px Marlett, monospace", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px Marlett, sans-serif", }, {"font": "72px Marlett, monospace", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px Marlett, sans-serif",
}, {"font": "72px Marlett, serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px MeiryoUI, monospace", }, {"font": "72px Marlett, serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px MeiryoUI, monospace",
}, {"font": "72px MeiryoUI, sans-serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px MeiryoUI, serif", }, {"font": "72px MeiryoUI, sans-serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px MeiryoUI, serif",
}, {"font": "72px MicrosoftUighur, monospace", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px MicrosoftUighur, sans-serif", }, {"font": "72px MicrosoftUighur, monospace", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px MicrosoftUighur, sans-serif",
}, {"font": "72px MicrosoftUighur, serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px MinionPro, monospace", }, {"font": "72px MicrosoftUighur, serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px MinionPro, monospace",
}, {"font": "72px MinionPro, sans-serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px MinionPro, serif", }, {"font": "72px MinionPro, sans-serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px MinionPro, serif",
}, {"font": "72px MonotypeCorsiva, monospace", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px MonotypeCorsiva, sans-serif", }, {"font": "72px MonotypeCorsiva, monospace", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px MonotypeCorsiva, sans-serif",
}, {"font": "72px MonotypeCorsiva, serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px PMingLiU, monospace", }, {"font": "72px MonotypeCorsiva, serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px PMingLiU, monospace",
}, {"font": "72px PMingLiU, sans-serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px PMingLiU, serif", }, {"font": "72px PMingLiU, sans-serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px PMingLiU, serif",
}, {"font": "72px Pristina, monospace", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px Pristina, sans-serif", }, {"font": "72px Pristina, monospace", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px Pristina, sans-serif",
}, {"font": "72px Pristina, serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px SCRIPTINA, monospace", }, {"font": "72px Pristina, serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px SCRIPTINA, monospace",
}, {"font": "72px SCRIPTINA, sans-serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px SCRIPTINA, serif", }, {"font": "72px SCRIPTINA, sans-serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px SCRIPTINA, serif",
}, {"font": "72px SegoeUILight, monospace", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px SegoeUILight, sans-serif", }, {"font": "72px SegoeUILight, monospace", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px SegoeUILight, sans-serif",
}, {"font": "72px SegoeUILight, serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px Serifa, monospace", }, {"font": "72px SegoeUILight, serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px Serifa, monospace",
}, {"font": "72px Serifa, sans-serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px Serifa, serif", }, {"font": "72px Serifa, sans-serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px Serifa, serif",
}, {"font": "72px SimHei, monospace", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px SimHei, sans-serif", }, {"font": "72px SimHei, monospace", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px SimHei, sans-serif",
}, {"font": "72px SimHei, serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px SmallFonts, monospace", }, {"font": "72px SimHei, serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px SmallFonts, monospace",
}, {"font": "72px SmallFonts, sans-serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px SmallFonts, serif", }, {"font": "72px SmallFonts, sans-serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px SmallFonts, serif",
}, {"font": "72px Staccato222BT, monospace", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px Staccato222BT, sans-serif", }, {"font": "72px Staccato222BT, monospace", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px Staccato222BT, sans-serif",
}, {"font": "72px Staccato222BT, serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px TRAJANPRO, monospace", }, {"font": "72px Staccato222BT, serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px TRAJANPRO, monospace",
}, {"font": "72px TRAJANPRO, sans-serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px TRAJANPRO, serif", }, {"font": "72px TRAJANPRO, sans-serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px TRAJANPRO, serif",
}, {"font": "72px UniversCE55Medium, monospace", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px UniversCE55Medium, sans-serif", }, {"font": "72px UniversCE55Medium, monospace", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px UniversCE55Medium, sans-serif",
}, {"font": "72px UniversCE55Medium, serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px Vrinda, monospace", }, {"font": "72px UniversCE55Medium, serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px Vrinda, monospace",
}, {"font": "72px Vrinda, sans-serif", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px Vrinda, serif", }, {"font": "72px Vrinda, sans-serif", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px Vrinda, serif",
}, {"font": "72px ZWAdobeF, monospace", "text": "mmmmmmmmlli"}, { "text": "mmmmmmmmlli"
"font": "72px ZWAdobeF, sans-serif", }, {"font": "72px ZWAdobeF, monospace", "text": "mmmmmmmmlli"}, {
"text": "mmmmmmmmlli" "font": "72px ZWAdobeF, sans-serif",
}, {"font": "72px ZWAdobeF, serif", "text": "mmmmmmmmlli"}] "text": "mmmmmmmmlli"
}, {"font": "72px ZWAdobeF, serif", "text": "mmmmmmmmlli"}]
let fontsRes = {}
var canvas = document.createElement('canvas'); let fontsRes = {}
var ctx = canvas.getContext('2d') var canvas = document.createElement('canvas');
ctx.textBaseline = 'top'; var ctx = canvas.getContext('2d')
for (let i = 0; i < fonts.length; i++) { ctx.textBaseline = 'top';
ctx.font = fonts[i].font; for (let i = 0; i < fonts.length; i++) {
let met = ctx.measureText(fonts[i].text) ctx.font = fonts[i].font;
if (!fontsRes[fonts[i].font]) { let met = ctx.measureText(fonts[i].text)
fontsRes[fonts[i].font] = {} if (!fontsRes[fonts[i].font]) {
fontsRes[fonts[i].font] = {}
}
fontsRes[fonts[i].font][fonts[i].text] = {
width: met.width,
actualboundingboxascent: met.actualBoundingBoxAscent,
actualboundingboxleft: met.actualBoundingBoxLeft,
actualboundingboxright: met.actualBoundingBoxRight,
fontboundingboxascent: met.fontBoundingBoxAscent,
actualboundingboxdescent: met.actualBoundingBoxDescent,
}
}
let imgsRes = {};
let sss = [
{
"font": "94px sans-serif",
"fillStyle": "#000000",
"fillText": ["😎", -1, 96],
"imageData": [18, 90, 1, 1]
}, {
"font": "94px sans-serif",
"fillStyle": "#000000",
"fillText": ["6️⃣", -1, 96],
"imageData": [38, 77, 1, 1]
}, {
"font": "94px sans-serif",
"fillStyle": "#000000",
"fillText": ["🍼", -1, 96],
"imageData": [48, 28, 1, 1]
}, {
"font": "94px sans-serif",
"fillStyle": "#000000",
"fillText": ["🏴󠁧󠁢󠁥󠁮󠁧󠁿", -1, 96],
"imageData": [94, 23, 1, 1]
}, {
"font": "94px sans-serif",
"fillStyle": "#000000",
"fillText": ["📊", -1, 96],
"imageData": [26, 46, 1, 1]
}, {
"font": "94px sans-serif",
"fillStyle": "#000000",
"fillText": ["🏴󠁧󠁢󠁥󠁮󠁧󠁿", -1, 96],
"imageData": [47, 23, 1, 1]
}, {
"font": "94px sans-serif",
"fillStyle": "#000000",
"fillText": ["㊗️", -1, 96],
"imageData": [37, 17, 1, 1]
}, {
"font": "94px sans-serif",
"fillStyle": "#000000",
"fillText": ["⛎", -1, 96],
"imageData": [62, 28, 1, 1]
}
]
let imgRes = {};
for (let i = 0; i < sss.length; i++) {
var a = document.createElement('canvas')
a.width = 96
a.height = 96
let ctx = a.getContext('2d');
let s = sss[i];
ctx.font = s.font;
ctx.fillStyle = s.fillStyle;
ctx.fillText(...s.fillText)
let data = ctx.getImageData(...s.imageData);
if (!imgRes[s.font]) {
imgRes[s.font] = {}
}
imgRes[s.font][s.imageData + ''] = data.data + ''
}
let glArgs = {
3413: 8,
3412: 8,
3411: 8,
3410: 8,
3414: 24,
35661: 32,
34076: 16384,
36349: 1024,
34024: 16384,
34930: 16,
3379: 16384,
36348: 31,
34921: 16,
35660: 16,
36347: 1024,
7937: 'WebKit WebGL',
35724: 'WebGL GLSL ES 1.0 (OpenGL ES GLSL ES 1.0 Chromium)',
3415: 0,
7936: 'WebKit',
7938: 'WebGL 1.0 (OpenGL ES 2.0 Chromium)',
37445: 'Google Inc.',
37446: 'ANGLE (Apple, Apple M1 Max, OpenGL 4.1)',
34047: 16
};
var glARgs = Object.keys(glArgs);
var canvas = document.createElement('canvas')
var gl = canvas.getContext('webgl')
gl.getExtension('WEBGL_debug_renderer_info')
gl.getExtension('EXT_texture_filter_anisotropic')
for (let i = 0; i < glARgs.length; i++) {
glArgs[glARgs[i]] = gl.getParameter(parseInt(glARgs[i]))
} }
fontsRes[fonts[i].font][fonts[i].text] = {
width: met.width,
actualboundingboxascent: met.actualBoundingBoxAscent, delete canvas
actualboundingboxleft: met.actualBoundingBoxLeft, let navigatorparams = {
actualboundingboxright: met.actualBoundingBoxRight, appname: navigator.appName,
fontboundingboxascent: met.fontBoundingBoxAscent, appversion: navigator.appVersion,
actualboundingboxdescent: met.actualBoundingBoxDescent, appcodename: navigator.appCodeName,
hardwareconcurrency: navigator.hardwareConcurrency,
maxtouchpoints: navigator.maxTouchPoints,
platform: navigator.platform,
product: navigator.product,
productsub: navigator.productSub,
useragent: navigator.userAgent,
vendor: navigator.vendor,
vendorsub: navigator.vendorSub,
donottrack: navigator.doNotTrack,
} }
}
let screenparams = {
height: screen.height,
let imgsRes = {}; width: screen.width,
availheight: screen.availHeight,
let sss = [ availwidth: screen.availWidth,
{ pixeldepth: screen.pixelDepth,
"font": "94px sans-serif", colordepth: screen.colorDepth,
"fillStyle": "#000000",
"fillText": ["😎", -1, 96],
"imageData": [18, 90, 1, 1]
}, {
"font": "94px sans-serif",
"fillStyle": "#000000",
"fillText": ["6️⃣", -1, 96],
"imageData": [38, 77, 1, 1]
}, {
"font": "94px sans-serif",
"fillStyle": "#000000",
"fillText": ["🍼", -1, 96],
"imageData": [48, 28, 1, 1]
}, {
"font": "94px sans-serif",
"fillStyle": "#000000",
"fillText": ["🏴󠁧󠁢󠁥󠁮󠁧󠁿", -1, 96],
"imageData": [94, 23, 1, 1]
}, {
"font": "94px sans-serif",
"fillStyle": "#000000",
"fillText": ["📊", -1, 96],
"imageData": [26, 46, 1, 1]
}, {
"font": "94px sans-serif",
"fillStyle": "#000000",
"fillText": ["🏴󠁧󠁢󠁥󠁮󠁧󠁿", -1, 96],
"imageData": [47, 23, 1, 1]
}, {
"font": "94px sans-serif",
"fillStyle": "#000000",
"fillText": ["㊗️", -1, 96],
"imageData": [37, 17, 1, 1]
}, {
"font": "94px sans-serif",
"fillStyle": "#000000",
"fillText": ["⛎", -1, 96],
"imageData": [62, 28, 1, 1]
} }
]
let imgRes = {}; let featurePolicy;
for (let i = 0; i < sss.length; i++) { if (document.featurePolicy) {
featurePolicy = {
var a = document.createElement('canvas') features: document.featurePolicy.features(),
a.width = 96 allowedfeatures: document.featurePolicy.allowedFeatures(),
a.height = 96 }
let ctx = a.getContext('2d');
let s = sss[i];
ctx.font = s.font;
ctx.fillStyle = s.fillStyle;
ctx.fillText(...s.fillText)
let data = ctx.getImageData(...s.imageData);
if (!imgRes[s.font]) {
imgRes[s.font] = {}
} }
imgRes[s.font][s.imageData + ''] = data.data + '' let windowparams = {
innerheight: window.innerHeight,
} innerwidth: window.innerWidth,
outerheight: window.outerHeight,
outerwidth: window.outerWidth,
let glArgs = { screenx: window.screenX,
3413: 8, screeny: window.screenY,
3412: 8, pageyoffset: window.pageYOffset,
3411: 8, devicepixelratio: window.devicePixelRatio,
3410: 8,
3414: 24,
35661: 32,
34076: 16384,
36349: 1024,
34024: 16384,
34930: 16,
3379: 16384,
36348: 31,
34921: 16,
35660: 16,
36347: 1024,
7937: 'WebKit WebGL',
35724: 'WebGL GLSL ES 1.0 (OpenGL ES GLSL ES 1.0 Chromium)',
3415: 0,
7936: 'WebKit',
7938: 'WebGL 1.0 (OpenGL ES 2.0 Chromium)',
37445: 'Google Inc.',
37446: 'ANGLE (Apple, Apple M1 Max, OpenGL 4.1)',
34047: 16
};
var glARgs = Object.keys(glArgs);
var canvas = document.createElement('canvas')
var gl = canvas.getContext('webgl')
gl.getExtension('WEBGL_debug_renderer_info')
gl.getExtension('EXT_texture_filter_anisotropic')
for (let i = 0; i < glARgs.length; i++) {
glArgs[glARgs[i]] = gl.getParameter(parseInt(glARgs[i]))
}
delete canvas
let navigatorparams = {
appname: navigator.appName,
appversion: navigator.appVersion,
appcodename: navigator.appCodeName,
hardwareconcurrency: navigator.hardwareConcurrency,
maxtouchpoints: navigator.maxTouchPoints,
platform: navigator.platform,
product: navigator.product,
productsub: navigator.productSub,
useragent: navigator.userAgent,
vendor: navigator.vendor,
vendorsub: navigator.vendorSub,
donottrack: navigator.doNotTrack,
}
let screenparams = {
height: screen.height,
width: screen.width,
availheight: screen.availHeight,
availwidth: screen.availWidth,
pixeldepth: screen.pixelDepth,
colordepth: screen.colorDepth,
}
let featurePolicy;
if (document.featurePolicy) {
featurePolicy = {
features: document.featurePolicy.features(),
allowedfeatures: document.featurePolicy.allowedFeatures(),
} }
}
let windowparams = {
innerheight: window.innerHeight,
innerwidth: window.innerWidth,
outerheight: window.outerHeight,
outerwidth: window.outerWidth,
screenx: window.screenX,
screeny: window.screenY,
pageyoffset: window.pageYOffset,
devicepixelratio: window.devicePixelRatio,
}
let plugins = navigator.plugins; let plugins = navigator.plugins;
let plgs = {}
let plgs = {} function getObj(r) {
function getObj(r) { return {
description: r.description,
suffixes: r.suffixes,
type: r.type,
}
return {
description: r.description,
suffixes: r.suffixes,
type: r.type,
} }
} for (let i = 0; i < plugins.length; i++) {
let p = plugins.item(i);
for (let i = 0; i < plugins.length; i++) { let pi = {}
let p = plugins.item(i); let keys = ['0', '1', 'application/pdf', 'text/pdf', 'description', 'filename', 'length', 'name'];
let pi = {} for (const key of keys) {
let keys = ['0', '1', 'application/pdf', 'text/pdf', 'description', 'filename', 'length', 'name']; let r = p[key];
for (const key of keys) { if (typeof r === 'object') {
let r = p[key]; r = getObj(r)
if (typeof r === 'object') { r.enabledPlugin = [];
r = getObj(r) }
r.enabledPlugin = []; pi[key] = r
} }
pi[key] = r plgs[i] = pi
} }
plgs[i] = pi
}
let mimes = [];
let mimeTypes = navigator.mimeTypes;
for (let i = 0; i < mimeTypes.length; i++) {
let mime = mimeTypes.item(i);
mimes.push({
description: mime.description,
suffixes: mime.suffixes,
type: mime.type,
})
}
function getDataUrl() { let mimes = [];
var canvas = document.createElement('canvas'); let mimeTypes = navigator.mimeTypes;
let ctx = canvas.getContext('2d'); for (let i = 0; i < mimeTypes.length; i++) {
ctx.font = '18pt Sans'; let mime = mimeTypes.item(i);
ctx.textBaseline = 'top' mimes.push({
ctx.fillText('Hel$&?6%){mZ+#@', 2, 2) description: mime.description,
return canvas.toDataURL("image/png"); suffixes: mime.suffixes,
type: mime.type,
})
}
} function getDataUrl() {
var canvas = document.createElement('canvas');
let ctx = canvas.getContext('2d');
ctx.font = '18pt Sans';
ctx.textBaseline = 'top'
ctx.fillText('Hel$&?6%){mZ+#@', 2, 2)
return canvas.toDataURL("image/png");
function getDataUrl2() {
var canvas = document.createElement('canvas');
let ctx = canvas.getContext('2d');
canvas.width = 5;
canvas.height = 5;
ctx.font = '20px Arial';
ctx.shadowOffsetX = 2;
ctx.shadowOffsetY = 2;
ctx.shadowBlur = 2;
ctx.textBaseline = 'top'
ctx.fillStyle = 'rgba(22, 22, 22, 0.08636862211354912)'
ctx.fillText('Hel$&?6%){mZ+#@👺', 105, 105)
return {
data: ctx.getImageData(0, 0, 5, 5).data + '',
url: canvas.toDataURL()
} }
} function getDataUrl2() {
var canvas = document.createElement('canvas');
let ctx = canvas.getContext('2d');
function canplay() { canvas.width = 5;
let videos = { canvas.height = 5;
"audio/aac; codecs=\"flac\"": "", ctx.font = '20px Arial';
"audio/flac": "probably", ctx.shadowOffsetX = 2;
"audio/mpeg; codecs=\"mp3\"": "probably", ctx.shadowOffsetY = 2;
"audio/mpeg; codecs=\"vp9\"": "", ctx.shadowBlur = 2;
"audio/webm; codecs=\"vp8\"": "", ctx.textBaseline = 'top'
"audio/webz": "", ctx.fillStyle = 'rgba(22, 22, 22, 0.08636862211354912)'
"audio/x-m4a; codecs=\"mp3\"": "", ctx.fillText('Hel$&?6%){mZ+#@👺', 105, 105)
"audio/x-m4a; codecs=\"vp8, mp4a.40\"": "", return {
"audio/x-m4a; codecs=\"vp9, mp4a.40.2\"": "", data: ctx.getImageData(0, 0, 5, 5).data + '',
"video/mp4": "maybe", url: canvas.toDataURL()
"video/mp4; codecs=\"ac-3\"": "", }
"video/mp4; codecs=\"avc1.42011E\"": "",
"video/mp4; codecs=\"avc1.42E009\"": "maybe",
"video/mp4; codecs=\"avc1.42E034\"": "probably",
"video/mp4; codecs=\"avc1.42F01E\"": "probably",
"video/mp4; codecs=\"avc1.4D001E\"": "probably",
"video/mp4; codecs=\"avc3.42001E\"": "probably",
"video/mp4; codecs=\"avc3.42E01E, mp4a.40.29\"": "probably",
"video/mp4; codecs=\"flac\"": "probably",
"video/mp4; codecs=\"hev1\"": "",
"video/mp4; codecs=\"hvc1x\"": "",
"video/mp4; codecs=\"lavc1337\"": "",
"video/mp4; codecs=\"mp4a.40.02\"": "probably",
"video/mp4; codecs=\"mp4a.40.5\"": "probably",
"video/mp4; codecs=\"mp4a.67\"": "probably",
"video/mp4; codecs=\"opus\"": "probably",
"video/ogg; codecs=\"flac\"": "probably",
"video/ogg; codecs=\"opus\"": "probably",
"video/ogg; codecs=\"vp8\"": "probably",
"video/webm": "maybe",
"video/webm; codecs=\"av01.0.04M.08\"": "probably",
"video/webm; codecs=\"vp09.02.10.08\"": "probably",
"video/x-dv": "",
"video/x-m4v; codecs=\"avc1.42AC23\"": "maybe"
};
var v = document.createElement('video');
for (let i = 0; i < videos.length; i++) {
videos[i] = v.canPlayType(videos[i]);
} }
return videos;
}
function canplay() {
function stringToHex(str){ let videos = {
    var val=""; "audio/aac; codecs=\"flac\"": "",
    for(var i = 0; i < str.length; i++){ "audio/flac": "probably",
let a = (str.charCodeAt(i)- 20).toString(16); "audio/mpeg; codecs=\"mp3\"": "probably",
if (a.length == 1){ "audio/mpeg; codecs=\"vp9\"": "",
        val += "0" + a; "audio/webm; codecs=\"vp8\"": "",
}else{ "audio/webz": "",
"audio/x-m4a; codecs=\"mp3\"": "",
"audio/x-m4a; codecs=\"vp8, mp4a.40\"": "",
"audio/x-m4a; codecs=\"vp9, mp4a.40.2\"": "",
"video/mp4": "maybe",
"video/mp4; codecs=\"ac-3\"": "",
"video/mp4; codecs=\"avc1.42011E\"": "",
"video/mp4; codecs=\"avc1.42E009\"": "maybe",
"video/mp4; codecs=\"avc1.42E034\"": "probably",
"video/mp4; codecs=\"avc1.42F01E\"": "probably",
"video/mp4; codecs=\"avc1.4D001E\"": "probably",
"video/mp4; codecs=\"avc3.42001E\"": "probably",
"video/mp4; codecs=\"avc3.42E01E, mp4a.40.29\"": "probably",
"video/mp4; codecs=\"flac\"": "probably",
"video/mp4; codecs=\"hev1\"": "",
"video/mp4; codecs=\"hvc1x\"": "",
"video/mp4; codecs=\"lavc1337\"": "",
"video/mp4; codecs=\"mp4a.40.02\"": "probably",
"video/mp4; codecs=\"mp4a.40.5\"": "probably",
"video/mp4; codecs=\"mp4a.67\"": "probably",
"video/mp4; codecs=\"opus\"": "probably",
"video/ogg; codecs=\"flac\"": "probably",
"video/ogg; codecs=\"opus\"": "probably",
"video/ogg; codecs=\"vp8\"": "probably",
"video/webm": "maybe",
"video/webm; codecs=\"av01.0.04M.08\"": "probably",
"video/webm; codecs=\"vp09.02.10.08\"": "probably",
"video/x-dv": "",
"video/x-m4v; codecs=\"avc1.42AC23\"": "maybe"
};
var v = document.createElement('video');
for (let i = 0; i < videos.length; i++) {
videos[i] = v.canPlayType(videos[i]);
}
return videos;
}
function stringToHex(str) {
var val = "";
for (var i = 0; i < str.length; i++) {
let a = (str.charCodeAt(i) - 20).toString(16);
if (a.length == 1) {
val += "0" + a;
} else {
val += a val += a
} }
    }
    return val;
  }
let userAgentData= {};
let webglImg = {};
navigator.userAgentData && navigator.userAgentData.getHighEntropyValues(['architecture', 'bitness', 'brands', 'mobile', 'model', 'platform',
'platformVersion', 'uaFullVersion', 'wow64', 'fullVersionList']).then(e => {
userAgentData['highValue'] = e
userAgentData['brands'] = navigator.userAgentData.brands
userAgentData['mobile'] = navigator.userAgentData.mobile
userAgentData['platform'] = navigator.userAgentData.platform
// console.log(JSON.stringify(userAgentData))
})
webglImg = function (){
let canvas = document.createElement("canvas");
canvas.width = 150;
canvas.height = 150;
let ctx = canvas.getContext('webgl2');
let shader = ctx.createShader(35633);
ctx.shaderSource(shader,'\n attribute vec4 aPosition;\n attribute vec4 aColor;\n uniform vec4 anOffset;\n varying vec4 vColor;\n void main(void) {\n gl_Position = aPosition + anOffset;\n vColor = aColor;\n }\n ');
ctx.compileShader(shader);
let shaderParam1 = ctx.getShaderParameter(shader, 35713);
let shader2 = ctx.createShader(35632);
ctx.shaderSource(shader2,'\n precision mediump float;\n varying vec4 vColor;\n void main(void) {\n gl_FragColor = vColor;\n }\n ');
ctx.compileShader(shader2);
let shaderParam2 = ctx.getShaderParameter(shader2, 35713);
let program = ctx.createProgram();
ctx.attachShader(program, shader);
ctx.attachShader(program, shader2);
ctx.linkProgram(program);
let programParam1 = ctx.getProgramParameter(program, 35714);
let buffer1 = ctx.createBuffer();
ctx.bindBuffer(34962, buffer1);
var bl_27 = [0, 0.5, 0.699999988079071, -0.6000000238418579, -0.4000000059604645, -0.800000011920929];
var bl_0 = [0.30000001192092896, 0.699999988079071, 0, 1, 0.10000000149011612, 0, 0.8999999761581421, 1, 0.8999999761581421, 0, 0, 1];
let Float32Array1 = new Float32Array(bl_27);
ctx.bufferData(34962, Float32Array1, 35044);
let buffer2 = ctx.createBuffer();
ctx.bindBuffer(34962, buffer2);
let Float32Array2 = new Float32Array(bl_0);
ctx.bufferData(34962, Float32Array2, 35044);
let attribLocationAPosition = ctx.getAttribLocation(program, 'aPosition');
let attribLocationAColor = ctx.getAttribLocation(program, 'aColor');
ctx.bindBuffer(34962, buffer1);
ctx.vertexAttribPointer(0, 2, 5126, false, 0, 0);
ctx.enableVertexAttribArray(0);
ctx.bindBuffer(34962, buffer2);
ctx.vertexAttribPointer(1, 4, 5126, false, 0, 0);
ctx.enableVertexAttribArray(1);
ctx.useProgram(program);
let webglUniformLocation = ctx.getUniformLocation(program, 'anOffset');
ctx.uniform4fv(webglUniformLocation, [0.2, 0, 0, 0])
ctx.drawArrays(5,0,3)
let unint8Array = new Uint8Array(90000);
ctx.readPixels(50, 0, 100, 128, 6408, 5121, unint8Array);
var compressString = function (S) {
let nums = S.split(",")
let str = ''
let i = 0
while (i < nums.length) {
let j = i + 1
while (nums[i] == nums[j]) {
j++
}
if ((j - i) !== 1) {
str = str + '|' + nums[i] + '-' + (j - i)
}else{
str = str + '|' + nums[i]
}
i = j
} }
res = str.length >= S.length ? S : str return val;
return res
};
return {
strs :compressString(unint8Array+''),
url: canvas.toDataURL()
}
}()
setTimeout(function (){
let result = {
windowparams: windowparams,
screenparams: screenparams,
navigatorparams: navigatorparams,
featurepolicy: featurePolicy,
plugins: plgs,
mimetypes: mimes,
fontsres: fontsRes,
imgsres: imgRes,
glres: glArgs,
jpg: getDataUrl(),
jpg2: getDataUrl2(),
canplay: canplay(),
useragentdata: userAgentData,
webglimg: webglImg,
} }
let body = JSON.stringify(result);
console.log(1, body.length)
// body = stringToHex(encodeURIComponent(body))
// console.log(2, body.length)
// /collect let userAgentData = {};
// fetch("https://stage.unififi.com/env/shape", { let webglImg = {};
// fetch("http://127.0.0.1:39999/env/shape", {
fetch("/collect", { navigator.userAgentData && navigator.userAgentData.getHighEntropyValues(['architecture', 'bitness', 'brands', 'mobile', 'model', 'platform',
"headers": { 'platformVersion', 'uaFullVersion', 'wow64', 'fullVersionList']).then(e => {
"accept": "*/*",
"accept-language": "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7", userAgentData['highValue'] = e
"cache-control": "no-cache", userAgentData['brands'] = navigator.userAgentData.brands
"pragma": "no-cache", userAgentData['mobile'] = navigator.userAgentData.mobile
"sec-fetch-dest": "empty", userAgentData['platform'] = navigator.userAgentData.platform
"sec-fetch-mode": "cors", // console.log(JSON.stringify(userAgentData))
"sec-fetch-site": "cross-site"
},
"body": body,
"method": "POST",
"mode": "cors",
"credentials": "omit"
}).then(e => {
console.log(e.text())
}) })
}, 2000)
webglImg = function () {
let canvas = document.createElement("canvas");
canvas.width = 150;
canvas.height = 150;
let ctx = canvas.getContext('webgl2');
let shader = ctx.createShader(35633);
ctx.shaderSource(shader, '\n attribute vec4 aPosition;\n attribute vec4 aColor;\n uniform vec4 anOffset;\n varying vec4 vColor;\n void main(void) {\n gl_Position = aPosition + anOffset;\n vColor = aColor;\n }\n ');
ctx.compileShader(shader);
let shaderParam1 = ctx.getShaderParameter(shader, 35713);
let shader2 = ctx.createShader(35632);
ctx.shaderSource(shader2, '\n precision mediump float;\n varying vec4 vColor;\n void main(void) {\n gl_FragColor = vColor;\n }\n ');
ctx.compileShader(shader2);
let shaderParam2 = ctx.getShaderParameter(shader2, 35713);
let program = ctx.createProgram();
ctx.attachShader(program, shader);
ctx.attachShader(program, shader2);
ctx.linkProgram(program);
let programParam1 = ctx.getProgramParameter(program, 35714);
let buffer1 = ctx.createBuffer();
ctx.bindBuffer(34962, buffer1);
var bl_27 = [0, 0.5, 0.699999988079071, -0.6000000238418579, -0.4000000059604645, -0.800000011920929];
var bl_0 = [0.30000001192092896, 0.699999988079071, 0, 1, 0.10000000149011612, 0, 0.8999999761581421, 1, 0.8999999761581421, 0, 0, 1];
let Float32Array1 = new Float32Array(bl_27);
ctx.bufferData(34962, Float32Array1, 35044);
let buffer2 = ctx.createBuffer();
ctx.bindBuffer(34962, buffer2);
let Float32Array2 = new Float32Array(bl_0);
ctx.bufferData(34962, Float32Array2, 35044);
let attribLocationAPosition = ctx.getAttribLocation(program, 'aPosition');
let attribLocationAColor = ctx.getAttribLocation(program, 'aColor');
ctx.bindBuffer(34962, buffer1);
ctx.vertexAttribPointer(0, 2, 5126, false, 0, 0);
ctx.enableVertexAttribArray(0);
ctx.bindBuffer(34962, buffer2);
ctx.vertexAttribPointer(1, 4, 5126, false, 0, 0);
ctx.enableVertexAttribArray(1);
ctx.useProgram(program);
let webglUniformLocation = ctx.getUniformLocation(program, 'anOffset');
ctx.uniform4fv(webglUniformLocation, [0.2, 0, 0, 0])
ctx.drawArrays(5, 0, 3)
let unint8Array = new Uint8Array(90000);
ctx.readPixels(50, 0, 100, 128, 6408, 5121, unint8Array);
var compressString = function (S) {
let nums = S.split(",")
let str = ''
let i = 0
while (i < nums.length) {
let j = i + 1
while (nums[i] == nums[j]) {
j++
}
if ((j - i) !== 1) {
str = str + '|' + nums[i] + '-' + (j - i)
} else {
str = str + '|' + nums[i]
}
i = j
}
res = str.length >= S.length ? S : str
return res
};
return {
strs: compressString(unint8Array + ''),
url: canvas.toDataURL()
}
}()
setTimeout(function () {
let result = {
windowparams: windowparams,
screenparams: screenparams,
navigatorparams: navigatorparams,
featurepolicy: featurePolicy,
plugins: plgs,
mimetypes: mimes,
fontsres: fontsRes,
imgsres: imgRes,
glres: glArgs,
jpg: getDataUrl(),
jpg2: getDataUrl2(),
canplay: canplay(),
useragentdata: userAgentData,
webglimg: webglImg,
}
let body = JSON.stringify(result);
// body = stringToHex(encodeURIComponent(body))
// console.log(2, body.length)
// /collect
fetch("https://stage.unififi.com/env/shape", {
"headers": {
"accept": "*/*",
"accept-language": "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7",
"cache-control": "no-cache",
"pragma": "no-cache",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "cross-site"
},
"body": body,
"method": "POST",
"mode": "cors",
"credentials": "omit"
}).then(e => {
console.log(e.text())
})
}, 2000)
} catch (e) {
}
\ No newline at end of file
...@@ -5,20 +5,26 @@ import requests ...@@ -5,20 +5,26 @@ import requests
import json import json
import tls_client import tls_client
from bson import ObjectId from bson import ObjectId
import hashlib
from pymongo import MongoClient from pymongo import MongoClient
def md5(text):
m = hashlib.md5()
m.update(text.encode())
return m.hexdigest()
# 连接MongoDB数据库 # 连接MongoDB数据库
client = MongoClient('mongodb://lcc-spider:JIUsfhiad&^@18.144.59.80:27017/?authSource=admin&directConnection=true') client = MongoClient('mongodb://lcc-spider:JIUsfhiad&^@18.144.59.80:27017/?authSource=admin&directConnection=true')
db = client.env db = client.env
# 查询所有文档 # 查询所有文档
result = db.env_shape.find() # result = db.env_shape.find()
data = {str(x['_id']): x['env'] for x in result} # data = {str(x['_id']): x['env'] for x in result}
print(result) # print(result)
with open('env.json', 'w') as f: # with open('env.json', 'w') as f:
f.write(json.dumps(data)) # f.write(json.dumps(data))
with open('env.json', 'r') as f:
data = json.loads(f.read())
envs = data.keys() envs = data.keys()
session = tls_client.Session(client_identifier='chrome_110') session = tls_client.Session(client_identifier='chrome_110')
...@@ -27,25 +33,33 @@ session = tls_client.Session(client_identifier='chrome_110') ...@@ -27,25 +33,33 @@ session = tls_client.Session(client_identifier='chrome_110')
headers = { headers = {
"Host": "jbrest.jetblue.com", "Host": "jbrest.jetblue.com",
"application-channel": "Desktop_Web", "application-channel": "Desktop_Web",
"sec-ch-ua-platform": "\"macOS\"",
"sec-ch-ua-mobile": "?0",
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36", "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
"booking-application-type": "NGB", "booking-application-type": "NGB",
"content-type": "application/json", "content-type": "application/json",
"accept": "application/json", "accept": "application/json",
"origin": "https://www.jetblue.com", "origin": "https://www.jetblue.com",
"sec-fetch-site": "same-site",
"sec-fetch-mode": "cors",
"sec-fetch-dest": "empty",
"accept-language": "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7" "accept-language": "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7"
} }
lastHash = ''
usedTime = 10
code = open('src.js', 'r').read()
for i in range(100): for i in range(100):
selectId = random.choice(list(envs)) selectId = random.choice(list(envs))
# selectId = 'ac22733c38ee66a568f17174' # selectId = 'ac22733c38ee66a568f17174'
c = requests.get('https://www.jetblue.com/js/src/jb-74873.js').text
m5 = md5(c)
if m5 != lastHash and usedTime > 5:
lastHash = m5
usedTime = 0
print('js变化')
with open('src_run1.js', 'w') as f:
f.write(code + '\n\n' + c)
t1 = time.time() t1 = time.time()
# r = requests.get('http://127.0.0.1:5000/getinfo').json()['message'] # r = requests.get('http://127.0.0.1:5000/getinfo').json()['message']
# r = requests.get('http://127.0.0.1:3001').json() # r = requests.get('http://127.0.0.1:3001').json()
p = subprocess.Popen(['node', 'js_dom_run.js', selectId], stdin=subprocess.PIPE, stdout=subprocess.PIPE, # p = subprocess.Popen(['node', 'js_dom_run.js', selectId], stdin=subprocess.PIPE, stdout=subprocess.PIPE,
p = subprocess.Popen(['node', 'src_run1.js', selectId], stdin=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.PIPE) stderr=subprocess.PIPE)
output, err = p.communicate(timeout=10) output, err = p.communicate(timeout=10)
tmp = '' tmp = ''
...@@ -58,6 +72,7 @@ for i in range(100): ...@@ -58,6 +72,7 @@ for i in range(100):
{'_id': ObjectId(selectId)}, {'_id': ObjectId(selectId)},
{"$inc": {"used": 1}} {"$inc": {"used": 1}}
) )
usedTime += 1
# r = { # r = {
# 'X-1ItxWO9i-f': 'A7AKCbCJAQAAV93ahgnafaQIeEbvT-Ss7YkuAnwrNQi_E70IpAViSqhv3hLLAXL3RNiucirJwH9eCOfvosJeCA==', # 'X-1ItxWO9i-f': 'A7AKCbCJAQAAV93ahgnafaQIeEbvT-Ss7YkuAnwrNQi_E70IpAViSqhv3hLLAXL3RNiucirJwH9eCOfvosJeCA==',
# 'X-1ItxWO9i-b': 'ewccp4', # 'X-1ItxWO9i-b': 'ewccp4',
...@@ -99,7 +114,7 @@ for i in range(100): ...@@ -99,7 +114,7 @@ for i in range(100):
proxy = f'http://unfflcc:76cc14-47b8dd-1f8ace-827836-0c740e@usa.rotating.proxyrack.net:{int(random.randint(10000, 11149))}' proxy = f'http://unfflcc:76cc14-47b8dd-1f8ace-827836-0c740e@usa.rotating.proxyrack.net:{int(random.randint(10000, 11149))}'
# proxy = f'http://unfflcc:76cc14-47b8dd-1f8ace-827836-0c740e@198.147.25.26:{int(random.randint(10000, 11149))}' # proxy = f'http://unfflcc:76cc14-47b8dd-1f8ace-827836-0c740e@198.147.25.26:{int(random.randint(10000, 11149))}'
# proxy = 'http://user-unifflcc-region-us:q39CEBTs5A5YQXor@pr.roxlabs.cn:4600' # proxy = 'http://user-unifflcc-region-us:q39CEBTs5A5YQXor@pr.roxlabs.cn:4600'
# proxy = 'http://127.0.0.1:7890' proxy = 'http://127.0.0.1:7890'
session.proxies = { session.proxies = {
'http': proxy, 'http': proxy,
'https': proxy, 'https': proxy,
...@@ -118,6 +133,8 @@ for i in range(100): ...@@ -118,6 +133,8 @@ for i in range(100):
# }) # })
uri = 'http://ymx-lcc.unififi.com/header/add' uri = 'http://ymx-lcc.unififi.com/header/add'
proxy = f'http://unfflcc:76cc14-47b8dd-1f8ace-827836-0c740e@usa.rotating.proxyrack.net:{int(random.randint(10000, 11149))}'
print(selectId, headers) print(selectId, headers)
r = requests.post(uri, json={ r = requests.post(uri, json={
'brush_fromto': 'LAS-BOS', 'brush_fromto': 'LAS-BOS',
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
No preview for this file type
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment