all repos — aaothxyz-decadv @ c388bf1701a4af8fd80e3167e4d33b5ff68b2554

aaoth.xyz website, but new.

ukarpanghooth.html (view raw)

  1<!doctype html>
  2<html lang="en">
  3<head>
  4	<meta charset="utf-8">
  5	<meta name="viewport" content="width=device-width, initial-scale=1.0">
  6	<title>ukarpanghooth — aaoth.xyz</title>
  7	<style>
  8	html{background:#777}
  9	body{margin:1em auto;max-width:850px;color:#000;background:#fff;padding:0.5em;border:4px solid #5aa}
 10	a{color:#005;}
 11	img{max-width:100%}
 12	pre{overflow:scroll}
 13	</style>
 14</head>
 15<body>
 16	<section>
 17		<h1>ukarpanghooth</h1>
 18<h2>overview</h2>
 19
 20<p>the first writing system i'm going to talk about is ukarpanghooth
 21(meaning 'angular cut', IPA: /ɤ.kaɾ.pan.ɡʱə.uːtʰ/). it was actually
 22my first attempt to create a writing system. it's main purpose was just
 23to be unreadable by others (steganography? security by obscurity?).</p>
 24
 25<h2>description</h2>
 26
 27<p>this is a simple alphabetic script based on latin alphabet. some
 28letter shapes are also influenced by runic scripts. the first version
 29(proto-ukarpangooth) was actually very similar to the latin alphabet,
 30so later it was modified, as an attempt to make it more unique and more
 31obscure. words are separated by a special symbol, so that sentences are
 32written together as one piece.</p>
 33
 34<!--
 35<figure>
 36<img src="{}" alt=""/>
 37<figcaption>
 38proto-ukarpanghooth, ukarpanghooth, comparison with latin
 39</figcaption>
 40</figure>
 41-->
 42
 43<p>there is one interesting aspect about it is the order and direction in
 44which it is written. initially it was done the usual way (well... for
 45some), right-to-left, top-to-bottom. then i came up with something
 46creative, writing it in groups of four letters in a square (top-right,
 47bottom-right, bottom-left, top-left). if the number of letters in a
 48sentence isn't divisible by four, letters are stretched to fit into
 49square shape. there also instances of it written snake-shaped, turning
 50by 90 degrees after each word.</p>
 51
 52<!--
 53<figure>
 54<img src="{}" alt=""/>
 55<figcaption>
 56example text, writing direction outline
 57</figcaption>
 58</figure>
 59-->
 60
 61<p>the name of the script suggests that one can cut it on something
 62(wood, stone, etc.), as only straight line segments are used.</p>
 63
 64<h2>usage</h2>
 65
 66<p>as mentioned before, script's main purpose was to hide some information
 67(i once used it to cheat on a test in a physics class :D). mainly i
 68wrote english text. some time later i used it to write my unfinished
 69conlang named aihnth (IPA: /a.ji.ən.tʰə/).</p>
 70
 71<p>the script has some ornamental potential, as its glyphs are pretty
 72simple and use only straight lines.</p>
 73
 74<!--
 75<figure>
 76<img src="{}" alt=""/>
 77<figcaption>
 78st peter's cross with "hd un'nuhrthh fah'deelhrhu khotghu koth'h" written on it.
 79</figcaption>
 80</figure>
 81-->
 82
 83<h2>font</h2>
 84
 85<p>actually, at first, i didn't think that it would be possible
 86to replicate this script's peculiar writing order in a computer
 87font. however, after reading some specs, decompiling some fonts and
 88experiments i've found a way to do it.</p>
 89
 90<p>open-type features allow two things: substitution (GSUB) and position
 91(GSUB) of glyphs. basically, we need to have three versions of each
 92letter: full size, half size and quarter size. then we substitute runs
 93of four letters with four quarter sized ones, three letters with two
 94quarters and one half, and, finally, two letters with two halves. the
 95only thing left is to use contextual postitioning to move each component
 96where it needs to be.</p>
 97
 98<pre>
 99<code>
100@full = [a b c]; # full-size letters
101@half = [a.half b.half c.half]; # half-size letters
102@qrtr = [a.qrtr b.qrtr c.qrtr]; # quarter-size letters
103
104# helper lookups
105lookup full2qrtr {
106	sub @full by @qrtr;
107} full2qrtr;
108lookup full2half {
109	sub @full by @half;
110};
111
112# main substitution lookup
113lookup charBlock {
114	sub @full' lookup full2qrtr @full' lookup full2qrtr @full' lookup full2qrtr @full' lookup full2qrtr;
115	sub @full' lookup full2qrtr @full' lookup full2qrtr @full lookup full2half;
116	sub @full' lookup full2half @full' lookup full2half;
117} charBlock;
118</code>
119</pre>
120
121	</section>
122</body>
123</html>