Tube map

If you have a design you're proud of, share the cfdg file here. It's also a good place to ask for feedback and collaborate.

Moderators: MtnViewJohn, chris, mtnviewmark

Post Reply
grimace
Posts: 9
Joined: Fri Jul 29, 2005 1:48 am

Tube map

Post by grimace »

It was going to happen sooner or later, so here's my attempt at a tube map. The corners are a wee bit clunky and could be written with ordered transforms I think.

Image is here.

Code: Select all

startshape INIT { color }

# CFDG Tube Map. Mind the gap.

rule INIT {
	PATH{r 90 sat 1 b 1 hue 0}
	PATH{r -90 sat 1 b 1 hue 0}
}

# Paris Metro variation
#rule INIT {
#	PATH{r 0 sat 1 b 1 hue 0}
#	PATH{r 120 sat 1 b 1 hue 0}
#	PATH{r -120 sat 1 b 1 hue 0}
#}

rule PATH {
	SQUARE{s 0.5 1}
	PATH_STEP {y 1}
}
rule PATH_STEP {
	SQUARE{s 0.5 1}
	PATH_R {y 1}	
}

rule PATH_R {
	SQUARE{s 0.5 1}
	PATH_R {y 1}	
}

# stations
rule PATH_R 0.2 {
	STATION{y -0.5}
}

rule PATH_R 0.025 {
	CORNER_1{}
}
rule PATH_R 0.025 {
	CORNER_2{}
}

# line divergence
rule PATH_R 0.003 {
	CORNER_1{}
	CORNER_2{}
}

# corners
rule CORNER_1 {
	CIRCLE{s 0.5 y -0.5}
	PATH_ADJUST { r 45 x -0.5}	
} 
rule CORNER_2 {
	CIRCLE{s 0.5 y -0.5}
	PATH_ADJUST { r -45 x 0.5}	
} rule PATH_ADJUST { PATH{y -0.25} }

# intersection
rule STATION {
	INTERSECTION{}
}
rule INTERSECTION{
	SQUARE{s .5 1}
	CIRCLE{s 1 sat -1 b -1}
	CIRCLE{s .8 sat -1 b 1}
	PATH{y 1}
	JUNCTION_INIT { hue 64 }
}

#terminus
rule STATION 1.5 {
	SQUARE{s 1.5 .5}
}

#through station 1
rule STATION {
	SQUARE{s 1 .5 x 0.25}
	SQUARE{s .5 1 }
	PATH{y 1}
}

#through station 2
rule STATION {
	SQUARE{s 1 .5 x -0.25}
	SQUARE{s .5 1 }
	PATH{y 1}
}

rule JUNCTION_INIT { JUNCTION {r 90 x -1} }
rule JUNCTION_INIT { JUNCTION {r -90 x 1} }

rule JUNCTION {
	PATH{}
}
rule JUNCTION 0.5 {
	SQUARE {s 1 0.5}
	CIRCLE{s 1 sat -1 b -1}
	CIRCLE{s .8 sat -1 b 1}
	PATH{r 90 x -1}
	PATH{r -90 x 1}
}
rule JUNCTION{}

sk
Posts: 2
Joined: Thu Sep 01, 2005 6:21 pm

Plus a few bits...

Post by sk »

Adding on a few bits (first thing I've tried with CFDG, so please forvive the mess!) gets you this...

(Things to note: Word direction follows the lines, so some might end up being upside-down, some 'words' are spelled backwards (ones that have the 'end' of the word near to the station, and others may be rotated if a line goes through an interchange. Plus a few other wobbles, I'm sure...)

Code: Select all

#Tube map generator with station names
#Bodged together from:
#Grimace's wordmaker and tube map
#Bargonaut's character set
#Very, very bodged...
#Try the start string GGP for a reasonably clean-looking map

#Mind the gap!

startshape INIT

#Include text shapes and wordmaker
include wordmaker.cdfg
include bargonaut_font.cfdg 

#Set things going from the end of a line
#Equal chance of vert/horz start
#Vertical
rule INIT
{ 
   LINE{r 0 sat 1 b 1 hue 205} 
   TERMINUS{r 0 sat 1 b 1 hue 205 y -.5} 
   LOGO{y -10.4}
} 

#Horizontal
rule INIT
{ 
   LINE{r 90 sat 1 b 1 hue 205} 
   TERMINUS{r 90 sat 1 b 1 hue 205 x .5} 
   LOGO{y -10.4}
} 

#LUL LOGO
rule LOGO
{
CIRCLE{hue 0 sat 1 b 1 x -10.4 s 3.4}
CIRCLE{hue 0 sat 0 b 1 x -10.4 s 2}
SQUARE{hue 230 sat 1 b .6 x -10.4 s 4.6 .7}
U_BLOCK	{ x 0 y 0 sat 0 b 1 x -12.4 s .4}
N_BLOCK	{ x 0 y 0 sat 0 b 1 x -12 s .4}
D_BLOCK	{ x 0 y 0 sat 0 b 1 x -11.6 s .4}
E_BLOCK	{ x 0 y 0 sat 0 b 1 x -11.2 s .4}
R_BLOCK	{ x 0 y 0 sat 0 b 1 x -10.8 s .4}
G_BLOCK	{ x 0 y 0 sat 0 b 1 x -10.4 s .4}
R_BLOCK	{ x 0 y 0 sat 0 b 1 x -10 s .4}
O_BLOCK	{ x 0 y 0 sat 0 b 1 x -9.6 s .4}
U_BLOCK	{ x 0 y 0 sat 0 b 1 x -9.2 s .4}
N_BLOCK	{ x 0 y 0 sat 0 b 1 x -8.8 s .4}
D_BLOCK	{ x 0 y 0 sat 0 b 1 x -8.4 s .4}
}

#Draw a line, width 0.5, length 1, swith to choices
rule LINE
{ 
   SQUARE{s 0.5 1}
   LINE_B{y 1}
   LINE_R {y 2}  
} 

#Draw a line, width 0.5, length 1 then go back...
rule LINE_B
{ 
   SQUARE{s 0.5 1}
} 

#Start to make some choices...
#Keep going %
rule LINE_R 0.5
{ 
   SQUARE{s 0.5 1} 
   LINE_R {y 1}    
} 

#Station %
rule LINE_R 0.5
{ 
   STATION{y -0.5} 
} 

#Turn left %
rule LINE_R .05
{ 
   CORNER_1{} 
} 

#Turn right %
rule LINE_R 0.05
{ 
   CORNER_2{} 
} 

#Fork in two %
rule LINE_R 0.01
{ 
   CORNER_1{} 
   CORNER_2{} 
} 

#Corner (circle rounds off edge)
rule CORNER_1
{ 
   CIRCLE{s 0.5 y -0.5} 
   LINE_ADJUST{r 45 x -0.5}    
} 

#Corner (circle rounds off edge)
rule CORNER_2
{ 
   CIRCLE{s 0.5 y -0.5} 
   LINE_ADJUST{r -45 x 0.5 }    
}

#Adjust positioning after a corner
rule LINE_ADJUST
{
LINE {y -0.25}
} 

#Various station types============================

#Terminus 
rule STATION 
{
   TERMINUS{}
}
rule TERMINUS
{ 
   SQUARE{s 1.2 .5}
   NAME{x 1}
} 

#Station on one side of the line... 
rule STATION 2
{ 
   SQUARE{s .7 .5 x 0.25} 
   SQUARE{s .5 1} 
   NAME{x 1}
   LINE{y 1} 
} 

#Station on other side of the line...
rule STATION 2
{ 
   SQUARE{s .7 .5 x -0.25} 
   SQUARE{s .5 1 } 
   NAMEBACK{x -1}
   LINE{y 1} 
} 

#Interchange with diff. coloured line
rule STATION .6
{ 
   INTERCHANGE{} 
} 

#Colour change choices
rule INTERCHANGE 8
{ 
   SQUARE{s .5 1} 
   LINE{y 1} 
   JUNCTION_INIT {hue -40 b -.05} 
   HOLLOW_CIRCLE{}
}

#Junction directions
#90 degree turn one way...
rule JUNCTION_INIT
{
   JUNCTION {r 90 x -.8}
   NAME{x .8}
} 

#90 degree turn the other way...
rule JUNCTION_INIT
{
   JUNCTION {r -90 x .8}
   NAME{x .7 y .7}
} 

#45 degree turn one way...
rule JUNCTION_INIT
{
   JUNCTION {r 45 x -.6 y .6}
   NAME{x .8 y .6}
} 

#45 degree turn the other way...
rule JUNCTION_INIT
{
   JUNCTION {r -45 x .6 y .6}
   NAME{x .8 y -.6}
} 


#Keep things separated a bit
rule JUNCTION
{ 
   LINE{} 
} 

#
rule JUNCTION 0.5
{ 
   SQUARE {s 1 0.5} 
   LINE{r 90 x -1}
   LINE{r -90 x 1}
   HOLLOW_CIRCLE{}
   NAME{x .8 y .8}
} 

#Try to make the circles on top by wasting time until other stuff's already drawn...
rule HOLLOW_CIRCLE 500
{
   HOLLOW_CIRCLE {}
}

#Actually draw the circle!
rule HOLLOW_CIRCLE
{
   CIRCLE{s 1 sat -1 b -1}
   CIRCLE{s .55 sat -1 b 1} 
}

#==STATION NAMES TO RIGHT OF MARK==#

#Name on top by wasting time
rule NAME 500
{
NAME{}
}

#Actually write the name
rule NAME
{
WORD{s 0.3}
}

#==STATION NAMES TO LEFT OF MARK==#

#Name on top by wasting time
rule NAMEBACK 500
{
NAMEBACK{}
}

#Actually write the name
rule NAMEBACK
{
B_WORD{s 0.3}
}


#============================#
#Can't include this to save my life...#
#============================#
### Actual word grammar ### 

rule WORD { 
   RAND_TRIPLE{} 
   WORD_R {x 3.3}    
} 
rule WORD { 
   RAND_QUAD{} 
   WORD_R {x 4.4}    
} 
rule WORD { 
   RAND_QUINT{} 
   WORD_R {x 5.5}    
} 
rule WORD { 
   RAND_SEXTUPLE{} 
   // don't recurse 
   RAND_SUFFIX {x 6.6}    
} 

#rule WORD_R { 
#   SQUARE{s 1 0.25} 
#   WORD_R {x 1.1}    
#} 
rule WORD_R { 
   RAND_TRIPLE{} 
   RAND_SUFFIX{x 3.3} 
} 
rule WORD_R { 
   RAND_QUAD{} 
   RAND_SUFFIX {x 4.4}    
} 
rule WORD_R { 
   RAND_QUINT{} 
   RAND_SUFFIX {x 5.5}    
} 
rule WORD_R 2 { 
   RAND_SUFFIX {} 
} 

rule RAND_TRIPLE { 
   START_CONSONANT{} 
   RAND_VOWEL{x 1.1} RAND_ACCENT{x 1.1} 
   END_CONSONANT{x 2.2} 
} 

rule RAND_QUAD { 
   START_CONSONANT{} 
   RAND_DOUBLE_VOWEL{x 1.1} 
   END_CONSONANT{x 3.3} 
} 

rule RAND_QUAD { 
   RAND_DIPTHONG{} 
   RAND_VOWEL{x 2.2} 
   END_CONSONANT{x 3.3} 
} 
rule RAND_QUAD { 
   START_CONSONANT{} 
   RAND_VOWEL{x 1.1} 
   RAND_DOUBLE_CONSONANT{x 2.2} 
} 

rule RAND_QUINT { 
   RAND_DIPTHONG{} 
   RAND_DOUBLE_VOWEL{x 2.2} 
   END_CONSONANT{x 4.4} 
} 
rule RAND_QUINT { 
   RAND_DIPTHONG{} 
   RAND_VOWEL{x 2.2} 
   RAND_DOUBLE_CONSONANT{x 3.3} 
} 

rule RAND_SEXTUPLE { 
   RAND_DIPTHONG{} 
   RAND_DOUBLE_VOWEL{x 2.2} 
   RAND_DOUBLE_CONSONANT{x 4.4} 
} 
rule RAND_SEXTUPLE { 
   START_CONSONANT{} 
   RAND_VOWEL{x 1.1} 
   RAND_DOUBLE_CONSONANT{x 2.2}    
   RAND_VOWEL{x 4.4} 
   END_CONSONANT{x 5.5} 
} 

rule RAND_ACCENT  0.2 { 
   SQUARE { s 0.25 y 0.8 x -0.25} 
   SQUARE { s 0.25 y 0.8 x 0.25} 
} 
rule RAND_ACCENT {} 

### Ugly data blocks ### 

rule RAND_BLOCK {   A_BLOCK{}} 
rule RAND_BLOCK {   B_BLOCK{}} 
rule RAND_BLOCK {   C_BLOCK{}} 
rule RAND_BLOCK {   D_BLOCK{}} 
rule RAND_BLOCK {   E_BLOCK{}} 
rule RAND_BLOCK {   F_BLOCK{}} 
rule RAND_BLOCK {   G_BLOCK{}} 
rule RAND_BLOCK {   H_BLOCK{}} 
rule RAND_BLOCK {   I_BLOCK{}} 
rule RAND_BLOCK {   J_BLOCK{}} 
rule RAND_BLOCK {   K_BLOCK{}} 
rule RAND_BLOCK {   L_BLOCK{}} 
rule RAND_BLOCK {   M_BLOCK{}} 
rule RAND_BLOCK {   N_BLOCK{}} 
rule RAND_BLOCK {   O_BLOCK{}} 
rule RAND_BLOCK {   P_BLOCK{}} 
rule RAND_BLOCK {   Q_BLOCK{}} 
rule RAND_BLOCK {   R_BLOCK{}} 
rule RAND_BLOCK {   S_BLOCK{}} 
rule RAND_BLOCK {   T_BLOCK{}} 
rule RAND_BLOCK {   U_BLOCK{}} 
rule RAND_BLOCK {   V_BLOCK{}} 
rule RAND_BLOCK {   W_BLOCK{}} 
rule RAND_BLOCK {   X_BLOCK{}} 
rule RAND_BLOCK {   Y_BLOCK{}} 
rule RAND_BLOCK {   Z_BLOCK{}} 

rule RAND_CONSONANT{ B_BLOCK{}} 
rule RAND_CONSONANT{ C_BLOCK{}} 
rule RAND_CONSONANT{ D_BLOCK{}} 
rule RAND_CONSONANT{ F_BLOCK{}} 
rule RAND_CONSONANT{ G_BLOCK{}} 
rule RAND_CONSONANT{ H_BLOCK{}} 
rule RAND_CONSONANT{ J_BLOCK{}} 
rule RAND_CONSONANT{ K_BLOCK{}} 
rule RAND_CONSONANT{ L_BLOCK{}} 
rule RAND_CONSONANT{ M_BLOCK{}} 
rule RAND_CONSONANT{ N_BLOCK{}} 
rule RAND_CONSONANT{ P_BLOCK{}} 
# rule RAND_CONSONANT{ Q_BLOCK{}} 
rule RAND_CONSONANT{ R_BLOCK{}} 
rule RAND_CONSONANT{ S_BLOCK{}} 
rule RAND_CONSONANT{ T_BLOCK{}} 
rule RAND_CONSONANT{ V_BLOCK{}} 
rule RAND_CONSONANT{ W_BLOCK{}} 
rule RAND_CONSONANT{ X_BLOCK{}} 
rule RAND_CONSONANT{ Z_BLOCK{}} 

rule START_CONSONANT{ B_BLOCK{}} 
rule START_CONSONANT{ C_BLOCK{}} 
rule START_CONSONANT{ D_BLOCK{}} 
rule START_CONSONANT{ F_BLOCK{}} 
rule START_CONSONANT{ G_BLOCK{}} 
rule START_CONSONANT{ H_BLOCK{}} 
rule START_CONSONANT 0.2 { J_BLOCK{}} 
rule START_CONSONANT{ K_BLOCK{}} 
rule START_CONSONANT{ L_BLOCK{}} 
rule START_CONSONANT{ M_BLOCK{}} 
rule START_CONSONANT{ N_BLOCK{}} 
rule START_CONSONANT{ P_BLOCK{}} 
rule START_CONSONANT{ R_BLOCK{}} 
rule START_CONSONANT{ S_BLOCK{}} 
rule START_CONSONANT{ T_BLOCK{}} 
rule START_CONSONANT{ V_BLOCK{}} 
rule START_CONSONANT{ W_BLOCK{}} 
rule START_CONSONANT 0.2 { Z_BLOCK{}} 

rule END_CONSONANT{ B_BLOCK{}} 
rule END_CONSONANT{ D_BLOCK{}} 
rule END_CONSONANT{ G_BLOCK{}} 
rule END_CONSONANT{ M_BLOCK{}} 
rule END_CONSONANT{ N_BLOCK{}} 
rule END_CONSONANT{ P_BLOCK{}} 
rule END_CONSONANT{ R_BLOCK{}} 
rule END_CONSONANT{ T_BLOCK{}} 
rule END_CONSONANT{ W_BLOCK{}} 
rule END_CONSONANT{ X_BLOCK{}} 

rule RAND_VOWEL {   A_BLOCK{}} 
rule RAND_VOWEL {   E_BLOCK{}} 
rule RAND_VOWEL {   I_BLOCK{}} 
rule RAND_VOWEL {   O_BLOCK{}} 
rule RAND_VOWEL {   U_BLOCK{}} 

rule RAND_DOUBLE_VOWEL 0.5 { E_BLOCK{} E_BLOCK{x 1.1}} 
rule RAND_DOUBLE_VOWEL 0.5 { E_BLOCK{flip 90} E_BLOCK{x 1.1}} 
rule RAND_DOUBLE_VOWEL { E_BLOCK{} A_BLOCK{x 1.1}} 
rule RAND_DOUBLE_VOWEL { I_BLOCK{} E_BLOCK{x 1.1}} 
rule RAND_DOUBLE_VOWEL { O_BLOCK{} A_BLOCK{x 1.1}} 
rule RAND_DOUBLE_VOWEL { O_BLOCK{} O_BLOCK{x 1.1}} 
rule RAND_DOUBLE_VOWEL { O_BLOCK{} U_BLOCK{x 1.1}} 

rule RAND_DOUBLE_CONSONANT { C_BLOCK{} H_BLOCK{x 1.1}} 
rule RAND_DOUBLE_CONSONANT { C_BLOCK{} K_BLOCK{x 1.1}} 
rule RAND_DOUBLE_CONSONANT { F_BLOCK{} F_BLOCK{x 1.1}} 
rule RAND_DOUBLE_CONSONANT { L_BLOCK{} K_BLOCK{x 1.1}} 
rule RAND_DOUBLE_CONSONANT { L_BLOCK{} L_BLOCK{x 1.1}} 
rule RAND_DOUBLE_CONSONANT { L_BLOCK{} P_BLOCK{x 1.1}} 
rule RAND_DOUBLE_CONSONANT { L_BLOCK{} T_BLOCK{x 1.1}} 
rule RAND_DOUBLE_CONSONANT { N_BLOCK{} D_BLOCK{x 1.1}} 
rule RAND_DOUBLE_CONSONANT { N_BLOCK{} G_BLOCK{x 1.1}} 
rule RAND_DOUBLE_CONSONANT { N_BLOCK{} K_BLOCK{x 1.1}} 
rule RAND_DOUBLE_CONSONANT { N_BLOCK{} T_BLOCK{x 1.1}} 
rule RAND_DOUBLE_CONSONANT { P_BLOCK{} P_BLOCK{x 1.1}} 
rule RAND_DOUBLE_CONSONANT { R_BLOCK{} D_BLOCK{x 1.1}} 
rule RAND_DOUBLE_CONSONANT { R_BLOCK{} F_BLOCK{x 1.1}} 
rule RAND_DOUBLE_CONSONANT { R_BLOCK{} N_BLOCK{x 1.1}} 
rule RAND_DOUBLE_CONSONANT { R_BLOCK{} T_BLOCK{x 1.1}} 
rule RAND_DOUBLE_CONSONANT { S_BLOCK{} H_BLOCK{x 1.1}} 
rule RAND_DOUBLE_CONSONANT { S_BLOCK{} T_BLOCK{x 1.1}} 
rule RAND_DOUBLE_CONSONANT { S_BLOCK{} S_BLOCK{x 1.1}} 
rule RAND_DOUBLE_CONSONANT { Z_BLOCK{} Z_BLOCK{x 1.1}} 

rule RAND_DIPTHONG{ B_BLOCK{} L_BLOCK {x 1.1}} 
rule RAND_DIPTHONG{ B_BLOCK{} R_BLOCK {x 1.1}} 
rule RAND_DIPTHONG{ C_BLOCK{} H_BLOCK {x 1.1}} 
rule RAND_DIPTHONG{ C_BLOCK{} L_BLOCK {x 1.1}} 
rule RAND_DIPTHONG{ C_BLOCK{} R_BLOCK {x 1.1}} 
rule RAND_DIPTHONG{ D_BLOCK{} R_BLOCK {x 1.1}} 
rule RAND_DIPTHONG{ F_BLOCK{} L_BLOCK {x 1.1}} 
rule RAND_DIPTHONG{ F_BLOCK{} R_BLOCK {x 1.1}} 
rule RAND_DIPTHONG{ G_BLOCK{} L_BLOCK {x 1.1}} 
rule RAND_DIPTHONG{ G_BLOCK{} R_BLOCK {x 1.1}} 
rule RAND_DIPTHONG{ P_BLOCK{} L_BLOCK {x 1.1}} 
rule RAND_DIPTHONG{ P_BLOCK{} R_BLOCK {x 1.1}} 
rule RAND_DIPTHONG{ S_BLOCK{} C_BLOCK {x 1.1}} 
rule RAND_DIPTHONG{ S_BLOCK{} H_BLOCK {x 1.1}} 
rule RAND_DIPTHONG{ S_BLOCK{} L_BLOCK {x 1.1}} 
rule RAND_DIPTHONG{ S_BLOCK{} M_BLOCK {x 1.1}} 
rule RAND_DIPTHONG{ S_BLOCK{} N_BLOCK {x 1.1}} 
rule RAND_DIPTHONG{ S_BLOCK{} P_BLOCK {x 1.1}} 
rule RAND_DIPTHONG{ S_BLOCK{} W_BLOCK {x 1.1}} 
rule RAND_DIPTHONG{ T_BLOCK{} H_BLOCK {x 1.1}} 
rule RAND_DIPTHONG{ T_BLOCK{} R_BLOCK {x 1.1}} 
rule RAND_DIPTHONG{ T_BLOCK{} W_BLOCK {x 1.1}} 
rule RAND_DIPTHONG{ W_BLOCK{} H_BLOCK {x 1.1}} 

rule RAND_SUFFIX 2 {RAND_VOWEL{} WORD_HOOK{x 2.2}} 
rule RAND_SUFFIX{A_BLOCK{} N_BLOCK{x 1.1} WORD_HOOK{x 3.3}} 
rule RAND_SUFFIX {I_BLOCK{} N_BLOCK{x 1.1} G_BLOCK{x 2.2} WORD_HOOK{x 4.4}} 
rule RAND_SUFFIX {I_BLOCK{} S_BLOCK{x 1.1} H_BLOCK{x 2.2} WORD_HOOK{x 4.4}} 
rule RAND_SUFFIX{E_BLOCK{} D_BLOCK{x 1.1} WORD_HOOK{x 3.3}} 
rule RAND_SUFFIX{E_BLOCK{} N_BLOCK{x 1.1} WORD_HOOK{x 3.3}} 
rule RAND_SUFFIX{E_BLOCK{} R_BLOCK{x 1.1} WORD_HOOK{x 3.3}} 
rule RAND_SUFFIX{O_BLOCK{} N_BLOCK{x 1.1} WORD_HOOK{x 3.3}} 
rule RAND_SUFFIX{U_BLOCK{} S_BLOCK{x 1.1} S_BLOCK{x 2.2} WORD_HOOK{x 4.4}} 
rule RAND_SUFFIX 6 { WORD_HOOK{x 1.1}} 




#============================#
#Same applies for other direction....#
#============================#

### Actual B_WORD grammar ### 

rule B_WORD { 
   B_RAND_TRIPLE{} 
   B_WORD_R {x -3.3}    
} 
rule B_WORD { 
   B_RAND_QUAD{} 
   B_WORD_R {x -4.4}    
} 
rule B_WORD { 
   B_RAND_QUINT{} 
   B_WORD_R {x -5.5}    
} 
rule B_WORD { 
   B_RAND_SEXTUPLE{} 
   // don't recurse 
   B_RAND_SUFFIx {x -6.6}    
} 

#rule B_WORD_R { 
#   SQUARE{s 1 0.25} 
#   B_WORD_R {x -1.1}    
#} 
rule B_WORD_R { 
   B_RAND_TRIPLE{} 
   B_RAND_SUFFIX{x -3.3} 
} 
rule B_WORD_R { 
   B_RAND_QUAD{} 
   B_RAND_SUFFIx {x -4.4}    
} 
rule B_WORD_R { 
   B_RAND_QUINT{} 
   B_RAND_SUFFIx {x -5.5}    
} 
rule B_WORD_R 2 { 
   B_RAND_SUFFIx {} 
} 

rule B_RAND_TRIPLE { 
   B_START_CONSONANT{} 
   B_RAND_VOWEL{x -1.1} B_RAND_ACCENT{x -1.1} 
   B_END_CONSONANT{x -2.2} 
} 

rule B_RAND_QUAD { 
   B_START_CONSONANT{} 
   B_RAND_DOUBLE_VOWEL{x -1.1} 
   B_END_CONSONANT{x -3.3} 
} 

rule B_RAND_QUAD { 
   B_RAND_DIPTHONG{} 
   B_RAND_VOWEL{x -2.2} 
   B_END_CONSONANT{x -3.3} 
} 
rule B_RAND_QUAD { 
   B_START_CONSONANT{} 
   B_RAND_VOWEL{x -1.1} 
   B_RAND_DOUBLE_CONSONANT{x -2.2} 
} 

rule B_RAND_QUINT { 
   B_RAND_DIPTHONG{} 
   B_RAND_DOUBLE_VOWEL{x -2.2} 
   B_END_CONSONANT{x -4.4} 
} 
rule B_RAND_QUINT { 
   B_RAND_DIPTHONG{} 
   B_RAND_VOWEL{x -2.2} 
   B_RAND_DOUBLE_CONSONANT{x -3.3} 
} 

rule B_RAND_SEXTUPLE { 
   B_RAND_DIPTHONG{} 
   B_RAND_DOUBLE_VOWEL{x -2.2} 
   B_RAND_DOUBLE_CONSONANT{x -4.4} 
} 
rule B_RAND_SEXTUPLE { 
   B_START_CONSONANT{} 
   B_RAND_VOWEL{x -1.1} 
   B_RAND_DOUBLE_CONSONANT{x -2.2}    
   B_RAND_VOWEL{x -4.4} 
   B_END_CONSONANT{x -5.5} 
} 

rule B_RAND_ACCENT  0.2 { 
   SQUARE { s 0.25 y 0.8 x -0.25} 
   SQUARE { s 0.25 y 0.8 x -0.25} 
} 
rule B_RAND_ACCENT {} 

### Ugly data blocks ### 

rule B_RAND_BLOCK {   A_BLOCK{}} 
rule B_RAND_BLOCK {   B_BLOCK{}} 
rule B_RAND_BLOCK {   C_BLOCK{}} 
rule B_RAND_BLOCK {   D_BLOCK{}} 
rule B_RAND_BLOCK {   E_BLOCK{}} 
rule B_RAND_BLOCK {   F_BLOCK{}} 
rule B_RAND_BLOCK {   G_BLOCK{}} 
rule B_RAND_BLOCK {   H_BLOCK{}} 
rule B_RAND_BLOCK {   I_BLOCK{}} 
rule B_RAND_BLOCK {   J_BLOCK{}} 
rule B_RAND_BLOCK {   K_BLOCK{}} 
rule B_RAND_BLOCK {   L_BLOCK{}} 
rule B_RAND_BLOCK {   M_BLOCK{}} 
rule B_RAND_BLOCK {   N_BLOCK{}} 
rule B_RAND_BLOCK {   O_BLOCK{}} 
rule B_RAND_BLOCK {   P_BLOCK{}} 
rule B_RAND_BLOCK {   Q_BLOCK{}} 
rule B_RAND_BLOCK {   R_BLOCK{}} 
rule B_RAND_BLOCK {   S_BLOCK{}} 
rule B_RAND_BLOCK {   T_BLOCK{}} 
rule B_RAND_BLOCK {   U_BLOCK{}} 
rule B_RAND_BLOCK {   V_BLOCK{}} 
rule B_RAND_BLOCK {   W_BLOCK{}} 
rule B_RAND_BLOCK {   X_BLOCK{}} 
rule B_RAND_BLOCK {   Y_BLOCK{}} 
rule B_RAND_BLOCK {   Z_BLOCK{}} 

rule B_RAND_CONSONANT{ B_BLOCK{}} 
rule B_RAND_CONSONANT{ C_BLOCK{}} 
rule B_RAND_CONSONANT{ D_BLOCK{}} 
rule B_RAND_CONSONANT{ F_BLOCK{}} 
rule B_RAND_CONSONANT{ G_BLOCK{}} 
rule B_RAND_CONSONANT{ H_BLOCK{}} 
rule B_RAND_CONSONANT{ J_BLOCK{}} 
rule B_RAND_CONSONANT{ K_BLOCK{}} 
rule B_RAND_CONSONANT{ L_BLOCK{}} 
rule B_RAND_CONSONANT{ M_BLOCK{}} 
rule B_RAND_CONSONANT{ N_BLOCK{}} 
rule B_RAND_CONSONANT{ P_BLOCK{}} 
# rule B_RAND_CONSONANT{ Q_BLOCK{}} 
rule B_RAND_CONSONANT{ R_BLOCK{}} 
rule B_RAND_CONSONANT{ S_BLOCK{}} 
rule B_RAND_CONSONANT{ T_BLOCK{}} 
rule B_RAND_CONSONANT{ V_BLOCK{}} 
rule B_RAND_CONSONANT{ W_BLOCK{}} 
rule B_RAND_CONSONANT{ X_BLOCK{}} 
rule B_RAND_CONSONANT{ Z_BLOCK{}} 

rule B_START_CONSONANT{ B_BLOCK{}} 
rule B_START_CONSONANT{ C_BLOCK{}} 
rule B_START_CONSONANT{ D_BLOCK{}} 
rule B_START_CONSONANT{ F_BLOCK{}} 
rule B_START_CONSONANT{ G_BLOCK{}} 
rule B_START_CONSONANT{ H_BLOCK{}} 
rule B_START_CONSONANT 0.2 { J_BLOCK{}} 
rule B_START_CONSONANT{ K_BLOCK{}} 
rule B_START_CONSONANT{ L_BLOCK{}} 
rule B_START_CONSONANT{ M_BLOCK{}} 
rule B_START_CONSONANT{ N_BLOCK{}} 
rule B_START_CONSONANT{ P_BLOCK{}} 
rule B_START_CONSONANT{ R_BLOCK{}} 
rule B_START_CONSONANT{ S_BLOCK{}} 
rule B_START_CONSONANT{ T_BLOCK{}} 
rule B_START_CONSONANT{ V_BLOCK{}} 
rule B_START_CONSONANT{ W_BLOCK{}} 
rule B_START_CONSONANT 0.2 { Z_BLOCK{}} 

rule B_END_CONSONANT{ B_BLOCK{}} 
rule B_END_CONSONANT{ D_BLOCK{}} 
rule B_END_CONSONANT{ G_BLOCK{}} 
rule B_END_CONSONANT{ M_BLOCK{}} 
rule B_END_CONSONANT{ N_BLOCK{}} 
rule B_END_CONSONANT{ P_BLOCK{}} 
rule B_END_CONSONANT{ R_BLOCK{}} 
rule B_END_CONSONANT{ T_BLOCK{}} 
rule B_END_CONSONANT{ W_BLOCK{}} 
rule B_END_CONSONANT{ X_BLOCK{}} 

rule B_RAND_VOWEL {   A_BLOCK{}} 
rule B_RAND_VOWEL {   E_BLOCK{}} 
rule B_RAND_VOWEL {   I_BLOCK{}} 
rule B_RAND_VOWEL {   O_BLOCK{}} 
rule B_RAND_VOWEL {   U_BLOCK{}} 

rule B_RAND_DOUBLE_VOWEL 0.5 { E_BLOCK{} E_BLOCK{x -1.1}} 
rule B_RAND_DOUBLE_VOWEL 0.5 { E_BLOCK{flip 90} E_BLOCK{x -1.1}} 
rule B_RAND_DOUBLE_VOWEL { E_BLOCK{} A_BLOCK{x -1.1}} 
rule B_RAND_DOUBLE_VOWEL { I_BLOCK{} E_BLOCK{x -1.1}} 
rule B_RAND_DOUBLE_VOWEL { O_BLOCK{} A_BLOCK{x -1.1}} 
rule B_RAND_DOUBLE_VOWEL { O_BLOCK{} O_BLOCK{x -1.1}} 
rule B_RAND_DOUBLE_VOWEL { O_BLOCK{} U_BLOCK{x -1.1}} 

rule B_RAND_DOUBLE_CONSONANT { C_BLOCK{} H_BLOCK{x -1.1}} 
rule B_RAND_DOUBLE_CONSONANT { C_BLOCK{} K_BLOCK{x -1.1}} 
rule B_RAND_DOUBLE_CONSONANT { F_BLOCK{} F_BLOCK{x -1.1}} 
rule B_RAND_DOUBLE_CONSONANT { L_BLOCK{} K_BLOCK{x -1.1}} 
rule B_RAND_DOUBLE_CONSONANT { L_BLOCK{} L_BLOCK{x -1.1}} 
rule B_RAND_DOUBLE_CONSONANT { L_BLOCK{} P_BLOCK{x -1.1}} 
rule B_RAND_DOUBLE_CONSONANT { L_BLOCK{} T_BLOCK{x -1.1}} 
rule B_RAND_DOUBLE_CONSONANT { N_BLOCK{} D_BLOCK{x -1.1}} 
rule B_RAND_DOUBLE_CONSONANT { N_BLOCK{} G_BLOCK{x -1.1}} 
rule B_RAND_DOUBLE_CONSONANT { N_BLOCK{} K_BLOCK{x -1.1}} 
rule B_RAND_DOUBLE_CONSONANT { N_BLOCK{} T_BLOCK{x -1.1}} 
rule B_RAND_DOUBLE_CONSONANT { P_BLOCK{} P_BLOCK{x -1.1}} 
rule B_RAND_DOUBLE_CONSONANT { R_BLOCK{} D_BLOCK{x -1.1}} 
rule B_RAND_DOUBLE_CONSONANT { R_BLOCK{} F_BLOCK{x -1.1}} 
rule B_RAND_DOUBLE_CONSONANT { R_BLOCK{} N_BLOCK{x -1.1}} 
rule B_RAND_DOUBLE_CONSONANT { R_BLOCK{} T_BLOCK{x -1.1}} 
rule B_RAND_DOUBLE_CONSONANT { S_BLOCK{} H_BLOCK{x -1.1}} 
rule B_RAND_DOUBLE_CONSONANT { S_BLOCK{} T_BLOCK{x -1.1}} 
rule B_RAND_DOUBLE_CONSONANT { S_BLOCK{} S_BLOCK{x -1.1}} 
rule B_RAND_DOUBLE_CONSONANT { Z_BLOCK{} Z_BLOCK{x -1.1}} 

rule B_RAND_DIPTHONG{ B_BLOCK{} L_BLOCK {x -1.1}} 
rule B_RAND_DIPTHONG{ B_BLOCK{} R_BLOCK {x -1.1}} 
rule B_RAND_DIPTHONG{ C_BLOCK{} H_BLOCK {x -1.1}} 
rule B_RAND_DIPTHONG{ C_BLOCK{} L_BLOCK {x -1.1}} 
rule B_RAND_DIPTHONG{ C_BLOCK{} R_BLOCK {x -1.1}} 
rule B_RAND_DIPTHONG{ D_BLOCK{} R_BLOCK {x -1.1}} 
rule B_RAND_DIPTHONG{ F_BLOCK{} L_BLOCK {x -1.1}} 
rule B_RAND_DIPTHONG{ F_BLOCK{} R_BLOCK {x -1.1}} 
rule B_RAND_DIPTHONG{ G_BLOCK{} L_BLOCK {x -1.1}} 
rule B_RAND_DIPTHONG{ G_BLOCK{} R_BLOCK {x -1.1}} 
rule B_RAND_DIPTHONG{ P_BLOCK{} L_BLOCK {x -1.1}} 
rule B_RAND_DIPTHONG{ P_BLOCK{} R_BLOCK {x -1.1}} 
rule B_RAND_DIPTHONG{ S_BLOCK{} C_BLOCK {x -1.1}} 
rule B_RAND_DIPTHONG{ S_BLOCK{} H_BLOCK {x -1.1}} 
rule B_RAND_DIPTHONG{ S_BLOCK{} L_BLOCK {x -1.1}} 
rule B_RAND_DIPTHONG{ S_BLOCK{} M_BLOCK {x -1.1}} 
rule B_RAND_DIPTHONG{ S_BLOCK{} N_BLOCK {x -1.1}} 
rule B_RAND_DIPTHONG{ S_BLOCK{} P_BLOCK {x -1.1}} 
rule B_RAND_DIPTHONG{ S_BLOCK{} W_BLOCK {x -1.1}} 
rule B_RAND_DIPTHONG{ T_BLOCK{} H_BLOCK {x -1.1}} 
rule B_RAND_DIPTHONG{ T_BLOCK{} R_BLOCK {x -1.1}} 
rule B_RAND_DIPTHONG{ T_BLOCK{} W_BLOCK {x -1.1}} 
rule B_RAND_DIPTHONG{ W_BLOCK{} H_BLOCK {x -1.1}} 

rule B_RAND_SUFFIx 2 {RAND_VOWEL{} B_WORD_HOOK{x -2.2}} 
rule B_RAND_SUFFIX{A_BLOCK{} N_BLOCK{x -1.1} B_WORD_HOOK{x -3.3}} 
rule B_RAND_SUFFIX{I_BLOCK{} N_BLOCK{x -1.1} G_BLOCK{x -2.2} B_WORD_HOOK{x -4.4}} 
rule B_RAND_SUFFIX{I_BLOCK{} S_BLOCK{x -1.1} H_BLOCK{x -2.2} B_WORD_HOOK{x -4.4}} 
rule B_RAND_SUFFIX{E_BLOCK{} D_BLOCK{x -1.1} B_WORD_HOOK{x -3.3}} 
rule B_RAND_SUFFIX{E_BLOCK{} N_BLOCK{x -1.1} B_WORD_HOOK{x -3.3}} 
rule B_RAND_SUFFIX{E_BLOCK{} R_BLOCK{x -1.1} B_WORD_HOOK{x -3.3}} 
rule B_RAND_SUFFIX{O_BLOCK{} N_BLOCK{x -1.1} B_WORD_HOOK{x -3.3}} 
rule B_RAND_SUFFIX{U_BLOCK{} S_BLOCK{x -1.1} S_BLOCK{x -2.2} B_WORD_HOOK{x -4.4}} 
rule B_RAND_SUFFIx 6 { B_WORD_HOOK{x -1.1}} 

Post Reply