Skip to content

Commit 43b79c3

Browse files
[SSD1306] Added additional fonts (#744)
Co-authored-by: Laurent Ellerbach <[email protected]>
1 parent 15de2ec commit 43b79c3

33 files changed

+2526
-49
lines changed

Diff for: devices/Ssd13xx/Additionnal_Fonts/README.md

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# SSD1306 sample fonts
2+
3+
Here are sample fonts generated by Bitmap2Font from bitmaps available [here](http://www.orangetide.com/fonts/DOS/).
4+
5+
Each font is constituted by a C# class which needs to be added to your project. You can add them to the sample project and see how the behavior is changing.
6+
7+
Each font is associated with a bitmap to display its complete character set. The bitmap has been added to this repository for convenience.
8+
9+
| Font name | Bitmaps |
10+
|---|---|
11+
|mykefont8x9|![mykefont8x9](mykefont8x9.cs.bmp)|
12+
|Retro8x16|![Retro8x16](Retro8x16.cs.bmp)|
13+
|Sinclair8x8|![Sinclair8x8](Sinclair8x8.cs.bmp)|
14+
|Thick8x8|![Thick8x8](Thick8x8.cs.bmp)|
15+
|Thin8x8|![Thin8x8](Thin8x8.cs.bmp)|
16+
|Westminster8x8|![Westminster8x8](Westminster8x8.cs.bmp)|
17+
|lbitalic16|![lbitalic16](lbitalic16.cs.bmp)|

Diff for: devices/Ssd13xx/Additionnal_Fonts/Retro8x16.cs

+137
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
// File Automatically Generated by Bitmap2Font
4+
5+
using System;
6+
7+
namespace Iot.Device.Ssd13xx
8+
{
9+
/// <summary>
10+
/// Retro8x16 font.
11+
/// </summary>
12+
public class Retro8x16 : IFont
13+
{
14+
private static readonly byte[][] _fontTable =
15+
{
16+
new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
17+
new byte[] { 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00 },
18+
new byte[] { 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
19+
new byte[] { 0x24, 0x24, 0x24, 0x24, 0x7E, 0x7E, 0x24, 0x24, 0x7E, 0x7E, 0x24, 0x24, 0x24, 0x24, 0x00, 0x00 },
20+
new byte[] { 0x08, 0x08, 0x3C, 0x3C, 0x0A, 0x0A, 0x1C, 0x1C, 0x28, 0x28, 0x1E, 0x1E, 0x08, 0x08, 0x00, 0x00 },
21+
new byte[] { 0x00, 0x00, 0x46, 0x46, 0x26, 0x26, 0x10, 0x10, 0x08, 0x08, 0x64, 0x64, 0x62, 0x62, 0x00, 0x00 },
22+
new byte[] { 0x0C, 0x0C, 0x12, 0x12, 0x12, 0x12, 0x0C, 0x0C, 0x52, 0x52, 0x22, 0x22, 0x5C, 0x5C, 0x00, 0x00 },
23+
new byte[] { 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
24+
new byte[] { 0x08, 0x08, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x00, 0x00 },
25+
new byte[] { 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x08, 0x08, 0x00, 0x00 },
26+
new byte[] { 0x08, 0x08, 0x2A, 0x2A, 0x1C, 0x1C, 0x08, 0x08, 0x1C, 0x1C, 0x2A, 0x2A, 0x08, 0x08, 0x00, 0x00 },
27+
new byte[] { 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x3E, 0x3E, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00 },
28+
new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x00, 0x00 },
29+
new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
30+
new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00 },
31+
new byte[] { 0x00, 0x00, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x02, 0x02, 0x00, 0x00 },
32+
new byte[] { 0x3C, 0x3C, 0x42, 0x42, 0x62, 0x62, 0x5A, 0x5A, 0x46, 0x46, 0x42, 0x42, 0x3C, 0x3C, 0x00, 0x00 },
33+
new byte[] { 0x10, 0x10, 0x18, 0x18, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x38, 0x38, 0x00, 0x00 },
34+
new byte[] { 0x3C, 0x3C, 0x42, 0x42, 0x40, 0x40, 0x38, 0x38, 0x04, 0x04, 0x02, 0x02, 0x7E, 0x7E, 0x00, 0x00 },
35+
new byte[] { 0x7E, 0x7E, 0x40, 0x40, 0x20, 0x20, 0x38, 0x38, 0x40, 0x40, 0x42, 0x42, 0x3C, 0x3C, 0x00, 0x00 },
36+
new byte[] { 0x20, 0x20, 0x30, 0x30, 0x28, 0x28, 0x24, 0x24, 0x7E, 0x7E, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00 },
37+
new byte[] { 0x7E, 0x7E, 0x02, 0x02, 0x3E, 0x3E, 0x40, 0x40, 0x40, 0x40, 0x42, 0x42, 0x3C, 0x3C, 0x00, 0x00 },
38+
new byte[] { 0x78, 0x78, 0x04, 0x04, 0x02, 0x02, 0x3E, 0x3E, 0x42, 0x42, 0x42, 0x42, 0x3C, 0x3C, 0x00, 0x00 },
39+
new byte[] { 0x7E, 0x7E, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00 },
40+
new byte[] { 0x3C, 0x3C, 0x42, 0x42, 0x42, 0x42, 0x3C, 0x3C, 0x42, 0x42, 0x42, 0x42, 0x3C, 0x3C, 0x00, 0x00 },
41+
new byte[] { 0x3C, 0x3C, 0x42, 0x42, 0x42, 0x42, 0x7C, 0x7C, 0x40, 0x40, 0x20, 0x20, 0x1E, 0x1E, 0x00, 0x00 },
42+
new byte[] { 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
43+
new byte[] { 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x08, 0x00, 0x00, 0x00 },
44+
new byte[] { 0x20, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x00, 0x00 },
45+
new byte[] { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x7E, 0x00, 0x00, 0x7E, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
46+
new byte[] { 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x00, 0x00 },
47+
new byte[] { 0x04, 0x04, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
48+
new byte[] { 0x3C, 0x3C, 0x42, 0x42, 0x52, 0x52, 0x6A, 0x6A, 0x32, 0x32, 0x02, 0x02, 0x7C, 0x7C, 0x00, 0x00 },
49+
new byte[] { 0x18, 0x18, 0x24, 0x24, 0x42, 0x42, 0x42, 0x42, 0x7E, 0x7E, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00 },
50+
new byte[] { 0x3E, 0x3E, 0x42, 0x42, 0x42, 0x42, 0x3E, 0x3E, 0x42, 0x42, 0x42, 0x42, 0x3E, 0x3E, 0x00, 0x00 },
51+
new byte[] { 0x3C, 0x3C, 0x42, 0x42, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x42, 0x42, 0x3C, 0x3C, 0x00, 0x00 },
52+
new byte[] { 0x3E, 0x3E, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3E, 0x3E, 0x00, 0x00 },
53+
new byte[] { 0x7E, 0x7E, 0x02, 0x02, 0x02, 0x02, 0x3E, 0x3E, 0x02, 0x02, 0x02, 0x02, 0x7E, 0x7E, 0x00, 0x00 },
54+
new byte[] { 0x7E, 0x7E, 0x02, 0x02, 0x02, 0x02, 0x3E, 0x3E, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00 },
55+
new byte[] { 0x7C, 0x7C, 0x02, 0x02, 0x02, 0x02, 0x02, 0x72, 0x72, 0x42, 0x42, 0x42, 0x7C, 0x7C, 0x00, 0x00 },
56+
new byte[] { 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x7E, 0x7E, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00 },
57+
new byte[] { 0x1C, 0x1C, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x1C, 0x1C, 0x00, 0x00 },
58+
new byte[] { 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x42, 0x42, 0x3C, 0x3C, 0x00, 0x00 },
59+
new byte[] { 0x42, 0x42, 0x22, 0x22, 0x12, 0x12, 0x0E, 0x0E, 0x12, 0x12, 0x22, 0x22, 0x42, 0x42, 0x00, 0x00 },
60+
new byte[] { 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x7E, 0x7E, 0x00, 0x00 },
61+
new byte[] { 0x42, 0x42, 0x66, 0x66, 0x5A, 0x5A, 0x5A, 0x5A, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00 },
62+
new byte[] { 0x42, 0x42, 0x46, 0x46, 0x4A, 0x4A, 0x5A, 0x5A, 0x52, 0x52, 0x62, 0x62, 0x42, 0x42, 0x00, 0x00 },
63+
new byte[] { 0x3C, 0x3C, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3C, 0x3C, 0x00, 0x00 },
64+
new byte[] { 0x3E, 0x3E, 0x42, 0x42, 0x42, 0x42, 0x3E, 0x3E, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00 },
65+
new byte[] { 0x3C, 0x3C, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x52, 0x52, 0x22, 0x22, 0x5C, 0x5C, 0x00, 0x00 },
66+
new byte[] { 0x3E, 0x3E, 0x42, 0x42, 0x42, 0x42, 0x3E, 0x3E, 0x12, 0x12, 0x22, 0x22, 0x42, 0x42, 0x00, 0x00 },
67+
new byte[] { 0x3C, 0x3C, 0x42, 0x42, 0x02, 0x02, 0x3C, 0x3C, 0x40, 0x40, 0x42, 0x42, 0x3C, 0x3C, 0x00, 0x00 },
68+
new byte[] { 0x3E, 0x3E, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00 },
69+
new byte[] { 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3C, 0x3C, 0x00, 0x00 },
70+
new byte[] { 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x24, 0x24, 0x18, 0x18, 0x00, 0x00 },
71+
new byte[] { 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x5A, 0x5A, 0x5A, 0x5A, 0x66, 0x66, 0x42, 0x42, 0x00, 0x00 },
72+
new byte[] { 0x42, 0x42, 0x42, 0x42, 0x24, 0x24, 0x18, 0x18, 0x24, 0x24, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00 },
73+
new byte[] { 0x22, 0x22, 0x22, 0x22, 0x14, 0x14, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00 },
74+
new byte[] { 0x7E, 0x7E, 0x40, 0x40, 0x20, 0x20, 0x18, 0x18, 0x04, 0x04, 0x02, 0x02, 0x7E, 0x7E, 0x00, 0x00 },
75+
new byte[] { 0x7E, 0x7E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x7E, 0x7E, 0x00, 0x00 },
76+
new byte[] { 0x00, 0x00, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x00, 0x00 },
77+
new byte[] { 0x7E, 0x7E, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7E, 0x7E, 0x00, 0x00 },
78+
new byte[] { 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x14, 0x14, 0x22, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
79+
new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x7E, 0x00, 0x00 },
80+
new byte[] { 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
81+
new byte[] { 0x00, 0x00, 0x00, 0x00, 0x3C, 0x3C, 0x40, 0x40, 0x7C, 0x7C, 0x42, 0x42, 0x7C, 0x7C, 0x00, 0x00 },
82+
new byte[] { 0x02, 0x02, 0x02, 0x02, 0x3E, 0x3E, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3E, 0x3E, 0x00, 0x00 },
83+
new byte[] { 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7C, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x7C, 0x7C, 0x00, 0x00 },
84+
new byte[] { 0x40, 0x40, 0x40, 0x40, 0x7C, 0x7C, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x7C, 0x7C, 0x00, 0x00 },
85+
new byte[] { 0x00, 0x00, 0x00, 0x00, 0x3C, 0x3C, 0x42, 0x42, 0x7E, 0x7E, 0x02, 0x02, 0x7C, 0x7C, 0x00, 0x00 },
86+
new byte[] { 0x38, 0x38, 0x44, 0x44, 0x04, 0x04, 0x3E, 0x3E, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00 },
87+
new byte[] { 0x00, 0x00, 0x00, 0x00, 0x3C, 0x3C, 0x42, 0x42, 0x42, 0x42, 0x7C, 0x7C, 0x40, 0x40, 0x3C, 0x3C },
88+
new byte[] { 0x02, 0x02, 0x02, 0x02, 0x3E, 0x3E, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00 },
89+
new byte[] { 0x08, 0x08, 0x00, 0x00, 0x0C, 0x0C, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x1C, 0x1C, 0x00, 0x00 },
90+
new byte[] { 0x20, 0x20, 0x00, 0x00, 0x3C, 0x3C, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x22, 0x1C, 0x1C },
91+
new byte[] { 0x02, 0x02, 0x02, 0x02, 0x42, 0x42, 0x22, 0x22, 0x1E, 0x1E, 0x22, 0x22, 0x42, 0x42, 0x00, 0x00 },
92+
new byte[] { 0x0C, 0x0C, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x1C, 0x1C, 0x00, 0x00 },
93+
new byte[] { 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x42, 0x42, 0x00, 0x00 },
94+
new byte[] { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00 },
95+
new byte[] { 0x00, 0x00, 0x00, 0x00, 0x3C, 0x3C, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3C, 0x3C, 0x00, 0x00 },
96+
new byte[] { 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x42, 0x42, 0x42, 0x42, 0x3E, 0x3E, 0x02, 0x02, 0x02, 0x02 },
97+
new byte[] { 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7C, 0x42, 0x42, 0x42, 0x42, 0x7C, 0x7C, 0x40, 0x40, 0x40, 0x40 },
98+
new byte[] { 0x00, 0x00, 0x00, 0x00, 0x7A, 0x7A, 0x06, 0x06, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00 },
99+
new byte[] { 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7C, 0x02, 0x02, 0x3C, 0x3C, 0x40, 0x40, 0x3E, 0x3E, 0x00, 0x00 },
100+
new byte[] { 0x08, 0x08, 0x08, 0x08, 0x3E, 0x3E, 0x08, 0x08, 0x08, 0x08, 0x48, 0x48, 0x30, 0x30, 0x00, 0x00 },
101+
new byte[] { 0x00, 0x00, 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x62, 0x62, 0x5C, 0x5C, 0x00, 0x00 },
102+
new byte[] { 0x00, 0x00, 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x24, 0x24, 0x18, 0x18, 0x00, 0x00 },
103+
new byte[] { 0x00, 0x00, 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x5A, 0x5A, 0x5A, 0x5A, 0x66, 0x66, 0x00, 0x00 },
104+
new byte[] { 0x00, 0x00, 0x00, 0x00, 0x42, 0x42, 0x24, 0x24, 0x18, 0x18, 0x24, 0x24, 0x42, 0x42, 0x00, 0x00 },
105+
new byte[] { 0x00, 0x00, 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x7C, 0x7C, 0x40, 0x40, 0x3C, 0x3C },
106+
new byte[] { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x7E, 0x20, 0x20, 0x18, 0x18, 0x04, 0x04, 0x7E, 0x7E, 0x00, 0x00 },
107+
new byte[] { 0x70, 0x70, 0x18, 0x18, 0x18, 0x18, 0x0E, 0x0E, 0x18, 0x18, 0x18, 0x18, 0x70, 0x70, 0x00, 0x00 },
108+
new byte[] { 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00 },
109+
new byte[] { 0x0E, 0x0E, 0x18, 0x18, 0x18, 0x18, 0x70, 0x70, 0x18, 0x18, 0x18, 0x18, 0x0E, 0x0E, 0x00, 0x00 },
110+
new byte[] { 0x00, 0x00, 0x00, 0x00, 0x24, 0x24, 0x2A, 0x2A, 0x12, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
111+
new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
112+
};
113+
114+
/// <inheritdoc/>
115+
public override byte Width { get => 8; }
116+
117+
/// <inheritdoc/>
118+
public override byte Height { get => 16; }
119+
120+
/// <inheritdoc/>
121+
public override byte[] this[char character]
122+
{
123+
get
124+
{
125+
var index = (byte)character;
126+
if ((index < 32) || (index > 127))
127+
{
128+
return _fontTable[32];
129+
}
130+
else
131+
{
132+
return _fontTable[index - 32];
133+
}
134+
}
135+
}
136+
}
137+
}

Diff for: devices/Ssd13xx/Additionnal_Fonts/Retro8x16.cs.bmp

48.1 KB
Binary file not shown.

0 commit comments

Comments
 (0)