├── .gitignore
├── README.mkd
├── UTF-8-demo.txt
├── bdftruncate.pl
├── images
├── orp-still-1.png
├── orp-still-2.png
├── orp-still-3.png
└── orp-still-4.png
├── lib
├── 8859-1.TXT
├── orp-bold.bdf
├── orp-book.bdf
├── orp-italic.bdf
├── orp-medium.bdf
└── profont.bdf
├── misc
├── fonts.dir
├── orp-bold.pcf.gz
├── orp-book.pcf.gz
├── orp-italic.pcf.gz
├── orp-medium.pcf.gz
└── profont.pcf.gz
├── xfont-install.zsh
└── xfont-test.zsh
/.gitignore:
--------------------------------------------------------------------------------
1 | /tmp
2 | lib/*.bak
3 |
--------------------------------------------------------------------------------
/README.mkd:
--------------------------------------------------------------------------------
1 | # Orp Bitmap Fonts for X11 (xterm, urxvt, etc)
2 |
3 |
4 |
5 | Orp makes X font creation and installation easy. This package includes a few
6 | small fonts to get you started. If you don’t fall in love with them, you can
7 | use this package to quickly create your own.
8 |
9 | Use of this package presupposes a few things:
10 |
11 | 1. You want a small font (so you can optimize screen real estate).
12 | 1. You hate antialiasing of small fonts.
13 | 1. You care about mixing in fonts like bold (and probably even italic).
14 |
15 |
16 |
17 |
18 | This is a simplified extension/fork of the
19 | [Unicode fonts and tools for X11](http://www.cl.cam.ac.uk/~mgk25/ucs-fonts.html)
20 | project.
21 |
22 | Inside you’ll find five newly invented 6x12 bitmap fonts.
23 |
24 | * Orp Medium (adapted from Pro Font with various changes)
25 | * Orp Italic (not perfect but can’t do perfect bitmap italic)
26 | * Orp Bold (only possible readable 6x12 bold; most compelling piece of package)
27 | * Orp Book (like Bookman Old Style; slightly ugly but nearly optimal)
28 | * ProFont (pretty close to [the original](http://en.wikipedia.org/wiki/Pro_font))
29 |
30 | The vertical height on all has been lowered by 1px. _In practice_ this causes no
31 | problems.
32 |
33 | About the name: Given that I am definitely not a “Pro” typographer, I’ve named
34 | this Orp.
35 |
36 | ## Quick start
37 |
38 | ### Arch Linux
39 | There is now an AUR package.
40 |
41 | % yaourt -S pro-font-git
42 |
43 | ### From source
44 | If you just want to start using the provided Orp fonts without tweaking glyphs
45 | or moving things around, all you need to do is run:
46 |
47 | % cd orp-font
48 | % xset +fp $PWD/misc
49 |
50 | You should now be able to fire up an xterm (or better: urxvt) and see the new
51 | Orp you just “installed”:
52 |
53 | % xterm -fn '-misc-orp-medium-r-*--*-*-*-*-*-*-iso10646-1'
54 |
55 | Put the `xset` line (hard-code expanded `$PWD`) into your `~/.Xdefaults` and
56 | you’re now permanent! Read on for tweaking details, philosophy, and anecdotes…
57 |
58 | ## Why a project out of a single font?
59 |
60 | “It’s just a console font; why bother with this?” To some, a beautiful
61 | monospaced bitmap font is a way of life. Many of us need to tweak fonts,
62 | add glyphs, or totally redesign a font. So this project exists because:
63 |
64 | 1. **My ideal font.** I finally have what I consider a perfect enough
65 | programming/do-everything font.
66 |
67 | 2. **Ease of installation.** It’s been non-trivial to create, build, and install
68 | your own X11 font.
69 |
70 | 3. **Font hacking.** At some point in your life you’re going to long for a tweak
71 | to your font, or addition of some wacky glyph you’ve dreamed up.
72 |
73 | 4. **Pontification.** There’s not a lot in here, but this README serves as a
74 | place where I can rant about my font ideals, and explain the importance of
75 | being able to view less common characters and the ability to view a lot of
76 | text at a time.
77 |
78 | Over the past decade I have spent several days here and there fiddling around
79 | with finding good small fonts. Although I’ve been pretty (though not
80 | perfectly) happy with 6x10 in an xterm, I’ve come across files where I needed
81 | to read/use characters that were not available. So I had to move to 6x12. But
82 | it just felt too big or inefficient, and I wasn’t able to view enough lines of
83 | code on my screens. It also had a few things I didn’t like (jagged slashes,
84 | skinny zero, some inconsistent characters). It also had an extra pixel of
85 | spacing per line, which was wasting 10% of the screen.
86 |
87 | I’ve taken my very favorite existing monospace font, [Pro
88 | Font](http://en.wikipedia.org/wiki/Pro_font), adapted an xterm friendly BDF
89 | for it, and enhanced some of its glyphs to be slightly more friendly. Plus,
90 | I’ve added a few other derivative fonts that make up the Orp family.
91 |
92 | ## All you need to understand
93 |
94 | A BDF file is the ‘source code’ of your font. It is modifiable via
95 | a tool called `gbdfed` (Gtk BDF EDitor), which is pretty easy for any n00b to
96 | start whacking glyphs with. After you’re happy with your BDF you run it
97 | through a bunch of tools that create an output (gzipped) PCF file. Finally you
98 | tell X to start using the font/directory.
99 |
100 | There are two major type systems in X: [_Core_ and _Xft_][x11fonts]. Core
101 | fonts are "bitmaps" and are what you want in a terminal. They come in the form
102 | of BDFs (and are compressed as PCFs). Xft fonts are antialiased and you don’t
103 | want these unless you’re looking at larger fonts. You’ll recognize them as
104 | TTFs. Actually, you can selectively turn off antialiasing of TTFs, but still
105 | doesn’t solve the lack of bold/italic offerings.
106 |
107 | ## Included in this repo
108 |
109 | * `*.bdf` — A few fonts that you may like or want to change/use as baseline.
110 |
111 | * `xfont-install.zsh` — The little glue script that could.
112 | Though tiny, it does the full build, plus
113 | installation and setup.
114 |
115 | * `xfont-test.zsh` — Dumps an glyph-intensive test file to the screen. Could
116 | do some other tests in the future.
117 |
118 | * `*.pcf.gz` — I’ve included the Orp fonts in complied form since they’re
119 | tiny, and some will simply want to install them without tweaking/building.
120 | They will be rebuilt if you recompile.
121 |
122 | And things you shouldn’t care about:
123 |
124 | * `bdftruncate.pl` — You’ve probably already got this on your system,
125 | but this newer version is from Markus’ package and provides the recent
126 | support for some of the ISO10646 stuff (I think that’s what it does).
127 | Anyway, the system version doesn’t work for this, so I’m copying it in.
128 |
129 | * Auxiliary stuff for building.
130 |
131 | ## How to create, build, and install a font
132 |
133 | 1. Install some prerequisites.
134 |
135 | % aptitude install xfonts-utils gbdfed
136 |
137 | 1. To create a new font, just copy a base font (you’ll likely want to start
138 | with Orp Medium)
139 |
140 | % cp orp-medium.bdf my-font.bdf
141 |
142 | 1. Fire up `gbdfed`, hack some glyphs, and set up your new font’s properties.
143 | Just hit `C-P` to get to properties and make sure your font family name is
144 | ‘my-font’.
145 |
146 | 1. Build and install to CWD with
147 |
148 | % xfont-install.zsh my-font
149 |
150 | The font tools magic happens via the few commands in there, but you
151 | shouldn’t need to worry about it.
152 |
153 | 1. Figure out what your new font is actually called.
154 |
155 | % xfontsel
156 |
157 | Make sure your new font shows up under ‘fmly’ and select it. You can paste
158 | that crazy `-*-my font-*-…` string into your `~/.Xdefaults-$(hostname)`
159 | file. My preference:
160 |
161 | *font: -misc-orp-medium-r-*-*-12-*-75-75-*-60-iso10646-*
162 | *boldFont: -misc-orp-bold-r-*-*-*-*-*-*-*-*-iso10646-1
163 | *italicFont: -misc-orp-*-i-*-*-*-*-*-*-*-*-iso10646-1
164 |
165 | You can see it and other fonts on the system with `xlsfonts` (and maybe
166 | `fc-list`).
167 |
168 | 1. Test your new font
169 |
170 | % xfont-test.zsh
171 |
172 | 1. Make it permanent by ensuring you’ve done the steps in the Quick Start
173 | section above.
174 |
175 | ## Why bitmap? (vs truetype)
176 |
177 | There are many glyphs that are not available in any but the standard X11
178 | fonts. Use `xfont-test.zsh` as a test.
179 |
180 | For small font rendering it’s highly undesirable to have subpixel smoothing.
181 |
182 | It probably goes without saying, but it is truly shameful to be writing code,
183 | looking at data, or doing much of anything in an editor or terminal with a
184 | variable width font. Programmers depend so much on indented and tabular
185 | formatting that the world would fall apart without monospacing.
186 |
187 | Note to book publishers: Please, please always use monospace fonts for your
188 | code samples.
189 |
190 | ## Why a bold font?
191 |
192 | Bold is beautiful too. But it’s often the ugly step-child of an existing
193 | system font. You’re probably used to seeing it rendered algorithmically as an
194 | adaptation from its ‘medium’ canonical cousin. This results in fonts that
195 | become too heavy (e.g., solid block ‘m’ and ‘#’) and come out unreadable.
196 | However, the 6x12 set can be manually crafted as bold, to a lesser degree of
197 | boldness, and yet still be bold. (This is less of an issue with larger fonts.)
198 |
199 | You can see some of the basic effects in limited color with this:
200 |
201 | % for c in {1..7}; do echo -e "\e[0;$c;3${c}muNitErest1n6 5tR|ng"; done
202 |
203 | Presentational variation is important in the code/documentation you
204 | read/write. If you forgo bold fonts you’re really missing out on
205 | distinguishing of some inherent formatting semantics. Possible variations in a
206 | console include…
207 |
208 | ### Color
209 | This is pretty obvious, as any syntax highlighter will make liberal use
210 | of color differentiation.
211 |
212 | You can even take color to an extreme level by doing standout/inversion, but
213 | it’s rare to want this.
214 |
215 | ### Font/weight (bold vs medium)
216 | Terminals don’t usually allow multiple fonts, but bold can be mixed in and
217 | actually can be a different font.
218 |
219 | Bold is great for distinguishing files in `ls` listings, standing forward
220 | important pieces of code, documentation headings, and several other cases.
221 |
222 | ### Underline
223 | Underline is a bit strong for most things, but for exceptional bits can be
224 | helpful. Examples: FIXME comments, definitions, error messages,
225 | class/interface/module names.
226 |
227 | ### Blinking
228 | This is almost always unwanted. However, I have found it useful for very
229 | glaring things, like failing test output. Essentially, for things that need
230 | immediate attention.
231 |
232 | ### Sizing/obliqueness
233 | Sadly, most terminals (including xterm) don’t offer much in the way of these.
234 |
235 | But there’s great news!! Very recent versions of `urxvt` enable activation of
236 | several fonts at a time. My older Ubuntu required application of a patch to
237 | get full 256 colors, but I suspect newer systems will already have a sane
238 | build of `urxvt` installed.
239 |
240 | ## Why xterm (family)?
241 |
242 | * True bitmap fonts
243 | * All the ISO-10646 glyphs (for math, prompts, drawing, etc)
244 | * Lightweight
245 | * 256+ (RGB) color
246 | * All Properties (bold, underline, inverse) work as expected (except oblique)
247 | * Alt/Meta actually work and are easily configurable
248 |
249 | ## Glyph details (for the tweakers)
250 |
251 | You rarely want to spill pixels into column 6. On occasion I find it’s
252 | acceptable to do so for one pixel on a couple letters. Since col-6 is used as
253 | the ‘spacer’ between characters, it’s pretty essential to keep intact.
254 |
255 | Glyph tops should form a uniform line at row 5. Avoiding a lot of deviating
256 | curves from there maximizes readability.
257 |
258 | The ‘i’ and ‘l’ are altered to be more dissimilar to ‘1’ and ‘|’. They have
259 | an added left shoulder and missing left foot. Somewhat a personal preference,
260 | but this is an important characteristic of the highly popular Monaco, Lucida,
261 | Andale, Deja Vu, and Bitstream Vera, and even generic web browser monospace
262 | fonts.
263 |
264 | Numbers (0/6/9) have a dot added to their middle to make them more
265 | obviously numbers.
266 |
267 | Some special ‘operator’ characters were shrunk a bit. The `*` has been turned
268 | into more of a small dot, as it is often used for bullets and multiplication,
269 | which can be often better expressed in small dot form.
270 |
271 | Other operators follow that small trend: `#$%`. I’ll probably increase the `%`
272 | since it too closely resembles an `x`.
273 |
274 | I like that the original 6x12 uses a strong 2x2px square for dots in various
275 | punctuation. I’ll probably revert the `%` to use them.
276 |
277 | The ProFont is close to the original but has been tweaked to disambiguate some
278 | of the glyphs.
279 |
280 | ## Other languages, extensions
281 |
282 | I’ve already added support for the 12 Esperanto ‘hat’ characters. Other
283 | language accented characters will render fine, but might lack a bit of the
284 | Orp panache.
285 |
286 | The [vim-powerline fancy glyphs](https://github.com/Lokaltog/powerline) are supported in _medium_ (I think the only place they're needed), using the following somewhat original symbols:
287 |
288 | [2b60] Branch symbol
289 | [2b61] LN (line) symbol
290 | [2b62] FT symbol 1
291 | [2b63] FT symbol 2
292 | [2b64] Padlock (closed) symbol
293 | [2b80] Hard right arrow
294 | [2b81] Soft right arrow
295 | [2b82] Hard left arrow
296 | [2b83] Soft left arrow
297 |
298 | To make use of these you’ll need to set in your `~/.vimrc`:
299 |
300 | let Powerline_symbols = 'fancy'
301 |
302 | ## Areas for extension/improvement
303 |
304 | Many will not prefer a font as small as 6x12. It might be nice to recreate Orp
305 | for larger sizes. But once you get into larger fonts, smoothing becomes less
306 | of an issue, so it may be moot, as you can just go with a smoothed font.
307 |
308 | If you really want to economize on screen space, you could reduce your ascent
309 | by another pixel. The font set could possibly even be tweaked to fit into
310 | shorter vertical size, like 6x10.
311 |
312 | It’s kind of amazing to think how much variation can be accomplished in a 72px
313 | grid. I’ve tried creating other alternative characters (sometimes
314 | accidentally) and found that there are probably several other glyph designs
315 | that could work well. So feel free to experiment with new variations.
316 |
317 | Orp-Italic still needs an italicization treatment for its capital letters.
318 |
319 | It would be nice to support the exotic [vim-powerline](https://bitbucket.org/gkuznets/vimrc/src/57616999e524754d951c1e4191aafe2a48e41a09/bundle/vim-powerline/fontpatcher/fontpatcher) glyphs.
320 |
321 | ## Why not just use Markus’ package?
322 |
323 | Maybe you should; that’s what I did before arriving here. There’s nothing
324 | wrong with it – we are greatly indebted to its existence. However, its process
325 | of building a single new font individually is cumbersome. It’s also not
326 | maintained in git (AFAIK) and it doesn’t have Orp. I wasn’t able to get a
327 | response from Markus in email to get Orp included, so it lives here.
328 |
329 | ## Resources
330 |
331 | * [Terminal codes](http://linuxgazette.net/issue65/padala.html)
332 | * [Markus Kuhn’s X11 Fonts](http://www.cl.cam.ac.uk/~mgk25/ucs-fonts.html)
333 | * [Adding a font to your system](http://osr507doc.sco.com/en/GECG/X_Font_ProcAddFn.html)
334 | * [Computer fonts explained](http://en.wikipedia.org/wiki/Computer_font)
335 | * [X11 Font Types][x11fonts]
336 |
337 | [x11fonts]: http://www.xfree86.org/current/fonts2.html "X11 Font Types"
338 |
--------------------------------------------------------------------------------
/UTF-8-demo.txt:
--------------------------------------------------------------------------------
1 |
2 | UTF-8 encoded sample plain-text file
3 | ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
4 |
5 | Markus Kuhn [ˈmaʳkʊs kuːn] — 2002-07-25
6 |
7 |
8 | The ASCII compatible UTF-8 encoding used in this plain-text file
9 | is defined in Unicode, ISO 10646-1, and RFC 2279.
10 |
11 |
12 | Using Unicode/UTF-8, you can write in emails and source code things such as
13 |
14 | Mathematics and sciences:
15 |
16 | ∮ E⋅da = Q, n → ∞, ∑ f(i) = ∏ g(i), ⎧⎡⎛┌─────┐⎞⎤⎫
17 | ⎪⎢⎜│a²+b³ ⎟⎥⎪
18 | ∀x∈ℝ: ⌈x⌉ = −⌊−x⌋, α ∧ ¬β = ¬(¬α ∨ β), ⎪⎢⎜│───── ⎟⎥⎪
19 | ⎪⎢⎜⎷ c₈ ⎟⎥⎪
20 | ℕ ⊆ ℕ₀ ⊂ ℤ ⊂ ℚ ⊂ ℝ ⊂ ℂ, ⎨⎢⎜ ⎟⎥⎬
21 | ⎪⎢⎜ ∞ ⎟⎥⎪
22 | ⊥ < a ≠ b ≡ c ≤ d ≪ ⊤ ⇒ (⟦A⟧ ⇔ ⟪B⟫), ⎪⎢⎜ ⎲ ⎟⎥⎪
23 | ⎪⎢⎜ ⎳aⁱ-bⁱ⎟⎥⎪
24 | 2H₂ + O₂ ⇌ 2H₂O, R = 4.7 kΩ, ⌀ 200 mm ⎩⎣⎝i=1 ⎠⎦⎭
25 |
26 | Linguistics and dictionaries:
27 |
28 | ði ıntəˈnæʃənəl fəˈnɛtık əsoʊsiˈeıʃn
29 | Y [ˈʏpsilɔn], Yen [jɛn], Yoga [ˈjoːgɑ]
30 |
31 | APL:
32 |
33 | ((V⍳V)=⍳⍴V)/V←,V ⌷←⍳→⍴∆∇⊃‾⍎⍕⌈
34 |
35 | Nicer typography in plain text files:
36 |
37 | ╔══════════════════════════════════════════╗
38 | ║ ║
39 | ║ • ‘single’ and “double” quotes ║
40 | ║ ║
41 | ║ • Curly apostrophes: “We’ve been here” ║
42 | ║ ║
43 | ║ • Latin-1 apostrophe and accents: '´` ║
44 | ║ ║
45 | ║ • ‚deutsche‘ „Anführungszeichen“ ║
46 | ║ ║
47 | ║ • †, ‡, ‰, •, 3–4, —, −5/+5, ™, … ║
48 | ║ ║
49 | ║ • ASCII safety test: 1lI|, 0OD, 8B ║
50 | ║ ╭─────────╮ ║
51 | ║ • the euro symbol: │ 14.95 € │ ║
52 | ║ ╰─────────╯ ║
53 | ╚══════════════════════════════════════════╝
54 |
55 | Combining characters:
56 |
57 | STARGΛ̊TE SG-1, a = v̇ = r̈, a⃑ ⊥ b⃑
58 |
59 | Greek (in Polytonic):
60 |
61 | The Greek anthem:
62 |
63 | Σὲ γνωρίζω ἀπὸ τὴν κόψη
64 | τοῦ σπαθιοῦ τὴν τρομερή,
65 | σὲ γνωρίζω ἀπὸ τὴν ὄψη
66 | ποὺ μὲ βία μετράει τὴ γῆ.
67 |
68 | ᾿Απ᾿ τὰ κόκκαλα βγαλμένη
69 | τῶν ῾Ελλήνων τὰ ἱερά
70 | καὶ σὰν πρῶτα ἀνδρειωμένη
71 | χαῖρε, ὦ χαῖρε, ᾿Ελευθεριά!
72 |
73 | From a speech of Demosthenes in the 4th century BC:
74 |
75 | Οὐχὶ ταὐτὰ παρίσταταί μοι γιγνώσκειν, ὦ ἄνδρες ᾿Αθηναῖοι,
76 | ὅταν τ᾿ εἰς τὰ πράγματα ἀποβλέψω καὶ ὅταν πρὸς τοὺς
77 | λόγους οὓς ἀκούω· τοὺς μὲν γὰρ λόγους περὶ τοῦ
78 | τιμωρήσασθαι Φίλιππον ὁρῶ γιγνομένους, τὰ δὲ πράγματ᾿
79 | εἰς τοῦτο προήκοντα, ὥσθ᾿ ὅπως μὴ πεισόμεθ᾿ αὐτοὶ
80 | πρότερον κακῶς σκέψασθαι δέον. οὐδέν οὖν ἄλλο μοι δοκοῦσιν
81 | οἱ τὰ τοιαῦτα λέγοντες ἢ τὴν ὑπόθεσιν, περὶ ἧς βουλεύεσθαι,
82 | οὐχὶ τὴν οὖσαν παριστάντες ὑμῖν ἁμαρτάνειν. ἐγὼ δέ, ὅτι μέν
83 | ποτ᾿ ἐξῆν τῇ πόλει καὶ τὰ αὑτῆς ἔχειν ἀσφαλῶς καὶ Φίλιππον
84 | τιμωρήσασθαι, καὶ μάλ᾿ ἀκριβῶς οἶδα· ἐπ᾿ ἐμοῦ γάρ, οὐ πάλαι
85 | γέγονεν ταῦτ᾿ ἀμφότερα· νῦν μέντοι πέπεισμαι τοῦθ᾿ ἱκανὸν
86 | προλαβεῖν ἡμῖν εἶναι τὴν πρώτην, ὅπως τοὺς συμμάχους
87 | σώσομεν. ἐὰν γὰρ τοῦτο βεβαίως ὑπάρξῃ, τότε καὶ περὶ τοῦ
88 | τίνα τιμωρήσεταί τις καὶ ὃν τρόπον ἐξέσται σκοπεῖν· πρὶν δὲ
89 | τὴν ἀρχὴν ὀρθῶς ὑποθέσθαι, μάταιον ἡγοῦμαι περὶ τῆς
90 | τελευτῆς ὁντινοῦν ποιεῖσθαι λόγον.
91 |
92 | Δημοσθένους, Γ´ ᾿Ολυνθιακὸς
93 |
94 | Georgian:
95 |
96 | From a Unicode conference invitation:
97 |
98 | გთხოვთ ახლავე გაიაროთ რეგისტრაცია Unicode-ის მეათე საერთაშორისო
99 | კონფერენციაზე დასასწრებად, რომელიც გაიმართება 10-12 მარტს,
100 | ქ. მაინცში, გერმანიაში. კონფერენცია შეჰკრებს ერთად მსოფლიოს
101 | ექსპერტებს ისეთ დარგებში როგორიცაა ინტერნეტი და Unicode-ი,
102 | ინტერნაციონალიზაცია და ლოკალიზაცია, Unicode-ის გამოყენება
103 | ოპერაციულ სისტემებსა, და გამოყენებით პროგრამებში, შრიფტებში,
104 | ტექსტების დამუშავებასა და მრავალენოვან კომპიუტერულ სისტემებში.
105 |
106 | Russian:
107 |
108 | From a Unicode conference invitation:
109 |
110 | Зарегистрируйтесь сейчас на Десятую Международную Конференцию по
111 | Unicode, которая состоится 10-12 марта 1997 года в Майнце в Германии.
112 | Конференция соберет широкий круг экспертов по вопросам глобального
113 | Интернета и Unicode, локализации и интернационализации, воплощению и
114 | применению Unicode в различных операционных системах и программных
115 | приложениях, шрифтах, верстке и многоязычных компьютерных системах.
116 |
117 | Thai (UCS Level 2):
118 |
119 | Excerpt from a poetry on The Romance of The Three Kingdoms (a Chinese
120 | classic 'San Gua'):
121 |
122 | [----------------------------|------------------------]
123 | ๏ แผ่นดินฮั่นเสื่อมโทรมแสนสังเวช พระปกเกศกองบู๊กู้ขึ้นใหม่
124 | สิบสองกษัตริย์ก่อนหน้าแลถัดไป สององค์ไซร้โง่เขลาเบาปัญญา
125 | ทรงนับถือขันทีเป็นที่พึ่ง บ้านเมืองจึงวิปริตเป็นนักหนา
126 | โฮจิ๋นเรียกทัพทั่วหัวเมืองมา หมายจะฆ่ามดชั่วตัวสำคัญ
127 | เหมือนขับไสไล่เสือจากเคหา รับหมาป่าเข้ามาเลยอาสัญ
128 | ฝ่ายอ้องอุ้นยุแยกให้แตกกัน ใช้สาวนั้นเป็นชนวนชื่นชวนใจ
129 | พลันลิฉุยกุยกีกลับก่อเหตุ ช่างอาเพศจริงหนาฟ้าร้องไห้
130 | ต้องรบราฆ่าฟันจนบรรลัย ฤๅหาใครค้ำชูกู้บรรลังก์ ฯ
131 |
132 | (The above is a two-column text. If combining characters are handled
133 | correctly, the lines of the second column should be aligned with the
134 | | character above.)
135 |
136 | Ethiopian:
137 |
138 | Proverbs in the Amharic language:
139 |
140 | ሰማይ አይታረስ ንጉሥ አይከሰስ።
141 | ብላ ካለኝ እንደአባቴ በቆመጠኝ።
142 | ጌጥ ያለቤቱ ቁምጥና ነው።
143 | ደሀ በሕልሙ ቅቤ ባይጠጣ ንጣት በገደለው።
144 | የአፍ ወለምታ በቅቤ አይታሽም።
145 | አይጥ በበላ ዳዋ ተመታ።
146 | ሲተረጉሙ ይደረግሙ።
147 | ቀስ በቀስ፥ ዕንቁላል በእግሩ ይሄዳል።
148 | ድር ቢያብር አንበሳ ያስር።
149 | ሰው እንደቤቱ እንጅ እንደ ጉረቤቱ አይተዳደርም።
150 | እግዜር የከፈተውን ጉሮሮ ሳይዘጋው አይድርም።
151 | የጎረቤት ሌባ፥ ቢያዩት ይስቅ ባያዩት ያጠልቅ።
152 | ሥራ ከመፍታት ልጄን ላፋታት።
153 | ዓባይ ማደሪያ የለው፥ ግንድ ይዞ ይዞራል።
154 | የእስላም አገሩ መካ የአሞራ አገሩ ዋርካ።
155 | ተንጋሎ ቢተፉ ተመልሶ ባፉ።
156 | ወዳጅህ ማር ቢሆን ጨርስህ አትላሰው።
157 | እግርህን በፍራሽህ ልክ ዘርጋ።
158 |
159 | Runes:
160 |
161 | ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛏ ᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ ᚹᛁᚦ ᚦᚪ ᚹᛖᛥᚫ
162 |
163 | (Old English, which transcribed into Latin reads 'He cwaeth that he
164 | bude thaem lande northweardum with tha Westsae.' and means 'He said
165 | that he lived in the northern land near the Western Sea.')
166 |
167 | Braille:
168 |
169 | ⡌⠁⠧⠑ ⠼⠁⠒ ⡍⠜⠇⠑⠹⠰⠎ ⡣⠕⠌
170 |
171 | ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠙⠑⠁⠙⠒ ⠞⠕ ⠃⠑⠛⠔ ⠺⠊⠹⠲ ⡹⠻⠑ ⠊⠎ ⠝⠕ ⠙⠳⠃⠞
172 | ⠱⠁⠞⠑⠧⠻ ⠁⠃⠳⠞ ⠹⠁⠞⠲ ⡹⠑ ⠗⠑⠛⠊⠌⠻ ⠕⠋ ⠙⠊⠎ ⠃⠥⠗⠊⠁⠇ ⠺⠁⠎
173 | ⠎⠊⠛⠝⠫ ⠃⠹ ⠹⠑ ⠊⠇⠻⠛⠹⠍⠁⠝⠂ ⠹⠑ ⠊⠇⠻⠅⠂ ⠹⠑ ⠥⠝⠙⠻⠞⠁⠅⠻⠂
174 | ⠁⠝⠙ ⠹⠑ ⠡⠊⠑⠋ ⠍⠳⠗⠝⠻⠲ ⡎⠊⠗⠕⠕⠛⠑ ⠎⠊⠛⠝⠫ ⠊⠞⠲ ⡁⠝⠙
175 | ⡎⠊⠗⠕⠕⠛⠑⠰⠎ ⠝⠁⠍⠑ ⠺⠁⠎ ⠛⠕⠕⠙ ⠥⠏⠕⠝ ⠰⡡⠁⠝⠛⠑⠂ ⠋⠕⠗ ⠁⠝⠹⠹⠔⠛ ⠙⠑
176 | ⠡⠕⠎⠑ ⠞⠕ ⠏⠥⠞ ⠙⠊⠎ ⠙⠁⠝⠙ ⠞⠕⠲
177 |
178 | ⡕⠇⠙ ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲
179 |
180 | ⡍⠔⠙⠖ ⡊ ⠙⠕⠝⠰⠞ ⠍⠑⠁⠝ ⠞⠕ ⠎⠁⠹ ⠹⠁⠞ ⡊ ⠅⠝⠪⠂ ⠕⠋ ⠍⠹
181 | ⠪⠝ ⠅⠝⠪⠇⠫⠛⠑⠂ ⠱⠁⠞ ⠹⠻⠑ ⠊⠎ ⠏⠜⠞⠊⠊⠥⠇⠜⠇⠹ ⠙⠑⠁⠙ ⠁⠃⠳⠞
182 | ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ ⡊ ⠍⠊⠣⠞ ⠙⠁⠧⠑ ⠃⠑⠲ ⠔⠊⠇⠔⠫⠂ ⠍⠹⠎⠑⠇⠋⠂ ⠞⠕
183 | ⠗⠑⠛⠜⠙ ⠁ ⠊⠕⠋⠋⠔⠤⠝⠁⠊⠇ ⠁⠎ ⠹⠑ ⠙⠑⠁⠙⠑⠌ ⠏⠊⠑⠊⠑ ⠕⠋ ⠊⠗⠕⠝⠍⠕⠝⠛⠻⠹
184 | ⠔ ⠹⠑ ⠞⠗⠁⠙⠑⠲ ⡃⠥⠞ ⠹⠑ ⠺⠊⠎⠙⠕⠍ ⠕⠋ ⠳⠗ ⠁⠝⠊⠑⠌⠕⠗⠎
185 | ⠊⠎ ⠔ ⠹⠑ ⠎⠊⠍⠊⠇⠑⠆ ⠁⠝⠙ ⠍⠹ ⠥⠝⠙⠁⠇⠇⠪⠫ ⠙⠁⠝⠙⠎
186 | ⠩⠁⠇⠇ ⠝⠕⠞ ⠙⠊⠌⠥⠗⠃ ⠊⠞⠂ ⠕⠗ ⠹⠑ ⡊⠳⠝⠞⠗⠹⠰⠎ ⠙⠕⠝⠑ ⠋⠕⠗⠲ ⡹⠳
187 | ⠺⠊⠇⠇ ⠹⠻⠑⠋⠕⠗⠑ ⠏⠻⠍⠊⠞ ⠍⠑ ⠞⠕ ⠗⠑⠏⠑⠁⠞⠂ ⠑⠍⠏⠙⠁⠞⠊⠊⠁⠇⠇⠹⠂ ⠹⠁⠞
188 | ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲
189 |
190 | (The first couple of paragraphs of "A Christmas Carol" by Dickens)
191 |
192 | Compact font selection example text:
193 |
194 | ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789
195 | abcdefghijklmnopqrstuvwxyz £©µÀÆÖÞßéöÿ
196 | –—‘“”„†•…‰™œŠŸž€ ΑΒΓΔΩαβγδω АБВГДабвгд
197 | ∀∂∈ℝ∧∪≡∞ ↑↗↨↻⇣ ┐┼╔╘░►☺♀ fi�⑀₂ἠḂӥẄɐː⍎אԱა
198 |
199 | Greetings in various languages:
200 |
201 | Hello world, Καλημέρα κόσμε, コンニチハ
202 |
203 | Box drawing alignment tests: █
204 | ▉
205 | ╔══╦══╗ ┌──┬──┐ ╭──┬──╮ ╭──┬──╮ ┏━━┳━━┓ ┎┒┏┑ ╷ ╻ ┏┯┓ ┌┰┐ ▊ ╱╲╱╲╳╳╳
206 | ║┌─╨─┐║ │╔═╧═╗│ │╒═╪═╕│ │╓─╁─╖│ ┃┌─╂─┐┃ ┗╃╄┙ ╶┼╴╺╋╸┠┼┨ ┝╋┥ ▋ ╲╱╲╱╳╳╳
207 | ║│╲ ╱│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╿ │┃ ┍╅╆┓ ╵ ╹ ┗┷┛ └┸┘ ▌ ╱╲╱╲╳╳╳
208 | ╠╡ ╳ ╞╣ ├╢ ╟┤ ├┼─┼─┼┤ ├╫─╂─╫┤ ┣┿╾┼╼┿┫ ┕┛┖┚ ┌┄┄┐ ╎ ┏┅┅┓ ┋ ▍ ╲╱╲╱╳╳╳
209 | ║│╱ ╲│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╽ │┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▎
210 | ║└─╥─┘║ │╚═╤═╝│ │╘═╪═╛│ │╙─╀─╜│ ┃└─╂─┘┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▏
211 | ╚══╩══╝ └──┴──┘ ╰──┴──╯ ╰──┴──╯ ┗━━┻━━┛ ▗▄▖▛▀▜ └╌╌┘ ╎ ┗╍╍┛ ┋ ▁▂▃▄▅▆▇█
212 | ▝▀▘▙▄▟
213 |
--------------------------------------------------------------------------------
/bdftruncate.pl:
--------------------------------------------------------------------------------
1 | #!/usr/bin/perl
2 | #
3 | # bdftruncate.pl -- Markus Kuhn
4 | #
5 | # This Perl script allows you to generate from an ISO10646-1 encoded
6 | # BDF font other ISO10646-1 BDF fonts in which all characters above
7 | # a threshold code value are stored unencoded.
8 | #
9 | # $Id: bdftruncate.pl,v 1.8 2006-01-05 20:31:45+00 mgk25 Rel $
10 |
11 | # Subroutine to identify whether the ISO 10646/Unicode character code
12 | # ucs belongs into the East Asian Wide (W) or East Asian FullWidth
13 | # (F) category as defined in Unicode Technical Report #11.
14 | sub iswide ($) {
15 | my $ucs = shift(@_);
16 |
17 | return ($ucs >= 0x1100 &&
18 | ($ucs <= 0x115f || # Hangul Jamo
19 | ($ucs >= 0x2e80 && $ucs <= 0xa4cf &&
20 | ($ucs & ~0x0011) != 0x300a && $ucs != 0x303f) || # CJK .. Yi
21 | ($ucs >= 0xac00 && $ucs <= 0xd7a3) || # Hangul Syllables
22 | ($ucs >= 0xf900 && $ucs <= 0xfaff) || # CJK Comp. Ideographs
23 | ($ucs >= 0xfe30 && $ucs <= 0xfe6f) || # CJK Comp. Forms
24 | ($ucs >= 0xff00 && $ucs <= 0xff5f) || # Fullwidth Forms
25 | ($ucs >= 0xffe0 && $ucs <= 0xffe6) ||
26 | ($ucs >= 0x20000 && $ucs <= 0x2ffff)));
27 | }
28 |
29 | # parse options
30 | if ($ARGV[0] eq '-w' || $ARGV[0] eq '+w') {
31 | $removewide = $ARGV[0] eq '-w';
32 | shift @ARGV;
33 | }
34 |
35 | print STDERR <destination.bdf
38 |
39 | Example:
40 |
41 | bdftruncate.pl 0x3200 <6x13.bdf >6x13t.bdf
42 |
43 | will generate the file 6x13t.bdf in which all glyphs with codes
44 | >= 0x3200 will only be stored unencoded (i.e., ENCODING -1).
45 | Option -w removes East Asian Wide and East Asian FullWidth characters
46 | (default if threshold <= 0x3200), and option +w keeps them.
47 |
48 | End
49 |
50 | exit 1 if $#ARGV != 0;
51 |
52 | # read threshold value from command line
53 | $threshold = $ARGV[0];
54 | if ($threshold =~ /^(0[xX]|U[+-]?)([0-9a-fA-F]+)$/) {
55 | $threshold = hex($2);
56 | } elsif (!($threshold =~ /^[0-9]+$/)) {
57 | die("Illegal threshold '$threshold'!\n");
58 | }
59 | $removewide = $threshold <= 0x3200 unless defined $removewide;
60 |
61 | # filter file
62 | while () {
63 | if (/^ENCODING\s+(-?\d+)/ &&
64 | ($1 >= $threshold || ($removewide && iswide($1)))) {
65 | print "ENCODING -1\n";
66 | } elsif (/^STARTFONT/) {
67 | print;
68 | print "COMMENT AUTOMATICALLY GENERATED FILE. DO NOT EDIT!\n";
69 | printf("COMMENT In this version of the font file, all characters >= " .
70 | "U+%04X are\nCOMMENT not encoded to keep XFontStruct small.\n",
71 | $threshold);
72 | } else {
73 | s/^COMMENT\s+\"(.*)\"$/COMMENT $1/;
74 | s/^COMMENT\s+\$[I]d: (.*)\$\s*$/COMMENT Derived from $1\n/;
75 | print;
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/images/orp-still-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicahElliott/Orp-Font/7f3546337787b6c232f28d905ed4d12f3b317d4a/images/orp-still-1.png
--------------------------------------------------------------------------------
/images/orp-still-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicahElliott/Orp-Font/7f3546337787b6c232f28d905ed4d12f3b317d4a/images/orp-still-2.png
--------------------------------------------------------------------------------
/images/orp-still-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicahElliott/Orp-Font/7f3546337787b6c232f28d905ed4d12f3b317d4a/images/orp-still-3.png
--------------------------------------------------------------------------------
/images/orp-still-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicahElliott/Orp-Font/7f3546337787b6c232f28d905ed4d12f3b317d4a/images/orp-still-4.png
--------------------------------------------------------------------------------
/lib/8859-1.TXT:
--------------------------------------------------------------------------------
1 | #
2 | # Name: ISO/IEC 8859-1:1998 to Unicode
3 | # Unicode version: 3.0
4 | # Table version: 1.0
5 | # Table format: Format A
6 | # Date: 1999 July 27
7 | # Authors: Ken Whistler
8 | #
9 | # Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
10 | #
11 | # This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
12 | # No claims are made as to fitness for any particular purpose. No
13 | # warranties of any kind are expressed or implied. The recipient
14 | # agrees to determine applicability of information provided. If this
15 | # file has been provided on optical media by Unicode, Inc., the sole
16 | # remedy for any claim will be exchange of defective media within 90
17 | # days of receipt.
18 | #
19 | # Unicode, Inc. hereby grants the right to freely use the information
20 | # supplied in this file in the creation of products supporting the
21 | # Unicode Standard, and to make copies of this file in any form for
22 | # internal or external distribution as long as this notice remains
23 | # attached.
24 | #
25 | # General notes:
26 | #
27 | # This table contains the data the Unicode Consortium has on how
28 | # ISO/IEC 8859-1:1998 characters map into Unicode.
29 | #
30 | # Format: Three tab-separated columns
31 | # Column #1 is the ISO/IEC 8859-1 code (in hex as 0xXX)
32 | # Column #2 is the Unicode (in hex as 0xXXXX)
33 | # Column #3 the Unicode name (follows a comment sign, '#')
34 | #
35 | # The entries are in ISO/IEC 8859-1 order.
36 | #
37 | # Version history
38 | # 1.0 version updates 0.1 version by adding mappings for all
39 | # control characters.
40 | #
41 | # Updated versions of this file may be found in:
42 | #
43 | #
44 | # Any comments or problems, contact
45 | # Please note that is an archival address;
46 | # notices will be checked, but do not expect an immediate response.
47 | #
48 | 0x00 0x0000 # NULL
49 | 0x01 0x0001 # START OF HEADING
50 | 0x02 0x0002 # START OF TEXT
51 | 0x03 0x0003 # END OF TEXT
52 | 0x04 0x0004 # END OF TRANSMISSION
53 | 0x05 0x0005 # ENQUIRY
54 | 0x06 0x0006 # ACKNOWLEDGE
55 | 0x07 0x0007 # BELL
56 | 0x08 0x0008 # BACKSPACE
57 | 0x09 0x0009 # HORIZONTAL TABULATION
58 | 0x0A 0x000A # LINE FEED
59 | 0x0B 0x000B # VERTICAL TABULATION
60 | 0x0C 0x000C # FORM FEED
61 | 0x0D 0x000D # CARRIAGE RETURN
62 | 0x0E 0x000E # SHIFT OUT
63 | 0x0F 0x000F # SHIFT IN
64 | 0x10 0x0010 # DATA LINK ESCAPE
65 | 0x11 0x0011 # DEVICE CONTROL ONE
66 | 0x12 0x0012 # DEVICE CONTROL TWO
67 | 0x13 0x0013 # DEVICE CONTROL THREE
68 | 0x14 0x0014 # DEVICE CONTROL FOUR
69 | 0x15 0x0015 # NEGATIVE ACKNOWLEDGE
70 | 0x16 0x0016 # SYNCHRONOUS IDLE
71 | 0x17 0x0017 # END OF TRANSMISSION BLOCK
72 | 0x18 0x0018 # CANCEL
73 | 0x19 0x0019 # END OF MEDIUM
74 | 0x1A 0x001A # SUBSTITUTE
75 | 0x1B 0x001B # ESCAPE
76 | 0x1C 0x001C # FILE SEPARATOR
77 | 0x1D 0x001D # GROUP SEPARATOR
78 | 0x1E 0x001E # RECORD SEPARATOR
79 | 0x1F 0x001F # UNIT SEPARATOR
80 | 0x20 0x0020 # SPACE
81 | 0x21 0x0021 # EXCLAMATION MARK
82 | 0x22 0x0022 # QUOTATION MARK
83 | 0x23 0x0023 # NUMBER SIGN
84 | 0x24 0x0024 # DOLLAR SIGN
85 | 0x25 0x0025 # PERCENT SIGN
86 | 0x26 0x0026 # AMPERSAND
87 | 0x27 0x0027 # APOSTROPHE
88 | 0x28 0x0028 # LEFT PARENTHESIS
89 | 0x29 0x0029 # RIGHT PARENTHESIS
90 | 0x2A 0x002A # ASTERISK
91 | 0x2B 0x002B # PLUS SIGN
92 | 0x2C 0x002C # COMMA
93 | 0x2D 0x002D # HYPHEN-MINUS
94 | 0x2E 0x002E # FULL STOP
95 | 0x2F 0x002F # SOLIDUS
96 | 0x30 0x0030 # DIGIT ZERO
97 | 0x31 0x0031 # DIGIT ONE
98 | 0x32 0x0032 # DIGIT TWO
99 | 0x33 0x0033 # DIGIT THREE
100 | 0x34 0x0034 # DIGIT FOUR
101 | 0x35 0x0035 # DIGIT FIVE
102 | 0x36 0x0036 # DIGIT SIX
103 | 0x37 0x0037 # DIGIT SEVEN
104 | 0x38 0x0038 # DIGIT EIGHT
105 | 0x39 0x0039 # DIGIT NINE
106 | 0x3A 0x003A # COLON
107 | 0x3B 0x003B # SEMICOLON
108 | 0x3C 0x003C # LESS-THAN SIGN
109 | 0x3D 0x003D # EQUALS SIGN
110 | 0x3E 0x003E # GREATER-THAN SIGN
111 | 0x3F 0x003F # QUESTION MARK
112 | 0x40 0x0040 # COMMERCIAL AT
113 | 0x41 0x0041 # LATIN CAPITAL LETTER A
114 | 0x42 0x0042 # LATIN CAPITAL LETTER B
115 | 0x43 0x0043 # LATIN CAPITAL LETTER C
116 | 0x44 0x0044 # LATIN CAPITAL LETTER D
117 | 0x45 0x0045 # LATIN CAPITAL LETTER E
118 | 0x46 0x0046 # LATIN CAPITAL LETTER F
119 | 0x47 0x0047 # LATIN CAPITAL LETTER G
120 | 0x48 0x0048 # LATIN CAPITAL LETTER H
121 | 0x49 0x0049 # LATIN CAPITAL LETTER I
122 | 0x4A 0x004A # LATIN CAPITAL LETTER J
123 | 0x4B 0x004B # LATIN CAPITAL LETTER K
124 | 0x4C 0x004C # LATIN CAPITAL LETTER L
125 | 0x4D 0x004D # LATIN CAPITAL LETTER M
126 | 0x4E 0x004E # LATIN CAPITAL LETTER N
127 | 0x4F 0x004F # LATIN CAPITAL LETTER O
128 | 0x50 0x0050 # LATIN CAPITAL LETTER P
129 | 0x51 0x0051 # LATIN CAPITAL LETTER Q
130 | 0x52 0x0052 # LATIN CAPITAL LETTER R
131 | 0x53 0x0053 # LATIN CAPITAL LETTER S
132 | 0x54 0x0054 # LATIN CAPITAL LETTER T
133 | 0x55 0x0055 # LATIN CAPITAL LETTER U
134 | 0x56 0x0056 # LATIN CAPITAL LETTER V
135 | 0x57 0x0057 # LATIN CAPITAL LETTER W
136 | 0x58 0x0058 # LATIN CAPITAL LETTER X
137 | 0x59 0x0059 # LATIN CAPITAL LETTER Y
138 | 0x5A 0x005A # LATIN CAPITAL LETTER Z
139 | 0x5B 0x005B # LEFT SQUARE BRACKET
140 | 0x5C 0x005C # REVERSE SOLIDUS
141 | 0x5D 0x005D # RIGHT SQUARE BRACKET
142 | 0x5E 0x005E # CIRCUMFLEX ACCENT
143 | 0x5F 0x005F # LOW LINE
144 | 0x60 0x0060 # GRAVE ACCENT
145 | 0x61 0x0061 # LATIN SMALL LETTER A
146 | 0x62 0x0062 # LATIN SMALL LETTER B
147 | 0x63 0x0063 # LATIN SMALL LETTER C
148 | 0x64 0x0064 # LATIN SMALL LETTER D
149 | 0x65 0x0065 # LATIN SMALL LETTER E
150 | 0x66 0x0066 # LATIN SMALL LETTER F
151 | 0x67 0x0067 # LATIN SMALL LETTER G
152 | 0x68 0x0068 # LATIN SMALL LETTER H
153 | 0x69 0x0069 # LATIN SMALL LETTER I
154 | 0x6A 0x006A # LATIN SMALL LETTER J
155 | 0x6B 0x006B # LATIN SMALL LETTER K
156 | 0x6C 0x006C # LATIN SMALL LETTER L
157 | 0x6D 0x006D # LATIN SMALL LETTER M
158 | 0x6E 0x006E # LATIN SMALL LETTER N
159 | 0x6F 0x006F # LATIN SMALL LETTER O
160 | 0x70 0x0070 # LATIN SMALL LETTER P
161 | 0x71 0x0071 # LATIN SMALL LETTER Q
162 | 0x72 0x0072 # LATIN SMALL LETTER R
163 | 0x73 0x0073 # LATIN SMALL LETTER S
164 | 0x74 0x0074 # LATIN SMALL LETTER T
165 | 0x75 0x0075 # LATIN SMALL LETTER U
166 | 0x76 0x0076 # LATIN SMALL LETTER V
167 | 0x77 0x0077 # LATIN SMALL LETTER W
168 | 0x78 0x0078 # LATIN SMALL LETTER X
169 | 0x79 0x0079 # LATIN SMALL LETTER Y
170 | 0x7A 0x007A # LATIN SMALL LETTER Z
171 | 0x7B 0x007B # LEFT CURLY BRACKET
172 | 0x7C 0x007C # VERTICAL LINE
173 | 0x7D 0x007D # RIGHT CURLY BRACKET
174 | 0x7E 0x007E # TILDE
175 | 0x7F 0x007F # DELETE
176 | 0x80 0x0080 #
177 | 0x81 0x0081 #
178 | 0x82 0x0082 #
179 | 0x83 0x0083 #
180 | 0x84 0x0084 #
181 | 0x85 0x0085 #
182 | 0x86 0x0086 #
183 | 0x87 0x0087 #
184 | 0x88 0x0088 #
185 | 0x89 0x0089 #
186 | 0x8A 0x008A #
187 | 0x8B 0x008B #
188 | 0x8C 0x008C #
189 | 0x8D 0x008D #
190 | 0x8E 0x008E #
191 | 0x8F 0x008F #
192 | 0x90 0x0090 #
193 | 0x91 0x0091 #
194 | 0x92 0x0092 #
195 | 0x93 0x0093 #
196 | 0x94 0x0094 #
197 | 0x95 0x0095 #
198 | 0x96 0x0096 #
199 | 0x97 0x0097 #
200 | 0x98 0x0098 #
201 | 0x99 0x0099 #
202 | 0x9A 0x009A #
203 | 0x9B 0x009B #
204 | 0x9C 0x009C #
205 | 0x9D 0x009D #
206 | 0x9E 0x009E #
207 | 0x9F 0x009F #
208 | 0xA0 0x00A0 # NO-BREAK SPACE
209 | 0xA1 0x00A1 # INVERTED EXCLAMATION MARK
210 | 0xA2 0x00A2 # CENT SIGN
211 | 0xA3 0x00A3 # POUND SIGN
212 | 0xA4 0x00A4 # CURRENCY SIGN
213 | 0xA5 0x00A5 # YEN SIGN
214 | 0xA6 0x00A6 # BROKEN BAR
215 | 0xA7 0x00A7 # SECTION SIGN
216 | 0xA8 0x00A8 # DIAERESIS
217 | 0xA9 0x00A9 # COPYRIGHT SIGN
218 | 0xAA 0x00AA # FEMININE ORDINAL INDICATOR
219 | 0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
220 | 0xAC 0x00AC # NOT SIGN
221 | 0xAD 0x00AD # SOFT HYPHEN
222 | 0xAE 0x00AE # REGISTERED SIGN
223 | 0xAF 0x00AF # MACRON
224 | 0xB0 0x00B0 # DEGREE SIGN
225 | 0xB1 0x00B1 # PLUS-MINUS SIGN
226 | 0xB2 0x00B2 # SUPERSCRIPT TWO
227 | 0xB3 0x00B3 # SUPERSCRIPT THREE
228 | 0xB4 0x00B4 # ACUTE ACCENT
229 | 0xB5 0x00B5 # MICRO SIGN
230 | 0xB6 0x00B6 # PILCROW SIGN
231 | 0xB7 0x00B7 # MIDDLE DOT
232 | 0xB8 0x00B8 # CEDILLA
233 | 0xB9 0x00B9 # SUPERSCRIPT ONE
234 | 0xBA 0x00BA # MASCULINE ORDINAL INDICATOR
235 | 0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
236 | 0xBC 0x00BC # VULGAR FRACTION ONE QUARTER
237 | 0xBD 0x00BD # VULGAR FRACTION ONE HALF
238 | 0xBE 0x00BE # VULGAR FRACTION THREE QUARTERS
239 | 0xBF 0x00BF # INVERTED QUESTION MARK
240 | 0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
241 | 0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
242 | 0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
243 | 0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
244 | 0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
245 | 0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
246 | 0xC6 0x00C6 # LATIN CAPITAL LETTER AE
247 | 0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
248 | 0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
249 | 0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
250 | 0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
251 | 0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
252 | 0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
253 | 0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
254 | 0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
255 | 0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
256 | 0xD0 0x00D0 # LATIN CAPITAL LETTER ETH (Icelandic)
257 | 0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
258 | 0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
259 | 0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
260 | 0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
261 | 0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
262 | 0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
263 | 0xD7 0x00D7 # MULTIPLICATION SIGN
264 | 0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
265 | 0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
266 | 0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
267 | 0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
268 | 0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
269 | 0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
270 | 0xDE 0x00DE # LATIN CAPITAL LETTER THORN (Icelandic)
271 | 0xDF 0x00DF # LATIN SMALL LETTER SHARP S (German)
272 | 0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
273 | 0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
274 | 0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
275 | 0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
276 | 0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
277 | 0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
278 | 0xE6 0x00E6 # LATIN SMALL LETTER AE
279 | 0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
280 | 0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
281 | 0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
282 | 0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
283 | 0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
284 | 0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
285 | 0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
286 | 0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
287 | 0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
288 | 0xF0 0x00F0 # LATIN SMALL LETTER ETH (Icelandic)
289 | 0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
290 | 0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
291 | 0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
292 | 0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
293 | 0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
294 | 0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
295 | 0xF7 0x00F7 # DIVISION SIGN
296 | 0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
297 | 0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
298 | 0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
299 | 0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
300 | 0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
301 | 0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
302 | 0xFE 0x00FE # LATIN SMALL LETTER THORN (Icelandic)
303 | 0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
304 |
--------------------------------------------------------------------------------
/misc/fonts.dir:
--------------------------------------------------------------------------------
1 | 8
2 | Tamzen8x17i.pcf.gz -misc-tamzen-medium-i-normal--17-123-100-100-c-80-iso8859-1
3 | orp-bold-italic.pcf.gz -misc-orp-bold-i---12-110-75-75-c-60-iso10646-1
4 | orp-bold.pcf.gz -misc-orp-bold-r---12-110-75-75-c-60-iso10646-1
5 | orp-book.pcf.gz -misc-orp-book-r-semicondensed--12-110-75-75-c-60-iso10646-1
6 | orp-italic.pcf.gz -misc-orp-medium-i---12-110-75-75-c-60-iso10646-1
7 | orp-medium.pcf.gz -misc-orp-medium-r-semicondensed--12-110-75-75-c-60-iso10646-1
8 | orp-regular.pcf.gz -misc-orp-medium-r-normal--17-170-100-100-c-80-iso8859-1
9 | profont.pcf.gz -misc-profont-medium-r-semicondensed--12-110-75-75-c-60-iso10646-1
10 |
--------------------------------------------------------------------------------
/misc/orp-bold.pcf.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicahElliott/Orp-Font/7f3546337787b6c232f28d905ed4d12f3b317d4a/misc/orp-bold.pcf.gz
--------------------------------------------------------------------------------
/misc/orp-book.pcf.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicahElliott/Orp-Font/7f3546337787b6c232f28d905ed4d12f3b317d4a/misc/orp-book.pcf.gz
--------------------------------------------------------------------------------
/misc/orp-italic.pcf.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicahElliott/Orp-Font/7f3546337787b6c232f28d905ed4d12f3b317d4a/misc/orp-italic.pcf.gz
--------------------------------------------------------------------------------
/misc/orp-medium.pcf.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicahElliott/Orp-Font/7f3546337787b6c232f28d905ed4d12f3b317d4a/misc/orp-medium.pcf.gz
--------------------------------------------------------------------------------
/misc/profont.pcf.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicahElliott/Orp-Font/7f3546337787b6c232f28d905ed4d12f3b317d4a/misc/profont.pcf.gz
--------------------------------------------------------------------------------
/xfont-install.zsh:
--------------------------------------------------------------------------------
1 | #! /usr/bin/env zsh
2 |
3 | # Create a X Windows PCF font from a BDF.
4 | #
5 | # See README for more details.
6 |
7 | usage="Usage: ${0:t} FONT-NAME.bdf
8 |
9 | Generate and install a PCF.
10 |
11 | To start a new font, copy an existing BDF:
12 | cp .../orp-medium.bdf lib/my-font.bdf
13 |
14 | Hack your new font:
15 | gbdfed lib/my-font.bdf
16 |
17 | Install it:
18 | $0:t lib/my-font.bdf
19 | "
20 |
21 | # Check for a bunch of misuses.
22 | [[ $# > 0 ]] || { print $usage; exit 1 }
23 | bdf=${1?Must provide font.bdf file}
24 | [[ -f $bdf ]] || { print "ERROR: missing $bdf file.\n\n$usage"; exit 1 }
25 | [[ $bdf:t:e == 'bdf' ]] || { print "ERROR: only will work with .bdf files.\n\n$usage"; exit 1 }
26 | bdfdir=$bdf:h
27 | font=$bdf:t:r
28 | cd $0:h
29 | basedir=$PWD
30 | cd -
31 | libdir=$basedir/lib
32 | [[ -d $libdir ]] || { print $usage; exit 1 }
33 | # Do the generation work from the local misc dir.
34 | pcfdir=$PWD/misc
35 | [[ -d $pcfdir ]] || { print "INFO: creating a misc dir to sit on your font path"; mkdir $pcfdir }
36 |
37 | # Mysterious temp file.
38 | trunc="$font-trunc"
39 | # Needed for something UTF stuff.
40 | utfs=$libdir/8859-1.TXT
41 |
42 | # Check for system utility dependencies.
43 | deps=( ucs2any bdftopcf mkfontdir gzip xset )
44 | print "Checking for dependencies…"
45 | for d in $deps; do
46 | which $d >/dev/null || {
47 | print "missing $d"
48 | exit 1
49 | }
50 | done
51 |
52 | pushd $bdfdir
53 |
54 | # Generate intermediate truncated file.
55 | # Performance workaround for sparse fonts.
56 | # Taken out of package:
57 | # http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz
58 | ../bdftruncate.pl 'U+3200' <$font.bdf >$trunc.bdf
59 |
60 | # Generate BDF fonts containing subsets of ISO 10646-1 codepoints.
61 | ucs2any +d $font.bdf $utfs ISO8859-1
62 |
63 | # Generate the PCF.
64 | bdftopcf $trunc.bdf >$font.pcf
65 |
66 | # Remove mysterious generated file.
67 | rm -f ${font}-ISO8859-1.bdf
68 |
69 | # Turn into compressed/usable form.
70 | gzip -f -9 $font.pcf
71 |
72 | # Clean up junk.
73 | rm $trunc.bdf
74 |
75 | pushd $pcfdir
76 | mv ~1/$font.pcf.gz .
77 |
78 | # Add this new PCF-GZ to $PWD/fonts.dir
79 | mkfontdir
80 |
81 | # Tell X that this font is now available.
82 | # Stupid stupid xsel bug makes adding multiple times cause duplicate
83 | # path entries, so have to delete the dir (which successfully removes
84 | # all duplicates), and then add. Use `xset q` to see everything.
85 | xset -fp $PWD
86 | xset +fp $PWD
87 |
88 | # Show new font path.
89 | xset q |grep -A1 'Font Path:'
90 | print "\nYou can remove this path if you messed up with:"
91 | print " xset -fp $PWD"
92 |
--------------------------------------------------------------------------------
/xfont-test.zsh:
--------------------------------------------------------------------------------
1 | #! /usr/bin/env zsh
2 |
3 | # Test (via eyeballs) the extended glyphs for interesting characters,
4 | # like maths, drawing, prompts, languages, etc.
5 | #
6 | # Also a placeholder for more extensive future tests.
7 |
8 | cat ${0:h}/UTF-8-demo.txt
9 |
10 | for c in {1..7}; do echo -e "\e[0;$c;3${c}muNintErest1n6 5tR|ng"; done
11 |
12 | print 'Bold italic:'
13 | print '\e[1;3mfoo'
14 |
--------------------------------------------------------------------------------