- Fontconfig aus svgs extrahiert und form definiert

This commit is contained in:
Michael Stangl
2012-07-26 11:38:58 +02:00
parent 8f091245f1
commit 62b7b697c5
66 changed files with 7683 additions and 560 deletions
+75 -14
View File
@@ -24,7 +24,7 @@ while getopts "i:eu:" Option
do
case $Option in
i) ID=$OPTARG;;
e) EXTRACT=$OPTARG;;
e) EXTRACT=1;;
*) echo "$USAGE" >&2; exit 1; # Default.
esac
done
@@ -44,7 +44,8 @@ if [ -z "$ID" ]; then
fi
if [ -s "$ID" ]; then
export BASE=`basename $ID .svg`
export TARGET=$PICCREATE_OUT/$BASE.svg
export GLYPH=$PICCREATE_OUT/$BASE.svg
export CONFIG=$PICCREATE_OUT/$BASE.cfg
else
echo "input file does not exist"
echo "$USAGE" >&2
@@ -57,29 +58,89 @@ cat $ID | egrep 'circle|translate|\<r\>' >
cat $ID | egrep '<\<text|text\>>|\<x\>=|\<y\>=|tspan|style|preserve' | egrep -v '\<transform-center-x\>|\<window-|\<id\>=' > 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 text-$BASE.svg | sed -e 's/inkscape:transform-center-y=".*"//g' > $$; mv $$ text-$BASE.svg
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 '<svg xmlns="http://www.w3.org/2000/svg" version="1.1">' > $TARGET
cat text-$BASE.svg >> $TARGET
cat circles-$BASE.svg >> $TARGET
cat line-$BASE.svg >> $TARGET
echo '</svg>' >> $TARGET
echo '<svg xmlns="http://www.w3.org/2000/svg" version="1.1">' >> $GLYPH
cat text-$BASE.svg >> $GLYPH
cat circles-$BASE.svg >> $GLYPH
cat line-$BASE.svg >> $GLYPH
echo '</svg>' >> $GLYPH
else
# schreib nur das extract zur Verwertung als Font in die Ausgabe
touch $TARGET
cat text-$BASE.svg >> $TARGET
cat circles-$BASE.svg >> $TARGET
cat line-$BASE.svg >> $TARGET
echo '<g translate(${posx},${posy})>' >> $GLYPH
cat text-$BASE.svg >> $GLYPH
cat circles-$BASE.svg >> $GLYPH
cat line-$BASE.svg >> $GLYPH
echo '</g>' >> $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 | grep x= | sed "s/^\s\+//g;s/x=//g;s/\"//g" > $XCOORDS
# dann aus Kreisen
cat $GLYPH | egrep "transform=" | sed 's/^\s\+//g;s/translate//g;s/transform=//g;s/["|(|)]//g;s/,.*//g' >> $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 "transform=" | sed 's/^\s\+//g;s/translate//g;s/transform=//g;s/["|(|)]//g;s/.*,//g' >> $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`
## und in die Buchstabenconfig schreiben
rm -f $CONFIG
echo [$BASE.svg] >> $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 "#" >> $CONFIG