Znajduję Unicode dla znaków specjalnych z wyszukiwania FileFormat.Info .
Niektóre znaki są renderowane jako klasyczne czarno-białe glify, takie jak ⚠ (znak ostrzegawczy \u26A0
lub ⚠
). Są lepsze, ponieważ mogę zastosować do nich style CSS (takie jak kolor).
Inne renderują się jako nowsze emotikony z kreskówek, takie jak ⌛ (klepsydra \u231B
lub ⌛
). Nie są preferowane, ponieważ nie mogę ich w pełni stylizować.
Wygląda na to, że przeglądarka wprowadza tę zmianę, ponieważ jestem w stanie zobaczyć glif klepsydry na Mac Firefox, ale nie w Mac Chrome ani Mac Safari.
Czy istnieje sposób, aby zmusić przeglądarki do wyświetlania starszych (płaskich monotonicznych) wersji?
Aktualizacja : Wygląda na to (z uwagi poniżej) istnieje selektor prezentacja tekstu , FE0E
dostępny do egzekwowania tekst-VS-emotikonów. Selektor jest konkatenowany jako przyrostek bez spacji w kodzie znaku, na przykład ⌛︎
dla kodu szesnastkowego HTML lub \u231B\uFE0E
dla JS. Jednak po prostu nie jest honorowany przez wszystkie przeglądarki (np. Chrome i Edge).
︎
i\uFE0E
są poprawne (2 i 8) i działają dobrze w Safari (8 i 9), ale zgodnie z odpowiedzią: obsługa przeglądarki jest nierówna, a Chrome (46) jest całkowicie zepsuty.Odpowiedzi:
Dołącza zmienności wyboru Unicode znaków dla zmuszając tekst, VS15,
︎
.To zmusza poprzedni znak do renderowania jako tekst, a nie jako symbol Emoji.
Wynik: 🔒︎
Więcej informacji pod adresem: symbol Unicode jako tekst lub emoji
źródło
︎
sztuczka nie działa w przypadku niektórych czcionek. Trudno mi znaleźć czcionkę, której mogę się spodziewać na wszystkich komputerach (Windows, iOS, Mac, Android itp.).Miałem znak Unicode w
content
tematycespan::before
, a miałemfont-family
zspan
zestawem do Segoe UI „symbol”. Ale Chrome użył „Segoe UI Emoji” jako czcionki do renderowania.Jednak kiedy ustawiłem
font-family
„Segoe UI Symbol” wyraźnie dlaspan::before
, a nie tylko dlaspan
, to zadziałało.źródło
W przypadku rozwiązania opartego tylko na CSS, które zapobiega wyświetlaniu emotikonów w systemie iOS, możesz użyć
font-family: monospace
domyślnej wersji glifu zamiast wariantu emoji.źródło
Czcionki Androida nie są bogate, jak można się spodziewać. Pliki czcionek nie mają tych egzotycznych glifów, a Android ma hack dla kilku znaków bez glifu. Zostały zastąpione ikonami.
Rozwiązaniem jest więc zintegrowanie serwisu z czcionką internetową (woff). Utwórz nowy plik czcionki za pomocą FontForge i wybierz wymagany glif na przykład z wolnego szeryfowego TTF. Każdy glif zajmuje 1k. Wygeneruj plik woff.
Przygotuj prosty CSS, aby zaimportować niestandardową rodzinę czcionek.
style.css:
Plik index.html:
źródło
Jeśli Twoim głównym zmartwieniem jest wymuszenie wyświetlania monochromatycznego, aby emoji nie wyróżniały się zbytnio z tekstu, filtry CSS, same lub w połączeniu z selektorem odmian Unicode, mogą być czymś, czego chcesz.
W przeciwieństwie do selektora odmian, nie powinno mieć znaczenia, jak renderowane są emoji, ponieważ filtry CSS mają zastosowanie do wszystkiego. (Używam ich do skalowania ikon typu łącza w formacie PNG w skali szarości w hiperłączach, które zostały zmodyfikowane tak, aby wskazywały Wayback Machine).
Tylko pamiętaj o zastrzeżeniu . Nie możesz zastąpić filtru elementu nadrzędnego w podrzędnym, więc tej techniki nie można użyć do przeskalowania akapitu w skali szarości, a następnie ponownego pokolorowania linków w nim. 😢
... nadal jest to przydatne w sytuacjach, w których zamierzasz uczynić całość hiperłączem lub uniemożliwić w niej bogate znaczniki. (np. tytuły i opisy)
Jednak to nie zadziała, chyba że CSS faktycznie zostanie zastosowany, więc podam drugą opcję, która jest bardziej niezawodna w
<title>
elementach niż selektor odmian Unicode (patrzę na ciebie GitHub. Nie lubię fałszywych ikon w moim karty przeglądarki):Jeśli umieszczasz ciąg dostarczony przez użytkownika w
<title>
elemencie, odfiltruj emoji wraz z pogrubieniem / kursywą / podkreśleniem / itp. narzut. (Tak, dla tych, którzy to przegapili, standard wymaga, aby zawartość<title>
była czystym tekstem, poza znakami „ampersand”, a wszystkie przeglądarki, które testowałem, interpretują tagi jako tekst dosłowny).Przychodzą mi na myśl dwa sposoby:
emoji
pakiet dla bazy danych, ale Rust jest dobrym przykładem języka gdzie iterowanie klastrów grafemowych jest szybkie i łatwe dzięki skrzynce takiej jakunicode-segmentation
).źródło
Wydaje się, że Google Chrome, wersja 75 na komputery stacjonarne, ujednoznacznia swoje podejście do renderowania znaków Unicode w oparciu o pierwszy znak ucieczki Unicode napotkany podczas ładowania strony. Na przykład po przeanalizowaniu jako pierwsza zmiana znaczenia kodu HTML Unicode w źródle strony i bez odpowiednika emoji & # 9207; wydaje się wyjaśniać Chrome, że strona zawiera znaki ucieczki, których nie można renderować jako emoji.
źródło
Rozwijając odpowiedź ssokolow , użycie filtra jest przyjemne i przynajmniej sprawia, że kontury są widoczne zamiast używać prostej czcionki, ale konwersja koloru RGB na sekwencję filtrów CSS jest bardzo trudna, gdy chcesz użyć określonego koloru.
Lepszą (choć dość rozwlekłą) opcją jest użycie
<feColorMatrix>
filtra SVG. W połączeniu z filtrem skali szarości i schematem URI danych, możesz przedstawić kolor za pomocą RGB i wbudowanego CSS:Niestety nie możesz interpolować adresu URL danymi (pobranymi z atrybutów lub zmiennych), ale przynajmniej nie musisz obliczać filtrów CSS z RGB.
źródło
Nie wiem, jak wyłączyć renderowanie typu emoji. Zwykle używam czcionki ikon, takiej jak awesome lub glificons (dostarczana z Bootstrap 3).
Zaletą używania ich w porównaniu ze znakami Unicode jest to
Jedynym minusem jest to, że przeglądarka może pobierać jeszcze jedną rzecz, gdy przegląda Twoją stronę.
źródło
Dla mnie na OSX rozwiązaniem było ustawienie rodziny czcionek na
EmojiSymbols
źródło
Żadne z powyższych rozwiązań nie działało w przypadku rozszerzenia „Emoji dla Google Chrome”.
Aby obejść ten problem , zrobiłem zrzut ekranu znaku Unicode `` BALLOT BOX WITH CHECK '' (U + 2611) i dodałem go jako obraz z php:
Zobacz: https://spacetrace.org/man_card.php?tec_id=21&techname=multi-emp-vessel
źródło