public IFont GetFont(string name, int size, Weight weight, bool italic) { var fontStyle = GetFontStyle(weight, italic); var fce = new FontCacheEntry { FontFace = name, FontSize = size, FontStyle = fontStyle }; QFont font; var config = new QFontBuilderConfiguration(false) { TextGenerationRenderHint = GetFontFaceRenderHintingPreference(name), GlyphMargin = 2, TransformToCurrentOrthogProjection = true, KerningConfig = { alphaEmptyPixelTolerance = 40, }, }; if (!_fontCache.TryGetValue(fce, out font)) { var sysFont = GetFontBestSizeFit(name, size, fontStyle); font = new QFont(sysFont, config); _fontCache[fce] = font; } return new WrappedFont(font); }
public void RegisterFont(EFonts _font, string _fileName, int _pointSize) { if(!File.Exists(_fileName)) { throw new ApplicationException("Не найден файл " + Path.GetFullPath(_fileName)); } var charSet = new List<char>(); for (var c = ' '; c < '}'; ++c) { charSet.Add(c); } for (var c = 'А'; c <= 'я'; ++c) { charSet.Add(c); } var s = new string(charSet.ToArray()); var qfc = new QFontBuilderConfiguration { charSet = s, TextGenerationRenderHint = TextGenerationRenderHint.SizeDependent | TextGenerationRenderHint.AntiAlias, SuperSampleLevels = 4, }; var qFont = new QFont(_fileName, _pointSize, FontStyle.Bold, qfc); m_fonts[_font] = qFont; }
public Builder(Font font, QFontBuilderConfiguration config, QFontShadowConfiguration shadowConfig) { this.charSet = config.charSet; this.config = config; this.shadowConfig = shadowConfig; this.font = font; }
public QFont(string fileName, float size, FontStyle style, QFontBuilderConfiguration config) { PrivateFontCollection pfc = new PrivateFontCollection(); pfc.AddFontFile(fileName); var fontFamily = pfc.Families[0]; if (!fontFamily.IsStyleAvailable(style)) throw new ArgumentException("Font file: " + fileName + " does not support style: " + style ); if (config == null) config = new QFontBuilderConfiguration(); TransformViewport? transToVp = null; float fontScale = 1f; if (config.TransformToCurrentOrthogProjection) transToVp = OrthogonalTransform(out fontScale); using(var font = new Font(fontFamily, size * fontScale * config.SuperSampleLevels, style)){ fontData = BuildFont(font, config, null); } if (config.ShadowConfig != null) Options.DropShadowActive = true; if (transToVp != null) Options.TransformToViewport = transToVp; if(config.UseVertexBuffer) InitVBOs(); }
public FontLoadDescription(String Path, float Size, FontStyle Style, QFontBuilderConfiguration BuilderConfig){ Method = FontLoadMethod.FontFile; this.Path = Path; this.Size = Size; this.Style = Style; this.BuilderConfig = BuilderConfig; }
public QFont(Font font, QFontBuilderConfiguration config) { if (config == null) config = new QFontBuilderConfiguration(); fontData = BuildFont(font, config, null); if (config.ShadowConfig != null) Options.DropShadowActive = true; }
public QFont(IFontRenderer renderer, Font font, QFontBuilderConfiguration config = null) : this(renderer) { if (config == null) config = new QFontBuilderConfiguration(); fontData = BuildFont(font, config, null); LoadTextures(fontData); if (config.ShadowConfig != null) Options.DropShadowActive = true; }
public QFont(Font font, QFontBuilderConfiguration config) { optionsStack.Push(new QFontRenderOptions()); if (config == null) config = new QFontBuilderConfiguration(); fontData = BuildFont(font, config, null); if (config.ShadowConfig != null) Options.DropShadowActive = true; if (config.UseVertexBuffer) InitVBOs(); }
public QFont(string fileName, float size, FontStyle style, QFontBuilderConfiguration config, QFontShadowConfiguration shadowConfig) { PrivateFontCollection pfc = new PrivateFontCollection(); pfc.AddFontFile(fileName); var fontFamily = pfc.Families[0]; if (!fontFamily.IsStyleAvailable(style)) throw new ArgumentException("Font file: " + fileName + " does not support style: " + style ); if (config == null) config = new QFontBuilderConfiguration(); using (var font = new Font(fontFamily, size * config.SuperSampleLevels, style)) { fontData = BuildFont(font, config, shadowConfig, null); } if (shadowConfig != null) options.DropShadowActive = true; }
public NxFont (string fileName, float size, float height, FontStyle style, NxFontBuilderConfiguration config) { optionsStack = new ConcurrentStack<QFontRenderOptions> (); PrivateFontCollection pfc = new PrivateFontCollection(); pfc.AddFontFile(fileName); var fontFamily = pfc.Families[0]; if (!fontFamily.IsStyleAvailable(style)) throw new ArgumentException("Font file: " + fileName + " does not support style: " + style ); if (config == null) { throw new ArgumentNullException ("config"); } float fontScale; var transToVp = SetupTransformViewport (height, config.TransformToCurrentOrthogProjection, config.Transform, out fontScale); var internalConfig = new QFontBuilderConfiguration (config.AddDropShadow); internalConfig.SuperSampleLevels = config.SuperSampleLevels; if (internalConfig.ShadowConfig != null) { internalConfig.ShadowConfig.blurRadius = config.BlurRadius; } using(var font = new Font(fontFamily, size * fontScale * config.SuperSampleLevels, style)){ var builder = new Builder<NxFont>(font, internalConfig); NxFont dropShadowFont; fontData = builder.BuildFontData(null, out dropShadowFont); DropShadow = dropShadowFont; } if (internalConfig.ShadowConfig != null) Options.DropShadowActive = true; if (transToVp != null) Options.TransformToViewport = transToVp; InitialiseGlyphRenderer(config.CharacterOutput, config.FontGlyphRenderer, config.DropShadowRenderer); }
public QFont(string fontname, byte[] fontresource, float size, QFontBuilderConfiguration config, QFontShadowConfiguration shadowConfig) : this(fontname, fontresource, size, FontStyle.Regular, config, shadowConfig) { }
private void LoadQFontFromFontFile(FontLoadDescription loadDescription) { var config = loadDescription.BuilderConfig; var fileName = loadDescription.Path; var size = loadDescription.Size; var style = loadDescription.Style; if (config == null) config = new QFontBuilderConfiguration(); TransformViewport? transToVp = null; float fontScale = 1f; if (config.TransformToCurrentOrthogProjection) transToVp = OrthogonalTransform(out fontScale); //dont move this into a separate method - it needs to stay in scope! PrivateFontCollection pfc = new PrivateFontCollection(); pfc.AddFontFile(fileName); var fontFamily = pfc.Families[0]; if (!fontFamily.IsStyleAvailable(style)) throw new ArgumentException("Font file: " + fileName + " does not support style: " + style); var font = new Font(fontFamily, size * fontScale * config.SuperSampleLevels, style); //var font = ObtainFont(fileName, size * fontScale * config.SuperSampleLevels, style) fontData = BuildFont(font, config, null); fontData.scaleDueToTransformToViewport = fontScale; font.Dispose(); if (config.ShadowConfig != null) Options.DropShadowActive = true; if (transToVp != null) Options.TransformToViewport = transToVp; }
public static void CreateTextureFontFiles(string fileName, float size, QFontBuilderConfiguration config, string newFontName) { CreateTextureFontFiles(fileName, size, FontStyle.Regular, config, newFontName); }
public QFont(Font font, QFontBuilderConfiguration config) : this(font, config, null) { }
public static void CreateTextureFontFiles(string fileName, float size, FontStyle style, QFontBuilderConfiguration config, string newFontName) { QFontData fontData = null; if (config == null) config = new QFontBuilderConfiguration(); //dont move this into a separate method - it needs to stay in scope! PrivateFontCollection pfc = new PrivateFontCollection(); pfc.AddFontFile(fileName); var fontFamily = pfc.Families[0]; if (!fontFamily.IsStyleAvailable(style)) throw new ArgumentException("Font file: " + fileName + " does not support style: " + style); var font = new Font(fontFamily, size * config.SuperSampleLevels, style); //var font = ObtainFont(fileName, size * config.SuperSampleLevels, style); try { fontData = BuildFont(font, config, newFontName); } finally { if (font != null) font.Dispose(); } Builder.SaveQFontDataToFile(fontData, newFontName); }
public static void CreateTextureFontFiles(string fileName, float size, FontStyle style, QFontBuilderConfiguration config, string newFontName) { PrivateFontCollection pfc = new PrivateFontCollection(); pfc.AddFontFile(fileName); var fontFamily = pfc.Families[0]; if (!fontFamily.IsStyleAvailable(style)) { throw new ArgumentException("Font file: " + fileName + " does not support style: " + style); } QFontData fontData = null; if (config == null) { config = new QFontBuilderConfiguration(); } using (var font = new Font(fontFamily, size * config.SuperSampleLevels, style)){ fontData = BuildFont(font, config, newFontName); } Builder.SaveQFontDataToFile(fontData, newFontName); }
public QFont(IFontRenderer renderer, string fileName, float size, FontStyle style = FontStyle.Regular, QFontBuilderConfiguration config = null) { this.renderer = renderer; fontLoadDescription = new FontLoadDescription(fileName, size, style, config); LoadQFontFromFontFile(fontLoadDescription); }
public static void CreateTextureFontFiles(string fileName, float size, FontStyle style, QFontBuilderConfiguration config, string newFontName) { QFontData fontData = null; if (config == null) { config = new QFontBuilderConfiguration(); } //dont move this into a separate method - it needs to stay in scope! PrivateFontCollection pfc = new PrivateFontCollection(); pfc.AddFontFile(fileName); var fontFamily = pfc.Families[0]; if (!fontFamily.IsStyleAvailable(style)) { throw new ArgumentException("Font file: " + fileName + " does not support style: " + style); } var font = new Font(fontFamily, size * config.SuperSampleLevels, style); //var font = ObtainFont(fileName, size * config.SuperSampleLevels, style); try { fontData = BuildFont(font, config, newFontName); } finally { if (font != null) { font.Dispose(); } } Builder.SaveQFontDataToFile(fontData, newFontName); }
public QFont(string fileName, float size, FontStyle style, QFontBuilderConfiguration config) { fontLoadDescription = new FontLoadDescription(fileName, size, style, config); LoadQFontFromFontFile(fontLoadDescription); }
public static void CreateTextureFontFiles(Font font, string newFontName, QFontBuilderConfiguration config) { var fontData = BuildFont(font, config, newFontName); Builder.SaveQFontDataToFile(fontData, newFontName); }
public QFont(string fileName, float size, QFontBuilderConfiguration config) : this(fileName, size, FontStyle.Regular, config) { }
public Builder(IFont font, QFontBuilderConfiguration config) { _charSet = config.CharSet; _config = config; _font = font; }
/// <summary> /// Initialise QFont from a System.Drawing.Font object /// </summary> /// <param name="font"></param> /// <param name="config"></param> public QFont(Font font, QFontBuilderConfiguration config = null) { InitialiseGlFont(font, config); }
private static QFontData BuildFont(Font font, QFontBuilderConfiguration config, string saveName) { Builder builder = new Builder(font, config); return(builder.BuildFontData(saveName)); }
public static void CreateTextureFontFiles(string fileName, float size, string newFontName, QFontBuilderConfiguration config, FontStyle style = FontStyle.Regular) { using (Font font = GetFont(fileName, size, style, config == null ? 1 : config.SuperSampleLevels)) { CreateTextureFontFiles(font, newFontName, config); } }
private void LoadQFontFromFontFile(FontLoadDescription loadDescription) { var config = loadDescription.BuilderConfig; var fileName = loadDescription.Path; var size = loadDescription.Size; var style = loadDescription.Style; if (config == null) config = new QFontBuilderConfiguration(); TransformViewport? transToVp = null; float dpiX, dpiY; float fontScale = 1.0f; using (Graphics graphics = Graphics.FromHwnd(IntPtr.Zero)) { dpiX = graphics.DpiX; dpiY = graphics.DpiY; } float distancefrom120 = 120 - dpiX; float percent = (120 - distancefrom120) / 120; if (dpiX != 120f) if (percent > 1) fontScale = 1 - Math.Abs(percent - 1); else fontScale = 1f + (1 - percent); fontScale = Math.Abs(fontScale); if (config.TransformToCurrentOrthogProjection) transToVp = OrthogonalTransform(out fontScale); //dont move this into a separate method - it needs to stay in scope! PrivateFontCollection pfc = new PrivateFontCollection(); pfc.AddFontFile(fileName); var fontFamily = pfc.Families[0]; if (!fontFamily.IsStyleAvailable(style)) throw new ArgumentException("Font file: " + fileName + " does not support style: " + style); var font = new Font(fontFamily, size * fontScale * config.SuperSampleLevels, style); //var font = ObtainFont(fileName, size * fontScale * config.SuperSampleLevels, style) fontData = BuildFont(font, config, null); fontData.scaleDueToTransformToViewport = fontScale; font.Dispose(); if (config.ShadowConfig != null) Options.DropShadowActive = true; if (transToVp != null) Options.TransformToViewport = transToVp; }
/// <summary> /// Self explanatory, sets up the Qfont parameters /// </summary> private void setupFont() { var config = new QFontBuilderConfiguration() { UseVertexBuffer = true, TextGenerationRenderHint = TextGenerationRenderHint.SystemDefault }; mFont = new QFont( "Core/times.ttf", 16, config ); //mFont.PrintToVBO( "i love", new Vector3( 0, 0, 0 ), Color.Red ); //mFont.PrintToVBO( "quickfont", new Vector3( 0, 10, 0 ), Color.Blue ); mFont.LoadVBOs(); }
public QFont GetQFont(Font font) { QFont qfont; if(FontMap.TryGetValue(font, out qfont)) return qfont; var config = new QFontBuilderConfiguration() { UseVertexBuffer = true, TextGenerationRenderHint = TextGenerationRenderHint.AntiAliasGridFit }; qfont = new QFont(font, config); qfont.Options.TransformToViewport = null; qfont.Options.WordWrap = false; FontMap[font] = qfont; return qfont; }
/// <summary> /// Initializes a new <see cref="FontConstructionConfig" /> with a builder configuration /// and optional loader configuration. /// </summary> /// <param name="buildConfig">The builder configuration to use.</param> /// <param name="loadConfig">Optional loader configuration to set.</param> public FontConstructionConfig(QFontBuilderConfiguration buildConfig, QFontLoaderConfiguration loadConfig = null) { BuildConfig = buildConfig; LoadConfig = loadConfig; }
public QFont(string fontname, byte[] fontresource, float size, FontStyle style, QFontBuilderConfiguration config, QFontShadowConfiguration shadowConfig) { // This should be probably a field of some class PrivateFontCollection pfc = new PrivateFontCollection(); // allocate memory and copy byte[] to the location IntPtr data = Marshal.AllocCoTaskMem(fontresource.Length); Marshal.Copy(fontresource, 0, data, fontresource.Length); // pass the font to the font collection pfc.AddMemoryFont(data, fontresource.Length); var fontFamily = pfc.Families[0]; if (!fontFamily.IsStyleAvailable(style)) { throw new ArgumentException("Font Resource: " + fontname + " does not support style: " + style); } if (config == null) { config = new QFontBuilderConfiguration(); } using (var font = new Font(fontFamily, size * config.SuperSampleLevels, style)) { fontData = BuildFont(font, config, shadowConfig, null); } if (shadowConfig != null) { options.DropShadowActive = true; } // Free the unsafe memory Marshal.FreeCoTaskMem(data); }
private static QFontData BuildFont(Font font, QFontBuilderConfiguration config, string saveName, out QFont dropShadowFont){ var builder = new Builder<QFont>(font, config); return builder.BuildFontData(saveName, out dropShadowFont); }
public static void CreateTextureFontFiles(Font font, string newFontName, QFontBuilderConfiguration config) { QFont dropShadowFont; var fontData = BuildFont(font, config, newFontName, out dropShadowFont); Helper.SaveQFontDataToFile(fontData, newFontName); }
public static void CreateTextureFontFiles(string fileName, float size, FontStyle style, QFontBuilderConfiguration config, string newFontName) { PrivateFontCollection pfc = new PrivateFontCollection(); pfc.AddFontFile(fileName); var fontFamily = pfc.Families[0]; if (!fontFamily.IsStyleAvailable(style)) throw new ArgumentException("Font file: " + fileName + " does not support style: " + style); QFontData fontData = null; if (config == null) config = new QFontBuilderConfiguration(); using(var font = new Font(fontFamily, size * config.SuperSampleLevels, style)){ fontData = BuildFont(font, config, newFontName); } Builder.SaveQFontDataToFile(fontData, newFontName); }
public FontLoadDescription(Font font, QFontBuilderConfiguration config){ Method = FontLoadMethod.FontObject; //we don't reload fonts loaded direct from a font object... }
private static QFontData BuildFont(Font font, QFontBuilderConfiguration config, string saveName) { Builder builder = new Builder(font, config); return builder.BuildFontData(saveName); }
/// <summary>Load resources here.</summary> /// <param name="e">Not used.</param> protected override void OnLoad(EventArgs e) { base.OnLoad(e); this.Keyboard.KeyDown += KeyDown; /* QFontBuilderConfiguration config = new QFontBuilderConfiguration(); config.PageWidth = 1024; config.PageHeight = 1024; config.GlyphMargin = 6; QFont.CreateTextureFontFiles("BURNSTOW.TTF", 120, config, "metalFont"); */ heading2 = QFont.FromQFontFile("woodenFont.qfont", 1.0f, new QFontLoaderConfiguration(true)); var builderConfig = new QFontBuilderConfiguration(true); builderConfig.ShadowConfig.blurRadius = 1; //reduce blur radius because font is very small builderConfig.TextGenerationRenderHint = TextGenerationRenderHint.ClearTypeGridFit; //best render hint for this font mainText = new QFont("Fonts/times.ttf", 14, builderConfig); heading1 = new QFont("Fonts/HappySans.ttf", 72, new QFontBuilderConfiguration(true)); controlsText = new QFont("Fonts/HappySans.ttf", 32, new QFontBuilderConfiguration(true)); codeText = new QFont("Fonts/Comfortaa-Regular.ttf", 12,FontStyle.Regular); heading1.Options.Colour = new Color4(0.2f, 0.2f, 0.2f, 1.0f); mainText.Options.Colour = new Color4(0.1f, 0.1f, 0.1f, 1.0f); mainText.Options.DropShadowActive = false; codeText.Options.Colour = new Color4(0.0f, 0.0f, 0.4f, 1.0f); QFontBuilderConfiguration config2 = new QFontBuilderConfiguration(); config2.SuperSampleLevels = 1; // font = new QFont("Fonts/times.ttf", 16,config2); // font.Options.Colour = new Color4(0.1f, 0.1f, 0.1f, 1.0f); // font.Options.CharacterSpacing = 0.1f; monoSpaced = new QFont("Fonts/Anonymous.ttf", 10); monoSpaced.Options.Colour = new Color4(0.1f, 0.1f, 0.1f, 1.0f); Console.WriteLine(" Monospaced : " + monoSpaced.IsMonospacingActive); GL.ClearColor(1.0f, 1.0f, 1.0f, 0.0f); GL.Disable(EnableCap.DepthTest); }
public QFont(string fontname, byte[] fontresource, float size, FontStyle style, QFontBuilderConfiguration config, QFontShadowConfiguration shadowConfig) { // This should be probably a field of some class PrivateFontCollection pfc = new PrivateFontCollection(); // allocate memory and copy byte[] to the location IntPtr data = Marshal.AllocCoTaskMem(fontresource.Length); Marshal.Copy(fontresource, 0, data, fontresource.Length); // pass the font to the font collection pfc.AddMemoryFont(data, fontresource.Length); var fontFamily = pfc.Families[0]; if (!fontFamily.IsStyleAvailable(style)) throw new ArgumentException("Font Resource: " + fontname + " does not support style: " + style); if (config == null) config = new QFontBuilderConfiguration(); using (var font = new Font(fontFamily, size * config.SuperSampleLevels, style)) { fontData = BuildFont(font, config, shadowConfig, null); } if (shadowConfig != null) options.DropShadowActive = true; // Free the unsafe memory Marshal.FreeCoTaskMem(data); }
private void LoadQFontFromFontFile(FontLoadDescription loadDescription) { var config = loadDescription.BuilderConfig; var fileName = loadDescription.Path; var size = loadDescription.Size; var style = loadDescription.Style; if (config == null) { config = new QFontBuilderConfiguration(); } TransformViewport?transToVp = null; float dpiX, dpiY; float fontScale = 1.0f; using (Graphics graphics = Graphics.FromHwnd(IntPtr.Zero)) { dpiX = graphics.DpiX; dpiY = graphics.DpiY; } float distancefrom120 = 120 - dpiX; float percent = (120 - distancefrom120) / 120; if (dpiX != 120f) { if (percent > 1) { fontScale = 1 - Math.Abs(percent - 1); } else { fontScale = 1f + (1 - percent); } } fontScale = Math.Abs(fontScale); if (config.TransformToCurrentOrthogProjection) { transToVp = OrthogonalTransform(out fontScale); } //dont move this into a separate method - it needs to stay in scope! PrivateFontCollection pfc = new PrivateFontCollection(); pfc.AddFontFile(fileName); var fontFamily = pfc.Families[0]; if (!fontFamily.IsStyleAvailable(style)) { throw new ArgumentException("Font file: " + fileName + " does not support style: " + style); } var font = new Font(fontFamily, size * fontScale * config.SuperSampleLevels, style); //var font = ObtainFont(fileName, size * fontScale * config.SuperSampleLevels, style) fontData = BuildFont(font, config, null); fontData.scaleDueToTransformToViewport = fontScale; font.Dispose(); if (config.ShadowConfig != null) { Options.DropShadowActive = true; } if (transToVp != null) { Options.TransformToViewport = transToVp; } }