diff options
-rw-r--r-- | CHANGELOG.md | 3 | ||||
-rw-r--r-- | cmd/gotop/main.go | 14 | ||||
-rw-r--r-- | devices/cpu.go | 8 | ||||
-rw-r--r-- | devices/cpu_cpu.go | 5 | ||||
-rw-r--r-- | devices/devices.go | 2 | ||||
-rw-r--r-- | devices/temp_openbsd.go | 2 | ||||
-rw-r--r-- | fonts/Lat15-VGA16-braille.psf | bin | 0 -> 10582 bytes | |||
-rw-r--r-- | fonts/README | 16 | ||||
-rw-r--r-- | fonts/braille.txt | 4864 | ||||
-rw-r--r-- | fonts/gen-braille.py | 34 | ||||
-rw-r--r-- | widgets/batterygauge.go | 1 | ||||
-rw-r--r-- | widgets/disk.go | 2 |
12 files changed, 4927 insertions, 24 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 316e451..c4ff77d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,7 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Adds support for system-wide configurations. This improves support for package maintainers. -- Help function to print key bindings. +- Help function to print key bindings, widgets, layouts, colorschemes, and paths - Help prints locations of config files (color schemes & layouts). - Help prints location of logs. - CLI option to scale out (#84). @@ -32,6 +32,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Command line option to list layouts, paths, colorschemes, hotkeys, and filterable devices - Adds ability to write out a configuration file - Adds a command for specifying the configuration file to use +- Merged cmatsuoka's console font contribution ### Changed diff --git a/cmd/gotop/main.go b/cmd/gotop/main.go index 25dd5b8..bd00b66 100644 --- a/cmd/gotop/main.go +++ b/cmd/gotop/main.go @@ -67,7 +67,7 @@ func parseArgs() error { opflag.BoolVarP(&conf.AverageLoad, "averagecpu", "a", conf.AverageLoad, "Show average CPU in the CPU widget.") fahrenheit := opflag.BoolP("fahrenheit", "f", conf.TempScale == 'F', "Show temperatures in fahrenheit.Show temperatures in fahrenheit.") opflag.BoolVarP(&conf.Statusbar, "statusbar", "s", conf.Statusbar, "Show a statusbar with the time.") - opflag.DurationVarP(&conf.UpdateInterval, "rate", "r", conf.UpdateInterval, "Number of times per second to update CPU and Mem widgets.") + opflag.DurationVarP(&conf.UpdateInterval, "rate", "r", conf.UpdateInterval, "Refresh frequency. Most time units accepted. `1m` = refresh every minute. `100ms` = refresh every 100ms.") opflag.StringVarP(&conf.Layout, "layout", "l", conf.Layout, `Name of layout spec file for the UI. Use "-" to pipe.`) opflag.StringVarP(&conf.NetInterface, "interface", "i", "all", "Select network interface. Several interfaces can be defined using comma separated values. Interfaces can also be ignored using `!`") opflag.StringVarP(&conf.ExportPort, "export", "x", conf.ExportPort, "Enable metrics for export on the specified port.") @@ -334,19 +334,9 @@ func eventLoop(c gotop.Config, grid *layout.MyGrid) { } } -// TODO: @devices fans -// TODO: @devices mpd visualizer -// TODO: @devices color bars for memory, a-la bashtop -// TODO: Add tab completion for Linux https://gist.github.com/icholy/5314423 // TODO: state:merge #135 linux console font (cmatsuoka/console-font) -// TODO: Abstract out the UI toolkit. mum4k/termdash, VladimirMarkelov/clui, gcla/gowid, rivo/tview, marcusolsson/tui-go might work better for some OS/Archs. Performance/memory use comparison would be interesting. -// TODO: more unit tests, benchmarks -// TODO: README is getting long. Move to wiki. -// TODO: add verbose debugging option -// TODO: find VMs for FreeBSD, etc for testing gotop -// TODO: add README about extensions, and wiki page for writing extensions func main() { - // For performance testing + // TODO: Make this an option, for performance testing //go func() { // log.Fatal(http.ListenAndServe(":7777", nil)) //}() diff --git a/devices/cpu.go b/devices/cpu.go index 1d8d23d..b4a9799 100644 --- a/devices/cpu.go +++ b/devices/cpu.go @@ -1,13 +1,11 @@ package devices -// TODO: https://github.com/elastic/go-sysinfo - import ( "log" "time" ) -var cpuFuncs []func(map[string]int, time.Duration, bool) map[string]error +var cpuFuncs []func(map[string]int, bool) map[string]error // RegisterCPU adds a new CPU device to the CPU widget. labels returns the // names of the devices; they should be as short as possible, and the indexes @@ -18,7 +16,7 @@ var cpuFuncs []func(map[string]int, time.Duration, bool) map[string]error // // labels may be called once and the value cached. This means the number of // cores should not change dynamically. -func RegisterCPU(f func(map[string]int, time.Duration, bool) map[string]error) { +func RegisterCPU(f func(map[string]int, bool) map[string]error) { cpuFuncs = append(cpuFuncs, f) } @@ -26,7 +24,7 @@ func RegisterCPU(f func(map[string]int, time.Duration, bool) map[string]error) { // Returns one value per cpu, or a single value if percpu is set to false. func UpdateCPU(cpus map[string]int, interval time.Duration, logical bool) { for _, f := range cpuFuncs { - errs := f(cpus, interval, logical) + errs := f(cpus, logical) if errs != nil { for k, e := range errs { log.Printf("%s: %s", k, e) diff --git a/devices/cpu_cpu.go b/devices/cpu_cpu.go index a959e32..46105ee 100644 --- a/devices/cpu_cpu.go +++ b/devices/cpu_cpu.go @@ -2,7 +2,6 @@ package devices import ( "fmt" - "time" psCpu "github.com/shirou/gopsutil/cpu" ) @@ -10,7 +9,7 @@ import ( // FIXME: broken % under Linux. Doesn't reflect reality *at all*. // FIXME: gotop CPU use high -- gopsutils again? Try rolling back. func init() { - f := func(cpus map[string]int, iv time.Duration, l bool) map[string]error { + f := func(cpus map[string]int, l bool) map[string]error { cpuCount, err := psCpu.Counts(l) if err != nil { return nil @@ -19,7 +18,7 @@ func init() { if cpuCount > 10 { formatString = "CPU%02d" } - vals, err := psCpu.Percent(iv, l) + vals, err := psCpu.Percent(0, l) if err != nil { return map[string]error{"gopsutil": err} } diff --git a/devices/devices.go b/devices/devices.go index c3cad42..7360578 100644 --- a/devices/devices.go +++ b/devices/devices.go @@ -8,6 +8,8 @@ const ( Temperatures = "Temperatures" // Device domain for temperature sensors ) +// TODO: Redesign; this is not thread safe, and it's easy to write code that triggers concurrent modification panics. Channels? + var Domains []string = []string{Temperatures} var _shutdownFuncs []func() error var _devs map[string][]string diff --git a/devices/temp_openbsd.go b/devices/temp_openbsd.go index d889d78..195882a 100644 --- a/devices/temp_openbsd.go +++ b/devices/temp_openbsd.go @@ -15,7 +15,7 @@ import ( "unsafe" ) -// TODO: Add filtering. Getting the temperature sensor names is non-trivial for OpenBSD, and until I can test it, leave it unimplemented +// TODO: Add sensor filtering func init() { RegisterTemp(update) } diff --git a/fonts/Lat15-VGA16-braille.psf b/fonts/Lat15-VGA16-braille.psf Binary files differnew file mode 100644 index 0000000..52197a6 --- /dev/null +++ b/fonts/Lat15-VGA16-braille.psf diff --git a/fonts/README b/fonts/README new file mode 100644 index 0000000..389bd86 --- /dev/null +++ b/fonts/README @@ -0,0 +1,16 @@ +`Lat15-VGA16-braille.psf` is a Linux console font based on `Lat15-VGA16.psf` +with additional braille and graphic block characters suitable to run gotop +on the Linux console without a graphic environment. To use the braille font, +just run `setfont Lat15-VGA16-braille.psf`. + +To rebase the braille and graphic block characters on a different 16x8 +psf font, use the psf2txt and txt2psf from psftools[1]. In this case, make +sure the `Length:` entry in the file header is set to 512. + +The original `Lat15-VGA16.psf` font file was obtained from the Ubuntu 18.04 +console-setup-linux package[2]. Console fonts are public domain by nature[3]. + + +[1] https://www.seasip.info/Unix/PSF/ +[2] https://launchpad.net/ubuntu/bionic/amd64/console-setup-linux/1.178ubuntu2.7 +[3] https://launchpad.net/ubuntu/bionic/+source/console-setup/+copyright diff --git a/fonts/braille.txt b/fonts/braille.txt new file mode 100644 index 0000000..af774a0 --- /dev/null +++ b/fonts/braille.txt @@ -0,0 +1,4864 @@ +% +// Character 256 +Bitmap: -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002800]; +% +// Character 257 +Bitmap: -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002801]; +% +// Character 258 +Bitmap: -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002802]; +% +// Character 259 +Bitmap: -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002803]; +% +// Character 260 +Bitmap: -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002804]; +% +// Character 261 +Bitmap: -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002805]; +% +// Character 262 +Bitmap: -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002806]; +% +// Character 263 +Bitmap: -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002807]; +% +// Character 264 +Bitmap: -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002808]; +% +// Character 265 +Bitmap: -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002809]; +% +// Character 266 +Bitmap: -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [0000280a]; +% +// Character 267 +Bitmap: -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [0000280b]; +% +// Character 268 +Bitmap: -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [0000280c]; +% +// Character 269 +Bitmap: -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [0000280d]; +% +// Character 270 +Bitmap: -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [0000280e]; +% +// Character 271 +Bitmap: -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [0000280f]; +% +// Character 272 +Bitmap: -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002810]; +% +// Character 273 +Bitmap: -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002811]; +% +// Character 274 +Bitmap: -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002812]; +% +// Character 275 +Bitmap: -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002813]; +% +// Character 276 +Bitmap: -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002814]; +% +// Character 277 +Bitmap: -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002815]; +% +// Character 278 +Bitmap: -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002816]; +% +// Character 279 +Bitmap: -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002817]; +% +// Character 280 +Bitmap: -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002818]; +% +// Character 281 +Bitmap: -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002819]; +% +// Character 282 +Bitmap: -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [0000281a]; +% +// Character 283 +Bitmap: -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [0000281b]; +% +// Character 284 +Bitmap: -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [0000281c]; +% +// Character 285 +Bitmap: -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [0000281d]; +% +// Character 286 +Bitmap: -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [0000281e]; +% +// Character 287 +Bitmap: -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [0000281f]; +% +// Character 288 +Bitmap: -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002820]; +% +// Character 289 +Bitmap: -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002821]; +% +// Character 290 +Bitmap: -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002822]; +% +// Character 291 +Bitmap: -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002823]; +% +// Character 292 +Bitmap: -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002824]; +% +// Character 293 +Bitmap: -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002825]; +% +// Character 294 +Bitmap: -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002826]; +% +// Character 295 +Bitmap: -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002827]; +% +// Character 296 +Bitmap: -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002828]; +% +// Character 297 +Bitmap: -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002829]; +% +// Character 298 +Bitmap: -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [0000282a]; +% +// Character 299 +Bitmap: -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [0000282b]; +% +// Character 300 +Bitmap: -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [0000282c]; +% +// Character 301 +Bitmap: -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [0000282d]; +% +// Character 302 +Bitmap: -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [0000282e]; +% +// Character 303 +Bitmap: -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [0000282f]; +% +// Character 304 +Bitmap: -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002830]; +% +// Character 305 +Bitmap: -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002831]; +% +// Character 306 +Bitmap: -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002832]; +% +// Character 307 +Bitmap: -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002833]; +% +// Character 308 +Bitmap: -------- \ + -------- \ + -------- \ + -------- \ + -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + -------- \ + -------- \ + -------- +Unicode: [00002834]; +% +// Character 309 +Bitmap: -------- \ + -##----- \ + -##----- \ + -------- \ + -------- \ + -----##- \ + -----##- \ + -------- \ + -------- \ + -##--##- \ + -##--##- \ + -------- \ + -------- \ + |