A collection of scripts
at main 5.1 kB view raw
1#!/bin/sh 2# Script to preview fonts 3 4usage() { 5 printf '%b\n' "${0##*/} [-F FILE | -S | -t STRING] [OPTIONS]" \ 6 "actions:" \ 7 "\t-F FILE - read from file" \ 8 "\t-S - read from stdin" \ 9 "\t-t STRING - use a string" \ 10 "\noptions:" \ 11 "\t-b SIZE - border size" \ 12 "\t-c COLORS - set the color of the text and background" \ 13 "\t-f FONT - which font to preview" \ 14 "\t-h - display this message" \ 15 "\t-i - generate the inverse image (horizontal, vertical, none)" \ 16 "\t-o FILE - output file for the generated image" \ 17 "\t-s SIZE - size of the font" \ 18 "\ndefault values:" \ 19 "These values can be set before execution to change default values" \ 20 "\tPREFON_ACTION=text (file, stdin, or text)" \ 21 "\tPREFON_BORDER_SIZE=16" \ 22 "\tPREFON_COLORS=\"000000,ffffff\"" \ 23 "\tPREFON_FONT=\"monospace\"" \ 24 "\tPREFON_OUTPUT=\"/tmp/prefon.png\"" \ 25 "\tPREFON_SIZE=16" \ 26 "\tPREFON_TEXT=\"The quick brown fox jumps\\\n over the lazy dog\"" \ 27 "\tPREFON_INVERSE=vertical (horizontal, vertical, none)" 28} 29 30info() { 31 case $1 in 32 i ) prefix=INFO ;; 33 w ) prefix=WARNING ;; 34 e ) prefix=ERROR ;; 35 * ) printf '%s\n' "sus!" 1>&2; exit 1 ;; 36 esac; shift 37 38 printf "${0##*/}: $prefix: %b\n" "$*" 1>&2 39} 40 41# Default values 42PREFON_ACTION=${PREFON_ACTION:-text} 43PREFON_BORDER_SIZE=${PREFON_BORDER_SIZE:-16} 44PREFON_COLORS=${PREFON_COLORS:-000000,ffffff} 45PREFON_FONT="${PREFON_FONT:-monospace}" 46PREFON_OUTPUT="${PREFON_OUTPUT:-/tmp/prefon.png}" 47PREFON_SIZE=${PREFON_SIZE:-16} 48PREFON_TEXT="${PREFON_TEXT:-The quick brown fox jumps\n over the lazy dog}" 49PREFON_INVERSE=${PREFON_WITHOUT_INVERSE:-vertical} 50 51# Handle arguments 52while [ "$*" ] 53do 54 case $1 in 55 - ) shift; continue ;; 56 -- ) shift; break ;; 57 -* ) flag=${1#-}; shift ;; 58 * ) shift; continue ;; 59 esac 60 61 while [ "$flag" ] 62 do 63 arg=${flag%${flag#?}} 64 65 case $arg in 66 F ) PREFON_ACTION="file"; PREFON_FILE=$1; shift ;; 67 S ) PREFON_ACTION=stdin; PREFON_FILE=/dev/stdin ;; 68 b ) PREFON_BORDER_SIZE=$1; shift ;; 69 c ) PREFON_COLORS=$1; shift ;; 70 f ) PREFON_FONT=$1; shift ;; 71 h ) usage; exit 0 ;; 72 i ) PREFON_INVERSE=$1; shift ;; 73 o ) PREFON_OUTPUT=$1; shift ;; 74 s ) PREFON_SIZE=$1; shift ;; 75 t ) PREFON_ACTION=text; PREFON_TEXT=$1; shift ;; 76 * ) printf '%s\n' "${0##*/}: -$arg: invalid argument" 1>&2 77 usage 1>&2; exit 1 ;; 78 esac 79 80 flag=${flag#?} 81 done 82done 83 84_gen_img() { 85 convert -background "#$2" -bordercolor "#$2" -border "$PREFON_BORDER_SIZE" \ 86 pango:"<span foreground=\"#$1\" font_desc=\"$PREFON_FONT $PREFON_SIZE\">$4</span>" "$3" 87} 88 89_output_file() { 90 while IFS= read -r line 91 do printf '%s\n' "$line" 92 done < "$PREFON_FILE" 93} 94 95generate_image() { 96 fgcolor=${PREFON_COLORS%,*} 97 bgcolor=${PREFON_COLORS#*,} 98 99 _gen_img "$fgcolor" "$bgcolor" "$PREFON_OUTPUT" "$1" || { 100 info e failed to generate image 101 exit 1 102 } 103 104 [ "$PREFON_INVERSE" != "none" ] && { 105 inverse="${PREFON_OUTPUT%.*}" 106 inverse="${inverse}-inverse.${PREFON_OUTPUT##*.}" 107 108 _gen_img "$bgcolor" "$fgcolor" "$inverse" "$1" || { 109 info e failed to generate image 110 exit 1 111 } 112 113 case $PREFON_INVERSE in 114 horizontal ) convert "$PREFON_OUTPUT" "$inverse" +append "$PREFON_OUTPUT" \ 115 || { info e failed to generate image; exit 1; } ;; 116 vertical ) convert "$PREFON_OUTPUT" "$inverse" -append "$PREFON_OUTPUT" \ 117 || { info e failed to generate image; exit 1; } ;; 118 * ) info e "${PREFON_INVERSE}: is not a valid value for PREFON_INVERSE" 119 exit 1 ;; 120 esac 121 122 rm "$inverse" || info w failed to remove temporary file: "${inverse}" 123 } 124 125 printf '%s\n' "$PREFON_OUTPUT" 126} 127 128read_input() { 129 input="$(_output_file)" 130 generate_image "$input" 131} 132 133case $PREFON_ACTION in 134 file ) 135 [ -e "$PREFON_FILE" ] || { info e "'$PREFON_FILE' does not exist"; exit 1; } 136 read_input 137 ;; 138 stdin ) 139 [ -e /dev/stdin ] || { info e "/dev/stdin does not exist"; exit 1; } 140 read_input 141 ;; 142 text ) 143 [ "$PREFON_TEXT" ] || { info e "string not provided"; exit 1; } 144 generate_image "$PREFON_TEXT" 145 ;; 146 * ) info e invalid action: $PREFON_ACTION; exit 1 ;; 147esac