summaryrefslogtreecommitdiff
path: root/fonts/pandora/widths.mf
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /fonts/pandora/widths.mf
Initial commit
Diffstat (limited to 'fonts/pandora/widths.mf')
-rw-r--r--fonts/pandora/widths.mf136
1 files changed, 136 insertions, 0 deletions
diff --git a/fonts/pandora/widths.mf b/fonts/pandora/widths.mf
new file mode 100644
index 0000000000..fc7cfcae11
--- /dev/null
+++ b/fonts/pandora/widths.mf
@@ -0,0 +1,136 @@
+%*****************************************************************************
+% Copyright (c) 1989 by N. N. Billawala
+%*****************************************************************************
+
+
+% widths.mf a file containing width calculation information for the chars
+
+% Essentially all width information is contained in this file to eliminate
+% the need to alter the individual character files if width changes are desired.
+
+% Parts of characters are separated so that amounts can be altered as shapes
+% change for the lowercase, the stems are all generally of the same weight,
+% with possible variation in diagonals.
+% The uppercase has more variation in combination of thin/thick vertical
+% stems, so the method for choosing widths was changed to depend on
+% stem weights and an idea of proportions
+% Fixed width characters and numbers have a constant total width,
+% but reference and fitting proportions vary within this space
+% Punctuation was partly based on uc/lc widths, but otherwise
+% independent amounts given.
+
+vardef variable_character_reference_widths=
+ save thick,thin,thickk,thinn,bowll;
+
+ thick=stem.uc#/max(width#,1); uc:=.35*boldness;
+ uc1=.35*boldness; uc4=.35; % always=.35;
+ uc2:=1+if boldness<1:.25 else:0 fi; % uc2 for diagonals
+ thin=thin_stem.uc#/max(width#,1); lc.arch_space:=.21*boldness;
+ thickk=stem.lc#/max(width#,1); lc.bowl_space:=.24*boldness;
+ thinn=thin_stem.lc#/max(width#,1); lc.o_space:=.27*boldness;
+ bowll=bowlstem.lc#/max(width#,1); lc.diagonal_space:=.3*boldness;
+
+ i_w=thickk; % i l the "_w" is for "width"
+ j_w=thickk+.55*lc.arch_space; % j
+ s_w=uc2*(thickk+lc.o_space); % s t z ***
+ c_w=uc2*(bowll+lc.o_space); % c ***
+ a_w=thickk+bowll+lc.arch_space; % a(halfbowl)
+ b_w=thickk+bowll+lc.bowl_space; % b a d e g p q k ss-lig
+ r_w=2thickk+.5*lc.arch_space; % r f
+ n_w=2thickk+lc.arch_space; % n h u
+ m_w=3thickk+2*lc.arch_space; % m
+ o_w=2bowll+lc.bowl_space; % g(halfbowl)
+ oo_w=2bowll+lc.o_space; % o
+ v_w=(uc2)*(thickk+thinn)+lc.diagonal_space; % v x y ***
+ w_w=(uc2)*(thickk+thinn)+thickk+1.5lc.diagonal_space; % w ***
+ oe_w=oo_w+o_w-bowll; % oe
+ ae_w=2b_w-bowll; % ae
+ accent_w=.8n_w; % accents
+
+ I_w=thick; % I
+ J_w=thick+.5uc; % J
+ E_w=thick+.85uc4; % E F L GAMMA ****
+ T_w=thick+1.25uc1; % T ****
+ B_w=2thick+.75uc; % B P
+ R_w=2thick+.85uc1; % R PI XI K ****SIGMA
+ H_w=2thick+uc; % H C
+ D_w=2thick+1.1uc; % D G
+ O_w=2thick+1.25uc; % O Q DELTA THETA
+ N_w=H_w; % N
+ S_w=thick+thin+.75uc; % S Z ****
+ U_w=thick+thin+uc; % U ****
+ A_w=(uc2)*(thick+thin)+1.25uc1; % A V Y LAMBDA X ****
+ M_w=(uc2)*2(thick+thin)+1.25uc; % M
+ W_w=(uc2)*(2thick+thin)+1.5uc1; % W ****
+ AE_w=E_w+2/3*A_w; % AEligature
+ OE_w=E_w+O_w-thick; % OEligature
+
+ v_a=.50; % for straight strokes the "v_" is for "variable"
+ v_b=.42; % for arches
+ v_c=.28; % for bowls
+ v_d=.24; % for thick diagonals
+ v_e=v_d-(thickk-thinn); % for thin diagonals
+ v_f=.20; % for half open shapes
+ v_g=.10; % for open strokes
+ v_h=.08; % for open strokes
+
+ v_A=.5; % for thick straight
+ v_B=v_A-(thick-thin); % for thin straight
+ v_C=.2; % for bowls
+ v_D=.16; % for thick diagonals
+ v_E=v_D-(thick-thin); % for thin diagonals
+ v_F=.2; % for half open sides
+ v_G=.16; % for half-very open sides
+ v_H=.12; % for very open sides
+ v_I=.1; % for the L
+
+enddef;
+
+variable_character_reference_widths;
+
+%***** for numbers *****
+
+num_width_a#=.2width#; num_fit_a#+num_width_a#=.55width#; % 1
+num_width_b#=.4width#; num_fit_b#+num_width_b#=.55width#; % 2 3 5 7 $
+num_width_c#=.44width#; num_fit_c#+num_width_c#=.55width#; % 6 9 0
+num_width_d#=.47width#; num_fit_d#+num_width_d#=.55width#; % 8
+num_width_e#=.50width#; num_fit_e#+num_width_e#=.55width#; % 4
+
+%***** for single pitch fonts *****
+
+% *_*mono# gives the character reference width within the total per char width
+% *_mfit# is the amount of space left after the reference width is taken away
+% *_*mono#+*_mfit# give the total width of the character
+% In the case of single pitch fonts, the total width is always the same.
+% In cases where, e.g., three instead of only one width is desired, the
+% value of 1*mono# can be changed
+
+ a_mono#:=.6mono#; a_mfit#+a_mono#=mono#; % fjrJ',.:;
+ b_mono#:=.7mono#; b_mfit#+b_mono#=mono#; % "mid" width
+ c_mono#:=.75mono#; c_mfit#+c_mono#=mono#; % abdgkpq069
+ d_mono#:=.8mono#; d_mfit#+d_mono#=mono#; % eotvxyz4689CDGKOQ%&*^
+ e_mono#:=.9mono#; e_mfit#+e_mono#=mono#; % AVXY4
+ f_mono#:=.9mono#; f_mfit#+f_mono#=mono#; % mwMW@ ae oe AE OE
+
+define_pixels(a_mono,b_mono,c_mono,d_mono,e_mono,f_mono,
+ a_mfit,b_mfit,c_mfit,d_mfit,e_mfit,f_mfit);
+
+% The following give fit adjustments for single pitch characters
+
+ m_a=.5; % this amt is always .5
+ m_b=.55; m_bb+m_b=1; % BDEFGKPR7
+ m_c=.55; m_cc+m_c=1; % abdghkmnpqu()
+ m_d=.6; m_dd+m_d=1; % C
+ m_e=.65; m_ee+m_e=1; % cflrt AE []
+ m_f=.75; m_ff+m_f=1; % JL
+
+%**********
+
+% need to account for serifs
+% recognizing that a straight ascender may carry different visual value as
+% straight of x-height
+
+%**********
+
+
+