def get_glyph(glyph_name, data=None):
<EOL>if data is None:<EOL><INDENT>global GLYPHDATA<EOL>if GLYPHDATA is None:<EOL><INDENT>GLYPHDATA = GlyphData.from_files(<EOL>os.path.join(<EOL>os.path.dirname(glyphsLib.__file__), "<STR_LIT:data>", "<STR_LIT>"<EOL>),<EOL>os.path.join(<EOL>os.path.dirname(glyphsLib.__file__),<EOL>"<STR_LIT:data>",<EOL>"<STR_LIT>",<EOL>),<EOL>)<EOL><DEDENT>data = GLYPHDATA<EOL><DEDENT>attributes = _lookup_attributes(glyph_name, data)<EOL>production_name = attributes.get("<STR_LIT>")<EOL>if production_name is None:<EOL><INDENT>production_name = _construct_production_name(glyph_name, data=data)<EOL><DEDENT>unicode_value = attributes.get("<STR_LIT>")<EOL>category = attributes.get("<STR_LIT>")<EOL>sub_category = attributes.get("<STR_LIT>")<EOL>if category is None:<EOL><INDENT>category, sub_category = _construct_category(glyph_name, data)<EOL><DEDENT>script = attributes.get("<STR_LIT>")<EOL>description = attributes.get("<STR_LIT:description>")<EOL>return Glyph(<EOL>glyph_name,<EOL>production_name,<EOL>unicode_value,<EOL>category,<EOL>sub_category,<EOL>script,<EOL>description,<EOL>)<EOL>
Return a named tuple (Glyph) containing information derived from a glyph
    name akin to GSGlyphInfo.

    The information is derived from an included copy of GlyphData.xml
    and GlyphData_Ideographs.xml, going purely by the glyph name.