From 00acb5f719e64200c7295cd5ce985e1725b663c5 Mon Sep 17 00:00:00 2001 From: Huw Davies Date: Tue, 17 Aug 2004 22:33:14 +0000 Subject: [PATCH] First stab at Wine versions of Courier, System and MS Sans Serif fonts. --- Make.rules.in | 8 +- Makefile.in | 11 +- configure | 65 +- configure.ac | 25 +- fonts/.cvsignore | 14 + fonts/Makefile.in | 65 + fonts/genttf.ff | 3 + fonts/wine_courier.sfd | 1025 ++++++++++++++ fonts/wine_sans_serif.sfd | 2705 +++++++++++++++++++++++++++++++++++++ fonts/wine_system.sfd | 1074 +++++++++++++++ tools/.cvsignore | 2 + tools/Makefile.in | 14 +- tools/fnt2fon.c | 243 ++++ tools/sfnt2fnt.c | 420 ++++++ 14 files changed, 5649 insertions(+), 25 deletions(-) create mode 100644 fonts/.cvsignore create mode 100644 fonts/Makefile.in create mode 100644 fonts/genttf.ff create mode 100644 fonts/wine_courier.sfd create mode 100644 fonts/wine_sans_serif.sfd create mode 100644 fonts/wine_system.sfd create mode 100644 tools/fnt2fon.c create mode 100644 tools/sfnt2fnt.c diff --git a/Make.rules.in b/Make.rules.in index fc18bd9ed37..be8d31de7fd 100644 --- a/Make.rules.in +++ b/Make.rules.in @@ -51,6 +51,7 @@ RM = rm -f MV = mv LINT = @LINT@ LINTFLAGS = @LINTFLAGS@ +FONTFORGE = @FONTFORGE@ INCLUDES = -I$(SRCDIR) -I. -I$(TOPSRCDIR)/include -I$(TOPOBJDIR)/include $(EXTRAINCL) EXTRACFLAGS = @EXTRACFLAGS@ ALLCFLAGS = $(INCLUDES) $(DEFS) $(DLLFLAGS) $(EXTRACFLAGS) $(CPPFLAGS) $(CFLAGS) @@ -68,6 +69,8 @@ BIN2RES = $(TOOLSDIR)/tools/bin2res WMC = $(TOOLSDIR)/tools/wmc/wmc WIDL = $(TOOLSDIR)/tools/widl/widl WINEGCC = $(TOOLSDIR)/tools/winegcc/winegcc +SFNT2FNT = $(TOOLSDIR)/tools/sfnt2fnt +FNT2FON = $(TOOLSDIR)/tools/fnt2fon RC = $(WRC) RC16 = $(WRC) RCFLAGS = --nostdinc $(INCLUDES) $(DEFS) $(EXTRARCFLAGS) @@ -110,7 +113,7 @@ LINTS = $(C_SRCS:.c=.ln) # Implicit rules -.SUFFIXES: .mc .rc .mc.rc .res .res.o .spec .spec.c .spec.def .ok +.SUFFIXES: .mc .rc .mc.rc .res .res.o .spec .spec.c .spec.def .ok .sfd .ttf .c.o: $(CC) -c $(ALLCFLAGS) -o $@ $< @@ -139,6 +142,9 @@ LINTS = $(C_SRCS:.c=.ln) .c.ok: $(RUNTEST) $(RUNTESTFLAGS) $< && touch $@ +.sfd.ttf: + $(FONTFORGE) -script $(TOPSRCDIR)/fonts/genttf.ff $< + # 'all' target first in case the enclosing Makefile didn't define any target all: Makefile diff --git a/Makefile.in b/Makefile.in index ede2e78fcc8..c9596119bb2 100644 --- a/Makefile.in +++ b/Makefile.in @@ -26,10 +26,13 @@ LDCONFIG = @LDCONFIG@ LDD = @LDD@ MODULE = none +FONTSSUBDIRS = @FONTSSUBDIRS@ + # Sub-directories to run make depend/clean into SUBDIRS = \ dlls \ documentation \ + fonts \ include \ libs \ loader \ @@ -40,6 +43,7 @@ SUBDIRS = \ # Sub-directories to install for install-lib INSTALLLIBSUBDIRS = \ documentation \ + $(FONTSSUBDIRS) \ loader \ programs \ server @@ -103,15 +107,14 @@ uninstall:: $(INSTALLBOTHSUBDIRS:%=%/__uninstall__) # Dependencies between directories -all: $(SUBDIRS) -dlls: libs tools -loader server: libs tools +all: $(INSTALLSUBDIRS) $(INSTALLBOTHSUBDIRS) +dlls fonts loader server: libs tools programs: dlls libs tools tools: libs dlls/__install-lib__ dlls/__install-dev__: libs tools libs/__install-lib__ libs/__install-dev__: libs -loader/__install__ server/__install__: libs tools +fonts/__install__ loader/__install__ server/__install__: libs tools programs/__install__: libs tools dlls/__install-lib__ tools/__install__: tools diff --git a/configure b/configure index da687ecfda4..8916544952e 100755 --- a/configure +++ b/configure @@ -311,7 +311,7 @@ ac_includes_default="\ # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS WIN16_FILES WIN16_INSTALL build build_cpu build_vendor build_os host host_cpu host_vendor host_os SET_MAKE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX CPPBIN ac_ct_CPPBIN TOOLSDIR CPP X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS LEX LEXLIB LEX_OUTPUT_ROOT XLEX BISON AS ac_ct_AS LD ac_ct_LD AR ac_ct_AR RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP WINDRES ac_ct_WINDRES LN_S LN EGREP LDCONFIG INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LINT LINTFLAGS DB2HTML DB2PDF DB2PS DB2TXT LIBPTHREAD XLIB XFILES OPENGLFILES GLU32FILES OPENGL_LIBS GLUT_LIBS GLUT32FILES NASLIBS CURSESLIBS sane_devel SANELIBS SANEINCL ICULIBS ft_devel ft_devel2 FREETYPEINCL ARTSCCONFIG ARTSLIBS ARTSINCL ALSALIBS AUDIOIOLIBS CAPI4LINUXLIBS EXTRACFLAGS DLLEXT DLLFLAGS DLLIBS LDSHARED LDDLLFLAGS LIBEXT IMPLIBEXT DLLTOOL ac_ct_DLLTOOL DLLWRAP ac_ct_DLLWRAP LDEXECFLAGS LDLIBWINEFLAGS CROSSTEST CROSSCC CROSSWINDRES LDPATH CRTLIBS WINE_BINARIES MAIN_BINARY LDD ALLOCA LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS WIN16_FILES WIN16_INSTALL build build_cpu build_vendor build_os host host_cpu host_vendor host_os SET_MAKE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX CPPBIN ac_ct_CPPBIN TOOLSDIR CPP X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS LEX LEXLIB LEX_OUTPUT_ROOT XLEX BISON AS ac_ct_AS LD ac_ct_LD AR ac_ct_AR RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP WINDRES ac_ct_WINDRES LN_S LN EGREP LDCONFIG INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LINT LINTFLAGS DB2HTML DB2PDF DB2PS DB2TXT FONTFORGE LIBPTHREAD XLIB XFILES OPENGLFILES GLU32FILES OPENGL_LIBS GLUT_LIBS GLUT32FILES NASLIBS CURSESLIBS sane_devel SANELIBS SANEINCL ICULIBS ft_devel ft_devel2 FREETYPELIBS FREETYPEINCL FONTSSUBDIRS ARTSCCONFIG ARTSLIBS ARTSINCL ALSALIBS AUDIOIOLIBS CAPI4LINUXLIBS EXTRACFLAGS DLLEXT DLLFLAGS DLLIBS LDSHARED LDDLLFLAGS LIBEXT IMPLIBEXT DLLTOOL ac_ct_DLLTOOL DLLWRAP ac_ct_DLLWRAP LDEXECFLAGS LDLIBWINEFLAGS CROSSTEST CROSSCC CROSSWINDRES LDPATH CRTLIBS WINE_BINARIES MAIN_BINARY LDD ALLOCA LIBOBJS LTLIBOBJS' ac_subst_files='MAKE_RULES MAKE_DLL_RULES MAKE_TEST_RULES MAKE_LIB_RULES MAKE_PROG_RULES' # Initialize some variables set by options. @@ -5617,8 +5617,6 @@ fi done test -n "$DB2HTML" || DB2HTML="false" - - for ac_prog in docbook2pdf db2pdf do # Extract the first word of "$ac_prog", so it can be a program name with args. @@ -5660,8 +5658,6 @@ fi done test -n "$DB2PDF" || DB2PDF="false" - - for ac_prog in docbook2ps db2ps do # Extract the first word of "$ac_prog", so it can be a program name with args. @@ -5703,8 +5699,6 @@ fi done test -n "$DB2PS" || DB2PS="false" - - for ac_prog in docbook2txt db2txt do # Extract the first word of "$ac_prog", so it can be a program name with args. @@ -5746,6 +5740,46 @@ fi done test -n "$DB2TXT" || DB2TXT="false" +for ac_prog in fontforge +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_FONTFORGE+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$FONTFORGE"; then + ac_cv_prog_FONTFORGE="$FONTFORGE" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_FONTFORGE="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +FONTFORGE=$ac_cv_prog_FONTFORGE +if test -n "$FONTFORGE"; then + echo "$as_me:$LINENO: result: $FONTFORGE" >&5 +echo "${ECHO_T}$FONTFORGE" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$FONTFORGE" && break +done +test -n "$FONTFORGE" || FONTFORGE="false" @@ -9995,6 +10029,7 @@ fi if test "$ft_lib" = "no" then + FREETYPELIBS="" FREETYPEINCL="" wine_cv_msg_freetype=no else @@ -10079,9 +10114,11 @@ fi fi if test "$ft_devel" = "no" then + FREETYPELIBS="" FREETYPEINCL="" wine_cv_msg_freetype=yes else + FREETYPELIBS=`$ft_devel --libs` FREETYPEINCL=`$ft_devel --cflags` ac_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$FREETYPEINCL $CPPFLAGS" @@ -10215,6 +10252,7 @@ _ACEOF wine_cv_msg_freetype=no else + FREETYPELIBS="" FREETYPEINCL="" wine_cv_msg_freetype=yes fi @@ -10222,6 +10260,13 @@ _ACEOF fi + +if test "$FONTFORGE" != "false" -a -n "$FREETYPELIBS" +then + FONTSSUBDIRS="fonts" + +fi + echo "$as_me:$LINENO: checking for parport header/ppdev.h" >&5 echo $ECHO_N "checking for parport header/ppdev.h... $ECHO_C" >&6 if test "${ac_cv_c_ppdev+set}" = set; then @@ -19905,7 +19950,7 @@ MAKE_LIB_RULES=libs/Makelib.rules MAKE_PROG_RULES=programs/Makeprog.rules - ac_config_files="$ac_config_files Make.rules dlls/Makedll.rules dlls/Maketest.rules libs/Makelib.rules programs/Makeprog.rules Makefile dlls/Makefile dlls/advapi32/Makefile dlls/advapi32/tests/Makefile dlls/amstream/Makefile dlls/atl/Makefile dlls/avicap32/Makefile dlls/avifil32/Makefile dlls/cabinet/Makefile dlls/capi2032/Makefile dlls/cards/Makefile dlls/cfgmgr32/Makefile dlls/comcat/Makefile dlls/comctl32/Makefile dlls/comctl32/tests/Makefile dlls/commdlg/Makefile dlls/crtdll/Makefile dlls/crypt32/Makefile dlls/ctl3d/Makefile dlls/d3d8/Makefile dlls/d3d9/Makefile dlls/d3dim/Makefile dlls/d3drm/Makefile dlls/d3dx8/Makefile dlls/d3dxof/Makefile dlls/dbghelp/Makefile dlls/dciman32/Makefile dlls/ddraw/Makefile dlls/ddraw/tests/Makefile dlls/devenum/Makefile dlls/dinput/Makefile dlls/dinput8/Makefile dlls/dmband/Makefile dlls/dmcompos/Makefile dlls/dmime/Makefile dlls/dmloader/Makefile dlls/dmscript/Makefile dlls/dmstyle/Makefile dlls/dmsynth/Makefile dlls/dmusic/Makefile dlls/dmusic32/Makefile dlls/dplay/Makefile dlls/dplayx/Makefile dlls/dpnet/Makefile dlls/dpnhpast/Makefile dlls/dsound/Makefile dlls/dsound/tests/Makefile dlls/dswave/Makefile dlls/dxdiagn/Makefile dlls/dxerr8/Makefile dlls/dxerr9/Makefile dlls/dxguid/Makefile dlls/gdi/Makefile dlls/gdi/tests/Makefile dlls/glu32/Makefile dlls/glut32/Makefile dlls/hhctrl.ocx/Makefile dlls/iccvid/Makefile dlls/icmp/Makefile dlls/ifsmgr.vxd/Makefile dlls/imagehlp/Makefile dlls/imm32/Makefile dlls/iphlpapi/Makefile dlls/iphlpapi/tests/Makefile dlls/kernel/Makefile dlls/kernel/tests/Makefile dlls/lzexpand/Makefile dlls/mapi32/Makefile dlls/mapi32/tests/Makefile dlls/mlang/Makefile dlls/mlang/tests/Makefile dlls/mmdevldr.vxd/Makefile dlls/monodebg.vxd/Makefile dlls/mpr/Makefile dlls/msacm/Makefile dlls/msacm/imaadp32/Makefile dlls/msacm/msadp32/Makefile dlls/msacm/msg711/Makefile dlls/msacm/winemp3/Makefile dlls/msacm/tests/Makefile dlls/msdmo/Makefile dlls/mshtml/Makefile dlls/msi/Makefile dlls/msimg32/Makefile dlls/msisys/Makefile dlls/msnet32/Makefile dlls/msrle32/Makefile dlls/msvcrt/Makefile dlls/msvcrt/tests/Makefile dlls/msvcrt20/Makefile dlls/msvcrt40/Makefile dlls/msvcrtd/Makefile dlls/msvcrtd/tests/Makefile dlls/msvidc32/Makefile dlls/msvideo/Makefile dlls/mswsock/Makefile dlls/netapi32/Makefile dlls/netapi32/tests/Makefile dlls/newdev/Makefile dlls/ntdll/Makefile dlls/ntdll/tests/Makefile dlls/odbc32/Makefile dlls/ole32/Makefile dlls/ole32/tests/Makefile dlls/oleacc/Makefile dlls/oleaut32/Makefile dlls/oleaut32/tests/Makefile dlls/olecli/Makefile dlls/oledlg/Makefile dlls/olepro32/Makefile dlls/olesvr/Makefile dlls/opengl32/Makefile dlls/psapi/Makefile dlls/psapi/tests/Makefile dlls/qcap/Makefile dlls/quartz/Makefile dlls/quartz/tests/Makefile dlls/rasapi32/Makefile dlls/richedit/Makefile dlls/rpcrt4/Makefile dlls/rpcrt4/tests/Makefile dlls/rsabase/Makefile dlls/rsabase/tests/Makefile dlls/secur32/Makefile dlls/serialui/Makefile dlls/setupapi/Makefile dlls/shdocvw/Makefile dlls/shell32/Makefile dlls/shell32/tests/Makefile dlls/shfolder/Makefile dlls/shlwapi/Makefile dlls/shlwapi/tests/Makefile dlls/snmpapi/Makefile dlls/sti/Makefile dlls/tapi32/Makefile dlls/ttydrv/Makefile dlls/twain/Makefile dlls/unicows/Makefile dlls/url/Makefile dlls/urlmon/Makefile dlls/urlmon/tests/Makefile dlls/user/Makefile dlls/user/tests/Makefile dlls/uuid/Makefile dlls/uxtheme/Makefile dlls/vdhcp.vxd/Makefile dlls/vdmdbg/Makefile dlls/version/Makefile dlls/version/tests/Makefile dlls/vmm.vxd/Makefile dlls/vnbt.vxd/Makefile dlls/vnetbios.vxd/Makefile dlls/vtdapi.vxd/Makefile dlls/vwin32.vxd/Makefile dlls/win32s/Makefile dlls/winaspi/Makefile dlls/wined3d/Makefile dlls/winedos/Makefile dlls/wineps/Makefile dlls/wininet/Makefile dlls/wininet/tests/Makefile dlls/winmm/Makefile dlls/winmm/joystick/Makefile dlls/winmm/mcianim/Makefile dlls/winmm/mciavi/Makefile dlls/winmm/mcicda/Makefile dlls/winmm/mciseq/Makefile dlls/winmm/mciwave/Makefile dlls/winmm/midimap/Makefile dlls/winmm/tests/Makefile dlls/winmm/wavemap/Makefile dlls/winmm/winealsa/Makefile dlls/winmm/winearts/Makefile dlls/winmm/wineaudioio/Makefile dlls/winmm/winejack/Makefile dlls/winmm/winenas/Makefile dlls/winmm/wineoss/Makefile dlls/winnls/Makefile dlls/winsock/Makefile dlls/winsock/tests/Makefile dlls/winspool/Makefile dlls/winspool/tests/Makefile dlls/wintab32/Makefile dlls/wintrust/Makefile dlls/wow32/Makefile dlls/wsock32/Makefile dlls/x11drv/Makefile documentation/Makefile include/Makefile libs/Makefile libs/port/Makefile libs/unicode/Makefile libs/wine/Makefile libs/wpp/Makefile loader/Makefile programs/Makefile programs/avitools/Makefile programs/clock/Makefile programs/cmdlgtst/Makefile programs/control/Makefile programs/expand/Makefile programs/msiexec/Makefile programs/notepad/Makefile programs/progman/Makefile programs/regedit/Makefile programs/regsvr32/Makefile programs/rpcss/Makefile programs/rundll32/Makefile programs/start/Makefile programs/taskmgr/Makefile programs/uninstaller/Makefile programs/view/Makefile programs/wcmd/Makefile programs/wineboot/Makefile programs/winebrowser/Makefile programs/winecfg/Makefile programs/wineconsole/Makefile programs/winedbg/Makefile programs/winefile/Makefile programs/winemenubuilder/Makefile programs/winemine/Makefile programs/winepath/Makefile programs/winetest/Makefile programs/winevdm/Makefile programs/winhelp/Makefile programs/winver/Makefile server/Makefile tools/Makefile tools/widl/Makefile tools/winapi/Makefile tools/winebuild/Makefile tools/winedump/Makefile tools/winegcc/Makefile tools/wmc/Makefile tools/wrc/Makefile" + ac_config_files="$ac_config_files Make.rules dlls/Makedll.rules dlls/Maketest.rules libs/Makelib.rules programs/Makeprog.rules Makefile dlls/Makefile dlls/advapi32/Makefile dlls/advapi32/tests/Makefile dlls/amstream/Makefile dlls/atl/Makefile dlls/avicap32/Makefile dlls/avifil32/Makefile dlls/cabinet/Makefile dlls/capi2032/Makefile dlls/cards/Makefile dlls/cfgmgr32/Makefile dlls/comcat/Makefile dlls/comctl32/Makefile dlls/comctl32/tests/Makefile dlls/commdlg/Makefile dlls/crtdll/Makefile dlls/crypt32/Makefile dlls/ctl3d/Makefile dlls/d3d8/Makefile dlls/d3d9/Makefile dlls/d3dim/Makefile dlls/d3drm/Makefile dlls/d3dx8/Makefile dlls/d3dxof/Makefile dlls/dbghelp/Makefile dlls/dciman32/Makefile dlls/ddraw/Makefile dlls/ddraw/tests/Makefile dlls/devenum/Makefile dlls/dinput/Makefile dlls/dinput8/Makefile dlls/dmband/Makefile dlls/dmcompos/Makefile dlls/dmime/Makefile dlls/dmloader/Makefile dlls/dmscript/Makefile dlls/dmstyle/Makefile dlls/dmsynth/Makefile dlls/dmusic/Makefile dlls/dmusic32/Makefile dlls/dplay/Makefile dlls/dplayx/Makefile dlls/dpnet/Makefile dlls/dpnhpast/Makefile dlls/dsound/Makefile dlls/dsound/tests/Makefile dlls/dswave/Makefile dlls/dxdiagn/Makefile dlls/dxerr8/Makefile dlls/dxerr9/Makefile dlls/dxguid/Makefile dlls/gdi/Makefile dlls/gdi/tests/Makefile dlls/glu32/Makefile dlls/glut32/Makefile dlls/hhctrl.ocx/Makefile dlls/iccvid/Makefile dlls/icmp/Makefile dlls/ifsmgr.vxd/Makefile dlls/imagehlp/Makefile dlls/imm32/Makefile dlls/iphlpapi/Makefile dlls/iphlpapi/tests/Makefile dlls/kernel/Makefile dlls/kernel/tests/Makefile dlls/lzexpand/Makefile dlls/mapi32/Makefile dlls/mapi32/tests/Makefile dlls/mlang/Makefile dlls/mlang/tests/Makefile dlls/mmdevldr.vxd/Makefile dlls/monodebg.vxd/Makefile dlls/mpr/Makefile dlls/msacm/Makefile dlls/msacm/imaadp32/Makefile dlls/msacm/msadp32/Makefile dlls/msacm/msg711/Makefile dlls/msacm/winemp3/Makefile dlls/msacm/tests/Makefile dlls/msdmo/Makefile dlls/mshtml/Makefile dlls/msi/Makefile dlls/msimg32/Makefile dlls/msisys/Makefile dlls/msnet32/Makefile dlls/msrle32/Makefile dlls/msvcrt/Makefile dlls/msvcrt/tests/Makefile dlls/msvcrt20/Makefile dlls/msvcrt40/Makefile dlls/msvcrtd/Makefile dlls/msvcrtd/tests/Makefile dlls/msvidc32/Makefile dlls/msvideo/Makefile dlls/mswsock/Makefile dlls/netapi32/Makefile dlls/netapi32/tests/Makefile dlls/newdev/Makefile dlls/ntdll/Makefile dlls/ntdll/tests/Makefile dlls/odbc32/Makefile dlls/ole32/Makefile dlls/ole32/tests/Makefile dlls/oleacc/Makefile dlls/oleaut32/Makefile dlls/oleaut32/tests/Makefile dlls/olecli/Makefile dlls/oledlg/Makefile dlls/olepro32/Makefile dlls/olesvr/Makefile dlls/opengl32/Makefile dlls/psapi/Makefile dlls/psapi/tests/Makefile dlls/qcap/Makefile dlls/quartz/Makefile dlls/quartz/tests/Makefile dlls/rasapi32/Makefile dlls/richedit/Makefile dlls/rpcrt4/Makefile dlls/rpcrt4/tests/Makefile dlls/rsabase/Makefile dlls/rsabase/tests/Makefile dlls/secur32/Makefile dlls/serialui/Makefile dlls/setupapi/Makefile dlls/shdocvw/Makefile dlls/shell32/Makefile dlls/shell32/tests/Makefile dlls/shfolder/Makefile dlls/shlwapi/Makefile dlls/shlwapi/tests/Makefile dlls/snmpapi/Makefile dlls/sti/Makefile dlls/tapi32/Makefile dlls/ttydrv/Makefile dlls/twain/Makefile dlls/unicows/Makefile dlls/url/Makefile dlls/urlmon/Makefile dlls/urlmon/tests/Makefile dlls/user/Makefile dlls/user/tests/Makefile dlls/uuid/Makefile dlls/uxtheme/Makefile dlls/vdhcp.vxd/Makefile dlls/vdmdbg/Makefile dlls/version/Makefile dlls/version/tests/Makefile dlls/vmm.vxd/Makefile dlls/vnbt.vxd/Makefile dlls/vnetbios.vxd/Makefile dlls/vtdapi.vxd/Makefile dlls/vwin32.vxd/Makefile dlls/win32s/Makefile dlls/winaspi/Makefile dlls/wined3d/Makefile dlls/winedos/Makefile dlls/wineps/Makefile dlls/wininet/Makefile dlls/wininet/tests/Makefile dlls/winmm/Makefile dlls/winmm/joystick/Makefile dlls/winmm/mcianim/Makefile dlls/winmm/mciavi/Makefile dlls/winmm/mcicda/Makefile dlls/winmm/mciseq/Makefile dlls/winmm/mciwave/Makefile dlls/winmm/midimap/Makefile dlls/winmm/tests/Makefile dlls/winmm/wavemap/Makefile dlls/winmm/winealsa/Makefile dlls/winmm/winearts/Makefile dlls/winmm/wineaudioio/Makefile dlls/winmm/winejack/Makefile dlls/winmm/winenas/Makefile dlls/winmm/wineoss/Makefile dlls/winnls/Makefile dlls/winsock/Makefile dlls/winsock/tests/Makefile dlls/winspool/Makefile dlls/winspool/tests/Makefile dlls/wintab32/Makefile dlls/wintrust/Makefile dlls/wow32/Makefile dlls/wsock32/Makefile dlls/x11drv/Makefile documentation/Makefile fonts/Makefile include/Makefile libs/Makefile libs/port/Makefile libs/unicode/Makefile libs/wine/Makefile libs/wpp/Makefile loader/Makefile programs/Makefile programs/avitools/Makefile programs/clock/Makefile programs/cmdlgtst/Makefile programs/control/Makefile programs/expand/Makefile programs/msiexec/Makefile programs/notepad/Makefile programs/progman/Makefile programs/regedit/Makefile programs/regsvr32/Makefile programs/rpcss/Makefile programs/rundll32/Makefile programs/start/Makefile programs/taskmgr/Makefile programs/uninstaller/Makefile programs/view/Makefile programs/wcmd/Makefile programs/wineboot/Makefile programs/winebrowser/Makefile programs/winecfg/Makefile programs/wineconsole/Makefile programs/winedbg/Makefile programs/winefile/Makefile programs/winemenubuilder/Makefile programs/winemine/Makefile programs/winepath/Makefile programs/winetest/Makefile programs/winevdm/Makefile programs/winhelp/Makefile programs/winver/Makefile server/Makefile tools/Makefile tools/widl/Makefile tools/winapi/Makefile tools/winebuild/Makefile tools/winedump/Makefile tools/winegcc/Makefile tools/wmc/Makefile tools/wrc/Makefile" cat >confcache <<\_ACEOF @@ -20629,6 +20674,7 @@ do "dlls/wsock32/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/wsock32/Makefile" ;; "dlls/x11drv/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/x11drv/Makefile" ;; "documentation/Makefile" ) CONFIG_FILES="$CONFIG_FILES documentation/Makefile" ;; + "fonts/Makefile" ) CONFIG_FILES="$CONFIG_FILES fonts/Makefile" ;; "include/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; "libs/Makefile" ) CONFIG_FILES="$CONFIG_FILES libs/Makefile" ;; "libs/port/Makefile" ) CONFIG_FILES="$CONFIG_FILES libs/port/Makefile" ;; @@ -20838,6 +20884,7 @@ s,@DB2HTML@,$DB2HTML,;t t s,@DB2PDF@,$DB2PDF,;t t s,@DB2PS@,$DB2PS,;t t s,@DB2TXT@,$DB2TXT,;t t +s,@FONTFORGE@,$FONTFORGE,;t t s,@LIBPTHREAD@,$LIBPTHREAD,;t t s,@XLIB@,$XLIB,;t t s,@XFILES@,$XFILES,;t t @@ -20854,7 +20901,9 @@ s,@SANEINCL@,$SANEINCL,;t t s,@ICULIBS@,$ICULIBS,;t t s,@ft_devel@,$ft_devel,;t t s,@ft_devel2@,$ft_devel2,;t t +s,@FREETYPELIBS@,$FREETYPELIBS,;t t s,@FREETYPEINCL@,$FREETYPEINCL,;t t +s,@FONTSSUBDIRS@,$FONTSSUBDIRS,;t t s,@ARTSCCONFIG@,$ARTSCCONFIG,;t t s,@ARTSLIBS@,$ARTSLIBS,;t t s,@ARTSINCL@,$ARTSINCL,;t t diff --git a/configure.ac b/configure.ac index 384dd812f58..9755a7aaf6e 100644 --- a/configure.ac +++ b/configure.ac @@ -107,21 +107,12 @@ fi AC_SUBST(LINT) AC_SUBST(LINTFLAGS) -dnl Check for db2html +dnl Check for various programs AC_CHECK_PROGS(DB2HTML, docbook2html db2html, false) -AC_SUBST(DB2HTML) - -dnl Check for db2pdf AC_CHECK_PROGS(DB2PDF, docbook2pdf db2pdf, false) -AC_SUBST(DB2PDF) - -dnl Check for db2ps AC_CHECK_PROGS(DB2PS, docbook2ps db2ps, false) -AC_SUBST(DB2PS) - -dnl Check for db2txt AC_CHECK_PROGS(DB2TXT, docbook2txt db2txt, false) -AC_SUBST(DB2TXT) +AC_CHECK_PROGS(FONTFORGE, fontforge, false) dnl **** Check for some libraries **** @@ -418,6 +409,7 @@ dnl **** Check for FreeType 2 **** AC_CHECK_LIB(freetype,FT_Init_FreeType,ft_lib=yes,ft_lib=no,$X_LIBS) if test "$ft_lib" = "no" then + FREETYPELIBS="" FREETYPEINCL="" wine_cv_msg_freetype=no else @@ -432,9 +424,11 @@ else fi if test "$ft_devel" = "no" then + FREETYPELIBS="" FREETYPEINCL="" wine_cv_msg_freetype=yes else + FREETYPELIBS=`$ft_devel --libs` FREETYPEINCL=`$ft_devel --cflags` ac_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$FREETYPEINCL $CPPFLAGS" @@ -464,13 +458,21 @@ else AC_DEFINE(HAVE_FREETYPE, 1, [Define if FreeType 2 is installed]) wine_cv_msg_freetype=no else + FREETYPELIBS="" FREETYPEINCL="" wine_cv_msg_freetype=yes fi fi fi +AC_SUBST(FREETYPELIBS) AC_SUBST(FREETYPEINCL) +dnl Only build the fonts dir if we have both freetype and fontforge +if test "$FONTFORGE" != "false" -a -n "$FREETYPELIBS" +then + AC_SUBST(FONTSSUBDIRS,"fonts") +fi + dnl **** Check for parport (currently Linux only) **** AC_CACHE_CHECK([for parport header/ppdev.h], ac_cv_c_ppdev, AC_TRY_COMPILE( @@ -1693,6 +1695,7 @@ dlls/wow32/Makefile dlls/wsock32/Makefile dlls/x11drv/Makefile documentation/Makefile +fonts/Makefile include/Makefile libs/Makefile libs/port/Makefile diff --git a/fonts/.cvsignore b/fonts/.cvsignore new file mode 100644 index 00000000000..7b8000769a8 --- /dev/null +++ b/fonts/.cvsignore @@ -0,0 +1,14 @@ +Makefile +wine_coure.fon +wine_courier-1252-96-13.fnt +wine_courier.ttf +wine_sans_serif-1250-96-13.fnt +wine_sans_serif-1250-96-16.fnt +wine_sans_serif-1252-96-13.fnt +wine_sans_serif-1252-96-16.fnt +wine_sans_serif.ttf +wine_sserife.fon +wine_sserifee.fon +wine_system-1252-96-16.fnt +wine_system.ttf +wine_vgasys.fon diff --git a/fonts/Makefile.in b/fonts/Makefile.in new file mode 100644 index 00000000000..8a4c1b3d221 --- /dev/null +++ b/fonts/Makefile.in @@ -0,0 +1,65 @@ +TOPSRCDIR = @top_srcdir@ +TOPOBJDIR = .. +SRCDIR = @srcdir@ +VPATH = @srcdir@ +MODULE = none +fontdir = $(datadir)/fonts/wine + +BITMAP_FONTS = \ + wine_coure.fon \ + wine_sserife.fon \ + wine_sserifee.fon \ + wine_vgasys.fon + +TRUETYPE_FONTS = + +FONTS = \ + $(BITMAP_FONTS) \ + $(TRUETYPE_FONTS) + +all: $(FONTS) + +@MAKE_RULES@ + +wine_courier-1252-96-13.fnt: wine_courier.ttf $(SFNT2FNT) + $(LDPATH) $(SFNT2FNT) wine_courier.ttf 13 1252 96 128 + +wine_sans_serif-1252-96-13.fnt: wine_sans_serif.ttf $(SFNT2FNT) + $(LDPATH) $(SFNT2FNT) wine_sans_serif.ttf 13 1252 96 129 + +wine_sans_serif-1252-96-16.fnt: wine_sans_serif.ttf $(SFNT2FNT) + $(LDPATH) $(SFNT2FNT) wine_sans_serif.ttf 16 1252 96 129 + +wine_sans_serif-1250-96-13.fnt: wine_sans_serif.ttf $(SFNT2FNT) + $(LDPATH) $(SFNT2FNT) wine_sans_serif.ttf 13 1250 96 129 + +wine_sans_serif-1250-96-16.fnt: wine_sans_serif.ttf $(SFNT2FNT) + $(LDPATH) $(SFNT2FNT) wine_sans_serif.ttf 16 1250 96 129 + +wine_system-1252-96-16.fnt: wine_system.ttf $(SFNT2FNT) + $(LDPATH) $(SFNT2FNT) wine_system.ttf 16 1252 96 128 + +wine_sserife.fon: wine_sans_serif-1252-96-13.fnt wine_sans_serif-1252-96-16.fnt $(FNT2FON) + $(FNT2FON) wine_sans_serif-1252-96-13.fnt wine_sans_serif-1252-96-16.fnt wine_sserife.fon + +wine_sserifee.fon: wine_sans_serif-1250-96-13.fnt wine_sans_serif-1250-96-16.fnt $(FNT2FON) + $(FNT2FON) wine_sans_serif-1250-96-13.fnt wine_sans_serif-1250-96-16.fnt wine_sserifee.fon + +wine_vgasys.fon: wine_system-1252-96-16.fnt $(FNT2FON) + $(FNT2FON) wine_system-1252-96-16.fnt wine_vgasys.fon + +wine_coure.fon: wine_courier-1252-96-13.fnt $(FNT2FON) + $(FNT2FON) wine_courier-1252-96-13.fnt wine_coure.fon + +install:: $(FONTS) + $(MKINSTALLDIRS) $(fontdir) + for i in $(FONTS); do $(INSTALL_DATA) $$i $(fontdir)/$$i || exit 1; done + +uninstall:: + -cd $(fontdir) && $(RM) $(FONTS) + -rmdir $(fontdir) + +clean:: + $(RM) *.fon *.fnt *.ttf + +### Dependencies: diff --git a/fonts/genttf.ff b/fonts/genttf.ff new file mode 100644 index 00000000000..7f29551357a --- /dev/null +++ b/fonts/genttf.ff @@ -0,0 +1,3 @@ +Open($1) +ttfname = $1:r + ".ttf" +Generate(ttfname, "ttf", 0); diff --git a/fonts/wine_courier.sfd b/fonts/wine_courier.sfd new file mode 100644 index 00000000000..81787a8fd89 --- /dev/null +++ b/fonts/wine_courier.sfd @@ -0,0 +1,1025 @@ +SplineFontDB: 1.0 +FontName: wine_courier +FullName: Wine Courier +FamilyName: Wine Courier +Weight: Medium +Copyright: Copyright (C) 2004 Huw D M Davies +Comments: 2004-8-6: Created. +Version: 001.000 +ItalicAngle: 0 +UnderlinePosition: -100 +UnderlineWidth: 50 +Ascent: 11 +Descent: 2 +NeedsXUIDChange: 1 +FSType: 8 +PfmFamily: 49 +TTFWeight: 400 +TTFWidth: 5 +Panose: 2 0 6 9 0 0 0 0 0 0 +LineGap: 1 +VLineGap: 0 +OS2WinAscent: 0 +OS2WinAOffset: 1 +OS2WinDescent: 0 +OS2WinDOffset: 1 +ScriptLang: 2 + 1 latn 1 dflt + 1 DFLT 1 dflt +LangName: 1033 "" "" "" "FontForge 1.0 : Wine Courier : 9-7-2004" "" "" "" "" "Created with FontForge 1.0 (http://fontforge.sourceforge.net)" "Huw D M Davies" "" "http://www.winehq.org" "" "This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.+AAoA +AAoA-This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.+AAoA +AAoA-You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA+AAoA" "http://www.gnu.org/licenses/lgpl.html" +Encoding: unicode +UnicodeInterp: none +DisplaySize: 13 +AntiAlias: 0 +FitToEm: 1 +WinInfo: 100 20 8 +OnlyBitmaps: 1 +TeXData: 1 10485760 0 346030 173015 115343 0 1048576 115343 783286 444596 497025 792723 393216 433062 380633 303038 157286 324010 404750 52429 2506097 1059062 262144 +BeginChars: 65536 139 +StartChar: space +Encoding: 32 32 0 +Width: 8 +Flags: H +EndChar +StartChar: exclam +Encoding: 33 33 1 +Width: 8 +Flags: H +EndChar +StartChar: quotedbl +Encoding: 34 34 2 +Width: 8 +Flags: H +EndChar +StartChar: numbersign +Encoding: 35 35 3 +Width: 8 +Flags: H +EndChar +StartChar: dollar +Encoding: 36 36 4 +Width: 8 +Flags: H +EndChar +StartChar: percent +Encoding: 37 37 5 +Width: 8 +Flags: H +EndChar +StartChar: ampersand +Encoding: 38 38 6 +Width: 8 +Flags: H +EndChar +StartChar: quotesingle +Encoding: 39 39 7 +Width: 8 +Flags: H +EndChar +StartChar: parenleft +Encoding: 40 40 8 +Width: 8 +Flags: H +EndChar +StartChar: parenright +Encoding: 41 41 9 +Width: 8 +Flags: H +EndChar +StartChar: asterisk +Encoding: 42 42 10 +Width: 8 +Flags: H +EndChar +StartChar: plus +Encoding: 43 43 11 +Width: 8 +Flags: H +EndChar +StartChar: comma +Encoding: 44 44 12 +Width: 8 +Flags: H +EndChar +StartChar: hyphen +Encoding: 45 45 13 +Width: 8 +Flags: H +EndChar +StartChar: period +Encoding: 46 46 14 +Width: 8 +Flags: H +EndChar +StartChar: slash +Encoding: 47 47 15 +Width: 8 +Flags: H +EndChar +StartChar: zero +Encoding: 48 48 16 +Width: 8 +Flags: H +EndChar +StartChar: one +Encoding: 49 49 17 +Width: 8 +Flags: H +EndChar +StartChar: two +Encoding: 50 50 18 +Width: 8 +Flags: H +EndChar +StartChar: three +Encoding: 51 51 19 +Width: 8 +Flags: H +EndChar +StartChar: four +Encoding: 52 52 20 +Width: 8 +Flags: H +EndChar +StartChar: five +Encoding: 53 53 21 +Width: 8 +Flags: H +EndChar +StartChar: six +Encoding: 54 54 22 +Width: 8 +Flags: H +EndChar +StartChar: seven +Encoding: 55 55 23 +Width: 8 +Flags: H +EndChar +StartChar: eight +Encoding: 56 56 24 +Width: 8 +Flags: H +EndChar +StartChar: nine +Encoding: 57 57 25 +Width: 8 +Flags: H +EndChar +StartChar: colon +Encoding: 58 58 26 +Width: 8 +Flags: H +EndChar +StartChar: semicolon +Encoding: 59 59 27 +Width: 8 +Flags: H +EndChar +StartChar: less +Encoding: 60 60 28 +Width: 8 +Flags: H +EndChar +StartChar: equal +Encoding: 61 61 29 +Width: 8 +Flags: H +EndChar +StartChar: greater +Encoding: 62 62 30 +Width: 8 +Flags: H +EndChar +StartChar: question +Encoding: 63 63 31 +Width: 8 +Flags: H +EndChar +StartChar: at +Encoding: 64 64 32 +Width: 8 +Flags: H +EndChar +StartChar: A +Encoding: 65 65 33 +Width: 8 +Flags: H +EndChar +StartChar: B +Encoding: 66 66 34 +Width: 8 +Flags: H +EndChar +StartChar: C +Encoding: 67 67 35 +Width: 8 +Flags: H +EndChar +StartChar: D +Encoding: 68 68 36 +Width: 8 +Flags: H +EndChar +StartChar: E +Encoding: 69 69 37 +Width: 8 +Flags: H +EndChar +StartChar: F +Encoding: 70 70 38 +Width: 8 +Flags: H +EndChar +StartChar: G +Encoding: 71 71 39 +Width: 8 +Flags: H +EndChar +StartChar: H +Encoding: 72 72 40 +Width: 8 +Flags: H +EndChar +StartChar: I +Encoding: 73 73 41 +Width: 8 +Flags: H +EndChar +StartChar: J +Encoding: 74 74 42 +Width: 8 +Flags: H +EndChar +StartChar: K +Encoding: 75 75 43 +Width: 8 +Flags: H +EndChar +StartChar: L +Encoding: 76 76 44 +Width: 8 +Flags: H +EndChar +StartChar: M +Encoding: 77 77 45 +Width: 8 +Flags: H +EndChar +StartChar: N +Encoding: 78 78 46 +Width: 8 +Flags: H +EndChar +StartChar: O +Encoding: 79 79 47 +Width: 8 +Flags: H +EndChar +StartChar: P +Encoding: 80 80 48 +Width: 8 +Flags: H +EndChar +StartChar: Q +Encoding: 81 81 49 +Width: 8 +Flags: H +EndChar +StartChar: R +Encoding: 82 82 50 +Width: 8 +Flags: H +EndChar +StartChar: S +Encoding: 83 83 51 +Width: 8 +Flags: H +EndChar +StartChar: T +Encoding: 84 84 52 +Width: 8 +Flags: H +EndChar +StartChar: U +Encoding: 85 85 53 +Width: 8 +Flags: H +EndChar +StartChar: V +Encoding: 86 86 54 +Width: 8 +Flags: H +EndChar +StartChar: W +Encoding: 87 87 55 +Width: 8 +Flags: H +EndChar +StartChar: X +Encoding: 88 88 56 +Width: 8 +Flags: H +EndChar +StartChar: Y +Encoding: 89 89 57 +Width: 8 +Flags: H +EndChar +StartChar: Z +Encoding: 90 90 58 +Width: 8 +Flags: H +EndChar +StartChar: bracketleft +Encoding: 91 91 59 +Width: 8 +Flags: H +EndChar +StartChar: backslash +Encoding: 92 92 60 +Width: 8 +Flags: H +EndChar +StartChar: bracketright +Encoding: 93 93 61 +Width: 8 +Flags: H +EndChar +StartChar: asciicircum +Encoding: 94 94 62 +Width: 8 +Flags: H +EndChar +StartChar: underscore +Encoding: 95 95 63 +Width: 8 +Flags: H +EndChar +StartChar: grave +Encoding: 96 96 64 +Width: 8 +Flags: H +EndChar +StartChar: a +Encoding: 97 97 65 +Width: 8 +Flags: H +EndChar +StartChar: b +Encoding: 98 98 66 +Width: 8 +Flags: H +EndChar +StartChar: c +Encoding: 99 99 67 +Width: 8 +Flags: H +EndChar +StartChar: d +Encoding: 100 100 68 +Width: 8 +Flags: H +EndChar +StartChar: e +Encoding: 101 101 69 +Width: 8 +Flags: H +EndChar +StartChar: f +Encoding: 102 102 70 +Width: 8 +Flags: H +EndChar +StartChar: g +Encoding: 103 103 71 +Width: 8 +Flags: H +EndChar +StartChar: h +Encoding: 104 104 72 +Width: 8 +Flags: H +EndChar +StartChar: i +Encoding: 105 105 73 +Width: 8 +Flags: H +EndChar +StartChar: j +Encoding: 106 106 74 +Width: 8 +Flags: H +EndChar +StartChar: k +Encoding: 107 107 75 +Width: 8 +Flags: H +EndChar +StartChar: l +Encoding: 108 108 76 +Width: 8 +Flags: H +EndChar +StartChar: m +Encoding: 109 109 77 +Width: 8 +Flags: H +EndChar +StartChar: n +Encoding: 110 110 78 +Width: 8 +Flags: H +EndChar +StartChar: o +Encoding: 111 111 79 +Width: 8 +Flags: H +EndChar +StartChar: p +Encoding: 112 112 80 +Width: 8 +Flags: H +EndChar +StartChar: q +Encoding: 113 113 81 +Width: 8 +Flags: H +EndChar +StartChar: r +Encoding: 114 114 82 +Width: 8 +Flags: H +EndChar +StartChar: s +Encoding: 115 115 83 +Width: 8 +Flags: H +EndChar +StartChar: t +Encoding: 116 116 84 +Width: 8 +Flags: H +EndChar +StartChar: u +Encoding: 117 117 85 +Width: 8 +Flags: H +EndChar +StartChar: v +Encoding: 118 118 86 +Width: 8 +Flags: H +EndChar +StartChar: w +Encoding: 119 119 87 +Width: 8 +Flags: H +EndChar +StartChar: x +Encoding: 120 120 88 +Width: 8 +Flags: H +EndChar +StartChar: y +Encoding: 121 121 89 +Width: 8 +Flags: H +EndChar +StartChar: z +Encoding: 122 122 90 +Width: 8 +Flags: H +EndChar +StartChar: braceleft +Encoding: 123 123 91 +Width: 8 +Flags: H +EndChar +StartChar: bar +Encoding: 124 124 92 +Width: 8 +Flags: H +EndChar +StartChar: braceright +Encoding: 125 125 93 +Width: 8 +Flags: H +EndChar +StartChar: asciitilde +Encoding: 126 126 94 +Width: 8 +Flags: H +EndChar +StartChar: uni007F +Encoding: 127 127 95 +Width: 8 +Flags: H +EndChar +StartChar: uni0081 +Encoding: 129 129 96 +Width: 8 +Flags: H +EndChar +StartChar: uni008D +Encoding: 141 141 97 +Width: 8 +Flags: H +EndChar +StartChar: uni008F +Encoding: 143 143 98 +Width: 8 +Flags: H +EndChar +StartChar: uni0090 +Encoding: 144 144 99 +Width: 8 +Flags: H +EndChar +StartChar: uni009D +Encoding: 157 157 100 +Width: 8 +Flags: H +EndChar +StartChar: nonbreakingspace +Encoding: 160 160 101 +Width: 8 +Flags: H +EndChar +StartChar: exclamdown +Encoding: 161 161 102 +Width: 8 +Flags: H +EndChar +StartChar: cent +Encoding: 162 162 103 +Width: 8 +Flags: H +EndChar +StartChar: sterling +Encoding: 163 163 104 +Width: 8 +Flags: H +EndChar +StartChar: currency +Encoding: 164 164 105 +Width: 8 +Flags: H +EndChar +StartChar: yen +Encoding: 165 165 106 +Width: 8 +Flags: H +EndChar +StartChar: brokenbar +Encoding: 166 166 107 +Width: 8 +Flags: H +EndChar +StartChar: section +Encoding: 167 167 108 +Width: 8 +Flags: H +EndChar +StartChar: dieresis +Encoding: 168 168 109 +Width: 8 +Flags: H +Ligature: 0 1 'liga' space uni0308 +EndChar +StartChar: copyright +Encoding: 169 169 110 +Width: 8 +Flags: H +EndChar +StartChar: Aring +Encoding: 197 197 65535 +Width: 8 +Flags: H +Ligature: 0 0 'liga' A uni030A +EndChar +StartChar: OE +Encoding: 338 338 111 +Width: 8 +Flags: H +EndChar +StartChar: oe +Encoding: 339 339 112 +Width: 8 +Flags: H +EndChar +StartChar: Scaron +Encoding: 352 352 113 +Width: 8 +Flags: H +Ligature: 0 0 'liga' S uni030C +EndChar +StartChar: scaron +Encoding: 353 353 114 +Width: 8 +Flags: H +Ligature: 0 0 'liga' s uni030C +EndChar +StartChar: Ydieresis +Encoding: 376 376 115 +Width: 8 +Flags: H +Ligature: 0 0 'liga' Y uni0308 +EndChar +StartChar: Zcaron +Encoding: 381 381 116 +Width: 8 +Flags: H +Ligature: 0 0 'liga' Z uni030C +EndChar +StartChar: zcaron +Encoding: 382 382 117 +Width: 8 +Flags: H +Ligature: 0 0 'liga' z uni030C +EndChar +StartChar: florin +Encoding: 402 402 118 +Width: 8 +Flags: H +EndChar +StartChar: circumflex +Encoding: 710 710 119 +Width: 8 +Flags: H +EndChar +StartChar: tilde +Encoding: 732 732 120 +Width: 8 +Flags: H +Ligature: 0 1 'liga' space tildecomb +EndChar +StartChar: endash +Encoding: 8211 8211 121 +Width: 8 +Flags: H +EndChar +StartChar: emdash +Encoding: 8212 8212 122 +Width: 8 +Flags: H +EndChar +StartChar: quoteleft +Encoding: 8216 8216 123 +Width: 8 +Flags: H +EndChar +StartChar: quoteright +Encoding: 8217 8217 124 +Width: 8 +Flags: H +EndChar +StartChar: quotesinglbase +Encoding: 8218 8218 125 +Width: 8 +Flags: H +EndChar +StartChar: quotedblleft +Encoding: 8220 8220 126 +Width: 8 +Flags: H +EndChar +StartChar: quotedblright +Encoding: 8221 8221 127 +Width: 8 +Flags: H +EndChar +StartChar: quotedblbase +Encoding: 8222 8222 128 +Width: 8 +Flags: H +EndChar +StartChar: dagger +Encoding: 8224 8224 129 +Width: 8 +Flags: H +EndChar +StartChar: daggerdbl +Encoding: 8225 8225 130 +Width: 8 +Flags: H +EndChar +StartChar: bullet +Encoding: 8226 8226 131 +Width: 8 +Flags: H +EndChar +StartChar: ellipsis +Encoding: 8230 8230 132 +Width: 8 +Flags: H +Ligature: 0 1 'liga' period period period +EndChar +StartChar: perthousand +Encoding: 8240 8240 133 +Width: 8 +Flags: H +EndChar +StartChar: guilsinglleft +Encoding: 8249 8249 134 +Width: 8 +Flags: H +EndChar +StartChar: guilsinglright +Encoding: 8250 8250 135 +Width: 8 +Flags: H +EndChar +StartChar: Euro +Encoding: 8364 8364 136 +Width: 8 +Flags: H +EndChar +StartChar: trademark +Encoding: 8482 8482 137 +Width: 8 +Flags: H +Ligature: 0 1 'liga' T M +EndChar +EndChars +BitmapFont: 13 65536 11 2 1 +BDFChar: 32 8 0 0 0 0 +z +BDFChar: 33 8 4 4 0 8 +J:N0#J:N.MJ,fQL +BDFChar: 34 8 3 5 6 8 +TV.qX +BDFChar: 35 8 1 7 0 8 +'GQ!E-n,!i:]LIq +BDFChar: 36 8 2 6 0 8 ++E3-eE!V8=+92BA +BDFChar: 37 8 1 7 0 8 +5b^XP&0OAu"98E% +BDFChar: 38 8 2 7 0 8 +@$$JC5bO?tF8u:@ +BDFChar: 39 8 4 4 6 8 +J:N.M +BDFChar: 40 8 3 5 -2 8 ++@&2BJ:N0#5X6Fl +BDFChar: 41 8 3 5 -2 8 +J3Z@B+A] +BDFChar: 79 8 1 7 0 8 +3(/@MJqASB2uipY +BDFChar: 80 8 1 7 0 8 +r'E_:HpBq^n,NFg +BDFChar: 81 8 1 7 -1 8 +3(/@MJqASB3&Ua: +BDFChar: 82 8 1 7 0 8 +r'E_:Hq6drp&G'm +BDFChar: 83 8 1 7 0 8 +I"Hm!HiaA$HiO-H +BDFChar: 84 8 1 7 0 8 +rfRg(&.fBa2uipY +BDFChar: 85 8 1 7 0 8 +mR0H26psF22uipY +BDFChar: 86 8 1 7 0 8 +mR0H2-n$JT&-)\1 +BDFChar: 87 8 1 7 0 8 +mR0HB<)cgF-ia5I +BDFChar: 88 8 1 7 0 8 +mR/HO&1AqpmJm4e +BDFChar: 89 8 1 7 0 8 +mR0Gk-kHq$2uipY +BDFChar: 90 8 1 7 0 8 +rdk7Y&0O5irVuou +BDFChar: 91 8 3 5 -2 8 +i.-?.J:N0#J:QPX +BDFChar: 92 8 1 7 1 7 +J3Y4g#Qt2/ +BDFChar: 93 8 3 5 -2 8 +i#j-b+A] +BDFChar: 108 8 2 6 0 8 +?m$R7+80en.p](9o +BDFChar: 168 8 2 6 8 8 +L]@DT +BDFChar: 169 8 1 7 1 8 +3(040U7+J0 +BDFChar: 197 8 1 7 0 10 +&1A)$&1AqpHpmB& +BDFChar: 338 8 0 5 -1 7 +*#oq<*#oq<)uos= +BDFChar: 339 8 0 5 -1 7 +*#oq<*#oq<)uos= +BDFChar: 352 8 3 5 -1 7 +i8EPOi8EPOhuE`W +BDFChar: 353 8 0 5 -1 7 +*#oq<*#oq<)uos= +BDFChar: 376 8 0 5 -1 7 +*#oq<*#oq<)uos= +BDFChar: 381 8 0 5 -1 7 +*#oq<*#oq<)uos= +BDFChar: 382 8 0 5 -1 7 +*#oq<*#oq<)uos= +BDFChar: 402 8 0 5 -1 7 +*#oq<*#oq<)uos= +BDFChar: 710 8 0 5 -1 7 +*#oq<*#oq<)uos= +BDFChar: 732 8 0 5 -1 7 +*#oq<*#oq<)uos= +BDFChar: 8211 8 0 5 -1 7 +*#oq<*#oq<)uos= +BDFChar: 8212 8 0 5 -1 7 +*#oq<*#oq<)uos= +BDFChar: 8216 8 3 4 7 8 +5_&h7 +BDFChar: 8217 8 3 4 7 8 +5_&h7 +BDFChar: 8218 8 3 5 -1 7 +i8EPOi8EPOhuE`W +BDFChar: 8220 8 3 5 -1 7 +i8EPOi8EPOhuE`W +BDFChar: 8221 8 3 5 -1 7 +i8EPOi8EPOhuE`W +BDFChar: 8222 8 3 5 -1 7 +i8EPOi8EPOhuE`W +BDFChar: 8224 8 3 5 -1 7 +i8EPOi8EPOhuE`W +BDFChar: 8225 8 3 5 -1 7 +i8EPOi8EPOhuE`W +BDFChar: 8226 8 3 5 -1 7 +i8EPOi8EPOhuE`W +BDFChar: 8230 8 3 5 -1 7 +i8EPOi8EPOhuE`W +BDFChar: 8240 8 3 5 -1 7 +i8EPOi8EPOhuE`W +BDFChar: 8249 8 3 5 -1 7 +i8EPOi8EPOhuE`W +BDFChar: 8250 8 0 5 -1 7 +*#oq<*#oq<)uos= +BDFChar: 8364 8 0 5 -1 7 +*#oq<*#oq<)uos= +BDFChar: 8482 8 0 5 -1 7 +*#oq<*#oq<)uos= +EndBitmapFont +EndSplineFont diff --git a/fonts/wine_sans_serif.sfd b/fonts/wine_sans_serif.sfd new file mode 100644 index 00000000000..9775fca0d3c --- /dev/null +++ b/fonts/wine_sans_serif.sfd @@ -0,0 +1,2705 @@ +SplineFontDB: 1.0 +FontName: wine_sans_serif +FullName: Wine Sans Serif +FamilyName: Wine Sans Serif +Weight: Medium +Copyright: Copyright (C) 2004 Huw D M Davies +Comments: 2004-6-17: Created. +Version: 001.000 +ItalicAngle: 0 +UnderlinePosition: -100 +UnderlineWidth: 50 +Ascent: 11 +Descent: 2 +NeedsXUIDChange: 1 +FSType: 8 +PfmFamily: 33 +TTFWeight: 400 +TTFWidth: 5 +Panose: 2 11 6 3 0 0 0 0 0 0 +LineGap: 0 +VLineGap: 0 +OS2WinAscent: 0 +OS2WinAOffset: 1 +OS2WinDescent: 0 +OS2WinDOffset: 1 +ScriptLang: 2 + 1 DFLT 1 dflt + 1 latn 1 dflt +TtfTable: cvt 4 +!!!!) +EndTtf +LangName: 1033 "" "" "" "FontForge 1.0 : Wine Sans Serif : 14-6-2004" "" "" "" "" "Created with FontForge 1.0 (http://fontforge.sourceforge.net)" "Huw D M Davies" "" "http://www.winehq.org" "" "This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.+AAoA +AAoA-This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.+AAoA +AAoA-You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA+AAoA" "http://www.gnu.org/licenses/lgpl.html" +Encoding: unicode +UnicodeInterp: none +DisplaySize: 16 +AntiAlias: 0 +FitToEm: 1 +WinInfo: 26 26 12 +OnlyBitmaps: 1 +BeginChars: 65536 282 +StartChar: space +Encoding: 32 32 0 +Width: 187 +Flags: HW +EndChar +StartChar: exclam +Encoding: 33 33 1 +Width: 187 +Flags: HW +EndChar +StartChar: quotedbl +Encoding: 34 34 2 +Width: 312 +Flags: HW +EndChar +StartChar: numbersign +Encoding: 35 35 3 +Width: 437 +Flags: HW +EndChar +StartChar: dollar +Encoding: 36 36 4 +Width: 437 +Flags: HW +EndChar +StartChar: percent +Encoding: 37 37 5 +Width: 750 +Flags: HW +EndChar +StartChar: ampersand +Encoding: 38 38 6 +Width: 562 +Flags: HW +EndChar +StartChar: quotesingle +Encoding: 39 39 7 +Width: 187 +Flags: HW +EndChar +StartChar: parenleft +Encoding: 40 40 8 +Width: 250 +Flags: HW +EndChar +StartChar: parenright +Encoding: 41 41 9 +Width: 250 +Flags: HW +EndChar +StartChar: asterisk +Encoding: 42 42 10 +Width: 312 +Flags: HW +EndChar +StartChar: plus +Encoding: 43 43 11 +Width: 437 +Flags: HW +EndChar +StartChar: comma +Encoding: 44 44 12 +Width: 187 +Flags: HW +EndChar +StartChar: hyphen +Encoding: 45 45 13 +Width: 250 +Flags: HW +EndChar +StartChar: period +Encoding: 46 46 14 +Width: 187 +Flags: HW +EndChar +StartChar: slash +Encoding: 47 47 15 +Width: 250 +Flags: HW +EndChar +StartChar: zero +Encoding: 48 48 16 +Width: 437 +Flags: HW +EndChar +StartChar: one +Encoding: 49 49 17 +Width: 437 +Flags: HW +EndChar +StartChar: two +Encoding: 50 50 18 +Width: 437 +Flags: HW +EndChar +StartChar: three +Encoding: 51 51 19 +Width: 437 +Flags: HW +EndChar +StartChar: four +Encoding: 52 52 20 +Width: 437 +Flags: HW +EndChar +StartChar: five +Encoding: 53 53 21 +Width: 437 +Flags: HW +EndChar +StartChar: six +Encoding: 54 54 22 +Width: 437 +Flags: HW +EndChar +StartChar: seven +Encoding: 55 55 23 +Width: 437 +Flags: HW +EndChar +StartChar: eight +Encoding: 56 56 24 +Width: 437 +Flags: HW +EndChar +StartChar: nine +Encoding: 57 57 25 +Width: 437 +Flags: HW +EndChar +StartChar: colon +Encoding: 58 58 26 +Width: 187 +Flags: HW +EndChar +StartChar: semicolon +Encoding: 59 59 27 +Width: 187 +Flags: HW +EndChar +StartChar: less +Encoding: 60 60 28 +Width: 437 +Flags: HW +EndChar +StartChar: equal +Encoding: 61 61 29 +Width: 437 +Flags: HW +EndChar +StartChar: greater +Encoding: 62 62 30 +Width: 437 +Flags: HW +EndChar +StartChar: question +Encoding: 63 63 31 +Width: 437 +Flags: HW +EndChar +StartChar: at +Encoding: 64 64 32 +Width: 875 +Flags: HW +EndChar +StartChar: A +Encoding: 65 65 33 +Width: 562 +Flags: HW +EndChar +StartChar: B +Encoding: 66 66 34 +Width: 562 +Flags: HW +EndChar +StartChar: C +Encoding: 67 67 35 +Width: 562 +Flags: HW +EndChar +StartChar: D +Encoding: 68 68 36 +Width: 625 +Flags: HW +EndChar +StartChar: E +Encoding: 69 69 37 +Width: 562 +Flags: HW +EndChar +StartChar: F +Encoding: 70 70 38 +Width: 500 +Flags: HW +EndChar +StartChar: G +Encoding: 71 71 39 +Width: 625 +Flags: HW +EndChar +StartChar: H +Encoding: 72 72 40 +Width: 625 +Flags: HW +EndChar +StartChar: I +Encoding: 73 73 41 +Width: 187 +Flags: HW +EndChar +StartChar: J +Encoding: 74 74 42 +Width: 437 +Flags: HW +EndChar +StartChar: K +Encoding: 75 75 43 +Width: 500 +Flags: HW +EndChar +StartChar: L +Encoding: 76 76 44 +Width: 437 +Flags: HW +EndChar +StartChar: M +Encoding: 77 77 45 +Width: 687 +Flags: HW +EndChar +StartChar: N +Encoding: 78 78 46 +Width: 625 +Flags: HW +EndChar +StartChar: O +Encoding: 79 79 47 +Width: 625 +Flags: HW +EndChar +StartChar: P +Encoding: 80 80 48 +Width: 562 +Flags: HW +EndChar +StartChar: Q +Encoding: 81 81 49 +Width: 625 +Flags: HW +EndChar +StartChar: R +Encoding: 82 82 50 +Width: 625 +Flags: HW +EndChar +StartChar: S +Encoding: 83 83 51 +Width: 562 +Flags: HW +EndChar +StartChar: T +Encoding: 84 84 52 +Width: 562 +Flags: HW +EndChar +StartChar: U +Encoding: 85 85 53 +Width: 625 +Flags: HW +EndChar +StartChar: V +Encoding: 86 86 54 +Width: 562 +Flags: HW +EndChar +StartChar: W +Encoding: 87 87 55 +Width: 812 +Flags: HW +EndChar +StartChar: X +Encoding: 88 88 56 +Width: 500 +Flags: HW +EndChar +StartChar: Y +Encoding: 89 89 57 +Width: 562 +Flags: HW +EndChar +StartChar: Z +Encoding: 90 90 58 +Width: 500 +Flags: HW +EndChar +StartChar: bracketleft +Encoding: 91 91 59 +Width: 250 +Flags: HW +EndChar +StartChar: backslash +Encoding: 92 92 60 +Width: 250 +Flags: HW +EndChar +StartChar: bracketright +Encoding: 93 93 61 +Width: 250 +Flags: HW +EndChar +StartChar: asciicircum +Encoding: 94 94 62 +Width: 437 +Flags: HW +EndChar +StartChar: underscore +Encoding: 95 95 63 +Width: 437 +Flags: HW +EndChar +StartChar: grave +Encoding: 96 96 64 +Width: 250 +Flags: HW +EndChar +StartChar: a +Encoding: 97 97 65 +Width: 500 +Flags: HW +EndChar +StartChar: b +Encoding: 98 98 66 +Width: 500 +Flags: HW +EndChar +StartChar: c +Encoding: 99 99 67 +Width: 437 +Flags: HW +EndChar +StartChar: d +Encoding: 100 100 68 +Width: 500 +Flags: HW +EndChar +StartChar: e +Encoding: 101 101 69 +Width: 500 +Flags: HW +EndChar +StartChar: f +Encoding: 102 102 70 +Width: 187 +Flags: HW +EndChar +StartChar: g +Encoding: 103 103 71 +Width: 500 +Flags: HW +EndChar +StartChar: h +Encoding: 104 104 72 +Width: 437 +Flags: HW +EndChar +StartChar: i +Encoding: 105 105 73 +Width: 187 +Flags: HW +EndChar +StartChar: j +Encoding: 106 106 74 +Width: 187 +Flags: HW +EndChar +StartChar: k +Encoding: 107 107 75 +Width: 437 +Flags: HW +EndChar +StartChar: l +Encoding: 108 108 76 +Width: 187 +Flags: HW +EndChar +StartChar: m +Encoding: 109 109 77 +Width: 687 +Flags: HW +EndChar +StartChar: n +Encoding: 110 110 78 +Width: 437 +Flags: HW +EndChar +StartChar: o +Encoding: 111 111 79 +Width: 500 +Flags: HW +EndChar +StartChar: p +Encoding: 112 112 80 +Width: 500 +Flags: HW +EndChar +StartChar: q +Encoding: 113 113 81 +Width: 500 +Flags: HW +EndChar +StartChar: r +Encoding: 114 114 82 +Width: 250 +Flags: HW +EndChar +StartChar: s +Encoding: 115 115 83 +Width: 437 +Flags: HW +EndChar +StartChar: t +Encoding: 116 116 84 +Width: 187 +Flags: HW +EndChar +StartChar: u +Encoding: 117 117 85 +Width: 437 +Flags: HW +EndChar +StartChar: v +Encoding: 118 118 86 +Width: 437 +Flags: HW +EndChar +StartChar: w +Encoding: 119 119 87 +Width: 562 +Flags: HW +EndChar +StartChar: x +Encoding: 120 120 88 +Width: 375 +Flags: HW +EndChar +StartChar: y +Encoding: 121 121 89 +Width: 437 +Flags: HW +EndChar +StartChar: z +Encoding: 122 122 90 +Width: 375 +Flags: HW +EndChar +StartChar: braceleft +Encoding: 123 123 91 +Width: 312 +Flags: HW +EndChar +StartChar: bar +Encoding: 124 124 92 +Width: 187 +Flags: HW +EndChar +StartChar: braceright +Encoding: 125 125 93 +Width: 312 +Flags: HW +EndChar +StartChar: asciitilde +Encoding: 126 126 94 +Width: 562 +Flags: HW +EndChar +StartChar: uni007F +Encoding: 127 127 95 +Width: 3 +Flags: H +EndChar +StartChar: uni0081 +Encoding: 129 129 96 +Width: 3 +Flags: H +EndChar +StartChar: uni0083 +Encoding: 131 131 97 +Width: 3 +Flags: H +EndChar +StartChar: uni0088 +Encoding: 136 136 98 +Width: 4 +Flags: H +EndChar +StartChar: uni008D +Encoding: 141 141 97 +Width: 3 +Flags: H +EndChar +StartChar: uni008E +Encoding: 142 142 98 +Width: 3 +Flags: H +EndChar +StartChar: uni008F +Encoding: 143 143 99 +Width: 3 +Flags: H +EndChar +StartChar: uni0090 +Encoding: 144 144 100 +Width: 3 +Flags: H +EndChar +StartChar: uni0098 +Encoding: 152 152 101 +Width: 4 +Flags: H +EndChar +StartChar: uni009D +Encoding: 157 157 101 +Width: 3 +Flags: H +EndChar +StartChar: uni009E +Encoding: 158 158 102 +Width: 3 +Flags: H +EndChar +StartChar: nonbreakingspace +Encoding: 160 160 98 +Width: 187 +Flags: HW +EndChar +StartChar: exclamdown +Encoding: 161 161 99 +Width: 187 +Flags: HW +EndChar +StartChar: cent +Encoding: 162 162 100 +Width: 437 +Flags: HW +EndChar +StartChar: sterling +Encoding: 163 163 101 +Width: 437 +Flags: HW +EndChar +StartChar: currency +Encoding: 164 164 102 +Width: 437 +Flags: HW +EndChar +StartChar: yen +Encoding: 165 165 103 +Width: 437 +Flags: HW +EndChar +StartChar: brokenbar +Encoding: 166 166 104 +Width: 187 +Flags: HW +EndChar +StartChar: section +Encoding: 167 167 105 +Width: 437 +Flags: HW +EndChar +StartChar: dieresis +Encoding: 168 168 106 +Width: 250 +Flags: HW +Ligature: 0 0 'liga' space uni0308 +EndChar +StartChar: copyright +Encoding: 169 169 107 +Width: 500 +Flags: HW +EndChar +StartChar: ordfeminine +Encoding: 170 170 108 +Width: 312 +Flags: HW +EndChar +StartChar: guillemotleft +Encoding: 171 171 109 +Width: 437 +Flags: HW +EndChar +StartChar: logicalnot +Encoding: 172 172 110 +Width: 437 +Flags: HW +EndChar +StartChar: softhyphen +Encoding: 173 173 111 +Width: 250 +Flags: HW +EndChar +StartChar: registered +Encoding: 174 174 112 +Width: 500 +Flags: HW +EndChar +StartChar: macron +Encoding: 175 175 113 +Width: 437 +Flags: HW +Ligature: 0 0 'liga' space uni0304 +EndChar +StartChar: degree +Encoding: 176 176 114 +Width: 250 +Flags: HW +EndChar +StartChar: plusminus +Encoding: 177 177 115 +Width: 437 +Flags: HW +EndChar +StartChar: uni00B2 +Encoding: 178 178 116 +Width: 250 +Flags: HW +EndChar +StartChar: uni00B3 +Encoding: 179 179 117 +Width: 250 +Flags: HW +EndChar +StartChar: acute +Encoding: 180 180 118 +Width: 250 +Flags: HW +Ligature: 0 0 'liga' space acutecomb +EndChar +StartChar: mu +Encoding: 181 181 119 +Width: 437 +Flags: HW +EndChar +StartChar: paragraph +Encoding: 182 182 120 +Width: 437 +Flags: HW +EndChar +StartChar: periodcentered +Encoding: 183 183 121 +Width: 187 +Flags: HW +EndChar +StartChar: cedilla +Encoding: 184 184 122 +Width: 250 +Flags: HW +Ligature: 0 0 'liga' space uni0327 +EndChar +StartChar: uni00B9 +Encoding: 185 185 123 +Width: 250 +Flags: HW +EndChar +StartChar: ordmasculine +Encoding: 186 186 124 +Width: 312 +Flags: HW +EndChar +StartChar: guillemotright +Encoding: 187 187 125 +Width: 437 +Flags: HW +EndChar +StartChar: onequarter +Encoding: 188 188 126 +Width: 562 +Flags: HW +Ligature: 0 0 'frac' one slash four +Ligature: 0 0 'frac' one fraction four +EndChar +StartChar: onehalf +Encoding: 189 189 127 +Width: 562 +Flags: HW +Ligature: 0 0 'frac' one slash two +Ligature: 0 0 'frac' one fraction two +EndChar +StartChar: threequarters +Encoding: 190 190 128 +Width: 562 +Flags: HW +Ligature: 0 0 'frac' three slash four +Ligature: 0 0 'frac' three fraction four +EndChar +StartChar: questiondown +Encoding: 191 191 129 +Width: 437 +Flags: HW +EndChar +StartChar: Agrave +Encoding: 192 192 130 +Width: 562 +Flags: HW +Ligature: 0 1 'liga' A gravecomb +EndChar +StartChar: Aacute +Encoding: 193 193 131 +Width: 562 +Flags: HW +Ligature: 0 1 'liga' A acutecomb +EndChar +StartChar: Acircumflex +Encoding: 194 194 132 +Width: 562 +Flags: HW +Ligature: 0 1 'liga' A uni0302 +EndChar +StartChar: Atilde +Encoding: 195 195 133 +Width: 562 +Flags: HW +Ligature: 0 1 'liga' A tildecomb +EndChar +StartChar: Adieresis +Encoding: 196 196 134 +Width: 562 +Flags: HW +Ligature: 0 1 'liga' A uni0308 +EndChar +StartChar: Aring +Encoding: 197 197 135 +Width: 562 +Flags: HW +Ligature: 0 1 'liga' A uni030A +EndChar +StartChar: AE +Encoding: 198 198 136 +Width: 812 +Flags: HW +EndChar +StartChar: Ccedilla +Encoding: 199 199 137 +Width: 562 +Flags: HW +Ligature: 0 1 'liga' C uni0327 +EndChar +StartChar: Egrave +Encoding: 200 200 138 +Width: 562 +Flags: HW +Ligature: 0 1 'liga' E gravecomb +EndChar +StartChar: Eacute +Encoding: 201 201 139 +Width: 562 +Flags: HW +Ligature: 0 1 'liga' E acutecomb +EndChar +StartChar: Ecircumflex +Encoding: 202 202 140 +Width: 562 +Flags: HW +Ligature: 0 1 'liga' E uni0302 +EndChar +StartChar: Edieresis +Encoding: 203 203 141 +Width: 562 +Flags: HW +Ligature: 0 1 'liga' E uni0308 +EndChar +StartChar: Igrave +Encoding: 204 204 142 +Width: 187 +Flags: HW +Ligature: 0 1 'liga' I gravecomb +EndChar +StartChar: Iacute +Encoding: 205 205 143 +Width: 187 +Flags: HW +Ligature: 0 1 'liga' I acutecomb +EndChar +StartChar: Icircumflex +Encoding: 206 206 144 +Width: 187 +Flags: HW +Ligature: 0 1 'liga' I uni0302 +EndChar +StartChar: Idieresis +Encoding: 207 207 145 +Width: 187 +Flags: HW +Ligature: 0 1 'liga' I uni0308 +EndChar +StartChar: Eth +Encoding: 208 208 146 +Width: 562 +Flags: HW +EndChar +StartChar: Ntilde +Encoding: 209 209 147 +Width: 625 +Flags: HW +Ligature: 0 1 'liga' N tildecomb +EndChar +StartChar: Ograve +Encoding: 210 210 148 +Width: 625 +Flags: HW +Ligature: 0 1 'liga' O gravecomb +EndChar +StartChar: Oacute +Encoding: 211 211 149 +Width: 625 +Flags: HW +Ligature: 0 1 'liga' O acutecomb +EndChar +StartChar: Ocircumflex +Encoding: 212 212 150 +Width: 625 +Flags: HW +Ligature: 0 1 'liga' O uni0302 +EndChar +StartChar: Otilde +Encoding: 213 213 151 +Width: 625 +Flags: HW +Ligature: 0 1 'liga' O tildecomb +EndChar +StartChar: Odieresis +Encoding: 214 214 152 +Width: 625 +Flags: HW +Ligature: 0 1 'liga' O uni0308 +EndChar +StartChar: multiply +Encoding: 215 215 153 +Width: 437 +Flags: HW +EndChar +StartChar: Oslash +Encoding: 216 216 154 +Width: 625 +Flags: HW +EndChar +StartChar: Ugrave +Encoding: 217 217 155 +Width: 625 +Flags: HW +Ligature: 0 1 'liga' U gravecomb +EndChar +StartChar: Uacute +Encoding: 218 218 156 +Width: 625 +Flags: HW +Ligature: 0 1 'liga' U acutecomb +EndChar +StartChar: Ucircumflex +Encoding: 219 219 157 +Width: 625 +Flags: HW +Ligature: 0 1 'liga' U uni0302 +EndChar +StartChar: Udieresis +Encoding: 220 220 158 +Width: 625 +Flags: HW +Ligature: 0 1 'liga' U uni0308 +EndChar +StartChar: Yacute +Encoding: 221 221 159 +Width: 562 +Flags: HW +Ligature: 0 1 'liga' Y acutecomb +EndChar +StartChar: Thorn +Encoding: 222 222 160 +Width: 562 +Flags: HW +EndChar +StartChar: germandbls +Encoding: 223 223 161 +Width: 500 +Flags: HW +EndChar +StartChar: agrave +Encoding: 224 224 162 +Width: 500 +Flags: HW +Ligature: 0 1 'liga' a gravecomb +EndChar +StartChar: aacute +Encoding: 225 225 163 +Width: 500 +Flags: HW +Ligature: 0 1 'liga' a acutecomb +EndChar +StartChar: acircumflex +Encoding: 226 226 164 +Width: 500 +Flags: HW +Ligature: 0 1 'liga' a uni0302 +EndChar +StartChar: atilde +Encoding: 227 227 165 +Width: 500 +Flags: HW +Ligature: 0 1 'liga' a tildecomb +EndChar +StartChar: adieresis +Encoding: 228 228 166 +Width: 500 +Flags: HW +Ligature: 0 1 'liga' a uni0308 +EndChar +StartChar: aring +Encoding: 229 229 167 +Width: 500 +Flags: HW +Ligature: 0 1 'liga' a uni030A +EndChar +StartChar: ae +Encoding: 230 230 168 +Width: 812 +Flags: HW +EndChar +StartChar: ccedilla +Encoding: 231 231 169 +Width: 437 +Flags: HW +Ligature: 0 1 'liga' c uni0327 +EndChar +StartChar: egrave +Encoding: 232 232 170 +Width: 500 +Flags: HW +Ligature: 0 1 'liga' e gravecomb +EndChar +StartChar: eacute +Encoding: 233 233 171 +Width: 500 +Flags: HW +Ligature: 0 1 'liga' e acutecomb +EndChar +StartChar: ecircumflex +Encoding: 234 234 172 +Width: 500 +Flags: HW +Ligature: 0 1 'liga' e uni0302 +EndChar +StartChar: edieresis +Encoding: 235 235 173 +Width: 500 +Flags: HW +Ligature: 0 1 'liga' e uni0308 +EndChar +StartChar: igrave +Encoding: 236 236 174 +Width: 187 +Flags: HW +Ligature: 0 1 'liga' i gravecomb +EndChar +StartChar: iacute +Encoding: 237 237 175 +Width: 187 +Flags: HW +Ligature: 0 1 'liga' i acutecomb +EndChar +StartChar: icircumflex +Encoding: 238 238 176 +Width: 187 +Flags: HW +Ligature: 0 1 'liga' i uni0302 +EndChar +StartChar: idieresis +Encoding: 239 239 177 +Width: 187 +Flags: HW +Ligature: 0 1 'liga' i uni0308 +EndChar +StartChar: eth +Encoding: 240 240 178 +Width: 500 +Flags: HW +EndChar +StartChar: ntilde +Encoding: 241 241 179 +Width: 437 +Flags: HW +Ligature: 0 1 'liga' n tildecomb +EndChar +StartChar: ograve +Encoding: 242 242 180 +Width: 500 +Flags: HW +Ligature: 0 1 'liga' o gravecomb +EndChar +StartChar: oacute +Encoding: 243 243 181 +Width: 500 +Flags: HW +Ligature: 0 1 'liga' o acutecomb +EndChar +StartChar: ocircumflex +Encoding: 244 244 182 +Width: 500 +Flags: HW +Ligature: 0 1 'liga' o uni0302 +EndChar +StartChar: otilde +Encoding: 245 245 183 +Width: 500 +Flags: HW +Ligature: 0 1 'liga' o tildecomb +EndChar +StartChar: odieresis +Encoding: 246 246 184 +Width: 500 +Flags: HW +Ligature: 0 1 'liga' o uni0308 +EndChar +StartChar: divide +Encoding: 247 247 185 +Width: 437 +Flags: HW +EndChar +StartChar: oslash +Encoding: 248 248 186 +Width: 500 +Flags: HW +EndChar +StartChar: ugrave +Encoding: 249 249 187 +Width: 437 +Flags: HW +Ligature: 0 1 'liga' u gravecomb +EndChar +StartChar: uacute +Encoding: 250 250 188 +Width: 437 +Flags: HW +Ligature: 0 1 'liga' u acutecomb +EndChar +StartChar: ucircumflex +Encoding: 251 251 189 +Width: 437 +Flags: HW +Ligature: 0 1 'liga' u uni0302 +EndChar +StartChar: udieresis +Encoding: 252 252 190 +Width: 437 +Flags: HW +Ligature: 0 1 'liga' u uni0308 +EndChar +StartChar: yacute +Encoding: 253 253 191 +Width: 437 +Flags: HW +Ligature: 0 1 'liga' y acutecomb +EndChar +StartChar: thorn +Encoding: 254 254 192 +Width: 500 +Flags: HW +EndChar +StartChar: ydieresis +Encoding: 255 255 193 +Width: 437 +Flags: HW +Ligature: 0 1 'liga' y uni0308 +EndChar +StartChar: Abreve +Encoding: 258 258 194 +Width: 7 +Flags: H +Ligature: 0 1 'liga' A uni0306 +EndChar +StartChar: abreve +Encoding: 259 259 195 +Width: 6 +Flags: H +Ligature: 0 1 'liga' a uni0306 +EndChar +StartChar: Aogonek +Encoding: 260 260 196 +Width: 7 +Flags: H +Ligature: 0 1 'liga' A uni0328 +EndChar +StartChar: aogonek +Encoding: 261 261 197 +Width: 6 +Flags: H +Ligature: 0 1 'liga' a uni0328 +EndChar +StartChar: Cacute +Encoding: 262 262 198 +Width: 7 +Flags: H +Ligature: 0 1 'liga' C acutecomb +EndChar +StartChar: cacute +Encoding: 263 263 199 +Width: 5 +Flags: H +Ligature: 0 1 'liga' c acutecomb +EndChar +StartChar: Ccaron +Encoding: 268 268 200 +Width: 7 +Flags: H +Ligature: 0 1 'liga' C uni030C +EndChar +StartChar: ccaron +Encoding: 269 269 201 +Width: 5 +Flags: H +Ligature: 0 1 'liga' c uni030C +EndChar +StartChar: Dcaron +Encoding: 270 270 202 +Width: 8 +Flags: H +Ligature: 0 1 'liga' D uni030C +EndChar +StartChar: dcaron +Encoding: 271 271 203 +Width: 7 +Flags: H +Ligature: 0 1 'liga' d uni030C +EndChar +StartChar: Dcroat +Encoding: 272 272 204 +Width: 7 +Flags: H +EndChar +StartChar: dcroat +Encoding: 273 273 205 +Width: 6 +Flags: H +EndChar +StartChar: Eogonek +Encoding: 280 280 206 +Width: 7 +Flags: H +Ligature: 0 1 'liga' E uni0328 +EndChar +StartChar: eogonek +Encoding: 281 281 207 +Width: 6 +Flags: H +Ligature: 0 1 'liga' e uni0328 +EndChar +StartChar: Ecaron +Encoding: 282 282 208 +Width: 7 +Flags: H +Ligature: 0 1 'liga' E uni030C +EndChar +StartChar: ecaron +Encoding: 283 283 209 +Width: 6 +Flags: H +Ligature: 0 1 'liga' e uni030C +EndChar +StartChar: Lacute +Encoding: 313 313 210 +Width: 5 +Flags: H +Ligature: 0 1 'liga' L acutecomb +EndChar +StartChar: lacute +Encoding: 314 314 211 +Width: 2 +Flags: H +Ligature: 0 1 'liga' l acutecomb +EndChar +StartChar: Lcaron +Encoding: 317 317 212 +Width: 5 +Flags: H +Ligature: 0 1 'liga' L uni030C +EndChar +StartChar: lcaron +Encoding: 318 318 213 +Width: 3 +Flags: H +Ligature: 0 1 'liga' l uni030C +EndChar +StartChar: Lslash +Encoding: 321 321 214 +Width: 5 +Flags: H +EndChar +StartChar: lslash +Encoding: 322 322 215 +Width: 2 +Flags: H +EndChar +StartChar: Nacute +Encoding: 323 323 216 +Width: 8 +Flags: H +Ligature: 0 1 'liga' N acutecomb +EndChar +StartChar: nacute +Encoding: 324 324 217 +Width: 5 +Flags: H +Ligature: 0 1 'liga' n acutecomb +EndChar +StartChar: Ncaron +Encoding: 327 327 218 +Width: 8 +Flags: H +Ligature: 0 1 'liga' N uni030C +EndChar +StartChar: ncaron +Encoding: 328 328 219 +Width: 5 +Flags: H +Ligature: 0 1 'liga' n uni030C +EndChar +StartChar: Ohungarumlaut +Encoding: 336 336 220 +Width: 8 +Flags: H +Ligature: 0 1 'liga' O uni030B +EndChar +StartChar: ohungarumlaut +Encoding: 337 337 221 +Width: 6 +Flags: H +Ligature: 0 1 'liga' o uni030B +EndChar +StartChar: OE +Encoding: 338 338 194 +Width: 250 +Flags: W +EndChar +StartChar: oe +Encoding: 339 339 195 +Width: 250 +Flags: W +EndChar +StartChar: Racute +Encoding: 340 340 196 +Width: 8 +Flags: H +Ligature: 0 1 'liga' R acutecomb +EndChar +StartChar: racute +Encoding: 341 341 197 +Width: 3 +Flags: H +Ligature: 0 1 'liga' r acutecomb +EndChar +StartChar: Rcaron +Encoding: 344 344 198 +Width: 8 +Flags: H +Ligature: 0 1 'liga' R uni030C +EndChar +StartChar: rcaron +Encoding: 345 345 199 +Width: 3 +Flags: H +Ligature: 0 1 'liga' r uni030C +EndChar +StartChar: Sacute +Encoding: 346 346 200 +Width: 7 +Flags: H +Ligature: 0 1 'liga' S acutecomb +EndChar +StartChar: sacute +Encoding: 347 347 201 +Width: 5 +Flags: H +Ligature: 0 1 'liga' s acutecomb +EndChar +StartChar: Scedilla +Encoding: 350 350 202 +Width: 7 +Flags: H +Ligature: 0 1 'liga' S uni0327 +EndChar +StartChar: scedilla +Encoding: 351 351 203 +Width: 5 +Flags: H +Ligature: 0 1 'liga' s uni0327 +EndChar +StartChar: Scaron +Encoding: 352 352 196 +Width: 7 +Flags: HW +Ligature: 0 1 'liga' S uni030C +EndChar +StartChar: scaron +Encoding: 353 353 197 +Width: 5 +Flags: HW +Ligature: 0 1 'liga' s uni030C +EndChar +StartChar: Tcommaaccent +Encoding: 354 354 198 +Width: 7 +Flags: H +Ligature: 0 1 'liga' T uni0327 +EndChar +StartChar: tcommaaccent +Encoding: 355 355 199 +Width: 2 +Flags: H +Ligature: 0 1 'liga' t uni0327 +EndChar +StartChar: Tcaron +Encoding: 356 356 200 +Width: 7 +Flags: H +Ligature: 0 1 'liga' T uni030C +EndChar +StartChar: tcaron +Encoding: 357 357 201 +Width: 3 +Flags: H +Ligature: 0 1 'liga' t uni030C +EndChar +StartChar: Uring +Encoding: 366 366 202 +Width: 8 +Flags: H +Ligature: 0 1 'liga' U uni030A +EndChar +StartChar: uring +Encoding: 367 367 203 +Width: 5 +Flags: H +Ligature: 0 1 'liga' u uni030A +EndChar +StartChar: Uhungarumlaut +Encoding: 368 368 204 +Width: 8 +Flags: H +Ligature: 0 1 'liga' U uni030B +EndChar +StartChar: uhungarumlaut +Encoding: 369 369 205 +Width: 5 +Flags: H +Ligature: 0 1 'liga' u uni030B +EndChar +StartChar: Ydieresis +Encoding: 376 376 198 +Width: 250 +Flags: W +Ligature: 0 1 'liga' Y uni0308 +EndChar +StartChar: Zacute +Encoding: 377 377 199 +Width: 6 +Flags: H +Ligature: 0 1 'liga' Z acutecomb +EndChar +StartChar: zacute +Encoding: 378 378 200 +Width: 4 +Flags: H +Ligature: 0 1 'liga' z acutecomb +EndChar +StartChar: Zdotaccent +Encoding: 379 379 201 +Width: 6 +Flags: H +Ligature: 0 1 'liga' Z uni0307 +EndChar +StartChar: zdotaccent +Encoding: 380 380 202 +Width: 4 +Flags: H +Ligature: 0 1 'liga' z uni0307 +EndChar +StartChar: Zcaron +Encoding: 381 381 199 +Width: 6 +Flags: H +Ligature: 0 1 'liga' Z uni030C +EndChar +StartChar: zcaron +Encoding: 382 382 200 +Width: 4 +Flags: H +Ligature: 0 1 'liga' z uni030C +EndChar +StartChar: florin +Encoding: 402 402 199 +Width: 250 +Flags: W +EndChar +StartChar: circumflex +Encoding: 710 710 200 +Width: 250 +Flags: W +EndChar +StartChar: caron +Encoding: 711 711 201 +Width: 4 +Flags: H +EndChar +StartChar: breve +Encoding: 728 728 202 +Width: 4 +Flags: H +Ligature: 0 0 'liga' space uni0306 +EndChar +StartChar: dotaccent +Encoding: 729 729 203 +Width: 2 +Flags: H +Ligature: 0 0 'liga' space uni0307 +EndChar +StartChar: ogonek +Encoding: 731 731 204 +Width: 2 +Flags: H +Ligature: 0 0 'liga' space uni0328 +EndChar +StartChar: tilde +Encoding: 732 732 201 +Width: 250 +Flags: W +Ligature: 0 0 'liga' space tildecomb +EndChar +StartChar: hungarumlaut +Encoding: 733 733 202 +Width: 5 +Flags: H +Ligature: 0 0 'liga' space uni030B +EndChar +StartChar: endash +Encoding: 8211 8211 202 +Width: 3 +Flags: HW +EndChar +StartChar: emdash +Encoding: 8212 8212 203 +Width: 4 +Flags: HW +EndChar +StartChar: quoteleft +Encoding: 8216 8216 96 +Width: 187 +Flags: HW +EndChar +StartChar: quoteright +Encoding: 8217 8217 97 +Width: 187 +Flags: HW +EndChar +StartChar: quotesinglbase +Encoding: 8218 8218 97 +Width: 250 +Flags: HW +EndChar +StartChar: quotedblleft +Encoding: 8220 8220 98 +Width: 4 +Flags: HW +EndChar +StartChar: quotedblright +Encoding: 8221 8221 99 +Width: 4 +Flags: HW +EndChar +StartChar: quotedblbase +Encoding: 8222 8222 100 +Width: 4 +Flags: HW +EndChar +StartChar: dagger +Encoding: 8224 8224 101 +Width: 7 +Flags: HW +EndChar +StartChar: daggerdbl +Encoding: 8225 8225 102 +Width: 7 +Flags: HW +EndChar +StartChar: bullet +Encoding: 8226 8226 103 +Width: 4 +Flags: HW +EndChar +StartChar: ellipsis +Encoding: 8230 8230 104 +Width: 4 +Flags: HW +Ligature: 0 0 'liga' period period period +EndChar +StartChar: perthousand +Encoding: 8240 8240 105 +Width: 11 +Flags: HW +EndChar +StartChar: guilsinglleft +Encoding: 8249 8249 106 +Width: 4 +Flags: HW +EndChar +StartChar: guilsinglright +Encoding: 8250 8250 107 +Width: 4 +Flags: HW +EndChar +StartChar: Euro +Encoding: 8364 8364 95 +Width: 437 +Flags: HW +EndChar +StartChar: trademark +Encoding: 8482 8482 96 +Width: 5 +Flags: HW +Ligature: 0 0 'liga' T M +EndChar +EndChars +BitmapFont: 13 65536 11 2 1 +BDFChar: 32 3 0 0 0 0 +z +BDFChar: 33 3 1 1 0 8 +J:N0#J:N.MJ,fQL +BDFChar: 34 5 1 3 6 8 +TV.qX +BDFChar: 35 7 1 6 0 8 +84`YL84`YL8,rVi +BDFChar: 36 6 1 5 -1 8 ++E49P?na"-E$,,\ +BDFChar: 37 8 1 7 0 8 +5bb&F&0sl*"98E% +BDFChar: 38 6 1 5 0 7 +5bOdC5cBcX +BDFChar: 39 2 1 1 6 8 +J:N.M +BDFChar: 40 3 1 2 -1 8 +5_+B8J:N0#J3X)7 +BDFChar: 41 3 1 2 -1 8 +J3Z@b5X7S"5_&h7 +BDFChar: 42 4 1 3 6 8 +TKo.M +BDFChar: 43 6 1 5 1 5 ++<^G%+92BA +BDFChar: 44 3 1 2 -1 1 +5X9i" +BDFChar: 45 3 1 2 3 3 +^]4?7 +BDFChar: 46 3 1 1 0 0 +J,fQL +BDFChar: 47 5 1 4 0 8 +&.fBq+@&2BJ,fQL +BDFChar: 48 6 1 5 0 8 +E/9=+LkpkCDu]k< +BDFChar: 49 6 1 3 0 8 ++Q+@b+`5_+eYP!G0qN^,m\+93G_ +BDFChar: 65 7 0 6 0 8 +&.g6<7!sTp](9o +BDFChar: 70 6 1 5 0 8 +pjdmFn:6%>J,fQL +BDFChar: 71 8 1 6 0 8 +G_CTtS:lQKGQ7^D +BDFChar: 72 8 1 6 0 8 +KS5#3r.K`VKE(uP +BDFChar: 73 3 1 1 0 8 +J:N0#J:N0#J,fQL +BDFChar: 74 5 0 3 0 8 +&.fBa&.jqb?iU0, +BDFChar: 75 7 1 6 0 8 +KSY__^n?dFKE(uP +BDFChar: 76 6 1 5 0 8 +J:N0#J:N0#p](9o +BDFChar: 77 9 1 7 0 8 +K#Yg1WfiNsJcGcN +BDFChar: 78 8 1 6 0 8 +KS7:>Um-gkKE(uP +BDFChar: 79 8 1 6 0 8 +G_Ca'KS5#3GQ7^D +BDFChar: 80 7 1 6 0 8 +pk4LkpkCn,NFg +BDFChar: 99 6 1 5 0 5 +E/9$pLi<=o +BDFChar: 100 6 1 5 0 8 +#RC]\LkpkCGQ7^D +BDFChar: 101 6 1 5 0 5 +E/="6Li<=o +BDFChar: 102 3 1 2 0 8 +5_+C#J:N0#J,fQL +BDFChar: 103 6 1 5 -2 5 +E/9=+Lj02E +BDFChar: 104 6 1 5 0 8 +J:N0SaG>Y.L]@DT +BDFChar: 105 2 1 1 0 8 +J,fS"J:N0#J,fQL +BDFChar: 106 2 0 1 -2 8 +5QCdL5X7S"5X9i" +BDFChar: 107 6 1 5 0 8 +J:N0+OJ(NnL]@DT +BDFChar: 108 2 1 1 0 8 +J:N0#J:N0#J,fQL +BDFChar: 109 8 1 7 0 5 +m#mNpP*,eF +BDFChar: 110 6 1 5 0 5 +YfMWVLkl$2 +BDFChar: 111 6 1 5 0 5 +E/9=+Li<=o +BDFChar: 112 6 1 5 -2 5 +n;)mVM"#qF +BDFChar: 113 6 1 5 -2 5 +G_h03Lj012 +BDFChar: 114 3 1 2 0 5 +^jprcJ:IV" +BDFChar: 115 5 1 4 0 5 +@$!VrOC/%g +BDFChar: 116 3 1 2 0 7 +J:PFcJ:N/8 +BDFChar: 117 6 1 5 0 5 +LkpkCQtQI" +BDFChar: 118 6 1 5 0 5 +Lknl(+QcODkch +BDFChar: 122 5 1 4 0 5 +n.6^-JFEO= +BDFChar: 123 4 1 3 -1 9 ++@&1W5_)*b5X6Fl +BDFChar: 124 2 1 1 -1 8 +J:N0#J:N0#J:IV" +BDFChar: 125 4 1 3 -1 9 +J3Z@b5Tis +BDFChar: 127 3 1 2 -2 10 +^qdb$^qdb$^qdb$^]4?7 +BDFChar: 129 3 1 2 -2 10 +^qdb$^qdb$^qdb$^]4?7 +BDFChar: 131 3 1 2 -2 10 +^qdb$^qdb$^qdb$^]4?7 +BDFChar: 136 3 1 2 -1 7 +^qdb$^qdb$^]4?7 +BDFChar: 141 3 1 2 -2 10 +^qdb$^qdb$^qdb$^]4?7 +BDFChar: 142 3 1 2 -2 10 +^qdb$^qdb$^qdb$^]4?7 +BDFChar: 143 3 1 2 -2 10 +^qdb$^qdb$^qdb$^]4?7 +BDFChar: 144 3 1 2 -2 10 +^qdb$^qdb$^qdb$^]4?7 +BDFChar: 152 3 1 2 -1 7 +^qdb$^qdb$^]4?7 +BDFChar: 157 3 1 2 -2 10 +^qdb$^qdb$^qdb$^]4?7 +BDFChar: 158 3 1 2 -2 10 +^qdb$^qdb$^qdb$^]4?7 +BDFChar: 160 3 0 0 0 0 +z +BDFChar: 161 3 1 1 -2 6 +J,k+MJ:N0#J,fQL +BDFChar: 162 6 1 5 -1 6 +&9*GUJ;A/0 +BDFChar: 163 6 0 5 0 8 +3(-"Sp`L\EHiO-H +BDFChar: 164 6 1 5 3 8 +LiA0+E/4Jo +BDFChar: 165 6 1 5 0 8 +Lkpj`p`T>S+92BA +BDFChar: 166 2 1 1 -2 8 +J:N0#J,k+MJ:N.M +BDFChar: 167 6 1 5 -1 8 +E/6cPO@Uc2Li<=o +BDFChar: 168 3 0 2 7 7 +TE"rl +BDFChar: 169 9 1 8 1 8 +4@5I0Tp\50 +BDFChar: 170 4 1 3 2 8 +^`_R.huM[8 +BDFChar: 171 6 1 5 0 4 +-r?R5-ia5I +BDFChar: 172 6 1 5 2 3 +p]pj" +BDFChar: 173 3 1 2 4 4 +^]4?7 +BDFChar: 174 8 1 7 1 7 +I"JZ0We,Tu +BDFChar: 175 6 0 5 9 9 +qu?]s +BDFChar: 176 4 1 3 6 8 +5bL@B +BDFChar: 177 6 1 5 1 7 ++<^G%+9;0: +BDFChar: 178 3 0 2 4 8 +5bK5bhuE`W +BDFChar: 179 3 0 2 4 8 +^`Ylb^]4?7 +BDFChar: 180 3 1 2 7 8 +5_&h7 +BDFChar: 181 6 1 5 -2 5 +OH>QcOQ_4F +BDFChar: 182 6 1 5 -1 8 +Gc7QS-n$Jl-n#&q +BDFChar: 183 3 1 1 5 5 +J,fQL +BDFChar: 184 3 1 2 -2 -1 +5_&h7 +BDFChar: 185 3 1 2 4 8 +5eoWM5QCca +BDFChar: 186 4 1 3 2 8 +i1Qa9huM[8 +BDFChar: 187 6 1 5 0 4 +TMR%5TE"rl +BDFChar: 188 8 1 7 0 7 +5f,o]<[pjr +BDFChar: 189 8 1 7 0 7 +5f,o[?6Vdt +BDFChar: 190 8 1 7 0 7 +i$)\]egaFH +BDFChar: 191 6 1 5 -2 7 ++93N,+@(I5Li<=o +BDFChar: 192 7 0 6 0 10 ++:o(q-n%K2JqARS +BDFChar: 193 7 0 6 0 10 +#S7OY-n%K2JqARS +BDFChar: 194 7 0 6 0 10 +&1@Mi-n%K2JqARS +BDFChar: 195 7 0 6 0 10 +1ft;#-n%K2JqARS +BDFChar: 196 7 0 6 0 10 +6i[c0-n%K2JqARS +BDFChar: 197 7 0 6 0 10 +&1A)$-n%K2JqARS +BDFChar: 198 10 0 9 0 8 +#J^`J'EAgI5Cb!Z6i]UTLVNli +BDFChar: 199 7 1 6 -2 8 +G_CTtJ:N0'GRttt +BDFChar: 200 7 1 5 0 10 +5ToiPJ:R->J:RCp +BDFChar: 201 7 1 5 0 10 +&0UauJ:R->J:RCp +BDFChar: 202 7 1 5 0 10 ++Ahi`J:R->J:RCp +BDFChar: 203 7 1 5 0 10 +L]I4#J:R->J:RCp +BDFChar: 204 3 0 1 0 10 +J3X*"5X7S"5X7R7 +BDFChar: 205 3 1 2 0 10 +5_&ibJ:N0#J:N.M +BDFChar: 206 3 0 2 0 10 +5bJ*B5X7S"5X7R7 +BDFChar: 207 3 0 2 0 10 +TE%5B5X7S"5X7R7 +BDFChar: 208 8 0 6 0 8 +GXOkbnj5Z2GQ7^D +BDFChar: 209 8 1 6 0 10 +A=/%'`2'2nN.cia +BDFChar: 210 8 1 6 0 10 ++:rdNKS5#3KS4RM +BDFChar: 211 8 1 6 0 10 +&0Q4NKS5#3KS4RM +BDFChar: 212 8 1 6 0 10 +0M$GAKS5#3KS4RM +BDFChar: 213 8 1 6 0 10 +A=.UpKS5#3KS4RM +BDFChar: 214 8 1 6 0 10 +8-!mfKS5#3KS4RM +BDFChar: 215 6 1 5 1 5 +Leo3jL]@DT +BDFChar: 216 8 1 6 0 8 +I#O;SUnkrIp](9o +BDFChar: 217 8 1 6 0 10 ++:s3ZKS5#3KS4RM +BDFChar: 218 8 1 6 0 10 +&0QXZKS5#3KS4RM +BDFChar: 219 8 1 6 0 10 +0Lu1sKS5#3KS4RM +BDFChar: 220 8 1 6 0 10 +8-"6mrTX&.fBQ +BDFChar: 222 7 1 6 0 8 +J:REJK_U(JJ,fQL +BDFChar: 223 6 1 5 -1 8 +i/j%nOGJ^KY^c]R +BDFChar: 224 6 1 5 0 8 ++:nNl#^D/]GQ7^D +BDFChar: 225 6 1 5 0 8 +&0Lsl#^D/]GQ7^D +BDFChar: 226 6 1 5 0 8 ++A`&W#^D/]GQ7^D +BDFChar: 227 6 1 5 0 8 +-r9n_#^D/]GQ7^D +BDFChar: 228 6 1 5 0 8 +8,rX/#^D/]GQ7^D +BDFChar: 229 6 1 5 0 9 ++Aa0\E!U]ELj/n" +BDFChar: 230 10 1 9 0 5 +G5qo!IfP9)Lk'sT +BDFChar: 231 6 1 5 -2 5 +E/9$pLi=J% +BDFChar: 232 6 1 5 0 8 +5Tg&GM"#qNDu]k< +BDFChar: 233 6 1 5 0 8 +&0LslM"#qNDu]k< +BDFChar: 234 6 1 5 0 8 ++A`&WM"#qNDu]k< +BDFChar: 235 6 1 5 0 8 +L]@EoM"#qNDu]k< +BDFChar: 236 2 0 1 0 8 +J3X*"5X7S"5QCca +BDFChar: 237 4 2 3 0 8 +5_&ibJ:N0#J,fQL +BDFChar: 238 4 1 3 0 8 +5bJ*B5X7S"5QCca +BDFChar: 239 4 1 3 0 8 +TE"sW5X7S"5QCca +BDFChar: 240 6 1 5 0 8 +TKo.]E/9=+Du]k< +BDFChar: 241 6 1 5 0 8 +BWqK@aG>Y.L]@DT +BDFChar: 242 6 1 5 0 8 +5Tg&GLkpkCDu]k< +BDFChar: 243 6 1 5 0 8 +&0LslLkpkCDu]k< +BDFChar: 244 6 1 5 0 8 ++A`&WLkpkCDu]k< +BDFChar: 245 6 1 5 0 8 +BWqJULkpkCDu]k< +BDFChar: 246 6 1 5 0 8 +L]@EoLkpkCDu]k< +BDFChar: 247 6 1 5 1 5 ++9;0:+92BA +BDFChar: 248 6 1 5 0 5 +GaPG.aRB00 +BDFChar: 249 6 1 5 0 8 +5Tg&_LkpkSBE/#4 +BDFChar: 250 6 1 5 0 8 +&0Lt/LkpkSBE/#4 +BDFChar: 251 6 1 5 0 8 ++A`&oLkpkSBE/#4 +BDFChar: 252 6 1 5 0 8 +L]@F2LkpkSBE/#4 +BDFChar: 253 5 1 4 -2 8 ++@#pgOH>QcE"Lq- +BDFChar: 254 6 1 5 -2 7 +J:R-FLkplVJ:IV" +BDFChar: 255 5 1 4 -2 8 +O8o9BOH>QcE"Lq- +BDFChar: 258 7 0 6 0 10 +6oY_h-n%K2JqARS +BDFChar: 259 6 1 5 0 8 +Lip`M6j +BDFChar: 281 6 1 5 -2 5 +E/="6Li=Ij +BDFChar: 282 7 1 5 0 10 +:a#O`J:R->J:RCp +BDFChar: 283 6 1 5 0 8 +:`oaWM"#qNDu]k< +BDFChar: 313 6 1 5 0 10 ++@(I-J:N0#J:RCp +BDFChar: 314 3 1 2 0 10 +5_&ibJ:N0#J:N.M +BDFChar: 317 6 1 5 0 8 +OJ%,SJ:N0#p](9o +BDFChar: 318 4 1 3 0 8 +TYQ).J:N0#J,fQL +BDFChar: 321 7 1 6 0 8 +5X7S2@),#mHiO-H +BDFChar: 322 4 0 3 0 8 +5X7S2?pMLm5QCca +BDFChar: 323 8 1 6 0 10 +&0QXZ`2'2nN.cia +BDFChar: 324 6 1 5 0 8 +&0LtWaG>Y.L]@DT +BDFChar: 327 8 1 6 0 10 +:`tFE`2'2nN.cia +BDFChar: 328 6 1 5 0 8 +:`obBaG>Y.L]@DT +BDFChar: 336 8 1 6 0 10 +,Y305KS5#3KS4RM +BDFChar: 337 6 1 5 0 8 +8<TK +BDFChar: 67 9 1 7 0 9 +3(/@KJ:N0%6oY/H +BDFChar: 68 10 1 8 0 9 +r.9KNJUrB'K)>TK +BDFChar: 69 9 1 7 0 9 +rd]NLpjdmFJGoNK +BDFChar: 70 8 1 7 0 9 +rd]NLpjdmFJ:IV" +BDFChar: 71 10 1 8 0 10 +4@4ULJ:N]3JO2I! +BDFChar: 72 10 1 8 0 9 +JUrB's+,`PJUme$ +BDFChar: 73 3 1 1 0 9 +J:N0#J:N0#J:IV" +BDFChar: 74 7 1 5 0 9 +#RC\A#RC\ALi<=o +BDFChar: 75 8 1 7 0 9 +KSY__^n?dFKRs1( +BDFChar: 76 7 1 6 0 9 +J:N0#J:N0#JG]BI +BDFChar: 77 11 1 9 0 9 +J:PId_1881U4AJYP^nR?Lk(#+ +BDFChar: 78 10 1 8 0 9 +J\e%RObndGK7O"& +BDFChar: 79 10 1 8 0 9 +4@4UMJUrB'69G5J +BDFChar: 80 9 1 8 0 9 +rdfWOrd]NLJ:IV" +BDFChar: 81 10 1 8 0 9 +4@4UMJUrB+69P;K +BDFChar: 82 10 1 8 0 9 +rdfWOre,lTJUme$ +BDFChar: 83 9 1 7 0 9 +I"Hm!Hia?NJp[Ou +BDFChar: 84 9 0 8 0 9 +s*t@T#QP,1#QP,1#QP,1#QP,1 +BDFChar: 85 10 1 8 0 9 +JUrB'JUrB'69G5J +BDFChar: 86 9 0 8 0 9 +J:N0#5la1N+oiee'EAgI#QP,1 +BDFChar: 87 13 0 12 0 9 +Jd?r6Jd=dV71^l?.%h,:&3pdl +BDFChar: 88 8 0 7 0 9 +JUp-5(`4MbJUme$ +BDFChar: 89 9 0 8 0 9 +J:N0#5l`)/'EAC=#QP,1#QP,1 +BDFChar: 90 8 1 6 0 9 +qud92&0O5'JG]BI +BDFChar: 91 4 1 3 -3 9 +i.-?.J:N0#J:N0#huE`W +BDFChar: 92 4 0 3 -2 9 +J:N/85X6G7+:o(q +BDFChar: 93 4 0 2 -3 9 +i#j-b+Y.Lkl$2 +BDFChar: 105 3 1 1 0 9 +J,fS"J:N0#J:IV" +BDFChar: 106 3 0 1 -3 9 +5QCdL5X7S"5X7S"J,fQL +BDFChar: 107 7 1 6 0 9 +J:N0#Lle:VLkGa. +BDFChar: 108 3 1 1 0 9 +J:N0#J:N0#J:IV" +BDFChar: 109 11 1 9 0 6 +ZN/4"Lk(;3Lk(;3Lk#I* +BDFChar: 110 7 1 5 0 6 +YfMWVLkpie +BDFChar: 111 8 1 6 0 6 +G_Ca'KS4RM +BDFChar: 112 8 1 6 -3 6 +\AX&RKZ(BNJ:IV" +BDFChar: 113 8 1 6 -3 6 +FGtm+KT(!U"9\]) +BDFChar: 114 4 1 3 0 6 +TYQ).J:N.M +BDFChar: 115 7 1 5 0 6 +E/9$`#`*F" +BDFChar: 116 3 0 2 0 8 +5X=6m5X7S"+92BA +BDFChar: 117 7 1 5 0 6 +LkpkCLmViU +BDFChar: 118 7 0 6 0 6 +Jq?BY-n#W, +BDFChar: 119 9 0 8 0 6 +Lk(;3Lk&J*<<+3C+ohTC +BDFChar: 120 6 0 5 0 6 +KLddN0M$is +BDFChar: 121 7 0 6 -3 6 +Jq?BY-n#W<+M[sW +BDFChar: 122 6 1 4 0 6 +n.6^-5_/>( +BDFChar: 123 5 0 4 -3 9 +(a'qD+<\HB+Y.Lkl$2 +BDFChar: 242 8 1 6 0 9 ++:nNtKS5#3KQmIs +BDFChar: 243 8 1 6 0 9 +&0LstKS5#3KQmIs +BDFChar: 244 8 1 6 0 9 +0Lu1gKS5#3KQmIs +BDFChar: 245 8 1 6 0 9 +A=*@AKS5#3KQmIs +BDFChar: 246 8 1 6 0 9 +8,rX7KS5#3KQmIs +BDFChar: 247 7 1 5 2 6 ++9;0:+92BA +BDFChar: 248 8 1 6 -1 7 +#^D;mUnkqR5QCca +BDFChar: 249 7 1 5 0 9 +5Tg&_LkpkCQtQI" +BDFChar: 250 7 1 5 0 9 +&0Lt/LkpkCQtQI" +BDFChar: 251 7 1 5 0 9 ++A`&oLkpkCQtQI" +BDFChar: 252 7 1 5 0 9 +L]@F2LkpkCQtQI" +BDFChar: 253 7 0 6 -3 9 +#S6ufJj`!T-kHq4^]4?7 +BDFChar: 254 8 1 6 -3 9 +J:N0[`.Wes`41>JJ,fQL +BDFChar: 255 7 0 6 -3 9 +6i[4=Jj`!T-kHq4^]4?7 +BDFChar: 258 9 0 8 0 12 ++oiS_!!!9)#QPP='EBJ:N5>2uipY +BDFChar: 263 7 1 6 0 9 +&0LstKReT'KQmIs +BDFChar: 268 9 1 7 0 12 +,T$M@7"Tr>J:N5>2uipY +BDFChar: 269 7 1 6 0 9 +82($gKReT'KQmIs +BDFChar: 270 10 1 8 0 12 +82(&AJq8K(JUrB(qu?]s +BDFChar: 271 9 1 8 0 9 +"U,*PN.ck;N-#%" +BDFChar: 272 9 0 7 0 9 +HpU-h5s[e&6@8b5 +BDFChar: 273 8 1 7 0 9 +"Y.Lkl$2 +BDFChar: 327 10 1 8 0 12 +,T$N4_4dQbM1pY9JH,ZM +BDFChar: 328 7 1 5 0 9 +82(%JaG>Y.Lkl$2 +BDFChar: 336 10 1 8 0 12 +&gRH>6@j]=JUrA=49,?] +BDFChar: 337 8 1 6 0 9 +,Y.o[KS5#3KQmIs +BDFChar: 338 4 1 2 0 9 +^qdb$^qdb$^q]pM +BDFChar: 339 4 1 2 0 9 +^qdb$^qdb$^q]pM +BDFChar: 340 10 1 8 0 12 +#S7"8JUrCOKS"f,JH,ZM +BDFChar: 341 4 1 3 0 10 ++@#o,TYQ).J:N.M +BDFChar: 344 10 1 8 0 12 +,T$O\JUrCOKS"f,JH,ZM +BDFChar: 345 4 0 3 0 10 +OC/%g:gcOR5X7R7 +BDFChar: 346 9 1 7 0 12 +#S6u`Jq/B!!WiFTHiO-H +BDFChar: 347 7 1 5 0 9 +&0LslLk'FMLi<=o +BDFChar: 350 9 1 7 -3 9 +I"Hm!Hia?NJp\+80E;(Q +BDFChar: 351 7 1 5 -3 6 +E/9$`#`*FB&7>J< +BDFChar: 352 9 1 7 0 12 +,T$N/Jq/B!!WiFTHiO-H +BDFChar: 353 7 1 5 0 9 +82($_Lk'FMLi<=o +BDFChar: 354 9 0 8 -3 9 +s*t@T#QP,1#QP,1#QP,1#QP,1#QOu-(]XO9 +BDFChar: 355 3 0 2 -3 8 +5X=6m5X7S"+@%'b +BDFChar: 356 9 0 8 0 12 +'EAC=!!*%L#QP,1#QP,1#QP,1#QP,1#QOi) +BDFChar: 357 4 0 3 0 9 +&5YXM5X7S"5Tg%, +BDFChar: 366 10 1 8 0 12 +(aKrLJUrB'JUrA=49,?] +BDFChar: 367 7 1 5 0 9 ++Aa2:LkpkCQtQI" +BDFChar: 368 10 1 8 0 12 +&gRI.JUrB'JUrA=49,?] +BDFChar: 369 7 1 5 0 9 +8<6fmn,D"oo&3)8J%9@pm-g +BDFChar: 38 9 1 7 0 9 +Gg+CUG];B^b^'6h +BDFChar: 39 4 1 2 7 9 +^qd_c +BDFChar: 40 4 1 3 -3 9 +@)0Rn^qdb$^qdb$?iU0, +BDFChar: 41 4 0 2 -3 9 +^gLPX?smAM?smAM^]4?7 +BDFChar: 42 6 0 5 4 9 +0JNDYGXqf7 +BDFChar: 43 8 1 6 1 7 +0JG3Y0JG0\ +BDFChar: 44 4 0 2 -1 1 +?spbM +BDFChar: 45 4 0 3 4 4 +n,NFg +BDFChar: 46 4 1 2 0 1 +^q]pM +BDFChar: 47 4 0 3 -2 9 +0JG17?smAM^qdb$ +BDFChar: 48 8 1 6 0 9 +Gg+CUbfn;Tb]j*f +BDFChar: 49 8 1 4 0 9 +0^pbM0JG170JEJ, +BDFChar: 50 8 1 6 0 9 +Gg+A?(bf@5_#+04 +BDFChar: 51 8 1 6 0 9 +Gg$R)GROuhb]j*f +BDFChar: 52 8 1 7 0 9 +*'A%Rbfn<1$k*+9 +BDFChar: 53 8 1 6 0 9 +r4p+`prj-Tb]j*f +BDFChar: 54 8 1 6 0 9 +Gg*t=prpt+b]j*f +BDFChar: 55 8 1 6 0 9 +r!XDZ0JHmB^q]pM +BDFChar: 56 8 1 6 0 9 +Gg+CUGg+CUb]j*f +BDFChar: 57 8 1 6 0 9 +Gg+CUb^9g-b]j*f +BDFChar: 58 4 1 2 0 7 +^q]pM!!'gM +BDFChar: 59 4 0 2 -1 7 +?sis7!!$D7^]4?7 +BDFChar: 60 8 1 6 0 8 +$lC[+^gJi5$ig8- +BDFChar: 61 8 1 6 3 6 +qu?`p +BDFChar: 62 8 1 6 0 8 +^gJi5$lC[+^]4?7 +BDFChar: 63 8 1 6 0 9 +Gg+A?(bdWD0JEJ, +BDFChar: 64 14 1 12 -1 10 +++Q&\?sq;7fs'/6fs'0!`o(5)0]4%' +BDFChar: 65 8 0 7 0 9 +(`5@tAnGY(_nuHS +BDFChar: 66 10 1 8 0 9 +rklXkrklXk_u9W9 +BDFChar: 67 9 1 8 0 9 +4D)LH^qdb'Aip%n +BDFChar: 68 10 1 8 0 9 +r5QXl_o'C0`r#f: +BDFChar: 69 9 1 7 0 9 +rkQ=br4p+`_#=<6 +BDFChar: 70 8 1 7 0 9 +rkQ=br4p+`^q]pM +BDFChar: 71 10 1 8 0 9 +4D)LH^sBp9B0?4p +BDFChar: 72 10 1 8 0 9 +_o'C0s22al_nuHS +BDFChar: 73 4 1 2 0 9 +^qdb$^qdb$^q]pM +BDFChar: 74 7 0 5 0 9 +$k*OQ$k*Qgb]j*f +BDFChar: 75 9 1 8 0 9 +`m!*)i:,CC`kqcV +BDFChar: 76 8 1 7 0 9 +^qdb$^qdb$_#=<6 +BDFChar: 77 12 1 10 0 9 +^qdb$iP=Efo>'t5hSA!`beVH< +BDFChar: 78 10 1 8 0 9 +_rKeKgY:&pa27lW +BDFChar: 79 10 1 8 0 9 +4D)LK_o'C0Aip%n +BDFChar: 80 9 1 8 0 9 +rklXk_u@He^q]pM +BDFChar: 81 10 1 8 0 9 +4D)LK_o'C!4RbK&(gn1g +BDFChar: 88 9 0 8 0 9 +_19@P@fSCe)uprY2?74e_19@P +BDFChar: 89 10 0 9 0 9 +^qdb$@=U-6*WQTK$ig\9$ig\9 +BDFChar: 90 9 0 8 0 9 +s*t-#!rrN*$ih+E0E>J\^]=Cb +BDFChar: 91 4 1 3 -3 9 +i5!.D^qdb$^qdb$huE`W +BDFChar: 92 4 0 3 -2 9 +^qdb$?smAM0JG17 +BDFChar: 93 4 0 2 -3 9 +i*]r#?smAM?smAMhuE`W +BDFChar: 94 5 0 4 7 9 ++E5s5 +BDFChar: 95 8 0 7 -3 -3 +rr<$! +BDFChar: 96 5 1 4 8 10 +^gJhr +BDFChar: 97 8 1 6 0 6 +Gg$SDbfkG7 +BDFChar: 98 8 1 6 0 9 +^qdb\bfn;TbkM/< +BDFChar: 99 7 1 6 0 6 +Gg*t=^s%$' +BDFChar: 100 8 1 6 0 9 +$k*Plbfn;Tb^9Bj +BDFChar: 101 8 1 6 0 6 +Gg+D,^s%$' +BDFChar: 102 4 0 3 0 9 +0OS;X?smAM?sis7 +BDFChar: 103 8 1 6 -3 6 +I*BgYbfkGCb]j*f +BDFChar: 104 8 1 6 0 9 +^qdb\bfn;Tbfg%e +BDFChar: 105 4 1 2 0 9 +^q]rc^qdb$^q]pM +BDFChar: 106 4 0 2 -3 9 +?sitB?smAM?smAM^]4?7 +BDFChar: 107 7 1 6 0 9 +^qdb0f^RhgfZX/beVH1B7CT +BDFChar: 120 8 0 7 0 6 +_e)"J4D)J2 +BDFChar: 121 8 0 7 -3 6 +_o$(u4?OGt0OOk\ +BDFChar: 122 8 1 6 0 6 +r!XDr@)2[? +BDFChar: 123 5 1 4 -3 9 +0OS9r?spcX?smAM0E;(Q +BDFChar: 124 4 1 2 -3 9 +^qdb$^qdb$^qdb$^]4?7 +BDFChar: 125 5 0 3 -3 9 +^gLPX?skZr?smAM^]4?7 +BDFChar: 126 5 0 4 8 9 +kdUTm +BDFChar: 127 4 1 2 0 8 +^qdb$^qdb$^]4?7 +BDFChar: 129 4 0 2 0 8 +?smAM?smAM?iU0, +BDFChar: 141 4 0 2 0 8 +?smAM?smAM?iU0, +BDFChar: 143 4 0 2 0 8 +?smAM?smAM?iU0, +BDFChar: 144 4 0 2 0 8 +?smAM?smAM?iU0, +BDFChar: 157 4 0 2 0 8 +?smAM?smAM?iU0, +BDFChar: 160 9 0 0 0 0 +z +BDFChar: 161 4 1 2 0 9 +^q]rc^qdb$^q]pM +BDFChar: 162 8 1 6 -1 7 +&:!!Wd,=88+92BA +BDFChar: 163 8 1 6 0 9 +Gg*s2@/+,;_#+04 +BDFChar: 164 8 0 6 0 10 +!+n>=,WoZ=z +BDFChar: 165 8 0 7 0 9 +_o$(urttbQ(`35Q +BDFChar: 166 4 1 2 -3 9 +^qdb$^q]rc^qdb$^]4?7 +BDFChar: 167 8 1 6 0 9 +Gg(-r=D0fVb]j*f +BDFChar: 168 5 0 4 8 9 +f[p0( +BDFChar: 169 10 0 9 0 9 +56,,BbeVZBd(n#Dd_O)B@=UQB +BDFChar: 170 5 1 3 3 9 +^`_R.huM[8 +BDFChar: 171 7 0 6 1 5 +2Jh#^2?3^W +BDFChar: 172 8 1 6 3 5 +r!Wu6 +BDFChar: 173 4 0 3 4 4 +n,NFg +BDFChar: 174 10 0 9 0 9 +56,,BhS@RThS@dZeA0MJ@=UQB +BDFChar: 175 8 0 7 11 11 +rr<$! +BDFChar: 176 5 1 3 7 9 +i1T!. +BDFChar: 197 8 0 7 0 12 +(d&W8(`5AIAnHM0_Z0Z: +BDFChar: 338 4 0 2 0 8 +?smAM?smAM?iU0, +BDFChar: 339 4 0 2 0 8 +?smAM?smAM?iU0, +BDFChar: 352 4 0 2 0 8 +?smAM?smAM?iU0, +BDFChar: 353 4 0 2 0 8 +?smAM?smAM?iU0, +BDFChar: 376 4 0 2 0 8 +?smAM?smAM?iU0, +BDFChar: 381 4 0 2 0 8 +?smAM?smAM?iU0, +BDFChar: 382 4 0 2 0 8 +?smAM?smAM?iU0, +BDFChar: 402 4 0 2 0 8 +?smAM?smAM?iU0, +BDFChar: 710 4 0 2 0 8 +?smAM?smAM?iU0, +BDFChar: 732 4 1 2 0 8 +^qdb$^qdb$^]4?7 +BDFChar: 8211 4 0 2 0 8 +?smAM?smAM?iU0, +BDFChar: 8212 4 0 2 0 8 +?smAM?smAM?iU0, +BDFChar: 8216 4 1 3 9 10 +@))aB +BDFChar: 8217 4 0 2 9 10 +@))aB +BDFChar: 8218 4 1 2 0 8 +^qdb$^qdb$^]4?7 +BDFChar: 8220 4 0 2 0 8 +?smAM?smAM?iU0, +BDFChar: 8221 4 0 2 0 8 +?smAM?smAM?iU0, +BDFChar: 8222 4 0 2 0 8 +?smAM?smAM?iU0, +BDFChar: 8224 4 0 2 0 8 +?smAM?smAM?iU0, +BDFChar: 8225 4 0 2 0 8 +?smAM?smAM?iU0, +BDFChar: 8226 4 0 2 0 8 +?smAM?smAM?iU0, +BDFChar: 8230 4 0 2 0 8 +?smAM?smAM?iU0, +BDFChar: 8240 4 0 2 0 8 +?smAM?smAM?iU0, +BDFChar: 8249 4 0 2 0 8 +?smAM?smAM?iU0, +BDFChar: 8250 4 0 2 0 8 +?smAM?smAM?iU0, +BDFChar: 8364 4 1 2 0 8 +^qdb$^qdb$^]4?7 +BDFChar: 8482 4 0 2 0 8 +?smAM?smAM?iU0, +EndBitmapFont +EndSplineFont diff --git a/tools/.cvsignore b/tools/.cvsignore index fcf30935ed2..7e499c2a173 100644 --- a/tools/.cvsignore +++ b/tools/.cvsignore @@ -1,5 +1,7 @@ Makefile bin2res fnt2bdf +fnt2fon makedep +sfnt2fnt wineprefixcreate diff --git a/tools/Makefile.in b/tools/Makefile.in index 1c42ad6e210..586594a3b84 100644 --- a/tools/Makefile.in +++ b/tools/Makefile.in @@ -4,17 +4,23 @@ TOPOBJDIR = .. SRCDIR = @srcdir@ VPATH = @srcdir@ MODULE = none +EXTRAINCL = @FREETYPEINCL@ +FREETYPELIBS = @FREETYPELIBS@ PROGRAMS = \ bin2res \ fnt2bdf \ + fnt2fon \ makedep \ + sfnt2fnt \ wineprefixcreate C_SRCS = \ bin2res.c \ fnt2bdf.c \ - makedep.c + fnt2fon.c \ + makedep.c \ + sfnt2fnt.c \ SUBDIRS = \ widl \ @@ -40,6 +46,12 @@ makedep: makedep.o fnt2bdf: fnt2bdf.o $(CC) $(CFLAGS) -o fnt2bdf fnt2bdf.o $(LIBPORT) +fnt2fon: fnt2fon.o + $(CC) $(CFLAGS) -o fnt2fon fnt2fon.o $(LIBPORT) + +sfnt2fnt: sfnt2fnt.o + $(CC) $(CFLAGS) -o sfnt2fnt sfnt2fnt.o $(FREETYPELIBS) $(LIBUNICODE) $(LIBPORT) + bin2res: bin2res.o $(CC) $(CFLAGS) -o bin2res bin2res.o $(LIBPORT) diff --git a/tools/fnt2fon.c b/tools/fnt2fon.c new file mode 100644 index 00000000000..8043d9cb2e1 --- /dev/null +++ b/tools/fnt2fon.c @@ -0,0 +1,243 @@ +/* + * fnttofon. Combine several fnt files in one fon file + * + * Copyright 2004 Huw Davies + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include +#include +#include +#include + +unsigned char MZ_hdr[] = {'M', 'Z', 0x0d, 0x01, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x0e, 0x1f, 0xba, 0x0e, 0x00, 0xb4, 0x09, 0xcd, 0x21, 0xb8, 0x01, 0x4c, 0xcd, 0x21, 'T', 'h', + 'i', 's', ' ', 'P', 'r', 'o', 'g', 'r', 'a', 'm', ' ', 'c', 'a', 'n', 'n', 'o', + 't', ' ', 'b', 'e', ' ', 'r', 'u', 'n', ' ', 'i', 'n', ' ', 'D', 'O', 'S', ' ', + 'm', 'o', 'd', 'e', 0x0d, 0x0a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +unsigned char NE_hdr[] = {'N', 'E', 0x05, 0x01, 0xff, 0xff, 0x02, 0x00, 0x5c, 0x35, 0xe4, 0x41, 0x00, 0x83, 0x00, 0x00, + /* entry table tbd, 2 bytes long. */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x40, 0x00, 0x40, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + /* tbd bytes in non-resident name table, off of seg table 0x40, off of resource table 0x40, off of + resident name table (tbd) etc */ + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04 +}; + + +static void usage(char **argv) +{ + fprintf(stderr, "%s fntfiles output.fon\n", argv[0]); + return; +} + +int main(int argc, char **argv) +{ + int num_files, i, j; + FILE *fp, *ofp; + long off; + char name[200]; + int c; + char *cp; + short pt, ver, dpi[2]; + int resource_table_len, non_resident_name_len, resident_name_len; + unsigned short resource_table_off, resident_name_off, module_ref_off, non_resident_name_off, fontdir_off, font_off; + char resident_name[200] = ""; + int fontdir_len = 2, fontdir_len_shift; + char non_resident_name[200] = ""; + int *file_lens, nread; + int first_res = 0x0050, pad, res; + char fnt_header[0x100]; + char buf[0x1000]; + + if(argc < 3) { + usage(argv); + exit(1); + } + + num_files = argc - 2; + file_lens = malloc(num_files * sizeof(int)); + for(i = 0; i < num_files; i++) { + fp = fopen(argv[i+1], "r"); + if(!fp) { + fprintf(stderr, "Can't open %s\n", argv[i+1]); + usage(argv); + exit(1); + } + fread(&ver, sizeof(short), 1, fp); + if(ver != 0x200 && ver != 0x300) { + fprintf(stderr, "invalid fnt file %s ver %d\n", argv[i+1], ver); + exit(1); + } + fread(file_lens + i, sizeof(int), 1, fp); + fseek(fp, 0x44, SEEK_SET); + fread(&pt, sizeof(short), 1, fp); + fread(dpi, sizeof(short), 2, fp); + fseek(fp, 0x69, SEEK_SET); + fread(&off, sizeof(long), 1, fp); + fseek(fp, off, SEEK_SET); + cp = name; + while((c = fgetc(fp)) != 0 && c != EOF) + *cp++ = c; + *cp = '\0'; + fprintf(stderr, "%s %d pts %dx%d dpi\n", name, pt, dpi[0], dpi[1]); + fclose(fp); + fontdir_len += 0x74 + strlen(name) + 1; /* FIXME does the fontdir entry for version 3 fonts differ from 2? */ + if(i == 0) { + sprintf(non_resident_name, "FONTRES 100,%d,%d : %s %d", dpi[0], dpi[1], name, pt); + strcpy(resident_name, name); + } else { + sprintf(non_resident_name + strlen(non_resident_name), ",%d", pt); + } + } + if(dpi[0] <= 108) + strcat(non_resident_name, " (VGA res)"); + else + strcat(non_resident_name, " (8514 res)"); + non_resident_name_len = strlen(non_resident_name) + 4; + + /* shift count + fontdir entry + num_files of font + nul type + \007FONTDIR */ + resource_table_len = 2 + 20 + 8 + 12 * num_files + 2 + 8; + resource_table_off = NE_hdr[0x24]; + resource_table_off |= (NE_hdr[0x25] << 8); + resident_name_off = resource_table_off + resource_table_len; + NE_hdr[0x20] = non_resident_name_len & 0xff; + NE_hdr[0x21] = (non_resident_name_len >> 8) & 0xff; + NE_hdr[0x26] = resident_name_off & 0xff; + NE_hdr[0x27] = (resident_name_off >> 8) & 0xff; + resident_name_len = strlen(resident_name) + 4; + module_ref_off = resident_name_off + resident_name_len; + NE_hdr[0x28] = module_ref_off & 0xff; + NE_hdr[0x29] = (module_ref_off >> 8) & 0xff; + NE_hdr[0x2a] = NE_hdr[0x28]; + NE_hdr[0x2b] = NE_hdr[0x29]; + NE_hdr[0x04] = NE_hdr[0x28]; + NE_hdr[0x05] = NE_hdr[0x29]; + non_resident_name_off = 0x80 + module_ref_off + 2; + NE_hdr[0x2c] = non_resident_name_off & 0xff; + NE_hdr[0x2d] = (non_resident_name_off >> 8) & 0xff; + + fontdir_off = (non_resident_name_off + non_resident_name_len + 15) & ~0xf; + font_off = (fontdir_off + fontdir_len + 15) & ~0x0f; + ofp = fopen(argv[argc - 1], "w"); + fwrite(MZ_hdr, sizeof(MZ_hdr), 1, ofp); + fwrite(NE_hdr, sizeof(NE_hdr), 1, ofp); + fputc(0x04, ofp); + fputc(0x00, ofp); /* shift of 4 */ + fputc(0x07, ofp); + fputc(0x80, ofp); /* type 0x8007 */ + fputc(0x01, ofp); + fputc(0x00, ofp); /* 1 off */ + fputc(0x00, ofp); fputc(0x00, ofp); fputc(0x00, ofp); fputc(0x00, ofp); + fontdir_off >>= 4; + fputc(fontdir_off & 0xff, ofp); + fputc((fontdir_off >> 8) & 0xff, ofp); + fontdir_len_shift = (fontdir_len + 15) >> 4; + fputc(fontdir_len_shift & 0xff, ofp); + fputc((fontdir_len_shift >> 8) & 0xff, ofp); + fputc(0x50, ofp); + fputc(0x0c, ofp); + fputc(0x7c, ofp); + fputc(0x00, ofp); + fputc(0x00, ofp); fputc(0x00, ofp); + fputc(0x00, ofp); fputc(0x00, ofp); + fputc(0x08, ofp); + fputc(0x80, ofp); /* type 0x8008 */ + fputc(num_files & 0xff, ofp); + fputc((num_files >> 8) & 0xff, ofp); /* num_files off */ + fputc(0x00, ofp); fputc(0x00, ofp); fputc(0x00, ofp); fputc(0x00, ofp); + for(res = first_res | 0x8000, i = 0; i < num_files; i++, res++) { + int len = (file_lens[i] + 15) & ~0xf; + fputc((font_off >> 4) & 0xff, ofp); + fputc((font_off >> 12) & 0xff, ofp); + fputc((len >> 4) & 0xff, ofp); + fputc((len >> 12) & 0xff, ofp); + font_off += len; + fputc(0x30, ofp); + fputc(0x1c, ofp); + fputc(res & 0xff, ofp); + fputc((res >> 8) & 0xff, ofp); + fputc(0x00, ofp); fputc(0x00, ofp); + fputc(0x00, ofp); fputc(0x00, ofp); + } + fputc(0x00, ofp); fputc(0x00, ofp); /* nul type */ + fputc(strlen("FONTDIR"), ofp); + fwrite("FONTDIR", strlen("FONTDIR"), 1, ofp); + fputc(strlen(resident_name), ofp); + fwrite(resident_name, strlen(resident_name), 1, ofp); + fputc(0x00, ofp); fputc(0x00, ofp); + fputc(0x00, ofp); + fputc(0x00, ofp); fputc(0x00, ofp); + fputc(strlen(non_resident_name), ofp); + fwrite(non_resident_name, strlen(non_resident_name), 1, ofp); + fputc(0x00, ofp); fputc(0x00, ofp); + fputc(0x00, ofp); + pad = (non_resident_name_off + non_resident_name_len) & 0xf; + if(pad != 0) + pad = 0x10 - pad; + for(i = 0; i < pad; i++) + fputc(0x00, ofp); + + /* FONTDIR resource */ + fputc(num_files & 0xff, ofp); + fputc((num_files >> 8) & 0xff, ofp); + + for(res = first_res, i = 0; i < num_files; i++, res++) { + fp = fopen(argv[i+1], "r"); + fputc(res & 0xff, ofp); + fputc((res >> 8) & 0xff, ofp); + fread(fnt_header, 0x72, 1, fp); + fwrite(fnt_header, 0x72, 1, ofp); + + fseek(fp, 0x69, SEEK_SET); + fread(&off, sizeof(long), 1, fp); + fseek(fp, off, SEEK_SET); + cp = name; + while((c = fgetc(fp)) != 0 && c != EOF) + *cp++ = c; + *cp = '\0'; + fwrite(name, strlen(name) + 1, 1, ofp); + fclose(fp); + } + pad = fontdir_len & 0xf; + if(pad != 0) + pad = 0x10 - pad; + for(i = 0; i < pad; i++) + fputc(0x00, ofp); + + for(res = first_res, i = 0; i < num_files; i++, res++) { + fp = fopen(argv[i+1], "r"); + while(1) { + nread = read(fileno(fp), buf, sizeof(buf)); + if(!nread) break; + fwrite(buf, nread, 1, ofp); + } + fclose(fp); + pad = file_lens[i] & 0xf; + if(pad != 0) + pad = 0x10 - pad; + for(j = 0; j < pad; j++) + fputc(0x00, ofp); + } + fclose(ofp); + + return 0; +} diff --git a/tools/sfnt2fnt.c b/tools/sfnt2fnt.c new file mode 100644 index 00000000000..2cbb7424f08 --- /dev/null +++ b/tools/sfnt2fnt.c @@ -0,0 +1,420 @@ +/* + * sfnttofnt. Bitmap only ttf to Window fnt file converter + * + * Copyright 2004 Huw Davies + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "config.h" + +#include +#include +#include + +#ifdef HAVE_FREETYPE + +#ifdef HAVE_FT2BUILD_H +#include +#endif +#include FT_FREETYPE_H +#include FT_SFNT_NAMES_H +#include FT_TRUETYPE_TABLES_H + +#include "wine/unicode.h" +#include "wingdi.h" + +#pragma pack(1) + +typedef struct +{ + WORD dfVersion; + DWORD dfSize; + char dfCopyright[60]; +} FNT_HEADER; + +typedef struct +{ + INT16 dfType; + INT16 dfPoints; + INT16 dfVertRes; + INT16 dfHorizRes; + INT16 dfAscent; + INT16 dfInternalLeading; + INT16 dfExternalLeading; + CHAR dfItalic; + CHAR dfUnderline; + CHAR dfStrikeOut; + INT16 dfWeight; + BYTE dfCharSet; + INT16 dfPixWidth; + INT16 dfPixHeight; + CHAR dfPitchAndFamily; + INT16 dfAvgWidth; + INT16 dfMaxWidth; + CHAR dfFirstChar; + CHAR dfLastChar; + CHAR dfDefaultChar; + CHAR dfBreakChar; + INT16 dfWidthBytes; + LONG dfDevice; + LONG dfFace; + LONG dfBitsPointer; + LONG dfBitsOffset; + CHAR dfReserved; + /* Fields, introduced for Windows 3.x fonts */ + LONG dfFlags; + INT16 dfAspace; + INT16 dfBspace; + INT16 dfCspace; + LONG dfColorPointer; + LONG dfReserved1[4]; +} FONTINFO16, *LPFONTINFO16; + +typedef struct { + WORD width; + DWORD offset; +} CHAR_TABLE_ENTRY; + + +void usage(char **argv) +{ + fprintf(stderr, "%s foo.ttf ppem enc dpi def_char\n", argv[0]); + return; +} + +int lookup_charset(int enc) +{ + /* FIXME: make winelib app and use TranslateCharsetInfo */ + switch(enc) { + case 1250: + return EE_CHARSET; + case 1251: + return RUSSIAN_CHARSET; + case 1252: + return ANSI_CHARSET; + case 1253: + return GREEK_CHARSET; + case 1254: + return TURKISH_CHARSET; + case 1255: + return HEBREW_CHARSET; + case 1256: + return ARABIC_CHARSET; + case 1257: + return BALTIC_CHARSET; + case 1258: + return VIETNAMESE_CHARSET; + case 437: + case 737: + case 775: + case 850: + case 852: + case 855: + case 857: + case 860: + case 861: + case 862: + case 863: + case 864: + case 865: + case 866: + case 869: + return OEM_CHARSET; + case 874: + return THAI_CHARSET; + case 932: + return SHIFTJIS_CHARSET; + case 936: + return GB2312_CHARSET; + case 949: + return HANGUL_CHARSET; + case 950: + return CHINESEBIG5_CHARSET; + } + fprintf(stderr, "Unknown encoding %d - using OEM_CHARSET\n", enc); + + return OEM_CHARSET; +} + +static void fill_fontinfo(FT_Face face, int enc, FILE *fp, int dpi, unsigned char def_char) +{ + int ascent, il, ppem, descent, avg_width, width_bytes = 0, space_size, max_width = 0; + FNT_HEADER hdr; + FONTINFO16 fi; + BYTE left_byte, right_byte, byte; + DWORD start; + CHAR_TABLE_ENTRY *dfCharTable; + int i, x, y, x_off, x_end, first_char; + FT_Int gi; + int num_names; + const union cptable *cptable; + FT_SfntName sfntname; + char namebuf[4096]; + TT_OS2 *os2; + cptable = wine_cp_get_table(enc); + if(!cptable) { + fprintf(stderr, "Can't find codepage %d\n", enc); + exit(0); + } + if(cptable->info.char_size != 1) { + fprintf(stderr, "Can't cope with double byte codepages\n"); + exit(0); + } + + ppem = face->size->metrics.y_ppem; + start = sizeof(FNT_HEADER) + sizeof(FONTINFO16); + + if(FT_Load_Char(face, 0xc5, FT_LOAD_DEFAULT)) { + fprintf(stderr, "Can't find Aring\n"); + exit(0); + } + ascent = face->glyph->metrics.height >> 6; + descent = ppem - ascent; + if(FT_Load_Char(face, 'M', FT_LOAD_DEFAULT)) { + fprintf(stderr, "Can't find M\n"); + exit(0); + } + il = ascent - (face->glyph->metrics.height >> 6); + + /* Hack: Courier has no internal leading, so we do likewise */ + if(!strcmp(face->family_name, "Wine Courier")) + il = 0; + + if(FT_Load_Char(face, 'X', FT_LOAD_DEFAULT)) { + fprintf(stderr, "Can't find X\n"); + exit(0); + } + avg_width = face->glyph->metrics.horiAdvance >> 6; + + first_char = FT_Get_First_Char(face, &gi); + if(first_char == 0xd) /* fontforge's first glyph is 0xd, we'll catch this and skip it */ + first_char = FT_Get_Next_Char(face, first_char, &gi); + + dfCharTable = malloc((255 + 3) * sizeof(*dfCharTable)); + memset(&fi, 0, sizeof(fi)); + fi.dfFirstChar = first_char; + fi.dfLastChar = 0xff; + start += ((unsigned char)fi.dfLastChar - (unsigned char)fi.dfFirstChar + 3 ) * sizeof(*dfCharTable); + + num_names = FT_Get_Sfnt_Name_Count(face); + for(i = 0; i sbcs.cp2uni[i]); + if(gi == 0) + fprintf(stderr, "Missing glyph for char %04x\n", cptable->sbcs.cp2uni[i]); + if(FT_Load_Char(face, cptable->sbcs.cp2uni[i], FT_LOAD_DEFAULT)) { + fprintf(stderr, "error loading char %d - bad news!\n", i); + continue; + } + dfCharTable[i].width = face->glyph->metrics.horiAdvance >> 6; + dfCharTable[i].offset = start + (width_bytes * ppem); + width_bytes += ((face->glyph->metrics.horiAdvance >> 6) + 7) >> 3; + if(max_width < (face->glyph->metrics.horiAdvance >> 6)) + max_width = face->glyph->metrics.horiAdvance >> 6; + } + /* space */ + space_size = (ppem + 3) / 4; + dfCharTable[i].width = space_size; + dfCharTable[i].offset = start + (width_bytes * ppem); + width_bytes += (space_size + 7) >> 3; + /* sentinel */ + dfCharTable[++i].width = 0; + dfCharTable[i].offset = start + (width_bytes * ppem); + + fi.dfType = 0; + fi.dfPoints = ((ppem - il) * 72 + dpi/2) / dpi; + fi.dfVertRes = dpi; + fi.dfHorizRes = dpi; + fi.dfAscent = ascent; + fi.dfInternalLeading = il; + fi.dfExternalLeading = 0; + fi.dfItalic = (face->style_flags & FT_STYLE_FLAG_ITALIC) ? 1 : 0; + fi.dfUnderline = 0; + fi.dfStrikeOut = 0; + fi.dfWeight = os2->usWeightClass; + fi.dfCharSet = lookup_charset(enc); + fi.dfPixWidth = (face->face_flags & FT_FACE_FLAG_FIXED_WIDTH) ? + avg_width : 0; + fi.dfPixHeight = ppem; + fi.dfPitchAndFamily = FT_IS_FIXED_WIDTH(face) ? 0 : TMPF_FIXED_PITCH; + switch(os2->panose[PAN_FAMILYTYPE_INDEX]) { + case PAN_FAMILY_SCRIPT: + fi.dfPitchAndFamily |= FF_SCRIPT; + break; + case PAN_FAMILY_DECORATIVE: + case PAN_FAMILY_PICTORIAL: + fi.dfPitchAndFamily |= FF_DECORATIVE; + break; + case PAN_FAMILY_TEXT_DISPLAY: + if(fi.dfPitchAndFamily == 0) /* fixed */ + fi.dfPitchAndFamily = FF_MODERN; + else { + switch(os2->panose[PAN_SERIFSTYLE_INDEX]) { + case PAN_SERIF_NORMAL_SANS: + case PAN_SERIF_OBTUSE_SANS: + case PAN_SERIF_PERP_SANS: + fi.dfPitchAndFamily |= FF_SWISS; + break; + default: + fi.dfPitchAndFamily |= FF_ROMAN; + } + } + break; + default: + fi.dfPitchAndFamily |= FF_DONTCARE; + } + + fi.dfAvgWidth = avg_width; + fi.dfMaxWidth = max_width; + fi.dfDefaultChar = def_char - fi.dfFirstChar; + fi.dfBreakChar = ' ' - fi.dfFirstChar; + fi.dfWidthBytes = (width_bytes + 1) & ~1; + + fi.dfFace = start + fi.dfWidthBytes * ppem; + fi.dfBitsOffset = start; + fi.dfFlags = 0x10; /* DFF_1COLOR */ + fi.dfFlags |= FT_IS_FIXED_WIDTH(face) ? 1 : 2; /* DFF_FIXED : DFF_PROPORTIONAL */ + + hdr.dfVersion = 0x300; + hdr.dfSize = start + fi.dfWidthBytes * ppem + strlen(face->family_name) + 1; + fwrite(&hdr, sizeof(hdr), 1, fp); + fwrite(&fi, sizeof(fi), 1, fp); + fwrite(dfCharTable + fi.dfFirstChar, sizeof(*dfCharTable), ((unsigned char)fi.dfLastChar - (unsigned char)fi.dfFirstChar) + 3, fp); + + for(i = first_char; i < 0x100; i++) { + if(FT_Load_Char(face, cptable->sbcs.cp2uni[i], FT_LOAD_DEFAULT)) { + continue; + } + assert(dfCharTable[i].width == face->glyph->metrics.horiAdvance >> 6); + + for(x = 0; x < ((dfCharTable[i].width + 7) / 8); x++) { + for(y = 0; y < ppem; y++) { + if(y < ascent - face->glyph->bitmap_top || + y >= face->glyph->bitmap.rows + ascent - face->glyph->bitmap_top) { + fputc('\0', fp); + continue; + } + x_off = face->glyph->bitmap_left / 8; + x_end = (face->glyph->bitmap_left + face->glyph->bitmap.width - 1) / 8; + if(x < x_off || x > x_end) { + fputc('\0', fp); + continue; + } + if(x == x_off) + left_byte = 0; + else + left_byte = face->glyph->bitmap.buffer[(y - (ascent - face->glyph->bitmap_top)) * face->glyph->bitmap.pitch + x - x_off - 1]; + + /* On the last non-trival output byte (x == x_end) have we got one or two input bytes */ + if(x == x_end && (face->glyph->bitmap_left % 8 != 0) && ((face->glyph->bitmap.width % 8 == 0) || (x != (((face->glyph->bitmap.width) & ~0x7) + face->glyph->bitmap_left) / 8))) + right_byte = 0; + else + right_byte = face->glyph->bitmap.buffer[(y - (ascent - face->glyph->bitmap_top)) * face->glyph->bitmap.pitch + x - x_off]; + + byte = (left_byte << (8 - (face->glyph->bitmap_left & 7))) & 0xff; + byte |= ((right_byte >> (face->glyph->bitmap_left & 7)) & 0xff); + fputc(byte, fp); + } + } + } + for(x = 0; x < (space_size + 7) / 8; x++) { + for(y = 0; y < ppem; y++) + fputc('\0', fp); + } + + if(width_bytes & 1) { + for(y = 0; y < ppem; y++) + fputc('\0', fp); + } + fprintf(fp, "%s", face->family_name); + fputc('\0', fp); + +} + + +int main(int argc, char **argv) +{ + int ppem, enc; + FT_Face face; + FT_Library lib; + int dpi; + unsigned int def_char; + FILE *fp; + char output[256]; + char name[256]; + char *cp; + if(argc != 6) { + usage(argv); + exit(0); + } + + ppem = atoi(argv[2]); + enc = atoi(argv[3]); + dpi = atoi(argv[4]); + def_char = atoi(argv[5]); + if(FT_Init_FreeType(&lib)) { + fprintf(stderr, "ft init failure\n"); + exit(0); + } + + if(FT_New_Face(lib, argv[1], 0, &face)) { + fprintf(stderr, "Can't open face\n"); + usage(argv); + exit(0); + } + + if(FT_Set_Pixel_Sizes(face, ppem, ppem)) { + fprintf(stderr, "Can't set size\n"); + usage(argv); + exit(0); + } + + strcpy(name, face->family_name); + /* FIXME: should add a -o option instead */ + for(cp = name; *cp; cp++) + { + if(*cp == ' ') *cp = '_'; + else if (*cp >= 'A' && *cp <= 'Z') *cp += 'a' - 'A'; + } + + sprintf(output, "%s-%d-%d-%d.fnt", name, enc, dpi, ppem); + + fp = fopen(output, "w"); + + fill_fontinfo(face, enc, fp, dpi, def_char); + fclose(fp); + exit(0); +} + +#else /* HAVE_FREETYPE */ + +int main(int argc, char **argv) +{ + fprintf( stderr, "%s needs to be built with Freetype support\n", argv[0] ); + exit(1); +} + +#endif /* HAVE_FREETYPE */