जावास्क्रिप्ट से एचटीएमएल में इमोजी के रूप में प्रतिपादन से यूनिकोड वर्णों को कैसे रोका जाए?


119

मैं FileFormat.Info की खोज से विशेष पात्रों के लिए यूनिकोड ढूंढ रहा हूं ।

कुछ पात्र क्लासिक ब्लैक-एंड-व्हाइट ग्लिफ़ के रूप में प्रस्तुत कर रहे हैं, जैसे कि warning (चेतावनी संकेत, \u26A0या ⚠)। ये बेहतर हैं, क्योंकि मैं उनके लिए सीएसएस शैलियों (जैसे रंग) को लागू कर सकता हूं।

चेतावनी ग्लिफ़ की छवि

अन्य नए कार्टोनी इमोजी के रूप में प्रतिपादन कर रहे हैं, जैसे कि glass (घंटा, \u231Bया ⌛)। ये बेहतर नहीं हैं, क्योंकि मैं उन्हें पूरी तरह से स्टाइल नहीं कर सकता।

प्रति घंटा इमोजी की छवि

ऐसा प्रतीत होता है कि ब्राउज़र यह परिवर्तन कर रहा है, क्योंकि मैं मैक फ़ायरफ़ॉक्स पर घंटा ग्लाइफ़ को देखने में सक्षम हूं, न कि केवल मैक क्रोम और न ही मैक सफारी।

क्या ब्राउज़र को पुराने (फ्लैट मोनोटोन) संस्करणों को प्रदर्शित करने के लिए मजबूर करने का एक तरीका है?

अद्यतन : ऐसा लगता है (नीचे टिप्पणियों से) एक पाठ प्रस्तुति चयनकर्ता है , जो FE0Eपाठ-बनाम-इमोजी को लागू करने के लिए उपलब्ध है। चयनकर्ता को वर्ण के कोड पर स्थान के बिना एक प्रत्यय के रूप में संक्षिप्त किया जाता है, जैसे कि ⌛︎HTML हेक्स या \u231B\uFE0EJS के लिए। हालाँकि, यह केवल सभी ब्राउज़रों (जैसे क्रोम और एज) द्वारा सम्मानित नहीं किया जाता है


क्या आप अपने CSS नियमों में एक फ़ॉन्ट-परिवार सेट करते हैं?
जी-साइरिलस


1
@janaspage ︎और \uFE0Eसही (2 और 8) हैं और सफारी (8 और 9) में ठीक काम करते हैं, लेकिन जैसे जवाब कहते हैं: ब्राउज़र समर्थन धब्बेदार है, और क्रोम (46) पूरी तरह से टूट गया है।
一 一

2
Emojis के प्रतिपादन को नियंत्रित करने के लिए कोई मानक तरीका नहीं है।
nwellnhof

1
आपको बस एक ऐसा फ़ॉन्ट लागू करना है जिसमें इस वर्ण के लिए ग्लिफ़ हों, और जिसका ग्लिफ़ आपको मनचाहा लगे (कोई रंग नहीं, कोई आकृतियाँ, या जो आप पसंद करते हैं)।
श्रीवत्सआर

जवाबों:


133

पाठ, वीएस 15, को मजबूर करने के लिए यूनिकोड भिन्न चयनकर्ता चरित्र को जोड़ें ︎
यह पिछले चरित्र को इमोजी प्रतीक के बजाय पाठ के रूप में प्रस्तुत करने के लिए मजबूर करता है।

<p>🔒&#xFE0E;</p>

परिणाम: 🔒︎

और जानें: यूनिकोड प्रतीक को पाठ या इमोजी के रूप में


1
यह सुपर मददगार है, यही वजह है कि मैंने इसे दूसरे दिन उतारा। मुझे आश्चर्य है कि मैं फेसबुक विज्ञापन में एक इमोजी और इस अदृश्य चरित्र को कैसे लिख सकता हूं? PS यह भी दिलचस्प था: Apple.stackexchange.com/a/240450/53510
रयान

3
मुझे बस एहसास हुआ कि यह &#xFE0E;ट्रिक मेरे लिए कुछ फोंट के लिए काम नहीं करती है। मुझे एक ऐसा समय खोजने में कठिनाई हो रही है जिसे मैं सभी मशीनों (विंडोज, आईओएस, मैक, एंड्रॉइड आदि) पर स्थापित करने की अपेक्षा कर सकता हूं।
रयान

12
यह समाधान उन प्रतीकों के लिए वास्तव में स्वीकार्य नहीं है जो इनपुट फ़ील्ड में भी हो सकते हैं। मैं तर्क में इस्तेमाल किए गए प्रतीक and के साथ यह परेशानी महसूस कर रहा हूं, और मैं अपने जीवन के लिए यह नहीं समझ सकता कि क्यों किसी को लगता है कि यह कभी भी इमोजी होना चाहिए!
क्रोधी

2
निम्न पृष्ठ उस इमोजी के तुरंत बाद उस विशेष चरित्र को कॉपी करने और चिपकाने के लिए सहायक होता है, ताकि वह स्टाइल के बजाय सपाट दिखाई दे। उदाहरण के लिए, आप 💬 और 🌟 के बजाय 🌟︎ और 🌟 के बजाय ⌛ और 🌟︎ के बजाय 🔒 (अपने डिवाइस के आधार पर) यूनिकोड- symbol.com/u/FE0E.html
रियान देख सकते हैं

15
यह मेरे लिए उदाहरण में एक इमोजी के रूप में प्रस्तुत करता है, मैक 10.11.6 पर क्रोम 71।
लहरवां

13

मैं में एक यूनिकोड वर्ण था contentएक की span::beforeहै, और मैं था font-familyकी span"Segoe यूआई प्रतीक" करने के लिए सेट। लेकिन क्रोम ने इसे रेंडर करने के लिए फ़ॉन्ट के रूप में "सेगो यूआई इमोजी" का उपयोग किया।

हालांकि, जब मैं सेट font-family"Segoe यूआई प्रतीक" करने के लिए स्पष्ट रूप से के लिए span::before, बल्कि सिर्फ सेspan , तो यह काम किया।


यह सही उत्तर होना चाहिए, खासकर जब से पुराने अदृश्य चरित्र विधि को अधिकांश प्रमुख ब्राउज़रों द्वारा सम्मानित नहीं किया गया है।
सारा सी। कोरिहर

2

आईओएस को प्रदर्शित करने से रोकने के लिए सीएसएस-केवल समाधान के लिए, आप font-family: monospaceइमोजी संस्करण के बजाय ग्लिफ़ के पाठ संस्करण के लिए कौन सी चूक का उपयोग कर सकते हैं ।


1

एंड्रॉइड फॉन्ट अमीर नहीं हैं जैसा कि आप उम्मीद कर सकते हैं। फ़ॉन्ट फ़ाइलों में ये विदेशी ग्लिफ़ नहीं है और एंड्रॉइड के पास ग्लिफ़ के बिना कुछ वर्णों के लिए एक हैक है। उन्हें आइकनों से बदल दिया जाता है।

तो समाधान वेब फ़ॉन्ट (woff) के साथ साइट को एकीकृत करना है। FontForge के साथ नई फ़ॉन्ट फ़ाइल बनाएं और उदाहरण के लिए मुफ्त सेरिफ़ TTF से आवश्यक ग्लिफ़ चुनें। हर ग्लिफ़ में 1k लगता है। Woff फ़ाइल जनरेट करें।

कस्टम फ़ॉन्ट परिवार आयात करने के लिए सरल सीएसएस तैयार करें।

style.css:

@font-face {
  font-family: 'Exotic Icons';
  src: url('exotic-icons.woff') format('woff');
}

.exotic-symbol-font {
    position: relative;
    top: 1px;
    display: inline-block;
    font-family: 'Exotic Icons';
    font-style: normal;
    font-weight: normal;
    line-height: 1;

    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

index.html फ़ाइल:

<html>
  <head>
    <meta charset="utf-8">
    <link href="style.css" rel="stylesheet"></head>
    <title>Test custom glyphs</title>
  </head>
  <body>
    <table>
      <tr>
        <td class="exotic-symbol-font">
            😭  &#x2660; a  g
        </td>       
      </tr>
    </table>
  </body>
</html>

1

यदि आपकी प्राथमिक चिंता मोनोक्रोमैटिक डिस्प्ले को मजबूर कर रही है तो इमोजी टेक्स्ट से बहुत अधिक बाहर नहीं खड़े होते हैं, सीएसएस फिल्टर, या तो अकेले या यूनिकोड भिन्नता चयनकर्ता के साथ संयोजन में, कुछ ऐसा हो सकता है जो आप चाहते हैं।

p.gscale { 
  -webkit-filter: grayscale(100%);
  filter: grayscale(100%);
}
a {
  color: #999;
  -webkit-filter: grayscale(100%) sepia(100%) saturate(400%) hue-rotate(170deg);
   filter: grayscale(100%) sepia(100%) saturate(400%) hue-rotate(170deg);
}
<p class="gscale">You've now got emoji display on 🔒lockdown🔒.</p>

<p>External Link: <a href="https://knowyourmeme.com/memes/party-hard">celebrate 🎉</a></p>

भिन्नता चयनकर्ता के विपरीत, इससे कोई फर्क नहीं पड़ता कि इमोजी का प्रतिपादन कैसे किया जाता है, क्योंकि सीएसएस फिल्टर हर चीज पर लागू होते हैं। (मैं उन्हें हाइपरलिंक पर PNG- प्रारूप "लिंक प्रकार" आइकन को स्केल करने के लिए उपयोग करता हूं जिन्हें वेनबैक मशीन को इंगित करने के लिए संशोधित किया गया है।)

सिर्फ कैविएट को ध्यान में रखें । आप एक बच्चे में एक मूल तत्व के फिल्टर को ओवरराइड नहीं कर सकते हैं, इसलिए इस तकनीक का उपयोग किसी अनुच्छेद को स्केल करने के लिए नहीं किया जा सकता है, फिर इसके भीतर लिंक को फिर से रंग दें। 😢

... फिर भी, यह उन स्थितियों के लिए उपयोगी है जहाँ आप या तो पूरी चीज़ को हाइपरलिंक बनाने जा रहे हैं या इसके भीतर समृद्ध मार्कअप को अस्वीकार कर रहे हैं। (उदाहरण। शीर्षक और विवरण)

हालांकि, यह तब तक काम नहीं करेगा जब तक कि सीएसएस वास्तव में लागू नहीं हो जाता है, इसलिए मैं एक दूसरा विकल्प दूंगा जो कि अधिक विश्वसनीय है <title> कि यूनिकोड भिन्नता चयनकर्ता की तुलना तत्वों (मैं आपको GitHub देख रहा हूं। मुझे नकली आइकन पसंद नहीं हैं। ब्राउज़र टैब):

यदि आप किसी उपयोगकर्ता द्वारा प्रदान किए गए स्ट्रिंग को एक <title>तत्व में डाल रहे हैं , तो इमोजी को किसी भी बोल्ड / इटैलिक / अंडरलाइन / आदि के साथ फ़िल्टर करें। मार्कअप। (हां, जो लोग इसे याद करते हैं, उनके लिए मानक यह कहता <title>है कि एम्परसेंड से अलग सादे पाठ की सामग्री बच जाए और जिन ब्राउज़रों का मैंने शाब्दिक पाठ के रूप में सभी व्याख्या टैग का परीक्षण किया है।)

मेरे विचार से दो तरीके हैं:

  1. सीधे मैन्युअल रूप से बनाए रखा रेगेक्स का उपयोग करें जो उन ब्लॉकों से मेल खाता है जहां यूनिकोड का नवीनतम संस्करण अपने इमोजी और उनके संशोधक डालता है।
  2. दोहराएं ग्रफीम समूहों के माध्यम से और त्यागने किसी भी जो इमोजी कोड पॉइंट्स मान्यता प्राप्त होते हैं। (एक ग्रैफेम क्लस्टर एक बेस ग्लिफ़ है जो सभी डायक्ट्रीक्टिक्स और अन्य संशोधक हैं जो दृश्यमान चरित्र बनाते हैं। उदाहरण मैं पायथन के रेगेक्स इंजन का उपयोग करने के लिए लिंक करता है tokenize और फिर emojiडेटाबेस के लिए पैकेज, लेकिन रस्ट एक भाषा का एक अच्छा उदाहरण है। जहां अंगूर के समूहों को पुनरावृत्त करना एक टोकरा के माध्यम से त्वरित और आसान है unicode-segmentation।)

0

Google Chrome, डेस्कटॉप संस्करण 75, एक पृष्ठ को लोड करते समय पहले किए गए यूनिकोड से बचने के आधार पर यूनिकोड वर्णों को प्रस्तुत करने के लिए इसके दृष्टिकोण को अस्वीकार करने लगता है। उदाहरण के लिए, जब किसी पृष्ठ स्रोत में पहले HTML यूनिकोड भागने के रूप में पार्स किया गया हो, और कोई इमोजी समतुल्य न हो, & # 9207; Chrome को स्पष्ट करने के लिए लगता है कि पृष्ठ में इमोजी के रूप में प्रस्तुत नहीं किया जाना है।


0

Ssokolow के उत्तर पर विस्तार करना , एक फिल्टर का उपयोग करना अच्छा है और कम से कम एक साधारण फ़ॉन्ट का उपयोग करने के बजाय आकृति को दिखाई देता है, लेकिन जब आप किसी विशिष्ट रंग का उपयोग करना चाहते हैं तो सीजीआर फिल्टर के अनुक्रम में RGB रंग को परिवर्तित करना बहुत कठिन है।

एक बेहतर (हालांकि काफी चिंताजनक) विकल्प <feColorMatrix>एसवीजी फिल्टर का उपयोग करना है । ग्रेस्केल फिल्टर और डेटा यूआरआई योजना के साथ संयुक्त, आप RGB और इन-लाइन CSS के माध्यम से रंग का प्रतिनिधित्व कर सकते हैं:

.violet {
  color: white;
  filter: grayscale(100%) url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'><filter id='f'><feColorMatrix type='matrix' values='0.78 0 0 0 0  0 0.082 0 0 0  0 0 0.522 0 0  0 0 0 1 0'/></filter></svg>#f");
}

दुर्भाग्य से, आप URL को डेटा (विशेषताओं या चर से लिया गया) के साथ इंटरपोल नहीं कर सकते, लेकिन आपको कम से कम RGB से CSS फ़िल्टर की गणना करने की आवश्यकता नहीं है।


-2

मैं इमोजी टाइप रेंडरिंग को बंद करने का तरीका नहीं जानता। आमतौर पर मैं एक आइकन फ़ॉन्ट का उपयोग करता हूं जैसे कि फ़ॉन्ट भयानक या ग्लिफ़िकॉन (बूटस्ट्रैप 3 के साथ आता है)।

यूनिकोड वर्णों पर इनका उपयोग करने का लाभ यह है कि

  1. आप कई अलग-अलग शैलियों में से चुन सकते हैं ताकि यह आपकी साइट के डिजाइन को फिट करे;
  2. वे सभी ब्राउज़रों में सुसंगत हैं (यदि आपने कभी एक यूनिकोड स्टार चरित्र करने की कोशिश की है, तो आप यह देखेंगे कि यह IE बनाम अन्य ब्राउज़र में अलग है);
  3. इसके अलावा, वे पूरी तरह से शैलीगत हैं, जैसे कि यूनिकोड वर्ण आप उपयोग करने की कोशिश कर रहे हैं।

केवल नकारात्मक पक्ष यह है कि ब्राउज़र के लिए इसकी एक और बात यह है कि जब वे आपके पृष्ठ को देखें तो डाउनलोड करें।


-2

OSX पर मेरे लिए समाधान फ़ॉन्ट-परिवार को सेट करना था EmojiSymbols


-3

ऊपर दिए गए समाधानों में से कोई भी "Google Chrome के लिए इमोजी" एक्सटेंशन के लिए काम नहीं करता है।

इसलिए वर्कअराउंड के रूप में मैंने यूनिकोड कैरेक्टर 'BALLOT BOX WITH CHECK' (U + 2611) का स्क्रीनशॉट बनाया और इसे php के साथ इमेज के रूप में जोड़ा:

 $ballotBoxWithCheck='<img src="pics/U2611.png" style="height:11px;margin-bottom:-1px">'; # &#9745; or /U2611

यहां छवि विवरण दर्ज करें

देखें: https://spacetrace.org/man_card.php?tec_id=21&techname=multi-emp-essel


लगभग निश्चित रूप से टेक्स्ट टूल का उपयोग करके इनक्सस्केप में पेस्ट करने के लिए बेहतर है (एक फ़ॉन्ट जिसके पास उपयुक्त लाइसेंस है) और फिर एक ऑटो-ट्रेस चलाएं, ताकि आप इसमें से एक एसवीजी प्राप्त कर सकें जो आपको जिस भी आकार की आवश्यकता होगी, उसे स्केल करेगा। (इसे जितना संभव हो उतना छोटा बनाने के लिए, कुछ मैनुअल एडिटिंग के साथ SVG मिनिफ़ायर को उन रास्तों में
जोड़ दें
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.