public Font(string filename, float size = 12f) { if (string.IsNullOrEmpty(filename)) { throw new System.ArgumentException($"Invalid font filename '{filename}'"); } Filename = filename; if (filename.Contains(".") && !Filename.Contains(Game.Instance.ContentDirectory)) { Filename = Path.Combine(Game.Instance.ContentDirectory, Filename); } RenderMap = new FontFaceRenderMap(Filename, size); ShaderParameters = RenderMap.CreateShaderParameters(); Size = size; }
private void Load(Stream fontStream, int faceIndex, float size) { if (fontStream is FileStream fileStream) { Filename = fileStream.Name; } fontStream.Seek(0, SeekOrigin.End); long streamSize = fontStream.Position; fontStream.Seek(0, SeekOrigin.Begin); byte[] file = new byte[streamSize]; if (streamSize > int.MaxValue) { byte[] buffer = new byte[int.MaxValue]; int count; long offset = 0L; while (offset < streamSize) { if (streamSize >= int.MaxValue) { count = int.MaxValue; } else { count = (int)streamSize; } fontStream.Read(buffer, 0, count); buffer.CopyTo(file, offset); offset += count; } } else { fontStream.Read(file, 0, (int)streamSize); } RenderMap = new FontFaceRenderMap(file, faceIndex, (uint)Math.Round(size)); ShaderParameters = RenderMap.CreateShaderParameters(); }
public Font(SharpFont.Face fontFace, float size = 12f) { RenderMap = new FontFaceRenderMap(fontFace, size); ShaderParameters = RenderMap.CreateShaderParameters(); Size = size; }
public Font(byte[] file, int faceIndex, float size = 12f) { RenderMap = new FontFaceRenderMap(file, faceIndex, size); ShaderParameters = RenderMap.CreateShaderParameters(); Size = size; }