#!/bin/bash . setenv.sh if [ -z "$PICCREATE" ]; then echo "please source the environment" exit 1 fi O_ARGS=0 E_OPTERROR=85 USAGE="create a jpg file with the purl inside Usage: `basename $0` [-hie] -i id -e extract Examples: to test the glyph later with inkscape: `basename $0` -i ../in/buchstabe_a.svg to extract the points and text from the glyph: `basename $0` -i ../in/buchstabe_a.svg -e " while getopts "i:eu:" Option do case $Option in i) ID=$OPTARG;; e) EXTRACT=1;; *) echo "$USAGE" >&2; exit 1; # Default. esac done shift $(($OPTIND - 1)) if [ -z $ID ] ; then echo "-> no id/filename given" echo "$USAGE" >&2 exit 1 fi if [ -z "$ID" ]; then echo "please give a .svg file of a glyph as input" echo "$USAGE" >&2 exit 1 fi if [ -s "$ID" ]; then export BASE=`basename $ID .svg` export GLYPH=$PICCREATE_OUT/$BASE.svg export CONFIG=$PICCREATE_OUT/$BASE.cfg else echo "input file does not exist" echo "$USAGE" >&2 exit 1 fi # extrahiere die wichtigen Zeilen aus dem Font cat $ID | egrep '<\|x1|x2|y1|y2|/>|style' | egrep -v '\|id=|http:' > line-$BASE.svg cat $ID | egrep 'circle|translate|\' > circles-$BASE.svg cat $ID | egrep '<\>|\=|\=|tspan|style|preserve' | egrep -v '\|\=' > text-$BASE.svg # reduziere einige Zeilen um bestimmte Muster cat line-$BASE.svg | sed -e 's/inkscape:transform-center-x=".*"//g' > $$; mv $$ line-$BASE.svg cat line-$BASE.svg | sed -e 's/inkscape:transform-center-y=".*"//g' > $$; mv $$ line-$BASE.svg cat text-$BASE.svg | sed -e 's/inkscape:transform-center-x=".*"//g' > $$; mv $$ text-$BASE.svg cat text-$BASE.svg | sed -e 's/inkscape:transform-center-y=".*"//g' > $$; mv $$ text-$BASE.svg cat circles-$BASE.svg | sed -e 's/inkscape:transform-center-x=".*"//g' > $$; mv $$ circles-$BASE.svg cat circles-$BASE.svg | sed -e 's/inkscape:transform-center-y=".*"//g' > $$; mv $$ circles-$BASE.svg # den eventuell alten Buchstaben vorher wegschmeissen rm -f $GLYPH if [ -z "$EXTRACT" ]; then # schreib einen kompletten neuen Buchstaben zum testen echo '' >> $GLYPH cat text-$BASE.svg >> $GLYPH cat circles-$BASE.svg >> $GLYPH cat line-$BASE.svg >> $GLYPH echo '' >> $GLYPH else # schreib nur das extract zur Verwertung als Font in die Ausgabe #echo '' >> $GLYPH echo '' >> $GLYPH cat text-$BASE.svg >> $GLYPH cat circles-$BASE.svg >> $GLYPH cat line-$BASE.svg >> $GLYPH echo '' >> $GLYPH fi rm line-$BASE.svg rm circles-$BASE.svg rm text-$BASE.svg ## alle Zusatzinfos zum Buchstaben rausholen XCOORDS=./xcoords # hole das Minium und Maxium der X-Koordinaten um die Schrittweite des Buchstabens zu bestimmen # zuerst aus den Texten cat $GLYPH | egrep "\=" | sed "s/^\s\+//g;s/x=//g;s/\"//g" > $XCOORDS # dann aus Kreisen cat $GLYPH | egrep -v '> $XCOORDS # dann aus den Linien cat $GLYPH | grep x1= | sed "s/^\s\+//g;s/x1=//g;s/\"//g" >> $XCOORDS cat $GLYPH | grep x2= | sed "s/^\s\+//g;s/x2=//g;s/\"//g" >> $XCOORDS # sortiere die Koordinaten numerisch cat $XCOORDS | sort -g | uniq > $$ ; mv $$ $XCOORDS; XMAX=`tail -n 1 $XCOORDS` XMIN=`head -n 1 $XCOORDS` rm $XCOORDS YCOORDS=./ycoords # hole das Minium und Maxium der Y-Koordinaten um die Schrittweite des Buchstabens zu bestimmen # zuerst aus den Texten cat $GLYPH | grep y= | sed "s/^\s\+//g;s/y=//g;s/\"//g" > $YCOORDS # dann aus Kreisen cat $GLYPH | egrep -v '> $YCOORDS # dann aus den Linien cat $GLYPH | grep y1= | sed "s/^\s\+//g;s/y1=//g;s/\"//g" >> $YCOORDS cat $GLYPH | grep y2= | sed "s/^\s\+//g;s/y2=//g;s/\"//g" >> $YCOORDS # sortiere die Koordinaten numerisch cat $YCOORDS | sort -g | uniq > $$ ; mv $$ $YCOORDS; YMAX=`tail -n 1 $YCOORDS` YMIN=`head -n 1 $YCOORDS` rm $YCOORDS XSTEP=`echo "$XMAX-$XMIN" | bc` YSTEP=`echo "$YMAX-$YMIN" | bc` # hole raus wieviele x1-n Muster zu ersetzen sind NPATTERN=`cat $GLYPH | egrep ">x[0-9]+<" | sed "s/.*\(x[0-9]\+\).*/\1/g" | wc -l` # ersetze die Muster von x1-xn durch Templatezeichen cat $GLYPH | sed "s/>\(x[0-9]\+\)\${\1} $$ ; mv $$ $GLYPH; ## und in die Buchstabenconfig schreiben rm -f $CONFIG echo [$BASE] >> $CONFIG echo "XSTEP=$XSTEP" >> $CONFIG echo "XMIN=$XMIN" >> $CONFIG echo "XMAX=$XMAX" >> $CONFIG echo "YSTEP=$YSTEP" >> $CONFIG echo "YMIN=$YMIN" >> $CONFIG echo "YMAX=$YMAX" >> $CONFIG echo "NPATTERN=$NPATTERN" >> $CONFIG echo "FILENAME=$BASE.svg" >> $CONFIG echo "#" >> $CONFIG