├── src
└── EPaperHatCore
│ ├── IEpaper.cs
│ ├── IO
│ ├── IEPaperConnection.cs
│ ├── IHardwareSpecification.cs
│ ├── DefaultConnection.cs
│ └── EPaperConnection.cs
│ ├── GUI
│ ├── Fonts
│ │ ├── IFont.cs
│ │ ├── Font8.cs
│ │ ├── Font12.cs
│ │ └── Font16.cs
│ ├── Constants.cs
│ ├── Enums.cs
│ └── Screen.cs
│ ├── EPaperHatCore.csproj
│ ├── EpaperBase.cs
│ ├── Connections.cs
│ ├── HardwareCodes.cs
│ ├── Epaper213v2.cs
│ └── Epaper27.cs
├── tests
└── EPaperHatCore.Tests
│ ├── EpaperTests.cs
│ ├── EPaperHatCore.Tests.csproj
│ └── ScreenTests.cs
├── .gitignore
├── examples
└── EPaperHatCore.Examples
│ ├── EPaperHatCore.Examples.csproj
│ └── Program.cs
├── .github
└── workflows
│ ├── ci.yml
│ ├── claude.yml
│ └── claude-code-review.yml
├── LICENSE
├── EPaperHatCore.sln
└── README.md
/src/EPaperHatCore/IEpaper.cs:
--------------------------------------------------------------------------------
1 | namespace EPaperHatCore;
2 |
3 | public interface IEpaper
4 | {
5 | }
--------------------------------------------------------------------------------
/src/EPaperHatCore/IO/IEPaperConnection.cs:
--------------------------------------------------------------------------------
1 | namespace EPaperHatCore.IO;
2 |
3 | public interface IEpaperConnection
4 | {
5 | void SendCommand(int command);
6 | void SendData(int data);
7 | }
8 |
--------------------------------------------------------------------------------
/src/EPaperHatCore/GUI/Fonts/IFont.cs:
--------------------------------------------------------------------------------
1 | namespace EPaperHatCore.GUI.Fonts;
2 |
3 | public interface IFont
4 | {
5 | uint Width { get; }
6 | uint Height { get; }
7 | char[] Table { get; }
8 | }
9 |
--------------------------------------------------------------------------------
/src/EPaperHatCore/IO/IHardwareSpecification.cs:
--------------------------------------------------------------------------------
1 | namespace EPaperHatCore.IO;
2 |
3 | public interface IHardwareSpecification
4 | {
5 | int RST_PIN { get; }
6 | int DC_PIN { get; }
7 | int CS_PIN { get; }
8 | int BUSY_PIN { get; }
9 | int Channel0Frequency { get; }
10 | }
--------------------------------------------------------------------------------
/src/EPaperHatCore/IO/DefaultConnection.cs:
--------------------------------------------------------------------------------
1 | namespace EPaperHatCore.IO;
2 |
3 | public class DefaultSpecification : IHardwareSpecification
4 | {
5 | public int RST_PIN => 17;
6 | public int DC_PIN => 25;
7 | public int CS_PIN => 8;
8 | public int BUSY_PIN => 24;
9 | public int Channel0Frequency => 2000000;
10 | }
--------------------------------------------------------------------------------
/src/EPaperHatCore/GUI/Constants.cs:
--------------------------------------------------------------------------------
1 | namespace EPaperHatCore.GUI;
2 |
3 | public static class Constants
4 | {
5 | public const uint WHITE = 0xFF;
6 | public const uint BLACK = 0x00;
7 | public const uint RED = BLACK;
8 |
9 | public const uint IMAGE_BACKGROUND = WHITE;
10 | public const uint FONT_FOREGROUND = BLACK;
11 | public const uint FONT_BACKGROUND = WHITE;
12 | }
13 |
--------------------------------------------------------------------------------
/tests/EPaperHatCore.Tests/EpaperTests.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using EPaperHatCore;
3 | using Shouldly;
4 | using Xunit;
5 |
6 | namespace EPaperHatCore.Tests;
7 | public class EpaperTests
8 | {
9 | [Fact]
10 | public void Width_Or_Height_Less_Or_Equal_Zero_Throws()
11 | {
12 | var exception = Record.Exception(() =>
13 | {
14 | new Epaper27(0, 0);
15 | });
16 |
17 | exception.ShouldBeOfType(typeof(ArgumentException));
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.swp
2 | *.*~
3 | project.lock.json
4 | .DS_Store
5 | *.pyc
6 | nupkg/
7 |
8 | # Visual Studio Code
9 | .vscode
10 |
11 | # Rider
12 | .idea
13 |
14 | # User-specific files
15 | *.suo
16 | *.user
17 | *.userosscache
18 | *.sln.docstates
19 |
20 | # Build results
21 | [Dd]ebug/
22 | [Dd]ebugPublic/
23 | [Rr]elease/
24 | [Rr]eleases/
25 | x64/
26 | x86/
27 | build/
28 | bld/
29 | [Bb]in/
30 | [Oo]bj/
31 | [Oo]ut/
32 | msbuild.log
33 | msbuild.err
34 | msbuild.wrn
35 |
36 | # Visual Studio 2015
37 | .vs/
--------------------------------------------------------------------------------
/examples/EPaperHatCore.Examples/EPaperHatCore.Examples.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | Exe
13 | net8.0
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/tests/EPaperHatCore.Tests/EPaperHatCore.Tests.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0
5 |
6 | false
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/EPaperHatCore/GUI/Enums.cs:
--------------------------------------------------------------------------------
1 | namespace EPaperHatCore.GUI;
2 | public class Enums
3 | {
4 | public enum MirrorImage
5 | {
6 | MIRROR_NONE = 0x00,
7 | MIRROR_HORIZONTAL = 0x01,
8 | MIRROR_VERTICAL = 0x02,
9 | MIRROR_ORIGIN = 0x03
10 | }
11 |
12 | public enum Rotate
13 | {
14 | ROTATE_0 = 0,
15 | ROTATE_90 = 90,
16 | ROTATE_180 = 180,
17 | ROTATE_270 = 270
18 | }
19 |
20 | public enum Color
21 | {
22 | WHITE = 0xFF,
23 | BLACK = 0x00,
24 | RED = Color.BLACK
25 | }
26 |
27 | public enum DotStyle
28 | {
29 | DOT_FILL_AROUND,
30 | DOT_FILL_RIGHTUP
31 | }
32 |
33 | public enum LineStyle
34 | {
35 | LINE_STYLE_SOLID,
36 | LINE_STYLE_DOTTED
37 | }
38 | }
--------------------------------------------------------------------------------
/src/EPaperHatCore/EPaperHatCore.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0
5 | EPaperHatCore
6 | EPaperHatCore
7 | 0.3.0
8 | Pawel Skaruz
9 | A .NET 8 library for controlling E-Paper HAT displays on Raspberry Pi
10 | https://github.com/paw3lx/EPaperHatCore
11 | https://github.com/paw3lx/EPaperHatCore
12 | MIT
13 | true
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/.github/workflows/ci.yml:
--------------------------------------------------------------------------------
1 | name: CI
2 |
3 | on:
4 | push:
5 | branches: [ master ]
6 | pull_request:
7 | branches: [ master ]
8 |
9 | jobs:
10 | build:
11 | runs-on: ubuntu-latest
12 |
13 | steps:
14 | - uses: actions/checkout@v4
15 |
16 | - name: Setup .NET
17 | uses: actions/setup-dotnet@v4
18 | with:
19 | dotnet-version: '8.0.x'
20 |
21 | - name: Display .NET version
22 | run: dotnet --version
23 |
24 | - name: Restore dependencies
25 | run: dotnet restore ./src/EPaperHatCore/EPaperHatCore.csproj --verbosity minimal
26 |
27 | - name: Build
28 | run: dotnet build ./src/EPaperHatCore/EPaperHatCore.csproj --no-restore
29 |
30 | - name: Restore test dependencies
31 | run: dotnet restore ./tests/EPaperHatCore.Tests/EPaperHatCore.Tests.csproj --verbosity minimal
32 |
33 | - name: Test
34 | run: dotnet test ./tests/EPaperHatCore.Tests/EPaperHatCore.Tests.csproj --no-restore --verbosity normal
--------------------------------------------------------------------------------
/examples/EPaperHatCore.Examples/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using EPaperHatCore;
3 | using EPaperHatCore.GUI;
4 | using EPaperHatCore.GUI.Fonts;
5 | using static EPaperHatCore.GUI.Enums;
6 |
7 | namespace EPaperHatCore.Examples;
8 | class Program
9 | {
10 | static void Main(string[] args)
11 | {
12 | //initialize ePaper display
13 | var ePaper = new Epaper27(176, 264);
14 | ePaper.Initialize();
15 |
16 | //create black and red screens
17 | var blackScreen = new Screen(176, 264, Rotate.ROTATE_270, Color.WHITE);
18 | var redScreen = new Screen(176, 264, Rotate.ROTATE_270, Color.WHITE);
19 |
20 | //draw something on screen using a font
21 | var font = new Font8();
22 | var font2 = new Font20();
23 | blackScreen.DrawString(10, 20, "Text", font, Color.WHITE, Color.BLACK);
24 | redScreen.DrawString(10, 50, "text", font2, Color.WHITE, Color.RED);
25 |
26 | ePaper.DisplayScreens(blackScreen, redScreen);
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2025 Paweł Skaruz
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/src/EPaperHatCore/EpaperBase.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using EPaperHatCore.GUI;
3 | using EPaperHatCore.IO;
4 |
5 | namespace EPaperHatCore;
6 | public abstract class EpaperBase : IEpaper
7 | {
8 | public int ScreenWidth { get; }
9 | public int ScreenHeight { get; }
10 |
11 | protected readonly IEpaperConnection _ePaperConnection;
12 | protected readonly Connections _connections;
13 |
14 | public EpaperBase(int screenWidth, int screenHeight, IHardwareSpecification specification = null)
15 | {
16 | if (screenWidth <= 0 || screenHeight <= 0)
17 | {
18 | throw new ArgumentException("Width and/or height cannot be less or equal zero");
19 | }
20 | ScreenWidth = screenWidth;
21 | ScreenHeight = screenHeight;
22 |
23 | _connections = new Connections(specification ?? new DefaultSpecification());
24 | _ePaperConnection = new EPaperConnection(_connections);
25 | }
26 |
27 | public abstract void Initialize();
28 | public abstract void ClearScreen();
29 | public abstract void WaitUntilIdle();
30 | public abstract void DisplayScreens(params Screen[] screens);
31 | public abstract void Sleep();
32 | public abstract void Reset();
33 | }
--------------------------------------------------------------------------------
/src/EPaperHatCore/IO/EPaperConnection.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Device.Gpio;
3 |
4 | namespace EPaperHatCore.IO;
5 | internal class EPaperConnection : IEpaperConnection
6 | {
7 | private readonly Connections _connection;
8 | private static readonly object _syncLock = new object();
9 |
10 | public EPaperConnection(Connections connection)
11 | {
12 | _connection = connection;
13 | }
14 |
15 | public void SendCommand(int command)
16 | {
17 | lock (_syncLock)
18 | {
19 | _connection.GpioController.Write(_connection.DcPin, PinValue.Low);
20 | _connection.GpioController.Write(_connection.CsPin, PinValue.Low);
21 | _connection.SpiDevice.Write(ToBytes(command));
22 | _connection.GpioController.Write(_connection.CsPin, PinValue.High);
23 | }
24 | }
25 |
26 | public void SendData(int data)
27 | {
28 | lock (_syncLock)
29 | {
30 | _connection.GpioController.Write(_connection.DcPin, PinValue.High);
31 | _connection.GpioController.Write(_connection.CsPin, PinValue.Low);
32 | _connection.SpiDevice.Write(ToBytes(data));
33 | _connection.GpioController.Write(_connection.CsPin, PinValue.High);
34 | }
35 | }
36 |
37 | private byte[] ToBytes(int intValue)
38 | {
39 | byte b = (byte)intValue;
40 | return new byte[1] { b };
41 | }
42 | }
--------------------------------------------------------------------------------
/src/EPaperHatCore/Connections.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Device.Gpio;
3 | using System.Device.Spi;
4 | using EPaperHatCore.IO;
5 |
6 | namespace EPaperHatCore;
7 | public class Connections : IDisposable
8 | {
9 | private readonly IHardwareSpecification _specification;
10 | public int ResetPin { get; private set; }
11 | public int DcPin { get; private set; }
12 | public int CsPin { get; private set; }
13 | public int BusyPin { get; private set; }
14 | public SpiDevice SpiDevice { get; private set; }
15 | public GpioController GpioController { get; private set; }
16 | private static readonly object _syncLock = new object();
17 |
18 | public Connections(IHardwareSpecification specification)
19 | {
20 | _specification = specification;
21 | }
22 |
23 | public void Initialize()
24 | {
25 | lock (_syncLock)
26 | {
27 | GpioController = new GpioController();
28 |
29 | ResetPin = _specification.RST_PIN;
30 | GpioController.OpenPin(ResetPin, PinMode.Output);
31 |
32 | DcPin = _specification.DC_PIN;
33 | GpioController.OpenPin(DcPin, PinMode.Output);
34 |
35 | CsPin = _specification.CS_PIN;
36 | GpioController.OpenPin(CsPin, PinMode.Output);
37 |
38 | BusyPin = _specification.BUSY_PIN;
39 | GpioController.OpenPin(BusyPin, PinMode.Input);
40 |
41 | var spiSettings = new SpiConnectionSettings(0, CsPin)
42 | {
43 | ClockFrequency = _specification.Channel0Frequency,
44 | Mode = SpiMode.Mode0
45 | };
46 | SpiDevice = SpiDevice.Create(spiSettings);
47 | }
48 | }
49 |
50 | public void Dispose()
51 | {
52 | SpiDevice?.Dispose();
53 | GpioController?.Dispose();
54 | GC.SuppressFinalize(this);
55 | }
56 | }
--------------------------------------------------------------------------------
/.github/workflows/claude.yml:
--------------------------------------------------------------------------------
1 | name: Claude Code
2 |
3 | on:
4 | issue_comment:
5 | types: [created]
6 | pull_request_review_comment:
7 | types: [created]
8 | issues:
9 | types: [opened, assigned]
10 | pull_request_review:
11 | types: [submitted]
12 |
13 | jobs:
14 | claude:
15 | if: |
16 | (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
17 | (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
18 | (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
19 | (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
20 | runs-on: ubuntu-latest
21 | permissions:
22 | contents: read
23 | pull-requests: read
24 | issues: read
25 | id-token: write
26 | actions: read # Required for Claude to read CI results on PRs
27 | steps:
28 | - name: Checkout repository
29 | uses: actions/checkout@v4
30 | with:
31 | fetch-depth: 1
32 |
33 | - name: Run Claude Code
34 | id: claude
35 | uses: anthropics/claude-code-action@beta
36 | with:
37 | claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
38 |
39 | # This is an optional setting that allows Claude to read CI results on PRs
40 | additional_permissions: |
41 | actions: read
42 |
43 | # Optional: Specify model (defaults to Claude Sonnet 4, uncomment for Claude Opus 4.1)
44 | # model: "claude-opus-4-1-20250805"
45 |
46 | # Optional: Customize the trigger phrase (default: @claude)
47 | # trigger_phrase: "/claude"
48 |
49 | # Optional: Trigger when specific user is assigned to an issue
50 | # assignee_trigger: "claude-bot"
51 |
52 | # Optional: Allow Claude to run specific commands
53 | # allowed_tools: "Bash(npm install),Bash(npm run build),Bash(npm run test:*),Bash(npm run lint:*)"
54 |
55 | # Optional: Add custom instructions for Claude to customize its behavior for your project
56 | # custom_instructions: |
57 | # Follow our coding standards
58 | # Ensure all new code has tests
59 | # Use TypeScript for new files
60 |
61 | # Optional: Custom environment variables for Claude
62 | # claude_env: |
63 | # NODE_ENV: test
64 |
65 |
--------------------------------------------------------------------------------
/src/EPaperHatCore/HardwareCodes.cs:
--------------------------------------------------------------------------------
1 | namespace EPaperHatCore;
2 | internal static class HardwareCodes
3 | {
4 | public const int POWER_ON = 0x04;
5 | public const int PANEL_SETTING = 0x00;
6 | public const int PLL_CONTROL = 0x30;
7 | public const int POWER_SETTING = 0x01;
8 | public const int BOOSTER_SOFT_START = 0x06;
9 | public const int VCM_DC_SETTING_REGISTER = 0x82;
10 | public const int VCOM_AND_DATA_INTERVAL_SETTING = 0x50;
11 | public const int PARTIAL_DISPLAY_REFRESH = 0x16;
12 | public const int LUT_FOR_VCOM = 0x20;
13 | public const int LUT_WHITE_TO_WHITE = 0x21;
14 | public const int LUT_BLACK_TO_WHITE = 0x22;
15 | public const int LUT_WHITE_TO_BLACK = 0x23;
16 | public const int LUT_BLACK_TO_BLACK = 0x24;
17 | public const int DATA_START_TRANSMISSION_1 = 0x10;
18 | public const int DATA_STOP = 0x11;
19 | public const int DATA_START_TRANSMISSION_2 = 0x13;
20 | public const int DISPLAY_REFRESH = 0x12;
21 | public static int[] lut_vcom_dc = new int[]{
22 | 0x00, 0x00,
23 | 0x00, 0x1A, 0x1A, 0x00, 0x00, 0x01,
24 | 0x00, 0x0A, 0x0A, 0x00, 0x00, 0x08,
25 | 0x00, 0x0E, 0x01, 0x0E, 0x01, 0x10,
26 | 0x00, 0x0A, 0x0A, 0x00, 0x00, 0x08,
27 | 0x00, 0x04, 0x10, 0x00, 0x00, 0x05,
28 | 0x00, 0x03, 0x0E, 0x00, 0x00, 0x0A,
29 | 0x00, 0x23, 0x00, 0x00, 0x00, 0x01
30 | };
31 |
32 | //R21H
33 | public static int[] lut_ww = new int[]{
34 | 0x90, 0x1A, 0x1A, 0x00, 0x00, 0x01,
35 | 0x40, 0x0A, 0x0A, 0x00, 0x00, 0x08,
36 | 0x84, 0x0E, 0x01, 0x0E, 0x01, 0x10,
37 | 0x80, 0x0A, 0x0A, 0x00, 0x00, 0x08,
38 | 0x00, 0x04, 0x10, 0x00, 0x00, 0x05,
39 | 0x00, 0x03, 0x0E, 0x00, 0x00, 0x0A,
40 | 0x00, 0x23, 0x00, 0x00, 0x00, 0x01
41 | };
42 |
43 | //R22H r
44 | public static int[] lut_bw = new int[]{
45 | 0xA0, 0x1A, 0x1A, 0x00, 0x00, 0x01,
46 | 0x00, 0x0A, 0x0A, 0x00, 0x00, 0x08,
47 | 0x84, 0x0E, 0x01, 0x0E, 0x01, 0x10,
48 | 0x90, 0x0A, 0x0A, 0x00, 0x00, 0x08,
49 | 0xB0, 0x04, 0x10, 0x00, 0x00, 0x05,
50 | 0xB0, 0x03, 0x0E, 0x00, 0x00, 0x0A,
51 | 0xC0, 0x23, 0x00, 0x00, 0x00, 0x01
52 | };
53 |
54 | //R23H w
55 | public static int[] lut_bb = new int[] {
56 | 0x90, 0x1A, 0x1A, 0x00, 0x00, 0x01,
57 | 0x40, 0x0A, 0x0A, 0x00, 0x00, 0x08,
58 | 0x84, 0x0E, 0x01, 0x0E, 0x01, 0x10,
59 | 0x80, 0x0A, 0x0A, 0x00, 0x00, 0x08,
60 | 0x00, 0x04, 0x10, 0x00, 0x00, 0x05,
61 | 0x00, 0x03, 0x0E, 0x00, 0x00, 0x0A,
62 | 0x00, 0x23, 0x00, 0x00, 0x00, 0x01
63 | };
64 |
65 | //R24H b
66 | public static int[] lut_wb = new int[]{
67 | 0x90, 0x1A, 0x1A, 0x00, 0x00, 0x01,
68 | 0x20, 0x0A, 0x0A, 0x00, 0x00, 0x08,
69 | 0x84, 0x0E, 0x01, 0x0E, 0x01, 0x10,
70 | 0x10, 0x0A, 0x0A, 0x00, 0x00, 0x08,
71 | 0x00, 0x04, 0x10, 0x00, 0x00, 0x05,
72 | 0x00, 0x03, 0x0E, 0x00, 0x00, 0x0A,
73 | 0x00, 0x23, 0x00, 0x00, 0x00, 0x01
74 | };
75 | }
--------------------------------------------------------------------------------
/tests/EPaperHatCore.Tests/ScreenTests.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using EPaperHatCore;
3 | using EPaperHatCore.GUI;
4 | using EPaperHatCore.GUI.Fonts;
5 | using Shouldly;
6 | using Xunit;
7 | using static EPaperHatCore.GUI.Enums;
8 |
9 | namespace EPaperHatCore.Tests;
10 | public class ScreenTests
11 | {
12 | [Fact]
13 | public void Unsupperted_Character_Throws()
14 | {
15 | var screen = new Screen(176, 264, Rotate.ROTATE_270, 0);
16 |
17 | var exception = Record.Exception(() =>
18 | {
19 | screen.DrawString(10, 10, "ł", new Font16(), Color.WHITE, Color.BLACK);
20 | });
21 |
22 | exception.ShouldBeOfType(typeof(ArgumentException));
23 | }
24 |
25 | [Fact]
26 | public void String_XPosition_Biggen_Than_Width_Throws()
27 | {
28 | var screen = new Screen(176, 264, Rotate.ROTATE_270, 0);
29 |
30 | var exception = Record.Exception(() =>
31 | {
32 | screen.DrawString(1000, 10, "ScreenTest", new Font16(), Color.WHITE, Color.BLACK);
33 | });
34 |
35 | exception.ShouldBeOfType(typeof(ArgumentOutOfRangeException));
36 | }
37 |
38 | [Fact]
39 | public void String_YPosition_Biggen_Than_Width_Throws()
40 | {
41 | var screen = new Screen(176, 264, Rotate.ROTATE_270, 0);
42 |
43 | var exception = Record.Exception(() =>
44 | {
45 | screen.DrawString(0, 1000, "ScreenTest", new Font16(), Color.WHITE, Color.BLACK);
46 | });
47 |
48 | exception.ShouldBeOfType(typeof(ArgumentOutOfRangeException));
49 | }
50 |
51 | [Fact]
52 | public void Charater_XPosition_Biggen_Than_Width_Throws()
53 | {
54 | var screen = new Screen(176, 264, Rotate.ROTATE_270, 0);
55 |
56 | var exception = Record.Exception(() =>
57 | {
58 | screen.DrawCharachter(1000, 10, 'e', new Font16(), Color.WHITE, Color.BLACK);
59 | });
60 |
61 | exception.ShouldBeOfType(typeof(ArgumentOutOfRangeException));
62 | }
63 |
64 | [Fact]
65 | public void Charater_YPosition_Biggen_Than_Width_Throws()
66 | {
67 | var screen = new Screen(176, 264, Rotate.ROTATE_270, 0);
68 |
69 | var exception = Record.Exception(() =>
70 | {
71 | screen.DrawCharachter(0, 1000, 'e', new Font16(), Color.WHITE, Color.BLACK);
72 | });
73 |
74 | exception.ShouldBeOfType(typeof(ArgumentOutOfRangeException));
75 | }
76 |
77 | [Fact]
78 | public void Pixel_XPosition_Biggen_Than_Width_Throws()
79 | {
80 | var screen = new Screen(176, 264, Rotate.ROTATE_270, 0);
81 |
82 | var exception = Record.Exception(() =>
83 | {
84 | screen.SetPixel(1000, 10, Color.RED);
85 | });
86 |
87 | exception.ShouldBeOfType(typeof(ArgumentOutOfRangeException));
88 | }
89 |
90 | [Fact]
91 | public void Pixel_YPosition_Biggen_Than_Width_Throws()
92 | {
93 | var screen = new Screen(176, 264, Rotate.ROTATE_270, 0);
94 |
95 | var exception = Record.Exception(() =>
96 | {
97 | screen.SetPixel(0, 1000, Color.RED);
98 | });
99 |
100 | exception.ShouldBeOfType(typeof(ArgumentOutOfRangeException));
101 | }
102 | }
103 |
--------------------------------------------------------------------------------
/.github/workflows/claude-code-review.yml:
--------------------------------------------------------------------------------
1 | name: Claude Code Review
2 |
3 | on:
4 | pull_request:
5 | types: [opened, synchronize]
6 | # Optional: Only run on specific file changes
7 | # paths:
8 | # - "src/**/*.ts"
9 | # - "src/**/*.tsx"
10 | # - "src/**/*.js"
11 | # - "src/**/*.jsx"
12 |
13 | jobs:
14 | claude-review:
15 | # Optional: Filter by PR author
16 | # if: |
17 | # github.event.pull_request.user.login == 'external-contributor' ||
18 | # github.event.pull_request.user.login == 'new-developer' ||
19 | # github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR'
20 |
21 | runs-on: ubuntu-latest
22 | permissions:
23 | contents: read
24 | pull-requests: read
25 | issues: read
26 | id-token: write
27 |
28 | steps:
29 | - name: Checkout repository
30 | uses: actions/checkout@v4
31 | with:
32 | fetch-depth: 1
33 |
34 | - name: Run Claude Code Review
35 | id: claude-review
36 | uses: anthropics/claude-code-action@beta
37 | with:
38 | claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
39 |
40 | # Optional: Specify model (defaults to Claude Sonnet 4, uncomment for Claude Opus 4.1)
41 | # model: "claude-opus-4-1-20250805"
42 |
43 | # Direct prompt for automated review (no @claude mention needed)
44 | direct_prompt: |
45 | Please review this pull request and provide feedback on:
46 | - Code quality and best practices
47 | - Potential bugs or issues
48 | - Performance considerations
49 | - Security concerns
50 | - Test coverage
51 |
52 | Be constructive and helpful in your feedback.
53 |
54 | # Optional: Use sticky comments to make Claude reuse the same comment on subsequent pushes to the same PR
55 | # use_sticky_comment: true
56 |
57 | # Optional: Customize review based on file types
58 | # direct_prompt: |
59 | # Review this PR focusing on:
60 | # - For TypeScript files: Type safety and proper interface usage
61 | # - For API endpoints: Security, input validation, and error handling
62 | # - For React components: Performance, accessibility, and best practices
63 | # - For tests: Coverage, edge cases, and test quality
64 |
65 | # Optional: Different prompts for different authors
66 | # direct_prompt: |
67 | # ${{ github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR' &&
68 | # 'Welcome! Please review this PR from a first-time contributor. Be encouraging and provide detailed explanations for any suggestions.' ||
69 | # 'Please provide a thorough code review focusing on our coding standards and best practices.' }}
70 |
71 | # Optional: Add specific tools for running tests or linting
72 | # allowed_tools: "Bash(npm run test),Bash(npm run lint),Bash(npm run typecheck)"
73 |
74 | # Optional: Skip review for certain conditions
75 | # if: |
76 | # !contains(github.event.pull_request.title, '[skip-review]') &&
77 | # !contains(github.event.pull_request.title, '[WIP]')
78 |
79 |
--------------------------------------------------------------------------------
/EPaperHatCore.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 15
4 | VisualStudioVersion = 15.0.26124.0
5 | MinimumVisualStudioVersion = 15.0.26124.0
6 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{79E1B4FB-2718-4B6E-862B-A78280FE5104}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EPaperHatCore", "src\EPaperHatCore\EPaperHatCore.csproj", "{4BDB7E87-AE8C-4CF4-9925-1B2E4B258F23}"
9 | EndProject
10 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{E61B8F4F-B386-4F82-905F-DBF4327CB283}"
11 | EndProject
12 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EPaperHatCore.Tests", "tests\EPaperHatCore.Tests\EPaperHatCore.Tests.csproj", "{4EB0F350-938A-4449-8EB3-4DFB4ED45902}"
13 | EndProject
14 | Global
15 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
16 | Debug|Any CPU = Debug|Any CPU
17 | Debug|x64 = Debug|x64
18 | Debug|x86 = Debug|x86
19 | Release|Any CPU = Release|Any CPU
20 | Release|x64 = Release|x64
21 | Release|x86 = Release|x86
22 | EndGlobalSection
23 | GlobalSection(SolutionProperties) = preSolution
24 | HideSolutionNode = FALSE
25 | EndGlobalSection
26 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
27 | {4BDB7E87-AE8C-4CF4-9925-1B2E4B258F23}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
28 | {4BDB7E87-AE8C-4CF4-9925-1B2E4B258F23}.Debug|Any CPU.Build.0 = Debug|Any CPU
29 | {4BDB7E87-AE8C-4CF4-9925-1B2E4B258F23}.Debug|x64.ActiveCfg = Debug|Any CPU
30 | {4BDB7E87-AE8C-4CF4-9925-1B2E4B258F23}.Debug|x64.Build.0 = Debug|Any CPU
31 | {4BDB7E87-AE8C-4CF4-9925-1B2E4B258F23}.Debug|x86.ActiveCfg = Debug|Any CPU
32 | {4BDB7E87-AE8C-4CF4-9925-1B2E4B258F23}.Debug|x86.Build.0 = Debug|Any CPU
33 | {4BDB7E87-AE8C-4CF4-9925-1B2E4B258F23}.Release|Any CPU.ActiveCfg = Release|Any CPU
34 | {4BDB7E87-AE8C-4CF4-9925-1B2E4B258F23}.Release|Any CPU.Build.0 = Release|Any CPU
35 | {4BDB7E87-AE8C-4CF4-9925-1B2E4B258F23}.Release|x64.ActiveCfg = Release|Any CPU
36 | {4BDB7E87-AE8C-4CF4-9925-1B2E4B258F23}.Release|x64.Build.0 = Release|Any CPU
37 | {4BDB7E87-AE8C-4CF4-9925-1B2E4B258F23}.Release|x86.ActiveCfg = Release|Any CPU
38 | {4BDB7E87-AE8C-4CF4-9925-1B2E4B258F23}.Release|x86.Build.0 = Release|Any CPU
39 | {4EB0F350-938A-4449-8EB3-4DFB4ED45902}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
40 | {4EB0F350-938A-4449-8EB3-4DFB4ED45902}.Debug|Any CPU.Build.0 = Debug|Any CPU
41 | {4EB0F350-938A-4449-8EB3-4DFB4ED45902}.Debug|x64.ActiveCfg = Debug|Any CPU
42 | {4EB0F350-938A-4449-8EB3-4DFB4ED45902}.Debug|x64.Build.0 = Debug|Any CPU
43 | {4EB0F350-938A-4449-8EB3-4DFB4ED45902}.Debug|x86.ActiveCfg = Debug|Any CPU
44 | {4EB0F350-938A-4449-8EB3-4DFB4ED45902}.Debug|x86.Build.0 = Debug|Any CPU
45 | {4EB0F350-938A-4449-8EB3-4DFB4ED45902}.Release|Any CPU.ActiveCfg = Release|Any CPU
46 | {4EB0F350-938A-4449-8EB3-4DFB4ED45902}.Release|Any CPU.Build.0 = Release|Any CPU
47 | {4EB0F350-938A-4449-8EB3-4DFB4ED45902}.Release|x64.ActiveCfg = Release|Any CPU
48 | {4EB0F350-938A-4449-8EB3-4DFB4ED45902}.Release|x64.Build.0 = Release|Any CPU
49 | {4EB0F350-938A-4449-8EB3-4DFB4ED45902}.Release|x86.ActiveCfg = Release|Any CPU
50 | {4EB0F350-938A-4449-8EB3-4DFB4ED45902}.Release|x86.Build.0 = Release|Any CPU
51 | EndGlobalSection
52 | GlobalSection(NestedProjects) = preSolution
53 | {4BDB7E87-AE8C-4CF4-9925-1B2E4B258F23} = {79E1B4FB-2718-4B6E-862B-A78280FE5104}
54 | {4EB0F350-938A-4449-8EB3-4DFB4ED45902} = {E61B8F4F-B386-4F82-905F-DBF4327CB283}
55 | EndGlobalSection
56 | EndGlobal
57 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # EPaperHatCore
2 |
3 | EPaperHatCore is a .NET 8.0 library for controlling Waveshare e-Paper HAT displays on Raspberry Pi. This library provides a simple and intuitive API for working with e-Paper displays, supporting various screen sizes and drawing operations.
4 |
5 | [](https://github.com/paw3lx/epaperhatcore/actions/workflows/ci.yml)
6 |
7 | ## Features
8 |
9 | - 🖥️ Support for multiple e-Paper display sizes
10 | - 🎨 Drawing operations: text, lines, rectangles, and points
11 | - 🔄 Screen rotation support (0°, 90°, 180°, 270°)
12 | - 📝 Multiple font sizes (8pt, 12pt, 16pt, 20pt)
13 | - 🎯 Two-color display support (black and red)
14 | - 🔧 Built on System.Device.Gpio for reliable GPIO communication
15 | - ⚡ .NET 8.0 performance and compatibility
16 |
17 | ## Supported E-Paper Displays
18 |
19 | | Display Size | Resolution | Class Name | Colors |
20 | |-------------|------------|------------|--------|
21 | | 2.7 inch | 176×264 | `Epaper27` | Black, Red |
22 | | 2.13 inch v2 | 128×250 | `Epaper213v2` | Black |
23 |
24 | ## Dependencies
25 |
26 | - .NET 8.0 or later
27 | - System.Device.Gpio 3.1.0 (automatically installed)
28 | - Raspberry Pi with GPIO support
29 |
30 | ## Installation
31 |
32 | EPaperHatCore is available on [MyGet](https://www.myget.org/feed/epaperhatcore/package/nuget/EPaperHatCore)
33 |
34 | [](https://www.myget.org/feed/epaperhatcore/package/nuget/EPaperHatCore)
35 |
36 | ### Package Manager
37 | ```bash
38 | Install-Package EPaperHatCore -Source https://www.myget.org/F/epaperhatcore/api/v3/index.json
39 | ```
40 |
41 | ### .NET CLI
42 | ```bash
43 | dotnet add package EPaperHatCore --source https://www.myget.org/F/epaperhatcore/api/v3/index.json
44 | ```
45 |
46 | ## Getting Started
47 |
48 | ### Basic Example - 2.7 inch Display
49 | ```csharp
50 | using EPaperHatCore;
51 | using EPaperHatCore.GUI;
52 | using EPaperHatCore.GUI.Fonts;
53 | using static EPaperHatCore.GUI.Enums;
54 |
55 | // Initialize the e-Paper display (2.7 inch)
56 | var ePaper = new Epaper27(176, 264);
57 | ePaper.Initialize();
58 |
59 | // Create black and red screens
60 | var blackScreen = new Screen(176, 264, Rotate.ROTATE_270, Color.WHITE);
61 | var redScreen = new Screen(176, 264, Rotate.ROTATE_270, Color.WHITE);
62 |
63 | // Draw text using different fonts
64 | var font = new Font8();
65 | var font2 = new Font20();
66 | blackScreen.DrawString(10, 20, "Hello World!", font, Color.WHITE, Color.BLACK);
67 | redScreen.DrawString(10, 50, "EPaperHatCore", font2, Color.WHITE, Color.RED);
68 |
69 | // Display the screens
70 | ePaper.DisplayScreens(blackScreen, redScreen);
71 | ```
72 |
73 | ### Basic Example - 2.13 inch v2 Display
74 | ```csharp
75 | using EPaperHatCore;
76 | using EPaperHatCore.GUI;
77 | using EPaperHatCore.GUI.Fonts;
78 | using static EPaperHatCore.GUI.Enums;
79 |
80 | // Initialize the e-Paper display (2.13 inch v2)
81 | var ePaper = new Epaper213v2(128, 250);
82 | ePaper.Initialize();
83 |
84 | // Create a black and white screen
85 | var screen = new Screen(128, 250, Rotate.ROTATE_0, Color.WHITE);
86 |
87 | // Draw text and shapes
88 | var font = new Font16();
89 | screen.DrawString(10, 10, "EPaperHatCore", font, Color.WHITE, Color.BLACK);
90 | screen.DrawRectangle(10, 40, 100, 60, Color.BLACK, false, 1);
91 | screen.DrawLine(10, 70, 100, 90, Color.BLACK, LineStyle.LINE_STYLE_SOLID, 1);
92 |
93 | // Display the screen
94 | ePaper.DisplayScreens(screen);
95 | ```
96 |
97 | ### Advanced Drawing Operations
98 | ```csharp
99 | // Drawing shapes and text with various options
100 | var screen = new Screen(176, 264, Rotate.ROTATE_0, Color.WHITE);
101 |
102 | // Draw filled rectangle
103 | screen.DrawRectangle(20, 20, 80, 60, Color.BLACK, filled: true, dotSize: 1);
104 |
105 | // Draw dotted line
106 | screen.DrawLine(10, 100, 150, 120, Color.BLACK, LineStyle.LINE_STYLE_DOTTED, 2);
107 |
108 | // Draw points with different sizes
109 | screen.DrawPoint(50, 150, Color.BLACK, dotSize: 3, DotStyle.DOT_FILL_AROUND);
110 |
111 | // Text with different font sizes
112 | var font8 = new Font8();
113 | var font12 = new Font12();
114 | var font16 = new Font16();
115 | var font20 = new Font20();
116 |
117 | screen.DrawString(10, 180, "Font 8pt", font8, Color.WHITE, Color.BLACK);
118 | screen.DrawString(10, 200, "Font 12pt", font12, Color.WHITE, Color.BLACK);
119 | screen.DrawString(10, 220, "Font 16pt", font16, Color.WHITE, Color.BLACK);
120 | screen.DrawString(10, 240, "Font 20pt", font20, Color.WHITE, Color.BLACK);
121 | ```
122 |
123 | ## API Reference
124 |
125 | ### Core Classes
126 |
127 | #### `Epaper27(int width, int height)`
128 | Driver for 2.7 inch e-Paper displays with black and red color support.
129 |
130 | #### `Epaper213v2(int width, int height)`
131 | Driver for 2.13 inch v2 e-Paper displays with black and white support.
132 |
133 | #### `Screen(uint width, uint height, Rotate rotation, Color backgroundColor)`
134 | Represents a drawable screen buffer with various drawing methods.
135 |
136 | ### Drawing Methods
137 |
138 | - `DrawString(x, y, text, font, bgColor, fgColor)` - Draw text
139 | - `DrawRectangle(x1, y1, x2, y2, color, filled, dotSize)` - Draw rectangles
140 | - `DrawLine(x1, y1, x2, y2, color, lineStyle, dotSize)` - Draw lines
141 | - `DrawPoint(x, y, color, dotSize, dotStyle)` - Draw points
142 | - `SetPixel(x, y, color)` - Set individual pixels
143 | - `Clear(color)` - Clear screen with specified color
144 |
145 | ### Enumerations
146 |
147 | - `Color`: `BLACK`, `WHITE`, `RED`
148 | - `Rotate`: `ROTATE_0`, `ROTATE_90`, `ROTATE_180`, `ROTATE_270`
149 | - `LineStyle`: `LINE_STYLE_SOLID`, `LINE_STYLE_DOTTED`
150 | - `DotStyle`: `DOT_FILL_AROUND`, `DOT_FILL_RIGHTUP`
151 |
152 | ## Hardware Setup
153 |
154 | 1. Connect the e-Paper HAT to your Raspberry Pi GPIO pins
155 | 2. Ensure your Raspberry Pi has .NET 8.0 runtime installed
156 | 3. Run your application with appropriate GPIO permissions
157 |
158 | ## Contributing
159 |
160 | Contributions are welcome! Please feel free to submit issues and pull requests.
161 |
162 | ## License
163 |
164 | This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
--------------------------------------------------------------------------------
/src/EPaperHatCore/Epaper213v2.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Threading;
3 | using System.Device.Gpio;
4 | using EPaperHatCore.GUI;
5 | using EPaperHatCore.IO;
6 |
7 | namespace EPaperHatCore;
8 | public class Epaper213v2 : EpaperBase
9 | {
10 | public Epaper213v2(int screenWidth, int screenHeight, IHardwareSpecification specification = null) : base(screenWidth, screenHeight, specification)
11 | {
12 | }
13 |
14 | public override void ClearScreen()
15 | {
16 | int Width, Height;
17 | Width = (ScreenWidth % 8 == 0) ? (ScreenWidth / 8) : (ScreenWidth / 8 + 1);
18 | Height = ScreenHeight;
19 |
20 | _ePaperConnection.SendCommand(0x24);
21 | for (int j = 0; j < Height; j++)
22 | {
23 | for (int i = 0; i < Width; i++)
24 | {
25 | _ePaperConnection.SendData(0xFF);
26 | }
27 | }
28 |
29 | TurnOnDisplay();
30 | }
31 |
32 | public override void DisplayScreens(params Screen[] screens)
33 | {
34 | if (screens.Length == 0)
35 | return;
36 | var screen = screens[0];
37 |
38 | int Width, Height;
39 | Width = (ScreenWidth % 8 == 0) ? (ScreenWidth / 8) : (ScreenWidth / 8 + 1);
40 | Height = ScreenHeight;
41 |
42 | _ePaperConnection.SendCommand(0x24);
43 | for (int j = 0; j < Height; j++)
44 | {
45 | for (int i = 0; i < Width; i++)
46 | {
47 | _ePaperConnection.SendData(screen.Image[i + j * Width]);
48 | }
49 | }
50 | TurnOnDisplay();
51 | }
52 |
53 | public override void Initialize()
54 | {
55 | _connections.Initialize();
56 | Reset();
57 |
58 | WaitUntilIdle();
59 | _ePaperConnection.SendCommand(0x12); // soft reset
60 | WaitUntilIdle();
61 |
62 | _ePaperConnection.SendCommand(0x74); //set analog block control
63 | _ePaperConnection.SendData(0x54);
64 | _ePaperConnection.SendCommand(0x7E); //set digital block control
65 | _ePaperConnection.SendData(0x3B);
66 |
67 | _ePaperConnection.SendCommand(0x01); //Driver output control
68 | _ePaperConnection.SendData(0xF9);
69 | _ePaperConnection.SendData(0x00);
70 | _ePaperConnection.SendData(0x00);
71 |
72 | _ePaperConnection.SendCommand(0x11); //data entry mode
73 | _ePaperConnection.SendData(0x01);
74 |
75 | _ePaperConnection.SendCommand(0x44); //set Ram-X address start/end position
76 | _ePaperConnection.SendData(0x00);
77 | _ePaperConnection.SendData(0x0F); //0x0C-->(15+1)*8=128
78 |
79 | _ePaperConnection.SendCommand(0x45); //set Ram-Y address start/end position
80 | _ePaperConnection.SendData(0xF9); //0xF9-->(249+1)=250
81 | _ePaperConnection.SendData(0x00);
82 | _ePaperConnection.SendData(0x00);
83 | _ePaperConnection.SendData(0x00);
84 |
85 | _ePaperConnection.SendCommand(0x3C); //BorderWavefrom
86 | _ePaperConnection.SendData(0x03);
87 |
88 | _ePaperConnection.SendCommand(0x2C); //VCOM Voltage
89 | _ePaperConnection.SendData(0x55); //
90 |
91 | _ePaperConnection.SendCommand(0x03);
92 | _ePaperConnection.SendData(EPD_2IN13_V2_lut_full_update[70]);
93 |
94 | _ePaperConnection.SendCommand(0x04); //
95 | _ePaperConnection.SendData(EPD_2IN13_V2_lut_full_update[71]);
96 | _ePaperConnection.SendData(EPD_2IN13_V2_lut_full_update[72]);
97 | _ePaperConnection.SendData(EPD_2IN13_V2_lut_full_update[73]);
98 |
99 | _ePaperConnection.SendCommand(0x3A); //Dummy Line
100 | _ePaperConnection.SendData(EPD_2IN13_V2_lut_full_update[74]);
101 | _ePaperConnection.SendCommand(0x3B); //Gate time
102 | _ePaperConnection.SendData(EPD_2IN13_V2_lut_full_update[75]);
103 |
104 | _ePaperConnection.SendCommand(0x32);
105 | for (int count = 0; count < 70; count++)
106 | {
107 | _ePaperConnection.SendData(EPD_2IN13_V2_lut_full_update[count]);
108 | }
109 |
110 | _ePaperConnection.SendCommand(0x4E); // set RAM x address count to 0;
111 | _ePaperConnection.SendData(0x00);
112 | _ePaperConnection.SendCommand(0x4F); // set RAM y address count to 0X127;
113 | _ePaperConnection.SendData(0xF9);
114 | _ePaperConnection.SendData(0x00);
115 | WaitUntilIdle();
116 |
117 | }
118 |
119 | public override void Reset()
120 | {
121 | _connections.GpioController.Write(_connections.ResetPin, PinValue.High);
122 | Thread.Sleep(200);
123 | _connections.GpioController.Write(_connections.ResetPin, PinValue.Low);
124 | Thread.Sleep(10);
125 | _connections.GpioController.Write(_connections.ResetPin, PinValue.High);
126 | Thread.Sleep(200);
127 | }
128 |
129 | public override void Sleep()
130 | {
131 | _ePaperConnection.SendCommand(0x10);
132 | _ePaperConnection.SendData(0x01);
133 | Thread.Sleep(100);
134 | }
135 |
136 | public override void WaitUntilIdle()
137 | {
138 | while (_connections.GpioController.Read(_connections.BusyPin) == PinValue.High)
139 | { //LOW: idle, HIGH: busy
140 | Thread.Sleep(100);
141 | }
142 | }
143 |
144 | private void TurnOnDisplay()
145 | {
146 | _ePaperConnection.SendCommand(0x22);
147 | _ePaperConnection.SendData(0xC7);
148 | _ePaperConnection.SendCommand(0x20);
149 | WaitUntilIdle();
150 | }
151 |
152 | private static int[] EPD_2IN13_V2_lut_full_update = new int[76]{
153 | 0x80,0x60,0x40,0x00,0x00,0x00,0x00, //LUT0: BB: VS 0 ~7
154 | 0x10,0x60,0x20,0x00,0x00,0x00,0x00, //LUT1: BW: VS 0 ~7
155 | 0x80,0x60,0x40,0x00,0x00,0x00,0x00, //LUT2: WB: VS 0 ~7
156 | 0x10,0x60,0x20,0x00,0x00,0x00,0x00, //LUT3: WW: VS 0 ~7
157 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00, //LUT4: VCOM: VS 0 ~7
158 |
159 | 0x03,0x03,0x00,0x00,0x02, // TP0 A~D RP0
160 | 0x09,0x09,0x00,0x00,0x02, // TP1 A~D RP1
161 | 0x03,0x03,0x00,0x00,0x02, // TP2 A~D RP2
162 | 0x00,0x00,0x00,0x00,0x00, // TP3 A~D RP3
163 | 0x00,0x00,0x00,0x00,0x00, // TP4 A~D RP4
164 | 0x00,0x00,0x00,0x00,0x00, // TP5 A~D RP5
165 | 0x00,0x00,0x00,0x00,0x00, // TP6 A~D RP6
166 |
167 | 0x15,0x41,0xA8,0x32,0x30,0x0A,
168 | };
169 | }
--------------------------------------------------------------------------------
/src/EPaperHatCore/Epaper27.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Threading;
3 | using System.Device.Gpio;
4 | using EPaperHatCore.GUI;
5 | using EPaperHatCore.IO;
6 |
7 | namespace EPaperHatCore;
8 | public class Epaper27 : EpaperBase
9 | {
10 | public Epaper27(int screenWidth, int screenHeight, IHardwareSpecification specification = null)
11 | : base(screenWidth, screenHeight, specification)
12 | {
13 |
14 | }
15 |
16 | public override void Initialize()
17 | {
18 | _connections.Initialize();
19 | Reset();
20 |
21 | _ePaperConnection.SendCommand(HardwareCodes.POWER_ON);
22 | WaitUntilIdle();
23 |
24 | _ePaperConnection.SendCommand(HardwareCodes.PANEL_SETTING);
25 | _ePaperConnection.SendData(0xaf); //KW-BF KWR-AF BWROTP 0f
26 |
27 | _ePaperConnection.SendCommand(HardwareCodes.PLL_CONTROL);
28 | _ePaperConnection.SendData(0x3a); //3A 100HZ 29 150Hz 39 200HZ 31 171HZ
29 |
30 | _ePaperConnection.SendCommand(HardwareCodes.POWER_SETTING);
31 | _ePaperConnection.SendData(0x03); //# VDS_EN, VDG_EN
32 | _ePaperConnection.SendData(0x00); //# VCOM_HV, VGHL_LV[1], VGHL_LV[0]
33 | _ePaperConnection.SendData(0x2b); //# VDH
34 | _ePaperConnection.SendData(0x2b); //# VDL
35 | _ePaperConnection.SendData(0x09); //# VDHR
36 |
37 | _ePaperConnection.SendCommand(HardwareCodes.BOOSTER_SOFT_START);
38 | _ePaperConnection.SendData(0x07);
39 | _ePaperConnection.SendData(0x07);
40 | _ePaperConnection.SendData(0x17);
41 |
42 | //Power optimization
43 | _ePaperConnection.SendCommand(0xF8);
44 | _ePaperConnection.SendData(0x60);
45 | _ePaperConnection.SendData(0xA5);
46 |
47 | //Power optimization
48 | _ePaperConnection.SendCommand(0xF8);
49 | _ePaperConnection.SendData(0x89);
50 | _ePaperConnection.SendData(0xA5);
51 |
52 | //Power optimization
53 | _ePaperConnection.SendCommand(0xF8);
54 | _ePaperConnection.SendData(0x90);
55 | _ePaperConnection.SendData(0x00);
56 |
57 | //Power optimization
58 | _ePaperConnection.SendCommand(0xF8);
59 | _ePaperConnection.SendData(0x93);
60 | _ePaperConnection.SendData(0x2A);
61 |
62 | //Power optimization
63 | _ePaperConnection.SendCommand(0xF8);
64 | _ePaperConnection.SendData(0x73);
65 | _ePaperConnection.SendData(0x41);
66 |
67 | _ePaperConnection.SendCommand(HardwareCodes.VCM_DC_SETTING_REGISTER);
68 | _ePaperConnection.SendData(0x12);
69 | _ePaperConnection.SendCommand(HardwareCodes.VCOM_AND_DATA_INTERVAL_SETTING);
70 | _ePaperConnection.SendData(0x87); //define by OTP
71 |
72 | SetLut();
73 |
74 | _ePaperConnection.SendCommand(HardwareCodes.PARTIAL_DISPLAY_REFRESH);
75 | _ePaperConnection.SendData(0x00);
76 | }
77 |
78 | private void SetLut()
79 | {
80 | int count;
81 | _ePaperConnection.SendCommand(HardwareCodes.LUT_FOR_VCOM); //vcom
82 | for (count = 0; count < 44; count++)
83 | {
84 | _ePaperConnection.SendData(HardwareCodes.lut_vcom_dc[count]);
85 | }
86 |
87 | _ePaperConnection.SendCommand(HardwareCodes.LUT_WHITE_TO_WHITE); //ww --
88 | for (count = 0; count < 42; count++)
89 | {
90 | _ePaperConnection.SendData(HardwareCodes.lut_ww[count]);
91 | }
92 |
93 | _ePaperConnection.SendCommand(HardwareCodes.LUT_BLACK_TO_WHITE); //bw r
94 | for (count = 0; count < 42; count++)
95 | {
96 | _ePaperConnection.SendData(HardwareCodes.lut_bw[count]);
97 | }
98 |
99 | _ePaperConnection.SendCommand(HardwareCodes.LUT_WHITE_TO_BLACK); //wb w
100 | for (count = 0; count < 42; count++)
101 | {
102 | _ePaperConnection.SendData(HardwareCodes.lut_bb[count]);
103 | }
104 |
105 | _ePaperConnection.SendCommand(HardwareCodes.LUT_BLACK_TO_BLACK); //bb b
106 | for (count = 0; count < 42; count++)
107 | {
108 | _ePaperConnection.SendData(HardwareCodes.lut_wb[count]);
109 | }
110 | }
111 |
112 | public override void Reset()
113 | {
114 | _connections.GpioController.Write(_connections.ResetPin, PinValue.High);
115 | Thread.Sleep(200);
116 | _connections.GpioController.Write(_connections.ResetPin, PinValue.Low);
117 | Thread.Sleep(200);
118 | _connections.GpioController.Write(_connections.ResetPin, PinValue.High);
119 | }
120 |
121 | public override void WaitUntilIdle()
122 | {
123 | Console.WriteLine("e-Paper busy");
124 | while (_connections.GpioController.Read(_connections.BusyPin) == PinValue.Low)
125 | {
126 | System.Threading.Thread.Sleep(100);
127 | }
128 | Console.WriteLine("e-Paper busy release");
129 | }
130 |
131 | public override void ClearScreen()
132 | {
133 | int Width, Height;
134 | Width = (ScreenWidth % 8 == 0) ? (ScreenWidth / 8) : (ScreenHeight / 8 + 1);
135 | Height = ScreenHeight;
136 |
137 | _ePaperConnection.SendCommand(HardwareCodes.DATA_START_TRANSMISSION_1);
138 | for (int j = 0; j < Height; j++)
139 | {
140 | for (int i = 0; i < Width; i++)
141 | {
142 | _ePaperConnection.SendData(0x00);
143 | }
144 | }
145 | _ePaperConnection.SendData(HardwareCodes.DATA_STOP);
146 |
147 | _ePaperConnection.SendCommand(HardwareCodes.DATA_START_TRANSMISSION_2);
148 | for (int j = 0; j < Height; j++)
149 | {
150 | for (int i = 0; i < Width; i++)
151 | {
152 | _ePaperConnection.SendData(0x00);
153 | }
154 | }
155 | _ePaperConnection.SendData(HardwareCodes.DATA_STOP);
156 |
157 | _ePaperConnection.SendCommand(HardwareCodes.DISPLAY_REFRESH);
158 | WaitUntilIdle();
159 | }
160 |
161 | public override void DisplayScreens(params Screen[] screens)
162 | {
163 | if (screens.Length != 2)
164 | throw new ArgumentNullException(nameof(screens));
165 |
166 | var blackScreen = screens[0];
167 | var redScreen = screens[1];
168 |
169 | if (blackScreen?.Image == null)
170 | throw new ArgumentNullException(nameof(blackScreen));
171 | if (redScreen?.Image == null)
172 | throw new ArgumentNullException(nameof(redScreen));
173 |
174 | DispalScreen(blackScreen, HardwareCodes.DATA_START_TRANSMISSION_1);
175 | DispalScreen(redScreen, HardwareCodes.DATA_START_TRANSMISSION_2);
176 |
177 | _ePaperConnection.SendCommand(HardwareCodes.DISPLAY_REFRESH);
178 | WaitUntilIdle();
179 | }
180 |
181 | private void DispalScreen(Screen screen, int dataTransmissionCode)
182 | {
183 | int width, height;
184 | width = (ScreenWidth % 8 == 0) ? (ScreenWidth / 8) : (ScreenHeight / 8 + 1);
185 | height = ScreenHeight;
186 |
187 | _ePaperConnection.SendCommand(dataTransmissionCode);
188 | for (int j = 0; j < height; j++)
189 | {
190 | for (int i = 0; i < width; i++)
191 | {
192 | _ePaperConnection.SendData(~screen.Image[i + j * width]);
193 | }
194 | }
195 | _ePaperConnection.SendData(HardwareCodes.DATA_STOP);
196 | }
197 |
198 | public override void Sleep()
199 | {
200 | _ePaperConnection.SendCommand(0X50);
201 | _ePaperConnection.SendData(0xf7);
202 | _ePaperConnection.SendCommand(0X02); //power off
203 | _ePaperConnection.SendCommand(0X07); //deep sleep
204 | _ePaperConnection.SendData(0xA5);
205 | }
206 | }
207 |
--------------------------------------------------------------------------------
/src/EPaperHatCore/GUI/Screen.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using static EPaperHatCore.GUI.Enums;
3 | using EPaperHatCore.GUI.Fonts;
4 |
5 | namespace EPaperHatCore.GUI;
6 | public class Screen
7 | {
8 | public Screen(uint width, uint height, Rotate? rotate = null, Color? backgroundColor = null, MirrorImage? mirror = null)
9 | {
10 | var imageSize = ((width % 8 == 0) ? (width / 8) : (width / 8 + 1)) * height;
11 | Image = new byte[imageSize];
12 |
13 | _widthMemory = width;
14 | _heightMemory = height;
15 | _widthByte = (width % 8 == 0) ? (width / 8) : (width / 8 + 1);
16 | _heightByte = height;
17 |
18 | Rotate = rotate ?? Rotate.ROTATE_0;
19 | Mirror = mirror ?? MirrorImage.MIRROR_NONE;
20 |
21 | if (rotate == Rotate.ROTATE_0 || rotate == Rotate.ROTATE_180)
22 | {
23 | Width = width;
24 | Height = height;
25 | }
26 | else
27 | {
28 | Width = height;
29 | Height = width;
30 | }
31 |
32 | if (backgroundColor.HasValue)
33 | {
34 | Clear(backgroundColor.Value);
35 | }
36 | }
37 |
38 | public byte[] Image { get; }
39 | public uint Width { get; }
40 | public uint Height { get; }
41 | public Rotate Rotate { get; }
42 | public MirrorImage Mirror { get; }
43 | private readonly uint _widthMemory;
44 | private readonly uint _heightMemory;
45 | private readonly uint _widthByte;
46 | private readonly uint _heightByte;
47 |
48 | public void SetPixel(uint xPoint, uint yPoint, Color color)
49 | {
50 | if (xPoint > Width)
51 | throw new ArgumentOutOfRangeException(nameof(xPoint), $"{nameof(xPoint)} cannot be bigger than {nameof(Width)}");
52 | if (yPoint > Height)
53 | throw new ArgumentOutOfRangeException(nameof(yPoint), $"{nameof(yPoint)} cannot be bigger than {nameof(Height)}");
54 | uint x = 0, y = 0;
55 | switch (Rotate)
56 | {
57 | case Rotate.ROTATE_0:
58 | x = xPoint;
59 | y = yPoint;
60 | break;
61 | case Rotate.ROTATE_90:
62 | x = _widthMemory - yPoint - 1;
63 | y = xPoint;
64 | break;
65 | case Rotate.ROTATE_180:
66 | x = _widthMemory - xPoint - 1;
67 | y = _heightMemory - yPoint - 1;
68 | break;
69 | case Rotate.ROTATE_270:
70 | x = yPoint;
71 | y = _heightMemory - xPoint - 1;
72 | break;
73 | }
74 |
75 | switch (Mirror)
76 | {
77 | case MirrorImage.MIRROR_NONE:
78 | break;
79 | case MirrorImage.MIRROR_HORIZONTAL:
80 | x = _widthMemory - x - 1;
81 | break;
82 | case MirrorImage.MIRROR_VERTICAL:
83 | y = _heightMemory - y - 1;
84 | break;
85 | case MirrorImage.MIRROR_ORIGIN:
86 | x = _widthMemory - x - 1;
87 | y = _heightMemory - y - 1;
88 | break;
89 | }
90 |
91 | if (x > _widthMemory)
92 | throw new ArgumentOutOfRangeException(nameof(x), $"{nameof(x)} cannot be bigger than width");
93 | if (y > _heightMemory)
94 | throw new ArgumentOutOfRangeException(nameof(y), $"{nameof(y)} cannot be bigger than height");
95 |
96 | int address = (int)(x / 8 + y * _widthByte);
97 | byte rData = Image[address];
98 | if (color == Color.BLACK)
99 | {
100 | Image[address] = (byte)(rData & ~(0x80 >> (int)(x % 8)));
101 | }
102 | else
103 | {
104 | Image[address] = (byte)(rData | (0x80 >> (int)(x % 8)));
105 | }
106 | }
107 |
108 | public void DrawCharachter(uint xPoint, uint yPoint, char asciiChar,
109 | IFont font, Color backgroundColor, Color foregroundColor)
110 | {
111 | if (xPoint > Width)
112 | throw new ArgumentOutOfRangeException(nameof(xPoint), $"{nameof(xPoint)} cannot be bigger than {nameof(Width)}");
113 | if (yPoint > Height)
114 | throw new ArgumentOutOfRangeException(nameof(yPoint), $"{nameof(yPoint)} cannot be bigger than {nameof(Height)}");
115 |
116 | int charOffset = (int)((asciiChar - ' ') * font.Height * (font.Width / 8 + (font.Width % 8 > 0 ? 1 : 0)));
117 | for (uint page = 0; page < font.Height; page++)
118 | {
119 | for (uint column = 0; column < font.Width; column++)
120 | {
121 | if (charOffset >= font.Table.Length)
122 | {
123 | throw new ArgumentException($"Character '{asciiChar}' is not available in the font");
124 | }
125 | char character = font.Table[charOffset];
126 | //To determine whether the font background color and screen background color is consistent
127 | if (backgroundColor == Color.WHITE)
128 | { //this process is to speed up the scan
129 |
130 | if ((character & (0x80 >> (int)(column % 8))) != 0)
131 | SetPixel(xPoint + column, yPoint + page, foregroundColor);
132 | }
133 | else
134 | {
135 | if ((character & (0x80 >> (int)(column % 8))) != 0)
136 | {
137 | SetPixel(xPoint + column, yPoint + page, foregroundColor);
138 | }
139 | else
140 | {
141 | SetPixel(xPoint + column, yPoint + page, backgroundColor);
142 | }
143 | }
144 | //One pixel is 8 bits
145 | if (column % 8 == 7)
146 | charOffset++;
147 | }// Write a line
148 | if (font.Width % 8 != 0)
149 | charOffset++;
150 | }// Write all
151 | }
152 |
153 | public void DrawString(uint xStart, uint yStart, string text,
154 | IFont font, Color backgroundColor, Color foregroundColor)
155 | {
156 | uint xPoint = xStart;
157 | uint yPoint = yStart;
158 |
159 | if (xStart > Width)
160 | throw new ArgumentOutOfRangeException(nameof(xStart), $"{nameof(xStart)} cannot be bigger than {nameof(Width)}");
161 | if (yStart > Height)
162 | throw new ArgumentOutOfRangeException(nameof(yStart), $"{nameof(yStart)} cannot be bigger than {nameof(Height)}");
163 |
164 | foreach (char c in text)
165 | {
166 | //if X direction filled , reposition to(Xstart,Ypoint),Ypoint is Y direction plus the Height of the character
167 | if ((xPoint + font.Width) > Width)
168 | {
169 | xPoint = xStart;
170 | yPoint += font.Height;
171 | }
172 |
173 | // If the Y direction is full, reposition to(Xstart, Ystart)
174 | if ((yPoint + font.Height) > Height)
175 | {
176 | xPoint = xStart;
177 | yPoint = yStart;
178 | }
179 | DrawCharachter(xPoint, yPoint, c, font, backgroundColor, foregroundColor);
180 |
181 | //The next word of the abscissa increases the font of the broadband
182 | xPoint += font.Width;
183 | }
184 | }
185 |
186 | public void DrawPoint(uint xStart, uint yStart, Color Color, uint dotSize, DotStyle dotStyle)
187 | {
188 | if (xStart > Width)
189 | throw new ArgumentOutOfRangeException(nameof(xStart), $"{nameof(xStart)} cannot be bigger than {nameof(Width)}");
190 | if (yStart > Height)
191 | throw new ArgumentOutOfRangeException(nameof(yStart), $"{nameof(yStart)} cannot be bigger than {nameof(Height)}");
192 |
193 | if (dotSize <= 0 || dotSize >= 8)
194 | throw new ArgumentOutOfRangeException(nameof(dotSize), $"{nameof(yStart)} cannot be less than 0 and bigger than 8");
195 |
196 | if (dotStyle == DotStyle.DOT_FILL_AROUND)
197 | {
198 | for (uint xDir = 0; xDir < 2 * dotSize - 1; xDir++)
199 | {
200 | for (uint yDir = 0; yDir < 2 * dotSize - 1; yDir++)
201 | {
202 | if (xStart + xDir - dotSize < 0 || yStart + yDir - dotSize < 0)
203 | break;
204 | SetPixel(xStart + xDir - dotSize, yStart + yDir - dotSize, Color);
205 | }
206 | }
207 | }
208 | else
209 | {
210 | for (uint xDir = 0; xDir < dotSize; xDir++)
211 | {
212 | for (uint yDir = 0; yDir < dotSize; yDir++)
213 | {
214 | SetPixel(xStart + xDir - 1, yStart + yDir - 1, Color);
215 | }
216 | }
217 | }
218 | }
219 |
220 | public void DrawLine(uint xStart, uint yStart, uint xEnd, uint yEnd, Color Color, LineStyle lineStyle, uint dotSize)
221 | {
222 | if (xStart > Width)
223 | throw new ArgumentOutOfRangeException(nameof(xStart), $"{nameof(xStart)} cannot be bigger than {nameof(Width)}");
224 | if (yStart > Height)
225 | throw new ArgumentOutOfRangeException(nameof(yStart), $"{nameof(yStart)} cannot be bigger than {nameof(Height)}");
226 | if (xEnd > Width)
227 | throw new ArgumentOutOfRangeException(nameof(xEnd), $"{nameof(xEnd)} cannot be bigger than {nameof(Width)}");
228 | if (yEnd > Height)
229 | throw new ArgumentOutOfRangeException(nameof(yEnd), $"{nameof(yEnd)} cannot be bigger than {nameof(Height)}");
230 |
231 | if (dotSize <= 0 || dotSize >= 8)
232 | throw new ArgumentOutOfRangeException(nameof(dotSize), $"{nameof(yStart)} cannot be less than 0 and bigger than 8");
233 |
234 | uint xPoint = xStart;
235 | uint yPoint = yStart;
236 | int dx = (int)(xEnd - xStart) >= 0 ? (int)(xEnd - xStart) : (int)(xStart - xEnd);
237 | int dy = (int)(yEnd - yStart) <= 0 ? (int)(yEnd - yStart) : (int)(yStart - yEnd);
238 |
239 | int xIncrDecr = xStart < xEnd ? 1 : -1;
240 | int yIncDecr = yStart < yEnd ? 1 : -1;
241 |
242 | int esp = dx + dy;
243 | uint dotLen = 0;
244 |
245 | while (true)
246 | {
247 | dotLen++;
248 |
249 | if (lineStyle == LineStyle.LINE_STYLE_DOTTED && dotLen % 3 == 0)
250 | {
251 | DrawPoint(xPoint, yPoint, Color.WHITE, dotSize, DotStyle.DOT_FILL_AROUND);
252 | dotLen = 0;
253 | }
254 | else
255 | {
256 | DrawPoint(xPoint, yPoint, Color, dotSize, DotStyle.DOT_FILL_AROUND);
257 | }
258 |
259 | if (2 * esp >= dy)
260 | {
261 | if (xPoint == xEnd)
262 | break;
263 | esp += dy;
264 | xPoint = (uint)(xPoint + xIncrDecr);
265 | }
266 | if (2 * esp <= dx)
267 | {
268 | if (yPoint == yEnd)
269 | break;
270 | esp += dx;
271 | yPoint = (uint)(yPoint + yIncDecr);
272 | }
273 | }
274 | }
275 |
276 | public void DrawRectangle(uint xStart, uint yStart, uint xEnd, uint yEnd, Color color, bool filled, uint dotSize)
277 | {
278 | if (xStart > Width)
279 | throw new ArgumentOutOfRangeException(nameof(xStart), $"{nameof(xStart)} cannot be bigger than {nameof(Width)}");
280 | if (yStart > Height)
281 | throw new ArgumentOutOfRangeException(nameof(yStart), $"{nameof(yStart)} cannot be bigger than {nameof(Height)}");
282 | if (xEnd > Width)
283 | throw new ArgumentOutOfRangeException(nameof(xEnd), $"{nameof(xEnd)} cannot be bigger than {nameof(Width)}");
284 | if (yEnd > Height)
285 | throw new ArgumentOutOfRangeException(nameof(yEnd), $"{nameof(yEnd)} cannot be bigger than {nameof(Height)}");
286 |
287 | if (filled)
288 | {
289 | uint Ypoint;
290 | for (Ypoint = yStart; Ypoint < yEnd; Ypoint++)
291 | {
292 | DrawLine(xStart, Ypoint, xEnd, Ypoint, color, LineStyle.LINE_STYLE_SOLID, dotSize);
293 | }
294 | }
295 | else
296 | {
297 | DrawLine(xStart, yStart, xEnd, yStart, color, LineStyle.LINE_STYLE_SOLID, dotSize);
298 | DrawLine(xStart, yStart, xStart, yEnd, color, LineStyle.LINE_STYLE_SOLID, dotSize);
299 | DrawLine(xEnd, yEnd, xEnd, yStart, color, LineStyle.LINE_STYLE_SOLID, dotSize);
300 | DrawLine(xEnd, yEnd, xStart, yEnd, color, LineStyle.LINE_STYLE_SOLID, dotSize);
301 | }
302 | }
303 |
304 | public void Clear(Color color)
305 | {
306 | for (int Y = 0; Y < _heightByte; Y++)
307 | {
308 | for (int X = 0; X < _widthByte; X++)
309 | {
310 | int Addr = (int)(X + Y * _widthByte);
311 | byte byteColor = (byte)color;
312 | this.Image[Addr] = byteColor;
313 | }
314 | }
315 | }
316 | }
--------------------------------------------------------------------------------
/src/EPaperHatCore/GUI/Fonts/Font8.cs:
--------------------------------------------------------------------------------
1 | using System.Linq;
2 |
3 | namespace EPaperHatCore.GUI.Fonts;
4 | public class Font8 : IFont
5 | {
6 | public uint Width { get; }
7 |
8 | public uint Height { get; }
9 |
10 | public char[] Table { get; }
11 |
12 | public Font8()
13 | {
14 | Width = 5;
15 | Height = 8;
16 | Table = new int[]
17 | {
18 | // @0 ' ' (5 pixels wide)
19 | 0x00, //
20 | 0x00, //
21 | 0x00, //
22 | 0x00, //
23 | 0x00, //
24 | 0x00, //
25 | 0x00, //
26 | 0x00, //
27 |
28 | // @8 '!' (5 pixels wide)
29 | 0x20, // #
30 | 0x20, // #
31 | 0x20, // #
32 | 0x20, // #
33 | 0x00, //
34 | 0x20, // #
35 | 0x00, //
36 | 0x00, //
37 |
38 | // @16 '"' (5 pixels wide)
39 | 0x50, // # #
40 | 0x50, // # #
41 | 0x00, //
42 | 0x00, //
43 | 0x00, //
44 | 0x00, //
45 | 0x00, //
46 | 0x00, //
47 |
48 | // @24 '#' (5 pixels wide)
49 | 0x28, // # #
50 | 0x50, // # #
51 | 0xF8, // #####
52 | 0x50, // # #
53 | 0xF8, // #####
54 | 0x50, // # #
55 | 0xA0, // # #
56 | 0x00, //
57 |
58 | // @32 '$' (5 pixels wide)
59 | 0x20, // #
60 | 0x30, // ##
61 | 0x60, // ##
62 | 0x30, // ##
63 | 0x10, // #
64 | 0x60, // ##
65 | 0x20, // #
66 | 0x00, //
67 |
68 | // @40 '%' (5 pixels wide)
69 | 0x20, // #
70 | 0x20, // #
71 | 0x18, // ##
72 | 0x60, // ##
73 | 0x10, // #
74 | 0x10, // #
75 | 0x00, //
76 | 0x00, //
77 |
78 | // @48 '&' (5 pixels wide)
79 | 0x00, //
80 | 0x38, // ###
81 | 0x20, // #
82 | 0x60, // ##
83 | 0x50, // # #
84 | 0x78, // ####
85 | 0x00, //
86 | 0x00, //
87 |
88 | // @56 ''' (5 pixels wide)
89 | 0x20, // #
90 | 0x20, // #
91 | 0x20, // #
92 | 0x00, //
93 | 0x00, //
94 | 0x00, //
95 | 0x00, //
96 | 0x00, //
97 |
98 | // @64 '(' (5 pixels wide)
99 | 0x10, // #
100 | 0x20, // #
101 | 0x20, // #
102 | 0x20, // #
103 | 0x20, // #
104 | 0x20, // #
105 | 0x10, // #
106 | 0x00, //
107 |
108 | // @72 ')' (5 pixels wide)
109 | 0x40, // #
110 | 0x20, // #
111 | 0x20, // #
112 | 0x20, // #
113 | 0x20, // #
114 | 0x20, // #
115 | 0x40, // #
116 | 0x00, //
117 |
118 | // @80 '*' (5 pixels wide)
119 | 0x20, // #
120 | 0x70, // ###
121 | 0x20, // #
122 | 0x50, // # #
123 | 0x00, //
124 | 0x00, //
125 | 0x00, //
126 | 0x00, //
127 |
128 | // @88 '+' (5 pixels wide)
129 | 0x00, //
130 | 0x20, // #
131 | 0x20, // #
132 | 0xF8, // #####
133 | 0x20, // #
134 | 0x20, // #
135 | 0x00, //
136 | 0x00, //
137 |
138 | // @96 ',' (5 pixels wide)
139 | 0x00, //
140 | 0x00, //
141 | 0x00, //
142 | 0x00, //
143 | 0x10, // #
144 | 0x20, // #
145 | 0x20, // #
146 | 0x00, //
147 |
148 | // @104 '-' (5 pixels wide)
149 | 0x00, //
150 | 0x00, //
151 | 0x00, //
152 | 0x70, // ###
153 | 0x00, //
154 | 0x00, //
155 | 0x00, //
156 | 0x00, //
157 |
158 | // @112 '.' (5 pixels wide)
159 | 0x00, //
160 | 0x00, //
161 | 0x00, //
162 | 0x00, //
163 | 0x00, //
164 | 0x20, // #
165 | 0x00, //
166 | 0x00, //
167 |
168 | // @120 '/' (5 pixels wide)
169 | 0x10, // #
170 | 0x20, // #
171 | 0x20, // #
172 | 0x20, // #
173 | 0x40, // #
174 | 0x40, // #
175 | 0x80, // #
176 | 0x00, //
177 |
178 | // @128 '0' (5 pixels wide)
179 | 0x20, // #
180 | 0x50, // # #
181 | 0x50, // # #
182 | 0x50, // # #
183 | 0x50, // # #
184 | 0x20, // #
185 | 0x00, //
186 | 0x00, //
187 |
188 | // @136 '1' (5 pixels wide)
189 | 0x60, // ##
190 | 0x20, // #
191 | 0x20, // #
192 | 0x20, // #
193 | 0x20, // #
194 | 0xF8, // #####
195 | 0x00, //
196 | 0x00, //
197 |
198 | // @144 '2' (5 pixels wide)
199 | 0x20, // #
200 | 0x50, // # #
201 | 0x20, // #
202 | 0x20, // #
203 | 0x40, // #
204 | 0x70, // ###
205 | 0x00, //
206 | 0x00, //
207 |
208 | // @152 '3' (5 pixels wide)
209 | 0x20, // #
210 | 0x50, // # #
211 | 0x10, // #
212 | 0x20, // #
213 | 0x10, // #
214 | 0x60, // ##
215 | 0x00, //
216 | 0x00, //
217 |
218 | // @160 '4' (5 pixels wide)
219 | 0x10, // #
220 | 0x30, // ##
221 | 0x50, // # #
222 | 0x78, // ####
223 | 0x10, // #
224 | 0x38, // ###
225 | 0x00, //
226 | 0x00, //
227 |
228 | // @168 '5' (5 pixels wide)
229 | 0x70, // ###
230 | 0x40, // #
231 | 0x60, // ##
232 | 0x10, // #
233 | 0x50, // # #
234 | 0x20, // #
235 | 0x00, //
236 | 0x00, //
237 |
238 | // @176 '6' (5 pixels wide)
239 | 0x30, // ##
240 | 0x40, // #
241 | 0x60, // ##
242 | 0x50, // # #
243 | 0x50, // # #
244 | 0x60, // ##
245 | 0x00, //
246 | 0x00, //
247 |
248 | // @184 '7' (5 pixels wide)
249 | 0x70, // ###
250 | 0x50, // # #
251 | 0x10, // #
252 | 0x20, // #
253 | 0x20, // #
254 | 0x20, // #
255 | 0x00, //
256 | 0x00, //
257 |
258 | // @192 '8' (5 pixels wide)
259 | 0x20, // #
260 | 0x50, // # #
261 | 0x20, // #
262 | 0x50, // # #
263 | 0x50, // # #
264 | 0x20, // #
265 | 0x00, //
266 | 0x00, //
267 |
268 | // @200 '9' (5 pixels wide)
269 | 0x30, // ##
270 | 0x50, // # #
271 | 0x50, // # #
272 | 0x30, // ##
273 | 0x10, // #
274 | 0x60, // ##
275 | 0x00, //
276 | 0x00, //
277 |
278 | // @208 ':' (5 pixels wide)
279 | 0x00, //
280 | 0x00, //
281 | 0x20, // #
282 | 0x00, //
283 | 0x00, //
284 | 0x20, // #
285 | 0x00, //
286 | 0x00, //
287 |
288 | // @216 ';' (5 pixels wide)
289 | 0x00, //
290 | 0x00, //
291 | 0x10, // #
292 | 0x00, //
293 | 0x10, // #
294 | 0x20, // #
295 | 0x00, //
296 | 0x00, //
297 |
298 | // @224 '<' (5 pixels wide)
299 | 0x00, //
300 | 0x10, // #
301 | 0x20, // #
302 | 0xC0, // ##
303 | 0x20, // #
304 | 0x10, // #
305 | 0x00, //
306 | 0x00, //
307 |
308 | // @232 '=' (5 pixels wide)
309 | 0x00, //
310 | 0x70, // ###
311 | 0x00, //
312 | 0x70, // ###
313 | 0x00, //
314 | 0x00, //
315 | 0x00, //
316 | 0x00, //
317 |
318 | // @240 '>' (5 pixels wide)
319 | 0x00, //
320 | 0x40, // #
321 | 0x20, // #
322 | 0x18, // ##
323 | 0x20, // #
324 | 0x40, // #
325 | 0x00, //
326 | 0x00, //
327 |
328 | // @248 '?' (5 pixels wide)
329 | 0x20, // #
330 | 0x50, // # #
331 | 0x10, // #
332 | 0x20, // #
333 | 0x00, //
334 | 0x20, // #
335 | 0x00, //
336 | 0x00, //
337 |
338 | // @256 '@' (5 pixels wide)
339 | 0x30, // ##
340 | 0x48, // # #
341 | 0x48, // # #
342 | 0x58, // # ##
343 | 0x48, // # #
344 | 0x40, // #
345 | 0x38, // ###
346 | 0x00, //
347 |
348 | // @264 'A' (5 pixels wide)
349 | 0x60, // ##
350 | 0x20, // #
351 | 0x50, // # #
352 | 0x70, // ###
353 | 0x88, // # #
354 | 0xD8, // ## ##
355 | 0x00, //
356 | 0x00, //
357 |
358 | // @272 'B' (5 pixels wide)
359 | 0xF0, // ####
360 | 0x48, // # #
361 | 0x70, // ###
362 | 0x48, // # #
363 | 0x48, // # #
364 | 0xF0, // ####
365 | 0x00, //
366 | 0x00, //
367 |
368 | // @280 'C' (5 pixels wide)
369 | 0x70, // ###
370 | 0x50, // # #
371 | 0x40, // #
372 | 0x40, // #
373 | 0x40, // #
374 | 0x30, // ##
375 | 0x00, //
376 | 0x00, //
377 |
378 | // @288 'D' (5 pixels wide)
379 | 0xF0, // ####
380 | 0x48, // # #
381 | 0x48, // # #
382 | 0x48, // # #
383 | 0x48, // # #
384 | 0xF0, // ####
385 | 0x00, //
386 | 0x00, //
387 |
388 | // @296 'E' (5 pixels wide)
389 | 0xF8, // #####
390 | 0x48, // # #
391 | 0x60, // ##
392 | 0x40, // #
393 | 0x48, // # #
394 | 0xF8, // #####
395 | 0x00, //
396 | 0x00, //
397 |
398 | // @304 'F' (5 pixels wide)
399 | 0xF8, // #####
400 | 0x48, // # #
401 | 0x60, // ##
402 | 0x40, // #
403 | 0x40, // #
404 | 0xE0, // ###
405 | 0x00, //
406 | 0x00, //
407 |
408 | // @312 'G' (5 pixels wide)
409 | 0x70, // ###
410 | 0x40, // #
411 | 0x40, // #
412 | 0x58, // # ##
413 | 0x50, // # #
414 | 0x30, // ##
415 | 0x00, //
416 | 0x00, //
417 |
418 | // @320 'H' (5 pixels wide)
419 | 0xE8, // ### #
420 | 0x48, // # #
421 | 0x78, // ####
422 | 0x48, // # #
423 | 0x48, // # #
424 | 0xE8, // ### #
425 | 0x00, //
426 | 0x00, //
427 |
428 | // @328 'I' (5 pixels wide)
429 | 0x70, // ###
430 | 0x20, // #
431 | 0x20, // #
432 | 0x20, // #
433 | 0x20, // #
434 | 0x70, // ###
435 | 0x00, //
436 | 0x00, //
437 |
438 | // @336 'J' (5 pixels wide)
439 | 0x38, // ###
440 | 0x10, // #
441 | 0x10, // #
442 | 0x50, // # #
443 | 0x50, // # #
444 | 0x20, // #
445 | 0x00, //
446 | 0x00, //
447 |
448 | // @344 'K' (5 pixels wide)
449 | 0xD8, // ## ##
450 | 0x50, // # #
451 | 0x60, // ##
452 | 0x70, // ###
453 | 0x50, // # #
454 | 0xD8, // ## ##
455 | 0x00, //
456 | 0x00, //
457 |
458 | // @352 'L' (5 pixels wide)
459 | 0xE0, // ###
460 | 0x40, // #
461 | 0x40, // #
462 | 0x40, // #
463 | 0x48, // # #
464 | 0xF8, // #####
465 | 0x00, //
466 | 0x00, //
467 |
468 | // @360 'M' (5 pixels wide)
469 | 0xD8, // ## ##
470 | 0xD8, // ## ##
471 | 0xD8, // ## ##
472 | 0xA8, // # # #
473 | 0x88, // # #
474 | 0xD8, // ## ##
475 | 0x00, //
476 | 0x00, //
477 |
478 | // @368 'N' (5 pixels wide)
479 | 0xD8, // ## ##
480 | 0x68, // ## #
481 | 0x68, // ## #
482 | 0x58, // # ##
483 | 0x58, // # ##
484 | 0xE8, // ### #
485 | 0x00, //
486 | 0x00, //
487 |
488 | // @376 'O' (5 pixels wide)
489 | 0x30, // ##
490 | 0x48, // # #
491 | 0x48, // # #
492 | 0x48, // # #
493 | 0x48, // # #
494 | 0x30, // ##
495 | 0x00, //
496 | 0x00, //
497 |
498 | // @384 'P' (5 pixels wide)
499 | 0xF0, // ####
500 | 0x48, // # #
501 | 0x48, // # #
502 | 0x70, // ###
503 | 0x40, // #
504 | 0xE0, // ###
505 | 0x00, //
506 | 0x00, //
507 |
508 | // @392 'Q' (5 pixels wide)
509 | 0x30, // ##
510 | 0x48, // # #
511 | 0x48, // # #
512 | 0x48, // # #
513 | 0x48, // # #
514 | 0x30, // ##
515 | 0x18, // ##
516 | 0x00, //
517 |
518 | // @400 'R' (5 pixels wide)
519 | 0xF0, // ####
520 | 0x48, // # #
521 | 0x48, // # #
522 | 0x70, // ###
523 | 0x48, // # #
524 | 0xE8, // ### #
525 | 0x00, //
526 | 0x00, //
527 |
528 | // @408 'S' (5 pixels wide)
529 | 0x70, // ###
530 | 0x50, // # #
531 | 0x20, // #
532 | 0x10, // #
533 | 0x50, // # #
534 | 0x70, // ###
535 | 0x00, //
536 | 0x00, //
537 |
538 | // @416 'T' (5 pixels wide)
539 | 0xF8, // #####
540 | 0xA8, // # # #
541 | 0x20, // #
542 | 0x20, // #
543 | 0x20, // #
544 | 0x70, // ###
545 | 0x00, //
546 | 0x00, //
547 |
548 | // @424 'U' (5 pixels wide)
549 | 0xD8, // ## ##
550 | 0x48, // # #
551 | 0x48, // # #
552 | 0x48, // # #
553 | 0x48, // # #
554 | 0x30, // ##
555 | 0x00, //
556 | 0x00, //
557 |
558 | // @432 'V' (5 pixels wide)
559 | 0xD8, // ## ##
560 | 0x88, // # #
561 | 0x48, // # #
562 | 0x50, // # #
563 | 0x50, // # #
564 | 0x30, // ##
565 | 0x00, //
566 | 0x00, //
567 |
568 | // @440 'W' (5 pixels wide)
569 | 0xD8, // ## ##
570 | 0x88, // # #
571 | 0xA8, // # # #
572 | 0xA8, // # # #
573 | 0xA8, // # # #
574 | 0x50, // # #
575 | 0x00, //
576 | 0x00, //
577 |
578 | // @448 'X' (5 pixels wide)
579 | 0xD8, // ## ##
580 | 0x50, // # #
581 | 0x20, // #
582 | 0x20, // #
583 | 0x50, // # #
584 | 0xD8, // ## ##
585 | 0x00, //
586 | 0x00, //
587 |
588 | // @456 'Y' (5 pixels wide)
589 | 0xD8, // ## ##
590 | 0x88, // # #
591 | 0x50, // # #
592 | 0x20, // #
593 | 0x20, // #
594 | 0x70, // ###
595 | 0x00, //
596 | 0x00, //
597 |
598 | // @464 'Z' (5 pixels wide)
599 | 0x78, // ####
600 | 0x48, // # #
601 | 0x10, // #
602 | 0x20, // #
603 | 0x48, // # #
604 | 0x78, // ####
605 | 0x00, //
606 | 0x00, //
607 |
608 | // @472 '[' (5 pixels wide)
609 | 0x30, // ##
610 | 0x20, // #
611 | 0x20, // #
612 | 0x20, // #
613 | 0x20, // #
614 | 0x20, // #
615 | 0x30, // ##
616 | 0x00, //
617 |
618 | // @480 '\' (5 pixels wide)
619 | 0x80, // #
620 | 0x40, // #
621 | 0x40, // #
622 | 0x20, // #
623 | 0x20, // #
624 | 0x20, // #
625 | 0x10, // #
626 | 0x00, //
627 |
628 | // @488 ']' (5 pixels wide)
629 | 0x60, // ##
630 | 0x20, // #
631 | 0x20, // #
632 | 0x20, // #
633 | 0x20, // #
634 | 0x20, // #
635 | 0x60, // ##
636 | 0x00, //
637 |
638 | // @496 '^' (5 pixels wide)
639 | 0x20, // #
640 | 0x20, // #
641 | 0x50, // # #
642 | 0x00, //
643 | 0x00, //
644 | 0x00, //
645 | 0x00, //
646 | 0x00, //
647 |
648 | // @504 '_' (5 pixels wide)
649 | 0x00, //
650 | 0x00, //
651 | 0x00, //
652 | 0x00, //
653 | 0x00, //
654 | 0x00, //
655 | 0x00, //
656 | 0xF8, // #####
657 |
658 | // @512 '`' (5 pixels wide)
659 | 0x20, // #
660 | 0x10, // #
661 | 0x00, //
662 | 0x00, //
663 | 0x00, //
664 | 0x00, //
665 | 0x00, //
666 | 0x00, //
667 |
668 | // @520 'a' (5 pixels wide)
669 | 0x00, //
670 | 0x00, //
671 | 0x30, // ##
672 | 0x10, // #
673 | 0x70, // ###
674 | 0x78, // ####
675 | 0x00, //
676 | 0x00, //
677 |
678 | // @528 'b' (5 pixels wide)
679 | 0xC0, // ##
680 | 0x40, // #
681 | 0x70, // ###
682 | 0x48, // # #
683 | 0x48, // # #
684 | 0xF0, // ####
685 | 0x00, //
686 | 0x00, //
687 |
688 | // @536 'c' (5 pixels wide)
689 | 0x00, //
690 | 0x00, //
691 | 0x70, // ###
692 | 0x40, // #
693 | 0x40, // #
694 | 0x70, // ###
695 | 0x00, //
696 | 0x00, //
697 |
698 | // @544 'd' (5 pixels wide)
699 | 0x18, // ##
700 | 0x08, // #
701 | 0x38, // ###
702 | 0x48, // # #
703 | 0x48, // # #
704 | 0x38, // ###
705 | 0x00, //
706 | 0x00, //
707 |
708 | // @552 'e' (5 pixels wide)
709 | 0x00, //
710 | 0x00, //
711 | 0x70, // ###
712 | 0x70, // ###
713 | 0x40, // #
714 | 0x30, // ##
715 | 0x00, //
716 | 0x00, //
717 |
718 | // @560 'f' (5 pixels wide)
719 | 0x10, // #
720 | 0x20, // #
721 | 0x70, // ###
722 | 0x20, // #
723 | 0x20, // #
724 | 0x70, // ###
725 | 0x00, //
726 | 0x00, //
727 |
728 | // @568 'g' (5 pixels wide)
729 | 0x00, //
730 | 0x00, //
731 | 0x38, // ###
732 | 0x48, // # #
733 | 0x48, // # #
734 | 0x38, // ###
735 | 0x08, // #
736 | 0x30, // ##
737 |
738 | // @576 'h' (5 pixels wide)
739 | 0xC0, // ##
740 | 0x40, // #
741 | 0x70, // ###
742 | 0x48, // # #
743 | 0x48, // # #
744 | 0xE8, // ### #
745 | 0x00, //
746 | 0x00, //
747 |
748 | // @584 'i' (5 pixels wide)
749 | 0x20, // #
750 | 0x00, //
751 | 0x60, // ##
752 | 0x20, // #
753 | 0x20, // #
754 | 0x70, // ###
755 | 0x00, //
756 | 0x00, //
757 |
758 | // @592 'j' (5 pixels wide)
759 | 0x20, // #
760 | 0x00, //
761 | 0x70, // ###
762 | 0x10, // #
763 | 0x10, // #
764 | 0x10, // #
765 | 0x10, // #
766 | 0x70, // ###
767 |
768 | // @600 'k' (5 pixels wide)
769 | 0xC0, // ##
770 | 0x40, // #
771 | 0x58, // # ##
772 | 0x70, // ###
773 | 0x50, // # #
774 | 0xD8, // ## ##
775 | 0x00, //
776 | 0x00, //
777 |
778 | // @608 'l' (5 pixels wide)
779 | 0x60, // ##
780 | 0x20, // #
781 | 0x20, // #
782 | 0x20, // #
783 | 0x20, // #
784 | 0x70, // ###
785 | 0x00, //
786 | 0x00, //
787 |
788 | // @616 'm' (5 pixels wide)
789 | 0x00, //
790 | 0x00, //
791 | 0xD0, // ## #
792 | 0xA8, // # # #
793 | 0xA8, // # # #
794 | 0xA8, // # # #
795 | 0x00, //
796 | 0x00, //
797 |
798 | // @624 'n' (5 pixels wide)
799 | 0x00, //
800 | 0x00, //
801 | 0xF0, // ####
802 | 0x48, // # #
803 | 0x48, // # #
804 | 0xC8, // ## #
805 | 0x00, //
806 | 0x00, //
807 |
808 | // @632 'o' (5 pixels wide)
809 | 0x00, //
810 | 0x00, //
811 | 0x30, // ##
812 | 0x48, // # #
813 | 0x48, // # #
814 | 0x30, // ##
815 | 0x00, //
816 | 0x00, //
817 |
818 | // @640 'p' (5 pixels wide)
819 | 0x00, //
820 | 0x00, //
821 | 0xF0, // ####
822 | 0x48, // # #
823 | 0x48, // # #
824 | 0x70, // ###
825 | 0x40, // #
826 | 0xE0, // ###
827 |
828 | // @648 'q' (5 pixels wide)
829 | 0x00, //
830 | 0x00, //
831 | 0x38, // ###
832 | 0x48, // # #
833 | 0x48, // # #
834 | 0x38, // ###
835 | 0x08, // #
836 | 0x18, // ##
837 |
838 | // @656 'r' (5 pixels wide)
839 | 0x00, //
840 | 0x00, //
841 | 0x78, // ####
842 | 0x20, // #
843 | 0x20, // #
844 | 0x70, // ###
845 | 0x00, //
846 | 0x00, //
847 |
848 | // @664 's' (5 pixels wide)
849 | 0x00, //
850 | 0x00, //
851 | 0x30, // ##
852 | 0x20, // #
853 | 0x10, // #
854 | 0x60, // ##
855 | 0x00, //
856 | 0x00, //
857 |
858 | // @672 't' (5 pixels wide)
859 | 0x00, //
860 | 0x40, // #
861 | 0xF0, // ####
862 | 0x40, // #
863 | 0x48, // # #
864 | 0x30, // ##
865 | 0x00, //
866 | 0x00, //
867 |
868 | // @680 'u' (5 pixels wide)
869 | 0x00, //
870 | 0x00, //
871 | 0xD8, // ## ##
872 | 0x48, // # #
873 | 0x48, // # #
874 | 0x38, // ###
875 | 0x00, //
876 | 0x00, //
877 |
878 | // @688 'v' (5 pixels wide)
879 | 0x00, //
880 | 0x00, //
881 | 0xC8, // ## #
882 | 0x48, // # #
883 | 0x30, // ##
884 | 0x30, // ##
885 | 0x00, //
886 | 0x00, //
887 |
888 | // @696 'w' (5 pixels wide)
889 | 0x00, //
890 | 0x00, //
891 | 0xD8, // ## ##
892 | 0xA8, // # # #
893 | 0xA8, // # # #
894 | 0x50, // # #
895 | 0x00, //
896 | 0x00, //
897 |
898 | // @704 'x' (5 pixels wide)
899 | 0x00, //
900 | 0x00, //
901 | 0x48, // # #
902 | 0x30, // ##
903 | 0x30, // ##
904 | 0x48, // # #
905 | 0x00, //
906 | 0x00, //
907 |
908 | // @712 'y' (5 pixels wide)
909 | 0x00, //
910 | 0x00, //
911 | 0xD8, // ## ##
912 | 0x50, // # #
913 | 0x50, // # #
914 | 0x20, // #
915 | 0x20, // #
916 | 0x60, // ##
917 |
918 | // @720 'z' (5 pixels wide)
919 | 0x00, //
920 | 0x00, //
921 | 0x78, // ####
922 | 0x50, // # #
923 | 0x28, // # #
924 | 0x78, // ####
925 | 0x00, //
926 | 0x00, //
927 |
928 | // @728 '{' (5 pixels wide)
929 | 0x10, // #
930 | 0x20, // #
931 | 0x20, // #
932 | 0x60, // ##
933 | 0x20, // #
934 | 0x20, // #
935 | 0x10, // #
936 | 0x00, //
937 |
938 | // @736 '|' (5 pixels wide)
939 | 0x20, // #
940 | 0x20, // #
941 | 0x20, // #
942 | 0x20, // #
943 | 0x20, // #
944 | 0x20, // #
945 | 0x20, // #
946 | 0x00, //
947 |
948 | // @744 '}' (5 pixels wide)
949 | 0x40, // #
950 | 0x20, // #
951 | 0x20, // #
952 | 0x30, // ##
953 | 0x20, // #
954 | 0x20, // #
955 | 0x40, // #
956 | 0x00, //
957 |
958 | // @752 '~' (5 pixels wide)
959 | 0x00, //
960 | 0x00, //
961 | 0x00, //
962 | 0x28, // # #
963 | 0x50, // # #
964 | 0x00, //
965 | 0x00, //
966 | 0x00, //
967 | }.Select(s => (char)s).ToArray();
968 | }
969 | }
--------------------------------------------------------------------------------
/src/EPaperHatCore/GUI/Fonts/Font12.cs:
--------------------------------------------------------------------------------
1 | using System.Linq;
2 |
3 | namespace EPaperHatCore.GUI.Fonts;
4 | public class Font12 : IFont
5 | {
6 | public uint Width { get; }
7 |
8 | public uint Height { get; }
9 |
10 | public char[] Table { get; }
11 |
12 | public Font12()
13 | {
14 | Width = 7;
15 | Height = 12;
16 | Table = new int[]
17 | {
18 | // @0 ' ' (7 pixels wide)
19 | 0x00, //
20 | 0x00, //
21 | 0x00, //
22 | 0x00, //
23 | 0x00, //
24 | 0x00, //
25 | 0x00, //
26 | 0x00, //
27 | 0x00, //
28 | 0x00, //
29 | 0x00, //
30 | 0x00, //
31 |
32 | // @12 '!' (7 pixels wide)
33 | 0x00, //
34 | 0x10, // #
35 | 0x10, // #
36 | 0x10, // #
37 | 0x10, // #
38 | 0x10, // #
39 | 0x00, //
40 | 0x00, //
41 | 0x10, // #
42 | 0x00, //
43 | 0x00, //
44 | 0x00, //
45 |
46 | // @24 '"' (7 pixels wide)
47 | 0x00, //
48 | 0x6C, // ## ##
49 | 0x48, // # #
50 | 0x48, // # #
51 | 0x00, //
52 | 0x00, //
53 | 0x00, //
54 | 0x00, //
55 | 0x00, //
56 | 0x00, //
57 | 0x00, //
58 | 0x00, //
59 |
60 | // @36 '#' (7 pixels wide)
61 | 0x00, //
62 | 0x14, // # #
63 | 0x14, // # #
64 | 0x28, // # #
65 | 0x7C, // #####
66 | 0x28, // # #
67 | 0x7C, // #####
68 | 0x28, // # #
69 | 0x50, // # #
70 | 0x50, // # #
71 | 0x00, //
72 | 0x00, //
73 |
74 | // @48 '$' (7 pixels wide)
75 | 0x00, //
76 | 0x10, // #
77 | 0x38, // ###
78 | 0x40, // #
79 | 0x40, // #
80 | 0x38, // ###
81 | 0x48, // # #
82 | 0x70, // ###
83 | 0x10, // #
84 | 0x10, // #
85 | 0x00, //
86 | 0x00, //
87 |
88 | // @60 '%' (7 pixels wide)
89 | 0x00, //
90 | 0x20, // #
91 | 0x50, // # #
92 | 0x20, // #
93 | 0x0C, // ##
94 | 0x70, // ###
95 | 0x08, // #
96 | 0x14, // # #
97 | 0x08, // #
98 | 0x00, //
99 | 0x00, //
100 | 0x00, //
101 |
102 | // @72 '&' (7 pixels wide)
103 | 0x00, //
104 | 0x00, //
105 | 0x00, //
106 | 0x18, // ##
107 | 0x20, // #
108 | 0x20, // #
109 | 0x54, // # # #
110 | 0x48, // # #
111 | 0x34, // ## #
112 | 0x00, //
113 | 0x00, //
114 | 0x00, //
115 |
116 | // @84 ''' (7 pixels wide)
117 | 0x00, //
118 | 0x10, // #
119 | 0x10, // #
120 | 0x10, // #
121 | 0x10, // #
122 | 0x00, //
123 | 0x00, //
124 | 0x00, //
125 | 0x00, //
126 | 0x00, //
127 | 0x00, //
128 | 0x00, //
129 |
130 | // @96 '(' (7 pixels wide)
131 | 0x00, //
132 | 0x08, // #
133 | 0x08, // #
134 | 0x10, // #
135 | 0x10, // #
136 | 0x10, // #
137 | 0x10, // #
138 | 0x10, // #
139 | 0x10, // #
140 | 0x08, // #
141 | 0x08, // #
142 | 0x00, //
143 |
144 | // @108 ')' (7 pixels wide)
145 | 0x00, //
146 | 0x20, // #
147 | 0x20, // #
148 | 0x10, // #
149 | 0x10, // #
150 | 0x10, // #
151 | 0x10, // #
152 | 0x10, // #
153 | 0x10, // #
154 | 0x20, // #
155 | 0x20, // #
156 | 0x00, //
157 |
158 | // @120 '*' (7 pixels wide)
159 | 0x00, //
160 | 0x10, // #
161 | 0x7C, // #####
162 | 0x10, // #
163 | 0x28, // # #
164 | 0x28, // # #
165 | 0x00, //
166 | 0x00, //
167 | 0x00, //
168 | 0x00, //
169 | 0x00, //
170 | 0x00, //
171 |
172 | // @132 '+' (7 pixels wide)
173 | 0x00, //
174 | 0x00, //
175 | 0x10, // #
176 | 0x10, // #
177 | 0x10, // #
178 | 0xFE, // #######
179 | 0x10, // #
180 | 0x10, // #
181 | 0x10, // #
182 | 0x00, //
183 | 0x00, //
184 | 0x00, //
185 |
186 | // @144 ',' (7 pixels wide)
187 | 0x00, //
188 | 0x00, //
189 | 0x00, //
190 | 0x00, //
191 | 0x00, //
192 | 0x00, //
193 | 0x00, //
194 | 0x18, // ##
195 | 0x10, // #
196 | 0x30, // ##
197 | 0x20, // #
198 | 0x00, //
199 |
200 | // @156 '-' (7 pixels wide)
201 | 0x00, //
202 | 0x00, //
203 | 0x00, //
204 | 0x00, //
205 | 0x00, //
206 | 0x7C, // #####
207 | 0x00, //
208 | 0x00, //
209 | 0x00, //
210 | 0x00, //
211 | 0x00, //
212 | 0x00, //
213 |
214 | // @168 '.' (7 pixels wide)
215 | 0x00, //
216 | 0x00, //
217 | 0x00, //
218 | 0x00, //
219 | 0x00, //
220 | 0x00, //
221 | 0x00, //
222 | 0x30, // ##
223 | 0x30, // ##
224 | 0x00, //
225 | 0x00, //
226 | 0x00, //
227 |
228 | // @180 '/' (7 pixels wide)
229 | 0x00, //
230 | 0x04, // #
231 | 0x04, // #
232 | 0x08, // #
233 | 0x08, // #
234 | 0x10, // #
235 | 0x10, // #
236 | 0x20, // #
237 | 0x20, // #
238 | 0x40, // #
239 | 0x00, //
240 | 0x00, //
241 |
242 | // @192 '0' (7 pixels wide)
243 | 0x00, //
244 | 0x38, // ###
245 | 0x44, // # #
246 | 0x44, // # #
247 | 0x44, // # #
248 | 0x44, // # #
249 | 0x44, // # #
250 | 0x44, // # #
251 | 0x38, // ###
252 | 0x00, //
253 | 0x00, //
254 | 0x00, //
255 |
256 | // @204 '1' (7 pixels wide)
257 | 0x00, //
258 | 0x30, // ##
259 | 0x10, // #
260 | 0x10, // #
261 | 0x10, // #
262 | 0x10, // #
263 | 0x10, // #
264 | 0x10, // #
265 | 0x7C, // #####
266 | 0x00, //
267 | 0x00, //
268 | 0x00, //
269 |
270 | // @216 '2' (7 pixels wide)
271 | 0x00, //
272 | 0x38, // ###
273 | 0x44, // # #
274 | 0x04, // #
275 | 0x08, // #
276 | 0x10, // #
277 | 0x20, // #
278 | 0x44, // # #
279 | 0x7C, // #####
280 | 0x00, //
281 | 0x00, //
282 | 0x00, //
283 |
284 | // @228 '3' (7 pixels wide)
285 | 0x00, //
286 | 0x38, // ###
287 | 0x44, // # #
288 | 0x04, // #
289 | 0x18, // ##
290 | 0x04, // #
291 | 0x04, // #
292 | 0x44, // # #
293 | 0x38, // ###
294 | 0x00, //
295 | 0x00, //
296 | 0x00, //
297 |
298 | // @240 '4' (7 pixels wide)
299 | 0x00, //
300 | 0x0C, // ##
301 | 0x14, // # #
302 | 0x14, // # #
303 | 0x24, // # #
304 | 0x44, // # #
305 | 0x7E, // ######
306 | 0x04, // #
307 | 0x0E, // ###
308 | 0x00, //
309 | 0x00, //
310 | 0x00, //
311 |
312 | // @252 '5' (7 pixels wide)
313 | 0x00, //
314 | 0x3C, // ####
315 | 0x20, // #
316 | 0x20, // #
317 | 0x38, // ###
318 | 0x04, // #
319 | 0x04, // #
320 | 0x44, // # #
321 | 0x38, // ###
322 | 0x00, //
323 | 0x00, //
324 | 0x00, //
325 |
326 | // @264 '6' (7 pixels wide)
327 | 0x00, //
328 | 0x1C, // ###
329 | 0x20, // #
330 | 0x40, // #
331 | 0x78, // ####
332 | 0x44, // # #
333 | 0x44, // # #
334 | 0x44, // # #
335 | 0x38, // ###
336 | 0x00, //
337 | 0x00, //
338 | 0x00, //
339 |
340 | // @276 '7' (7 pixels wide)
341 | 0x00, //
342 | 0x7C, // #####
343 | 0x44, // # #
344 | 0x04, // #
345 | 0x08, // #
346 | 0x08, // #
347 | 0x08, // #
348 | 0x10, // #
349 | 0x10, // #
350 | 0x00, //
351 | 0x00, //
352 | 0x00, //
353 |
354 | // @288 '8' (7 pixels wide)
355 | 0x00, //
356 | 0x38, // ###
357 | 0x44, // # #
358 | 0x44, // # #
359 | 0x38, // ###
360 | 0x44, // # #
361 | 0x44, // # #
362 | 0x44, // # #
363 | 0x38, // ###
364 | 0x00, //
365 | 0x00, //
366 | 0x00, //
367 |
368 | // @300 '9' (7 pixels wide)
369 | 0x00, //
370 | 0x38, // ###
371 | 0x44, // # #
372 | 0x44, // # #
373 | 0x44, // # #
374 | 0x3C, // ####
375 | 0x04, // #
376 | 0x08, // #
377 | 0x70, // ###
378 | 0x00, //
379 | 0x00, //
380 | 0x00, //
381 |
382 | // @312 ':' (7 pixels wide)
383 | 0x00, //
384 | 0x00, //
385 | 0x00, //
386 | 0x30, // ##
387 | 0x30, // ##
388 | 0x00, //
389 | 0x00, //
390 | 0x30, // ##
391 | 0x30, // ##
392 | 0x00, //
393 | 0x00, //
394 | 0x00, //
395 |
396 | // @324 ';' (7 pixels wide)
397 | 0x00, //
398 | 0x00, //
399 | 0x00, //
400 | 0x18, // ##
401 | 0x18, // ##
402 | 0x00, //
403 | 0x00, //
404 | 0x18, // ##
405 | 0x30, // ##
406 | 0x20, // #
407 | 0x00, //
408 | 0x00, //
409 |
410 | // @336 '<' (7 pixels wide)
411 | 0x00, //
412 | 0x00, //
413 | 0x0C, // ##
414 | 0x10, // #
415 | 0x60, // ##
416 | 0x80, // #
417 | 0x60, // ##
418 | 0x10, // #
419 | 0x0C, // ##
420 | 0x00, //
421 | 0x00, //
422 | 0x00, //
423 |
424 | // @348 '=' (7 pixels wide)
425 | 0x00, //
426 | 0x00, //
427 | 0x00, //
428 | 0x00, //
429 | 0x7C, // #####
430 | 0x00, //
431 | 0x7C, // #####
432 | 0x00, //
433 | 0x00, //
434 | 0x00, //
435 | 0x00, //
436 | 0x00, //
437 |
438 | // @360 '>' (7 pixels wide)
439 | 0x00, //
440 | 0x00, //
441 | 0xC0, // ##
442 | 0x20, // #
443 | 0x18, // ##
444 | 0x04, // #
445 | 0x18, // ##
446 | 0x20, // #
447 | 0xC0, // ##
448 | 0x00, //
449 | 0x00, //
450 | 0x00, //
451 |
452 | // @372 '?' (7 pixels wide)
453 | 0x00, //
454 | 0x00, //
455 | 0x18, // ##
456 | 0x24, // # #
457 | 0x04, // #
458 | 0x08, // #
459 | 0x10, // #
460 | 0x00, //
461 | 0x30, // ##
462 | 0x00, //
463 | 0x00, //
464 | 0x00, //
465 |
466 | // @384 '@' (7 pixels wide)
467 | 0x38, // ###
468 | 0x44, // # #
469 | 0x44, // # #
470 | 0x4C, // # ##
471 | 0x54, // # # #
472 | 0x54, // # # #
473 | 0x4C, // # ##
474 | 0x40, // #
475 | 0x44, // # #
476 | 0x38, // ###
477 | 0x00, //
478 | 0x00, //
479 |
480 | // @396 'A' (7 pixels wide)
481 | 0x00, //
482 | 0x30, // ##
483 | 0x10, // #
484 | 0x28, // # #
485 | 0x28, // # #
486 | 0x28, // # #
487 | 0x7C, // #####
488 | 0x44, // # #
489 | 0xEE, // ### ###
490 | 0x00, //
491 | 0x00, //
492 | 0x00, //
493 |
494 | // @408 'B' (7 pixels wide)
495 | 0x00, //
496 | 0xF8, // #####
497 | 0x44, // # #
498 | 0x44, // # #
499 | 0x78, // ####
500 | 0x44, // # #
501 | 0x44, // # #
502 | 0x44, // # #
503 | 0xF8, // #####
504 | 0x00, //
505 | 0x00, //
506 | 0x00, //
507 |
508 | // @420 'C' (7 pixels wide)
509 | 0x00, //
510 | 0x3C, // ####
511 | 0x44, // # #
512 | 0x40, // #
513 | 0x40, // #
514 | 0x40, // #
515 | 0x40, // #
516 | 0x44, // # #
517 | 0x38, // ###
518 | 0x00, //
519 | 0x00, //
520 | 0x00, //
521 |
522 | // @432 'D' (7 pixels wide)
523 | 0x00, //
524 | 0xF0, // ####
525 | 0x48, // # #
526 | 0x44, // # #
527 | 0x44, // # #
528 | 0x44, // # #
529 | 0x44, // # #
530 | 0x48, // # #
531 | 0xF0, // ####
532 | 0x00, //
533 | 0x00, //
534 | 0x00, //
535 |
536 | // @444 'E' (7 pixels wide)
537 | 0x00, //
538 | 0xFC, // ######
539 | 0x44, // # #
540 | 0x50, // # #
541 | 0x70, // ###
542 | 0x50, // # #
543 | 0x40, // #
544 | 0x44, // # #
545 | 0xFC, // ######
546 | 0x00, //
547 | 0x00, //
548 | 0x00, //
549 |
550 | // @456 'F' (7 pixels wide)
551 | 0x00, //
552 | 0x7E, // ######
553 | 0x22, // # #
554 | 0x28, // # #
555 | 0x38, // ###
556 | 0x28, // # #
557 | 0x20, // #
558 | 0x20, // #
559 | 0x70, // ###
560 | 0x00, //
561 | 0x00, //
562 | 0x00, //
563 |
564 | // @468 'G' (7 pixels wide)
565 | 0x00, //
566 | 0x3C, // ####
567 | 0x44, // # #
568 | 0x40, // #
569 | 0x40, // #
570 | 0x4E, // # ###
571 | 0x44, // # #
572 | 0x44, // # #
573 | 0x38, // ###
574 | 0x00, //
575 | 0x00, //
576 | 0x00, //
577 |
578 | // @480 'H' (7 pixels wide)
579 | 0x00, //
580 | 0xEE, // ### ###
581 | 0x44, // # #
582 | 0x44, // # #
583 | 0x7C, // #####
584 | 0x44, // # #
585 | 0x44, // # #
586 | 0x44, // # #
587 | 0xEE, // ### ###
588 | 0x00, //
589 | 0x00, //
590 | 0x00, //
591 |
592 | // @492 'I' (7 pixels wide)
593 | 0x00, //
594 | 0x7C, // #####
595 | 0x10, // #
596 | 0x10, // #
597 | 0x10, // #
598 | 0x10, // #
599 | 0x10, // #
600 | 0x10, // #
601 | 0x7C, // #####
602 | 0x00, //
603 | 0x00, //
604 | 0x00, //
605 |
606 | // @504 'J' (7 pixels wide)
607 | 0x00, //
608 | 0x3C, // ####
609 | 0x08, // #
610 | 0x08, // #
611 | 0x08, // #
612 | 0x48, // # #
613 | 0x48, // # #
614 | 0x48, // # #
615 | 0x30, // ##
616 | 0x00, //
617 | 0x00, //
618 | 0x00, //
619 |
620 | // @516 'K' (7 pixels wide)
621 | 0x00, //
622 | 0xEE, // ### ###
623 | 0x44, // # #
624 | 0x48, // # #
625 | 0x50, // # #
626 | 0x70, // ###
627 | 0x48, // # #
628 | 0x44, // # #
629 | 0xE6, // ### ##
630 | 0x00, //
631 | 0x00, //
632 | 0x00, //
633 |
634 | // @528 'L' (7 pixels wide)
635 | 0x00, //
636 | 0x70, // ###
637 | 0x20, // #
638 | 0x20, // #
639 | 0x20, // #
640 | 0x20, // #
641 | 0x24, // # #
642 | 0x24, // # #
643 | 0x7C, // #####
644 | 0x00, //
645 | 0x00, //
646 | 0x00, //
647 |
648 | // @540 'M' (7 pixels wide)
649 | 0x00, //
650 | 0xEE, // ### ###
651 | 0x6C, // ## ##
652 | 0x6C, // ## ##
653 | 0x54, // # # #
654 | 0x54, // # # #
655 | 0x44, // # #
656 | 0x44, // # #
657 | 0xEE, // ### ###
658 | 0x00, //
659 | 0x00, //
660 | 0x00, //
661 |
662 | // @552 'N' (7 pixels wide)
663 | 0x00, //
664 | 0xEE, // ### ###
665 | 0x64, // ## #
666 | 0x64, // ## #
667 | 0x54, // # # #
668 | 0x54, // # # #
669 | 0x54, // # # #
670 | 0x4C, // # ##
671 | 0xEC, // ### ##
672 | 0x00, //
673 | 0x00, //
674 | 0x00, //
675 |
676 | // @564 'O' (7 pixels wide)
677 | 0x00, //
678 | 0x38, // ###
679 | 0x44, // # #
680 | 0x44, // # #
681 | 0x44, // # #
682 | 0x44, // # #
683 | 0x44, // # #
684 | 0x44, // # #
685 | 0x38, // ###
686 | 0x00, //
687 | 0x00, //
688 | 0x00, //
689 |
690 | // @576 'P' (7 pixels wide)
691 | 0x00, //
692 | 0x78, // ####
693 | 0x24, // # #
694 | 0x24, // # #
695 | 0x24, // # #
696 | 0x38, // ###
697 | 0x20, // #
698 | 0x20, // #
699 | 0x70, // ###
700 | 0x00, //
701 | 0x00, //
702 | 0x00, //
703 |
704 | // @588 'Q' (7 pixels wide)
705 | 0x00, //
706 | 0x38, // ###
707 | 0x44, // # #
708 | 0x44, // # #
709 | 0x44, // # #
710 | 0x44, // # #
711 | 0x44, // # #
712 | 0x44, // # #
713 | 0x38, // ###
714 | 0x1C, // ###
715 | 0x00, //
716 | 0x00, //
717 |
718 | // @600 'R' (7 pixels wide)
719 | 0x00, //
720 | 0xF8, // #####
721 | 0x44, // # #
722 | 0x44, // # #
723 | 0x44, // # #
724 | 0x78, // ####
725 | 0x48, // # #
726 | 0x44, // # #
727 | 0xE2, // ### #
728 | 0x00, //
729 | 0x00, //
730 | 0x00, //
731 |
732 | // @612 'S' (7 pixels wide)
733 | 0x00, //
734 | 0x34, // ## #
735 | 0x4C, // # ##
736 | 0x40, // #
737 | 0x38, // ###
738 | 0x04, // #
739 | 0x04, // #
740 | 0x64, // ## #
741 | 0x58, // # ##
742 | 0x00, //
743 | 0x00, //
744 | 0x00, //
745 |
746 | // @624 'T' (7 pixels wide)
747 | 0x00, //
748 | 0xFE, // #######
749 | 0x92, // # # #
750 | 0x10, // #
751 | 0x10, // #
752 | 0x10, // #
753 | 0x10, // #
754 | 0x10, // #
755 | 0x38, // ###
756 | 0x00, //
757 | 0x00, //
758 | 0x00, //
759 |
760 | // @636 'U' (7 pixels wide)
761 | 0x00, //
762 | 0xEE, // ### ###
763 | 0x44, // # #
764 | 0x44, // # #
765 | 0x44, // # #
766 | 0x44, // # #
767 | 0x44, // # #
768 | 0x44, // # #
769 | 0x38, // ###
770 | 0x00, //
771 | 0x00, //
772 | 0x00, //
773 |
774 | // @648 'V' (7 pixels wide)
775 | 0x00, //
776 | 0xEE, // ### ###
777 | 0x44, // # #
778 | 0x44, // # #
779 | 0x28, // # #
780 | 0x28, // # #
781 | 0x28, // # #
782 | 0x10, // #
783 | 0x10, // #
784 | 0x00, //
785 | 0x00, //
786 | 0x00, //
787 |
788 | // @660 'W' (7 pixels wide)
789 | 0x00, //
790 | 0xEE, // ### ###
791 | 0x44, // # #
792 | 0x44, // # #
793 | 0x54, // # # #
794 | 0x54, // # # #
795 | 0x54, // # # #
796 | 0x54, // # # #
797 | 0x28, // # #
798 | 0x00, //
799 | 0x00, //
800 | 0x00, //
801 |
802 | // @672 'X' (7 pixels wide)
803 | 0x00, //
804 | 0xC6, // ## ##
805 | 0x44, // # #
806 | 0x28, // # #
807 | 0x10, // #
808 | 0x10, // #
809 | 0x28, // # #
810 | 0x44, // # #
811 | 0xC6, // ## ##
812 | 0x00, //
813 | 0x00, //
814 | 0x00, //
815 |
816 | // @684 'Y' (7 pixels wide)
817 | 0x00, //
818 | 0xEE, // ### ###
819 | 0x44, // # #
820 | 0x28, // # #
821 | 0x28, // # #
822 | 0x10, // #
823 | 0x10, // #
824 | 0x10, // #
825 | 0x38, // ###
826 | 0x00, //
827 | 0x00, //
828 | 0x00, //
829 |
830 | // @696 'Z' (7 pixels wide)
831 | 0x00, //
832 | 0x7C, // #####
833 | 0x44, // # #
834 | 0x08, // #
835 | 0x10, // #
836 | 0x10, // #
837 | 0x20, // #
838 | 0x44, // # #
839 | 0x7C, // #####
840 | 0x00, //
841 | 0x00, //
842 | 0x00, //
843 |
844 | // @708 '[' (7 pixels wide)
845 | 0x00, //
846 | 0x38, // ###
847 | 0x20, // #
848 | 0x20, // #
849 | 0x20, // #
850 | 0x20, // #
851 | 0x20, // #
852 | 0x20, // #
853 | 0x20, // #
854 | 0x20, // #
855 | 0x38, // ###
856 | 0x00, //
857 |
858 | // @720 '\' (7 pixels wide)
859 | 0x00, //
860 | 0x40, // #
861 | 0x20, // #
862 | 0x20, // #
863 | 0x20, // #
864 | 0x10, // #
865 | 0x10, // #
866 | 0x08, // #
867 | 0x08, // #
868 | 0x08, // #
869 | 0x00, //
870 | 0x00, //
871 |
872 | // @732 ']' (7 pixels wide)
873 | 0x00, //
874 | 0x38, // ###
875 | 0x08, // #
876 | 0x08, // #
877 | 0x08, // #
878 | 0x08, // #
879 | 0x08, // #
880 | 0x08, // #
881 | 0x08, // #
882 | 0x08, // #
883 | 0x38, // ###
884 | 0x00, //
885 |
886 | // @744 '^' (7 pixels wide)
887 | 0x00, //
888 | 0x10, // #
889 | 0x10, // #
890 | 0x28, // # #
891 | 0x44, // # #
892 | 0x00, //
893 | 0x00, //
894 | 0x00, //
895 | 0x00, //
896 | 0x00, //
897 | 0x00, //
898 | 0x00, //
899 |
900 | // @756 '_' (7 pixels wide)
901 | 0x00, //
902 | 0x00, //
903 | 0x00, //
904 | 0x00, //
905 | 0x00, //
906 | 0x00, //
907 | 0x00, //
908 | 0x00, //
909 | 0x00, //
910 | 0x00, //
911 | 0x00, //
912 | 0xFE, // #######
913 |
914 | // @768 '`' (7 pixels wide)
915 | 0x00, //
916 | 0x10, // #
917 | 0x08, // #
918 | 0x00, //
919 | 0x00, //
920 | 0x00, //
921 | 0x00, //
922 | 0x00, //
923 | 0x00, //
924 | 0x00, //
925 | 0x00, //
926 | 0x00, //
927 |
928 | // @780 'a' (7 pixels wide)
929 | 0x00, //
930 | 0x00, //
931 | 0x00, //
932 | 0x38, // ###
933 | 0x44, // # #
934 | 0x3C, // ####
935 | 0x44, // # #
936 | 0x44, // # #
937 | 0x3E, // #####
938 | 0x00, //
939 | 0x00, //
940 | 0x00, //
941 |
942 | // @792 'b' (7 pixels wide)
943 | 0x00, //
944 | 0xC0, // ##
945 | 0x40, // #
946 | 0x58, // # ##
947 | 0x64, // ## #
948 | 0x44, // # #
949 | 0x44, // # #
950 | 0x44, // # #
951 | 0xF8, // #####
952 | 0x00, //
953 | 0x00, //
954 | 0x00, //
955 |
956 | // @804 'c' (7 pixels wide)
957 | 0x00, //
958 | 0x00, //
959 | 0x00, //
960 | 0x3C, // ####
961 | 0x44, // # #
962 | 0x40, // #
963 | 0x40, // #
964 | 0x44, // # #
965 | 0x38, // ###
966 | 0x00, //
967 | 0x00, //
968 | 0x00, //
969 |
970 | // @816 'd' (7 pixels wide)
971 | 0x00, //
972 | 0x0C, // ##
973 | 0x04, // #
974 | 0x34, // ## #
975 | 0x4C, // # ##
976 | 0x44, // # #
977 | 0x44, // # #
978 | 0x44, // # #
979 | 0x3E, // #####
980 | 0x00, //
981 | 0x00, //
982 | 0x00, //
983 |
984 | // @828 'e' (7 pixels wide)
985 | 0x00, //
986 | 0x00, //
987 | 0x00, //
988 | 0x38, // ###
989 | 0x44, // # #
990 | 0x7C, // #####
991 | 0x40, // #
992 | 0x40, // #
993 | 0x3C, // ####
994 | 0x00, //
995 | 0x00, //
996 | 0x00, //
997 |
998 | // @840 'f' (7 pixels wide)
999 | 0x00, //
1000 | 0x1C, // ###
1001 | 0x20, // #
1002 | 0x7C, // #####
1003 | 0x20, // #
1004 | 0x20, // #
1005 | 0x20, // #
1006 | 0x20, // #
1007 | 0x7C, // #####
1008 | 0x00, //
1009 | 0x00, //
1010 | 0x00, //
1011 |
1012 | // @852 'g' (7 pixels wide)
1013 | 0x00, //
1014 | 0x00, //
1015 | 0x00, //
1016 | 0x36, // ## ##
1017 | 0x4C, // # ##
1018 | 0x44, // # #
1019 | 0x44, // # #
1020 | 0x44, // # #
1021 | 0x3C, // ####
1022 | 0x04, // #
1023 | 0x38, // ###
1024 | 0x00, //
1025 |
1026 | // @864 'h' (7 pixels wide)
1027 | 0x00, //
1028 | 0xC0, // ##
1029 | 0x40, // #
1030 | 0x58, // # ##
1031 | 0x64, // ## #
1032 | 0x44, // # #
1033 | 0x44, // # #
1034 | 0x44, // # #
1035 | 0xEE, // ### ###
1036 | 0x00, //
1037 | 0x00, //
1038 | 0x00, //
1039 |
1040 | // @876 'i' (7 pixels wide)
1041 | 0x00, //
1042 | 0x10, // #
1043 | 0x00, //
1044 | 0x70, // ###
1045 | 0x10, // #
1046 | 0x10, // #
1047 | 0x10, // #
1048 | 0x10, // #
1049 | 0x7C, // #####
1050 | 0x00, //
1051 | 0x00, //
1052 | 0x00, //
1053 |
1054 | // @888 'j' (7 pixels wide)
1055 | 0x00, //
1056 | 0x10, // #
1057 | 0x00, //
1058 | 0x78, // ####
1059 | 0x08, // #
1060 | 0x08, // #
1061 | 0x08, // #
1062 | 0x08, // #
1063 | 0x08, // #
1064 | 0x08, // #
1065 | 0x70, // ###
1066 | 0x00, //
1067 |
1068 | // @900 'k' (7 pixels wide)
1069 | 0x00, //
1070 | 0xC0, // ##
1071 | 0x40, // #
1072 | 0x5C, // # ###
1073 | 0x48, // # #
1074 | 0x70, // ###
1075 | 0x50, // # #
1076 | 0x48, // # #
1077 | 0xDC, // ## ###
1078 | 0x00, //
1079 | 0x00, //
1080 | 0x00, //
1081 |
1082 | // @912 'l' (7 pixels wide)
1083 | 0x00, //
1084 | 0x30, // ##
1085 | 0x10, // #
1086 | 0x10, // #
1087 | 0x10, // #
1088 | 0x10, // #
1089 | 0x10, // #
1090 | 0x10, // #
1091 | 0x7C, // #####
1092 | 0x00, //
1093 | 0x00, //
1094 | 0x00, //
1095 |
1096 | // @924 'm' (7 pixels wide)
1097 | 0x00, //
1098 | 0x00, //
1099 | 0x00, //
1100 | 0xE8, // ### #
1101 | 0x54, // # # #
1102 | 0x54, // # # #
1103 | 0x54, // # # #
1104 | 0x54, // # # #
1105 | 0xFE, // #######
1106 | 0x00, //
1107 | 0x00, //
1108 | 0x00, //
1109 |
1110 | // @936 'n' (7 pixels wide)
1111 | 0x00, //
1112 | 0x00, //
1113 | 0x00, //
1114 | 0xD8, // ## ##
1115 | 0x64, // ## #
1116 | 0x44, // # #
1117 | 0x44, // # #
1118 | 0x44, // # #
1119 | 0xEE, // ### ###
1120 | 0x00, //
1121 | 0x00, //
1122 | 0x00, //
1123 |
1124 | // @948 'o' (7 pixels wide)
1125 | 0x00, //
1126 | 0x00, //
1127 | 0x00, //
1128 | 0x38, // ###
1129 | 0x44, // # #
1130 | 0x44, // # #
1131 | 0x44, // # #
1132 | 0x44, // # #
1133 | 0x38, // ###
1134 | 0x00, //
1135 | 0x00, //
1136 | 0x00, //
1137 |
1138 | // @960 'p' (7 pixels wide)
1139 | 0x00, //
1140 | 0x00, //
1141 | 0x00, //
1142 | 0xD8, // ## ##
1143 | 0x64, // ## #
1144 | 0x44, // # #
1145 | 0x44, // # #
1146 | 0x44, // # #
1147 | 0x78, // ####
1148 | 0x40, // #
1149 | 0xE0, // ###
1150 | 0x00, //
1151 |
1152 | // @972 'q' (7 pixels wide)
1153 | 0x00, //
1154 | 0x00, //
1155 | 0x00, //
1156 | 0x36, // ## ##
1157 | 0x4C, // # ##
1158 | 0x44, // # #
1159 | 0x44, // # #
1160 | 0x44, // # #
1161 | 0x3C, // ####
1162 | 0x04, // #
1163 | 0x0E, // ###
1164 | 0x00, //
1165 |
1166 | // @984 'r' (7 pixels wide)
1167 | 0x00, //
1168 | 0x00, //
1169 | 0x00, //
1170 | 0x6C, // ## ##
1171 | 0x30, // ##
1172 | 0x20, // #
1173 | 0x20, // #
1174 | 0x20, // #
1175 | 0x7C, // #####
1176 | 0x00, //
1177 | 0x00, //
1178 | 0x00, //
1179 |
1180 | // @996 's' (7 pixels wide)
1181 | 0x00, //
1182 | 0x00, //
1183 | 0x00, //
1184 | 0x3C, // ####
1185 | 0x44, // # #
1186 | 0x38, // ###
1187 | 0x04, // #
1188 | 0x44, // # #
1189 | 0x78, // ####
1190 | 0x00, //
1191 | 0x00, //
1192 | 0x00, //
1193 |
1194 | // @1008 't' (7 pixels wide)
1195 | 0x00, //
1196 | 0x00, //
1197 | 0x20, // #
1198 | 0x7C, // #####
1199 | 0x20, // #
1200 | 0x20, // #
1201 | 0x20, // #
1202 | 0x22, // # #
1203 | 0x1C, // ###
1204 | 0x00, //
1205 | 0x00, //
1206 | 0x00, //
1207 |
1208 | // @1020 'u' (7 pixels wide)
1209 | 0x00, //
1210 | 0x00, //
1211 | 0x00, //
1212 | 0xCC, // ## ##
1213 | 0x44, // # #
1214 | 0x44, // # #
1215 | 0x44, // # #
1216 | 0x4C, // # ##
1217 | 0x36, // ## ##
1218 | 0x00, //
1219 | 0x00, //
1220 | 0x00, //
1221 |
1222 | // @1032 'v' (7 pixels wide)
1223 | 0x00, //
1224 | 0x00, //
1225 | 0x00, //
1226 | 0xEE, // ### ###
1227 | 0x44, // # #
1228 | 0x44, // # #
1229 | 0x28, // # #
1230 | 0x28, // # #
1231 | 0x10, // #
1232 | 0x00, //
1233 | 0x00, //
1234 | 0x00, //
1235 |
1236 | // @1044 'w' (7 pixels wide)
1237 | 0x00, //
1238 | 0x00, //
1239 | 0x00, //
1240 | 0xEE, // ### ###
1241 | 0x44, // # #
1242 | 0x54, // # # #
1243 | 0x54, // # # #
1244 | 0x54, // # # #
1245 | 0x28, // # #
1246 | 0x00, //
1247 | 0x00, //
1248 | 0x00, //
1249 |
1250 | // @1056 'x' (7 pixels wide)
1251 | 0x00, //
1252 | 0x00, //
1253 | 0x00, //
1254 | 0xCC, // ## ##
1255 | 0x48, // # #
1256 | 0x30, // ##
1257 | 0x30, // ##
1258 | 0x48, // # #
1259 | 0xCC, // ## ##
1260 | 0x00, //
1261 | 0x00, //
1262 | 0x00, //
1263 |
1264 | // @1068 'y' (7 pixels wide)
1265 | 0x00, //
1266 | 0x00, //
1267 | 0x00, //
1268 | 0xEE, // ### ###
1269 | 0x44, // # #
1270 | 0x24, // # #
1271 | 0x28, // # #
1272 | 0x18, // ##
1273 | 0x10, // #
1274 | 0x10, // #
1275 | 0x78, // ####
1276 | 0x00, //
1277 |
1278 | // @1080 'z' (7 pixels wide)
1279 | 0x00, //
1280 | 0x00, //
1281 | 0x00, //
1282 | 0x7C, // #####
1283 | 0x48, // # #
1284 | 0x10, // #
1285 | 0x20, // #
1286 | 0x44, // # #
1287 | 0x7C, // #####
1288 | 0x00, //
1289 | 0x00, //
1290 | 0x00, //
1291 |
1292 | // @1092 '{' (7 pixels wide)
1293 | 0x00, //
1294 | 0x08, // #
1295 | 0x10, // #
1296 | 0x10, // #
1297 | 0x10, // #
1298 | 0x10, // #
1299 | 0x20, // #
1300 | 0x10, // #
1301 | 0x10, // #
1302 | 0x10, // #
1303 | 0x08, // #
1304 | 0x00, //
1305 |
1306 | // @1104 '|' (7 pixels wide)
1307 | 0x00, //
1308 | 0x10, // #
1309 | 0x10, // #
1310 | 0x10, // #
1311 | 0x10, // #
1312 | 0x10, // #
1313 | 0x10, // #
1314 | 0x10, // #
1315 | 0x10, // #
1316 | 0x10, // #
1317 | 0x00, //
1318 | 0x00, //
1319 |
1320 | // @1116 '}' (7 pixels wide)
1321 | 0x00, //
1322 | 0x20, // #
1323 | 0x10, // #
1324 | 0x10, // #
1325 | 0x10, // #
1326 | 0x10, // #
1327 | 0x08, // #
1328 | 0x10, // #
1329 | 0x10, // #
1330 | 0x10, // #
1331 | 0x20, // #
1332 | 0x00, //
1333 |
1334 | // @1128 '~' (7 pixels wide)
1335 | 0x00, //
1336 | 0x00, //
1337 | 0x00, //
1338 | 0x00, //
1339 | 0x00, //
1340 | 0x24, // # #
1341 | 0x58, // # ##
1342 | 0x00, //
1343 | 0x00, //
1344 | 0x00, //
1345 | 0x00, //
1346 | 0x00, //
1347 | }.Select(s => (char)s).ToArray();
1348 | }
1349 | }
--------------------------------------------------------------------------------
/src/EPaperHatCore/GUI/Fonts/Font16.cs:
--------------------------------------------------------------------------------
1 | using System.Linq;
2 |
3 | namespace EPaperHatCore.GUI.Fonts;
4 | public class Font16 : IFont
5 | {
6 | public uint Width { get; }
7 |
8 | public uint Height { get; }
9 |
10 | public char[] Table { get; }
11 |
12 | public Font16()
13 | {
14 | Width = 11;
15 | Height = 16;
16 | Table = new int[]
17 | {
18 | // @0 ' ' (11 pixels wide)
19 | 0x00, 0x00, //
20 | 0x00, 0x00, //
21 | 0x00, 0x00, //
22 | 0x00, 0x00, //
23 | 0x00, 0x00, //
24 | 0x00, 0x00, //
25 | 0x00, 0x00, //
26 | 0x00, 0x00, //
27 | 0x00, 0x00, //
28 | 0x00, 0x00, //
29 | 0x00, 0x00, //
30 | 0x00, 0x00, //
31 | 0x00, 0x00, //
32 | 0x00, 0x00, //
33 | 0x00, 0x00, //
34 | 0x00, 0x00, //
35 |
36 | // @32 '!' (11 pixels wide)
37 | 0x00, 0x00, //
38 | 0x0C, 0x00, // ##
39 | 0x0C, 0x00, // ##
40 | 0x0C, 0x00, // ##
41 | 0x0C, 0x00, // ##
42 | 0x0C, 0x00, // ##
43 | 0x0C, 0x00, // ##
44 | 0x0C, 0x00, // ##
45 | 0x0C, 0x00, // ##
46 | 0x00, 0x00, //
47 | 0x0C, 0x00, // ##
48 | 0x00, 0x00, //
49 | 0x00, 0x00, //
50 | 0x00, 0x00, //
51 | 0x00, 0x00, //
52 | 0x00, 0x00, //
53 |
54 | // @64 '"' (11 pixels wide)
55 | 0x00, 0x00, //
56 | 0x00, 0x00, //
57 | 0x1D, 0xC0, // ### ###
58 | 0x1D, 0xC0, // ### ###
59 | 0x08, 0x80, // # #
60 | 0x08, 0x80, // # #
61 | 0x08, 0x80, // # #
62 | 0x00, 0x00, //
63 | 0x00, 0x00, //
64 | 0x00, 0x00, //
65 | 0x00, 0x00, //
66 | 0x00, 0x00, //
67 | 0x00, 0x00, //
68 | 0x00, 0x00, //
69 | 0x00, 0x00, //
70 | 0x00, 0x00, //
71 |
72 | // @96 '#' (11 pixels wide)
73 | 0x00, 0x00, //
74 | 0x0D, 0x80, // ## ##
75 | 0x0D, 0x80, // ## ##
76 | 0x0D, 0x80, // ## ##
77 | 0x0D, 0x80, // ## ##
78 | 0x3F, 0xC0, // ########
79 | 0x1B, 0x00, // ## ##
80 | 0x3F, 0xC0, // ########
81 | 0x1B, 0x00, // ## ##
82 | 0x1B, 0x00, // ## ##
83 | 0x1B, 0x00, // ## ##
84 | 0x1B, 0x00, // ## ##
85 | 0x00, 0x00, //
86 | 0x00, 0x00, //
87 | 0x00, 0x00, //
88 | 0x00, 0x00, //
89 |
90 | // @128 '$' (11 pixels wide)
91 | 0x04, 0x00, // #
92 | 0x1F, 0x80, // ######
93 | 0x31, 0x80, // ## ##
94 | 0x31, 0x80, // ## ##
95 | 0x38, 0x00, // ###
96 | 0x1E, 0x00, // ####
97 | 0x0F, 0x00, // ####
98 | 0x03, 0x80, // ###
99 | 0x31, 0x80, // ## ##
100 | 0x31, 0x80, // ## ##
101 | 0x3F, 0x00, // ######
102 | 0x04, 0x00, // #
103 | 0x04, 0x00, // #
104 | 0x00, 0x00, //
105 | 0x00, 0x00, //
106 | 0x00, 0x00, //
107 |
108 | // @160 '%' (11 pixels wide)
109 | 0x00, 0x00, //
110 | 0x18, 0x00, // ##
111 | 0x24, 0x00, // # #
112 | 0x24, 0x00, // # #
113 | 0x18, 0xC0, // ## ##
114 | 0x07, 0x80, // ####
115 | 0x1E, 0x00, // ####
116 | 0x31, 0x80, // ## ##
117 | 0x02, 0x40, // # #
118 | 0x02, 0x40, // # #
119 | 0x01, 0x80, // ##
120 | 0x00, 0x00, //
121 | 0x00, 0x00, //
122 | 0x00, 0x00, //
123 | 0x00, 0x00, //
124 | 0x00, 0x00, //
125 |
126 | // @192 '&' (11 pixels wide)
127 | 0x00, 0x00, //
128 | 0x00, 0x00, //
129 | 0x0F, 0x00, // ####
130 | 0x18, 0x00, // ##
131 | 0x18, 0x00, // ##
132 | 0x18, 0x00, // ##
133 | 0x0C, 0x00, // ##
134 | 0x1D, 0x80, // ### ##
135 | 0x37, 0x00, // ## ###
136 | 0x33, 0x00, // ## ##
137 | 0x1D, 0x80, // ### ##
138 | 0x00, 0x00, //
139 | 0x00, 0x00, //
140 | 0x00, 0x00, //
141 | 0x00, 0x00, //
142 | 0x00, 0x00, //
143 |
144 | // @224 ''' (11 pixels wide)
145 | 0x00, 0x00, //
146 | 0x00, 0x00, //
147 | 0x07, 0x00, // ###
148 | 0x07, 0x00, // ###
149 | 0x02, 0x00, // #
150 | 0x02, 0x00, // #
151 | 0x02, 0x00, // #
152 | 0x00, 0x00, //
153 | 0x00, 0x00, //
154 | 0x00, 0x00, //
155 | 0x00, 0x00, //
156 | 0x00, 0x00, //
157 | 0x00, 0x00, //
158 | 0x00, 0x00, //
159 | 0x00, 0x00, //
160 | 0x00, 0x00, //
161 |
162 | // @256 '(' (11 pixels wide)
163 | 0x00, 0x00, //
164 | 0x03, 0x00, // ##
165 | 0x03, 0x00, // ##
166 | 0x06, 0x00, // ##
167 | 0x0E, 0x00, // ###
168 | 0x0C, 0x00, // ##
169 | 0x0C, 0x00, // ##
170 | 0x0C, 0x00, // ##
171 | 0x0C, 0x00, // ##
172 | 0x0E, 0x00, // ###
173 | 0x06, 0x00, // ##
174 | 0x03, 0x00, // ##
175 | 0x03, 0x00, // ##
176 | 0x00, 0x00, //
177 | 0x00, 0x00, //
178 | 0x00, 0x00, //
179 |
180 | // @288 ')' (11 pixels wide)
181 | 0x00, 0x00, //
182 | 0x18, 0x00, // ##
183 | 0x18, 0x00, // ##
184 | 0x0C, 0x00, // ##
185 | 0x06, 0x00, // ##
186 | 0x06, 0x00, // ##
187 | 0x06, 0x00, // ##
188 | 0x06, 0x00, // ##
189 | 0x06, 0x00, // ##
190 | 0x06, 0x00, // ##
191 | 0x0C, 0x00, // ##
192 | 0x1C, 0x00, // ###
193 | 0x18, 0x00, // ##
194 | 0x00, 0x00, //
195 | 0x00, 0x00, //
196 | 0x00, 0x00, //
197 |
198 | // @320 '*' (11 pixels wide)
199 | 0x00, 0x00, //
200 | 0x06, 0x00, // ##
201 | 0x06, 0x00, // ##
202 | 0x3F, 0xC0, // ########
203 | 0x3F, 0xC0, // ########
204 | 0x0F, 0x00, // ####
205 | 0x1F, 0x80, // ######
206 | 0x19, 0x80, // ## ##
207 | 0x00, 0x00, //
208 | 0x00, 0x00, //
209 | 0x00, 0x00, //
210 | 0x00, 0x00, //
211 | 0x00, 0x00, //
212 | 0x00, 0x00, //
213 | 0x00, 0x00, //
214 | 0x00, 0x00, //
215 |
216 | // @352 '+' (11 pixels wide)
217 | 0x00, 0x00, //
218 | 0x00, 0x00, //
219 | 0x00, 0x00, //
220 | 0x04, 0x00, // #
221 | 0x04, 0x00, // #
222 | 0x04, 0x00, // #
223 | 0x3F, 0x80, // #######
224 | 0x04, 0x00, // #
225 | 0x04, 0x00, // #
226 | 0x04, 0x00, // #
227 | 0x00, 0x00, //
228 | 0x00, 0x00, //
229 | 0x00, 0x00, //
230 | 0x00, 0x00, //
231 | 0x00, 0x00, //
232 | 0x00, 0x00, //
233 |
234 | // @384 ',' (11 pixels wide)
235 | 0x00, 0x00, //
236 | 0x00, 0x00, //
237 | 0x00, 0x00, //
238 | 0x00, 0x00, //
239 | 0x00, 0x00, //
240 | 0x00, 0x00, //
241 | 0x00, 0x00, //
242 | 0x00, 0x00, //
243 | 0x00, 0x00, //
244 | 0x06, 0x00, // ##
245 | 0x04, 0x00, // #
246 | 0x0C, 0x00, // ##
247 | 0x08, 0x00, // #
248 | 0x08, 0x00, // #
249 | 0x00, 0x00, //
250 | 0x00, 0x00, //
251 |
252 | // @416 '-' (11 pixels wide)
253 | 0x00, 0x00, //
254 | 0x00, 0x00, //
255 | 0x00, 0x00, //
256 | 0x00, 0x00, //
257 | 0x00, 0x00, //
258 | 0x00, 0x00, //
259 | 0x3F, 0x80, // #######
260 | 0x00, 0x00, //
261 | 0x00, 0x00, //
262 | 0x00, 0x00, //
263 | 0x00, 0x00, //
264 | 0x00, 0x00, //
265 | 0x00, 0x00, //
266 | 0x00, 0x00, //
267 | 0x00, 0x00, //
268 | 0x00, 0x00, //
269 |
270 | // @448 '.' (11 pixels wide)
271 | 0x00, 0x00, //
272 | 0x00, 0x00, //
273 | 0x00, 0x00, //
274 | 0x00, 0x00, //
275 | 0x00, 0x00, //
276 | 0x00, 0x00, //
277 | 0x00, 0x00, //
278 | 0x00, 0x00, //
279 | 0x00, 0x00, //
280 | 0x0C, 0x00, // ##
281 | 0x0C, 0x00, // ##
282 | 0x00, 0x00, //
283 | 0x00, 0x00, //
284 | 0x00, 0x00, //
285 | 0x00, 0x00, //
286 | 0x00, 0x00, //
287 |
288 | // @480 '/' (11 pixels wide)
289 | 0x00, 0xC0, // ##
290 | 0x00, 0xC0, // ##
291 | 0x01, 0x80, // ##
292 | 0x01, 0x80, // ##
293 | 0x03, 0x00, // ##
294 | 0x03, 0x00, // ##
295 | 0x06, 0x00, // ##
296 | 0x0C, 0x00, // ##
297 | 0x0C, 0x00, // ##
298 | 0x18, 0x00, // ##
299 | 0x18, 0x00, // ##
300 | 0x30, 0x00, // ##
301 | 0x30, 0x00, // ##
302 | 0x00, 0x00, //
303 | 0x00, 0x00, //
304 | 0x00, 0x00, //
305 |
306 | // @512 '0' (11 pixels wide)
307 | 0x00, 0x00, //
308 | 0x0E, 0x00, // ###
309 | 0x1B, 0x00, // ## ##
310 | 0x31, 0x80, // ## ##
311 | 0x31, 0x80, // ## ##
312 | 0x31, 0x80, // ## ##
313 | 0x31, 0x80, // ## ##
314 | 0x31, 0x80, // ## ##
315 | 0x31, 0x80, // ## ##
316 | 0x1B, 0x00, // ## ##
317 | 0x0E, 0x00, // ###
318 | 0x00, 0x00, //
319 | 0x00, 0x00, //
320 | 0x00, 0x00, //
321 | 0x00, 0x00, //
322 | 0x00, 0x00, //
323 |
324 | // @544 '1' (11 pixels wide)
325 | 0x00, 0x00, //
326 | 0x06, 0x00, // ##
327 | 0x3E, 0x00, // #####
328 | 0x06, 0x00, // ##
329 | 0x06, 0x00, // ##
330 | 0x06, 0x00, // ##
331 | 0x06, 0x00, // ##
332 | 0x06, 0x00, // ##
333 | 0x06, 0x00, // ##
334 | 0x06, 0x00, // ##
335 | 0x3F, 0xC0, // ########
336 | 0x00, 0x00, //
337 | 0x00, 0x00, //
338 | 0x00, 0x00, //
339 | 0x00, 0x00, //
340 | 0x00, 0x00, //
341 |
342 | // @576 '2' (11 pixels wide)
343 | 0x00, 0x00, //
344 | 0x0F, 0x00, // ####
345 | 0x19, 0x80, // ## ##
346 | 0x31, 0x80, // ## ##
347 | 0x31, 0x80, // ## ##
348 | 0x03, 0x00, // ##
349 | 0x06, 0x00, // ##
350 | 0x0C, 0x00, // ##
351 | 0x18, 0x00, // ##
352 | 0x30, 0x00, // ##
353 | 0x3F, 0x80, // #######
354 | 0x00, 0x00, //
355 | 0x00, 0x00, //
356 | 0x00, 0x00, //
357 | 0x00, 0x00, //
358 | 0x00, 0x00, //
359 |
360 | // @608 '3' (11 pixels wide)
361 | 0x00, 0x00, //
362 | 0x3F, 0x00, // ######
363 | 0x61, 0x80, // ## ##
364 | 0x01, 0x80, // ##
365 | 0x03, 0x00, // ##
366 | 0x1F, 0x00, // #####
367 | 0x03, 0x80, // ###
368 | 0x01, 0x80, // ##
369 | 0x01, 0x80, // ##
370 | 0x61, 0x80, // ## ##
371 | 0x3F, 0x00, // ######
372 | 0x00, 0x00, //
373 | 0x00, 0x00, //
374 | 0x00, 0x00, //
375 | 0x00, 0x00, //
376 | 0x00, 0x00, //
377 |
378 | // @640 '4' (11 pixels wide)
379 | 0x00, 0x00, //
380 | 0x07, 0x00, // ###
381 | 0x07, 0x00, // ###
382 | 0x0F, 0x00, // ####
383 | 0x0B, 0x00, // # ##
384 | 0x1B, 0x00, // ## ##
385 | 0x13, 0x00, // # ##
386 | 0x33, 0x00, // ## ##
387 | 0x3F, 0x80, // #######
388 | 0x03, 0x00, // ##
389 | 0x0F, 0x80, // #####
390 | 0x00, 0x00, //
391 | 0x00, 0x00, //
392 | 0x00, 0x00, //
393 | 0x00, 0x00, //
394 | 0x00, 0x00, //
395 |
396 | // @672 '5' (11 pixels wide)
397 | 0x00, 0x00, //
398 | 0x1F, 0x80, // ######
399 | 0x18, 0x00, // ##
400 | 0x18, 0x00, // ##
401 | 0x18, 0x00, // ##
402 | 0x1F, 0x00, // #####
403 | 0x11, 0x80, // # ##
404 | 0x01, 0x80, // ##
405 | 0x01, 0x80, // ##
406 | 0x21, 0x80, // # ##
407 | 0x1F, 0x00, // #####
408 | 0x00, 0x00, //
409 | 0x00, 0x00, //
410 | 0x00, 0x00, //
411 | 0x00, 0x00, //
412 | 0x00, 0x00, //
413 |
414 | // @704 '6' (11 pixels wide)
415 | 0x00, 0x00, //
416 | 0x07, 0x80, // ####
417 | 0x1C, 0x00, // ###
418 | 0x18, 0x00, // ##
419 | 0x30, 0x00, // ##
420 | 0x37, 0x00, // ## ###
421 | 0x39, 0x80, // ### ##
422 | 0x31, 0x80, // ## ##
423 | 0x31, 0x80, // ## ##
424 | 0x19, 0x80, // ## ##
425 | 0x0F, 0x00, // ####
426 | 0x00, 0x00, //
427 | 0x00, 0x00, //
428 | 0x00, 0x00, //
429 | 0x00, 0x00, //
430 | 0x00, 0x00, //
431 |
432 | // @736 '7' (11 pixels wide)
433 | 0x00, 0x00, //
434 | 0x7F, 0x00, // #######
435 | 0x43, 0x00, // # ##
436 | 0x03, 0x00, // ##
437 | 0x06, 0x00, // ##
438 | 0x06, 0x00, // ##
439 | 0x06, 0x00, // ##
440 | 0x06, 0x00, // ##
441 | 0x0C, 0x00, // ##
442 | 0x0C, 0x00, // ##
443 | 0x0C, 0x00, // ##
444 | 0x00, 0x00, //
445 | 0x00, 0x00, //
446 | 0x00, 0x00, //
447 | 0x00, 0x00, //
448 | 0x00, 0x00, //
449 |
450 | // @768 '8' (11 pixels wide)
451 | 0x00, 0x00, //
452 | 0x1F, 0x00, // #####
453 | 0x31, 0x80, // ## ##
454 | 0x31, 0x80, // ## ##
455 | 0x31, 0x80, // ## ##
456 | 0x1F, 0x00, // #####
457 | 0x31, 0x80, // ## ##
458 | 0x31, 0x80, // ## ##
459 | 0x31, 0x80, // ## ##
460 | 0x31, 0x80, // ## ##
461 | 0x1F, 0x00, // #####
462 | 0x00, 0x00, //
463 | 0x00, 0x00, //
464 | 0x00, 0x00, //
465 | 0x00, 0x00, //
466 | 0x00, 0x00, //
467 |
468 | // @800 '9' (11 pixels wide)
469 | 0x00, 0x00, //
470 | 0x1E, 0x00, // ####
471 | 0x33, 0x00, // ## ##
472 | 0x31, 0x80, // ## ##
473 | 0x31, 0x80, // ## ##
474 | 0x33, 0x80, // ## ###
475 | 0x1D, 0x80, // ### ##
476 | 0x01, 0x80, // ##
477 | 0x03, 0x00, // ##
478 | 0x07, 0x00, // ###
479 | 0x3C, 0x00, // ####
480 | 0x00, 0x00, //
481 | 0x00, 0x00, //
482 | 0x00, 0x00, //
483 | 0x00, 0x00, //
484 | 0x00, 0x00, //
485 |
486 | // @832 ':' (11 pixels wide)
487 | 0x00, 0x00, //
488 | 0x00, 0x00, //
489 | 0x00, 0x00, //
490 | 0x00, 0x00, //
491 | 0x0C, 0x00, // ##
492 | 0x0C, 0x00, // ##
493 | 0x00, 0x00, //
494 | 0x00, 0x00, //
495 | 0x00, 0x00, //
496 | 0x0C, 0x00, // ##
497 | 0x0C, 0x00, // ##
498 | 0x00, 0x00, //
499 | 0x00, 0x00, //
500 | 0x00, 0x00, //
501 | 0x00, 0x00, //
502 | 0x00, 0x00, //
503 |
504 | // @864 ';' (11 pixels wide)
505 | 0x00, 0x00, //
506 | 0x00, 0x00, //
507 | 0x00, 0x00, //
508 | 0x00, 0x00, //
509 | 0x03, 0x00, // ##
510 | 0x03, 0x00, // ##
511 | 0x00, 0x00, //
512 | 0x00, 0x00, //
513 | 0x00, 0x00, //
514 | 0x06, 0x00, // ##
515 | 0x04, 0x00, // #
516 | 0x08, 0x00, // #
517 | 0x08, 0x00, // #
518 | 0x00, 0x00, //
519 | 0x00, 0x00, //
520 | 0x00, 0x00, //
521 |
522 | // @896 '<' (11 pixels wide)
523 | 0x00, 0x00, //
524 | 0x00, 0x00, //
525 | 0x00, 0xC0, // ##
526 | 0x03, 0x00, // ##
527 | 0x04, 0x00, // #
528 | 0x18, 0x00, // ##
529 | 0x60, 0x00, // ##
530 | 0x18, 0x00, // ##
531 | 0x04, 0x00, // #
532 | 0x03, 0x00, // ##
533 | 0x00, 0xC0, // ##
534 | 0x00, 0x00, //
535 | 0x00, 0x00, //
536 | 0x00, 0x00, //
537 | 0x00, 0x00, //
538 | 0x00, 0x00, //
539 |
540 | // @928 '=' (11 pixels wide)
541 | 0x00, 0x00, //
542 | 0x00, 0x00, //
543 | 0x00, 0x00, //
544 | 0x00, 0x00, //
545 | 0x00, 0x00, //
546 | 0x7F, 0xC0, // #########
547 | 0x00, 0x00, //
548 | 0x7F, 0xC0, // #########
549 | 0x00, 0x00, //
550 | 0x00, 0x00, //
551 | 0x00, 0x00, //
552 | 0x00, 0x00, //
553 | 0x00, 0x00, //
554 | 0x00, 0x00, //
555 | 0x00, 0x00, //
556 | 0x00, 0x00, //
557 |
558 | // @960 '>' (11 pixels wide)
559 | 0x00, 0x00, //
560 | 0x00, 0x00, //
561 | 0x60, 0x00, // ##
562 | 0x18, 0x00, // ##
563 | 0x04, 0x00, // #
564 | 0x03, 0x00, // ##
565 | 0x00, 0xC0, // ##
566 | 0x03, 0x00, // ##
567 | 0x04, 0x00, // #
568 | 0x18, 0x00, // ##
569 | 0x60, 0x00, // ##
570 | 0x00, 0x00, //
571 | 0x00, 0x00, //
572 | 0x00, 0x00, //
573 | 0x00, 0x00, //
574 | 0x00, 0x00, //
575 |
576 | // @992 '?' (11 pixels wide)
577 | 0x00, 0x00, //
578 | 0x00, 0x00, //
579 | 0x1F, 0x00, // #####
580 | 0x31, 0x80, // ## ##
581 | 0x31, 0x80, // ## ##
582 | 0x01, 0x80, // ##
583 | 0x07, 0x00, // ###
584 | 0x0C, 0x00, // ##
585 | 0x0C, 0x00, // ##
586 | 0x00, 0x00, //
587 | 0x0C, 0x00, // ##
588 | 0x00, 0x00, //
589 | 0x00, 0x00, //
590 | 0x00, 0x00, //
591 | 0x00, 0x00, //
592 | 0x00, 0x00, //
593 |
594 | // @1024 '@' (11 pixels wide)
595 | 0x00, 0x00, //
596 | 0x0E, 0x00, // ###
597 | 0x11, 0x00, // # #
598 | 0x21, 0x00, // # #
599 | 0x21, 0x00, // # #
600 | 0x27, 0x00, // # ###
601 | 0x29, 0x00, // # # #
602 | 0x29, 0x00, // # # #
603 | 0x27, 0x00, // # ###
604 | 0x20, 0x00, // #
605 | 0x11, 0x00, // # #
606 | 0x0E, 0x00, // ###
607 | 0x00, 0x00, //
608 | 0x00, 0x00, //
609 | 0x00, 0x00, //
610 | 0x00, 0x00, //
611 |
612 | // @1056 'A' (11 pixels wide)
613 | 0x00, 0x00, //
614 | 0x00, 0x00, //
615 | 0x3F, 0x00, // ######
616 | 0x0F, 0x00, // ####
617 | 0x09, 0x00, // # #
618 | 0x19, 0x80, // ## ##
619 | 0x19, 0x80, // ## ##
620 | 0x1F, 0x80, // ######
621 | 0x30, 0xC0, // ## ##
622 | 0x30, 0xC0, // ## ##
623 | 0x79, 0xE0, // #### ####
624 | 0x00, 0x00, //
625 | 0x00, 0x00, //
626 | 0x00, 0x00, //
627 | 0x00, 0x00, //
628 | 0x00, 0x00, //
629 |
630 | // @1088 'B' (11 pixels wide)
631 | 0x00, 0x00, //
632 | 0x00, 0x00, //
633 | 0x7F, 0x00, // #######
634 | 0x31, 0x80, // ## ##
635 | 0x31, 0x80, // ## ##
636 | 0x31, 0x80, // ## ##
637 | 0x3F, 0x00, // ######
638 | 0x31, 0x80, // ## ##
639 | 0x31, 0x80, // ## ##
640 | 0x31, 0x80, // ## ##
641 | 0x7F, 0x00, // #######
642 | 0x00, 0x00, //
643 | 0x00, 0x00, //
644 | 0x00, 0x00, //
645 | 0x00, 0x00, //
646 | 0x00, 0x00, //
647 |
648 | // @1120 'C' (11 pixels wide)
649 | 0x00, 0x00, //
650 | 0x00, 0x00, //
651 | 0x1F, 0x40, // ##### #
652 | 0x30, 0xC0, // ## ##
653 | 0x60, 0x40, // ## #
654 | 0x60, 0x00, // ##
655 | 0x60, 0x00, // ##
656 | 0x60, 0x00, // ##
657 | 0x60, 0x40, // ## #
658 | 0x30, 0x80, // ## #
659 | 0x1F, 0x00, // #####
660 | 0x00, 0x00, //
661 | 0x00, 0x00, //
662 | 0x00, 0x00, //
663 | 0x00, 0x00, //
664 | 0x00, 0x00, //
665 |
666 | // @1152 'D' (11 pixels wide)
667 | 0x00, 0x00, //
668 | 0x00, 0x00, //
669 | 0x7F, 0x00, // #######
670 | 0x31, 0x80, // ## ##
671 | 0x30, 0xC0, // ## ##
672 | 0x30, 0xC0, // ## ##
673 | 0x30, 0xC0, // ## ##
674 | 0x30, 0xC0, // ## ##
675 | 0x30, 0xC0, // ## ##
676 | 0x31, 0x80, // ## ##
677 | 0x7F, 0x00, // #######
678 | 0x00, 0x00, //
679 | 0x00, 0x00, //
680 | 0x00, 0x00, //
681 | 0x00, 0x00, //
682 | 0x00, 0x00, //
683 |
684 | // @1184 'E' (11 pixels wide)
685 | 0x00, 0x00, //
686 | 0x00, 0x00, //
687 | 0x7F, 0x80, // ########
688 | 0x30, 0x80, // ## #
689 | 0x30, 0x80, // ## #
690 | 0x32, 0x00, // ## #
691 | 0x3E, 0x00, // #####
692 | 0x32, 0x00, // ## #
693 | 0x30, 0x80, // ## #
694 | 0x30, 0x80, // ## #
695 | 0x7F, 0x80, // ########
696 | 0x00, 0x00, //
697 | 0x00, 0x00, //
698 | 0x00, 0x00, //
699 | 0x00, 0x00, //
700 | 0x00, 0x00, //
701 |
702 | // @1216 'F' (11 pixels wide)
703 | 0x00, 0x00, //
704 | 0x00, 0x00, //
705 | 0x7F, 0xC0, // #########
706 | 0x30, 0x40, // ## #
707 | 0x30, 0x40, // ## #
708 | 0x32, 0x00, // ## #
709 | 0x3E, 0x00, // #####
710 | 0x32, 0x00, // ## #
711 | 0x30, 0x00, // ##
712 | 0x30, 0x00, // ##
713 | 0x7C, 0x00, // #####
714 | 0x00, 0x00, //
715 | 0x00, 0x00, //
716 | 0x00, 0x00, //
717 | 0x00, 0x00, //
718 | 0x00, 0x00, //
719 |
720 | // @1248 'G' (11 pixels wide)
721 | 0x00, 0x00, //
722 | 0x00, 0x00, //
723 | 0x1E, 0x80, // #### #
724 | 0x31, 0x80, // ## ##
725 | 0x60, 0x80, // ## #
726 | 0x60, 0x00, // ##
727 | 0x60, 0x00, // ##
728 | 0x67, 0xC0, // ## #####
729 | 0x61, 0x80, // ## ##
730 | 0x31, 0x80, // ## ##
731 | 0x1F, 0x00, // #####
732 | 0x00, 0x00, //
733 | 0x00, 0x00, //
734 | 0x00, 0x00, //
735 | 0x00, 0x00, //
736 | 0x00, 0x00, //
737 |
738 | // @1280 'H' (11 pixels wide)
739 | 0x00, 0x00, //
740 | 0x00, 0x00, //
741 | 0x7B, 0xC0, // #### ####
742 | 0x31, 0x80, // ## ##
743 | 0x31, 0x80, // ## ##
744 | 0x31, 0x80, // ## ##
745 | 0x3F, 0x80, // #######
746 | 0x31, 0x80, // ## ##
747 | 0x31, 0x80, // ## ##
748 | 0x31, 0x80, // ## ##
749 | 0x7B, 0xC0, // #### ####
750 | 0x00, 0x00, //
751 | 0x00, 0x00, //
752 | 0x00, 0x00, //
753 | 0x00, 0x00, //
754 | 0x00, 0x00, //
755 |
756 | // @1312 'I' (11 pixels wide)
757 | 0x00, 0x00, //
758 | 0x00, 0x00, //
759 | 0x3F, 0xC0, // ########
760 | 0x06, 0x00, // ##
761 | 0x06, 0x00, // ##
762 | 0x06, 0x00, // ##
763 | 0x06, 0x00, // ##
764 | 0x06, 0x00, // ##
765 | 0x06, 0x00, // ##
766 | 0x06, 0x00, // ##
767 | 0x3F, 0xC0, // ########
768 | 0x00, 0x00, //
769 | 0x00, 0x00, //
770 | 0x00, 0x00, //
771 | 0x00, 0x00, //
772 | 0x00, 0x00, //
773 |
774 | // @1344 'J' (11 pixels wide)
775 | 0x00, 0x00, //
776 | 0x00, 0x00, //
777 | 0x1F, 0xC0, // #######
778 | 0x03, 0x00, // ##
779 | 0x03, 0x00, // ##
780 | 0x03, 0x00, // ##
781 | 0x03, 0x00, // ##
782 | 0x63, 0x00, // ## ##
783 | 0x63, 0x00, // ## ##
784 | 0x63, 0x00, // ## ##
785 | 0x3E, 0x00, // #####
786 | 0x00, 0x00, //
787 | 0x00, 0x00, //
788 | 0x00, 0x00, //
789 | 0x00, 0x00, //
790 | 0x00, 0x00, //
791 |
792 | // @1376 'K' (11 pixels wide)
793 | 0x00, 0x00, //
794 | 0x00, 0x00, //
795 | 0x7B, 0xC0, // #### ####
796 | 0x31, 0x80, // ## ##
797 | 0x33, 0x00, // ## ##
798 | 0x36, 0x00, // ## ##
799 | 0x3C, 0x00, // ####
800 | 0x3E, 0x00, // #####
801 | 0x33, 0x00, // ## ##
802 | 0x31, 0x80, // ## ##
803 | 0x79, 0xC0, // #### ###
804 | 0x00, 0x00, //
805 | 0x00, 0x00, //
806 | 0x00, 0x00, //
807 | 0x00, 0x00, //
808 | 0x00, 0x00, //
809 |
810 | // @1408 'L' (11 pixels wide)
811 | 0x00, 0x00, //
812 | 0x00, 0x00, //
813 | 0x7E, 0x00, // ######
814 | 0x18, 0x00, // ##
815 | 0x18, 0x00, // ##
816 | 0x18, 0x00, // ##
817 | 0x18, 0x00, // ##
818 | 0x18, 0x40, // ## #
819 | 0x18, 0x40, // ## #
820 | 0x18, 0x40, // ## #
821 | 0x7F, 0xC0, // #########
822 | 0x00, 0x00, //
823 | 0x00, 0x00, //
824 | 0x00, 0x00, //
825 | 0x00, 0x00, //
826 | 0x00, 0x00, //
827 |
828 | // @1440 'M' (11 pixels wide)
829 | 0x00, 0x00, //
830 | 0x00, 0x00, //
831 | 0xE0, 0xE0, // ### ###
832 | 0x60, 0xC0, // ## ##
833 | 0x71, 0xC0, // ### ###
834 | 0x7B, 0xC0, // #### ####
835 | 0x6A, 0xC0, // ## # # ##
836 | 0x6E, 0xC0, // ## ### ##
837 | 0x64, 0xC0, // ## # ##
838 | 0x60, 0xC0, // ## ##
839 | 0xFB, 0xE0, // ##### #####
840 | 0x00, 0x00, //
841 | 0x00, 0x00, //
842 | 0x00, 0x00, //
843 | 0x00, 0x00, //
844 | 0x00, 0x00, //
845 |
846 | // @1472 'N' (11 pixels wide)
847 | 0x00, 0x00, //
848 | 0x00, 0x00, //
849 | 0x73, 0xC0, // ### ####
850 | 0x31, 0x80, // ## ##
851 | 0x39, 0x80, // ### ##
852 | 0x3D, 0x80, // #### ##
853 | 0x35, 0x80, // ## # ##
854 | 0x37, 0x80, // ## ####
855 | 0x33, 0x80, // ## ###
856 | 0x31, 0x80, // ## ##
857 | 0x79, 0x80, // #### ##
858 | 0x00, 0x00, //
859 | 0x00, 0x00, //
860 | 0x00, 0x00, //
861 | 0x00, 0x00, //
862 | 0x00, 0x00, //
863 |
864 | // @1504 'O' (11 pixels wide)
865 | 0x00, 0x00, //
866 | 0x00, 0x00, //
867 | 0x1F, 0x00, // #####
868 | 0x31, 0x80, // ## ##
869 | 0x60, 0xC0, // ## ##
870 | 0x60, 0xC0, // ## ##
871 | 0x60, 0xC0, // ## ##
872 | 0x60, 0xC0, // ## ##
873 | 0x60, 0xC0, // ## ##
874 | 0x31, 0x80, // ## ##
875 | 0x1F, 0x00, // #####
876 | 0x00, 0x00, //
877 | 0x00, 0x00, //
878 | 0x00, 0x00, //
879 | 0x00, 0x00, //
880 | 0x00, 0x00, //
881 |
882 | // @1536 'P' (11 pixels wide)
883 | 0x00, 0x00, //
884 | 0x00, 0x00, //
885 | 0x7F, 0x00, // #######
886 | 0x31, 0x80, // ## ##
887 | 0x31, 0x80, // ## ##
888 | 0x31, 0x80, // ## ##
889 | 0x31, 0x80, // ## ##
890 | 0x3F, 0x00, // ######
891 | 0x30, 0x00, // ##
892 | 0x30, 0x00, // ##
893 | 0x7E, 0x00, // ######
894 | 0x00, 0x00, //
895 | 0x00, 0x00, //
896 | 0x00, 0x00, //
897 | 0x00, 0x00, //
898 | 0x00, 0x00, //
899 |
900 | // @1568 'Q' (11 pixels wide)
901 | 0x00, 0x00, //
902 | 0x00, 0x00, //
903 | 0x1F, 0x00, // #####
904 | 0x31, 0x80, // ## ##
905 | 0x60, 0xC0, // ## ##
906 | 0x60, 0xC0, // ## ##
907 | 0x60, 0xC0, // ## ##
908 | 0x60, 0xC0, // ## ##
909 | 0x60, 0xC0, // ## ##
910 | 0x31, 0x80, // ## ##
911 | 0x1F, 0x00, // #####
912 | 0x0C, 0xC0, // ## ##
913 | 0x1F, 0x80, // ######
914 | 0x00, 0x00, //
915 | 0x00, 0x00, //
916 | 0x00, 0x00, //
917 |
918 | // @1600 'R' (11 pixels wide)
919 | 0x00, 0x00, //
920 | 0x00, 0x00, //
921 | 0x7F, 0x00, // #######
922 | 0x31, 0x80, // ## ##
923 | 0x31, 0x80, // ## ##
924 | 0x31, 0x80, // ## ##
925 | 0x3E, 0x00, // #####
926 | 0x33, 0x00, // ## ##
927 | 0x31, 0x80, // ## ##
928 | 0x31, 0x80, // ## ##
929 | 0x7C, 0xE0, // ##### ###
930 | 0x00, 0x00, //
931 | 0x00, 0x00, //
932 | 0x00, 0x00, //
933 | 0x00, 0x00, //
934 | 0x00, 0x00, //
935 |
936 | // @1632 'S' (11 pixels wide)
937 | 0x00, 0x00, //
938 | 0x00, 0x00, //
939 | 0x1F, 0x80, // ######
940 | 0x31, 0x80, // ## ##
941 | 0x31, 0x80, // ## ##
942 | 0x38, 0x00, // ###
943 | 0x1F, 0x00, // #####
944 | 0x03, 0x80, // ###
945 | 0x31, 0x80, // ## ##
946 | 0x31, 0x80, // ## ##
947 | 0x3F, 0x00, // ######
948 | 0x00, 0x00, //
949 | 0x00, 0x00, //
950 | 0x00, 0x00, //
951 | 0x00, 0x00, //
952 | 0x00, 0x00, //
953 |
954 | // @1664 'T' (11 pixels wide)
955 | 0x00, 0x00, //
956 | 0x00, 0x00, //
957 | 0x7F, 0x80, // ########
958 | 0x4C, 0x80, // # ## #
959 | 0x4C, 0x80, // # ## #
960 | 0x4C, 0x80, // # ## #
961 | 0x0C, 0x00, // ##
962 | 0x0C, 0x00, // ##
963 | 0x0C, 0x00, // ##
964 | 0x0C, 0x00, // ##
965 | 0x3F, 0x00, // ######
966 | 0x00, 0x00, //
967 | 0x00, 0x00, //
968 | 0x00, 0x00, //
969 | 0x00, 0x00, //
970 | 0x00, 0x00, //
971 |
972 | // @1696 'U' (11 pixels wide)
973 | 0x00, 0x00, //
974 | 0x00, 0x00, //
975 | 0x7B, 0xC0, // #### ####
976 | 0x31, 0x80, // ## ##
977 | 0x31, 0x80, // ## ##
978 | 0x31, 0x80, // ## ##
979 | 0x31, 0x80, // ## ##
980 | 0x31, 0x80, // ## ##
981 | 0x31, 0x80, // ## ##
982 | 0x31, 0x80, // ## ##
983 | 0x1F, 0x00, // #####
984 | 0x00, 0x00, //
985 | 0x00, 0x00, //
986 | 0x00, 0x00, //
987 | 0x00, 0x00, //
988 | 0x00, 0x00, //
989 |
990 | // @1728 'V' (11 pixels wide)
991 | 0x00, 0x00, //
992 | 0x00, 0x00, //
993 | 0x7B, 0xC0, // #### ####
994 | 0x31, 0x80, // ## ##
995 | 0x31, 0x80, // ## ##
996 | 0x1B, 0x00, // ## ##
997 | 0x1B, 0x00, // ## ##
998 | 0x1B, 0x00, // ## ##
999 | 0x0A, 0x00, // # #
1000 | 0x0E, 0x00, // ###
1001 | 0x0E, 0x00, // ###
1002 | 0x00, 0x00, //
1003 | 0x00, 0x00, //
1004 | 0x00, 0x00, //
1005 | 0x00, 0x00, //
1006 | 0x00, 0x00, //
1007 |
1008 | // @1760 'W' (11 pixels wide)
1009 | 0x00, 0x00, //
1010 | 0x00, 0x00, //
1011 | 0xFB, 0xE0, // ##### #####
1012 | 0x60, 0xC0, // ## ##
1013 | 0x64, 0xC0, // ## # ##
1014 | 0x6E, 0xC0, // ## ### ##
1015 | 0x6E, 0xC0, // ## ### ##
1016 | 0x2A, 0x80, // # # # #
1017 | 0x3B, 0x80, // ### ###
1018 | 0x3B, 0x80, // ### ###
1019 | 0x31, 0x80, // ## ##
1020 | 0x00, 0x00, //
1021 | 0x00, 0x00, //
1022 | 0x00, 0x00, //
1023 | 0x00, 0x00, //
1024 | 0x00, 0x00, //
1025 |
1026 | // @1792 'X' (11 pixels wide)
1027 | 0x00, 0x00, //
1028 | 0x00, 0x00, //
1029 | 0x7B, 0xC0, // #### ####
1030 | 0x31, 0x80, // ## ##
1031 | 0x1B, 0x00, // ## ##
1032 | 0x0E, 0x00, // ###
1033 | 0x0E, 0x00, // ###
1034 | 0x0E, 0x00, // ###
1035 | 0x1B, 0x00, // ## ##
1036 | 0x31, 0x80, // ## ##
1037 | 0x7B, 0xC0, // #### ####
1038 | 0x00, 0x00, //
1039 | 0x00, 0x00, //
1040 | 0x00, 0x00, //
1041 | 0x00, 0x00, //
1042 | 0x00, 0x00, //
1043 |
1044 | // @1824 'Y' (11 pixels wide)
1045 | 0x00, 0x00, //
1046 | 0x00, 0x00, //
1047 | 0x79, 0xE0, // #### ####
1048 | 0x30, 0xC0, // ## ##
1049 | 0x19, 0x80, // ## ##
1050 | 0x0F, 0x00, // ####
1051 | 0x06, 0x00, // ##
1052 | 0x06, 0x00, // ##
1053 | 0x06, 0x00, // ##
1054 | 0x06, 0x00, // ##
1055 | 0x1F, 0x80, // ######
1056 | 0x00, 0x00, //
1057 | 0x00, 0x00, //
1058 | 0x00, 0x00, //
1059 | 0x00, 0x00, //
1060 | 0x00, 0x00, //
1061 |
1062 | // @1856 'Z' (11 pixels wide)
1063 | 0x00, 0x00, //
1064 | 0x00, 0x00, //
1065 | 0x3F, 0x80, // #######
1066 | 0x21, 0x80, // # ##
1067 | 0x23, 0x00, // # ##
1068 | 0x06, 0x00, // ##
1069 | 0x04, 0x00, // #
1070 | 0x0C, 0x00, // ##
1071 | 0x18, 0x80, // ## #
1072 | 0x30, 0x80, // ## #
1073 | 0x3F, 0x80, // #######
1074 | 0x00, 0x00, //
1075 | 0x00, 0x00, //
1076 | 0x00, 0x00, //
1077 | 0x00, 0x00, //
1078 | 0x00, 0x00, //
1079 |
1080 | // @1888 '[' (11 pixels wide)
1081 | 0x00, 0x00, //
1082 | 0x07, 0x80, // ####
1083 | 0x06, 0x00, // ##
1084 | 0x06, 0x00, // ##
1085 | 0x06, 0x00, // ##
1086 | 0x06, 0x00, // ##
1087 | 0x06, 0x00, // ##
1088 | 0x06, 0x00, // ##
1089 | 0x06, 0x00, // ##
1090 | 0x06, 0x00, // ##
1091 | 0x06, 0x00, // ##
1092 | 0x06, 0x00, // ##
1093 | 0x07, 0x80, // ####
1094 | 0x00, 0x00, //
1095 | 0x00, 0x00, //
1096 | 0x00, 0x00, //
1097 |
1098 | // @1920 '\' (11 pixels wide)
1099 | 0x30, 0x00, // ##
1100 | 0x30, 0x00, // ##
1101 | 0x18, 0x00, // ##
1102 | 0x18, 0x00, // ##
1103 | 0x0C, 0x00, // ##
1104 | 0x0C, 0x00, // ##
1105 | 0x06, 0x00, // ##
1106 | 0x03, 0x00, // ##
1107 | 0x03, 0x00, // ##
1108 | 0x01, 0x80, // ##
1109 | 0x01, 0x80, // ##
1110 | 0x00, 0xC0, // ##
1111 | 0x00, 0xC0, // ##
1112 | 0x00, 0x00, //
1113 | 0x00, 0x00, //
1114 | 0x00, 0x00, //
1115 |
1116 | // @1952 ']' (11 pixels wide)
1117 | 0x00, 0x00, //
1118 | 0x1E, 0x00, // ####
1119 | 0x06, 0x00, // ##
1120 | 0x06, 0x00, // ##
1121 | 0x06, 0x00, // ##
1122 | 0x06, 0x00, // ##
1123 | 0x06, 0x00, // ##
1124 | 0x06, 0x00, // ##
1125 | 0x06, 0x00, // ##
1126 | 0x06, 0x00, // ##
1127 | 0x06, 0x00, // ##
1128 | 0x06, 0x00, // ##
1129 | 0x1E, 0x00, // ####
1130 | 0x00, 0x00, //
1131 | 0x00, 0x00, //
1132 | 0x00, 0x00, //
1133 |
1134 | // @1984 '^' (11 pixels wide)
1135 | 0x04, 0x00, // #
1136 | 0x0A, 0x00, // # #
1137 | 0x0A, 0x00, // # #
1138 | 0x11, 0x00, // # #
1139 | 0x20, 0x80, // # #
1140 | 0x20, 0x80, // # #
1141 | 0x00, 0x00, //
1142 | 0x00, 0x00, //
1143 | 0x00, 0x00, //
1144 | 0x00, 0x00, //
1145 | 0x00, 0x00, //
1146 | 0x00, 0x00, //
1147 | 0x00, 0x00, //
1148 | 0x00, 0x00, //
1149 | 0x00, 0x00, //
1150 | 0x00, 0x00, //
1151 |
1152 | // @2016 '_' (11 pixels wide)
1153 | 0x00, 0x00, //
1154 | 0x00, 0x00, //
1155 | 0x00, 0x00, //
1156 | 0x00, 0x00, //
1157 | 0x00, 0x00, //
1158 | 0x00, 0x00, //
1159 | 0x00, 0x00, //
1160 | 0x00, 0x00, //
1161 | 0x00, 0x00, //
1162 | 0x00, 0x00, //
1163 | 0x00, 0x00, //
1164 | 0x00, 0x00, //
1165 | 0x00, 0x00, //
1166 | 0x00, 0x00, //
1167 | 0x00, 0x00, //
1168 | 0xFF, 0xE0, // ###########
1169 |
1170 | // @2048 '`' (11 pixels wide)
1171 | 0x08, 0x00, // #
1172 | 0x04, 0x00, // #
1173 | 0x02, 0x00, // #
1174 | 0x00, 0x00, //
1175 | 0x00, 0x00, //
1176 | 0x00, 0x00, //
1177 | 0x00, 0x00, //
1178 | 0x00, 0x00, //
1179 | 0x00, 0x00, //
1180 | 0x00, 0x00, //
1181 | 0x00, 0x00, //
1182 | 0x00, 0x00, //
1183 | 0x00, 0x00, //
1184 | 0x00, 0x00, //
1185 | 0x00, 0x00, //
1186 | 0x00, 0x00, //
1187 |
1188 | // @2080 'a' (11 pixels wide)
1189 | 0x00, 0x00, //
1190 | 0x00, 0x00, //
1191 | 0x00, 0x00, //
1192 | 0x00, 0x00, //
1193 | 0x1F, 0x00, // #####
1194 | 0x01, 0x80, // ##
1195 | 0x01, 0x80, // ##
1196 | 0x1F, 0x80, // ######
1197 | 0x31, 0x80, // ## ##
1198 | 0x33, 0x80, // ## ###
1199 | 0x1D, 0xC0, // ### ###
1200 | 0x00, 0x00, //
1201 | 0x00, 0x00, //
1202 | 0x00, 0x00, //
1203 | 0x00, 0x00, //
1204 | 0x00, 0x00, //
1205 |
1206 | // @2112 'b' (11 pixels wide)
1207 | 0x00, 0x00, //
1208 | 0x70, 0x00, // ###
1209 | 0x30, 0x00, // ##
1210 | 0x30, 0x00, // ##
1211 | 0x37, 0x00, // ## ###
1212 | 0x39, 0x80, // ### ##
1213 | 0x30, 0xC0, // ## ##
1214 | 0x30, 0xC0, // ## ##
1215 | 0x30, 0xC0, // ## ##
1216 | 0x39, 0x80, // ### ##
1217 | 0x77, 0x00, // ### ###
1218 | 0x00, 0x00, //
1219 | 0x00, 0x00, //
1220 | 0x00, 0x00, //
1221 | 0x00, 0x00, //
1222 | 0x00, 0x00, //
1223 |
1224 | // @2144 'c' (11 pixels wide)
1225 | 0x00, 0x00, //
1226 | 0x00, 0x00, //
1227 | 0x00, 0x00, //
1228 | 0x00, 0x00, //
1229 | 0x1E, 0x80, // #### #
1230 | 0x31, 0x80, // ## ##
1231 | 0x60, 0x80, // ## #
1232 | 0x60, 0x00, // ##
1233 | 0x60, 0x80, // ## #
1234 | 0x31, 0x80, // ## ##
1235 | 0x1F, 0x00, // #####
1236 | 0x00, 0x00, //
1237 | 0x00, 0x00, //
1238 | 0x00, 0x00, //
1239 | 0x00, 0x00, //
1240 | 0x00, 0x00, //
1241 |
1242 | // @2176 'd' (11 pixels wide)
1243 | 0x00, 0x00, //
1244 | 0x03, 0x80, // ###
1245 | 0x01, 0x80, // ##
1246 | 0x01, 0x80, // ##
1247 | 0x1D, 0x80, // ### ##
1248 | 0x33, 0x80, // ## ###
1249 | 0x61, 0x80, // ## ##
1250 | 0x61, 0x80, // ## ##
1251 | 0x61, 0x80, // ## ##
1252 | 0x33, 0x80, // ## ###
1253 | 0x1D, 0xC0, // ### ###
1254 | 0x00, 0x00, //
1255 | 0x00, 0x00, //
1256 | 0x00, 0x00, //
1257 | 0x00, 0x00, //
1258 | 0x00, 0x00, //
1259 |
1260 | // @2208 'e' (11 pixels wide)
1261 | 0x00, 0x00, //
1262 | 0x00, 0x00, //
1263 | 0x00, 0x00, //
1264 | 0x00, 0x00, //
1265 | 0x1F, 0x00, // #####
1266 | 0x31, 0x80, // ## ##
1267 | 0x60, 0xC0, // ## ##
1268 | 0x7F, 0xC0, // #########
1269 | 0x60, 0x00, // ##
1270 | 0x30, 0xC0, // ## ##
1271 | 0x1F, 0x80, // ######
1272 | 0x00, 0x00, //
1273 | 0x00, 0x00, //
1274 | 0x00, 0x00, //
1275 | 0x00, 0x00, //
1276 | 0x00, 0x00, //
1277 |
1278 | // @2240 'f' (11 pixels wide)
1279 | 0x00, 0x00, //
1280 | 0x07, 0xE0, // ######
1281 | 0x0C, 0x00, // ##
1282 | 0x0C, 0x00, // ##
1283 | 0x3F, 0x80, // #######
1284 | 0x0C, 0x00, // ##
1285 | 0x0C, 0x00, // ##
1286 | 0x0C, 0x00, // ##
1287 | 0x0C, 0x00, // ##
1288 | 0x0C, 0x00, // ##
1289 | 0x3F, 0x80, // #######
1290 | 0x00, 0x00, //
1291 | 0x00, 0x00, //
1292 | 0x00, 0x00, //
1293 | 0x00, 0x00, //
1294 | 0x00, 0x00, //
1295 |
1296 | // @2272 'g' (11 pixels wide)
1297 | 0x00, 0x00, //
1298 | 0x00, 0x00, //
1299 | 0x00, 0x00, //
1300 | 0x00, 0x00, //
1301 | 0x1D, 0xC0, // ### ###
1302 | 0x33, 0x80, // ## ###
1303 | 0x61, 0x80, // ## ##
1304 | 0x61, 0x80, // ## ##
1305 | 0x61, 0x80, // ## ##
1306 | 0x33, 0x80, // ## ###
1307 | 0x1D, 0x80, // ### ##
1308 | 0x01, 0x80, // ##
1309 | 0x01, 0x80, // ##
1310 | 0x1F, 0x00, // #####
1311 | 0x00, 0x00, //
1312 | 0x00, 0x00, //
1313 |
1314 | // @2304 'h' (11 pixels wide)
1315 | 0x00, 0x00, //
1316 | 0x70, 0x00, // ###
1317 | 0x30, 0x00, // ##
1318 | 0x30, 0x00, // ##
1319 | 0x37, 0x00, // ## ###
1320 | 0x39, 0x80, // ### ##
1321 | 0x31, 0x80, // ## ##
1322 | 0x31, 0x80, // ## ##
1323 | 0x31, 0x80, // ## ##
1324 | 0x31, 0x80, // ## ##
1325 | 0x7B, 0xC0, // #### ####
1326 | 0x00, 0x00, //
1327 | 0x00, 0x00, //
1328 | 0x00, 0x00, //
1329 | 0x00, 0x00, //
1330 | 0x00, 0x00, //
1331 |
1332 | // @2336 'i' (11 pixels wide)
1333 | 0x00, 0x00, //
1334 | 0x06, 0x00, // ##
1335 | 0x06, 0x00, // ##
1336 | 0x00, 0x00, //
1337 | 0x1E, 0x00, // ####
1338 | 0x06, 0x00, // ##
1339 | 0x06, 0x00, // ##
1340 | 0x06, 0x00, // ##
1341 | 0x06, 0x00, // ##
1342 | 0x06, 0x00, // ##
1343 | 0x3F, 0xC0, // ########
1344 | 0x00, 0x00, //
1345 | 0x00, 0x00, //
1346 | 0x00, 0x00, //
1347 | 0x00, 0x00, //
1348 | 0x00, 0x00, //
1349 |
1350 | // @2368 'j' (11 pixels wide)
1351 | 0x00, 0x00, //
1352 | 0x06, 0x00, // ##
1353 | 0x06, 0x00, // ##
1354 | 0x00, 0x00, //
1355 | 0x3F, 0x00, // ######
1356 | 0x03, 0x00, // ##
1357 | 0x03, 0x00, // ##
1358 | 0x03, 0x00, // ##
1359 | 0x03, 0x00, // ##
1360 | 0x03, 0x00, // ##
1361 | 0x03, 0x00, // ##
1362 | 0x03, 0x00, // ##
1363 | 0x03, 0x00, // ##
1364 | 0x3E, 0x00, // #####
1365 | 0x00, 0x00, //
1366 | 0x00, 0x00, //
1367 |
1368 | // @2400 'k' (11 pixels wide)
1369 | 0x00, 0x00, //
1370 | 0x70, 0x00, // ###
1371 | 0x30, 0x00, // ##
1372 | 0x30, 0x00, // ##
1373 | 0x37, 0x80, // ## ####
1374 | 0x36, 0x00, // ## ##
1375 | 0x3C, 0x00, // ####
1376 | 0x3C, 0x00, // ####
1377 | 0x36, 0x00, // ## ##
1378 | 0x33, 0x00, // ## ##
1379 | 0x77, 0xC0, // ### #####
1380 | 0x00, 0x00, //
1381 | 0x00, 0x00, //
1382 | 0x00, 0x00, //
1383 | 0x00, 0x00, //
1384 | 0x00, 0x00, //
1385 |
1386 | // @2432 'l' (11 pixels wide)
1387 | 0x00, 0x00, //
1388 | 0x1E, 0x00, // ####
1389 | 0x06, 0x00, // ##
1390 | 0x06, 0x00, // ##
1391 | 0x06, 0x00, // ##
1392 | 0x06, 0x00, // ##
1393 | 0x06, 0x00, // ##
1394 | 0x06, 0x00, // ##
1395 | 0x06, 0x00, // ##
1396 | 0x06, 0x00, // ##
1397 | 0x3F, 0xC0, // ########
1398 | 0x00, 0x00, //
1399 | 0x00, 0x00, //
1400 | 0x00, 0x00, //
1401 | 0x00, 0x00, //
1402 | 0x00, 0x00, //
1403 |
1404 | // @2464 'm' (11 pixels wide)
1405 | 0x00, 0x00, //
1406 | 0x00, 0x00, //
1407 | 0x00, 0x00, //
1408 | 0x00, 0x00, //
1409 | 0x7F, 0x80, // ########
1410 | 0x36, 0xC0, // ## ## ##
1411 | 0x36, 0xC0, // ## ## ##
1412 | 0x36, 0xC0, // ## ## ##
1413 | 0x36, 0xC0, // ## ## ##
1414 | 0x36, 0xC0, // ## ## ##
1415 | 0x76, 0xE0, // ### ## ###
1416 | 0x00, 0x00, //
1417 | 0x00, 0x00, //
1418 | 0x00, 0x00, //
1419 | 0x00, 0x00, //
1420 | 0x00, 0x00, //
1421 |
1422 | // @2496 'n' (11 pixels wide)
1423 | 0x00, 0x00, //
1424 | 0x00, 0x00, //
1425 | 0x00, 0x00, //
1426 | 0x00, 0x00, //
1427 | 0x77, 0x00, // ### ###
1428 | 0x39, 0x80, // ### ##
1429 | 0x31, 0x80, // ## ##
1430 | 0x31, 0x80, // ## ##
1431 | 0x31, 0x80, // ## ##
1432 | 0x31, 0x80, // ## ##
1433 | 0x7B, 0xC0, // #### ####
1434 | 0x00, 0x00, //
1435 | 0x00, 0x00, //
1436 | 0x00, 0x00, //
1437 | 0x00, 0x00, //
1438 | 0x00, 0x00, //
1439 |
1440 | // @2528 'o' (11 pixels wide)
1441 | 0x00, 0x00, //
1442 | 0x00, 0x00, //
1443 | 0x00, 0x00, //
1444 | 0x00, 0x00, //
1445 | 0x1F, 0x00, // #####
1446 | 0x31, 0x80, // ## ##
1447 | 0x60, 0xC0, // ## ##
1448 | 0x60, 0xC0, // ## ##
1449 | 0x60, 0xC0, // ## ##
1450 | 0x31, 0x80, // ## ##
1451 | 0x1F, 0x00, // #####
1452 | 0x00, 0x00, //
1453 | 0x00, 0x00, //
1454 | 0x00, 0x00, //
1455 | 0x00, 0x00, //
1456 | 0x00, 0x00, //
1457 |
1458 | // @2560 'p' (11 pixels wide)
1459 | 0x00, 0x00, //
1460 | 0x00, 0x00, //
1461 | 0x00, 0x00, //
1462 | 0x00, 0x00, //
1463 | 0x77, 0x00, // ### ###
1464 | 0x39, 0x80, // ### ##
1465 | 0x30, 0xC0, // ## ##
1466 | 0x30, 0xC0, // ## ##
1467 | 0x30, 0xC0, // ## ##
1468 | 0x39, 0x80, // ### ##
1469 | 0x37, 0x00, // ## ###
1470 | 0x30, 0x00, // ##
1471 | 0x30, 0x00, // ##
1472 | 0x7C, 0x00, // #####
1473 | 0x00, 0x00, //
1474 | 0x00, 0x00, //
1475 |
1476 | // @2592 'q' (11 pixels wide)
1477 | 0x00, 0x00, //
1478 | 0x00, 0x00, //
1479 | 0x00, 0x00, //
1480 | 0x00, 0x00, //
1481 | 0x1D, 0xC0, // ### ###
1482 | 0x33, 0x80, // ## ###
1483 | 0x61, 0x80, // ## ##
1484 | 0x61, 0x80, // ## ##
1485 | 0x61, 0x80, // ## ##
1486 | 0x33, 0x80, // ## ###
1487 | 0x1D, 0x80, // ### ##
1488 | 0x01, 0x80, // ##
1489 | 0x01, 0x80, // ##
1490 | 0x07, 0xC0, // #####
1491 | 0x00, 0x00, //
1492 | 0x00, 0x00, //
1493 |
1494 | // @2624 'r' (11 pixels wide)
1495 | 0x00, 0x00, //
1496 | 0x00, 0x00, //
1497 | 0x00, 0x00, //
1498 | 0x00, 0x00, //
1499 | 0x7B, 0x80, // #### ###
1500 | 0x1C, 0xC0, // ### ##
1501 | 0x18, 0x00, // ##
1502 | 0x18, 0x00, // ##
1503 | 0x18, 0x00, // ##
1504 | 0x18, 0x00, // ##
1505 | 0x7F, 0x00, // #######
1506 | 0x00, 0x00, //
1507 | 0x00, 0x00, //
1508 | 0x00, 0x00, //
1509 | 0x00, 0x00, //
1510 | 0x00, 0x00, //
1511 |
1512 | // @2656 's' (11 pixels wide)
1513 | 0x00, 0x00, //
1514 | 0x00, 0x00, //
1515 | 0x00, 0x00, //
1516 | 0x00, 0x00, //
1517 | 0x1F, 0x80, // ######
1518 | 0x31, 0x80, // ## ##
1519 | 0x3C, 0x00, // ####
1520 | 0x1F, 0x00, // #####
1521 | 0x03, 0x80, // ###
1522 | 0x31, 0x80, // ## ##
1523 | 0x3F, 0x00, // ######
1524 | 0x00, 0x00, //
1525 | 0x00, 0x00, //
1526 | 0x00, 0x00, //
1527 | 0x00, 0x00, //
1528 | 0x00, 0x00, //
1529 |
1530 | // @2688 't' (11 pixels wide)
1531 | 0x00, 0x00, //
1532 | 0x18, 0x00, // ##
1533 | 0x18, 0x00, // ##
1534 | 0x18, 0x00, // ##
1535 | 0x7F, 0x00, // #######
1536 | 0x18, 0x00, // ##
1537 | 0x18, 0x00, // ##
1538 | 0x18, 0x00, // ##
1539 | 0x18, 0x00, // ##
1540 | 0x18, 0x80, // ## #
1541 | 0x0F, 0x00, // ####
1542 | 0x00, 0x00, //
1543 | 0x00, 0x00, //
1544 | 0x00, 0x00, //
1545 | 0x00, 0x00, //
1546 | 0x00, 0x00, //
1547 |
1548 | // @2720 'u' (11 pixels wide)
1549 | 0x00, 0x00, //
1550 | 0x00, 0x00, //
1551 | 0x00, 0x00, //
1552 | 0x00, 0x00, //
1553 | 0x73, 0x80, // ### ###
1554 | 0x31, 0x80, // ## ##
1555 | 0x31, 0x80, // ## ##
1556 | 0x31, 0x80, // ## ##
1557 | 0x31, 0x80, // ## ##
1558 | 0x33, 0x80, // ## ###
1559 | 0x1D, 0xC0, // ### ###
1560 | 0x00, 0x00, //
1561 | 0x00, 0x00, //
1562 | 0x00, 0x00, //
1563 | 0x00, 0x00, //
1564 | 0x00, 0x00, //
1565 |
1566 | // @2752 'v' (11 pixels wide)
1567 | 0x00, 0x00, //
1568 | 0x00, 0x00, //
1569 | 0x00, 0x00, //
1570 | 0x00, 0x00, //
1571 | 0x7B, 0xC0, // #### ####
1572 | 0x31, 0x80, // ## ##
1573 | 0x31, 0x80, // ## ##
1574 | 0x1B, 0x00, // ## ##
1575 | 0x1B, 0x00, // ## ##
1576 | 0x0E, 0x00, // ###
1577 | 0x0E, 0x00, // ###
1578 | 0x00, 0x00, //
1579 | 0x00, 0x00, //
1580 | 0x00, 0x00, //
1581 | 0x00, 0x00, //
1582 | 0x00, 0x00, //
1583 |
1584 | // @2784 'w' (11 pixels wide)
1585 | 0x00, 0x00, //
1586 | 0x00, 0x00, //
1587 | 0x00, 0x00, //
1588 | 0x00, 0x00, //
1589 | 0xF1, 0xE0, // #### ####
1590 | 0x60, 0xC0, // ## ##
1591 | 0x64, 0xC0, // ## # ##
1592 | 0x6E, 0xC0, // ## ### ##
1593 | 0x3B, 0x80, // ### ###
1594 | 0x3B, 0x80, // ### ###
1595 | 0x31, 0x80, // ## ##
1596 | 0x00, 0x00, //
1597 | 0x00, 0x00, //
1598 | 0x00, 0x00, //
1599 | 0x00, 0x00, //
1600 | 0x00, 0x00, //
1601 |
1602 | // @2816 'x' (11 pixels wide)
1603 | 0x00, 0x00, //
1604 | 0x00, 0x00, //
1605 | 0x00, 0x00, //
1606 | 0x00, 0x00, //
1607 | 0x7B, 0xC0, // #### ####
1608 | 0x1B, 0x00, // ## ##
1609 | 0x0E, 0x00, // ###
1610 | 0x0E, 0x00, // ###
1611 | 0x0E, 0x00, // ###
1612 | 0x1B, 0x00, // ## ##
1613 | 0x7B, 0xC0, // #### ####
1614 | 0x00, 0x00, //
1615 | 0x00, 0x00, //
1616 | 0x00, 0x00, //
1617 | 0x00, 0x00, //
1618 | 0x00, 0x00, //
1619 |
1620 | // @2848 'y' (11 pixels wide)
1621 | 0x00, 0x00, //
1622 | 0x00, 0x00, //
1623 | 0x00, 0x00, //
1624 | 0x00, 0x00, //
1625 | 0x79, 0xE0, // #### ####
1626 | 0x30, 0xC0, // ## ##
1627 | 0x19, 0x80, // ## ##
1628 | 0x19, 0x80, // ## ##
1629 | 0x0B, 0x00, // # ##
1630 | 0x0F, 0x00, // ####
1631 | 0x06, 0x00, // ##
1632 | 0x06, 0x00, // ##
1633 | 0x0C, 0x00, // ##
1634 | 0x3E, 0x00, // #####
1635 | 0x00, 0x00, //
1636 | 0x00, 0x00, //
1637 |
1638 | // @2880 'z' (11 pixels wide)
1639 | 0x00, 0x00, //
1640 | 0x00, 0x00, //
1641 | 0x00, 0x00, //
1642 | 0x00, 0x00, //
1643 | 0x3F, 0x80, // #######
1644 | 0x21, 0x80, // # ##
1645 | 0x03, 0x00, // ##
1646 | 0x0E, 0x00, // ###
1647 | 0x18, 0x00, // ##
1648 | 0x30, 0x80, // ## #
1649 | 0x3F, 0x80, // #######
1650 | 0x00, 0x00, //
1651 | 0x00, 0x00, //
1652 | 0x00, 0x00, //
1653 | 0x00, 0x00, //
1654 | 0x00, 0x00, //
1655 |
1656 | // @2912 '{' (11 pixels wide)
1657 | 0x00, 0x00, //
1658 | 0x06, 0x00, // ##
1659 | 0x0C, 0x00, // ##
1660 | 0x0C, 0x00, // ##
1661 | 0x0C, 0x00, // ##
1662 | 0x0C, 0x00, // ##
1663 | 0x0C, 0x00, // ##
1664 | 0x18, 0x00, // ##
1665 | 0x0C, 0x00, // ##
1666 | 0x0C, 0x00, // ##
1667 | 0x0C, 0x00, // ##
1668 | 0x0C, 0x00, // ##
1669 | 0x06, 0x00, // ##
1670 | 0x00, 0x00, //
1671 | 0x00, 0x00, //
1672 | 0x00, 0x00, //
1673 |
1674 | // @2944 '|' (11 pixels wide)
1675 | 0x00, 0x00, //
1676 | 0x06, 0x00, // ##
1677 | 0x06, 0x00, // ##
1678 | 0x06, 0x00, // ##
1679 | 0x06, 0x00, // ##
1680 | 0x06, 0x00, // ##
1681 | 0x06, 0x00, // ##
1682 | 0x06, 0x00, // ##
1683 | 0x06, 0x00, // ##
1684 | 0x06, 0x00, // ##
1685 | 0x06, 0x00, // ##
1686 | 0x06, 0x00, // ##
1687 | 0x06, 0x00, // ##
1688 | 0x00, 0x00, //
1689 | 0x00, 0x00, //
1690 | 0x00, 0x00, //
1691 |
1692 | // @2976 '}' (11 pixels wide)
1693 | 0x00, 0x00, //
1694 | 0x0C, 0x00, // ##
1695 | 0x06, 0x00, // ##
1696 | 0x06, 0x00, // ##
1697 | 0x06, 0x00, // ##
1698 | 0x06, 0x00, // ##
1699 | 0x06, 0x00, // ##
1700 | 0x03, 0x00, // ##
1701 | 0x06, 0x00, // ##
1702 | 0x06, 0x00, // ##
1703 | 0x06, 0x00, // ##
1704 | 0x06, 0x00, // ##
1705 | 0x0C, 0x00, // ##
1706 | 0x00, 0x00, //
1707 | 0x00, 0x00, //
1708 | 0x00, 0x00, //
1709 |
1710 | // @3008 '~' (11 pixels wide)
1711 | 0x00, 0x00, //
1712 | 0x00, 0x00, //
1713 | 0x00, 0x00, //
1714 | 0x00, 0x00, //
1715 | 0x00, 0x00, //
1716 | 0x18, 0x00, // ##
1717 | 0x24, 0x80, // # # #
1718 | 0x03, 0x00, // ##
1719 | 0x00, 0x00, //
1720 | 0x00, 0x00, //
1721 | 0x00, 0x00, //
1722 | 0x00, 0x00, //
1723 | 0x00, 0x00, //
1724 | 0x00, 0x00, //
1725 | 0x00, 0x00, //
1726 | 0x00, 0x00, //
1727 | }.Select(s => (char)s).ToArray();
1728 | }
1729 | }
--------------------------------------------------------------------------------