Print custom alphabet
GolfScript 48 75 73 70 67 66 63 57 53

(91,65&gt;.+.{32+}%+.@?&gt;(;25&lt;''+.,1&gt;*\['''.']?[' 'n 0]=*

Online demos:

Test case 1 ('c')

Test case 2 ('H.')

Test case 3 (invalid input)


Update:
Now the last rule is also implemented. Thanks to Ventero for pointing out the issue.
Update:
I rewrote the code from scratch and found new ways to shorten it even further.
History of modifications:
.,3&lt;\(:x;:§['''.']?)and{91,65&gt;.+.{32+}%+.x?).{&gt;25&lt;''+{§n' 'if}%}{;;}if}''if
.,3&lt;\(:x;:§['''.']?)*{91,65&gt;.+.{32+}%+.x?).{&gt;25&lt;''+{§n' 'if}%}{;;}if}''if
.,3&lt;\(:x;:§['''.']?)*{91,65&gt;.+.{32+}%+.x?).!!@@&gt;25&lt;''+{§n' 'if}%*}''if
.,3&lt;\(:x;:§['''.']?)*!!91,65&gt;.+.{32+}%+.x?).!!@@&gt;25&lt;''+{§n' 'if}%**
.,3&lt;\(:x;:§['''.']?)*91,65&gt;.+.{32+}%+.x?).@@&gt;25&lt;''+{§n' 'if}%@@*!!* 
.(@,3&lt;@:§['''.']?)*91,65&gt;.+.{32+}%+@1$?).@@&gt;25&lt;''+{§n' 'if}%@@*!!*
.(@,3&lt;@:§['''.']?)*91,65&gt;.+.{32+}%+@1$?):x&gt;25&lt;''+{§n' 'if}%\x*!!*
.(@,3&lt;@:§['''.']?)*91,65&gt;.+.{32+}%+@1$?):x&gt;25&lt;''+§n' 'if*\x*!!*
(\:§['''.']?)91,65&gt;.+.{32+}%+@1$?):x&gt;25&lt;''+§n' 'if*\x*!!*
(91,65&gt;.+.{32+}%+.@?&gt;(;25&lt;''+.,1&gt;*\['''.']?[' 'n 0]=*