                 
                 if let _last = last {
                     if let glyph = base.glyph(with: _last, unicode) {
-                        result.append(0..<numberOfGlyphs ~= glyph ? glyph : 0)
+                        result.append(glyph)
                         last = nil
                     } else {
-                        result.append(self.glyph(with: _last))
+                        result.append(base.glyph(with: _last))
                         last = unicode
                     }
                 } else {

            }
            
            if let last = last {
                result.append(self.glyph(with: last))
            }
            
        } else {
            result = unicodes.map { self.glyph(with: $0) }
        }
        
        return base.substitution(glyphs: result, layout: layout, features: features)

    }
    
    public func glyph(with unicode: UnicodeScalar) -> Int {
        return base.glyph(with: unicode)
    }
    
    public func glyphs<S: Sequence>(with unicodes: S, layout: LayoutSetting = LayoutSetting()) -> [Int] where S.Element == UnicodeScalar {
