From 8d34e34326089eb7d087cdc82b062f31eb19e0a0 Mon Sep 17 00:00:00 2001 From: Anton Mukhin Date: Thu, 29 May 2025 16:49:25 +0300 Subject: [PATCH] Some small UI changes and TODO feature: Export image with All characers table --- .gitignore | 1 + McBitFont/FontTester.Designer.cs | 6 ++ McBitFont/Form1.Designer.cs | 75 ++++++++++++---- McBitFont/Form1.cs | 100 ++++++++++++++++++++- McBitFont/Form1.resx | 3 + McBitFont/McBitFont.csproj | 6 +- McBitFont/Properties/Resources.Designer.cs | 10 +++ McBitFont/Properties/Resources.resx | 13 +-- McBitFont/Resources/picture_go.png | Bin 0 -> 758 bytes README.md | 4 + TODO.txt | 2 +- icons/famfamfam/picture_go.png | Bin 0 -> 758 bytes images/Font_Minecraft_Rus_5x7_vw.png | Bin 0 -> 44051 bytes 13 files changed, 194 insertions(+), 26 deletions(-) create mode 100644 McBitFont/Resources/picture_go.png create mode 100644 icons/famfamfam/picture_go.png create mode 100644 images/Font_Minecraft_Rus_5x7_vw.png diff --git a/.gitignore b/.gitignore index f635fe4..75316d1 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ ## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore examples/tests/32x32/ +examples/tests/PNGout/ # User-specific files *.rsuser diff --git a/McBitFont/FontTester.Designer.cs b/McBitFont/FontTester.Designer.cs index a1d2b70..4fc6680 100644 --- a/McBitFont/FontTester.Designer.cs +++ b/McBitFont/FontTester.Designer.cs @@ -134,6 +134,12 @@ toolTip1.SetToolTip(cbZoom, "Zoom level"); cbZoom.SelectedIndexChanged += ZoomChanged; // + // toolTip1 + // + toolTip1.AutoPopDelay = 10000; + toolTip1.InitialDelay = 500; + toolTip1.ReshowDelay = 100; + // // chkBaseline // chkBaseline.AutoSize = true; diff --git a/McBitFont/Form1.Designer.cs b/McBitFont/Form1.Designer.cs index edc507f..cec5515 100644 --- a/McBitFont/Form1.Designer.cs +++ b/McBitFont/Form1.Designer.cs @@ -67,6 +67,7 @@ importTextToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); importImageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); exportToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + exportFontLayoutPNGToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); undoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -83,6 +84,7 @@ removeBeforeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); removeAfterToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); CodeShiftToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + testFontToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); canvasToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); ClearToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); FillToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -107,7 +109,10 @@ lblSelectionLabel = new System.Windows.Forms.Label(); lblSelection = new System.Windows.Forms.Label(); lblModified = new System.Windows.Forms.Label(); - testFontToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + dlgSavePNG = new System.Windows.Forms.SaveFileDialog(); + toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); ((System.ComponentModel.ISupportInitialize)nudX).BeginInit(); ((System.ComponentModel.ISupportInitialize)nudY).BeginInit(); panel1.SuspendLayout(); @@ -528,9 +533,9 @@ // // fileToolStripMenuItem // - fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { newToolStripMenuItem, openToolStripMenuItem, saveToolStripMenuItem, saveAsToolStripMenuItem, importTextToolStripMenuItem1, importImageToolStripMenuItem, exportToolStripMenuItem, exitToolStripMenuItem }); + fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { newToolStripMenuItem, openToolStripMenuItem, saveToolStripMenuItem, saveAsToolStripMenuItem, toolStripSeparator1, importTextToolStripMenuItem1, importImageToolStripMenuItem, exportToolStripMenuItem, exportFontLayoutPNGToolStripMenuItem, toolStripSeparator2, exitToolStripMenuItem }); fileToolStripMenuItem.Name = "fileToolStripMenuItem"; - fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); + fileToolStripMenuItem.Size = new System.Drawing.Size(122, 20); fileToolStripMenuItem.Text = "File"; // // newToolStripMenuItem @@ -583,6 +588,7 @@ importTextToolStripMenuItem1.Name = "importTextToolStripMenuItem1"; importTextToolStripMenuItem1.Size = new System.Drawing.Size(224, 22); importTextToolStripMenuItem1.Text = "Import text file (very limited)"; + importTextToolStripMenuItem1.ToolTipText = "Import a font from a C array in a file"; importTextToolStripMenuItem1.Click += importTextToolStripMenuItem1_Click; // // importImageToolStripMenuItem @@ -605,6 +611,15 @@ exportToolStripMenuItem.ToolTipText = "Configure and export data"; exportToolStripMenuItem.Click += button1_Click; // + // exportFontLayoutPNGToolStripMenuItem + // + exportFontLayoutPNGToolStripMenuItem.Image = Properties.Resources.picture_go; + exportFontLayoutPNGToolStripMenuItem.Name = "exportFontLayoutPNGToolStripMenuItem"; + exportFontLayoutPNGToolStripMenuItem.Size = new System.Drawing.Size(224, 22); + exportFontLayoutPNGToolStripMenuItem.Text = "Export font layout PNG"; + exportFontLayoutPNGToolStripMenuItem.ToolTipText = "Create an image with all a table showing all 256 symbols"; + exportFontLayoutPNGToolStripMenuItem.Click += ExportPNG; + // // exitToolStripMenuItem // exitToolStripMenuItem.Image = Properties.Resources.Famfamfam_Silk_Door_out_16; @@ -629,7 +644,7 @@ undoToolStripMenuItem.Image = Properties.Resources.arrow_undo; undoToolStripMenuItem.Name = "undoToolStripMenuItem"; undoToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Z; - undoToolStripMenuItem.Size = new System.Drawing.Size(164, 22); + undoToolStripMenuItem.Size = new System.Drawing.Size(180, 22); undoToolStripMenuItem.Text = "Undo"; undoToolStripMenuItem.ToolTipText = "Undo last canvas change"; undoToolStripMenuItem.Click += undoToolStripMenuItem_Click; @@ -639,7 +654,7 @@ redoToolStripMenuItem.Image = Properties.Resources.arrow_redo; redoToolStripMenuItem.Name = "redoToolStripMenuItem"; redoToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Y; - redoToolStripMenuItem.Size = new System.Drawing.Size(164, 22); + redoToolStripMenuItem.Size = new System.Drawing.Size(180, 22); redoToolStripMenuItem.Text = "Redo"; redoToolStripMenuItem.ToolTipText = "Redo canvas change"; redoToolStripMenuItem.Click += redoToolStripMenuItem_Click; @@ -650,7 +665,7 @@ copyToolStripMenuItem.Name = "copyToolStripMenuItem"; copyToolStripMenuItem.ShortcutKeyDisplayString = ""; copyToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C; - copyToolStripMenuItem.Size = new System.Drawing.Size(164, 22); + copyToolStripMenuItem.Size = new System.Drawing.Size(180, 22); copyToolStripMenuItem.Text = "Copy"; copyToolStripMenuItem.ToolTipText = "Copy current symbol to clipboard"; copyToolStripMenuItem.Click += copyToolStripMenuItem_Click; @@ -662,7 +677,7 @@ pasteToolStripMenuItem.Name = "pasteToolStripMenuItem"; pasteToolStripMenuItem.ShortcutKeyDisplayString = ""; pasteToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V; - pasteToolStripMenuItem.Size = new System.Drawing.Size(164, 22); + pasteToolStripMenuItem.Size = new System.Drawing.Size(180, 22); pasteToolStripMenuItem.Text = "Paste"; pasteToolStripMenuItem.ToolTipText = "Paste from clipboard to current symbol"; pasteToolStripMenuItem.Click += pasteToolStripMenuItem_Click; @@ -672,8 +687,9 @@ selectToolStripMenuItem.Image = Properties.Resources.fam_rectt; selectToolStripMenuItem.Name = "selectToolStripMenuItem"; selectToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.R; - selectToolStripMenuItem.Size = new System.Drawing.Size(164, 22); + selectToolStripMenuItem.Size = new System.Drawing.Size(180, 22); selectToolStripMenuItem.Text = "Select"; + selectToolStripMenuItem.ToolTipText = "Toggle Rectangle selection tool"; selectToolStripMenuItem.Click += selectToolStripMenuItem_Click; // // selectAllToolStripMenuItem @@ -682,13 +698,14 @@ selectAllToolStripMenuItem.Image = Properties.Resources.arrow_out; selectAllToolStripMenuItem.Name = "selectAllToolStripMenuItem"; selectAllToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.A; - selectAllToolStripMenuItem.Size = new System.Drawing.Size(164, 22); + selectAllToolStripMenuItem.Size = new System.Drawing.Size(180, 22); selectAllToolStripMenuItem.Text = "Select All"; + selectAllToolStripMenuItem.ToolTipText = "Select entire canvas"; selectAllToolStripMenuItem.Click += selectAllToolStripMenuItem_Click; // // fontToolStripMenuItem // - fontToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { makeVarWidthToolStripMenuItem, prependSymbolToolStripMenuItem, appendSymbolToolStripMenuItem, removeSymbolToolStripMenuItem, removeBeforeToolStripMenuItem, removeAfterToolStripMenuItem, CodeShiftToolStripMenuItem, testFontToolStripMenuItem }); + fontToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { makeVarWidthToolStripMenuItem, prependSymbolToolStripMenuItem, appendSymbolToolStripMenuItem, removeSymbolToolStripMenuItem, removeBeforeToolStripMenuItem, removeAfterToolStripMenuItem, CodeShiftToolStripMenuItem, toolStripSeparator3, testFontToolStripMenuItem }); fontToolStripMenuItem.Name = "fontToolStripMenuItem"; fontToolStripMenuItem.Size = new System.Drawing.Size(43, 20); fontToolStripMenuItem.Text = "Font"; @@ -768,6 +785,15 @@ CodeShiftToolStripMenuItem.ToolTipText = "Shift the font on the code line"; CodeShiftToolStripMenuItem.Click += CodeShiftToolStripMenuItem_Click; // + // testFontToolStripMenuItem + // + testFontToolStripMenuItem.Image = Properties.Resources.font; + testFontToolStripMenuItem.Name = "testFontToolStripMenuItem"; + testFontToolStripMenuItem.Size = new System.Drawing.Size(215, 22); + testFontToolStripMenuItem.Text = "Test font"; + testFontToolStripMenuItem.ToolTipText = "Open dialog where you can test the font with any text you type"; + testFontToolStripMenuItem.Click += TestFont_Click; + // // canvasToolStripMenuItem // canvasToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { ClearToolStripMenuItem, FillToolStripMenuItem, shiftUpToolStripMenuItem, shiftDownToolStripMenuItem, shiftLeftToolStripMenuItem, shiftRightToolStripMenuItem, invertToolStripMenuItem, mirrorXToolStripMenuItem, mirrorYToolStripMenuItem, applyToolStripMenuItem }); @@ -1024,13 +1050,25 @@ lblModified.Text = "Frame modified"; lblModified.Visible = false; // - // testFontToolStripMenuItem + // dlgSavePNG // - testFontToolStripMenuItem.Image = Properties.Resources.font; - testFontToolStripMenuItem.Name = "testFontToolStripMenuItem"; - testFontToolStripMenuItem.Size = new System.Drawing.Size(215, 22); - testFontToolStripMenuItem.Text = "Test font"; - testFontToolStripMenuItem.Click += TestFont_Click; + dlgSavePNG.DefaultExt = "png"; + dlgSavePNG.Filter = "PNG Image|*.png;*.PNG"; + // + // toolStripSeparator1 + // + toolStripSeparator1.Name = "toolStripSeparator1"; + toolStripSeparator1.Size = new System.Drawing.Size(221, 6); + // + // toolStripSeparator2 + // + toolStripSeparator2.Name = "toolStripSeparator2"; + toolStripSeparator2.Size = new System.Drawing.Size(221, 6); + // + // toolStripSeparator3 + // + toolStripSeparator3.Name = "toolStripSeparator3"; + toolStripSeparator3.Size = new System.Drawing.Size(212, 6); // // MainForm // @@ -1167,6 +1205,11 @@ private System.Windows.Forms.ToolStripMenuItem selectAllToolStripMenuItem; private System.Windows.Forms.Label lblModified; private System.Windows.Forms.ToolStripMenuItem testFontToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem exportFontLayoutPNGToolStripMenuItem; + private System.Windows.Forms.SaveFileDialog dlgSavePNG; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; } } diff --git a/McBitFont/Form1.cs b/McBitFont/Form1.cs index 5c628f4..3977053 100644 --- a/McBitFont/Form1.cs +++ b/McBitFont/Form1.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Drawing2D; +using System.Drawing.Imaging; using System.IO; using System.Linq; using System.Runtime.InteropServices; @@ -57,7 +58,7 @@ namespace McBitFont { public bool monospaced = false; private bool modified = false; private bool prjModified = false; - public const string version = "2.2"; + public const string version = "2.3"; public string prjName = "Untitled"; public string prjFileName = ""; public int codepage = 1251; @@ -932,6 +933,8 @@ namespace McBitFont { prjFileName = filename; prjName = Path.GetFileNameWithoutExtension(filename); + dlgSavePNG.FileName = prjName + ".png"; + dlgSave.FileName = prjName + ".mbfont"; SetWindowCap(); miniList.Items[0].Selected = true; @@ -1429,5 +1432,100 @@ namespace McBitFont { var tester = new FontTester(codepage, dotHeight, baseline, frames); tester.ShowDialog(); } + + private void ExportPNG(object sender, EventArgs e) { + CheckModifiedFrame(); + CheckModifiedProject(); + + if (dlgSavePNG.ShowDialog() == DialogResult.OK) { + int pixelSize = 3; + int symbolMargin = 2 * pixelSize; + int headerHeight = 100; + int maxWidth = 0; + int i, j, v, h, x, y; + string s; + + foreach (FrameMiniature f in frames) { + if (f.width > maxWidth) maxWidth = f.width; + } + + int cellWidth = (pixelSize * maxWidth + 2 * symbolMargin); + int cellHeight = (pixelSize * dotHeight + 2 * symbolMargin); + if (cellWidth < 10) cellWidth = 10; + if (cellHeight < 10) cellHeight = 10; + + int width = cellWidth * 16 + 17 + 50; + int height = cellHeight * 16 + 17 + 25 + headerHeight; + + Bitmap bmp = new(width > 450 ? width : 450, height); + Graphics g = Graphics.FromImage(bmp); + g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit; + Font font = new("Consolas", 14, FontStyle.Bold); + Brush tb = Brushes.Black; + + + // Draw basic information + g.DrawString("Font project name: " + prjName, font, tb, 10, 10); + + g.DrawString("Font height: " + dotHeight, font, tb, 10, 38); + g.DrawString("Font max width: " + maxWidth, font, tb, 10, 62); + g.DrawString("Symbols count: " + frames.Count, font, tb, 10, 86); + + g.DrawString("First code: " + frames.First().code.ToString(), font, tb, 250, 38); + g.DrawString("Last code: " + frames.Last().code.ToString(), font, tb, 250, 62); + g.DrawString("Codepage: " + codepage.ToString(), font, tb, 250, 86); + + + // Draw grid + Pen p = new(Color.FromArgb(64, 0, 0, 0), 1); + SolidBrush b = new SolidBrush(Color.FromArgb(160, Color.Black)); + //Brush b = Brushes.Black; + + int xCapOffset = cellWidth / 2 - 8; + int yCapOffset = cellHeight / 2 - 10; + for (i = 0; i < 17; i++) { + x = 50 + 17 + i * cellWidth - 1; + y = headerHeight + 17 + 25 + i * cellHeight - 1; + g.DrawLine(p, 1, y, width - 1, y); + g.DrawLine(p, x, headerHeight + 20, x, headerHeight + height - 20); + + if (i != 16) { + s = Convert.ToString(i, 16).ToUpper(); + g.DrawString(s, font, b, x + xCapOffset, headerHeight + 20); + s = "0x" + Convert.ToString(i * 16, 16).PadLeft(2, '0').ToUpper(); + g.DrawString(s, font, b, 10, y + yCapOffset); + } + } + + // Draw symbols + int code; + List ff; + Rectangle rect; + // Cycle through grid cells + for (v = 0; v < 16; v++) { + for (h = 0; h < 16; h++) { + // Check if the font has a symbol with the code + code = 16 * v + h; + ff = frames.FindAll(x => x.code == code); + if (ff.Count == 1) { + x = 50 + 17 + h * cellWidth + symbolMargin; + y = headerHeight + 17 + 25 + v * cellHeight + symbolMargin; + // Cycly through symbol's pixels and draw the black ones + for (i = 0; i < ff[0].width; i++) { + for (j = 0; j < ff[0].height; j++) { + if (ff[0].data[i, j]) { + rect = new Rectangle(x + i * pixelSize, y + j * pixelSize, pixelSize, pixelSize); + g.FillRectangle(tb, rect); + } + } + } + } + } + } + + bmp.Save(dlgSavePNG.FileName, ImageFormat.Png); + } + + } } } diff --git a/McBitFont/Form1.resx b/McBitFont/Form1.resx index fb11a13..5800d67 100644 --- a/McBitFont/Form1.resx +++ b/McBitFont/Form1.resx @@ -135,6 +135,9 @@ 336, 17 + + 644, 17 + diff --git a/McBitFont/McBitFont.csproj b/McBitFont/McBitFont.csproj index 591cff5..5f7f705 100644 --- a/McBitFont/McBitFont.csproj +++ b/McBitFont/McBitFont.csproj @@ -20,9 +20,9 @@ true true icon_64.ico - 2.2.0.0 - 2.2.0.0 - $(VersionPrefix)2.2.0 + 2.3.0.0 + 2.3.0.0 + $(VersionPrefix)2.3.0 Anton Mukhin diff --git a/McBitFont/Properties/Resources.Designer.cs b/McBitFont/Properties/Resources.Designer.cs index b19e4f2..99698dd 100644 --- a/McBitFont/Properties/Resources.Designer.cs +++ b/McBitFont/Properties/Resources.Designer.cs @@ -310,6 +310,16 @@ namespace McBitFont.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap picture_go { + get { + object obj = ResourceManager.GetObject("picture_go", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/McBitFont/Properties/Resources.resx b/McBitFont/Properties/Resources.resx index 063342b..a99b88d 100644 --- a/McBitFont/Properties/Resources.resx +++ b/McBitFont/Properties/Resources.resx @@ -136,12 +136,18 @@ ..\Resources\Famfamfam-Silk-Page-copy.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\font.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\arrow_inout.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\redo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Famfamfam-Silk-Disk.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -202,9 +208,6 @@ ..\Resources\Famfamfam-Silk-Page-white.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Famfamfam-Silk-Disk.16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\folder_table.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -229,7 +232,7 @@ ..\Resources\icon_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\font.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\picture_go.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/McBitFont/Resources/picture_go.png b/McBitFont/Resources/picture_go.png new file mode 100644 index 0000000000000000000000000000000000000000..27c63c5afe358c8e22801de541b73e0f98961575 GIT binary patch literal 758 zcmVmBR~*Li@40hl?wvRqnZ(Ao1QJ1rZCaJSDB{Laap9suT~%lorMMMz>qEQ4lo5g<`B}Oj2V=n8e9sGWVQ&&hO_UijFU(&+eSXhr@Fo^Xu=UKZ=+y zSDmER^Ln)XSd1Yp^2;}$?>z+&i<%Qh5A<$I)6^JK;J=ay1fO&1%7d?gHDJ|Bk|e1) ze|3qB8Vxf}f6qMSVjZu-;&Pcg4?5}4L1MZ%eY~F_#ym%3=OKy;L-P9AJKpf3Z(ci39q!_wFi{`Mq{ zJ*0SVfxfPfu_0%B_aJ93?kA`cBW^;RWZPkwP68J7<$6(vG4fo-LD8L1PKVrY<-5I?FU$KEpAQ! zS%3drRE^CW_8Q6?$-E<|Fjf1TTs&TK@{qG^8|>~q$V$E%-IyGy#c9#hk-YPRo_%1< zGfK&Ph7X>e4SjeC1Qj0Fr>RypGdgpPYZD_2&U4uO{M+dFqGrDfI`r}vU#Wf3nK_3O zN9G+nx_7Z};4n9*uQM`neYIg%KAIiYyXMtlye;pYi<%$y9qPDx|Bpvb_;hwy#{vE~ oFmTp1gA_Vi5(egnb@KWBQ*sVbcJX$M%m4rY07*qoM6N<$f(SNMBme*a literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 6892589..70829fa 100644 --- a/README.md +++ b/README.md @@ -52,3 +52,7 @@ Import Image dialog Code Shift dialog ![Code Shift](/images/Screenshot_Code-shift.png) + +Font PNG export example + +![PNG export example](/images/Font_Minecraft_Rus_5x7_vw.png) diff --git a/TODO.txt b/TODO.txt index 06f8ced..4e808ca 100644 --- a/TODO.txt +++ b/TODO.txt @@ -4,7 +4,7 @@ Application: Functionality: V Allow to add frames to Single-frame "fonts" V Type a string to see the result (test the font) -- Export image with All characers table +V Export image with All characers table Bugs: - In some cases after switching to a symbol dotPanel mouse move causes "Out of range" exception (history.Pre after width change?) diff --git a/icons/famfamfam/picture_go.png b/icons/famfamfam/picture_go.png new file mode 100644 index 0000000000000000000000000000000000000000..27c63c5afe358c8e22801de541b73e0f98961575 GIT binary patch literal 758 zcmVmBR~*Li@40hl?wvRqnZ(Ao1QJ1rZCaJSDB{Laap9suT~%lorMMMz>qEQ4lo5g<`B}Oj2V=n8e9sGWVQ&&hO_UijFU(&+eSXhr@Fo^Xu=UKZ=+y zSDmER^Ln)XSd1Yp^2;}$?>z+&i<%Qh5A<$I)6^JK;J=ay1fO&1%7d?gHDJ|Bk|e1) ze|3qB8Vxf}f6qMSVjZu-;&Pcg4?5}4L1MZ%eY~F_#ym%3=OKy;L-P9AJKpf3Z(ci39q!_wFi{`Mq{ zJ*0SVfxfPfu_0%B_aJ93?kA`cBW^;RWZPkwP68J7<$6(vG4fo-LD8L1PKVrY<-5I?FU$KEpAQ! zS%3drRE^CW_8Q6?$-E<|Fjf1TTs&TK@{qG^8|>~q$V$E%-IyGy#c9#hk-YPRo_%1< zGfK&Ph7X>e4SjeC1Qj0Fr>RypGdgpPYZD_2&U4uO{M+dFqGrDfI`r}vU#Wf3nK_3O zN9G+nx_7Z};4n9*uQM`neYIg%KAIiYyXMtlye;pYi<%$y9qPDx|Bpvb_;hwy#{vE~ oFmTp1gA_Vi5(egnb@KWBQ*sVbcJX$M%m4rY07*qoM6N<$f(SNMBme*a literal 0 HcmV?d00001 diff --git a/images/Font_Minecraft_Rus_5x7_vw.png b/images/Font_Minecraft_Rus_5x7_vw.png new file mode 100644 index 0000000000000000000000000000000000000000..e7ef3984fdae613e6f199eb6eb2852c55ebd3dd3 GIT binary patch literal 44051 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 OFU+Toix@M1{eJ=D1)X64 literal 0 HcmV?d00001