From 1f865a53330d56b203fbd5666a7eb6e09df5eb74 Mon Sep 17 00:00:00 2001 From: Matthew Mondor Date: Sat, 17 Jun 2023 19:40:57 +0000 Subject: [PATCH] AnalogTerm2: Improve the "wargames" font variants. --- mmsoftware/analogterm2/TODO.txt | 9 +++++++ .../fonts/7x11/wargames-even-ansi.txt.gz | Bin 3365 -> 3366 bytes .../analogterm2/fonts/7x11/wargames-even.txt | 28 ++++++++++----------- .../analogterm2/fonts/7x9/wargames-ansi.txt.gz | Bin 2835 -> 2834 bytes mmsoftware/analogterm2/fonts/7x9/wargames.txt | 28 ++++++++++----------- 5 files changed, 37 insertions(+), 28 deletions(-) diff --git a/mmsoftware/analogterm2/TODO.txt b/mmsoftware/analogterm2/TODO.txt index f7e801c..a9921e8 100644 --- a/mmsoftware/analogterm2/TODO.txt +++ b/mmsoftware/analogterm2/TODO.txt @@ -1,3 +1,12 @@ +- "Wargames" font's i and l appear to be rightwise aligned by one but less so + than with the AT2 font made to also be. Glyphs like A b and p may show that + it was more 8 pixels width than 7. +- Some terminals apparently can slow down text paste from other applications + to the terminal/application, to cope with situations where the other end has + a slow response and might lose characters. This may be a good option to + support. +- Maybe ignore characters like zero-width space when encountered, since + these should not allocate a row. U+200B, U+200C, U+200D, U+2060, U+FEFF. - The "extinguishing" scanline simulation does not respect the color of the last one in color mode. Noticed with reverse or selected text. - Maybe generate common graphics characters programmatically, so that they diff --git a/mmsoftware/analogterm2/fonts/7x11/wargames-even-ansi.txt.gz b/mmsoftware/analogterm2/fonts/7x11/wargames-even-ansi.txt.gz index e524f9eea199558bb384521219a429fef010ecf9..4708efc411cd10b68034e2650b9a015b790d64ce 100644 GIT binary patch literal 3366 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 literal 3365 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 diff --git a/mmsoftware/analogterm2/fonts/7x9/wargames.txt b/mmsoftware/analogterm2/fonts/7x9/wargames.txt index 571362a..1300971 100644 --- a/mmsoftware/analogterm2/fonts/7x9/wargames.txt +++ b/mmsoftware/analogterm2/fonts/7x9/wargames.txt @@ -439,7 +439,7 @@ O...... 71 ....... -..OOOO. +..OOO.. .O..... .O..... .O.OOO. @@ -813,13 +813,13 @@ OOOOOOO 105 ....... -...O... +....O.. ....... -...O... -...O... -...O... -...O... -...O... +....O.. +....O.. +....O.. +....O.. +....O.. ....... 106 @@ -846,13 +846,13 @@ OOOOOOO 108 ....... -...O... -...O... -...O... -...O... -...O... -...O... -...O... +....O.. +....O.. +....O.. +....O.. +....O.. +....O.. +....O.. ....... 109 -- 2.9.0