Menu

Home

Hin-Tak Leung

Welcome to the Font-Validator wiki!

# do I have to install "mono" first?

Yes. The situation is entirely the same as java. If you develop, you need both the compiler and the runtime, if you are interested in running only, you still need the runtime. For Linux and windows, Ximian (or Linux distros) don't distinguish the two; but for Mac OS X, the last time I checked, they do distinguish that - you can download a runtime-only package, or a larger SDK package (which includes the runtime).

Until I or somebody bothered enough to use mkbundle to create MACH-O executable (for Mac OS X) or ELF (for Linux , that is). Oh, of course, if you are on windows, you don't need mono - but you would't be asking if that's the case, I reckon.

# filing issues

Use 
https://github.com/Microsoft/Font-Validator/issues/8
for 'update to 2015 spec'.

Questions, suggestions, pulls about past codes go to Microsoft's issue tracker. My issue tracker is for the parts I added - the OS/2 multi-lingual code page support, the freetype backend, the DSIG check, the Makefile and the build system (there wasn't any - MS removed those before I got it) - I also added bug fixes, etc to specific fonts I see, etc, and questions about those changes can go there also.

# Unchecked-in hacks:

Mostly these are things Cosimo asked about, which aren't in the public branches.

To get detailed VMDX, drop the tolperc to 0:

```
diff --git a/OTFontFileVal/val_VDMX.cs b/OTFontFileVal/val_VDMX.cs
index 1b3cb1e..071e7bb 100644
--- a/OTFontFileVal/val_VDMX.cs
+++ b/OTFontFileVal/val_VDMX.cs
@@ -28,6 +28,9 @@ namespace OTFontFileVal

         bool TestTolerance(int ycalc, int ytable,int dif)
         {
+            if (Environment.GetEnvironmentVariable("DETAILED_VDMX") != null)
+                tolperc = 0;
+
             if (ytable < ycalc - (1 + (dif * tolperc - 1) / 100) || ytable > ycalc + (1 + (dif * tolperc - 1) / 100))
             {
                 return false;
```

To make HDMX less noisy, do this:

```
diff --git a/OTFontFileVal/val_hdmx.cs b/OTFontFileVal/val_hdmx.cs
index 3bc509f..dad7b61 100644
--- a/OTFontFileVal/val_hdmx.cs
+++ b/OTFontFileVal/val_hdmx.cs
@@ -254,6 +254,7 @@ namespace OTFontFileVal

                     if (dmd != null)
                     {
+                        bool match_loosely = (Environment.GetEnvironmentVariable("LOOSE_HDMX_MATCH") != null);
                         for (uint i=0; i<NumberDeviceRecords; i++)
                         {
                             DeviceRecord dr = GetDeviceRecord(i, numGlyphs);
@@ -263,6 +264,16 @@ namespace OTFontFileVal

                                 if (dr.GetWidth(iGlyph) != dmd.hdmxData.Records[i].Widths[iGlyph])
                                 {
+                                    // skip error if difference is <+-2
+                                    if ( match_loosely &&
+                                         ( ( (dr.GetWidth(iGlyph) < dmd.hdmxData.Records[i].Widths[iGlyph]) &&
+                                             (dr.GetWidth(iGlyph) + 3 >  dmd.hdmxData.Records[i].Widths[iGlyph])
+                                             ) || (
+                                                   (dr.GetWidth(iGlyph) > dmd.hdmxData.Records[i].Widths[iGlyph]) &&
+                                                   (dr.GetWidth(iGlyph) <  dmd.hdmxData.Records[i].Widths[iGlyph] + 3) )
+                                           )
+                                         )
+                                        continue;

                                     String sDetails = "rec " + i + ", PixelSize " + dr.PixelSize + ", glyph# " + iGlyph 
                                         + ", width = " + dr.GetWidth(iGlyph) + ", calc = " + dmd.hdmxData.Records[i].Widths[iGlyph];
`
```

I haven't got a good answer for LTSH, and welcome suggestions.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.