├── .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 | Orp with clojure/solarized 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 | --------------------------------------------------------------------------------