public object Clone()
                {
                    sbitLineMetricsCache slmc = new sbitLineMetricsCache();

                    slmc.ascender              = ascender;
                    slmc.descender             = descender;
                    slmc.widthMax              = widthMax;
                    slmc.caretSlopeNumerator   = caretSlopeNumerator;
                    slmc.caretSlopeDenominator = caretSlopeDenominator;
                    slmc.caretOffset           = caretOffset;
                    slmc.minOriginSB           = minOriginSB;
                    slmc.minAdvanceSB          = minAdvanceSB;
                    slmc.maxBeforeBL           = maxBeforeBL;
                    slmc.minAfterBL            = minAfterBL;
                    slmc.pad1                  = pad1;
                    slmc.pad2                  = pad2;

                    return slmc;
                }
                static public sbitLineMetricsCache FromSbitLineMetrics(sbitLineMetrics slm)
                {
                    sbitLineMetricsCache slmc = new sbitLineMetricsCache();

                    slmc.ascender              = slm.ascender;
                    slmc.descender             = slm.descender;
                    slmc.widthMax              = slm.widthMax;
                    slmc.caretSlopeNumerator   = slm.caretSlopeNumerator;
                    slmc.caretSlopeDenominator = slm.caretSlopeDenominator;
                    slmc.caretOffset           = slm.caretOffset;
                    slmc.minOriginSB           = slm.minOriginSB;
                    slmc.minAdvanceSB          = slm.minAdvanceSB;
                    slmc.maxBeforeBL           = slm.maxBeforeBL;
                    slmc.minAfterBL            = slm.minAfterBL;
                    slmc.pad1                  = slm.pad1;
                    slmc.pad2                  = slm.pad2;

                    return slmc;
                }