![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Досліди моноспейсних шрифтів
Не пам'ятаю як, але натрапив вчора на Торвальдське ріпо з його
текстовим редактором, яким, окрім нього, користується ніхто. Цікавого
ув ріпо було небагато, якщо не рахувати файла з назвою
UTF-8-demo.txt
.
Кроум рендерить його майже коректно за вийнятком блоку з формулами. Імакс робить так само, але додатково інкоректно вишиковує судоґрафіку.
Близький до ідеального рендерінґ роблять xterm, gvim та gedit.
(Це є векторний скріншота, який можна зробити через завдяки за допомогою спеціяльного плагіну libgtk-vector-screenshot.so; на жаль, лише для gtk3.)
Якщо придивитися до символів, видно що все перелічені аплікації шукають ґліфи, яких немає ув поточному шрифті, деінде. На федорі, кроумівські дівелопер тулз доповідають список використаних шрифтів так:
Liberation Mono — Local file (5,438 glyphs)
DejaVu Sans — Local file (1,179 glyphs)
Droid Sans Thai — Local file (415 glyphs)
Droid Sans Ethiopic — Local file (320 glyphs)
Segoe UI Historic — Local file (45 glyphs)
Noto Sans Math — Local file (7 glyphs)
Droid Sans Fallback — Local file (5 glyphs)
Segoe UI Symbol — Local file (1 glyph)
Noto Color Emoji — Local file (1 glyph)
Times New Roman — Local file (1 glyph)
де Liberation Mono--мій основний діфолтний моноспейсний шрифт.
Я захотів перевірити чи є у мене інстальваний шрифта, який має, якщо
не весь, то хоча би значний сабсет UTF-8-demo.txt
. Як змусити
cairo+pango+harfbuzz+fontconfig не робити font fallback я не знаю
(життя є занадто коротким), але можна взяти pandoc, який по діфолту
таких фокусів не знає.
Ось ця шелівська хфункція конфертує текста ув pdf:
# input output font
txt2pdf() {
awk '{print " " $0}' < "${1:-/dev/null}" | pandoc --pdf-engine=xelatex \
-V "monofont:${3:-Roboto Mono}" -V "mainfont:${3:-Roboto Mono}" \
-V geometry:"top=1cm,left=1cm,bottom=1.5cm,right=1cm" \
-t pdf -o "${2:-${1%.*}.pdf}"
}
(Так, воно змушує pandoc думати шо інпута є маркдаун.)
Тоді після
$ txt2pdf UTF-8-demo.txt lol.pdf 'Ubuntu Mono'
видно, що контемпоральний стиль шрифта Убунту, який не лише contains characteristics unique to the Ubuntu brand, але також conveys a precise, reliable and free attitude, натрапляє на деякі труднощі, щоб не сказати вульгарніше.
ОК, отримати увесь список моноспейсних шрифтів можна за допомогою fontconfig:
$ type fc.mono
fc.mono is aliased to `fc-list :mono family | awk -F, "{print \$1}" | sort -u'
$ fc.mono
Bitstream Vera Sans Mono
Courier 10 Pitch
Courier New
Cursor
DejaVu Sans Mono
Droid Sans Mono
Inconsolata
Liberation Mono
Ligconsolata
Material Icons
Material Icons Outlined
Material Icons Round
Material Icons Sharp
Material Icons Two Tone
Nimbus Mono PS
Noto Color Emoji
Source Code Pro
Terminus
Ubuntu Mono
(Тут має бути також Roboto Mono v2, але.)
Тоді
$ (IFS=$'\n'; for fn in `fc.mono`; do txt2pdf UTF-8-demo.txt "$fn".pdf "$fn"; done)
$ ls *pdf -1
'Bitstream Vera Sans Mono.pdf'
'Courier New.pdf'
'DejaVu Sans Mono.pdf'
'Droid Sans Mono.pdf'
Inconsolata.pdf
'Liberation Mono.pdf'
Ligconsolata.pdf
'Nimbus Mono PS.pdf'
'Source Code Pro.pdf'
'Ubuntu Mono.pdf'
з яких 'DejaVu Sans Mono.pdf' має найкращий результат. Цього всього можна було не робити, а замість того спитати чатджипіті, який на питання 'Which monospace font can render all glyphs from the famous "UTF-8-demo.txt" file?' відповів 'One such font is DejaVu Sans Mono', падлюка.
Якби це був сучасний блоґ, тобто канадійський ютубний ченел як у всіх нормальний людей, я би додав "напешіть ув коментс ЯКИЙ ВАШ ШРИФТА є найюлюбленіший, ЯК У ВАС рендериться ПІДІЕФ, яку думку маєте!"