summaryrefslogtreecommitdiff
path: root/fonts/xcharter/doc/altSRB.py
diff options
context:
space:
mode:
Diffstat (limited to 'fonts/xcharter/doc/altSRB.py')
-rwxr-xr-xfonts/xcharter/doc/altSRB.py110
1 files changed, 110 insertions, 0 deletions
diff --git a/fonts/xcharter/doc/altSRB.py b/fonts/xcharter/doc/altSRB.py
new file mode 100755
index 0000000000..ecbcb0e0e7
--- /dev/null
+++ b/fonts/xcharter/doc/altSRB.py
@@ -0,0 +1,110 @@
+#!/usr/bin/env python
+
+import os, sys
+
+# Run this in the root directory containing afm files and a texmf branch
+# Before running, all encoding files a_* should be renamed to xch_*
+# and the corresponding changes applied to xcharter.map
+encfiles=set()
+enclst=[]
+enclstt1=[]
+enclstly1=[]
+enclstot1=[]
+encfilest1=set()
+encfilesly1=set()
+encfilesot1=set()
+newlines=[]
+afmcmds=[]
+vflst=[]
+tmfv = sys.argv[1]
+with open(tmfv+"/fonts/map/dvips/xcharter/XCharter.map",'r') as f:
+ for line in f:
+ if "-sc-" in line:
+ tmp = line.split()
+ enc=tmp[4][2:] # omit <[
+ if (enc[-4:]==".enc") and (enc[:4]=="xch_"):
+ if "-ly1-" in line:
+ enclstly1.append(enc)
+ elif "-ot1-" in line:
+ enclstot1.append(enc)
+ else:
+ enclstt1.append(enc)
+ h=tmp[5][1:-4] # psfile, without .pfb or <
+ a=tmp[0][:-6] # name of vf
+ vflst.append(a)
+ s="afm2tfm "+h+" -T "+tmfv+"/fonts/enc/dvips/xcharter/"+enc+" -v "+a+" "+tmp[0]
+ afmcmds.append(s)
+
+encfilest1=set(enclstt1)
+encfilesly1=set(enclstly1)
+encfilesot1=set(enclstot1)
+for f in sorted(encfilest1):
+ with open(tmfv+"/fonts/enc/dvips/xcharter/"+f,'r') as g:
+ tmp = g.read()
+ k=tmp.find('/thorn')+6
+ s=tmp[k:]
+ if '/.notdef' in s:
+ s=s.replace('/.notdef','/SSsmall')
+ with open(tmfv+"/fonts/enc/dvips/xcharter/"+f,'w') as g:
+ g.write(tmp[:k]+s)
+for f in sorted(encfilesly1):
+ with open(tmfv+"/fonts/enc/dvips/xcharter/"+f,'r') as g:
+ tmp = g.read()
+ k=tmp.find('/cedilla')+8
+ s=tmp[k:]
+ j=s.find('/')
+ if s[j:j+8]=='/.notdef':
+ s=s[:j]+'/SSsmall'+s[j+8:]
+ with open(tmfv+"/fonts/enc/dvips/xcharter/"+f,'w') as g:
+ g.write(tmp[:k]+s)
+# We've modified the encoding files
+# Now regenerate the --base and vpl
+
+with open(tmfv+"/fonts/map/dvips/xcharter/XCharter.map",'r') as f:
+ for line in f:
+ if "-tosf-" in line:
+ tmp = line.split()
+ enc=tmp[4][2:]
+ if (enc[-4:]==".enc") and (enc[:4]=="xch_"):
+ enc=enc[:3]+"1"+enc[3:]
+ enclst.append(enc)
+ tmp[0]="XCharter1"+tmp[0][8:]
+ tmp[2]=tmp[2][:8]+"1"+tmp[2][8:] # encoding name
+ tmp[4]="<["+enc # encoding file, prefixed by <[
+ newlines.append(' '.join(tmp))
+ h=tmp[5][1:-4] # psfile, without .pfb or <
+ a=tmp[0]
+ if a[-6:]=="--base":
+ a=tmp[0][:-6] # name of vf
+ vflst.append(a)
+ s="afm2tfm "+h+" -T "+tmfv+"/fonts/enc/dvips/xcharter/"+enc+" -v "+a+" "+tmp[0]
+ afmcmds.append(s)
+
+#print newlines
+encfiles=set(enclst)
+#print sorted(encfiles)
+#sys.exit()
+for f in sorted(encfiles):
+ f0=f[:3]+f[4:] # remove "1"
+ os.system("/bin/cp -fp "+tmfv+"/fonts/enc/dvips/xcharter/"+f0+" "+tmfv+"/fonts/enc/dvips/xcharter/"+f)
+ with open(tmfv+"/fonts/enc/dvips/xcharter/"+f,'r') as g:
+ tmp = g.read()
+ tmp=tmp.replace("AutoEnc","AutoEnc1")
+ tmp=tmp.replace("one.oldstyle","one.Alt.oldstyle")
+ with open(tmfv+"/fonts/enc/dvips/xcharter/"+f,'w') as g:
+ g.write(tmp)
+
+#Finally, write the afmcmds and update mapfile
+for j in range(len(vflst)):
+ a=vflst[j]
+ s=afmcmds[j]
+ print s
+ if os.system(s)==0:
+ if os.system("vptovf "+a)==0:
+ os.system("/bin/mv -f "+a+".tfm "+tmfv+"/fonts/tfm/public/xcharter")
+ os.system("/bin/mv -f "+a+"--base.tfm "+tmfv+"/fonts/tfm/public/xcharter")
+ os.system("/bin/mv -f "+a+".vf "+tmfv+"/fonts/vf/public/xcharter")
+
+with open(tmfv+"/fonts/map/dvips/xcharter/XCharter.map",'a+') as f:
+ for s in newlines:
+ f.write(s+'\n') \ No newline at end of file