contour-terminal / contour

Modern C++ Terminal Emulator
http://contour-terminal.org/
Apache License 2.0
2.39k stars 102 forks source link

Builtin fonts for special glyphs (nerd fonts / powerline) and emoji (Noto?) #170

Open christianparpart opened 3 years ago

christianparpart commented 3 years ago

Some terminals do provide builtin support for certain glyphs, most notably pwerline fonts and some for Noto Color Emoji.

I think this is good for making providing an easy fallback for users that haven't these glyphs installed or properly configured.

Powerline codepoints

Uses U+E0A0–U+E0A2 and U+E0B0–U+E0B3 for extra box-drawing characters. That can be perfectly implemented in the existing box drawing implementation.

NerdFont codepoints

Implementation notes

whisperity commented 3 years ago

One of my conceal characters is for template, which Konsole rendered as ⛏e, whereas in Contour it becomes a "box". But the font-fallback is at least querying a lot of things.

When rendering the following line to the standard output:

syntax keyword cppStructure template conceal cchar=⛏

in Konsole and Contour, respectively:

Screenshot_20210226_122129 Screenshot_20210226_122118

this is the output:

, seq:, seqEmpty?:true, key:0x1000004, mod:0x0, keySeq[0]:0
[terminal/Terminal.cpp:123:send] char: 0x000D ()
[terminal/Terminal.cpp:334:flushInput] \r
[text_shaper/open_shaper.cpp:673:shape] Shaping codepoints: U+73 U+79 U+6e U+74 U+61 U+78
        Using font: key=0, path="/usr/local/share/fonts/j/JetBrainsMono-Regular.ttf"
[terminal_renderer/TextRenderer.cpp:251:shapeRun] Shaped codepoints: syntax  (presentation: text/Text) (U+0073 U+0079 U+006E U+0074 U+0061 U+0078)
        with metrics: (312+0+0) (351+0+0) (272+0+0) (320+0+0) (180+0+0) (350+0+0)
[text_shaper/open_shaper.cpp:673:shape] Shaping codepoints: U+6b U+65 U+79 U+77 U+6f U+72 U+64
        Using font: key=0, path="/usr/local/share/fonts/j/JetBrainsMono-Regular.ttf"
[terminal_renderer/TextRenderer.cpp:251:shapeRun] Shaped codepoints: keyword  (presentation: text/Text) (U+006B U+0065 U+0079 U+0077 U+006F U+0072 U+0064)
        with metrics: (262+0+0) (216+0+0) (351+0+0) (345+0+0) (279+0+0) (308+0+0) (212+0+0)
[text_shaper/open_shaper.cpp:673:shape] Shaping codepoints: U+63 U+70 U+70 U+53 U+74 U+72 U+75 U+63 U+74 U+75 U+72 U+65
        Using font: key=0, path="/usr/local/share/fonts/j/JetBrainsMono-Regular.ttf"
[terminal_renderer/TextRenderer.cpp:251:shapeRun] Shaped codepoints: cppStructure  (presentation: text/Text) (U+0063 U+0070 U+0070 U+0053 U+0074 U+0072 U+0075 U+0063 U+0074 U+0075 U+0072 U+0065)
        with metrics: (206+0+0) (305+0+0) (305+0+0) (128+0+0) (320+0+0) (308+0+0) (325+0+0) (206+0+0) (320+0+0) (325+0+0) (308+0+0) (216+0+0)
[text_shaper/open_shaper.cpp:673:shape] Shaping codepoints: U+74 U+65 U+6d U+70 U+6c U+61 U+74 U+65
        Using font: key=0, path="/usr/local/share/fonts/j/JetBrainsMono-Regular.ttf"
[terminal_renderer/TextRenderer.cpp:251:shapeRun] Shaped codepoints: template  (presentation: text/Text) (U+0074 U+0065 U+006D U+0070 U+006C U+0061 U+0074 U+0065)
        with metrics: (320+0+0) (216+0+0) (271+0+0) (305+0+0) (265+0+0) (180+0+0) (320+0+0) (216+0+0)
[text_shaper/open_shaper.cpp:673:shape] Shaping codepoints: U+63 U+6f U+6e U+63 U+65 U+61 U+6c
        Using font: key=0, path="/usr/local/share/fonts/j/JetBrainsMono-Regular.ttf"
[terminal_renderer/TextRenderer.cpp:251:shapeRun] Shaped codepoints: conceal  (presentation: text/Text) (U+0063 U+006F U+006E U+0063 U+0065 U+0061 U+006C)
        with metrics: (206+0+0) (279+0+0) (272+0+0) (206+0+0) (216+0+0) (180+0+0) (265+0+0)
[text_shaper/open_shaper.cpp:673:shape] Shaping codepoints: U+63 U+63 U+68 U+61 U+72 U+3d U+26cf
        Using font: key=0, path="/usr/local/share/fonts/j/JetBrainsMono-Regular.ttf"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=2, path="/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=3, path="/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=4, path="/usr/share/fonts/truetype/dejavu/DejaVuSans-Oblique.ttf"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=5, path="/usr/share/fonts/truetype/dejavu/DejaVuSans-BoldOblique.ttf"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=6, path="/usr/share/fonts/type1/gsfonts/n019003l.pfb"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=7, path="/usr/share/fonts/truetype/tlwg/Loma.ttf"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=8, path="/usr/share/fonts/truetype/tlwg/Waree.ttf"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=9, path="/usr/share/fonts/truetype/tlwg/Laksaman.ttf"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=10, path="/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=11, path="/usr/share/fonts/truetype/droid/DroidSansFallbackFull.ttf"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=12, path="/usr/share/fonts/truetype/ttf-khmeros-core/KhmerOS.ttf"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=13, path="/usr/share/fonts/truetype/fonts-beng-extra/MuktiNarrow.ttf"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=14, path="/usr/share/fonts/truetype/fonts-gujr-extra/padmaa-Medium-0.5.ttf"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=15, path="/usr/share/fonts/truetype/fonts-gujr-extra/padmaa.ttf"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=16, path="/usr/share/fonts/truetype/fonts-gujr-extra/padmaa-Bold.1.1.ttf"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=17, path="/usr/share/fonts/truetype/lohit-bengali/Lohit-Bengali.ttf"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=18, path="/usr/share/fonts/truetype/lohit-gujarati/Lohit-Gujarati.ttf"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=19, path="/usr/share/fonts/truetype/lohit-tamil/Lohit-Tamil.ttf"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=20, path="/usr/share/fonts/truetype/malayalam/Meera.ttf"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=21, path="/usr/share/fonts/truetype/lohit-kannada/Lohit-Kannada.ttf"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=22, path="/usr/share/fonts/truetype/lohit-telugu/Lohit-Telugu.ttf"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=23, path="/usr/share/fonts/truetype/sinhala/lklug.ttf"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=24, path="/usr/share/fonts/truetype/freefont/FreeSans.ttf"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=25, path="/usr/share/fonts/truetype/freefont/FreeMono.ttf"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=26, path="/usr/share/fonts/truetype/freefont/FreeSerif.ttf"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=27, path="/usr/share/fonts/truetype/openoffice/opens___.ttf"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=28, path="/usr/share/fonts/truetype/tlwg/Norasi.ttf"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=29, path="/usr/share/fonts/truetype/kacst-one/KacstOne.ttf"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=30, path="/usr/share/fonts/opentype/font-awesome/FontAwesome.otf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=31, path="/usr/share/fonts/truetype/hack/Hack-Regular.ttf" size=14.0pt dpi=(96, 96) (22, 11, 18, -4, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=31, path="/usr/share/fonts/truetype/hack/Hack-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=32, path="/usr/share/fonts/truetype/padauk/Padauk-Regular.ttf" size=14.0pt dpi=(96, 96) (28, 0, 19, -9, -10, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=32, path="/usr/share/fonts/truetype/padauk/Padauk-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=33, path="/usr/share/fonts/truetype/lohit-devanagari/Lohit-Devanagari.ttf" size=14.0pt dpi=(96, 96) (35, 20, 21, -9, -7, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=33, path="/usr/share/fonts/truetype/lohit-devanagari/Lohit-Devanagari.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=34, path="/usr/share/fonts/truetype/dejavu/DejaVuMathTeXGyre.ttf" size=14.0pt dpi=(96, 96) (23, 7, 15, -3, -3, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=34, path="/usr/share/fonts/truetype/dejavu/DejaVuMathTeXGyre.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=35, path="/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf" size=14.0pt dpi=(96, 96) (22, 11, 18, -4, -1, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=35, path="/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=36, path="/usr/share/fonts/truetype/dejavu/DejaVuSerif.ttf" size=14.0pt dpi=(96, 96) (22, 11, 18, -4, -1, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=36, path="/usr/share/fonts/truetype/dejavu/DejaVuSerif.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=37, path="/usr/share/fonts/truetype/noto/NotoSansArmenian-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=37, path="/usr/share/fonts/truetype/noto/NotoSansArmenian-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=38, path="/usr/share/fonts/truetype/lato/Lato-Regular.ttf" size=14.0pt dpi=(96, 96) (23, 10, 19, -3, -1, 2)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=38, path="/usr/share/fonts/truetype/lato/Lato-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=39, path="/usr/share/fonts/truetype/tlwg/Sawasdee.ttf" size=14.0pt dpi=(96, 96) (31, 7, 22, -6, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=39, path="/usr/share/fonts/truetype/tlwg/Sawasdee.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=40, path="/usr/share/fonts/truetype/noto/NotoSans-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=40, path="/usr/share/fonts/truetype/noto/NotoSans-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=41, path="/usr/share/fonts/truetype/noto/NotoSerif-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=41, path="/usr/share/fonts/truetype/noto/NotoSerif-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=42, path="/usr/share/fonts/truetype/noto/NotoSansAdlam-Regular.ttf" size=14.0pt dpi=(96, 96) (22, 11, 18, -3, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=42, path="/usr/share/fonts/truetype/noto/NotoSansAdlam-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=43, path="/usr/share/fonts/truetype/noto/NotoSansAnatolianHieroglyphs-Regular.ttf" size=14.0pt dpi=(96, 96) (27, 11, 22, -4, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=43, path="/usr/share/fonts/truetype/noto/NotoSansAnatolianHieroglyphs-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=44, path="/usr/share/fonts/truetype/noto/NotoSansArabic-Regular.ttf" size=14.0pt dpi=(96, 96) (40, 11, 26, -13, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=44, path="/usr/share/fonts/truetype/noto/NotoSansArabic-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=45, path="/usr/share/fonts/truetype/noto/NotoSansAvestan-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=45, path="/usr/share/fonts/truetype/noto/NotoSansAvestan-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=46, path="/usr/share/fonts/truetype/noto/NotoSansBamum-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=46, path="/usr/share/fonts/truetype/noto/NotoSansBamum-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=47, path="/usr/share/fonts/truetype/noto/NotoSansBatak-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 9, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=47, path="/usr/share/fonts/truetype/noto/NotoSansBatak-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=48, path="/usr/share/fonts/truetype/noto/NotoSansBuhid-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=48, path="/usr/share/fonts/truetype/noto/NotoSansBuhid-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=49, path="/usr/share/fonts/truetype/noto/NotoSansCarian-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 9, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=49, path="/usr/share/fonts/truetype/noto/NotoSansCarian-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=50, path="/usr/share/fonts/truetype/noto/NotoSansChakma-Regular.ttf" size=14.0pt dpi=(96, 96) (28, 12, 22, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=50, path="/usr/share/fonts/truetype/noto/NotoSansChakma-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=51, path="/usr/share/fonts/truetype/noto/NotoSansCham-Regular.ttf" size=14.0pt dpi=(96, 96) (28, 11, 21, -6, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=51, path="/usr/share/fonts/truetype/noto/NotoSansCham-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=52, path="/usr/share/fonts/truetype/noto/NotoSansCherokee-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=52, path="/usr/share/fonts/truetype/noto/NotoSansCherokee-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=53, path="/usr/share/fonts/truetype/noto/NotoSansCuneiform-Regular.ttf" size=14.0pt dpi=(96, 96) (43, 11, 30, -12, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=53, path="/usr/share/fonts/truetype/noto/NotoSansCuneiform-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=54, path="/usr/share/fonts/truetype/noto/NotoSansCypriot-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=54, path="/usr/share/fonts/truetype/noto/NotoSansCypriot-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=55, path="/usr/share/fonts/truetype/noto/NotoSansDeseret-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=55, path="/usr/share/fonts/truetype/noto/NotoSansDeseret-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=56, path="/usr/share/fonts/truetype/noto/NotoSansDevanagari-Regular.ttf" size=14.0pt dpi=(96, 96) (25, 11, 17, -7, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=56, path="/usr/share/fonts/truetype/noto/NotoSansDevanagari-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=57, path="/usr/share/fonts/truetype/noto/NotoSansEgyptianHieroglyphs-Regular.ttf" size=14.0pt dpi=(96, 96) (31, 11, 25, -6, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=57, path="/usr/share/fonts/truetype/noto/NotoSansEgyptianHieroglyphs-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=58, path="/usr/share/fonts/truetype/noto/NotoSansEthiopic-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=58, path="/usr/share/fonts/truetype/noto/NotoSansEthiopic-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=59, path="/usr/share/fonts/truetype/noto/NotoSansGeorgian-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=59, path="/usr/share/fonts/truetype/noto/NotoSansGeorgian-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=60, path="/usr/share/fonts/truetype/noto/NotoSansGlagolitic-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 9, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=60, path="/usr/share/fonts/truetype/noto/NotoSansGlagolitic-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=61, path="/usr/share/fonts/truetype/noto/NotoSansImperialAramaic-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 9, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=61, path="/usr/share/fonts/truetype/noto/NotoSansImperialAramaic-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=62, path="/usr/share/fonts/truetype/noto/NotoSansInscriptionalPahlavi-Regular.ttf" size=14.0pt dpi=(96, 96) (27, 11, 20, -6, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=62, path="/usr/share/fonts/truetype/noto/NotoSansInscriptionalPahlavi-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=63, path="/usr/share/fonts/truetype/noto/NotoSansInscriptionalParthian-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=63, path="/usr/share/fonts/truetype/noto/NotoSansInscriptionalParthian-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=64, path="/usr/share/fonts/truetype/noto/NotoSansLao-Regular.ttf" size=14.0pt dpi=(96, 96) (31, 9, 23, -8, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=64, path="/usr/share/fonts/truetype/noto/NotoSansLao-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=65, path="/usr/share/fonts/truetype/noto/NotoSansLinearB-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=65, path="/usr/share/fonts/truetype/noto/NotoSansLinearB-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=66, path="/usr/share/fonts/truetype/noto/NotoSansLycian-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 9, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=66, path="/usr/share/fonts/truetype/noto/NotoSansLycian-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=67, path="/usr/share/fonts/truetype/noto/NotoSansLydian-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 9, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=67, path="/usr/share/fonts/truetype/noto/NotoSansLydian-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=68, path="/usr/share/fonts/truetype/noto/NotoSansMandaic-Regular.ttf" size=14.0pt dpi=(96, 96) (22, 11, 14, -7, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=68, path="/usr/share/fonts/truetype/noto/NotoSansMandaic-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=69, path="/usr/share/fonts/truetype/noto/NotoSansNKo-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=69, path="/usr/share/fonts/truetype/noto/NotoSansNKo-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=70, path="/usr/share/fonts/truetype/noto/NotoSansNewTaiLue-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=70, path="/usr/share/fonts/truetype/noto/NotoSansNewTaiLue-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=71, path="/usr/share/fonts/truetype/noto/NotoSansOlChiki-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=71, path="/usr/share/fonts/truetype/noto/NotoSansOlChiki-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=72, path="/usr/share/fonts/truetype/noto/NotoSansOldItalic-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=72, path="/usr/share/fonts/truetype/noto/NotoSansOldItalic-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=73, path="/usr/share/fonts/truetype/noto/NotoSansOldSouthArabian-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 9, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=73, path="/usr/share/fonts/truetype/noto/NotoSansOldSouthArabian-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=74, path="/usr/share/fonts/truetype/noto/NotoSansOldTurkic-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=74, path="/usr/share/fonts/truetype/noto/NotoSansOldTurkic-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=75, path="/usr/share/fonts/truetype/noto/NotoSansOsage-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=75, path="/usr/share/fonts/truetype/noto/NotoSansOsage-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=76, path="/usr/share/fonts/truetype/noto/NotoSansRunic-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=76, path="/usr/share/fonts/truetype/noto/NotoSansRunic-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=77, path="/usr/share/fonts/truetype/noto/NotoSansSamaritan-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 9, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=77, path="/usr/share/fonts/truetype/noto/NotoSansSamaritan-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=78, path="/usr/share/fonts/truetype/noto/NotoSansShavian-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 9, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=78, path="/usr/share/fonts/truetype/noto/NotoSansShavian-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=79, path="/usr/share/fonts/truetype/noto/NotoSansSinhala-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=79, path="/usr/share/fonts/truetype/noto/NotoSansSinhala-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=80, path="/usr/share/fonts/truetype/noto/NotoSansSymbols-Regular.ttf" size=14.0pt dpi=(96, 96) (39, 11, 28, -10, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=80, path="/usr/share/fonts/truetype/noto/NotoSansSymbols-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=81, path="/usr/share/fonts/truetype/noto/NotoSansSymbols2-Regular.ttf" size=14.0pt dpi=(96, 96) (32, 11, 20, -11, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=81, path="/usr/share/fonts/truetype/noto/NotoSansSymbols2-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=82, path="/usr/share/fonts/truetype/noto/NotoSansTamil-Regular.ttf" size=14.0pt dpi=(96, 96) (24, 11, 17, -6, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=82, path="/usr/share/fonts/truetype/noto/NotoSansTamil-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=83, path="/usr/share/fonts/truetype/noto/NotoSansTifinagh-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=83, path="/usr/share/fonts/truetype/noto/NotoSansTifinagh-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=84, path="/usr/share/fonts/truetype/noto/NotoSansYi-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 8, 20, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=84, path="/usr/share/fonts/truetype/noto/NotoSansYi-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=85, path="/usr/share/fonts/truetype/tibetan-machine/TibetanMachineUni.ttf" size=14.0pt dpi=(96, 96) (38, 12, 23, -14, -3, 2)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=85, path="/usr/share/fonts/truetype/tibetan-machine/TibetanMachineUni.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=86, path="/usr/share/fonts/truetype/abyssinica/AbyssinicaSIL-R.ttf" size=14.0pt dpi=(96, 96) (24, 19, 16, -2, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=86, path="/usr/share/fonts/truetype/abyssinica/AbyssinicaSIL-R.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=87, path="/usr/share/fonts/truetype/fonts-telu-extra/Pothana2000.ttf" size=14.0pt dpi=(96, 96) (33, 12, 17, -15, -16, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=87, path="/usr/share/fonts/truetype/fonts-telu-extra/Pothana2000.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=88, path="/usr/share/fonts/opentype/firacode/FiraCode-Regular.otf" size=14.0pt dpi=(96, 96) (23, 11, 18, -4, -1, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=88, path="/usr/share/fonts/opentype/firacode/FiraCode-Regular.otf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=89, path="/usr/share/fonts/truetype/fonts-deva-extra/chandas1-2.ttf" size=14.0pt dpi=(96, 96) (48, 19, 29, -18, -18, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=89, path="/usr/share/fonts/truetype/fonts-deva-extra/chandas1-2.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=90, path="/usr/share/fonts/truetype/pagul/Pagul.ttf" size=14.0pt dpi=(96, 96) (22, 9, 17, -4, -2, 2)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=90, path="/usr/share/fonts/truetype/pagul/Pagul.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=91, path="/usr/share/fonts/truetype/noto/NotoSansJavanese-Regular.ttf" size=14.0pt dpi=(96, 96) (31, 11, 20, -10, -1, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=91, path="/usr/share/fonts/truetype/noto/NotoSansJavanese-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=92, path="/usr/share/fonts/truetype/noto/NotoSansKaithi-Regular.ttf" size=14.0pt dpi=(96, 96) (29, 11, 21, -7, 0, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=92, path="/usr/share/fonts/truetype/noto/NotoSansKaithi-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=93, path="/usr/share/fonts/truetype/noto/NotoSansLimbu-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -2, 2)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=93, path="/usr/share/fonts/truetype/noto/NotoSansLimbu-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=94, path="/usr/share/fonts/truetype/noto/NotoSansRejang-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -1, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=94, path="/usr/share/fonts/truetype/noto/NotoSansRejang-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=95, path="/usr/share/fonts/truetype/noto/NotoSansSundanese-Regular.ttf" size=14.0pt dpi=(96, 96) (27, 11, 20, -6, -1, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=95, path="/usr/share/fonts/truetype/noto/NotoSansSundanese-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=96, path="/usr/share/fonts/truetype/noto/NotoSansMeeteiMayek-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -1, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=96, path="/usr/share/fonts/truetype/noto/NotoSansMeeteiMayek-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=97, path="/usr/share/fonts/truetype/noto/NotoSansMongolian-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -1, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=97, path="/usr/share/fonts/truetype/noto/NotoSansMongolian-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=98, path="/usr/share/fonts/truetype/noto/NotoSansSylotiNagri-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, 0, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=98, path="/usr/share/fonts/truetype/noto/NotoSansSylotiNagri-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=99, path="/usr/share/fonts/truetype/noto/NotoSansSyriacEastern-Regular.ttf" size=14.0pt dpi=(96, 96) (25, 11, 18, -7, -1, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=99, path="/usr/share/fonts/truetype/noto/NotoSansSyriacEastern-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=100, path="/usr/share/fonts/truetype/noto/NotoSansTagbanwa-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -1, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=100, path="/usr/share/fonts/truetype/noto/NotoSansTagbanwa-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=101, path="/usr/share/fonts/truetype/noto/NotoSansTaiTham-Regular.ttf" size=14.0pt dpi=(96, 96) (30, 11, 20, -9, -1, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=101, path="/usr/share/fonts/truetype/noto/NotoSansTaiTham-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=102, path="/usr/share/fonts/truetype/noto/NotoSansBalinese-Regular.ttf" size=14.0pt dpi=(96, 96) (34, 11, 20, -13, 0, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=102, path="/usr/share/fonts/truetype/noto/NotoSansBalinese-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=103, path="/usr/share/fonts/truetype/noto/NotoSansBrahmi-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 9, 20, -5, -1, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=103, path="/usr/share/fonts/truetype/noto/NotoSansBrahmi-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=104, path="/usr/share/fonts/truetype/noto/NotoSansCoptic-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -1, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=104, path="/usr/share/fonts/truetype/noto/NotoSansCoptic-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=105, path="/usr/share/fonts/truetype/noto/NotoSansKharoshthi-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -1, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=105, path="/usr/share/fonts/truetype/noto/NotoSansKharoshthi-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=106, path="/usr/share/fonts/truetype/noto/NotoSansLepcha-Regular.ttf" size=14.0pt dpi=(96, 96) (28, 11, 20, -7, 0, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=106, path="/usr/share/fonts/truetype/noto/NotoSansLepcha-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=107, path="/usr/share/fonts/truetype/noto/NotoSansPhagsPa-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, 0, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=107, path="/usr/share/fonts/truetype/noto/NotoSansPhagsPa-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=108, path="/usr/share/fonts/truetype/noto/NotoSansTagalog-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -1, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=108, path="/usr/share/fonts/truetype/noto/NotoSansTagalog-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=109, path="/usr/share/fonts/truetype/noto/NotoSansTaiViet-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 20, -5, -1, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=109, path="/usr/share/fonts/truetype/noto/NotoSansTaiViet-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=110, path="/usr/share/fonts/truetype/noto/NotoSansTibetan-Regular.ttf" size=14.0pt dpi=(96, 96) (40, 11, 23, -17, 0, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=110, path="/usr/share/fonts/truetype/noto/NotoSansTibetan-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=111, path="/usr/share/fonts/truetype/noto/NotoSerifKannada-Regular.ttf" size=14.0pt dpi=(96, 96) (32, 11, 18, -13, -1, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=111, path="/usr/share/fonts/truetype/noto/NotoSerifKannada-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=112, path="/usr/share/fonts/truetype/noto/NotoSerifMalayalam-Regular.ttf" size=14.0pt dpi=(96, 96) (26, 11, 17, -9, -1, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=112, path="/usr/share/fonts/truetype/noto/NotoSerifMalayalam-Regular.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=113, path="/usr/share/fonts/opentype/malayalam/Manjari-Regular.otf" size=14.0pt dpi=(96, 96) (21, 6, 14, -6, -5, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=113, path="/usr/share/fonts/opentype/malayalam/Manjari-Regular.otf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=114, path="/usr/local/share/fonts/j/JetBrains_Mono_Regular_Nerd_Font_Complete.ttf" size=14.0pt dpi=(96, 96) (23, 11, 19, -4, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=114, path="/usr/local/share/fonts/j/JetBrains_Mono_Regular_Nerd_Font_Complete.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=115, path="/usr/share/fonts/truetype/lao/Phetsarath_OT.ttf" size=14.0pt dpi=(96, 96) (28, 0, 20, -7, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=115, path="/usr/share/fonts/truetype/lao/Phetsarath_OT.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=116, path="/usr/share/fonts/truetype/ubuntu/Ubuntu-C.ttf" size=14.0pt dpi=(96, 96) (22, 10, 18, -3, -3, 2)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=116, path="/usr/share/fonts/truetype/ubuntu/Ubuntu-C.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=117, path="/usr/share/fonts/truetype/ubuntu/Ubuntu-R.ttf" size=14.0pt dpi=(96, 96) (22, 10, 18, -3, -3, 2)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=117, path="/usr/share/fonts/truetype/ubuntu/Ubuntu-R.ttf"
[text_shaper/open_shaper.cpp:531:get_font_key_for] Loading font: key=118, path="/usr/share/fonts/truetype/samyak/Samyak-Devanagari.ttf" size=14.0pt dpi=(96, 96) (26, 8, 19, -5, -2, 1)
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=118, path="/usr/share/fonts/truetype/samyak/Samyak-Devanagari.ttf"
[text_shaper/open_shaper.cpp:700:shape] Try fallback font: key=1, path="/usr/share/fonts/truetype/noto/NotoColorEmoji.ttf"
[text_shaper/open_shaper.cpp:704:shape] Shaping failed.
[terminal_renderer/TextRenderer.cpp:251:shapeRun] Shaped codepoints: cchar=⛏  (presentation: text/Text) (U+0063 U+0063 U+0068 U+0061 U+0072 U+003D U+26CF)
        with metrics: (206+0+0) (206+0+0) (243+0+0) (180+0+0) (308+0+0) (723+0+0) (0+0+0)
[terminal_renderer/TextRenderer.cpp:346:getTextureInfo] Glyph metrics: rasterized_glyph(0, 9x6+9+1, 0)
[terminal_renderer/TextRenderer.cpp:417:getTextureInfo] insert glyph 723: text; ratio:1.0; yOverflow(0, 0); rasterized_glyph(0, 9x6+9+1, 0)
[terminal_renderer/TextRenderer.cpp:346:getTextureInfo] Glyph metrics: rasterized_glyph(0, 9x14+14+1, 0)
[terminal_renderer/TextRenderer.cpp:417:getTextureInfo] insert glyph 0: text; ratio:1.0; yOverflow(0, 0); rasterized_glyph(0, 9x14+14+1, 0)
[text_shaper/open_shaper.cpp:673:shape] Shaping codepoints: U+32 U+2e U+36 U+37
        Using font: key=0, path="/usr/local/share/fonts/j/JetBrainsMono-Regular.ttf"
[terminal_renderer/TextRenderer.cpp:251:shapeRun] Shaped codepoints: 2.67  (presentation: text/Text) (U+0032 U+002E U+0036 U+0037)
        with metrics: (541+0+0) (574+0+0) (545+0+0) (546+0+0)
[text_shaper/open_shaper.cpp:673:shape] Shaping codepoints: U+31 U+32 U+3a U+31 U+39 U+3a U+35 U+33
        Using font: key=0, path="/usr/local/share/fonts/j/JetBrainsMono-Regular.ttf"
[terminal_renderer/TextRenderer.cpp:251:shapeRun] Shaped codepoints: 12:19:53  (presentation: text/Text) (U+0031 U+0032 U+003A U+0031 U+0039 U+003A U+0035 U+0033)
        with metrics: (540+0+0) (541+0+0) (576+0+0) (540+0+0) (548+0+0) (576+0+0) (544+0+0) (542+0+0)
[contour/TerminalWidget.cpp:897:keyPressEvent] text:, seq:, seqEmpty?:true, key:0x1000023, mod:0x8000000, keySeq[0]:0