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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
 public void SetAtlasInfo(PixelFarm.Drawing.BitmapAtlas.TextureKind textureKind, float fontSizeInPts)
 {
     this.TextureKind      = textureKind;
     this.FontSizeInPoints = fontSizeInPts;
 }
Ejemplo n.º 5
0
 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);
 }