簡體   English   中英

Noto Color Emoji 未在 Emacs 中呈現

[英]Noto Color Emoji not rendering in Emacs

我無法在 X11 上獲取 Emacs 以使用 Google 的 Noto Color Emoji 字體顯示表情符號。 我正在測試一個僅包含一個 Unicode 字符 CROSSED FLAGS (U+1F38C) 和一個換行符的文件。 我使用emacs -Q crossed-flags.txt打開此文件,以禁止在我的 init 文件或其他地方進行任何自定義設置。

緩沖區顯示了一個比平常更寬的空白區域,其中應該是交叉標志表情符號:

Emacs 顯示空白而不是表情符號

這是表情符號 position 上Cu Cx =的摘錄。特別是從 Emacs 的角度來看,以ftcrhb開頭的行似乎表明一切正常:

               script: emoji
               syntax: w    which means: word
             category: .:Base
             to input: type "C-x 8 RET 1f38c" or "C-x 8 RET CROSSED FLAGS"
          buffer code: #xF0 #x9F #x8E #x8C
            file code: #xF0 #x9F #x8E #x8C (encoded by coding system utf-8-unix)
              display: by this font (glyph code):
    ftcrhb:-NONE-Noto Color Emoji-regular-normal-normal-*-14-*-*-*-m-0-iso10646-1 (#xC95)

我收集了一個 Fontconfig 跟蹤以顯示使用FC_DEBUG=1 emacs -Q crossed-flags.txt >emacs29-fc.log 2>&1加載字體的位置。 這包含接近末尾的以下信息,文件:...位置表明可以在預期位置找到 Noto Color Emoji 的字體文件。

Match Pattern has 28 elts (size 32)
    family: "Noto Color Emoji"(s) "DejaVu Sans"(w) "DejaVu LGC Sans"(w) "DejaVu LGC Sans"(w) "DejaVu Sans"(w) "Bitstream Vera Sans"(w) "Verdana"(w) "Arial"(w) "Albany AMT"(w) "Luxi Sans"(w) "Nimbus Sans L"(w) "Nimbus Sans"(w) "Helvetica"(w) "Lucida Sans Unicode"(w) "BPG Glaho International"(w) "Tahoma"(w) "Noto Sans CJK JP"(w) "Noto Sans CJK SC"(w) "Noto Sans CJK TC"(w) "Nachlieli"(w) "Lucida Sans Unicode"(w) "Yudit Unicode"(w) "Kerkis"(w) "ArmNet Helvetica"(w) "Artsounk"(w) "BPG UTF8 M"(w) "Waree"(w) "Loma"(w) "Garuda"(w) "Umpush"(w) "Saysettha Unicode"(w) "JG Lao Old Arial"(w) "GF Zemen Unicode"(w) "Pigiarniq"(w) "B Davat"(w) "B Compset"(w) "Kacst-Qr"(w) "Urdu Nastaliq Unicode"(w) "Raghindi"(w) "Mukti Narrow"(w) "malayalam"(w) "Sampige"(w) "padmaa"(w) "Hapax Berbère"(w) "MS Gothic"(w) "UmePlus P Gothic"(w) "SimSun"(w) "PMingLiu"(w) "WenQuanYi Zen Hei"(w) "WenQuanYi Bitmap Song"(w) "AR PL ShanHeiSun Uni"(w) "AR PL New Sung"(w) "MgOpen Modata"(w) "VL Gothic"(w) "IPAMonaGothic"(w) "IPAGothic"(w) "Sazanami Gothic"(w) "Kochi Gothic"(w) "AR PL KaitiM GB"(w) "AR PL KaitiM Big5"(w) "AR PL ShanHeiSun Uni"(w) "AR PL SungtiL GB"(w) "AR PL Mingti2L Big5"(w) "MS ゴシック"(w) "ZYSong18030"(w) "TSCu_Paranar"(w) "NanumGothic"(w) "UnDotum"(w) "Baekmuk Dotum"(w) "Baekmuk Gulim"(w) "KacstQura"(w) "Lohit Bengali"(w) "Lohit Gujarati"(w) "Lohit Hindi"(w) "Lohit Marathi"(w) "Lohit Maithili"(w) "Lohit Kashmiri"(w) "Lohit Konkani"(w) "Lohit Nepali"(w) "Lohit Sindhi"(w) "Lohit Punjabi"(w) "Lohit Tamil"(w) "Meera"(w) "Lohit Malayalam"(w) "Lohit Kannada"(w) "Lohit Telugu"(w) "Lohit Oriya"(w) "LKLUG"(w) "FreeSans"(w) "Arial Unicode MS"(w) "Arial Unicode"(w) "Code2000"(w) "Code2001"(w) "sans-serif"(w) "Roya"(w) "Koodak"(w) "Terafik"(w) "sans-serif"(w)
    familylang: "de"(s) "en-us"(w)
    stylelang: "de"(s) "en-us"(w)
    fullnamelang: "de"(s) "en-us"(w)
    slant: 0(i)(s)
    weight: 80(i)(s)
    width: 100(i)(s)
    size: 14.4(f)(s)
    pixelsize: 15(f)(s)
    spacing: 100(i)(s)
    foundry: "NONE"(s)
    hintstyle: 3(i)(s)
    hinting: True(s)
    verticallayout: False(s)
    autohint: False(s)
    globaladvance: True(s)
    file: "/usr/share/fonts/truetype/NotoColorEmoji-Regular.ttf"(s)
    index: 0(i)(s)
    scalable: True(s)
    charset: 
    0000: 00000000 00000001 00000000 00000000 00000000 00000000 00000000 00000000
    0020: 00002000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    0e00: 00000000 03ff0000 00000000 87fffffe 00000000 00000000 00000000 00000000
(s)
    lang: "de"(w)
    fontversion: 2147483647(i)(s)
    embeddedbitmap: True(s)
    decorative: False(s)
    lcdfilter: 1(i)(w)
    namelang: "de"(s)
    prgname: "emacs-29.0.60"(s)
    symbol: False(s)

Best score 0 0 0 0 0 0 0 0 2000 1001 0 0 0 0 0 0 0 0 0 0 0 0 0 2.14742e+12
Pattern has 24 elts (size 24)
    family: "Noto Color Emoji"(w)
    familylang: "en"(w)
    style: "Regular"(w)
    stylelang: "en"(w)
    fullname: "Noto Color Emoji"(w)
    fullnamelang: "en"(w)
    slant: 0(i)(w)
    weight: 80(i)(w)
    width: 100(i)(w)
    spacing: 100(i)(w)
    foundry: "NONE"(w)
    file: "/usr/share/fonts/truetype/NotoColorEmoji-Regular.ttf"(w)
    index: 0(i)(w)
    outline: True(w)
    scalable: True(w)
    charset: 
    0000: 00000000 00000001 00000000 00000000 00000000 00000000 00000000 00000000
    0020: 00002000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    0e00: 00000000 03ff0000 00000000 87fffffe 00000000 00000000 00000000 00000000
(w)
    lang: (w)
    fontversion: 65536(i)(w)
    capability: "otlayout:DFLT otlayout:latn"(w)
    fontformat: "TrueType"(w)
    decorative: False(w)
    postscriptname: "NotoColorEmoji"(w)
    color: False(w)
    symbol: False(w)

我在$HOME/.config/fontconfig/conf.d中嘗試了各種 fontconfig 調整,但都沒有解決問題。 因此,我收集了上述信息,並按照 Emacs 源代碼分發版的 etc/PROBLEMS 中的建議移除了所有 fontconfig 自定義設置。

關於如何解決這個問題的任何想法?

原來這是我環境中特定字體文件的問題。 使用sudo apt install fonts-noto-color-emoji從官方 Ubuntu package 安裝字體時,表情符號按預期呈現:

在 Jammy 上的 Emacs29 中按預期呈現的表情符號

相比之下,大多數直接從Noto Color Emoji GitHub 存儲庫中可用的 TTF 文件版本導致僅渲染空白,如 OP 中所示。 來自 GitHub 的唯一 TTF 文件按預期工作 - 至少在 Ubuntu 22.04 (Jammy) - 是NotoColorEmoji-emojicompat.ttf

一個有趣的旁注是,當在 Ubuntu 16.04 (Trusty) 上編譯相同的 Emacs 版本(來自 emacs-29 分支)並使用上面鏈接的相同字體版本時,表情符號僅呈現黑色和白色

我沒有進一步調查這種差異的來源,但假設它是由某些 Emacs 依賴於 Trusty 的舊版本引起的,特別是 freetype、fontconfig 和/或 cairo。

表情符號僅在 Emacs29 on Trusty 中呈現為黑白

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM