1// Copyright 2015 The TCell Authors
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use file except in compliance with the License.
5// You may obtain a copy of the license at
6//
7//    http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package tcell
16
17// The names of these constants are chosen to match Terminfo names,
18// modulo case, and changing the prefix from ACS_ to Rune.  These are
19// the runes we provide extra special handling for, with ASCII fallbacks
20// for terminals that lack them.
21const (
22	RuneSterling = '£'
23	RuneDArrow   = '↓'
24	RuneLArrow   = '←'
25	RuneRArrow   = '→'
26	RuneUArrow   = '↑'
27	RuneBullet   = '·'
28	RuneBoard    = '░'
29	RuneCkBoard  = '▒'
30	RuneDegree   = '°'
31	RuneDiamond  = '◆'
32	RuneGEqual   = '≥'
33	RunePi       = 'π'
34	RuneHLine    = '─'
35	RuneLantern  = '§'
36	RunePlus     = '┼'
37	RuneLEqual   = '≤'
38	RuneLLCorner = '└'
39	RuneLRCorner = '┘'
40	RuneNEqual   = '≠'
41	RunePlMinus  = '±'
42	RuneS1       = '⎺'
43	RuneS3       = '⎻'
44	RuneS7       = '⎼'
45	RuneS9       = '⎽'
46	RuneBlock    = '█'
47	RuneTTee     = '┬'
48	RuneRTee     = '┤'
49	RuneLTee     = '├'
50	RuneBTee     = '┴'
51	RuneULCorner = '┌'
52	RuneURCorner = '┐'
53	RuneVLine    = '│'
54)
55
56// RuneFallbacks is the default map of fallback strings that will be
57// used to replace a rune when no other more appropriate transformation
58// is available, and the rune cannot be displayed directly.
59//
60// New entries may be added to this map over time, as it becomes clear
61// that such is desirable.  Characters that represent either letters or
62// numbers should not be added to this list unless it is certain that
63// the meaning will still convey unambiguously.
64//
65// As an example, it would be appropriate to add an ASCII mapping for
66// the full width form of the letter 'A', but it would not be appropriate
67// to do so a glyph representing the country China.
68//
69// Programs that desire richer fallbacks may register additional ones,
70// or change or even remove these mappings with Screen.RegisterRuneFallback
71// Screen.UnregisterRuneFallback methods.
72//
73// Note that Unicode is presumed to be able to display all glyphs.
74// This is a pretty poor assumption, but there is no easy way to
75// figure out which glyphs are supported in a given font.  Hence,
76// some care in selecting the characters you support in your application
77// is still appropriate.
78var RuneFallbacks = map[rune]string{
79	RuneSterling: "f",
80	RuneDArrow:   "v",
81	RuneLArrow:   "<",
82	RuneRArrow:   ">",
83	RuneUArrow:   "^",
84	RuneBullet:   "o",
85	RuneBoard:    "#",
86	RuneCkBoard:  ":",
87	RuneDegree:   "\\",
88	RuneDiamond:  "+",
89	RuneGEqual:   ">",
90	RunePi:       "*",
91	RuneHLine:    "-",
92	RuneLantern:  "#",
93	RunePlus:     "+",
94	RuneLEqual:   "<",
95	RuneLLCorner: "+",
96	RuneLRCorner: "+",
97	RuneNEqual:   "!",
98	RunePlMinus:  "#",
99	RuneS1:       "~",
100	RuneS3:       "-",
101	RuneS7:       "-",
102	RuneS9:       "_",
103	RuneBlock:    "#",
104	RuneTTee:     "+",
105	RuneRTee:     "+",
106	RuneLTee:     "+",
107	RuneBTee:     "+",
108	RuneULCorner: "+",
109	RuneURCorner: "+",
110	RuneVLine:    "|",
111}
112