Если вы хотите выполнять арифметику с плавающей запятой, вам нужно переключиться на ksh93, zsh или yash (или fish
, если вы готовы уйти от Борна -, как оболочки ), bash
их не поддерживает.
Для синтаксиса, совместимого со всеми 3 оболочками:
max() {
[ "$#" -gt 0 ] || return
typeset i max="$1"; shift
for i do
if [ "$((i > max))" -ne 0 ]; then
max=$i
fi
done
printf '%s\n' "$max"
}
array=(12.5 6.2 nan 0xfff -inf inf -1e12 1e20)
max "${array[@]}"
(вам нужна последняя версия zsh
для поддержки inf
/ nan
. Варианты регистра поддерживаются во всех 3 (INF
, NaN
, Inf
... ), но только yash
поддерживает альтернативные варианты написания, такие как Infinity
; Типы номеров 0x12p34
еще не поддерживаются zsh
.Имейте в виду, что 010
означает 10 или 8, зависит от оболочки и ее конфигурации )
После долгого изучения поведения fontconfig и браузеров я узнал об этих моментах:
Fontconfig — сравнительно небольшая, но сложная программа. Он имеет алгоритм, который подбирает лучший шрифт для заданных условий и параметров рендеринга. Эти условия и параметры вместе известны как «шаблоны».
Существует несколько характеристик шрифта, и разные шрифты также могут иметь некоторые общие характеристики. Таким образом, выбирая шрифты для данного шаблона,все шрифты в системах должны быть проверены на предмет их актуальности. Некоторые шрифты имеют некоторые характеристики, перекрывающие другие. Например. некоторые шрифты могут иметь поддержку Unicode для экзотических шрифтов/символов, но могут иметь низкое качество прорисовки. В то же время некоторые шрифты могут иметь поддержку Unicode сравнительно меньшего количества шрифтов/символов, но иметь хорошее качество прорисовки. В таком случае fontconfig пытается отдать предпочтение шрифту, который с большей вероятностью будет отображать данный набор символов, и может фактически игнорировать качество прорисовки. Таким образом, мы просто не можем гарантировать результаты fontconfig, потому что они больше зависят от самих файлов шрифтов и запросов конкретных требований приложения. Наконец, как пользователи, мы всегда знаем, какой шрифт подходит для данного случая. Но fontconfig этого не знает. Очевидно, он не может узнать об эстетике, качестве и ошибках в шрифте. Он просто видит каждый шрифт как шрифт.
Некоторые приложения, такие как браузеры и пакеты графического дизайна, также могут использовать свои собственные шаблоны и шрифты, если захотят. В этом случае они могут запросить fontconfig или вести себя самостоятельно.
Мы можем воспроизвести приоритетное поведение fontconfig в разных системах, но эти системы должны иметь точно такие же версии файлов шрифтов, файлов конфигурации и среды рендеринга. В противном случае, если какой-либо файл шрифта имеет обновленные метрики или данные скрипта/языка, он может быть предпочтительнее другого.
Всегда лучше установить собственный файл fonts.conf в вашем домашнем каталоге, чтобы помочь fontconfig сопоставить правильный шрифт, если он этого не сделает.
Подробнее здесь:https://www.freedesktop.org/software/fontconfig/fontconfig-user.html