[Tux4kids-commits] r920 - in tuxtype/trunk: . doc po src

dbruce-guest at alioth.debian.org dbruce-guest at alioth.debian.org
Tue Mar 3 21:40:00 UTC 2009


Author: dbruce-guest
Date: 2009-03-03 21:40:00 +0000 (Tue, 03 Mar 2009)
New Revision: 920

Added:
   tuxtype/trunk/tuxtype_preview.spec.in
Modified:
   tuxtype/trunk/Makefile.in
   tuxtype/trunk/configure
   tuxtype/trunk/configure.ac
   tuxtype/trunk/doc/TODO
   tuxtype/trunk/po/ar.po
   tuxtype/trunk/po/as.po
   tuxtype/trunk/po/ca.po
   tuxtype/trunk/po/cs.po
   tuxtype/trunk/po/da.po
   tuxtype/trunk/po/de.po
   tuxtype/trunk/po/el.po
   tuxtype/trunk/po/en at boldquot.po
   tuxtype/trunk/po/en at quot.po
   tuxtype/trunk/po/en_GB.po
   tuxtype/trunk/po/es.po
   tuxtype/trunk/po/eu.po
   tuxtype/trunk/po/fr.po
   tuxtype/trunk/po/gu.po
   tuxtype/trunk/po/hi.po
   tuxtype/trunk/po/it.po
   tuxtype/trunk/po/ja.po
   tuxtype/trunk/po/kn.po
   tuxtype/trunk/po/lt.po
   tuxtype/trunk/po/ml.gmo
   tuxtype/trunk/po/ml.po
   tuxtype/trunk/po/nb.po
   tuxtype/trunk/po/ne.po
   tuxtype/trunk/po/nl.po
   tuxtype/trunk/po/nn.po
   tuxtype/trunk/po/or.po
   tuxtype/trunk/po/pt.po
   tuxtype/trunk/po/ru.po
   tuxtype/trunk/po/sv.po
   tuxtype/trunk/po/sw.po
   tuxtype/trunk/po/ta.po
   tuxtype/trunk/po/te.po
   tuxtype/trunk/po/tr.po
   tuxtype/trunk/po/tuxtype.pot
   tuxtype/trunk/po/wo.po
   tuxtype/trunk/src/SDL_extras.c
   tuxtype/trunk/src/SDL_extras.h
   tuxtype/trunk/src/alphabet.c
   tuxtype/trunk/src/funcs.h
   tuxtype/trunk/src/globals.h
   tuxtype/trunk/src/laser.c
   tuxtype/trunk/src/loaders.c
   tuxtype/trunk/src/main.c
   tuxtype/trunk/src/options.c
   tuxtype/trunk/src/pause.c
   tuxtype/trunk/src/playgame.c
   tuxtype/trunk/src/practice.c
   tuxtype/trunk/src/scripting.c
   tuxtype/trunk/src/setup.c
   tuxtype/trunk/src/theme.c
   tuxtype/trunk/src/titlescreen.c
   tuxtype/trunk/tuxtype.spec.in
Log:
move of SDL_ttf and SDL_Pango-specific code into SDL_extras.c/h - in progress



Modified: tuxtype/trunk/Makefile.in
===================================================================
--- tuxtype/trunk/Makefile.in	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/Makefile.in	2009-03-03 21:40:00 UTC (rev 920)
@@ -37,8 +37,8 @@
 subdir = .
 DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in $(srcdir)/config.h.in \
-	$(srcdir)/tuxtype.spec.in $(top_srcdir)/configure \
-	$(top_srcdir)/intl/Makefile.in \
+	$(srcdir)/tuxtype.spec.in $(srcdir)/tuxtype_preview.spec.in \
+	$(top_srcdir)/configure $(top_srcdir)/intl/Makefile.in \
 	$(top_srcdir)/nsis/tuxtype.nsi.in ABOUT-NLS AUTHORS COPYING \
 	ChangeLog INSTALL TODO config.guess config.rpath config.sub \
 	depcomp install-sh missing mkinstalldirs
@@ -66,7 +66,8 @@
  configure.lineno config.status.lineno
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
 CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES = tuxtype.spec intl/Makefile nsis/tuxtype.nsi
+CONFIG_CLEAN_FILES = tuxtype.spec tuxtype_preview.spec intl/Makefile \
+	nsis/tuxtype.nsi
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -315,6 +316,8 @@
 	-rm -f config.h stamp-h1
 tuxtype.spec: $(top_builddir)/config.status $(srcdir)/tuxtype.spec.in
 	cd $(top_builddir) && $(SHELL) ./config.status $@
+tuxtype_preview.spec: $(top_builddir)/config.status $(srcdir)/tuxtype_preview.spec.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
 intl/Makefile: $(top_builddir)/config.status $(top_srcdir)/intl/Makefile.in
 	cd $(top_builddir) && $(SHELL) ./config.status $@
 nsis/tuxtype.nsi: $(top_builddir)/config.status $(top_srcdir)/nsis/tuxtype.nsi.in

Modified: tuxtype/trunk/configure
===================================================================
--- tuxtype/trunk/configure	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/configure	2009-03-03 21:40:00 UTC (rev 920)
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61 for Tux Typing 1.7.4.preview.
+# Generated by GNU Autoconf 2.61 for Tux Typing 1.7.4.
 #
 # Report bugs to <tux4kids-tuxtype-dev at lists.alioth.debian.org>.
 #
@@ -574,8 +574,8 @@
 # Identity of this package.
 PACKAGE_NAME='Tux Typing'
 PACKAGE_TARNAME='tuxtype'
-PACKAGE_VERSION='1.7.4.preview'
-PACKAGE_STRING='Tux Typing 1.7.4.preview'
+PACKAGE_VERSION='1.7.4'
+PACKAGE_STRING='Tux Typing 1.7.4'
 PACKAGE_BUGREPORT='tux4kids-tuxtype-dev at lists.alioth.debian.org'
 
 ac_unique_file="src/playgame.c"
@@ -1286,7 +1286,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures Tux Typing 1.7.4.preview to adapt to many kinds of systems.
+\`configure' configures Tux Typing 1.7.4 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1357,7 +1357,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of Tux Typing 1.7.4.preview:";;
+     short | recursive ) echo "Configuration of Tux Typing 1.7.4:";;
    esac
   cat <<\_ACEOF
 
@@ -1469,7 +1469,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-Tux Typing configure 1.7.4.preview
+Tux Typing configure 1.7.4
 generated by GNU Autoconf 2.61
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1483,7 +1483,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by Tux Typing $as_me 1.7.4.preview, which was
+It was created by Tux Typing $as_me 1.7.4, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   $ $0 $@
@@ -2307,7 +2307,7 @@
 
 # Define the identity of the package.
  PACKAGE='tuxtype'
- VERSION='1.7.4.preview'
+ VERSION='1.7.4'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -17754,7 +17754,7 @@
 # Create Makefiles
 # ---------------------------------------------------------------
 
-ac_config_files="$ac_config_files Makefile tuxtype.spec data/Makefile data/fonts/Makefile data/images/Makefile data/images/backgrounds/Makefile data/images/cities/Makefile data/images/comets/Makefile data/images/hands/Makefile data/images/icons/Makefile data/images/keyboard/Makefile data/images/menu/Makefile data/images/status/Makefile data/images/tux/Makefile data/scripts/Makefile data/sounds/Makefile data/themes/Makefile data/themes/armenian/Makefile data/themes/armenian/images/Makefile data/themes/assamese/Makefile data/themes/assamese/words/Makefile data/themes/bokmal/Makefile data/themes/bokmal/words/Makefile data/themes/bokmal/images/Makefile data/themes/bokmal/images/status/Makefile data/themes/brazilian-portuguese/Makefile data/themes/brazilian-portuguese/images/Makefile data/themes/brazilian-portuguese/words/Makefile data/themes/catalan/Makefile data/themes/catalan/words/Makefile data/themes/czech/Makefile data/themes/czech/words/Makefile data/themes/dansk/Makefile data/themes/dansk/sounds/Makefile data/themes/dansk/words/Makefile data/themes/deutsch/Makefile data/themes/deutsch/words/Makefile data/themes/espanol/Makefile data/themes/espanol/images/Makefile data/themes/espanol/words/Makefile data/themes/euskara/Makefile data/themes/euskara/images/Makefile data/themes/euskara/words/Makefile data/themes/french/Makefile data/themes/french/words/Makefile data/themes/greek/Makefile data/themes/greek/words/Makefile data/themes/gujarati/Makefile data/themes/gujarati/words/Makefile data/themes/hindi/Makefile data/themes/hindi/words/Makefile data/themes/italian/Makefile data/themes/italian/images/Makefile data/themes/italian/words/Makefile data/themes/jamaican/Makefile data/themes/jamaican/images/Makefile data/themes/jamaican/words/Makefile data/themes/kannada/Makefile data/themes/kannada/words/Makefile data/themes/lithuanian/Makefile data/themes/lithuanian/images/Makefile data/themes/lithuanian/images/status/Makefile data/themes/lithuanian/sounds/Makefile data/themes/lithuanian/words/Makefile data/themes/malayalam/Makefile data/themes/malayalam/images/Makefile data/themes/malayalam/images/status/Makefile data/themes/malayalam/images/keyboard/Makefile data/themes/malayalam/scripts/Makefile data/themes/malayalam/words/Makefile data/themes/nederlands/Makefile data/themes/nederlands/words/Makefile data/themes/nepali/Makefile data/themes/nepali/words/Makefile data/themes/nynorsk/Makefile data/themes/nynorsk/images/Makefile data/themes/nynorsk/images/status/Makefile data/themes/nynorsk/words/Makefile data/themes/oriya/Makefile data/themes/oriya/words/Makefile data/themes/punjabi/Makefile data/themes/punjabi/words/Makefile data/themes/russian/Makefile data/themes/russian/images/Makefile data/themes/russian/images/status/Makefile data/themes/russian/words/Makefile data/themes/svenska/Makefile data/themes/svenska/words/Makefile data/themes/swahili/Makefile data/themes/swahili/words/Makefile data/themes/tamil/Makefile data/themes/tamil/words/Makefile data/themes/telugu/Makefile data/themes/telugu/words/Makefile data/themes/wolof/Makefile data/themes/wolof/images/Makefile data/themes/wolof/words/Makefile data/words/Makefile doc/Makefile doc/en/Makefile intl/Makefile po/Makefile.in nsis/tuxtype.nsi src/Makefile"
+ac_config_files="$ac_config_files Makefile tuxtype.spec tuxtype_preview.spec data/Makefile data/fonts/Makefile data/images/Makefile data/images/backgrounds/Makefile data/images/cities/Makefile data/images/comets/Makefile data/images/hands/Makefile data/images/icons/Makefile data/images/keyboard/Makefile data/images/menu/Makefile data/images/status/Makefile data/images/tux/Makefile data/scripts/Makefile data/sounds/Makefile data/themes/Makefile data/themes/armenian/Makefile data/themes/armenian/images/Makefile data/themes/assamese/Makefile data/themes/assamese/words/Makefile data/themes/bokmal/Makefile data/themes/bokmal/words/Makefile data/themes/bokmal/images/Makefile data/themes/bokmal/images/status/Makefile data/themes/brazilian-portuguese/Makefile data/themes/brazilian-portuguese/images/Makefile data/themes/brazilian-portuguese/words/Makefile data/themes/catalan/Makefile data/themes/catalan/words/Makefile data/themes/czech/Makefile data/themes/czech/words/Makefile data/themes/dansk/Makefile data/themes/dansk/sounds/Makefile data/themes/dansk/words/Makefile data/themes/deutsch/Makefile data/themes/deutsch/words/Makefile data/themes/espanol/Makefile data/themes/espanol/images/Makefile data/themes/espanol/words/Makefile data/themes/euskara/Makefile data/themes/euskara/images/Makefile data/themes/euskara/words/Makefile data/themes/french/Makefile data/themes/french/words/Makefile data/themes/greek/Makefile data/themes/greek/words/Makefile data/themes/gujarati/Makefile data/themes/gujarati/words/Makefile data/themes/hindi/Makefile data/themes/hindi/words/Makefile data/themes/italian/Makefile data/themes/italian/images/Makefile data/themes/italian/words/Makefile data/themes/jamaican/Makefile data/themes/jamaican/images/Makefile data/themes/jamaican/words/Makefile data/themes/kannada/Makefile data/themes/kannada/words/Makefile data/themes/lithuanian/Makefile data/themes/lithuanian/images/Makefile data/themes/lithuanian/images/status/Makefile data/themes/lithuanian/sounds/Makefile data/themes/lithuanian/words/Makefile data/themes/malayalam/Makefile data/themes/malayalam/images/Makefile data/themes/malayalam/images/status/Makefile data/themes/malayalam/images/keyboard/Makefile data/themes/malayalam/scripts/Makefile data/themes/malayalam/words/Makefile data/themes/nederlands/Makefile data/themes/nederlands/words/Makefile data/themes/nepali/Makefile data/themes/nepali/words/Makefile data/themes/nynorsk/Makefile data/themes/nynorsk/images/Makefile data/themes/nynorsk/images/status/Makefile data/themes/nynorsk/words/Makefile data/themes/oriya/Makefile data/themes/oriya/words/Makefile data/themes/punjabi/Makefile data/themes/punjabi/words/Makefile data/themes/russian/Makefile data/themes/russian/images/Makefile data/themes/russian/images/status/Makefile data/themes/russian/words/Makefile data/themes/svenska/Makefile data/themes/svenska/words/Makefile data/themes/swahili/Makefile data/themes/swahili/words/Makefile data/themes/tamil/Makefile data/themes/tamil/words/Makefile data/themes/telugu/Makefile data/themes/telugu/words/Makefile data/themes/wolof/Makefile data/themes/wolof/images/Makefile data/themes/wolof/words/Makefile data/words/Makefile doc/Makefile doc/en/Makefile intl/Makefile po/Makefile.in nsis/tuxtype.nsi src/Makefile"
 
 ##tuxtype.spec])
 
@@ -18189,7 +18189,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by Tux Typing $as_me 1.7.4.preview, which was
+This file was extended by Tux Typing $as_me 1.7.4, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -18242,7 +18242,7 @@
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-Tux Typing config.status 1.7.4.preview
+Tux Typing config.status 1.7.4
 configured by $0, generated by GNU Autoconf 2.61,
   with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
@@ -18368,6 +18368,7 @@
     "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
     "tuxtype.spec") CONFIG_FILES="$CONFIG_FILES tuxtype.spec" ;;
+    "tuxtype_preview.spec") CONFIG_FILES="$CONFIG_FILES tuxtype_preview.spec" ;;
     "data/Makefile") CONFIG_FILES="$CONFIG_FILES data/Makefile" ;;
     "data/fonts/Makefile") CONFIG_FILES="$CONFIG_FILES data/fonts/Makefile" ;;
     "data/images/Makefile") CONFIG_FILES="$CONFIG_FILES data/images/Makefile" ;;

Modified: tuxtype/trunk/configure.ac
===================================================================
--- tuxtype/trunk/configure.ac	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/configure.ac	2009-03-03 21:40:00 UTC (rev 920)
@@ -1,5 +1,5 @@
 # Process this file with autoconf to produce a configure script.
-AC_INIT([Tux Typing],[1.7.4.preview],[tux4kids-tuxtype-dev at lists.alioth.debian.org],[tuxtype])
+AC_INIT([Tux Typing],[1.7.4],[tux4kids-tuxtype-dev at lists.alioth.debian.org],[tuxtype])
 AC_CONFIG_SRCDIR([src/playgame.c])
 
 AC_PREREQ(2.61)
@@ -193,6 +193,7 @@
 
 AC_CONFIG_FILES([Makefile
 tuxtype.spec
+tuxtype_preview.spec
 data/Makefile
 data/fonts/Makefile
 data/images/Makefile

Modified: tuxtype/trunk/doc/TODO
===================================================================
--- tuxtype/trunk/doc/TODO	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/doc/TODO	2009-03-03 21:40:00 UTC (rev 920)
@@ -1,109 +1,28 @@
--Clean up this TODO and reflect the current status!
+Updated 03 Mar 2009
 
--Replace the five remaining files which are non-free accoring to 
- Debians Free Software Guidelines with free ones. click.wav and
- kmus(1-4).wav are only free for non-commercial use.
+Briefly, here is what we are thinking of for GSoC 2009:
 
--check that SVN is free of generated files. create release-script, 
-  keep release tarballs (after augen.sh is run) in SVN?
+Tuxtype:
+  - svg support
+  - sound support for text (have program pronounce words to be typed)
+  - improved font handling
+  - addition of user-specific search path for word and phrase lists, so people can add their own content more readily.
+  - config/admin tool using gui toolkit (e.g. Qt4 but could be something else)
 
--Test it under MacOSX and windows
+Tuxmath:
+  - svg support
+  - improved font handling
+  - config/admin tool using gui toolkit (e.g. Qt4 but could be something else)
+  - LAN multiplayer mode - need refactoring into client/server architecture (could be applied to tuxtype also).
 
--make the code use UTF8 internally
+As you can see, the ideas are similar for both programs.
 
--fix the font handling issues
+Apart from GSoC, both programs need ongoing code cleanup, especially tuxtype.  Also, tuxtype could benefit greatly at this point from a refresh of things other than the C code itself - high-resolution backgrounds, completion of rest of menu sprite icons, more word lists and phrase files, etc. 
 
--Clean up code! (Someone beat it severely with the "oogly stick"!)
+-Replace the five remaining files which are non-free accoring to 
+ Debians Free Software Guidelines with free ones. click.wav and
+ kmus(1-4).wav are only free for non-commercial use.
 
-  o  SOUND: I think the way laser.c handles sound playing should
-     be adopted by the rest of the app (via a function so we don't have
-     all these "if (sys_sound)" all over the place
+-check that SVN is free of generated files. create release-script, 
 
-     ---  MAKE THE RUN SOUND NOT HAPPEN IF IT DOESN'T NEED TO!!!
-          & STOP IT ONCE IT IS DONE!
 
-  o  COMET ZAP: clean up the way text is generated...  right now
-     it is being generated every time! -- plus maybe switch to the
-     AA text
-
-     --- idea: once the player gets "done" with a wave, they can
-               continue playing on the wave until they are ready 
-	       to move on.  They do so by hitting a key 
-	       (ENTER/SPACE ??) which causes TUX to destroy all
-	       comets at once!
- 
-  o  OBJECTs: ClearObject, EraseObject, ...  needs to be reworked.
-     while these are "objects", I think we should retitle these
-     sprites, as clearobject, eraseobject does not do what one
-     might think (removing from memory)...  Plus we can probably
-     simplify the "realeraseobject" vs. "eraseobject"
-
-  o  LOCALE: gettext & locales...  enough said
-
-  o  MAKE STUFF: Cal is working on it for *nix.  We need to make
-     sure we can build for others (win, mac).
-
-  o  THEMES: after gettext is set up, a way to specify font,
-     fontsize, and other graphical options for the theme...
-     (on top of the already supported images)
-
-     --- Currently when we are loading a image, it will first
-         search through all the theme paths, and then it will
-         search through all the default paths, which is nice
-         except when the theme has "icons" for the menu.  Then
-         the program will try to load as many icons and since
-         a theme may use fewer images than the default images,
-         the theme will have EXTRA frames that shouldn't be 
-         included!
-
-  o  INPUT: can TT2 determine if the user presses "fancy" latin
-     characters such as n~, ...  I don't know...  a way to test
-     exists now though :)
-
-  o  TRANSLATION: once we have gettext working, TT2 will be less
-     of a moving target for translators...
-
-  o  Tux Recommend: add tux giving friendly reminders about proper
-     hand location, erogomics, ...
-
-
-
-The following is a mail with a list of ideas, this is not really a todo (yet).
-
-From: Steve McCuen <smccuen.tux at gmail.com>
-To: tuxmath-devel at lists.sourceforge.net
-Date: Wed, 16 May 2007 20:25:15 -0700
-Message-Id: <1179372315.31920.15.camel at mccuen01.mccuenlabs.net>
-Subject: [Tuxmath-devel] tuxtype: feature request list, for comment
-
-This is the list of requests that came from students using tuxtype.  In
-looking at the list, some are very possible to do.
-
-* More kinds of games
-        * Some suggested maybe a racing game
-        * Some suggested pinball typing the right letters would make the
-flippers work
-        * Space wars, and battle games with space ships
-* Different background music
-* Different colors
-* Different backgrounds
-* Practice typing letter groups (finger exercises like Mavis)
-* In fish arcade, when you type the letter it highlights in Red, which
-is hard to see.
-* Too much repetition within the games there are
-* More short words, and generally more variety in words and letters
-* High score list
-* More diversity in difficulty, not just speeding up
-* Bonus points, and get more weapons, and rebuild cities
-* More then just comets that come down
-* Younger grades suggested the following:
-        * Fish Cascade to go slower
-        * Say the letter as they come down
-        * Not only saying the words, make the words tell a story
-        * Stops when you miss a letter and gives you a chance to get it right.
-* More levels in Fish Cascade and Comet Zap
-* Ability to choose whether one comet will destroy a city, or several
-* Levels to be longer and harder before switching
-* In Space Cadet, get points for hitting target, and takes away if you
-miss, and if a city is destroyed it doesn't take away points.
-* More shields

Modified: tuxtype/trunk/po/ar.po
===================================================================
--- tuxtype/trunk/po/ar.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/ar.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: Tux Typing 1.5.16\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Mobin M <mobinmohan at gmail.com>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"

Modified: tuxtype/trunk/po/as.po
===================================================================
--- tuxtype/trunk/po/as.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/as.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -5,7 +5,7 @@
 msgstr ""
 "Project-Id-Version: Tux Typing 1.5.16\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: 2008-08-22 12:36+0530\n"
 "Last-Translator: Amitakhya Phukan <aphukan at redhat.com>\n"
 "Language-Team: American English <kde-i18n-doc at lists.kde.org>\n"

Modified: tuxtype/trunk/po/ca.po
===================================================================
--- tuxtype/trunk/po/ca.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/ca.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: Tux Typing 1.5.16\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Mobin M <mobinmohan at gmail.com>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"

Modified: tuxtype/trunk/po/cs.po
===================================================================
--- tuxtype/trunk/po/cs.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/cs.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: Tux Typing 1.5.16\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: 2007-11-10 16:36+0100\n"
 "Last-Translator: JardaK <krejci at zstenis.com>\n"
 "Language-Team: czech <cs at li.org>\n"

Modified: tuxtype/trunk/po/da.po
===================================================================
--- tuxtype/trunk/po/da.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/da.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: Tux Typing 1.5.16\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: 2003-05-08 17:58+0200\n"
 "Last-Translator: Nikolai Beier <beier at ofir.dk>\n"
 "Language-Team: Danish\n"

Modified: tuxtype/trunk/po/de.po
===================================================================
--- tuxtype/trunk/po/de.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/de.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: Tux Typing 1.5.16\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: 2003-06-14 19:00+0000\n"
 "Last-Translator: Andreas Ramm <ace1 at gmx.net>\n"
 "Language-Team: German\n"

Modified: tuxtype/trunk/po/el.po
===================================================================
--- tuxtype/trunk/po/el.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/el.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: Tux Typing 1.5.16\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"

Modified: tuxtype/trunk/po/en at boldquot.po
===================================================================
--- tuxtype/trunk/po/en at boldquot.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/en at boldquot.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -29,10 +29,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: tuxtype 1.7.4.preview\n"
+"Project-Id-Version: tuxtype 1.7.4\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
-"PO-Revision-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
+"PO-Revision-Date: 2009-02-23 08:14-0600\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
 "MIME-Version: 1.0\n"

Modified: tuxtype/trunk/po/en at quot.po
===================================================================
--- tuxtype/trunk/po/en at quot.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/en at quot.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -26,10 +26,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: tuxtype 1.7.4.preview\n"
+"Project-Id-Version: tuxtype 1.7.4\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
-"PO-Revision-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
+"PO-Revision-Date: 2009-02-23 08:14-0600\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
 "MIME-Version: 1.0\n"

Modified: tuxtype/trunk/po/en_GB.po
===================================================================
--- tuxtype/trunk/po/en_GB.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/en_GB.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: Tuxtype\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Mobin M <mobinmohan at gmail.com>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"

Modified: tuxtype/trunk/po/es.po
===================================================================
--- tuxtype/trunk/po/es.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/es.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: Tux Typing 1.5.16\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: 2007-09-16 19:00+0000\n"
 "Last-Translator: Amaya Rodrigo <amaya at debian.org>\n"
 "Language-Team: Spanish\n"

Modified: tuxtype/trunk/po/eu.po
===================================================================
--- tuxtype/trunk/po/eu.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/eu.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: Tux Typing 1.5.16\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"

Modified: tuxtype/trunk/po/fr.po
===================================================================
--- tuxtype/trunk/po/fr.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/fr.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: Tux Typing 1.5.16\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: 2009-02-04 14:55+0100\n"
 "Last-Translator: Loïc Martin <loic.martin3 at gmail.com>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"

Modified: tuxtype/trunk/po/gu.po
===================================================================
--- tuxtype/trunk/po/gu.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/gu.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: tuxtype\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: 2008-08-28 16:17+0530\n"
 "Last-Translator: Sweta Kothari <swkothar at redhat.com>\n"
 "Language-Team: Gujarati\n"

Modified: tuxtype/trunk/po/hi.po
===================================================================
--- tuxtype/trunk/po/hi.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/hi.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: tuxtype\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: 2008-08-28 16:08+0530\n"
 "Last-Translator: Rajesh Ranjan <rranjan at redhat.com>\n"
 "Language-Team: Hindi <hindi.sf.net>\n"

Modified: tuxtype/trunk/po/it.po
===================================================================
--- tuxtype/trunk/po/it.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/it.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: Tux Typing 1.5.16\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"

Modified: tuxtype/trunk/po/ja.po
===================================================================
--- tuxtype/trunk/po/ja.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/ja.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: Tux Typing 1.5.16\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"

Modified: tuxtype/trunk/po/kn.po
===================================================================
--- tuxtype/trunk/po/kn.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/kn.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: tuxtype\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: 2008-08-27 13:58+0530\n"
 "Last-Translator: Shankar Prasad <svenkate at redhat.com>\n"
 "Language-Team: Kannada <en at li.org>\n"

Modified: tuxtype/trunk/po/lt.po
===================================================================
--- tuxtype/trunk/po/lt.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/lt.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: Tux Typing 1.5.16\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: 2004-10-20\n"
 "Last-Translator: Gintautas Grigas <grigas at ktl.mii.lt>\n"
 "Language-Team: Lithuanian\n"

Modified: tuxtype/trunk/po/ml.gmo
===================================================================
(Binary files differ)

Modified: tuxtype/trunk/po/ml.po
===================================================================
--- tuxtype/trunk/po/ml.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/ml.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: Tuxtype\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Mobin M <mobinmohan at gmail.com>\n"
 "Language-Team: Swathanthra|സ്വതന്ത്ര Malayalam|മലയാളം Computing|കമ്പ്യൂട്ടിങ്ങ് <smc-"

Modified: tuxtype/trunk/po/nb.po
===================================================================
--- tuxtype/trunk/po/nb.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/nb.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: Tux Typing 1.5.16\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: 2005-10-20 21:24+0200\n"
 "Last-Translator: Trond Mæhlum <trondm at skolelinux.no>\n"
 "Language-Team: Norwegian Bokmål <i18n-nb at lister.ping.uio.no>\n"

Modified: tuxtype/trunk/po/ne.po
===================================================================
--- tuxtype/trunk/po/ne.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/ne.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: Tux Typing 1.5.16\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Mobin M <mobinmohan at gmail.com>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"

Modified: tuxtype/trunk/po/nl.po
===================================================================
--- tuxtype/trunk/po/nl.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/nl.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: Tuxtype\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"

Modified: tuxtype/trunk/po/nn.po
===================================================================
--- tuxtype/trunk/po/nn.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/nn.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: Tux Typing 1.5.16\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: 2005-02-12 13:13+0100\n"
 "Last-Translator: Karl Ove Hufthammer <karl at huftis.org>\n"
 "Language-Team: Norwegian Nynorsk <i18n-nn at lister.ping.uio.no>\n"

Modified: tuxtype/trunk/po/or.po
===================================================================
--- tuxtype/trunk/po/or.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/or.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: tuxtype\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: 2008-08-27 17:56+0530\n"
 "Last-Translator: Manoj Kumar Giri <mgiri at redhat.com>\n"
 "Language-Team: Oriya\n"

Modified: tuxtype/trunk/po/pt.po
===================================================================
--- tuxtype/trunk/po/pt.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/pt.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: Tux Typing 1.5.16\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: 2007-02-07 16:08+0000\n"
 "Last-Translator: Hudson G M Figueredo <kynder at pquilinux.org>\n"
 "Language-Team:  <pt at li.org>\n"

Modified: tuxtype/trunk/po/ru.po
===================================================================
--- tuxtype/trunk/po/ru.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/ru.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: Tux Typing 1.5.16\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Mobin M <mobinmohan at gmail.com>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"

Modified: tuxtype/trunk/po/sv.po
===================================================================
--- tuxtype/trunk/po/sv.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/sv.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: tuxtype2\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: 2008-12-02 19:51+0100\n"
 "Last-Translator: Göran Uddeborg <goeran at uddeborg.se>\n"
 "Language-Team: Swedish <tp-sv at listor.tp-sv.se>\n"

Modified: tuxtype/trunk/po/sw.po
===================================================================
--- tuxtype/trunk/po/sw.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/sw.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: Tux Typing 1.5.16\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"

Modified: tuxtype/trunk/po/ta.po
===================================================================
--- tuxtype/trunk/po/ta.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/ta.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: tuxtype\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: 2008-08-22 12:41+0530\n"
 "Last-Translator: Felix I <ifelix25 at gmail.com>, 2008\n"
 "Language-Team:  <en at li.org>\n"

Modified: tuxtype/trunk/po/te.po
===================================================================
--- tuxtype/trunk/po/te.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/te.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: tuxtype\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: 2008-08-28 17:58+0530\n"
 "Last-Translator: Krishna Babu K <kkrothap at redhat.com>\n"
 "Language-Team: Telugu <en at li.org>\n"

Modified: tuxtype/trunk/po/tr.po
===================================================================
--- tuxtype/trunk/po/tr.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/tr.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: tr\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: 2008-12-11 15:08+0200\n"
 "Last-Translator: Doruk Fisek <dfisek at fisek.com.tr>\n"
 "Language-Team: Turkish <gnu-tr-u12a at lists.sourceforge.net>\n"

Modified: tuxtype/trunk/po/tuxtype.pot
===================================================================
--- tuxtype/trunk/po/tuxtype.pot	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/tuxtype.pot	2009-03-03 21:40:00 UTC (rev 920)
@@ -5,9 +5,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: tuxtype 1.7.4.preview\n"
+"Project-Id-Version: tuxtype 1.7.4\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"

Modified: tuxtype/trunk/po/wo.po
===================================================================
--- tuxtype/trunk/po/wo.po	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/po/wo.po	2009-03-03 21:40:00 UTC (rev 920)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: Tux Typing 1.5.16\n"
 "Report-Msgid-Bugs-To: tux4kids-tuxtype-dev at lists.alioth.debian.org\n"
-"POT-Creation-Date: 2009-02-20 13:01-0600\n"
+"POT-Creation-Date: 2009-02-23 08:14-0600\n"
 "PO-Revision-Date: 2007-09-25 09:50-0000\n"
 "Last-Translator: Ousmane Faty Ndongo et Dominique Rochefort <alfanet at anafa."
 "org>\n"

Modified: tuxtype/trunk/src/SDL_extras.c
===================================================================
--- tuxtype/trunk/src/SDL_extras.c	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/src/SDL_extras.c	2009-03-03 21:40:00 UTC (rev 920)
@@ -16,18 +16,9 @@
 #include "globals.h"
 #include "pixels.h"
 
-/* Uncomment this line to test how the program will run if */
-/* SDL_Pango not available.                                */
-//#undef HAVE_LIBSDL_PANGO
 
 
-#ifdef HAVE_LIBSDL_PANGO
-#include "SDL_Pango.h"
-static SDLPango_Matrix* SDL_Colour_to_SDLPango_Matrix(const SDL_Color* cl);
-SDLPango_Context* context;
-#endif
 
-
 /* DrawButton() creates and draws a translucent button with */
 /* rounded ends.  All colors and alpha values are supported.*/
 void DrawButton(SDL_Rect* target_rect,
@@ -359,279 +350,15 @@
 }
 
 
-void init_SDLPango_Context()
-{
-#ifdef HAVE_LIBSDL_PANGO
 
-   if((context =  SDLPango_CreateContext_GivenFontDesc(settings.theme_font_name))==NULL)
-     context =  SDLPango_CreateContext();
-   SDLPango_SetBaseDirection(context, SDLPANGO_DIRECTION_LTR);
-   SDLPango_SetDpi(context, 125.0, 125.0);
-#endif
-}
 
-
-void free_SDLPango_Context()
-{
-#ifdef HAVE_LIBSDL_PANGO
-  if(context != NULL)
-    SDLPango_FreeContext(context);
-  context = NULL;
-#endif
-}
-
-
-void reset_DPI_SDLPango_Context(float dpi_x, float dpi_y)
-{
-#ifdef HAVE_LIBSDL_PANGO
-  SDLPango_SetDpi(context, dpi_x, dpi_y);
-#endif
-}
-
-#ifdef HAVE_LIBSDL_PANGO
-
-SDLPango_Matrix* SDL_Colour_to_SDLPango_Matrix(const SDL_Color *cl)
-{
-  SDLPango_Matrix *colour;
-  colour=malloc(sizeof(SDLPango_Matrix));
-  int k;
-  for(k=0;k<4;k++){
-  	(*colour).m[0][k]=(*cl).r;
-  	(*colour).m[1][k]=(*cl).g;
-  	(*colour).m[2][k]=(*cl).b;
-  }
-  (*colour).m[3][0]=0;
-  (*colour).m[3][1]=255;
-  (*colour).m[3][2]=0;
-  (*colour).m[3][3]=0;
-
-  return colour;
-}
-#endif
-
-
-/* BlackOutline() creates a surface containing text of the designated */
-/* foreground color, surrounded by a black shadow, on a transparent    */
-/* background.  The appearance can be tuned by adjusting the number of */
-/* background copies and the offset where the foreground text is       */
-/* finally written (see below).                                        */
-SDL_Surface* BlackOutline(const char *t, const TTF_Font *font, const SDL_Color *c)
-{
-  SDL_Surface* out = NULL;
-  SDL_Surface* black_letters = NULL;
-  SDL_Surface* white_letters = NULL;
-  SDL_Surface* bg = NULL;
-  SDL_Rect dstrect;
-  Uint32 color_key;
-
-  LOG("Entering BlackOutline()\n");
-
-  if (!t || !font || !c)
-  {
-    fprintf(stderr, "BlackOutline(): invalid ptr parameter, returning.\n");
-    return NULL;
-  }
-
-  if (t[0] == '\0')
-  {
-    fprintf(stderr, "BlackOutline(): empty string, returning\n");
-    return NULL;
-  }
-
- 
-#ifndef HAVE_LIBSDL_PANGO
-  black_letters = TTF_RenderUTF8_Blended(font, t, black);
-#else
-  if( context != NULL)
-  {
-    SDLPango_SetDefaultColor(context, MATRIX_TRANSPARENT_BACK_BLACK_LETTER);
-    SDLPango_SetText(context, t, -1);
-    black_letters = SDLPango_CreateSurfaceDraw(context);
-  }
-  else {
-    black_letters = TTF_RenderUTF8_Blended((TTF_Font*)font, t, black);
-  }
-#endif
-
-  if (!black_letters)
-  {
-    fprintf (stderr, "Warning - BlackOutline() could not create image for %s\n", t);
-    return NULL;
-  }
-
-  bg = SDL_CreateRGBSurface(SDL_SWSURFACE,
-                            (black_letters->w) + 5,
-                            (black_letters->h) + 5,
-                             32,
-                             rmask, gmask, bmask, amask);
-  /* Use color key for eventual transparency: */
-  color_key = SDL_MapRGB(bg->format, 01, 01, 01);
-  SDL_FillRect(bg, NULL, color_key);
-
-  /* Now draw black outline/shadow 2 pixels on each side: */
-  dstrect.w = black_letters->w;
-  dstrect.h = black_letters->h;
-
-  /* NOTE: can make the "shadow" more or less pronounced by */
-  /* changing the parameters of these loops.                */
-  for (dstrect.x = 1; dstrect.x < 4; dstrect.x++)
-    for (dstrect.y = 1; dstrect.y < 3; dstrect.y++)
-      SDL_BlitSurface(black_letters , NULL, bg, &dstrect );
-
-  SDL_FreeSurface(black_letters);
-
-  /* --- Put the color version of the text on top! --- */
-#ifndef HAVE_LIBSDL_PANGO
-  white_letters = TTF_RenderUTF8_Blended(font, t, *c);
-#else
-  if( context != NULL)
-  {
-    /* convert color arg: */
-    SDLPango_Matrix* color_matrix = SDL_Colour_to_SDLPango_Matrix(c);
-
-    if (color_matrix)
-      SDLPango_SetDefaultColor(context, color_matrix);
-    else  /* fall back to just using white if conversion fails: */
-      SDLPango_SetDefaultColor(context, MATRIX_TRANSPARENT_BACK_WHITE_LETTER);
-
-    white_letters = SDLPango_CreateSurfaceDraw(context);
-  }
-  else
-  {
-    white_letters = TTF_RenderUTF8_Blended((TTF_Font*)font, t, *c);
-  }
-#endif
-
-  dstrect.x = 1;
-  dstrect.y = 1;
-  SDL_BlitSurface(white_letters, NULL, bg, &dstrect);
-  SDL_FreeSurface(white_letters);
-
-  /* --- Convert to the screen format for quicker blits --- */
-  SDL_SetColorKey(bg, SDL_SRCCOLORKEY|SDL_RLEACCEL, color_key);
-  out = SDL_DisplayFormatAlpha(bg);
-  SDL_FreeSurface(bg);
-
-  LOG("Leaving BlackOutline()\n");
-
-  return out;
-}
-
-
-/* This version takes a wide character string and renders it with the */
-/* Unicode string versions of the SDL_ttf functions:                  */
-SDL_Surface* BlackOutline_Unicode(const Uint16* t, const TTF_Font* font, const SDL_Color* c)
-{
-  SDL_Surface* out = NULL;
-  SDL_Surface* black_letters = NULL;
-  SDL_Surface* white_letters = NULL;
-  SDL_Surface* bg = NULL;
-  SDL_Rect dstrect;
-  Uint32 color_key;
-
-  if (!t || !font || !c)
-  {
-    fprintf(stderr, "BlackOutline_Unicode(): invalid ptr parameter, returning.\n");
-    return NULL;
-  }
-
-  if (t[0] == '\0')
-  {
-    fprintf(stderr, "BlackOutline_Unicode(): empty string, returning\n");
-    return NULL;
-  }
-                                 /* (cast to stop compiler complaint) */
-  black_letters = TTF_RenderUNICODE_Blended((TTF_Font*)font, t, black);
-
-  if (!black_letters)
-  {
-    fprintf (stderr, "Warning - BlackOutline_Unicode() could not create image for %S\n", (wchar_t*)t);
-    return NULL;
-  }
-
-  bg = SDL_CreateRGBSurface(SDL_SWSURFACE,
-                            (black_letters->w) + 5,
-                            (black_letters->h) + 5,
-                             32,
-                             rmask, gmask, bmask, amask);
-  /* Use color key for eventual transparency: */
-  color_key = SDL_MapRGB(bg->format, 10, 10, 10);
-  SDL_FillRect(bg, NULL, color_key);
-
-  /* Now draw black outline/shadow 2 pixels on each side: */
-  dstrect.w = black_letters->w;
-  dstrect.h = black_letters->h;
-
-  /* NOTE: can make the "shadow" more or less pronounced by */
-  /* changing the parameters of these loops.                */
-  for (dstrect.x = 1; dstrect.x < 4; dstrect.x++)
-    for (dstrect.y = 1; dstrect.y < 3; dstrect.y++)
-      SDL_BlitSurface(black_letters , NULL, bg, &dstrect );
-
-  SDL_FreeSurface(black_letters);
-
-  /* --- Put the color version of the text on top! --- */
-                                       /* (cast to stop compiler complaint) */
-  white_letters = TTF_RenderUNICODE_Blended((TTF_Font*)font, t, *c);
-  dstrect.x = 1;
-  dstrect.y = 1;
-  SDL_BlitSurface(white_letters, NULL, bg, &dstrect);
-  SDL_FreeSurface(white_letters);
-
-  /* --- Convert to the screen format for quicker blits --- */
-  SDL_SetColorKey(bg, SDL_SRCCOLORKEY|SDL_RLEACCEL, color_key);
-  out = SDL_DisplayFormatAlpha(bg);
-  SDL_FreeSurface(bg);
-
-  return out;
-}
-
-
-SDL_Surface* BlackOutline_w(const wchar_t* t, const TTF_Font* font, const SDL_Color* c, int size)
-{
-  wchar_t wchar_tmp[1024];
-  char tmp[1024];
-  int i;
-
-  // Safety checks:
-  if (!t || !font || !c)
-  {
-    fprintf(stderr, "BlackOutline_Unicode(): invalid ptr parameter, returning.\n");
-    return NULL;
-  }
-
-  if (t[0] == '\0')
-  {
-    fprintf(stderr, "BlackOutline_Unicode(): empty string, returning\n");
-    return NULL;
-  }
-
-  wcsncpy(wchar_tmp, t, size);
-  wchar_tmp[size] = 0;
-
-  DEBUGCODE
-  {
-    fprintf(stderr, "In BlackOutline_w() - input wchar_t string is: %S\n", wchar_tmp);
-  }
-
-  i = ConvertToUTF8(wchar_tmp, tmp, 1024);
-  //tmp[i] = 0;
-
-  DEBUGCODE
-  {
-    fprintf(stderr, "In BlackOutline_w() - converted UTF8 string is: %s\n", tmp);
-  }
-
-  return BlackOutline(tmp, font, c);
-}
-
-
 int inRect( SDL_Rect r, int x, int y) {
         if ((x < r.x) || (y < r.y) || (x > r.x + r.w) || (y > r.y + r.h))
                 return 0;
         return 1;
 }
 
+
 /* Darkens the screen by a factor of 2^bits */
 void DarkenScreen(Uint8 bits)
 {
@@ -841,6 +568,271 @@
   return s;
 }
 
+
+
+/************************************************************************/
+/*                                                                      */
+/*        Begin text drawing functions                                  */
+/*                                                                      */
+/* These functions support text drawing using either SDL_Pango          */
+/* or SDL_ttf. SDL_Pango is preferable but is not available on all      */
+/* platforms. Code outside of this file does not have to worry about    */
+/* which library is used to do the actual rendering.                    */
+/************************************************************************/
+
+/* Uncomment this line to test how the program will run if */
+/* SDL_Pango not available.                                */
+//#undef HAVE_LIBSDL_PANGO
+
+
+#define MAX_FONT_SIZE 40
+
+/*-- file-scope variables and local file prototypes for SDL_Pango-based code: */
+#ifdef HAVE_LIBSDL_PANGO
+#include "SDL_Pango.h"
+SDLPango_Context* context = NULL;
+static SDLPango_Matrix* SDL_Colour_to_SDLPango_Matrix(const SDL_Color* cl);
+
+/*-- file-scope variables and local file prototypes for SDL_ttf-based code: */
+#else
+#include "SDL_ttf.h"
+/* We cache fonts here once loaded to improve performance: */
+TTF_Font* font_list[MAX_FONT_SIZE] = {NULL};
+static void free_font_list(void);
+static TTF_Font* get_font(int size);
+static TTF_Font* load_font(const char* font_name, int font_size);
+#endif
+
+
+
+
+void reset_DPI_SDLPango_Context(float dpi_x, float dpi_y)
+{
+#ifdef HAVE_LIBSDL_PANGO
+  SDLPango_SetDpi(context, dpi_x, dpi_y);
+#endif
+}
+
+
+/* "Public" functions called from other files that use either */
+/*SDL_Pango or SDL_ttf:                                       */
+
+
+/* For setup, we either initialize SDL_Pango and set its context, */
+/* or we initialize SDL_ttf:                                      */
+int Setup_SDL_Text(void)
+{
+#ifdef HAVE_LIBSDL_PANGO
+  char buf[64];
+
+  LOG("Setup_SDL_Text() - using SDL_Pango\n");
+
+  SDLPango_Init();
+
+  snprintf(buf, 64, "[%s][][%d]", DEFAULT_FONT_NAME, DEFAULT_MENU_FONT_SIZE);
+  context =  SDLPango_CreateContext_GivenFontDesc(buf);
+  if (!context)
+  {
+    fprintf(stderr, "\nError: I could not set SDL_Pango context\n");
+    return 0;
+  }
+  return 1;
+
+#else
+/* using SDL_ttf: */
+  LOG("Setup_SDL_Text() - using SDL_ttf\n");
+
+  if (TTF_Init() < 0)
+  {
+    fprintf(stderr, "\nError: I could not initialize SDL_ttf\n");
+    return 0;
+  }
+  return 1;
+#endif
+}
+
+
+void Cleanup_SDL_Text(void)
+{
+#ifdef HAVE_LIBSDL_PANGO
+  if(context != NULL)
+    SDLPango_FreeContext(context);
+  context = NULL;
+#else
+  free_font_list();
+  TTF_Quit();
+#endif
+}
+
+
+/* BlackOutline() creates a surface containing text of the designated */
+/* foreground color, surrounded by a black shadow, on a transparent    */
+/* background.  The appearance can be tuned by adjusting the number of */
+/* background copies and the offset where the foreground text is       */
+/* finally written (see below).                                        */
+//SDL_Surface* BlackOutline(const char *t, TTF_Font *font, SDL_Color *c)
+SDL_Surface* BlackOutline(const char* t, int font_size, const SDL_Color* c)
+{
+  SDL_Surface* out = NULL;
+  SDL_Surface* black_letters = NULL;
+  SDL_Surface* white_letters = NULL;
+  SDL_Surface* bg = NULL;
+  SDL_Rect dstrect;
+  Uint32 color_key;
+
+/* Make sure everything is sane before we proceed: */
+#ifdef HAVE_LIBSDL_PANGO
+  if (!context)
+  {
+    fprintf(stderr, "BlackOutline(): invalid SDL_Pango context - returning.");
+    return NULL;
+  }
+#else
+  TTF_Font* font = get_font(DEFAULT_FONT_NAME, size);
+  if (!font)
+  {
+    fprintf(stderr, "BlackOutline(): could not load needed font - returning.");
+    return NULL;
+  }
+#endif
+
+  if (!t || !c)
+  {
+    fprintf(stderr, "BlackOutline(): invalid ptr parameter, returning.");
+    return NULL;
+  }
+
+  if (t[0] == '\0')
+  {
+    fprintf(stderr, "BlackOutline(): empty string, returning");
+    return NULL;
+  }
+
+DEBUGCODE
+{
+  fprintf( stderr, "\nEntering BlackOutline(): \n");
+  fprintf( stderr, "BlackOutline of \"%s\"\n", t );
+}
+
+#ifdef HAVE_LIBSDL_PANGO
+  SDLPango_SetDefaultColor(context, MATRIX_TRANSPARENT_BACK_BLACK_LETTER);
+  SDLPango_SetText(context, t, -1);
+  black_letters = SDLPango_CreateSurfaceDraw(context);
+#else
+  black_letters = TTF_RenderUTF8_Blended(font, t, black);
+#endif
+
+  if (!black_letters)
+  {
+    fprintf (stderr, "Warning - BlackOutline() could not create image for %s\n", t);
+    return NULL;
+  }
+
+  bg = SDL_CreateRGBSurface(SDL_SWSURFACE,
+                            (black_letters->w) + 5,
+                            (black_letters->h) + 5,
+                             32,
+                             rmask, gmask, bmask, amask);
+  /* Use color key for eventual transparency: */
+  color_key = SDL_MapRGB(bg->format, 01, 01, 01);
+  SDL_FillRect(bg, NULL, color_key);
+
+  /* Now draw black outline/shadow 2 pixels on each side: */
+  dstrect.w = black_letters->w;
+  dstrect.h = black_letters->h;
+
+  /* NOTE: can make the "shadow" more or less pronounced by */
+  /* changing the parameters of these loops.                */
+  for (dstrect.x = 1; dstrect.x < 4; dstrect.x++)
+    for (dstrect.y = 1; dstrect.y < 3; dstrect.y++)
+      SDL_BlitSurface(black_letters , NULL, bg, &dstrect );
+
+  SDL_FreeSurface(black_letters);
+
+  /* --- Put the color version of the text on top! --- */
+#ifdef HAVE_LIBSDL_PANGO
+  /* convert color arg: */
+  SDLPango_Matrix* color_matrix = SDL_Colour_to_SDLPango_Matrix(c);
+
+  if (color_matrix)
+  {
+    SDLPango_SetDefaultColor(context, color_matrix);
+    free(color_matrix);
+  }
+  else  /* fall back to just using white if conversion fails: */
+    SDLPango_SetDefaultColor(context, MATRIX_TRANSPARENT_BACK_WHITE_LETTER);
+
+  white_letters = SDLPango_CreateSurfaceDraw(context);
+
+#else
+  white_letters = TTF_RenderUTF8_Blended(font, t, *c);
+#endif
+
+  if (!white_letters)
+  {
+    fprintf (stderr, "Warning - BlackOutline() could not create image for %s\n", t);
+    return NULL;
+  }
+
+  dstrect.x = 1;
+  dstrect.y = 1;
+  SDL_BlitSurface(white_letters, NULL, bg, &dstrect);
+  SDL_FreeSurface(white_letters);
+
+  /* --- Convert to the screen format for quicker blits --- */
+  SDL_SetColorKey(bg, SDL_SRCCOLORKEY|SDL_RLEACCEL, color_key);
+  out = SDL_DisplayFormatAlpha(bg);
+  SDL_FreeSurface(bg);
+
+DEBUGCODE
+  { fprintf( stderr, "\nLeaving BlackOutline(): \n"); }
+
+
+  return out;
+}
+
+
+
+SDL_Surface* BlackOutline_w(const wchar_t* t, int font_size, const SDL_Color* c, int length)
+{
+  wchar_t wchar_tmp[1024];
+  char tmp[1024];
+  int i;
+
+  // Safety checks:
+  if (!t || !c)
+  {
+    fprintf(stderr, "BlackOutline_w(): invalid ptr parameter, returning.\n");
+    return NULL;
+  }
+
+  if (t[0] == '\0')
+  {
+    fprintf(stderr, "BlackOutline_w(): empty string, returning\n");
+    return NULL;
+  }
+
+  wcsncpy(wchar_tmp, t, length);
+  wchar_tmp[length] = '\0';
+
+  DEBUGCODE
+  {
+    fprintf(stderr, "In BlackOutline_w() - input wchar_t string is: %S\n", wchar_tmp);
+  }
+
+  i = ConvertToUTF8(wchar_tmp, tmp, 1024);
+  //tmp[i] = 0;
+
+  DEBUGCODE
+  {
+    fprintf(stderr, "In BlackOutline_w() - converted UTF8 string is: %s\n", tmp);
+  }
+
+  return BlackOutline(tmp, font_size, c);
+}
+
+
+
 /* When SDL_Pango is used, the ttf font sizes are ignored    */
 /* by BlackOutline(), so we adjust dpi to scale the fonts:     */
 /* HACK this isn't quite the intended use of SDLPango_SetDpi() */
@@ -854,3 +846,147 @@
   }
 #endif
 }
+
+
+/*-----------------------------------------------------------*/
+/* Local functions, callable only within SDL_extras, divided */
+/* according with which text lib we are using:               */
+/*-----------------------------------------------------------*/
+
+
+
+#ifdef HAVE_LIBSDL_PANGO
+/* Local functions when using SDL_Pango:   */
+
+SDLPango_Matrix* SDL_Colour_to_SDLPango_Matrix(const SDL_Color *cl)
+{
+  int k = 0;
+  SDLPango_Matrix* colour = NULL;
+
+  if (!cl)
+  {
+    fprintf(stderr, "Invalid SDL_Color* arg\n");
+    return NULL;
+  }
+
+  colour = (SDLPango_Matrix*)malloc(sizeof(SDLPango_Matrix));
+
+  for(k = 0; k < 4; k++)
+  {
+    (*colour).m[0][k] = (*cl).r;
+    (*colour).m[1][k] = (*cl).g;
+    (*colour).m[2][k] = (*cl).b;
+  }
+  (*colour).m[3][0] = 0;
+  (*colour).m[3][1] = 255;
+  (*colour).m[3][2] = 0;
+  (*colour).m[3][3] = 0;
+
+  return colour;
+}
+
+#else
+/* Local functions when using SDL_ttf: */
+
+static void free_font_list(void)
+{
+  int i;
+  for(i = 0; i < MAX_FONT_SIZE; i++);
+  {
+    if(font_list[i])
+    {
+      TTF_CloseFont(font_list[i]);
+      font_list[i] = NULL;
+    }
+  }
+}
+
+
+
+/* FIXME - could combine this with load_font() below, also we */
+/* will want to support a "current_font" setting rather than  */
+/* always using DEFAULT_FONT_NAME                             */
+/* Loads and caches fonts in each size as they are requested: */
+/* We use the font size as an array index, keeping each size  */
+/* font in memory once loaded until cleanup.                  */
+static TTF_Font* get_font(int size)
+{
+  if (size < 0 || size > MAX_FONT_SIZE)
+  {
+    fprintf(stderr, "Error - requested font size %d is invalid\n", size);
+    return NULL;
+  }
+
+  if(font_list[size] == NULL)
+    font_list[size] = load_font(DEFAULT_FONT_NAME, size);
+  return font_list[size];
+}
+
+
+/* FIXME need code to search for font paths on different platforms */
+static TTF_Font* load_font(const char* font_name, int font_size)
+{
+  TTF_Font* loaded_font = NULL;
+  char fn[FNLEN];
+
+  /* try to find font in default data dir: */
+  sprintf(fn, "%s/fonts/%s", settings.default_data_path, font_name);
+
+  DEBUGCODE { fprintf(stderr, "LoadFont(): looking for %s using data paths\n", fn); }
+
+  /* try to load the font, if successful, return font*/
+  loaded_font = TTF_OpenFont(fn, font_size);
+  if (loaded_font != NULL)
+    return loaded_font;
+		
+
+  /* HACK hard-coded for Debian (and current exact font names): */ 
+
+  if (strncmp(font_name, "AndikaDesRevG.ttf", FNLEN ) == 0)
+    sprintf(fn, "/usr/share/fonts/truetype/ttf-sil-andika/AndikaDesRevG.ttf");
+  else if (strncmp(font_name, "DoulosSILR.ttf", FNLEN ) == 0)
+    sprintf(fn, "/usr/share/fonts/truetype/ttf-sil-doulos/DoulosSILR.ttf");
+  else if (strncmp(font_name, "Kedage-n.ttf", FNLEN ) == 0)
+    sprintf(fn, "/usr/share/fonts/truetype/ttf-kannada-fonts/Kedage-n.ttf");
+  else if (strncmp(font_name, "lohit_bn.ttf", FNLEN ) == 0)
+    sprintf(fn, "/usr/share/fonts/truetype/ttf-bengali-fonts/lohit_bn.ttf");
+  else if (strncmp(font_name, "lohit_gu.ttf", FNLEN ) == 0)
+    sprintf(fn, "/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_gu.ttf");
+  else if (strncmp(font_name, "lohit_hi.ttf", FNLEN ) == 0)
+    sprintf(fn, "/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_hi.ttf");
+  else if (strncmp(font_name, "lohit_pa.ttf", FNLEN ) == 0)
+    sprintf(fn, "/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_pa.ttf");
+  else if (strncmp(font_name, "lohit_ta.ttf", FNLEN ) == 0)
+    sprintf(fn, "/usr/share/fonts/truetype/ttf-indic-fonts-core/lohit_ta.ttf");
+  else if (strncmp(font_name, "Rachana_w01.ttf", FNLEN ) == 0)
+    sprintf(fn, "/usr/share/fonts/truetype/ttf-malayalam-fonts/Rachana_w01.ttf");
+  else if (strncmp(font_name, "utkal.ttf", FNLEN ) == 0)
+    sprintf(fn, "/usr/share/fonts/truetype/ttf-indic-fonts-core/utkal.ttf");
+  else if (strncmp(font_name, "Vemana.ttf", FNLEN ) == 0)
+    sprintf(fn, "/usr/share/fonts/truetype/ttf-indic-fonts-core/Vemena.ttf");
+
+
+
+  DEBUGCODE { fprintf(stderr, "LoadFont(): looking for %s\n in OS' font path\n", fn); }
+
+  /* try to load the font, if successful, return font*/
+  loaded_font = TTF_OpenFont(fn, font_size);
+  if (loaded_font != NULL)
+    return loaded_font;
+
+  /* We could not find desired font. If we were looking for something other  */
+  /* than default (Andika) font, print warning and try to load default font: */
+  if (strncmp(font_name, DEFAULT_FONT_NAME, FNLEN ) != 0)
+  {
+    fprintf(stderr, "Warning - could not load desired font: %s\n", font_name);
+    fprintf(stderr, "Trying to load default instead: %s\n", DEFAULT_FONT_NAME);
+    return load_font(DEFAULT_FONT_NAME, font_size);
+  }
+  else  /* Default failed also - bummer! */
+  {
+    fprintf(stderr, "LoadFont(): Error - couldn't load either selected or default font\n");
+    return NULL;
+  }
+}
+
+#endif

Modified: tuxtype/trunk/src/SDL_extras.h
===================================================================
--- tuxtype/trunk/src/SDL_extras.h	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/src/SDL_extras.h	2009-03-03 21:40:00 UTC (rev 920)
@@ -49,11 +49,16 @@
 /* These functions are the only code in the program that directly use SDL_Pango */
 /* If SDL_Pango not available, they fall back to SDL_ttf or do nothing,         */
 /* as appropriate.                                                              */
-SDL_Surface* BlackOutline(const char *t, const TTF_Font* font, const SDL_Color* c);
-SDL_Surface* BlackOutline_Unicode(const Uint16* t, const TTF_Font* font, const SDL_Color* c);
-SDL_Surface* BlackOutline_w(const wchar_t* t, const TTF_Font* font, const SDL_Color* c, int size);
-void init_SDLPango_Context();
-void free_SDLPango_Context();
+SDL_Surface* BlackOutline(const char* t, int font_size, const SDL_Color* c);
+SDL_Surface* BlackOutline_w(const wchar_t* t, int font_size, const SDL_Color* c, int length);
+
 void reset_DPI_SDLPango_Context(float dpi_x, float dpi_y);
 
+/*Text rendering functions: */
+int Setup_SDL_Text(void);
+void Cleanup_SDL_Text(void);
+//SDL_Surface* BlackOutline(const char* t, int size, SDL_Color* c);
+//SDL_Surface* SimpleText(const char *t, int size, SDL_Color* col);
+//SDL_Surface* SimpleTextWithOffset(const char *t, int size, SDL_Color* col, int *glyph_offset);
+
 #endif

Modified: tuxtype/trunk/src/alphabet.c
===================================================================
--- tuxtype/trunk/src/alphabet.c	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/src/alphabet.c	2009-03-03 21:40:00 UTC (rev 920)
@@ -613,17 +613,11 @@
 
 
 /* This version creates the letters using TTF_RenderUNICODE_Blended */
-int RenderLetters(const TTF_Font* letter_font)
+int RenderLetters(int font_size)
 {
-  Uint16 t[2];
+  wchar_t t[2];
   int i, j;  /* i is chars attempted, j is chars actually rendered. */
 
-  if (!letter_font)
-  {
-    fprintf(stderr, "RenderLetters() - invalid TTF_Font* argument!\n");
-    return 0;
-  }
-
   i = j = num_chars_used = 0;
 
   t[1] = '\0';
@@ -640,8 +634,8 @@
       }
 
       char_glyphs[j].unicode_value = t[0];
-      char_glyphs[j].white_glyph = BlackOutline_Unicode(t, letter_font, &white);
-      char_glyphs[j].red_glyph = BlackOutline_Unicode(t, letter_font, &red);
+      char_glyphs[j].white_glyph = BlackOutline_w(t, font_size, &white, 1);
+      char_glyphs[j].red_glyph = BlackOutline_w(t, font_size, &red, 1);
 
       j++;
       num_chars_used++;

Modified: tuxtype/trunk/src/funcs.h
===================================================================
--- tuxtype/trunk/src/funcs.h	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/src/funcs.h	2009-03-03 21:40:00 UTC (rev 920)
@@ -39,7 +39,7 @@
 SDL_Surface* GetRedGlyph(wchar_t t);
 int LoadKeyboard(void);
 int GetFinger(int i);
-int RenderLetters(const TTF_Font* letter_font);
+int RenderLetters(int font_size);
 int GetIndex(wchar_t uni_char);
 void GetKeyShift(int index, char *buf);
 int GetShift(int i);

Modified: tuxtype/trunk/src/globals.h
===================================================================
--- tuxtype/trunk/src/globals.h	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/src/globals.h	2009-03-03 21:40:00 UTC (rev 920)
@@ -116,8 +116,10 @@
 
 /* Default values for game_option_type struct */
 /* They can be changed in the struct to other values at run-time */
-#define DEFAULT_MENU_FONT       "AndikaDesRevG.ttf"
+#define DEFAULT_FONT_NAME       "AndikaDesRevG.ttf"
 #define DEFAULT_GAME_FONT       "AndikaDesRevG.ttf" 
+#define DEFAULT_MENU_FONT_SIZE	20
+#define GAME_FONT_SIZE	20
 #define DEFAULT_LOCALE	        "en_US.UTF-8"
 #define DEFAULT_USE_ENGLISH 1
 #define DEFAULT_FULLSCREEN 1
@@ -177,8 +179,6 @@
 
 
 
-#define MENU_FONT_SIZE	20
-#define GAME_FONT_SIZE	20
 
 /* Limits on word list size, word length, and on the number of distinct characters */
 /* that can be present within a word list: */

Modified: tuxtype/trunk/src/laser.c
===================================================================
--- tuxtype/trunk/src/laser.c	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/src/laser.c	2009-03-03 21:40:00 UTC (rev 920)
@@ -38,7 +38,6 @@
 static SDL_Surface* images[NUM_IMAGES] = {NULL};
 static Mix_Chunk* sounds[NUM_SOUNDS] = {NULL};
 static Mix_Music* musics[NUM_MUSICS] = {NULL};
-static TTF_Font* font = NULL;
 
 static int wave, speed, score, pre_wave_score, num_attackers, distanceMoved;
 static wchar_t ans[NUM_ANS];
@@ -706,8 +705,7 @@
 
 	/* Create the SDL_Surfaces for all of the characters */
         /* used in the word list: */
-	font = LoadFont(settings.theme_font_name, COMET_ZAP_FONT_SIZE);
-	RenderLetters(font);
+	RenderLetters(COMET_ZAP_FONT_SIZE);
 
 	/* Load images: */
 	for (i = 0; i < NUM_IMAGES; i++) 
@@ -744,11 +742,6 @@
 
 	FreeSprite(shield);
         shield = NULL;
-
-//	PauseUnloadMedia();
-
-	TTF_CloseFont(font);
-        font = NULL;
 }
 
 

Modified: tuxtype/trunk/src/loaders.c
===================================================================
--- tuxtype/trunk/src/loaders.c	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/src/loaders.c	2009-03-03 21:40:00 UTC (rev 920)
@@ -169,11 +169,11 @@
 
   /* We could not find desired font. If we were looking for something other  */
   /* than default (Andika) font, print warning and try to load default font: */
-  if (strncmp(font_name, DEFAULT_MENU_FONT, FNLEN ) != 0)
+  if (strncmp(font_name, DEFAULT_FONT_NAME, FNLEN ) != 0)
   {
     fprintf(stderr, "Warning - could not load desired font: %s\n", font_name);
-    fprintf(stderr, "Trying to load default instead: %s\n", DEFAULT_MENU_FONT);
-    return LoadFont(DEFAULT_MENU_FONT, font_size);
+    fprintf(stderr, "Trying to load default instead: %s\n", DEFAULT_FONT_NAME);
+    return LoadFont(DEFAULT_FONT_NAME, font_size);
   }
   else  /* Default failed also - bummer! */
   {

Modified: tuxtype/trunk/src/main.c
===================================================================
--- tuxtype/trunk/src/main.c	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/src/main.c	2009-03-03 21:40:00 UTC (rev 920)
@@ -161,10 +161,6 @@
   LibInit(lib_flags); /* calls SDL_Init(), TTF_Init(), some other settings */
   GraphicsInit(); /* calls SDL_SetVideoMode(), a few others     */
 
-  /* Initialize SDL_Pango, if we are using it. Note that our wrapper function */
-  /* being called here is just a no-op if SDL_Pango not enabled.              */
-  init_SDLPango_Context();
-
   if (settings.sys_sound)
   {
     Mix_VolumeMusic(settings.mus_volume);

Modified: tuxtype/trunk/src/options.c
===================================================================
--- tuxtype/trunk/src/options.c	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/src/options.c	2009-03-03 21:40:00 UTC (rev 920)
@@ -31,7 +31,7 @@
 /* Simply stick all the default values into the settings struct: */
 void Opts_Initialize(void)
 {
-  strncpy(settings.theme_font_name, DEFAULT_MENU_FONT, FNLEN);
+  strncpy(settings.theme_font_name, DEFAULT_FONT_NAME, FNLEN);
   strncpy(settings.theme_locale_name, DEFAULT_LOCALE, FNLEN);
   settings.use_english = DEFAULT_USE_ENGLISH;
   settings.fullscreen = DEFAULT_FULLSCREEN;

Modified: tuxtype/trunk/src/pause.c
===================================================================
--- tuxtype/trunk/src/pause.c	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/src/pause.c	2009-03-03 21:40:00 UTC (rev 920)
@@ -23,8 +23,10 @@
 static Mix_Chunk *pause_sfx = NULL;
 static SDL_Surface *up = NULL, *down = NULL, *left = NULL, *right = NULL;
 static SDL_Rect rectUp, rectDown, rectLeft, rectRight;
-static TTF_Font *f1 = NULL, *f2 = NULL;
+const int pause_font_size1 = 24;
+const int pause_font_size2 = 36;
 
+
 /* Local function prototypes: */
 //static void darkenscreen(void);
 static void draw_vols(int sfx, int mus);
@@ -221,8 +223,8 @@
 	right = LoadImage("right.png", IMG_ALPHA);
 	rectRight.w = right->w; rectRight.h = right->h;
 
-	f1 = LoadFont(settings.theme_font_name, 24);
-	f2 = LoadFont(settings.theme_font_name, 36);
+//	f1 = LoadFont(settings.theme_font_name, 24);
+//	f2 = LoadFont(settings.theme_font_name, 36);
 }
 
 static void pause_unload_media(void) {
@@ -236,9 +238,6 @@
 	SDL_FreeSurface(left);
 	SDL_FreeSurface(right);
         up = down = left = right = NULL;
-	TTF_CloseFont(f1);
-	TTF_CloseFont(f2);
-	f1 = f2 = NULL;
 }
 
 
@@ -276,7 +275,7 @@
 
   if (settings.sys_sound)
   {
-    t = BlackOutline(gettext("Sound Effects Volume"), f1, &white);
+    t = BlackOutline(gettext("Sound Effects Volume"), pause_font_size1, &white);
     if (t)
     {	
       s.y = screen->h/2 - 80;
@@ -285,7 +284,7 @@
       SDL_FreeSurface(t);
     }
 
-    t = BlackOutline(gettext("Music Volume"), f1, &white);
+    t = BlackOutline(gettext("Music Volume"), pause_font_size1, &white);
     if (t)
     {
       s.y = screen->h/2 + 20;
@@ -296,7 +295,7 @@
   }
   else  /* No sound: */
   {
-    t = BlackOutline(gettext("Sound & Music Disabled"), f1, &white);
+    t = BlackOutline(gettext("Sound & Music Disabled"), pause_font_size1, &white);
     if (t)
     {
       s.y = screen->h/2 - 80;
@@ -306,7 +305,7 @@
     }
   }
 
-  t = BlackOutline(gettext("Paused!"), f2, &white);
+  t = BlackOutline(gettext("Paused!"), pause_font_size2, &white);
   if (t)
   {
 	s.y = screen->h/2 - 180; //60;
@@ -315,7 +314,7 @@
 	SDL_FreeSurface(t);
   }
 
-  t = BlackOutline(gettext("Press escape again to return to menu"), f1, &white);
+  t = BlackOutline(gettext("Press escape again to return to menu"), pause_font_size1, &white);
   if (t)
   {
     s.y = screen->h/2 + 160;
@@ -324,7 +323,7 @@
     SDL_FreeSurface(t);
   }
 
-  t = BlackOutline(gettext("Press space bar to return to game"), f1, &white);
+  t = BlackOutline(gettext("Press space bar to return to game"), pause_font_size1, &white);
   if (t)
   {
     s.y = screen->h/2 + 200;
@@ -366,28 +365,4 @@
   }
 }
 
-// /* ==== fillscreen ====
-//  * RESULT: it will darken the screen by a factor of 4
-//  * WARNING: only works on 16bit screens right now!
-//  */
-// static void darkenscreen(void)
-// {
-//   Uint16 rm = screen->format->Rmask;
-//   Uint16 gm = screen->format->Gmask;
-//   Uint16 bm = screen->format->Bmask;
-//   Uint16* p; 
-//   int x, y;
-// 
-//   p = screen->pixels;
-// 
-//   for (y = 0; y < 480; y++) 
-//   {
-//     for (x = 0; x < 640; x++)
-//     {
-//       *p = (((*p&rm)>>2)&rm) | (((*p&gm)>>2)&gm) | (((*p&bm)>>2)&bm);
-//       p++;
-//     }
-//   }
-// }
 
-

Modified: tuxtype/trunk/src/playgame.c
===================================================================
--- tuxtype/trunk/src/playgame.c	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/src/playgame.c	2009-03-03 21:40:00 UTC (rev 920)
@@ -33,9 +33,8 @@
 
 //int o_lives; // something cal is working on
 //int sound_vol;
-static TTF_Font* label_font = NULL;
-static TTF_Font* fishy_font = NULL;
 
+
 //static SDL_Surface* background = NULL;
 static SDL_Surface* level[NUM_LEVELS] = {NULL};
 static SDL_Surface* number[NUM_NUMS] = {NULL};
@@ -1105,21 +1104,18 @@
                   settings.theme_font_name);
 	}
 
-        fishy_font = LoadFont(settings.theme_font_name, FISHY_FONT_SIZE);
-	label_font = LoadFont(settings.theme_font_name, LABEL_FONT_SIZE);
-
-        RenderLetters(fishy_font);
+        RenderLetters(FISHY_FONT_SIZE);
         LOG( " Done rendering letters \n ");
 
 
-	curlev = BlackOutline(gettext("Level"), label_font, &white);
-	lives  = BlackOutline(gettext("Lives"), label_font, &white);
-	fish   = BlackOutline(gettext("Fish"), label_font, &white);
+	curlev = BlackOutline(gettext("Level"), LABEL_FONT_SIZE, &white);
+	lives  = BlackOutline(gettext("Lives"), LABEL_FONT_SIZE, &white);
+	fish   = BlackOutline(gettext("Fish"), LABEL_FONT_SIZE, &white);
 
-	level[0] = BlackOutline(gettext("Easy"), label_font, &white);
-	level[1] = BlackOutline(gettext("Medium"), label_font, &white);
-	level[2] = BlackOutline(gettext("Hard"), label_font, &white);
-	level[3] = BlackOutline(gettext("Practice"), label_font, &white);
+	level[0] = BlackOutline(gettext("Easy"), LABEL_FONT_SIZE, &white);
+	level[1] = BlackOutline(gettext("Medium"), LABEL_FONT_SIZE, &white);
+	level[2] = BlackOutline(gettext("Hard"), LABEL_FONT_SIZE, &white);
+	level[3] = BlackOutline(gettext("Practice"), LABEL_FONT_SIZE, &white);
 
 	number_max_w = 0;
 	for (i = 0; i < NUM_NUMS; i++) {
@@ -1130,11 +1126,11 @@
 	}
 
 	for (i = 0; i < CONGRATS_FRAMES; i++) {
-		congrats[i] = BlackOutline(gettext("Congratulations"), label_font, &white);
+		congrats[i] = BlackOutline(gettext("Congratulations"), LABEL_FONT_SIZE, &white);
 	}
 
 	for (i = 0; i < OH_NO_FRAMES; i++) {
-		ohno[i] = BlackOutline(gettext("Oh No!"), label_font, &white);
+		ohno[i] = BlackOutline(gettext("Oh No!"), LABEL_FONT_SIZE, &white);
 	}
 	
 	if (settings.sys_sound) {
@@ -1176,7 +1172,7 @@
     return;
 
   SDL_Surface* m;
-  m = TTF_RenderUTF8_Shaded(label_font, msg, white, white);
+  m = BlackOutline(msg, LABEL_FONT_SIZE, &white);
 
   if (m)
   {
@@ -1323,14 +1319,6 @@
 
   FreeLetters();
 
-  if (fishy_font)
-    TTF_CloseFont(fishy_font);
-  fishy_font = NULL;
-
-  if (label_font)
-    TTF_CloseFont(label_font);
-  label_font = NULL;
-
   LOG( "FreeGame():\n-Freeing Tux Animations\n" );
 
   for (i = 0; i < TUX_NUM_STATES; i++ )

Modified: tuxtype/trunk/src/practice.c
===================================================================
--- tuxtype/trunk/src/practice.c	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/src/practice.c	2009-03-03 21:40:00 UTC (rev 920)
@@ -45,9 +45,6 @@
 static SDL_Surface* hand[11] = {NULL};
 static sprite* tux_stand = NULL;
 static sprite* tux_win = NULL;
-static TTF_Font* smallfont = NULL;
-static TTF_Font* medfont = NULL;
-static TTF_Font* bigfont = NULL;
 static SDL_Surface* time_label_srfc = NULL;
 static SDL_Surface* chars_label_srfc = NULL;
 static SDL_Surface* cpm_label_srfc = NULL;
@@ -100,7 +97,7 @@
 
 /*local function prototypes: */
 static int load_phrases(const char* phrase_file);
-static int find_next_wrap(const wchar_t* wstr, const TTF_Font* font, int width);
+static int find_next_wrap(const wchar_t* wstr, int font_size, int width);
 static void recalc_positions(void);
 static void calc_font_sizes(void);
 static void display_next_letter(wchar_t* str, Uint16 index);
@@ -220,7 +217,7 @@
 
         /* Find wrapping point: */
         wrap_pt = find_next_wrap(&phrases[cur_phrase][prev_wrap],
-                                  medfont, phrase_draw_width);
+                                  medfontsize, phrase_draw_width);
 
         /* Draw the phrase to be typed up to the next wrapping point: */
         DEBUGCODE
@@ -234,7 +231,7 @@
         }
 
         tmpsurf = BlackOutline_w(&phrases[cur_phrase][prev_wrap],
-                                  medfont, &white, wrap_pt + 1);
+                                  medfontsize, &white, wrap_pt + 1);
 
         if (tmpsurf)
         {
@@ -246,7 +243,7 @@
         /* Draw the text the player has typed so far: */
 
         tmpsurf = BlackOutline_w(&phrases[cur_phrase][prev_wrap],
-                                  medfont, &white,
+                                  medfontsize, &white,
                                   cursor - prev_wrap);
 
         DEBUGCODE
@@ -267,7 +264,7 @@
         }
 
         /* Update timer: */
-        tmpsurf = BlackOutline(time_str, smallfont, &white);
+        tmpsurf = BlackOutline(time_str, fontsize, &white);
         if (tmpsurf)
         {
           SDL_BlitSurface(tmpsurf, NULL, screen, &time_rect);
@@ -665,7 +662,7 @@
           /* Redraw everything below any "completed" lines of input text, */
           /* except we don't want to redraw keyboard to avoid flicker:    */
           tmpsurf = BlackOutline_w(&phrases[cur_phrase][prev_wrap],
-                                   medfont, &white,
+                                   medfontsize, &white,
                                    cursor - prev_wrap);
 
           if (tmpsurf)
@@ -677,7 +674,7 @@
           }
 
 
-          tmpsurf = BlackOutline(time_str, smallfont, &white);
+          tmpsurf = BlackOutline(time_str, fontsize, &white);
           if (tmpsurf)
           {
             SDL_BlitSurface(CurrentBkgd(), &time_rect, screen, &time_rect);
@@ -686,7 +683,7 @@
             tmpsurf = NULL;
           }
 
-          tmpsurf = BlackOutline(chars_typed_str, smallfont, &white);
+          tmpsurf = BlackOutline(chars_typed_str, fontsize, &white);
           if (tmpsurf)
           {
             SDL_BlitSurface(CurrentBkgd(), &chars_typed_rect, screen, &chars_typed_rect);
@@ -695,7 +692,7 @@
             tmpsurf = NULL;
           }
 
-          tmpsurf = BlackOutline(cpm_str, smallfont, &white);
+          tmpsurf = BlackOutline(cpm_str, fontsize, &white);
           if (tmpsurf)
           {
             SDL_BlitSurface(CurrentBkgd(), &cpm_rect, screen, &cpm_rect);
@@ -704,7 +701,7 @@
             tmpsurf = NULL;
           }
 
-          tmpsurf = BlackOutline(wpm_str, smallfont, &white);
+          tmpsurf = BlackOutline(wpm_str, fontsize, &white);
           if (tmpsurf)
           {
             SDL_BlitSurface(CurrentBkgd(), &wpm_rect, screen, &wpm_rect);
@@ -713,7 +710,7 @@
             tmpsurf = NULL;
           }
 
-          tmpsurf = BlackOutline(errors_str, smallfont, &white);
+          tmpsurf = BlackOutline(errors_str, fontsize, &white);
           if (tmpsurf)
           {
             SDL_BlitSurface(CurrentBkgd(), &errors_rect, screen, &errors_rect);
@@ -722,7 +719,7 @@
             tmpsurf = NULL;
           }
 
-          tmpsurf = BlackOutline(accuracy_str, smallfont, &white);
+          tmpsurf = BlackOutline(accuracy_str, fontsize, &white);
           if (tmpsurf)
           {
             SDL_BlitSurface(CurrentBkgd(), &accuracy_rect, screen, &accuracy_rect);
@@ -892,17 +889,14 @@
 
   /* load needed fonts: */
   calc_font_sizes();
-  smallfont = LoadFont(settings.theme_font_name, fontsize);
-  medfont = LoadFont(settings.theme_font_name, medfontsize);
-  bigfont = LoadFont(settings.theme_font_name, bigfontsize);
 
   /* create labels: */
-  time_label_srfc = BlackOutline(_("Time"), smallfont, &yellow);
-  chars_label_srfc = BlackOutline(_("Chars"), smallfont, &yellow);
-  cpm_label_srfc = BlackOutline(_("CPM"), smallfont, &yellow);
-  wpm_label_srfc = BlackOutline(_("WPM"), smallfont, &yellow);
-  errors_label_srfc = BlackOutline(_("Errors"), smallfont, &yellow);
-  accuracy_label_srfc = BlackOutline(_("Accuracy"), smallfont, &yellow);
+  time_label_srfc = BlackOutline(_("Time"), fontsize, &yellow);
+  chars_label_srfc = BlackOutline(_("Chars"), fontsize, &yellow);
+  cpm_label_srfc = BlackOutline(_("CPM"), fontsize, &yellow);
+  wpm_label_srfc = BlackOutline(_("WPM"), fontsize, &yellow);
+  errors_label_srfc = BlackOutline(_("Errors"), fontsize, &yellow);
+  accuracy_label_srfc = BlackOutline(_("Accuracy"), fontsize, &yellow);
 
   /* Get out if anything failed to load: */
   if (load_failed
@@ -911,9 +905,6 @@
     ||!tux_win
     ||!tux_stand
     ||!wrong
-    ||!smallfont
-    ||!medfont
-    ||!bigfont
     ||!keyboard
     ||!hand_shift[0]
     ||!hand_shift[1]
@@ -932,7 +923,7 @@
 
   /* Now render letters for glyphs in alphabet: */
   /* This is used for keyboard graphic */
-  RenderLetters(smallfont);
+  RenderLetters(fontsize);
   GenerateKeyboard(keyboard);
 
   LOG("DONE - Loading practice media\n");
@@ -956,12 +947,6 @@
     { LOG("tux_stand did not load\n");}
   if (!wrong)
     { LOG("wrong did not load\n");}
-  if (!smallfont)
-    { LOG("smallfont did not load\n");}
-  if (!medfont)
-    { LOG("medfont did not load\n");}
-  if (!bigfont)
-    { LOG("bigfont did not load\n");}
   if (!keyboard)
     { LOG("keyboard did not load\n");}
   if (!hand_shift[0])
@@ -990,7 +975,7 @@
 
 static void recalc_positions(void)
 {
-  int text_height = TTF_FontHeight(smallfont);
+  int text_height = fontsize * 1.5;
 
   if (!keyboard
     ||!tux_win
@@ -1100,7 +1085,7 @@
   phr_text_rect.x = top_pane.x + 5;
   phr_text_rect.y = top_pane.y + top_pane.h * 0.3;
   phr_text_rect.w = top_pane.w - 5;
-  phr_text_rect.h = TTF_FontHeight(medfont);
+  phr_text_rect.h = medfontsize;
 
   /* we can't just use phr_text_rect.w to calc wrap */
   /* because SDL_BlitSurface() clobbers it: */
@@ -1109,7 +1094,7 @@
   user_text_rect.x = top_pane.x + 5;
   user_text_rect.y = top_pane.y + top_pane.h * 0.6;
   user_text_rect.w = top_pane.w - 5;
-  user_text_rect.h = TTF_FontHeight(medfont);
+  user_text_rect.h = medfontsize * 1.5;
 
   /* Set up all the locations within the bottom pane: */
   keyboard_loc.x = bottom_pane.x + bottom_pane.w/4 - keyboard->w/4;
@@ -1125,8 +1110,8 @@
 
   nextletter_rect.x = keyboard_loc.x + keyboard_loc.w - 80;
   nextletter_rect.y = keyboard_loc.y + keyboard_loc.h;
-  nextletter_rect.w = TTF_FontHeight(bigfont) * 1.5;
-  nextletter_rect.h = TTF_FontHeight(bigfont);
+  nextletter_rect.w = bigfontsize * 1.5;
+  nextletter_rect.h = bigfontsize * 1.5;
 
 }
 
@@ -1177,18 +1162,6 @@
     SDL_FreeSurface(keyboard);
   keyboard = NULL;
 
-  if (smallfont)
-    TTF_CloseFont(smallfont);
-  smallfont = NULL;
-
-  if (medfont)
-    TTF_CloseFont(medfont);
-  medfont = NULL;
-
-  if (bigfont)
-    TTF_CloseFont(bigfont);
-  bigfont = NULL;
-
   for (i = 0; i < 10; i++) 
   {
     if (hand[i])
@@ -1310,7 +1283,7 @@
 
 /* Returns index relative to wstr of last char to be printed before break.  */
 /* (i.e. end of last full word that fits within 'width'                     */
-static int find_next_wrap(const wchar_t* wstr, const TTF_Font* font, int width)
+static int find_next_wrap(const wchar_t* wstr, int font_size, int width)
 {
   wchar_t buf[MAX_PHRASE_LENGTH];
   char UTF8buf[MAX_PHRASE_LENGTH];
@@ -1321,6 +1294,8 @@
   int i = 0;
   int phr_length = 0;
   int test_w = 0;      /* The width in pixels of the SDL-rendered string */
+  /* FIXME get rid of this once overhaul done: */
+  TTF_Font* font = LoadFont(DEFAULT_FONT_NAME , font_size);
 
   LOG("Entering find__next_wrap\n");
 
@@ -1425,7 +1400,7 @@
 /* Displays the next letter to be typed in a large font */
 static void display_next_letter(wchar_t *str, Uint16 index)
 {
-  Uint16 ltr[2];
+  wchar_t ltr[2];
   SDL_Surface* s = NULL;
 
   if (!str || (index >= MAX_PHRASE_LENGTH))
@@ -1434,7 +1409,7 @@
   ltr[0] = str[index];
   ltr[1] = '\0';
 
-  s = BlackOutline_Unicode(ltr, bigfont, &white);
+  s = BlackOutline_w(ltr, bigfontsize, &white, 1);
 
   if (s)
   {

Modified: tuxtype/trunk/src/scripting.c
===================================================================
--- tuxtype/trunk/src/scripting.c	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/src/scripting.c	2009-03-03 21:40:00 UTC (rev 920)
@@ -125,7 +125,6 @@
   SDL_Surface* left = NULL, *right = NULL;
   SDL_Rect leftRect, rightRect;
   SDL_Rect titleRects[8];
-  TTF_Font* font = NULL;
 
   int stop = 0;
   int loc = 0;
@@ -142,8 +141,6 @@
 
   LOG("Entering TestLesson():\n");
 
-  font = LoadFont(settings.theme_font_name, MENU_FONT_SIZE);
-
   /* First look in theme path, if desired: */
   if (!settings.use_english)
   {
@@ -212,8 +209,8 @@
   /* let the user pick the lesson script */
   for (i = 0; i < num_scripts; i++)
   {
-    titles[i] = BlackOutline( script_filenames[i], font, &white );
-    select[i] = BlackOutline( script_filenames[i], font, &yellow);
+    titles[i] = BlackOutline( script_filenames[i], DEFAULT_MENU_FONT_SIZE, &white );
+    select[i] = BlackOutline( script_filenames[i], DEFAULT_MENU_FONT_SIZE, &yellow);
   }
 
   left = LoadImage("left.png", IMG_ALPHA);
@@ -400,10 +397,7 @@
 
   FreeBothBkgds();
 
-  TTF_CloseFont(font);
-  font = NULL;
 
-
   if (stop == 2)
   {
     SDL_ShowCursor(1);

Modified: tuxtype/trunk/src/setup.c
===================================================================
--- tuxtype/trunk/src/setup.c	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/src/setup.c	2009-03-03 21:40:00 UTC (rev 920)
@@ -19,6 +19,7 @@
 
 #include "globals.h"
 #include "funcs.h"
+#include "SDL_extras.h"
 
 //NOTE this PATHS[] is an ugly hack which is no longer used.  We
 //now just confirm that DATA_PREFIX is valid, as it should be.
@@ -190,13 +191,15 @@
             LOG("Mix_OpenAudio() successful\n");
         }
 
-	LOG( "-about to init SDL_ttf\n" );
+  LOG( "-about to init SDL text library (SDL_ttf or SDL_Pango\n" );
 
-	if (TTF_Init() < 0) {
-		fprintf( stderr, "Couldn't initialize SDL_ttf\n" );
-		exit(2);
-	}
-
+  if (!Setup_SDL_Text())
+  {
+    fprintf( stderr, "Couldn't initialize desired SDL text libary\n" );
+    exit(2);
+  }
+  /* FIXME get rid of this as soon as text overhaul done: */
+  TTF_Init();
 //	atexit(TTF_Quit);
 
 	SDL_EnableKeyRepeat( 0, SDL_DEFAULT_REPEAT_INTERVAL );
@@ -453,7 +456,7 @@
       /* (Need to do this in case we are changing from a theme with */
       /* a special font to a theme that uses the default, but lacks */
       /* an explicit statement to use the default(                  */
-      strncpy(settings.theme_font_name, DEFAULT_MENU_FONT, FNLEN);
+      strncpy(settings.theme_font_name, DEFAULT_FONT_NAME, FNLEN);
       
 
       /* Load fontname or any other theme-specific settings: */
@@ -470,7 +473,7 @@
     {
       settings.use_english = 1; // default is to use English if we cannot find theme
       strcpy(settings.theme_name, "");
-      strncpy(settings.theme_font_name, DEFAULT_MENU_FONT, FNLEN);
+      strncpy(settings.theme_font_name, DEFAULT_FONT_NAME, FNLEN);
       strncpy(settings.theme_locale_name, DEFAULT_LOCALE, FNLEN);
       fprintf(stderr, "SetupPaths(): could not find '%s'\n", full_theme_path);
     }
@@ -479,7 +482,7 @@
   {
     settings.use_english = 1; // default is to use English if we cannot find theme
     strcpy(settings.theme_name, "");
-    strncpy(settings.theme_font_name, DEFAULT_MENU_FONT, FNLEN);
+    strncpy(settings.theme_font_name, DEFAULT_FONT_NAME, FNLEN);
     strncpy(settings.theme_locale_name, DEFAULT_LOCALE, FNLEN);
   }
 
@@ -526,7 +529,6 @@
 {
   SDL_FreeSurface(screen);
   screen = NULL;
-
+  Cleanup_SDL_Text();
   SDL_Quit();
-  TTF_Quit();
 }

Modified: tuxtype/trunk/src/theme.c
===================================================================
--- tuxtype/trunk/src/theme.c	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/src/theme.c	2009-03-03 21:40:00 UTC (rev 920)
@@ -42,7 +42,7 @@
   SDL_Rect leftRect, rightRect;
   SDL_Rect worldRect, photoRect;
   SDL_Rect titleRects[8];
-  TTF_Font* font = NULL;  
+
   int stop = 0;
   int loc = 0;
   int old_loc = 1;
@@ -101,15 +101,13 @@
   closedir(themesDir);
 
   settings.use_english = 1;
-  // HACK: is font empty now???
-  font = LoadFont(settings.theme_font_name, MENU_FONT_SIZE);
 
-  titles[0] = BlackOutline( "English", font, &white );
-  select[0] = BlackOutline( "English", font, &yellow);
+  titles[0] = BlackOutline( "English", DEFAULT_MENU_FONT_SIZE, &white );
+  select[0] = BlackOutline( "English", DEFAULT_MENU_FONT_SIZE, &yellow);
   for (i = 1; i < themes; i++)
   {
-    titles[i] = BlackOutline( themeNames[i], font, &white );
-    select[i] = BlackOutline( themeNames[i], font, &yellow);
+    titles[i] = BlackOutline( themeNames[i], DEFAULT_MENU_FONT_SIZE, &white );
+    select[i] = BlackOutline( themeNames[i], DEFAULT_MENU_FONT_SIZE, &yellow);
   }
 
   LoadBothBkgds("main_bkg.png");
@@ -148,8 +146,6 @@
     titleRects[i].w = titleRects[i].h = titleRects[i].x = 0;
   }
 
-  TTF_CloseFont(font);
-  font = NULL;
   settings.use_english = old_use_english;
 
   while (!stop)

Modified: tuxtype/trunk/src/titlescreen.c
===================================================================
--- tuxtype/trunk/src/titlescreen.c	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/src/titlescreen.c	2009-03-03 21:40:00 UTC (rev 920)
@@ -39,7 +39,6 @@
 static Mix_Chunk* snd_move = NULL;
 static Mix_Chunk* snd_select = NULL;
 static Mix_Chunk* snd_welcome = NULL; 
-static TTF_Font* font = NULL;
 
 /* --- locations we need --- */
 static SDL_Rect text_dst[TITLE_MENU_ITEMS + 1];     // location of menu text
@@ -908,8 +907,8 @@
       }
 
       /* --- create text surfaces --- */
-      reg_text[i][j] = BlackOutline( gettext(menu_text[j + 5 * i]), font, &white);
-      sel_text[i][j] = BlackOutline( gettext(menu_text[j + 5 * i]), font, &yellow);
+      reg_text[i][j] = BlackOutline( gettext(menu_text[j + 5 * i]), DEFAULT_MENU_FONT_SIZE, &white);
+      sel_text[i][j] = BlackOutline( gettext(menu_text[j + 5 * i]), DEFAULT_MENU_FONT_SIZE, &yellow);
 
       /* (first make sure ptr valid to avoid segfault) */
       if (sel_text[i][j] && sel_text[i][j]->w > max)
@@ -1045,15 +1044,13 @@
     fprintf(stderr, "titlescreen.c load_media(): settings.theme_font_name is %s\n",
             settings.theme_font_name);
   }
-  font = LoadFont(settings.theme_font_name, MENU_FONT_SIZE);
 
   /* Make sure we were successful: */
   if (!CurrentBkgd()
    || !title
    || !speaker
    || !speakeroff
-   || !Tux
-   || !font)
+   || !Tux)
   {
     fprintf(stderr, "load_media() - could not load all needed files\n");
     unload_media();
@@ -1113,12 +1110,6 @@
     Tux = NULL;
   }
 
-  if (font)
-  {
-    TTF_CloseFont(font);
-    font = NULL;
-  }
-
   LOG("Leaving load_media():\n");
 
   unload_menu();
@@ -1134,25 +1125,11 @@
 
   LOG( "NotImplemented() - creating text\n" );
 
-  s1 = BlackOutline( gettext_noop("Work In Progress!"), font, &white);
-  s2 = BlackOutline( gettext_noop("This feature is not ready yet"), font, &white);
-  s3 = BlackOutline( gettext_noop("Discuss the future of TuxTyping at"), font, &white);
+  s1 = BlackOutline( gettext_noop("Work In Progress!"), DEFAULT_MENU_FONT_SIZE, &white);
+  s2 = BlackOutline( gettext_noop("This feature is not ready yet"), DEFAULT_MENU_FONT_SIZE, &white);
+  s3 = BlackOutline( gettext_noop("Discuss the future of TuxTyping at"), DEFAULT_MENU_FONT_SIZE, &white);
+  s4 = BlackOutline( "http://tuxtype.sf.net/forums", DEFAULT_MENU_FONT_SIZE, &white);
 
-  /* we always want the URL in english */
-  /* NOTE: all fonts are almost certain to include glyphs for ASCII, */
-  /* so the following "english_font" hackery is probably unnecessary: */
-  if (!settings.use_english)
-  {
-    TTF_Font *english_font;
-    settings.use_english = 1;
-    english_font = LoadFont(DEFAULT_MENU_FONT, MENU_FONT_SIZE);
-    s4 = BlackOutline( "http://tuxtype.sf.net/forums", english_font, &white);
-    TTF_CloseFont(english_font);
-    settings.use_english = 0;
-  }
-  else 
-    s4 = BlackOutline( "http://tuxtype.sf.net/forums", font, &white);
-
   tux = LoadSprite("tux/tux-egypt", IMG_ALPHA);
 
   if (s1 && s2 && s3 && s4 && tux)
@@ -1333,8 +1310,8 @@
   /* present.                                                        */
   for (i = 0; i < lists; i++)
   {
-    titles[i] = BlackOutline( wordlistName[i], font, &white );
-    select[i] = BlackOutline( wordlistName[i], font, &yellow);
+    titles[i] = BlackOutline( wordlistName[i], DEFAULT_MENU_FONT_SIZE, &white );
+    select[i] = BlackOutline( wordlistName[i], DEFAULT_MENU_FONT_SIZE, &yellow);
   }
 
   left = LoadImage("left.png", IMG_ALPHA);
@@ -1532,7 +1509,6 @@
   SDL_Surface* titles[MAX_WORD_LISTS] = {NULL};
   SDL_Surface* select[MAX_WORD_LISTS] = {NULL};
   SDL_Surface* bkg = NULL;
-  TTF_Font* font = NULL;
   SDL_Rect titleRects[8];
   int stop = 0;
   int loc = 0;
@@ -1617,16 +1593,13 @@
 
   settings.use_english = 1;
         // HACK: is font empty now???
-  font = LoadFont(settings.theme_font_name, MENU_FONT_SIZE);
 
   for (i = 0; i<themes; i++)
   {
-    titles[i] = BlackOutline(wordTypes[i], font, &white);
-    select[i] = BlackOutline(wordTypes[i], font, &yellow);
+    titles[i] = BlackOutline(wordTypes[i], DEFAULT_MENU_FONT_SIZE, &white);
+    select[i] = BlackOutline(wordTypes[i], DEFAULT_MENU_FONT_SIZE, &yellow);
   }
 
-  TTF_CloseFont(font);
-  font = NULL;
 
   settings.use_english = old_use_english;
 
@@ -1763,7 +1736,6 @@
   SDL_Surface* left = NULL, *right = NULL;
   SDL_Rect leftRect, rightRect;
   SDL_Surface* bkg = NULL;
-  TTF_Font* font = NULL;
   SDL_Rect titleRects[8];
   int stop = 0;
   int loc = 0;
@@ -1812,19 +1784,14 @@
   fclose(fp); 
 
   settings.use_english = 1;
-        // HACK: is font empty now???
-  font = LoadFont(settings.theme_font_name, MENU_FONT_SIZE);
 
   for (i = 0; i<themes; i++)
   {
-    titles[i] = BlackOutline(editWordW[i], font, &white);
+    titles[i] = BlackOutline(editWordW[i], DEFAULT_MENU_FONT_SIZE, &white);
     strcat(editWordY[i],"|");
-    select[i] = BlackOutline(editWordY[i], font, &yellow);
+    select[i] = BlackOutline(editWordY[i], DEFAULT_MENU_FONT_SIZE, &yellow);
   }
 
-  TTF_CloseFont(font);
-  font = NULL;
-
   settings.use_english = old_use_english;
   strncpy(settings.theme_data_path, old_theme_path, FNLEN - 1);
 
@@ -1885,18 +1852,15 @@
 
         if (event.key.keysym.sym == SDLK_BACKSPACE)
         {
-          font = LoadFont(settings.theme_font_name, MENU_FONT_SIZE);
           len = ConvertFromUTF8(temp, editWordW[loc], FNLEN);
           temp[len - 1] = temp[len];
           len = ConvertToUTF8(temp, editWordW[loc], FNLEN);
-          titles[loc] = BlackOutline(editWordW[loc], font, &white );
+          titles[loc] = BlackOutline(editWordW[loc], DEFAULT_MENU_FONT_SIZE, &white );
           len = ConvertFromUTF8(temp, editWordY[loc], FNLEN);
           temp[len - 2] = temp[len - 1];
           temp[len - 1] = temp[len];
           len = ConvertToUTF8(temp, editWordY[loc], FNLEN);
-          select[loc] = BlackOutline(editWordY[loc], font, &yellow);
-          TTF_CloseFont(font);
-          font = NULL;
+          select[loc] = BlackOutline(editWordY[loc], DEFAULT_MENU_FONT_SIZE, &yellow);
           break;
         }
 
@@ -1955,20 +1919,17 @@
 
         if(i)
         {
-          font = LoadFont(settings.theme_font_name, MENU_FONT_SIZE);
           len = ConvertFromUTF8(temp, editWordW[loc], FNLEN);
           temp[len] = event.key.keysym.unicode;
           temp[len + 1] = 0;
           ConvertToUTF8(temp,editWordW[loc], FNLEN);
-          titles[loc] = BlackOutline(editWordW[loc], font, &white );
+          titles[loc] = BlackOutline(editWordW[loc], DEFAULT_MENU_FONT_SIZE, &white );
           len = ConvertFromUTF8(temp,editWordY[loc], FNLEN);
           temp[len + 1]=0;
           temp[len] = temp[len-1];
           temp[len - 1] = event.key.keysym.unicode;
           ConvertToUTF8(temp,editWordY[loc], FNLEN);
-          select[loc] = BlackOutline(editWordY[loc], font, &yellow);
-          TTF_CloseFont(font);
-          font = NULL;
+          select[loc] = BlackOutline(editWordY[loc], DEFAULT_MENU_FONT_SIZE, &yellow);
           i = 0;
           break;
         }

Modified: tuxtype/trunk/tuxtype.spec.in
===================================================================
--- tuxtype/trunk/tuxtype.spec.in	2009-03-03 16:26:50 UTC (rev 919)
+++ tuxtype/trunk/tuxtype.spec.in	2009-03-03 21:40:00 UTC (rev 920)
@@ -11,36 +11,47 @@
 # norootforbuild
 
 Name:           @PACKAGE@
+Obsoletes: 	tuxtype_preview <= @VERSION@
+Provides:  	tuxtype_preview = @VERSION@
 Summary:        Typing tutor for children
 Url:            http://alioth.debian.org/projects/tux4kids/
-%define         realname tuxtype_w_fonts
+%define         realname @PACKAGE at _w_fonts
+%define         progname tuxtype
 License:        GNU General Public License (GPL) v2, Open Font License v1.1, free (BSD-like) license
 Group:          Amusements/Games/Action/Other
 Version:        @VERSION@
 Release:        1
 Vendor:         openSUSE-Education
 Source:         %realname-%version.tar.bz2
-Source1:        tuxtype.desktop
-BuildRequires:  SDL-devel SDL_image-devel SDL_mixer-devel dialog gcc-c++ SDL_Pango-devel gtk-devel
-BuildRequires:  SDL_ttf-devel
-BuildRequires:  ImageMagick 
-%if 0%{?suse_version}
-BuildRequires:  update-desktop-files
-BuildRequires:  fdupes
-BuildRequires:  freefont
+
+BuildRequires:  SDL_image-devel >= 1.2.2  
+BuildRequires:  SDL_ttf-devel > 2.0.8  
+BuildRequires:  SDL-devel  
+BuildRequires:  SDL_mixer-devel  
+BuildRequires:  SDL_Pango-devel 
+BuildRequires:  ImageMagick
+
+%if 0%{?suse_version}  
+BuildRequires:  update-desktop-files  
+BuildRequires:  fdupes  
+%endif  
+
+%if 0%{?fedora_version}  
+BuildRequires:  desktop-file-utils  
+%endif  
+
+%if 0%{?mandriva_version}  
+BuildRequires:  desktop-file-utils  
+Requires(post): desktop-file-utils  
+Requires(postun): desktop-file-utils  
 %endif
-%if 0%{?fedora_version}
-BuildRequires:  desktop-file-utils
-BuildRequires:  freefont
-%endif
-%if 0%{?mandriva_version}
-BuildRequires:  fonts-ttf-freefont
-BuildRequires:  pulseaudio-esound-compat
-Requires(post): desktop-file-utils
-Requires(postun): desktop-file-utils
-%endif
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
+%if 0%{?mandriva_version} >= 2009
+BuildRequires: pulseaudio-esound-compat
+%endif  
 
+BuildRoot:      %{_tmppath}/%{progname}-%{version}-build
+
+
 %description
 Tux Typing is an educational typing tutor game starring Tux, the Linux
 penguin.
@@ -82,50 +93,60 @@
 
 %prep
 %setup -q -n %realname-%version
+rm -rf $(find . -type d -name CVS)
+rm -rf $(find . -type d -name .svn)
+rm -rf $(find . -type d -name .xvpics)
 
 %build
-## autoreconf --force --install
-%configure --docdir="%{_defaultdocdir}/%{name}" --disable-rpath
+%configure --docdir="%{_defaultdocdir}/%{progname}" --disable-rpath
 make %{?jobs:-j %jobs}
 
+
 %install
 %if 0%{?suse_version} < 1030
-for i in $(find . -name Makefile ); do
+for i in $(find . -progname Makefile ); do
     sed -i "s#MKDIR_P#mkdir_p#g" $i
 done
 %endif
+
 make DESTDIR=%{buildroot} install
 # remove unneeded data
 rm -rf %buildroot/usr/doc/tuxtype
 rm -rf %buildroot%_datadir/tuxtype/{autorun.inf,OFL.txt}
+
 # install desktop file and icon
 mkdir -p %buildroot%_datadir/pixmaps
-convert -scale 48x48 %name.ico %buildroot%_datadir/pixmaps/%name.png
+convert -scale 48x48 tuxtype.ico %buildroot%_datadir/pixmaps/%progname.png
 rm -rf %buildroot%_datadir/tuxtype/*.ico
+
 %if 0%{?suse_version}
-#install -Dm644 %{SOURCE1} %buildroot%_datadir/applications/%name.desktop
-%suse_update_desktop_file -i %name Game KidsGame
+#install -Dm644 %{SOURCE1} %buildroot%_datadir/applications/%progname.desktop
+%suse_update_desktop_file -i %progname Game KidsGame
 # save some discspace using symlinks
 %fdupes -s %buildroot
 %endif
+
 %if 0%{?fedora_version}
 # install desktop file
 desktop-file-install --vendor="%{vendor}" \
   --dir=%buildroot/%_datadir/applications \
-  %{SOURCE1}
+  tuxtype.desktop
 %endif
+
 %if 0%{?mandriva_version}
 #desktop-file-install --vendor="%{vendor}" \
 #  --dir=%buildroot/%_datadir/applications \
-install -Dm644  %{SOURCE1} %buildroot/%_datadir/applications/%name.desktop
+install -Dm644  tuxtype.desktop %buildroot/%_datadir/applications/%progname.desktop
 %endif
+
 # grmbl....
 if [ ! -d %buildroot%{_datadir}/fonts/truetype ]; then
 	mkdir -p %buildroot%{_datadir}/fonts/truetype
 	ln -s %{_datadir}/tuxtype/fonts %buildroot%{_datadir}/fonts/truetype/ttf-sil-andika
 fi
-%find_lang %name
 
+%find_lang %progname
+
 %if 0%{?mandriva_version}
 %post
 %{update_menus}
@@ -137,23 +158,27 @@
 %clean
 rm -rf %buildroot
 
-%files -f %name.lang
+%files -f %progname.lang
 %defattr(-,root,root)
-%doc README AUTHORS COPYING ChangeLog TODO 
-# %doc tuxtype/docs/en/*.html
+#%doc README AUTHORS COPYING ChangeLog TODO 
+%dir %_docdir/%{progname}
+%doc %_docdir/%{progname}/*
 %doc data/sounds/README_SOUNDS.TXT
 %doc data/images/README_IMAGES.TXT
-%if 0%{?fedora_version}
-%dir %_docdir/%{name}
-%doc %_docdir/%{name}/*
-%endif
+
+#%if 0%{?fedora_version}
+#%dir %_docdir/%{progname}
+#%doc %_docdir/%{progname}/*
+#%endif
+
 %{_bindir}/tuxtype
 %dir %_datadir/tuxtype
 #%dir %_datadir/tuxtype/fonts
 %dir %{_datadir}/fonts/truetype
 %dir %{_datadir}/fonts/truetype/ttf-sil-andika
 %_datadir/tuxtype/*
-%_datadir/applications/*%name.desktop
-%_datadir/pixmaps/%name.png
+%_datadir/applications/*%progname.desktop
+%_datadir/pixmaps/%progname.png
 
+
 %changelog 

Added: tuxtype/trunk/tuxtype_preview.spec.in
===================================================================
--- tuxtype/trunk/tuxtype_preview.spec.in	                        (rev 0)
+++ tuxtype/trunk/tuxtype_preview.spec.in	2009-03-03 21:40:00 UTC (rev 920)
@@ -0,0 +1,186 @@
+## tuxtype_preview.spec.in - process with configure to substitute in PACKAGE
+## VERSION strings
+#
+#
+# spec file for package tuxtype_preview
+#
+# This specfile version produces rpm packages with "tuxtype_preview"
+# in the name, rather than "tuxtype". The tuxtype program is installed
+# identically with either specfile.  This flavor is intended for pre-release
+# builds.
+#
+# This file and all modifications and additions to the pristine
+# package are under the same license as the package itself.
+#
+
+# norootforbuild
+
+Name:           @PACKAGE at _preview
+Obsoletes: 	tuxtype <= @VERSION@
+Provides:  	tuxtype = @VERSION@
+Summary:        Typing tutor for children
+Url:            http://alioth.debian.org/projects/tux4kids/
+%define         realname @PACKAGE at _w_fonts
+%define         progname tuxtype
+License:        GNU General Public License (GPL) v2, Open Font License v1.1, free (BSD-like) license
+Group:          Amusements/Games/Action/Other
+Version:        @VERSION@
+Release:        1
+Vendor:         openSUSE-Education
+Source:         %realname-%version.tar.bz2
+
+BuildRequires:  SDL_image-devel >= 1.2.2  
+BuildRequires:  SDL_ttf-devel > 2.0.8  
+BuildRequires:  SDL-devel  
+BuildRequires:  SDL_mixer-devel  
+BuildRequires:  SDL_Pango-devel 
+BuildRequires:  ImageMagick
+
+%if 0%{?suse_version}  
+BuildRequires:  update-desktop-files  
+BuildRequires:  fdupes  
+%endif  
+
+%if 0%{?fedora_version}  
+BuildRequires:  desktop-file-utils  
+%endif  
+
+%if 0%{?mandriva_version}  
+BuildRequires:  desktop-file-utils  
+Requires(post): desktop-file-utils  
+Requires(postun): desktop-file-utils  
+%endif
+%if 0%{?mandriva_version} >= 2009
+BuildRequires: pulseaudio-esound-compat
+%endif  
+
+BuildRoot:      %{_tmppath}/%{progname}-%{version}-build
+
+
+%description
+Tux Typing is an educational typing tutor game starring Tux, the Linux
+penguin.
+
+In "Fish Cascade" you control Tux as he searches for fish to eat. Fish fall
+from the top of the screen. These fish have letters on them.  Unforunately
+for Tux, eating a fish with a letter on it will cause his stomach to
+become ill, so it is up to you to help Tux eat fish!  By typing the
+letters, it will cause them to disappear so tux can chow down on the
+fish.
+
+In "Comet Zap" you control Tux as he defends the cities from comets.  To
+protect a city from a comet, type the letter on the comet and it will
+cause Tux to destroy it with a laser! (In case you wondered, Comet Zap
+is an adaptation of the *great* math drill game, "Tux, of Math Command").
+
+"Phrase Typing" offers practice typing phrases and sentences, with on-
+screen display of accuracy and typing speed.
+
+"Lessons" is an additional typing activity that we have not yet
+completed. You will find other menu entries for planned features
+that still need to be implemented.
+
+Authors:
+--------
+    Current maintainer and programming lead:
+    David Bruce <davidstuartbruce at gmail.com>
+
+    Jesse Andrews <jdandr2 at uky.edu>
+    Calvin Arndt <calarndt at tux4kids.org>
+    Sam Hart <hart at geekcomix.com>  --- Sam started it all with TuxType 1!!!
+    Jacob Greig <bombastic at firstlinux.net>
+    Sreyas Kurumanghat <k.sreyas at gmail.com>
+    Sreerenj Balachandran <bsreerenj at gmail.com>
+    Vimal Ravi <vimal_ravi at rediff.com>
+    Prince K. Antony <prince.kantony at gmail.com>
+    Mobin Mohan <mobinmohan at gmail.com>
+
+
+%prep
+%setup -q -n %realname-%version
+
+%build
+%configure --docdir="%{_defaultdocdir}/%{progname}" --disable-rpath
+make %{?jobs:-j %jobs}
+
+
+%install
+%if 0%{?suse_version} < 1030
+for i in $(find . -progname Makefile ); do
+    sed -i "s#MKDIR_P#mkdir_p#g" $i
+done
+%endif
+
+make DESTDIR=%{buildroot} install
+# remove unneeded data
+rm -rf %buildroot/usr/doc/tuxtype
+rm -rf %buildroot%_datadir/tuxtype/{autorun.inf,OFL.txt}
+
+# install desktop file and icon
+mkdir -p %buildroot%_datadir/pixmaps
+convert -scale 48x48 tuxtype.ico %buildroot%_datadir/pixmaps/%progname.png
+rm -rf %buildroot%_datadir/tuxtype/*.ico
+
+%if 0%{?suse_version}
+#install -Dm644 %{SOURCE1} %buildroot%_datadir/applications/%progname.desktop
+%suse_update_desktop_file -i %progname Game KidsGame
+# save some discspace using symlinks
+%fdupes -s %buildroot
+%endif
+
+%if 0%{?fedora_version}
+# install desktop file
+desktop-file-install --vendor="%{vendor}" \
+  --dir=%buildroot/%_datadir/applications \
+  tuxtype.desktop
+%endif
+
+%if 0%{?mandriva_version}
+#desktop-file-install --vendor="%{vendor}" \
+#  --dir=%buildroot/%_datadir/applications \
+install -Dm644  tuxtype.desktop %buildroot/%_datadir/applications/%progname.desktop
+%endif
+
+# grmbl....
+if [ ! -d %buildroot%{_datadir}/fonts/truetype ]; then
+	mkdir -p %buildroot%{_datadir}/fonts/truetype
+	ln -s %{_datadir}/tuxtype/fonts %buildroot%{_datadir}/fonts/truetype/ttf-sil-andika
+fi
+
+%find_lang %progname
+
+%if 0%{?mandriva_version}
+%post
+%{update_menus}
+
+%postun
+%{clean_menus}
+%endif
+
+%clean
+rm -rf %buildroot
+
+%files -f %progname.lang
+%defattr(-,root,root)
+#%doc README AUTHORS COPYING ChangeLog TODO 
+%dir %_docdir/%{progname}
+%doc %_docdir/%{progname}/*
+%doc data/sounds/README_SOUNDS.TXT
+%doc data/images/README_IMAGES.TXT
+
+#%if 0%{?fedora_version}
+#%dir %_docdir/%{progname}
+#%doc %_docdir/%{progname}/*
+#%endif
+
+%{_bindir}/tuxtype
+%dir %_datadir/tuxtype
+#%dir %_datadir/tuxtype/fonts
+%dir %{_datadir}/fonts/truetype
+%dir %{_datadir}/fonts/truetype/ttf-sil-andika
+%_datadir/tuxtype/*
+%_datadir/applications/*%progname.desktop
+%_datadir/pixmaps/%progname.png
+
+
+%changelog 




More information about the Tux4kids-commits mailing list