[comp.text.tex] .mf source for CD logo, dolby logo

drstrip@intvax.UUCP (David R. Strip) (02/26/91)

My earlier request for logos to use with a cassette labeling program
did yield the dolby symbol, but not a CD one. So I went to work at it.
Here is the metafont source for both.

The cassette macros should be appearing at the same time in a different
posting.

DOLBY.MF



%This dolby symbol was originally written by amgreene@mit.edu.
%I have hacked on it a bit, eliminating a few unnecessary lines
%and providing a variety of sizes of the logo.
% David Strip, drstrip@cs.sandia.gov



%
%Here's a dolby symbol, courtesy <amgreene@mit.edu> (he doesn't read
%Netnews, but asked me to post this when I forwarded your article to
%him...)


mode_setup;
font_size 10pt#;
screenchars;showit;
em#:=11pt#; cap#:=7pt#;
% Here we go...
%
fontdimen 2: 0.8em#, 1.5, 1; % spaces dimens (len,stretch,shrink)
def dolby =
  q := .1w;
  fill (0,0)--(w,0)--(w,h)--(0,h)--cycle;
  unfill (q,q){right}..(.5(w-2q),.5h){up}..(q,h-q){left}--cycle;
  unfill (w-q,q){left}..(.5(w+2q),.5h){up}..(w-q,h-q){right}--cycle;
  enddef;
%
beginchar("D",em#,cap#,0pt#);  "Dolby Logo";
dolby;
endchar;

em#:=1.2em#;
cap#:=1.2cap#;
beginchar("E",em#,cap#,0pt#);
dolby;
endchar;

em#:=1.2em#;
cap#:=1.2cap#;
beginchar("F",em#,cap#,0pt#);
dolby;
endchar;

em#:=1.2em#;
cap#:=1.2cap#;
beginchar("G",em#,cap#,0pt#);
dolby;
endchar;

em#:=1.2em#;
cap#:=1.2cap#;
beginchar("H",em#,cap#,0pt#);
dolby;
endchar;

%
end.

% 


--------------------------------------
And here's the cd logo.
--------------------------------------

%Here is some mf code for generating the CD logo that appears on 
%various locations on CDs. (Where else?) It's hardly an example of
%metafont code to emulate, but it does work, at least for me.
% comments, improvements, etc to drstrip@cs.sandia.gov

%When you have run this through metafont, the logo will appear as a
%single character in the font. It will appear several times at 
%different sizes if you run the file as it is.


mode_setup;
%cd logo

%our basic unit of measure
s#:=pt#/2;
define_pixels(s);


%This is the word disc in big outline letters
def disc =
pickup pencircle scaled 1.25s;
a:=27.5s;  %roughly speaking these are a baseline, baseline+x_ht, and
b:=47.5s;  %baseline+cap_ht
c:=55s;

%The big outlined d  (written in a gross way)
z1=(23.5s, a); z2= (23.5s, c); z3= (18s, c); z4= (18s, b); z5 = (12s, b);
z6 = ( 8.5s, 44s); z7 = (8.5s, 31s); z8 = (12s, a);
z9=( 18s, 32s); z10=(18s, 42.5s); z11=(16s, 44.5s); z12=(14s, 42.5s);
z13=(14s, 32s); z54=(16s, 30.5s);
draw z1--z2--z3--z4--z5{left}..z6{down}--z7{down}..z8{right}--z1;
draw z9--z10..z11..z12--z13..z54..z9;

%The big i
z14=(32.5s, a); z15=(32.5s, b); z16=(27s, b); z17=(27s,a);
draw z14--z15--z16--z17--cycle;

%The big s  (Here we show a little of metafont's power to balance things 
%            automagically)
y27=y28=a;
y26=y25=y27+5s;
y24=y26+1.25s;
y22=y23=y25+2.5s;
y31=y32=y22+5s;
y33=y31+1.25s;
y34=y35=y31+2.5s;
y18=y19=y34+5s;
y20=y19-3.5s;
y21=y22+3.5s;
y30=y31-3.5s;
y29=y28+3.5s;

x20=x21=x26=x27=36.5s;
x19=x22=x20+3.5s;
x33=x20+5s;
x34=x32=x33+1.25s;
x23=x25=x24-1.25s;
x24=x29-5s;
x28=x31=x18-3.5s;
x18=x35=x29=x30=49.5s;
draw z18--z19{left}..z20{down}--z21{down}..z22{right}--z23{right}..z24{down}..
     z25{left}--z26--z27--z28{right}..z29{up}--z30{up}..z31{left}--z32{left}..
     z33{up}..z34{right}--z35--cycle;

%penlabels(18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35);

%The big c (back to crude mode)
z36=(66.5s, 40s); z37=(66.5s, 44s); z38=(63s, b); z39=( 56s, b);
z40=(52.5s, 44s); z41=(52.5s, 31s); z42=(56s, a); z43=(63s,a);
z44=(66.5s, 31s); z45=( 66.5s, 36s); z46=(61s, 36s); 
z47=( 61s, 32s); z48=( 59.5s, 30.5s); z49=(58s, 32s); z50=(58s, 43s);
z51=( 59.5s, 44.5s); z52=(61s, 43s); z53=( 61s, 40s);
draw z36--z37{up}..z38{left}--z39{left}..z40{down}--z41{down}..z42{right}--
     z43{right}..z44{up}--z45{up}--z46--z47{down}..z48{left}..z49{up}--
     z50{up}..z51{right}..z52{down}--z53--cycle;

%penlabels(36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53);

enddef;

%This routine writes all the words around the outline letters.
def compact = 
path c_path, a_path, a_cross_path, t_path, tt_path, d_path;
pickup pencircle scaled 1.5s;

a:=50.75s; b:=55.25s;

z60=(30s, b-1s); z61=(28.5s, b); z62=(27s, b-1s); z63=(27s, a+s);
z64=(28.5s, a); z65=(30s, a+s);

c_path = z60{up}..z61{left}..z62{down}..z63{down}..z64{right}..z65{up};
draw c_path;

%Here we show a tad of cleverness, reusing the c_path to make the o
%This theme appears anywhere a letter is repeated, in whole or part.

draw c_path..cycle shifted (6s,0);

z72=(39s, a); z73=(39s, b); z74=(40s, b); z75=(41.5s, a); z76=(43s, b);
    z77=(44s, b); z78=(44s,a);
draw z72--z73--z74--z75--z76--z77--z78;

z79=(47s, a); z80=(47s,b); z81=(49s, b); z82=(50s, b-s); z83=(50s, b-2s);
z84=(49s, b-3s); z85=(47s, b-3s);
draw z79--z80--z81{right}..z82{down}..z83{down}..z84{left}--z85;

z86=(52s, a); z87=(53.5s, b); z88=(54.5s, b); z89=(56s, a); 
z90=(52.5s, 51.5s); z91=(55.5s, 51.5s);
a_path = z86--z87--z88--z89; a_cross_path = z90--z91;
draw a_path; draw a_cross_path;

draw c_path shifted (31s, 0);

z98=(64.5s, a); z99=(64.5s,b); z100=(63s,b); z101=(66s,b);
t_path = z98--z99; tt_path =  z100--z101;
draw t_path; draw tt_path;

a:= 19.75s; b:=24.25s;
z102=(8.5s, a); z103=(8.5s,b); z104=(11.25s, b); z105=(12.25s, b-s);
z106=(12.25s,a+s); z107=(11.25s, a);
d_path = z102--z103--z104{right}..z105{down}..z106{down}..z107{left}--cycle;
draw d_path;

draw (14.75s, a)--(14.75s, b);

draw c_path shifted (-9.75s, -31s)..(20.25s, a+1.5s)--(19.5s, a+1.5s) ;

draw (23.25s, a)--(23.25s, b);

draw t_path shifted (-37.5s, -31s);
draw tt_path shifted (-37.5s, -31s);

draw a_path shifted (-22.25s, -31s);
draw a_cross_path shifted (-22.25s, -31s);

draw (35.75s, b)--(35.75s, a)--(38s, a);

draw a_path shifted (-10s, -31s);
draw a_cross_path shifted (-10s, -31s);


draw (48s,b)--(48s, a+s){down}..(49s, a){right}.. (50s, a){right}..
     (51s, a+s){up}--(51s, b);

draw d_path shifted (45s, 0);

draw (59.5s, a)--(59.5s, b);

draw c_path shifted (35s, -31s)--cycle;


enddef;

beginchar("A",72s#,72s#,0);
disc;
compact;
pickup pencircle scaled .5s;
draw (0,0)--(0,h)--(w,h)--(w,0)--cycle;
showit;
endchar;

s:=1.2s;
s#:=1.2s#;
beginchar("B",72s#,72s#,0);
disc;
compact;
pickup pencircle scaled .5s;
draw (0,0)--(0,h)--(w,h)--(w,0)--cycle;
showit;
endchar;

s:=1.2s;
s#:=1.2s#;
beginchar("C",72s#,72s#,0);
disc;
compact;
pickup pencircle scaled .5s;
draw (0,0)--(0,h)--(w,h)--(w,0)--cycle;
showit;
endchar;

s:=1.2s;
s#:=1.2s#;
beginchar("D",72s#,72s#,0);
disc;
compact;
pickup pencircle scaled .5s;
draw (0,0)--(0,h)--(w,h)--(w,0)--cycle;
showit;
endchar;

end;

----------------------------------------------------

Enjoy.
drstrip@cs.sandia.gov