Font Tables and Application Guide

 Multi‐Font Displays Font Tables and Application Guide Newhaven Display International, Inc. 2511 Technology Drive, Suite 101 Elgin IL, 60124 Ph: 847‐844‐8795 Fax: 847‐844‐8796 www.newhavendisplay.com [email protected] [email protected] [1] Table of Contents 1. Document Revision History 2. Font Tables 2.1. ASCII 2.2. Latin Basic 2.3. Latin Supplement 2.4. Latin Extended A 2.5. Latin Extended B 2.6. Latin Extended Additional 2.7. Greek 2.8. Cyrillic 2.9. Hebrew 2.10.
Thai 2.11.
Arabic 2.12.
ISO8859 2.13.
LCM 5x10 3. Font Data Arrangement 3.1. 5x7 font 3.2. 7x8 font 3.3. 8x16 font 3.4. Width‐Adjusted font 3.5. CJK font 4. Calculation of Font Addresses 4.1. 5x7 ASCII 4.2. 7x8 ASCII 4.3. 8x16 ASCII 4.4. Width‐Adjusted Arial ASCII 4.5. 8x16 Latin 4.6. 8x16 Greek 4.7. 8x16 Cyrillic 4.8. 8x16 Hebrew 4.9. 8x16 Thai 4.10.
Width‐Adjusted Latin 4.11.
Width‐Adjusted Greek 4.12.
Width‐Adjusted Cyrillic 4.13.
Width‐Adjusted Arabic 4.14.
GB2312 (Simplified Chinese) 4.15.
KSC5605 (Korean) 4.16.
JIS0208 (Japanese) 4.17.
ISO8859‐1 4.18.
ISO8859‐2 4.19.
ISO8859‐3 4.20.
ISO8859‐4 4.21.
ISO8859‐5 4.22.
ISO8859‐7 4.23.
ISO8859‐8 4.24.
ISO8859‐9 4.25.
ISO8859‐10 4.26.
ISO8859‐11 4.27.
ISO8859‐13 4.28.
ISO8859‐14 4.29.
ISO8859‐15 [2] 4.30.
ISO8859‐16 4.31.
LCM 5x10‐1 4.32.
LCM 5x10‐2 4.33.
LCM 5x10‐3 4.34.
LCM 5x10‐8 4.35.
LCM 5x10‐11 4.36.
LCM 5x10‐12 4.37.
LCM 5x10‐13 5. How to use the Multi‐Font displays. 1. Document Revision History Revision 0 1 Date 10/15/2012 11/5/2012 Description Preliminary Release Initial Product Release [3] Changed by ‐ 2. Font Tables 2.1.
ASCII 0 1 ASCII 2 3 4 5 0 1 2 3 4 !
0 1
@ A
P Q
` a
p q
“
2
B
R
b
r
#
3
C
S
c
s
$
4
D
T
d
t
5
6
7
8
% & ‘ (
5 6 7 8
E F G H
U V W X
e f g h
u v w x
9
A
B
C
)
9
I
Y
i
y
*
:
J
Z
j
z
+
;
K
[
k
{
,
<
L
\
l
|
D E F - .
= >
M N
] ^
m n
} ~
/
?
O
_
o
2.2.
Latin Basic 0 1 Latin Basic 2 3 4 5 2.3.
1 2 3 4 !
0 1
@ A
P Q
` a
p q
“
2
B
R
b
r
#
3
C
S
c
s
$
4
D
T
d
t
3 4 5
6
7
8
% & ‘ (
5 6 7 8
E F G H
U V W X
e f g h
u v w x
9
A
B
C
)
9
I
Y
i
y
*
:
J
Z
j
z
+
;
K
[
k
{
,
<
L
\
l
|
9
A
B
C
D E F - .
= >
M N
] ^
m n
} ~
/
?
O
_
o
Latin Supplement 0 1 Latin Supplement 0 2 3 4 5 0 1 2 5
6
7
8
D E F ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ - ® ¯
° ± ² ³ ´
µ ¶ · ¸
͍
º » ¼ ½ ¾ ¿
À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í
Î Ï
Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß
à á â ã ä å æ ç è é ê ë ì
í
î
ï
ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ
2.4.
Latin Extended A 0 1 0 Ā
Đ
Ġ
İ
ŀ
Ő
Š
Ű
ā
đ
ġ
ı
Ł
ő
š
ű
1 2 Latin Extended A 3 4 5 6 7 2 3 4 5
6
7
8
9
A
B
C
D E F Ă ă Ą ą
Ē ē Ĕ ĕ
Ģ ģ Ĥ ĥ
IJ ij Ĵ ĵ
ł Ń ń Ņ
Œ œ Ŕ ŕ
Ţ ţ Ť ť
Ų ų Ŵ ŵ
Ć
Ė
Ħ
Ķ
ņ
Ŗ
Ŧ
Ŷ
ć
ė
ħ
ķ
Ň
ŗ
ŧ
ŷ
Ĉ
Ę
Ĩ
ĸ
ň
Ř
Ũ
Ÿ
ĉ
ę
ĩ
Ĺ
ʼn
ř
ũ
Ź
Ċ
Ě
Ī
ĺ
Ŋ
Ś
Ū
ź
ċ
ě
ī
Ļ
ŋ
ś
ū
Ż
Č
Ĝ
Ĭ
ļ
Ō
Ŝ
Ŭ
ż
č
ĝ
ĭ
Ľ
ō
ŝ
ŭ
Ž
Ď
Ğ
Į
ľ
Ŏ
Ş
Ů
ž
ď
ğ
į
Ŀ
ŏ
ş
ů
ſ
6
7
8
9
A
B
C
D E F ƪ
ƺ
NJ
Ǻ
Ț
ƫ
ƻ
Nj
ǻ
ț
Ƭ ƭ Ʈ
Ƽ ƽ ƾ
nj Ǎ ǎ
Ǽ ǽ Ǿ
Ȝ ȝ Ȟ
Ư
ƿ
Ǐ
ǿ
ȟ
2.5.
Latin Extended B 0 Latin Extended B 1 2 3 4 0 1 2 Ơ ơ Ƣ
ư Ʊ Ʋ
ǀ
ǁ
ǂ
ǰ
DZ Dz
Ȑ ȑ Ȓ
3 4 5
ƣ
Ƴ
ǃ
dz
ȓ
Ƥ
ƴ
DŽ
Ǵ
Ȕ
ƥ
Ƶ
Dž
ǵ
ȕ
Ʀ Ƨ ƨ Ʃ
ƶ Ʒ Ƹ ƹ
dž LJ Lj lj
Ƕ Ƿ Ǹ ǹ
Ȗ ȗ Ș ș
[4] 2.6.
Latin Extended Additional Latin Extended Additional 0 0 Ạ
Ằ
Ề
Ố
Ỡ
Ự
1 2 3 4 5 1 ạ
ằ
ề
ố
ỡ
ự
2 Ả
Ẳ
Ể
Ồ
Ợ
Ỳ
3 ả
ẳ
ể
ồ
ợ
ỳ
4 5
6
7
8
9
A
B
C
Ấ
Ẵ
Ễ
Ổ
Ụ
Ỵ
ấ
ẵ
ễ
ổ
ụ
ỵ
Ầ
Ặ
Ệ
Ỗ
Ủ
Ỷ
ầ
ặ
ệ
ỗ
ủ
ỷ
Ẩ
Ẹ
Ỉ
Ộ
Ứ
Ỹ
ẩ
ẹ
ỉ
ộ
ứ
ỹ
Ẫ
Ẻ
Ị
Ớ
Ừ
ẫ
ẻ
ị
ớ
ừ
Ậ
Ẽ
Ọ
Ờ
Ử
6
7
8
9
A
B
ͺ
Ή Ί
Ι Κ
Ω Ϊ
ι
κ
ω ϊ
ͻ
D ậ
ẽ
ọ
ờ
ử
E Ắ
Ế
Ỏ
Ở
Ữ
F ắ
ế
ỏ
ở
ữ
2.7.
Greek 0 1 2 3 4 5
Γ
Σ
γ
σ
ʹ
΄
Δ
Τ
δ
τ
͵
΅
Ε
Υ
ε
υ
Ά
Ζ
Φ
ζ
φ
·
Η
Χ
η
χ
Έ
Θ
Ψ
θ
ψ
0 1 Greek C
Λ
Ϋ
λ
ϋ
ͼ
Ό
Μ
ά
μ
ό
D E F Ν
έ
ν
ύ
;
Ύ
Ξ
ή
ξ
ώ
Ώ
Ο
ί
ο
ͽ
ΐ
Π
ΰ
π
Α
Ρ
α
ρ
Β
0 1 2 3 4 5
6
7
8
9
A
B
C
D E F 0 Ѐ
А
Р
а
р
ѐ
Ґ
Ҡ
Ұ
Ӏ
Ӑ
Ӡ
Ӱ
Ё
Б
С
б
с
ё
ґ
ҡ
ұ
Ӂ
ӑ
ӡ
ӱ
Ђ
В
Т
в
т
ђ
Ғ
Ң
Ҳ
ӂ
Ӓ
Ӣ
Ӳ
Ѓ
Г
У
г
у
ѓ
ғ
ң
ҳ
Ӄ
ӓ
ӣ
ӳ
Є
Д
Ф
д
ф
є
Ҕ
Ҥ
Ҵ
ӄ
Ӕ
Ӥ
Ӵ
Ѕ
Е
Х
е
х
ѕ
ҕ
ҥ
ҵ
Ӆ
ӕ
ӥ
ӵ
І
Ж
Ц
ж
ц
і
Җ
Ҧ
Ҷ
ӆ
Ӗ
Ӧ
Ӷ
Ї
З
Ч
з
ч
ї
җ
ҧ
ҷ
Ӈ
ӗ
ӧ
ӷ
Ј
И
Ш
и
ш
ј
Ҙ
Ҩ
Ҹ
ӈ
Ə
Ө
Ӹ
Љ
Й
Щ
й
щ
љ
ҙ
ҩ
ҹ
Ӊ
ə
ө
ӹ
Њ
К
Ъ
к
ъ
њ
Қ
Ҫ
Һ
ӊ
Ӛ
Ӫ
Ӻ
Ћ
Л
Ы
л
ы
ћ
қ
ҫ
һ
Ӌ
ӛ
ӫ
ӻ
Ќ
М
Ь
м
ь
ќ
Ҝ
Ҭ
Ҽ
ӌ
Ӝ
Ӭ
Ӽ
Ѝ
Н
Э
н
э
ѝ
ҝ
ҭ
ҽ
Ӎ
ӝ
ӭ
ӽ
Ў
О
Ю
о
ю
ў
Ҟ
Ү
Ҿ
ӎ
Ӟ
Ӯ
Ӿ
Џ
П
Я
п
я
џ
ҟ
ү
ҿ
ӏ
ӟ
ӯ
ӿ
1 2 3 4 5 β
ς
2.8.
Cyrillic 1 2 3 4 5 Cyrillic 6 7 8 9 A B C 2.9.
Hebrew (note: some symbols are shown with ‫ ס‬ for reference) Hebrew 0 2 3 4 5
6
7
8
9
A
B
C
D E F 0 ‫֑ס‬
‫֒ס‬
‫֡ס ֠ס‬
‫֢ס‬
‫ְס‬
‫ֱס‬
‫ֲס‬
‫◌ ׀‬
ׁ ‫◌ ס‬
ׂ ‫ס‬
‫ג ב א‬
‫ע ס נ‬
‫ײ ױ װ‬
‫֓ס‬
‫֣ס‬
‫ֳס‬
‫׃‬
‫ד‬
‫ף‬
‫׳‬
‫֔ס‬
‫֤ס‬
‫ִס‬
‫ׄס‬
‫ה‬
‫פ‬
‫״‬
‫֕ס‬
‫֥ס‬
‫ֵס‬
‫ׅס‬
‫ו‬
‫ץ‬
‫֖ס‬
‫֦ס‬
‫ֶס‬
‫׆‬
‫ז‬
‫צ‬
‫֗ס‬
‫֧ס‬
‫ַס‬
‫ׇס‬
‫ח‬
‫ק‬
‫֘ס‬
‫֨ס‬
‫ָס‬
‫֙ס‬
‫֩ס‬
ֹ‫ס‬
‫֚ס‬
‫֪ס‬
ֺ‫ו‬
‫֛ס‬
‫֫ס‬
‫ֻס‬
‫֜ס‬
‫֬ס‬
‫סּ‬
‫֝ס‬
‫֭ס‬
‫ֽס‬
‫֞ס‬
‫֮ס‬
‫־‬
‫֟ס‬
‫֯ס‬
‫ֿס‬
‫ט‬
‫ר‬
‫י‬
‫ש‬
‫ך‬
‫ת‬
‫כ‬
‫ל‬
‫ם‬
‫מ‬
‫ן‬
1 2 3 4 5 6 [5] 2.10.
Thai 0 1 2 3 Thai (note: some symbols are shown with character for reference) 4 5 0 1 2 3 4 5
6
7
8
ข
ฐ
ฒ
ภ
ย
ะ
า
เ
แ โ
๐ ๑ ๒
ฃ
ณ
ร
◌าํ
ใ
๓
ค
ด
ฤ
กิ
ไ
๔
ฅ
ต
ล
กี
ๅ
๕
ฆ
ถ
ฦ
กึ
ๆ
๖
ง
ท
ว
กื
ก็
๗
จ
ธ
ศ
กุ
ก่
๘
Ġ ġ
İ ı
ŀ Ł
Ő ő
Š š
Ű ű
Ỡ ỡ
Ự ự
ģ Ĥ ĥ Ħ ħ Ĩ ĩ
ij Ĵ ĵ Ķ ķ ĸ Ĺ
Ń ń Ņ ņ Ň ň ʼn
œ Ŕ ŕ Ŗ ŗ Ř ř
ţ Ť ť Ŧ ŧ Ũ ũ
ų Ŵ ŵ Ŷ ŷ Ÿ Ź
ợ Ụ ụ Ủ ủ Ứ ứ
ỳ Ỵ ỵ Ỷ ỷ Ỹ ỹ
ก
ฑ
ม
ก◌ั
9
ฉ
น
ษ
กู
ก้
A
B
C
ช
บ
ส
กฺ
ก๊
๙ ๚
ซ
ป
ห
ฌ
ผ
ฬ
ก๋ ก์
๛
D ญ
ฝ
อ
กํ
E F ฎ
พ
ฮ
ฏ
ฟ
ฯ
ก๎
฿
๏
6 7 2 3 4 5 6 7 4 5 Ģ
IJ
ł
Œ
Ţ
Ų
Ợ
Ỳ
Ī ī
ĺ Ļ
Ŋ ŋ
Ś ś
Ū ū
ź Ż
Ừ ừ
Ĭ ĭ
ļ Ľ
Ō ō
Ŝ ŝ
Ŭ ŭ
ż Ž
Ử ử
Į į
ľ Ŀ
Ŏ ŏ
Ş ş
Ů ů
ž ſ
Ữ ữ
2.11.
Arabic 0 1 2 3 4 5
6
7
8
9
A
B
C
‫؛‬
1 ‫ء‬
Width‐
Adjusted x 16 Arabic (note: some symbols are combined with character for reference) 5 6 7 8 9 A B C ‫آ‬
‫أ‬
‫ؤ‬
‫إ‬
‫ئ‬
‫ا‬
‫ت‬
‫ث‬
‫ج‬
‫ح‬
‫خ‬
‫د‬
‫ظ ط ض ص ش س ز ر ذ‬
‫و ه ن م ل ك ق ف ـ‬
‫ح‬
ِ‫ٔ◌ ح◌ٓ حْ حّ ح‬
٠ ١ ٢ ٣ ٤ ٥ ٦ ٧ ٨
‫ع‬
‫ى‬
‫غ‬
‫ي‬
ً‫ح‬
ٌ‫ح‬
ٍ‫ح‬
َ‫ح‬
‫ح‬
ُ
‫ۑ‬
‫ے‬
‫ۓ‬
‫۔‬
E ۠‫ح‬
‫ح‬
ۡ
‫ح‬
ۢ
‫ح‬
ۣ
ۤ‫ح‬
F ۰
۱
۲
۳
۴
۵
۶
۷
‫ﭐ‬
‫ﭠ‬
‫ﭰ‬
‫ﭑ‬
‫ﭡ‬
‫ﭱ‬
‫ﭓ ﭒ‬
‫ﭣ ﭢ‬
‫ﭳ ﭲ‬
‫ﭔ‬
‫ﭤ‬
‫ﭴ‬
‫ﭕ‬
‫ﭥ‬
‫ﭵ‬
‫ﭗ ﭖ‬
‫ﭧ ﭦ‬
‫ﭷ ﭶ‬
12 ٩ ٪
٫
٬
ٰ
‫ح‬
‫ٱ‬
‫ٲ‬
‫ٳ‬
‫ټ ٻ ٺ ٹ ٸ ٷ ٶ ٵ ٴ‬
‫ڌ ڋ ڊ ډ ڈ ڇ چ څ ڄ ڃ ڂ ځ ڀ‬
‫ڜ ڛ ښ ڙ ژ ڗ ږ ڕ ڔ ړ ڒ ڑ ڐ‬
‫ڬ ګ ڪ ک ڨ ڧ ڦ ڥ ڤ ڣ ڢ ڡ ڠ‬
‫ڼ ڻ ں ڹ ڸ ڷ ڶ ڵ ڴ ڳ ڲ ڱ ڰ‬
‫ی ۋ ۊ ۉ ۈ ۇ ۆ ۅ ۄ ﺓ ﮤ ﮦ ۀ‬
‫ې‬
11 ‫؟‬
‫ة‬
D 10 F ‫ب‬
2 4 E ‫؍‬
0 3 D ‫ە‬
‫ح‬
ۖ
‫ۥ‬
‫ح‬
ۗ
‫ح ۦ‬
ۧ
[6] ‫ح‬
ۘ
‫ح‬
ۙ
‫٭‬
‫ٿ پ ٽ‬
‫ڏ ڎ ڍ‬
‫ڟ ڞ ڝ‬
‫گ ڮ ڭ‬
‫ڿ ھ ڽ‬
‫ۏ ێ ۍ‬
‫۞۝‬
‫ح‬
ۚ ۛ‫ح‬
‫ح‬
ۜ
‫ح‬
۪
۫‫ح‬
۬‫ح‬
‫ح‬
ۭ
۸
۹
‫ﭘ‬
‫ﭨ‬
‫ﭸ‬
‫ﭛ ﭚ ﭙ‬
‫ﭫ ﭪ ﭩ‬
‫ﭻ ﭺ ﭹ‬
‫ﭜ‬
‫ﭬ‬
‫ﭼ‬
‫ﭟ ﭞ ﭝ‬
‫ﭯ ﭮ ﭭ‬
‫ﭿ ﭾ ﭽ‬
‫ح‬
ۨ ۩
۟‫ح‬
‫ﮏ ﮎ ﮍ‬
‫ﮟ ﮞ ﮝ‬
‫ﮯ ﮮ ﮭ‬
‫ﮌ‬
‫ﮜ‬
‫ﮬ‬
‫ﮋ ﮊ ﮉ‬
‫ﮛ ﮚ ﮙ‬
‫ﮫ ﮪ ﮩ‬
‫ﮈ‬
‫ﮘ‬
‫ﮨ‬
‫ﮇ ﮆ ﮅ‬
‫ﮗ ﮖ ﮕ‬
‫ﮧ ﮦ ﮥ‬
‫ﮄ‬
‫ﮔ‬
‫ﮤ‬
‫ﮃ ﮂ ﮁ‬
‫ﮓ ﮒ ﮑ‬
‫ﮡ‬
‫ﮢ‬
‫ﮣ‬
‫ﮀ‬
‫ﮐ‬
‫ﮠ‬
‫ﮱ‬
‫ﮰ‬
‫‪13 ‬‬
‫‪14 ‬‬
‫‪15 ‬‬
‫‪16 ‬‬
‫‪17 ‬‬
‫ﯝ ﯜ ﯛ‬
‫ﯭ ﯬ ﯫ‬
‫ﯽ ﯼ ﯻ‬
‫ﯟ‬
‫ﯯ‬
‫ﯿ‬
‫ﯞ‬
‫ﯮ‬
‫ﯾ‬
‫ﹷ‬
‫ﺏ‬
‫ﺟ‬
‫ﺯ‬
‫ﺿ‬
‫ﻏ‬
‫ﻟ‬
‫ﻯ‬
‫ﹹ‬
‫ﹻ ﹺ‬
‫ﹽ ﹼ‬
‫ﹾ‬
‫ﺊ ﺉ‬
‫ﺋ‬
‫ﺌ‬
‫ﺍ‬
‫ﺎ‬
‫ﺚ ﺙ‬
‫ﺛ‬
‫ﺞ ﺝ ﺜ‬
‫ﺮ ﺭ ﺬ ﺫ ﺪ ﺩ‬
‫ﺾ ﺽ ﺼ ﺻ ﺺ ﺹ‬
‫ﻎ ﻍ ﻌ ﻋ ﻊ ﻉ‬
‫ﻞ ﻝ ﻜ ﻛ ﻚ ﻙ‬
‫ﻮ ﻭ ﻬ ﻫ ﻪ ﻩ‬
‫ﻼ‬
‫ﻻ‬
‫ﯚ ﯙ ﯘ‬
‫ﯨ‬
‫ﯪ ﯩ‬
‫ﯺ ﯹ ﯸ‬
‫ﻺ‬
‫ﻹ‬
‫ﹸ‬
‫ﯗ ﯖ ﯕ ﯔ‬
‫ﯥ ﯤ‬
‫ﯦ‬
‫ﯧ‬
‫ﯷ ﯶ ﯵ ﯴ‬
‫ﺈ‬
‫ﺘ‬
‫ﺨ‬
‫ﺸ‬
‫ﻈ‬
‫ﻘ‬
‫ﻨ‬
‫ﹷ‬
‫ﺇ‬
‫ﺗ‬
‫ﺧ‬
‫ﺷ‬
‫ﻇ‬
‫ﻗ‬
‫ﻧ‬
‫ﻸ‬
‫ﻷ‬
‫ﯓ‬
‫ﯣ‬
‫ﯳ‬
‫ﹴ‬
‫ﺆ ﺅ ﺄ‬
‫ﺖ ﺕ ﺔ‬
‫ﺦ ﺥ ﺤ‬
‫ﺶ ﺵ ﺴ‬
‫ﻆ ﻅ ﻄ‬
‫ﻖ ﻕ ﻔ‬
‫ﻦ ﻥ ﻤ‬
‫ﻶ‬
‫ﻵ‬
‫ﻴ‬
‫‪18 ‬‬
‫ﯢ‬
‫ﯲ‬
‫ﯡ‬
‫ﯱ‬
‫ﺃ‬
‫ﺓ‬
‫ﺣ‬
‫ﺳ‬
‫ﻃ‬
‫ﻓ‬
‫ﻣ‬
‫ﹱ‬
‫ﺁ‬
‫ﺂ‬
‫ﺑ‬
‫ﺒ‬
‫ﺢ ﺡ‬
‫ﺲ ﺱ‬
‫ﻂ ﻁ‬
‫ﻒ ﻑ‬
‫ﻢ ﻡ‬
‫ﺀ‬
‫ﺐ‬
‫ﺠ‬
‫ﺰ‬
‫ﻀ‬
‫ﻐ‬
‫ﻠ‬
‫ﻳ‬
‫ﻲ ﻱ‬
‫ﻰ‬
‫‪ ‬‬
‫‪[7] ‬‬
‫ﯠ‬
‫ﯰ‬
‫ﹰ‬
‫‪19 ‬‬
‫‪1A ‬‬
‫‪1B ‬‬
‫‪1C ‬‬
‫‪1D ‬‬
‫‪1E ‬‬
‫‪1F ‬‬
‫‪20 ‬‬
‫‪21 ‬‬
‫‪22 ‬‬
‫‪23 ‬‬
‫‪ ‬‬
‫‪ ‬‬
2.12.
ISO8859 2.12.1.
All ISO8859 tables ‐ characters 0x20 ~ 0x7F are equal to ASCII: 2.12.2.
ISO8859‐1 (characters 0xA0 ~ 0xFF) 2.12.3.
ISO8859‐2 (characters 0xA0 ~ 0xFF) 2.12.4.
ISO8859‐3 (characters 0xA0 ~ 0xFF) [8] 2.12.5.
ISO8859‐4 (characters 0xA0 ~ 0xFF) 2.12.6.
ISO8859‐5 (characters 0xA0 ~ 0xFF) 2.12.7.
ISO8859‐7 (characters 0xA0 ~ 0xFF) 2.12.8.
ISO8859‐8 (characters 0xA0 ~ 0xFF) [9] 2.12.9.
ISO8859‐9 (characters 0xA0 ~ 0xFF) 2.12.10.
ISO8859‐10 (characters 0xA0 ~ 0xFF) 2.12.11.
ISO8859‐11 (characters 0xA0 ~ 0xFF) 2.12.12.
ISO8859‐13 (characters 0xA0 ~ 0xFF) [10] 2.12.13.
ISO8859‐14 (characters 0xA0 ~ 0xFF) 2.12.14.
ISO8859‐15 (characters 0xA0 ~ 0xFF) 2.12.15.
ISO8859‐16 (characters 0xA0 ~ 0xFF) [11] 2.13.
LCM 5x10 2.13.1.
LCM 5x10‐1 [12] 2.13.2.
LCM 5x10‐2 [13] 2.13.3.
LCM 5x10‐3 [14] 2.13.4.
LCM 5x10‐8 [15] 2.13.5.
LCM 5x10‐11 [16] 2.13.6.
LCM 5x10‐12 [17] 2.13.7.
LCM 5x10‐13 [18] 3. Font Data Arrangement Format Each font character is stored in dot matrix format. Each dot is expressed by a binary bit; 1 represents an ‘ON’ pixel, 0 represents an ‘OFF’ pixel. The data arrangement format is byte‐vertical, string‐horizontal. 3.1.
5x7 Font Data Arrangement 5x7 dot fonts require 8 bytes (BYTE 0 – BYTE 7) to display. BYTE 0 represents the left most column of the font. BYTE 5 through BYTE 7 are empty data (0x00). 3.2.
7x8 Font Data Arrangement 7x8 dot fonts require 8 bytes (BYTE 0 – BYTE 7) to display. BYTE 0 represents the left most column of the font. BYTE 7 is empty data (0x00). [19] 3.3.
8x16 Font Data Arrangement 8x16 dot fonts require 16 bytes (BYTE 0 – BYTE 15) to display. BYTE 0 represents the top‐left most column of the font. BYTE 0 through BYTE 7 represent the top half of the font. BYTE 8 represents the bottom‐left most column of the font. BYTE 8 through BYTE 15 represent the bottom half of the font. 3.4.
Width Adjusted Font Data Arrangement Width‐Adjusted dot fonts require 34 bytes (BYTE 0 – BYTE 33) to display. Because each font is proportionally adjusted, BYTE 0 through BYTE 1 represents the width of the font. BYTE 2 ‐ 33 represent the dot matrix font data. BYTE 2 through BYTE 16 have the lower 3 bits empty, BYTE 18 through 32 have the highest bit empty, giving each character a maximum height of 12 pixels. BYTE 17 and BYTE 33 are always empty to allow one pixel space between characters (0x00). [20] The font width in BYTE 0~BYTE 1 can be used as reference for the position of the next displayed character. For example: ASCII Arial Font “B” reads BYTES 0 ~33: (hex) 00 0C 00 F8 F8 18 18 18 18 18 F8 F0 00 00 00 00 00 00 00 7F 7F 63 63 63 63 63 67 3E 1C 00 00 00 00 00 BYTE0~BYTE1 = 0000C. This means the character “B” is 12 pixels wide, with 4 empty columns at the end. BYTE2~BYTE33 is the dot matrix data: BYTES 2~17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 BYTES 18~33 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 12 bytes wide 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 0 0 0 0 0 1 1 1 1 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 blank bytes
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
[21] 3.5.
CJK Font Data Arrangement Chinese, Japanese, and Korean fonts are 15x16 dots, each font require 32 bytes (BYTE 0 – BYTE 31) to display. BYTE 0 represents the top‐left most column of the font. BYTE 0 through BYTE 7 represent the top‐left quarter of the font. BYTE 8 through BYTE 15 represent the top‐right quarter of the font. BYTE 16 through BYTE 23 represent the bottom‐left quarter of the font. BYTE 24 through BYTE 31 represent the bottom‐right quarter of the font. For example: Chinese Font “美” (Unicode U+7F8E , or GB2312 font C3C0) reads BYTES 0 ~31: (hex) 00 04 24 24 25 26 24 FC 24 26 25 24 24 04 00 00 81 89 89 49 49 29 19 0F 19 29 49 49 89 89 81 00 BYTES 0~15 BYTES 16~31 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0
0
1
0
0
1
0
0
1
0
0
1
0
0
0
1
0
0
1
0
0
0
0
0
1
0
0
1
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
[22] 4. Calculation of Font Addresses 4.1. 5x7 ASCII Parameters: ASCIICODE: 8bit ASCII character code Address: Address of character data if(ASCIICODE >= 0x20 && ASCIICODE <= 0xFF)
Address = (ASCIICODE – 0x20) *8;
4.2. 7x8 ASCII Parameters: ASCIICODE: 8bit ASCII character code Address: Address of character data if(ASCIICODE >= 0x20 && ASCIICODE <= 0xFF)
Address = ((ASCIICODE – 0x20) *8) + 768;
4.3. 8x16 ASCII Parameters: ASCIICODE: 8bit ASCII character code Address: Address of character data if(ASCIICODE >= 0x20 && ASCIICODE <= 0xFF)
Address =( (ASCIICODE – 0x20) *16) + 1,536;
4.4. Width‐Adjusted Arial ASCII Parameters: ASCIICODE: 8bit ASCII character code Address: Address of character data if(ASCIICODE >= 0x20 && ASCIICODE <= 0xFF)
Address =( (ASCIICODE – 0x20) *34) + 3,072;
4.5. 8x16 Latin Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0020 && UNICODE <= 0x007F)
Address = ((UNICODE – 0x0020)*16) + 6,336;
else if(UNICODE >= 0x00A0 && UNICODE <= 0x017F)
Address = ((UNICODE – 0x00A0 + 96)*16) + 6,336;
else if(UNICODE >= 0x01A0 && UNICODE <= 0x01CF)
Address = ((UNICODE – 0x01A0 + 320)*16) + 6,336;
else if(UNICODE >= 0x01F0 && UNICODE <= 0x01FF)
Address = ((UNICODE – 0x01F0 + 368)*16) + 6,336;
else if(UNICODE >= 0x0210 && UNICODE <= 0x021F)
Address = ((UNICODE – 0x0210 + 384)*16) + 6,336;
else if(UNICODE >= 0x1EA0 && UNICODE <= 0x1EFF)
Address = ((UNICODE – 0x1EA0 + 400)*16) + 6,336;
[23] 4.6. 8x16 Greek Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0370 && UNICODE <= 0x03CF)
Address = ((UNICODE – 0x0370)*16) + 14,272;
4.7. 8x16 Cyrillic Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0400 && UNICODE <= 0x045F)
Address = ((UNICODE – 0x0400)*16) + 15,808;
else if(UNICODE >= 0x0490 && UNICODE <= 0x04FF)
Address = ((UNICODE – 0x0490 + 96)*16) + 15,808;
4.8. 8x16 Hebrew Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0590 && UNICODE <= 0x05FF)
Address = ((UNICODE – 0x0590)*16) + 19,136;
4.9. 8x16 Thai Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0E00 && UNICODE <= 0x0E5F)
Address = ((UNICODE – 0x0E00)*16) + 20,928;
4.10.
Width‐Adjusted Latin Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0020 && UNICODE <= 0x007F)
Address = ((UNICODE – 0x0020)*34) + 22,976;
else if(UNICODE >= 0x00A0 && UNICODE <= 0x017F)
Address = ((UNICODE – 0x00A0 + 96)*34) + 22,976;
else if(UNICODE >= 0x01A0 && UNICODE <= 0x01CF)
Address = ((UNICODE – 0x01A0 + 320)*34) + 22,976;
else if(UNICODE >= 0x01F0 && UNICODE <= 0x01FF)
Address = ((UNICODE – 0x01F0 + 368)*34) + 22,976;
else if(UNICODE >= 0x0210 && UNICODE <= 0x021F)
Address = ((UNICODE – 0x0210 + 384)*34) + 22,976;
else if(UNICODE >= 0x1EA0 && UNICODE <= 0x1EFF)
Address = ((UNICODE – 0x1EA0 + 400)*34) + 22,976;
[24] 4.11.
Width‐Adjusted Greek Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0370 && UNICODE <= 0x03CF)
Address = ((UNICODE – 0x0370)*34) + 39,840;
4.12.
Width‐Adjusted Cyrillic Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0400 && UNICODE <= 0x045F)
Address = ((UNICODE – 0x0400)*34) + 43,104;
else if(UNICODE >= 0x0490 && UNICODE <= 0x04FF)
Address = ((UNICODE – 0x0490 + 96)*34) + 43,104;
4.13.
Width‐Adjusted Arabic Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0600 && UNICODE <= 0x06FF)
Address = ((UNICODE – 0x0600)*34) + 50,176;
else if(UNICODE >= 0xFB50 && UNICODE <= 0xFBFF)
Address = ((UNICODE – 0xFB50 + 256) *34) + 50,176;
else if(UNICODE >= 0xFE70 && UNICODE <= 0xFEFF)
Address = ((UNICODE – 0xFE70 + 432) *34) + 50,176;
4.14.
GB2312 Simplified Chinese Parameters: GBCode: 16‐bit GB2312 character code MSB: Higher byte of GB code LSB: Lower byte of GB code Address: Address of character data if(MSB >= 0xA1 && MSB <= 0xA9 && LSB >=0xA1)
Address = (((MSB – 0xA1) * 94) + (LSB – 0xA1)) * 32 + 69,760;
else if(MSB >= 0xB0 && MSB <= 0xF7 && LSB >= 0xA1)
Address = (((MSB – 0xB0) * 94) + (LSB – 0xA1) + 846) * 32 + 69,760;
4.15.
KSC5601 Korean Parameters: GBCode: 16‐bit GB2312 character code MSB: Higher byte of GB code LSB: Lower byte of GB code Address: Address of character data if(MSB >= 0xA1 && MSB <= 0xB0 && LSB >=0xA1)
Address = (((MSB – 0xA1) * 94) + (LSB – 0xA1)) * 32 + 379,744;
else if(MSB >= 0xB0 && MSB <= 0xC8 && LSB >= 0xA1)
Address = (((MSB – 0xB0) * 94) + (LSB – 0xA1)) * 32 + 379,744 + 35,680;
[25] 4.16.
JIS0208 Japanese Parameters: GBCode: 16‐bit GB2312 character code MSB: Higher byte of GB code LSB: Lower byte of GB code Address: Address of character data if((MSB >= 1 && MSB <= 94) && (LSB >= 1 && LSB <= 94 )
Address = (((MSB – 1) * 94) + (LSB – 1)) * 32 + 490,624;
4.17.
ISO8859‐1 (for characters 0x20~0x7F, reference 5x7 ASCII calculation) Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0080 && UNICODE <= 0x00FF)
Address =( (UNICODE – 0x80) *8) + 946,992;
4.18.
ISO8859‐2 (for characters 0x20~0x7F, reference 5x7 ASCII calculation) Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0080 && UNICODE <= 0x00FF)
Address =( (UNICODE – 0x80) *8) + 946,992 + 1,024;
4.19.
ISO8859‐3 (for characters 0x20~0x7F, reference 5x7 ASCII calculation) Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0080 && UNICODE <= 0x00FF)
Address =( (UNICODE – 0x80) *8) + 946,992 + (1,024*2);
4.20.
ISO8859‐4 (for characters 0x20~0x7F, reference 5x7 ASCII calculation) Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0080 && UNICODE <= 0x00FF)
Address =( (UNICODE – 0x80) *8) + 946,992 + (1,024*3);
4.21.
ISO8859‐5 (for characters 0x20~0x7F, reference 5x7 ASCII calculation) Parameters: 1.1. UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0080 && UNICODE <= 0x00FF)
Address =( (UNICODE – 0x80) *8) + 946,992 + (1,024*4);
[26] 4.22.
ISO8859‐7 (for characters 0x20~0x7F, reference 5x7 ASCII calculation) Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0080 && UNICODE <= 0x00FF)
Address =( (UNICODE – 0x80) *8) + 946,992 + (1,024*5);
4.23.
ISO8859‐8 (for characters 0x20~0x7F, reference 5x7 ASCII calculation) Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0080 && UNICODE <= 0x00FF)
Address =( (UNICODE – 0x80) *8) + 946,992 + (1,024*6);
4.24.
ISO8859‐9 (for characters 0x20~0x7F, reference 5x7 ASCII calculation) Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0080 && UNICODE <= 0x00FF)
Address =( (UNICODE – 0x80) *8) + 946,992 + (1,024*7);
4.25.
ISO8859‐10 (for characters 0x20~0x7F, reference 5x7 ASCII calculation) Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0080 && UNICODE <= 0x00FF)
Address =( (UNICODE – 0x80) *8) + 946,992 + (1,024*8);
4.26.
ISO8859‐11 (for characters 0x20~0x7F, reference 5x7 ASCII calculation) Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0080 && UNICODE <= 0x00FF)
Address =( (UNICODE – 0x80) *8) + 946,992 + (1,024*9);
4.27.
ISO8859‐13 (for characters 0x20~0x7F, reference 5x7 ASCII calculation) Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0080 && UNICODE <= 0x00FF)
Address =( (UNICODE – 0x80) *8) + 946,992 + (1,024*10);
4.28.
ISO8859‐14 (for characters 0x20~0x7F, reference 5x7 ASCII calculation) Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0080 && UNICODE <= 0x00FF)
Address =( (UNICODE – 0x80) *8) + 946,992 + (1,024*11);
[27] 4.29.
ISO8859‐15 (for characters 0x20~0x7F, reference 5x7 ASCII calculation) Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0080 && UNICODE <= 0x00FF)
Address =( (UNICODE – 0x80) *8) + 946,992 + (1,024*12);
4.30.
ISO8859‐16 (for characters 0x20~0x7F, reference 5x7 ASCII calculation) Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0080 && UNICODE <= 0x00FF)
Address =( (UNICODE – 0x80) *8) + 946,992 + (1,024*13);
4.31.
5x10 LCM ‐ 1 Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0000 && UNICODE <= 0x00FF)
Address = (UNICODE *10) + 961,328;
4.32.
5x10 LCM ‐ 2 Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0000 && UNICODE <= 0x00FF)
Address = (UNICODE *10) + 961,328 + 2,560;
4.33.
5x10 LCM ‐ 3 Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0000 && UNICODE <= 0x00FF)
Address = (UNICODE *10) + 961,328 + (2,560*2);
4.34.
5x10 LCM ‐ 8 Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0000 && UNICODE <= 0x00FF)
Address = (UNICODE *10) + 961,328 + (2,560*3);
4.35.
5x10 LCM ‐ 11 Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0000 && UNICODE <= 0x00FF)
Address = (UNICODE *10) + 961,328 + (2,560*4);
[28] 4.36.
5x10 LCM ‐ 12 Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0000 && UNICODE <= 0x00FF)
Address = (UNICODE *10) + 961,328 + (2,560*5);
4.37.
5x10 LCM ‐ 13 Parameters: UNICODE: 16‐bit Unicode Address: Address of character data if(UNICODE >= 0x0000 && UNICODE <= 0x00FF)
Address = (UNICODE *10) + 961,328 + (2,560*6);
[29] 5. How to use the Multi‐Font Displays The Multi‐font displays have a built‐in serial interface memory IC with preloaded font tables. These font tables contain the dot‐matrix (pixel) data that makes up each individual character in the supported languages. The multi‐font IC communicates with the main host MPU by receiving the specified font address and then sending the dot‐matrix data back to the main host MPU. When the data is received by the main host MPU, it can then be written to the Display Data RAM. The following steps with examples are used to get and display the multi‐font data: 1) Determine what characters or strings should be shown on the display. example: “Newhaven Display” 2) Determine what languages or fonts this string should be shown in. example: Chinese = “纽黑文显示” 3) Go to Section 4 and determine what character code is required for the address calculation. example: Chinese requires GB code 4)Save the strings into program code. example: unsigned int NameChinese[] = {0xC5A6, 0xBADA, 0xCEC4, 0xCFD4, 0xCABE};
5)Send string data to address calculation routine in Section 4. example: get the multi‐font address for 0xC5A6 Chinese character: MSB = 0xC5 LSB = 0xA6 since (MSB >= 0xB0 && MSB <= 0xF7 && LSB >= 0xA1) then: Address = ((0xC5 – 0xB0)*94 + (0xA6 – 0xA1) +846)*32 + 69,760 Address = ((0x15)*94 + 0x05 + 846)*32 + 69,760 Address = (1,974 + 5 + 846)*32 + 69,760 Address = 160,160 Address = 0x0271A0 [30] //GB code for 纽黑文显示
6) Send READ command and Address to Multi‐Font IC. example: SPI_OUT(0x0B);
//READ command
SPI_OUT(0x02);
//Address Byte1 (MSB)
SPI_OUT(0x71);
//Address Byte2
SPI_OUT(0xA0);
//Address Byte3 (LSB)
SPI_OUT(0xFF);
//Dummy Byte
7) Read dot‐matrix font data and store in buffer or send to display. example: Chinese fonts are 32 bytes of data for(i = 1 ; i <= 32 ; i++ ){
*readByte = SPI_IN();
//read one byte
FontBuffer[1][i] = readByte;
//save byte in buffer
}
OLED_12864_SetAddress(column , row);
//set address location for font to be displayed
for(i = 1 ; i <= 16 ; i++ ){
OLED_12864_Output(FontBuffer[1][i]);
column++;
OLED_12864_SetAddress(column , row);
}
//for the first 16 bytes of font data
//write byte to display
//next byte will be for the next column
//set address location for next column
column = column – 16;
row = row + 16;
OLED_12864_SetAddress(column , row);
//go back to first column of the font
//move down to show the bottom half of font
//set address for bottom half of font
for(i = 17 ; i <= 32 ; i++ ){
OLED_12864_Output(FontBuffer[1][i]);
column++;
OLED_12864_SetAddress(column , row);
}
//for the second 16 bytes of font data
//write byte to display
//next byte will be for the next column
//set address location for next column
[31]