Removed some unaligned accesses.

diff --git a/graphics/x11drv/xfont.c b/graphics/x11drv/xfont.c
index e105e9b..4f48120 100644
--- a/graphics/x11drv/xfont.c
+++ b/graphics/x11drv/xfont.c
@@ -1072,7 +1072,10 @@
 	pTM->tmWeight += 100;
     } 
 
-    *(INT*)&pTM->tmFirstChar = *(INT*)&pdf->dfFirstChar;
+    pTM->tmFirstChar = pdf->dfFirstChar;
+    pTM->tmLastChar = pdf->dfLastChar;
+    pTM->tmDefaultChar = pdf->dfDefaultChar;
+    pTM->tmBreakChar = pdf->dfBreakChar;
 
     pTM->tmCharSet = pdf->dfCharSet;
     pTM->tmPitchAndFamily = pdf->dfPitchAndFamily;
@@ -1122,7 +1125,10 @@
     pTM->tmDigitizedAspectX = pfi->df.dfHorizRes;
     pTM->tmDigitizedAspectY = pfi->df.dfVertRes;
 
-    *(INT*)&pTM->tmFirstChar = *(INT*)&pfi->df.dfFirstChar;
+    pTM->tmFirstChar = pfi->df.dfFirstChar;
+    pTM->tmLastChar = pfi->df.dfLastChar;
+    pTM->tmDefaultChar = pfi->df.dfDefaultChar;
+    pTM->tmBreakChar = pfi->df.dfBreakChar;
 
     /* return font type */
 
diff --git a/objects/font.c b/objects/font.c
index e80e1ec..d1933db 100644
--- a/objects/font.c
+++ b/objects/font.c
@@ -92,43 +92,75 @@
 /***********************************************************************
  *              LOGFONT conversion functions.
  */
-static void __logfont32to16( INT16* plf16, const INT* plf32 )
-{
-    int  i;
-    for( i = 0; i < 5; i++ ) *plf16++ = *plf32++;
-   *((INT*)plf16)++ = *plf32++;
-   *((INT*)plf16)   = *plf32;
-}
-
-static void __logfont16to32( INT* plf32, const INT16* plf16 )
-{
-    int i;
-    for( i = 0; i < 5; i++ ) *plf32++ = *plf16++;
-   *plf32++ = *((INT*)plf16)++;
-   *plf32   = *((INT*)plf16);
-}
-
 void FONT_LogFont32ATo16( const LOGFONTA* font32, LPLOGFONT16 font16 )
 {
-  __logfont32to16( (INT16*)font16, (const INT*)font32 );
+    font16->lfHeight = font32->lfHeight;
+    font16->lfWidth = font32->lfWidth;
+    font16->lfEscapement = font32->lfEscapement;
+    font16->lfOrientation = font32->lfOrientation;
+    font16->lfWeight = font32->lfWeight;
+    font16->lfItalic = font32->lfItalic;
+    font16->lfUnderline = font32->lfUnderline;
+    font16->lfStrikeOut = font32->lfStrikeOut;
+    font16->lfCharSet = font32->lfCharSet;
+    font16->lfOutPrecision = font32->lfOutPrecision;
+    font16->lfClipPrecision = font32->lfClipPrecision;
+    font16->lfQuality = font32->lfQuality;
+    font16->lfPitchAndFamily = font32->lfPitchAndFamily;
     lstrcpynA( font16->lfFaceName, font32->lfFaceName, LF_FACESIZE );
 }
 
 void FONT_LogFont32WTo16( const LOGFONTW* font32, LPLOGFONT16 font16 )
 {
-  __logfont32to16( (INT16*)font16, (const INT*)font32 );
+    font16->lfHeight = font32->lfHeight;
+    font16->lfWidth = font32->lfWidth;
+    font16->lfEscapement = font32->lfEscapement;
+    font16->lfOrientation = font32->lfOrientation;
+    font16->lfWeight = font32->lfWeight;
+    font16->lfItalic = font32->lfItalic;
+    font16->lfUnderline = font32->lfUnderline;
+    font16->lfStrikeOut = font32->lfStrikeOut;
+    font16->lfCharSet = font32->lfCharSet;
+    font16->lfOutPrecision = font32->lfOutPrecision;
+    font16->lfClipPrecision = font32->lfClipPrecision;
+    font16->lfQuality = font32->lfQuality;
+    font16->lfPitchAndFamily = font32->lfPitchAndFamily;
     lstrcpynWtoA( font16->lfFaceName, font32->lfFaceName, LF_FACESIZE );
 }
 
 void FONT_LogFont16To32A( const LPLOGFONT16 font16, LPLOGFONTA font32 )
 {
-  __logfont16to32( (INT*)font32, (const INT16*)font16 );
+    font32->lfHeight = font16->lfHeight;
+    font32->lfWidth = font16->lfWidth;
+    font32->lfEscapement = font16->lfEscapement;
+    font32->lfOrientation = font16->lfOrientation;
+    font32->lfWeight = font16->lfWeight;
+    font32->lfItalic = font16->lfItalic;
+    font32->lfUnderline = font16->lfUnderline;
+    font32->lfStrikeOut = font16->lfStrikeOut;
+    font32->lfCharSet = font16->lfCharSet;
+    font32->lfOutPrecision = font16->lfOutPrecision;
+    font32->lfClipPrecision = font16->lfClipPrecision;
+    font32->lfQuality = font16->lfQuality;
+    font32->lfPitchAndFamily = font16->lfPitchAndFamily;
     lstrcpynA( font32->lfFaceName, font16->lfFaceName, LF_FACESIZE );
 }
 
 void FONT_LogFont16To32W( const LPLOGFONT16 font16, LPLOGFONTW font32 )
 {
-  __logfont16to32( (INT*)font32, (const INT16*)font16 );
+    font32->lfHeight = font16->lfHeight;
+    font32->lfWidth = font16->lfWidth;
+    font32->lfEscapement = font16->lfEscapement;
+    font32->lfOrientation = font16->lfOrientation;
+    font32->lfWeight = font16->lfWeight;
+    font32->lfItalic = font16->lfItalic;
+    font32->lfUnderline = font16->lfUnderline;
+    font32->lfStrikeOut = font16->lfStrikeOut;
+    font32->lfCharSet = font16->lfCharSet;
+    font32->lfOutPrecision = font16->lfOutPrecision;
+    font32->lfClipPrecision = font16->lfClipPrecision;
+    font32->lfQuality = font16->lfQuality;
+    font32->lfPitchAndFamily = font16->lfPitchAndFamily;
     lstrcpynAtoW( font32->lfFaceName, font16->lfFaceName, LF_FACESIZE );
 }