{"record":{"id":"2371d8e5a15070aa","repo":"stride3d/stride","slug":"failed-to-render-glyph-for-character-character-freetype","errorCode":null,"errorMessage":"Failed to render glyph for character '{character}' (FreeType error {err})","messagePattern":"Failed to render glyph for character '(.+?)' \\(FreeType error (.+?)\\)","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"sources/engine/Stride.Assets/SpriteFont/Compiler/FreeTypeFontImporter.cs","lineNumber":132,"sourceCode":"                };\n                return glyph;\n            }\n\n            // Load and render the glyph\n            {\n                var loadTarget = antiAliasMode == FontAntiAliasMode.Aliased\n                    ? FreeTypeLoadTarget.Mono\n                    : FreeTypeLoadTarget.Normal;\n                int err = FreeTypeNative.FT_Load_Glyph(face, glyphIndex, (int)FreeTypeLoadFlags.Default | (int)loadTarget);\n                if (err != 0)\n                    throw new InvalidOperationException($\"Failed to load glyph for character '{character}' (FreeType error {err})\");\n\n                var renderMode = antiAliasMode == FontAntiAliasMode.Aliased\n                    ? FreeTypeRenderMode.Mono\n                    : FreeTypeRenderMode.Normal;\n                err = FreeTypeNative.FT_Render_Glyph(face->glyph, renderMode);\n                if (err != 0)\n                    throw new InvalidOperationException($\"Failed to render glyph for character '{character}' (FreeType error {err})\");\n            }\n\n            ref FT_Bitmap ftBitmap = ref face->glyph->bitmap;\n            int width = (int)ftBitmap.width;\n            int height = (int)ftBitmap.rows;\n\n            if (width == 0 || height == 0)\n            {\n                var emptyBitmap = new Image<Rgba32>(1, 1);\n                return new Glyph(character, emptyBitmap)\n                {\n                    XOffset = face->glyph->bitmap_left,\n                    YOffset = -face->glyph->bitmap_top,\n                    XAdvance = face->glyph->advance.x.Value / 64.0f,\n                };\n            }\n\n            var bitmap = new Image<Rgba32>(width, height);","sourceCodeStart":114,"sourceCodeEnd":150,"githubUrl":"https://github.com/stride3d/stride/blob/96fad776d210c221682aac1ccdf4c79dc046fc38/sources/engine/Stride.Assets/SpriteFont/Compiler/FreeTypeFontImporter.cs#L114-L150","documentation":"After loading, FT_Render_Glyph rasterizes the glyph outline at the requested anti-alias mode; a non-zero FreeType error causes this InvalidOperationException. Loading succeeded, but rendering the glyph bitmap failed.","triggerScenarios":"FT_Render_Glyph returns an error for a character during offline font rasterization, usually when the loaded glyph has no outline (e.g. bitmap-only glyphs rendered in Normal mode) or face state is invalid.","commonSituations":"Symbol/bitmap-embedded fonts (EBDT/EBLC) whose glyphs cannot be rasterized in outline mode; mismatch between load target and render mode for special fonts.","solutions":["Switch the font asset's anti-alias mode between Aliased and Normal to change the render mode.","Exclude the failing characters from the font's character set.","Use a plain outline TTF/OTF font instead of a bitmap-embedded/symbol font."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try\n{\n    importer.ImportGlyph(character, glyphIndex);\n}\ncatch (InvalidOperationException ex) when (ex.Message.StartsWith(\"Failed to render glyph\"))\n{\n    log.Warn($\"Skipping unrenderable character '{character}'\");\n}","preventionTips":["Use plain outline fonts instead of bitmap-embedded or symbol fonts.","Test-compile icon fonts with the intended anti-alias mode."],"tags":["fonts","native-interop","glyph"],"backgroundTag":"internal-invariant-violation","analyzedSha":"96fad776d210c221682aac1ccdf4c79dc046fc38","analyzedAt":"2026-09-14T02:59:31.279Z","contentChangedAt":"2026-09-14T02:59:31.279Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}