Author: tkreuzer
Date: Tue May 17 14:02:44 2011
New Revision: 51810

URL: http://svn.reactos.org/svn/reactos?rev=51810&view=rev
Log:
[GDI FONT DRIVER]
- Fix buffer size for EngMultiByteToUnicodeN
- Fix calculation of the checksum for the 'head' true type table

Modified:
    branches/GSoC_2011/GdiFontDriver/drivers/video/font/ftfd/font.c
    branches/GSoC_2011/GdiFontDriver/drivers/video/font/ftfd/todo.txt
    branches/GSoC_2011/GdiFontDriver/drivers/video/font/ftfd/tttables.c

Modified: branches/GSoC_2011/GdiFontDriver/drivers/video/font/ftfd/font.c
URL: 
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/GdiFontDriver/drivers/video/font/ftfd/font.c?rev=51810&r1=51809&r2=51810&view=diff
==============================================================================
--- branches/GSoC_2011/GdiFontDriver/drivers/video/font/ftfd/font.c 
[iso-8859-1] (original)
+++ branches/GSoC_2011/GdiFontDriver/drivers/video/font/ftfd/font.c 
[iso-8859-1] Tue May 17 14:02:44 2011
@@ -225,19 +225,19 @@
 
     /* Convert names to unicode */
     EngMultiByteToUnicodeN(pifiex->awcFamilyName,
-                           LF_FACESIZE,
+                           sizeof(pifiex->awcFamilyName),
                            NULL,
                            ftface->family_name,
                            strnlen(ftface->family_name, MAX_PATH));
 
     EngMultiByteToUnicodeN(pifiex->awcStyleName,
-                           LF_FACESIZE,
+                           sizeof(pifiex->awcStyleName),
                            NULL,
                            ftface->style_name,
                            strnlen(ftface->style_name, MAX_PATH));
 
     EngMultiByteToUnicodeN(pifiex->awcFaceName,
-                           LF_FACESIZE,
+                           sizeof(pifiex->awcFaceName),
                            NULL,
                            ftface->family_name,
                            strnlen(ftface->family_name, MAX_PATH));
@@ -249,7 +249,7 @@
     pifiex->awcUniqueName[2] = L'0' + (LOWORD(pface->ulFontRevision) / 100) % 
10;
     pifiex->awcUniqueName[3] = L'0' + (LOWORD(pface->ulFontRevision) / 10) % 
10;
     pifiex->awcUniqueName[4] = L'0' +  LOWORD(pface->ulFontRevision) % 10;
-    EngMultiByteToUnicodeN(pifiex->awcUniqueName+6, 4, NULL, pifi->achVendId, 
4);
+    EngMultiByteToUnicodeN(pifiex->awcUniqueName+6, 8, NULL, pifi->achVendId, 
4);
 
     //__debugbreak();
     return TRUE;

Modified: branches/GSoC_2011/GdiFontDriver/drivers/video/font/ftfd/todo.txt
URL: 
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/GdiFontDriver/drivers/video/font/ftfd/todo.txt?rev=51810&r1=51809&r2=51810&view=diff
==============================================================================
--- branches/GSoC_2011/GdiFontDriver/drivers/video/font/ftfd/todo.txt 
[iso-8859-1] (original)
+++ branches/GSoC_2011/GdiFontDriver/drivers/video/font/ftfd/todo.txt 
[iso-8859-1] Tue May 17 14:02:44 2011
@@ -15,7 +15,6 @@
 - FtfdQueryFontCaps: 100% done
 - FtfdQueryTrueTypeTable: 100% done
 - FtfdGetTrueTypeFile: 100% done
-
 - FtfdQueryFontData: 10%, depends on FtfdLoadGlyph
     - QFD_MAXEXTENTS: dependes on FtfdQueryMaxExtents
     - QFD_GLYPHANDBITMAP: depends on FtfdQueryGlyphData, FtfdQueryGlyphBits
@@ -33,11 +32,20 @@
 -------------------
 - FtfdInitIfiMetrics: 80% done
     - handle other font types than TTF/OTF
-    - fix fwdLowestPPEm, fwdMacLineGap, ptlBaseline, ptlAspect, ptlCaret
-    - cKerningPairs from atmfd is bigger, ulPanoseCulture
-    - check fwdMacAscender, fwdMacDescender
-    - Check jWinPitchandFamily (from OS/2 table, Apolonia: 0,0->0x12)
-    - fix fwdUnderscorePosition
+    - dpwszFamilyName, dpwszStyleName, dpwszFaceName: locale
+    - dpwszUniqueName: get from 'name' table
+    - dpFontSim: implement
+    - dpCharSets: implement
+    - fwdMacLineGap: implement
+    - fwdMaxCharInc: check/fix
+    - fwdCapHeight: check/fix
+    - fwdUnderscorePosition: fix
+    - chFirstChar, chLastChar, chDefaultChar, chBreakChar: fix
+    - wcDefaultChar, wcBreakChar: fix
+    - ptlBaseline: fix
+    - ptlAspect: fix
+    - ptlCaret: fix
+    - jWinPitchandFamily: check, improve (Apolonia: 0,0->0x12)
 
 - FtfdInitGlyphSet: 100% done
 - FtfdInitKerningPairs: 90% done
@@ -55,12 +63,17 @@
     - handle vertical layout
     - handle ptqD for rotation / skewing
 
-- FtfdQueryGlyphBits: 50% depends on FtfdCopyBitmap4Bpp and FtfdCopyBitmap1Bpp
-    - handle 1bpp bitmaps
+- FtfdQueryGlyphBits: 90% depends on FtfdCopyBitmap4Bpp and FtfdCopyBitmap1Bpp
 
 - FtfdQueryGlyphOutline: unimplemented
 - FtfdCopyBitmap4Bpp: 90 %
     - add rounding
     - Could need optimization
-- FtfdCopyBitmap1Bpp: unimplemented
+- FtfdCopyBitmap1Bpp: 90 %
+    - Can we use full memcpy?
 
+When replacing the original ttf driver
+-----------------------------------------------
+- Horizontal metrics are broken
+- Marlett symbols are wrong
+

Modified: branches/GSoC_2011/GdiFontDriver/drivers/video/font/ftfd/tttables.c
URL: 
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/GdiFontDriver/drivers/video/font/ftfd/tttables.c?rev=51810&r1=51809&r2=51810&view=diff
==============================================================================
--- branches/GSoC_2011/GdiFontDriver/drivers/video/font/ftfd/tttables.c 
[iso-8859-1] (original)
+++ branches/GSoC_2011/GdiFontDriver/drivers/video/font/ftfd/tttables.c 
[iso-8859-1] Tue May 17 14:02:44 2011
@@ -121,8 +121,18 @@
                 return NULL;
             }
 
-            /* Check the table's checksum */
+            /* Calculate the table's checksum */
             ulCheckSum = CalcTableChecksum((PUCHAR)pvView + ulOffset, 
ulLength);
+
+            /* Special fixup for 'head' table */
+            if (ulTag == 'daeh')
+            {
+                /* Substract checkSumAdjustment value */
+                PULONG pulAdjust = (PULONG)((PUCHAR)pvView + ulOffset + 8);
+                ulCheckSum -= GETD(pulAdjust);
+            }
+
+            /* Check for failure */
             if (ulCheckSum != GETD(&pFontHeader->aTableEntries[i].ulCheckSum))
             {
                 WARN("Checksum mitmatch! %ld, %ld \n", ulOffset, ulLength);


Reply via email to