Release 941107

Sun Nov  6 18:52:04 1994  Alexandre Julliard  (julliard@lamisun.epfl.ch)

	* [objects/oembitmap.c]  (New file)
	Added possibility to use .xpm files for OEM bitmaps.

	* [include/bitmaps/obm*]  (New files)
	Redrawn all OEM bitmaps in xpm format.

	* [objects/font.c]
	Add space for internal leading when using a negative font height.
	Stubs for AddFontResource() and RemoveFontResource().
	Fix in FONT_Init() for uninitialised default font.

	* [windows/dialog.c]
	Make font height negative as it is really a point size and not a
	pixel size; dialogs using 8-point fonts look better now.

	* [windows/graphics.c]
	Fixed the fix :-) for Pie() to make it work for Arc() and Chord() also.

	* [windows/nonclient.c]
	A few changes for new OEM bitmaps.

Sun Nov  6 18:22:18 1994  Michael Patra  <micky@marie.physik.tu-berlin.de>

	* [windows/class.c]
	The names of local classes have to be stored using GlobalAtom*.
	Otherwise they couldn't be accessed from other modules (e.g. BWCC) 

	* [if1632/call.S]
	CallTo16(cx): It's possible to set the contents of the cx-register.

	* [loader/ne_image.c]
	InitNEDLL(): The size of the local heap is now passed in the cx-
	register when initializing a DLL.

	* [memory/heap.c]
	LocalInit(): The case start==0 is now handled in the way it should.

	* [windows/win.c]
	GetWindowLong(): If the adress of the windows function is requested
	it's no longer returned if it's within the Wine code (and therefore
	unreachable by a windows program). This makes Borland's OWL happy.

	* [controls/edit.c]
	EDIT_GetStr(): Added handling for off<0.

Sun Nov  6 17:37:14 1994  Chris Jones  <chrisj@ichips.intel.com>

	* [loader/library.c]
	Fixed infinite loop bug when two DLLs refer to each other (fixes
	hangup of Quicken during loading).

Thu Nov 04 12:00:00 1994  Jan Willamowius  (jan@janhh.sh.sub.de)

	* [misc/dos_fs.c]
	Bug fix: The size of a disk an the available space
	is now returned in bytes instead of (incorrectly)
	KBytes.

Thu Nov 03 12:00:00 1994  Jan Willamowius  (jan@janhh.sh.sub.de)

	* [windows/graphics.c]
	Bug fix: Pie segments are now filled with correct brush.

Thu Nov  3 10:40:09 1994  Martin von Loewis  (martin@cs.csufresno.edu)

        * [Imakefile]
        generate rc.o before loader.o

        * [controls/menu.c]
        CopySysMenu: generate SYSMENU on the fly, eliminate hSysMenu

        * [include/resource.h]
        Add struct ResourceTable

        * [loader/bitmap.h]
        Load system bitmaps from sysresbmTable

        * [misc/clipboard.c]
          [windows/event.c]
        IsClipboardFormatAvailable,EVENT_SelectionRequest: bug fixes
        
        * [rc/Imakefile]
        generate rc.o from sysres.o and sysresbm.o. Added -lfl

        * [rc/rc.y]
        change style handling to allow ( S1 | S2 ) | S3

        * [rc/sysres.rc]
          [rc/sysresbm.rc]
        Put bitmaps and icons to sysresbm, everything else to sysres

        * [rc/winerc.c]
          [rc/winerc.h]
        Added -o, -c flags. New function set_out_file. Output to files.

        * [windows/dialog.c]
        DialogBoxIndirectPtr, DialogBoxIndirectParamPtr: New functions 

        * [windows/nonclient.c]
        Create AboutWine dialog from template pointer
diff --git a/objects/font.c b/objects/font.c
index 111984d..2e6480b 100644
--- a/objects/font.c
+++ b/objects/font.c
@@ -65,9 +65,9 @@
   int i;
 
   if( GetPrivateProfileString("fonts", NULL, "*", temp, sizeof(temp), WINE_INI) > 2 ) {
-    for( ptr = temp, i = 1; strlen(ptr) != 0; ptr += strlen(ptr) + 1, i++ )
+    for( ptr = temp, i = 1; strlen(ptr) != 0; ptr += strlen(ptr) + 1 )
       if( strcmp( ptr, "default" ) )
-	FontNames[i].window = strdup( ptr );
+	FontNames[i++].window = strdup( ptr );
     FontSize = i;
 
     for( i = 1; i < FontSize; i++ ) {
@@ -75,8 +75,7 @@
       FontNames[i].x11 = strdup( temp );
     }
     GetPrivateProfileString("fonts", "default", "*", temp, sizeof(temp), WINE_INI);
-    if( *temp == '*' )
-      FontNames[0].x11 = strdup( temp );
+    FontNames[0].x11 = strdup( temp );
 
   } else {
     FontNames[0].window = NULL; FontNames[0].x11 = "bitstream-courier";
@@ -114,7 +113,7 @@
  *
  * Find a X font matching the logical font.
  */
-static XFontStruct * FONT_MatchFont( LOGFONT * font )
+static XFontStruct * FONT_MatchFont( LOGFONT * font, DC * dc )
 {
     char pattern[100];
     const char *family, *weight, *charset;
@@ -125,8 +124,17 @@
     
     weight = (font->lfWeight > 550) ? "bold" : "medium";
     slant = font->lfItalic ? 'i' : 'r';
-    height = abs(font->lfHeight * 10);
-    width = font->lfWidth * 10;
+    height = font->lfHeight * dc->w.VportExtX / dc->w.WndExtX;
+    if (height == 0) height = 120;  /* Default height = 12 */
+    else if (height < 0)
+    {
+          /* If height is negative, it means the height of the characters */
+          /* *without* the internal leading. So we adjust it a bit to     */
+          /* compensate. 5/4 seems to give good results for small fonts.  */
+        height = 10 * (-height * 5 / 4);
+    }
+    else height *= 10;
+    width  = 10 * (font->lfWidth * dc->w.VportExtY / dc->w.WndExtY);
     spacing = (font->lfPitchAndFamily & FIXED_PITCH) ? 'm' :
 	      (font->lfPitchAndFamily & VARIABLE_PITCH) ? 'p' : '*';
     charset = (font->lfCharSet == ANSI_CHARSET) ? "iso8859-1" : "*-*";
@@ -304,7 +312,7 @@
     
     if (!stockPtr || !stockPtr->fstruct)
     {
-	fontStruct = FONT_MatchFont( &font->logfont );
+	fontStruct = FONT_MatchFont( &font->logfont, dc );
     }
     else
     {
@@ -521,6 +529,27 @@
     return TRUE;
 }
 
+
+/***********************************************************************
+ *           AddFontResource    (GDI.119)
+ */
+int AddFontResource( LPSTR str )
+{
+    fprintf( stdnimp, "STUB: AddFontResource('%s')\n", str );
+    return 1;
+}
+
+
+/***********************************************************************
+ *           RemoveFontResource    (GDI.136)
+ */
+BOOL RemoveFontResource( LPSTR str )
+{
+    fprintf( stdnimp, "STUB: RemoveFontResource('%s')\n", str );
+    return TRUE;
+}
+
+
 /*************************************************************************
  *				ParseFontParms		[internal]
  */