public void CreateTextureFontFromInputChars( Typeface typeface, float sizeInPoint, PixelFarm.Drawing.BitmapAtlas.TextureKind textureKind, char[] chars, OnEachFinishTotal onFinishTotal) { //convert input chars into glyphIndex List <ushort> glyphIndices = new List <ushort>(chars.Length); int i = 0; foreach (char ch in chars) { glyphIndices.Add(typeface.LookupIndex(ch)); i++; } //------------------------------------------------------------- var atlasBuilder = new SimpleFontAtlasBuilder(); atlasBuilder.SetAtlasInfo(textureKind, sizeInPoint); //------------------------------------------------------------- //we can specfic subset with special setting for each set CreateTextureFontFromGlyphIndices(typeface, sizeInPoint, HintTechnique.TrueTypeInstruction_VerticalOnly, atlasBuilder, false, GetUniqueGlyphIndexList(glyphIndices)); onFinishTotal(0, null, atlasBuilder); }
public void CreateTextureFontBuildDetail( Typeface typeface, float sizeInPoint, PixelFarm.Drawing.BitmapAtlas.TextureKind textureKind, GlyphTextureBuildDetail[] details, OnEachFinishTotal onFinishTotal) { //------------------------------------------------------------- var atlasBuilder = new SimpleFontAtlasBuilder(); atlasBuilder.SetAtlasInfo(textureKind, sizeInPoint); //------------------------------------------------------------- int j = details.Length; for (int i = 0; i < j; ++i) { GlyphTextureBuildDetail detail = details[i]; if (detail.ScriptLang != null) { //skip those script lang=null //2. find associated glyph index base on input script langs List <ushort> outputGlyphIndexList = new List <ushort>(); typeface.CollectAllAssociateGlyphIndex(outputGlyphIndexList, detail.ScriptLang); CreateTextureFontFromGlyphIndices(typeface, sizeInPoint, detail.HintTechnique, atlasBuilder, detail.DoFilter, GetUniqueGlyphIndexList(outputGlyphIndexList) ); } } for (int i = 0; i < j; ++i) { GlyphTextureBuildDetail detail = details[i]; if (detail.OnlySelectedGlyphIndices != null) { //skip those script lang=null //2. find associated glyph index base on input script langs CreateTextureFontFromGlyphIndices(typeface, sizeInPoint, detail.HintTechnique, atlasBuilder, detail.DoFilter, detail.OnlySelectedGlyphIndices ); } } onFinishTotal(0, null, atlasBuilder); }
public void AddSimpleFontAtlasFile(RequestFont reqFont, string simpleFontAtlasFile, string imgFile, PixelFarm.Drawing.BitmapAtlas.TextureKind textureKind) { //TODO: use 'File' provider to access system file var fontAtlasFile = new FontAtlasFile(); using (FileStream fs = new FileStream(simpleFontAtlasFile, FileMode.Open)) { fontAtlasFile.Read(fs); } var simpleFontAtlasInfo = new SimpleFontAtlasInfo() { reqFont = reqFont, simpleFontAtlasFile = simpleFontAtlasFile, imgFile = imgFile, fontAtlasFile = fontAtlasFile, textureKind = textureKind }; _simpleFontInfoList.Add(simpleFontAtlasInfo); }
public void SetAtlasInfo(PixelFarm.Drawing.BitmapAtlas.TextureKind textureKind, float fontSizeInPts) { this.TextureKind = textureKind; this.FontSizeInPoints = fontSizeInPts; }
internal void WriteTotalImageInfo(ushort width, ushort height, byte colorComponent, PixelFarm.Drawing.BitmapAtlas.TextureKind textureKind) { _writer.Write((ushort)FontTextureObjectKind.TotalImageInfo); _writer.Write(width); _writer.Write(height); _writer.Write(colorComponent); _writer.Write((byte)textureKind); }