Jak dowiedzieć się, która czcionka zawiera określony znak specjalny?


19

Unicode zawiera kilka specjalnych „znaków”, których większość czcionek nie wyświetla. Chcę użyć jednego z nich, kamery wideo.

Wygląda na to, że taki znak rzeczywiście istnieje i ma znak kodowy U + 1F4F9. Kiedy odwiedzam http://graphemica.com/%F0%9F%93%B9 , widzę, że wyświetla się zarówno na stronie internetowej, jak i na pasku adresu przeglądarki Firefox. Zakładam więc, że mam w systemie przynajmniej jedną czcionkę, która zawiera glif.

URL z glifem kamery wideo wyświetla się poprawnie

Ale kiedy wklejam go do Inkscape, dostaję puste pole dla nieznanej postaci, nawet jeśli wybiorę czcionkę, która zwykle ma wiele glifów, na przykład Arial.

Jak dowiedzieć się, które z zainstalowanych czcionek mogą wyświetlać „znak”?


Jeśli czcionka nie zostanie rozpoznana (dając puste pole), prawdopodobnie nie masz zainstalowanej czcionki w systemie. Dlatego musisz go zainstalować, zanim będzie można go użyć.
CharlieRB

@CharlieRB czcionka jest zainstalowana. Nie mogę wybrać czcionki, która nie jest zainstalowana w Inkscape. Po prostu nie ma tego bardzo rzadkiego glifu.
Rumi P.,

DOBRZE. Możesz wyjaśnić to w swoim pytaniu; że masz zainstalowaną czcionkę.
CharlieRB

1
Firefox może używać własnej czcionki w systemie Windows 7 i wcześniejszych wersjach, ponieważ w tych systemach nie ma czcionki dla emoji. Czcionka jest <firefox>\fonts\EmojiOneMozilla.ttfzainstalowana i nie jest instalowana globalnie
phuclv

Istnieje podobne pytanie, na które odpowiedziano tutaj .
jdhao

Odpowiedzi:



4

Całkowicie rozumiem pytanie, ponieważ sam napotkałem ten sam problem:

Wiesz, że na komputerze jest zainstalowana czcionka, ponieważ jeden program wyświetla poprawnie zawartość, ale inny program wyświetla tę samą zawartość jak puste pole, ponieważ nie wie, jakiej czcionki użyć do prawidłowego wyświetlenia. I nie chcesz przewijać wszystkich czcionek, aby znaleźć taką, która zawiera żądany znak.

Spróbuj wkleić skopiowany tekst / symbol do pustego dokumentu Microsoft Word. Treść powinna być wyświetlana poprawnie, jeśli Word jest domyślnie ustawiony na Zachowaj formatowanie źródłowe dla wklejonego tekstu. Jeśli tak, wybierz treść, a menu czcionek Word wyświetli czcionkę źródłową na twoim komputerze, która zawiera niezbędny znak. To prawda, że ​​mogą istnieć inne, ale przynajmniej jest to szybki i brudny sposób na znalezienie jednej czcionki, która może być odpowiednia.


W Linuksie to samo można osiągnąć za pomocą Writer.
Arthur Zennig

4

Poniższy skrypt Pythona wydrukuje wszystkie czcionki zawierające znak (przetestowane na moim Linux-ie).

import unicodedata
import os

fonts = []

for root,dirs,files in os.walk("/usr/share/fonts/"):
    for file in files:
       if file.endswith(".ttf"): fonts.append(os.path.join(root,file))


from fontTools.ttLib import TTFont

def char_in_font(unicode_char, font):
    for cmap in font['cmap'].tables:
        if cmap.isUnicode():
            if ord(unicode_char) in cmap.cmap:
                return True
    return False

def test(char):
    for fontpath in fonts:
        font = TTFont(fontpath)   # specify the path to the font in question
        if char_in_font(char, font):
            print(char + " "+ unicodedata.name(char) + " in " + fontpath) 

test(u"😺")
test(u"🐈")

Na moim komputerze daje to:

😺 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansCondensed.ttf
😺 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf
😺 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf
😺 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansCondensed-Bold.ttf
😺 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Oblique.ttf
😺 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansCondensed-Oblique.ttf
😺 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansCondensed-BoldOblique.ttf
😺 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-BoldOblique.ttf
😺 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/dejavu/DejaVuSansCondensed.ttf
😺 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf
😺 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf
😺 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/dejavu/DejaVuSansCondensed-Bold.ttf
😺 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/dejavu/DejaVuSans-Oblique.ttf
😺 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/dejavu/DejaVuSansCondensed-Oblique.ttf
😺 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/dejavu/DejaVuSansCondensed-BoldOblique.ttf
😺 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/dejavu/DejaVuSans-BoldOblique.ttf
🐈 CAT  in /usr/share/fonts/truetype/noto/NotoSansSymbols2-Regular.ttf
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.