2025-04-27 07:49:33 -04:00

452 lines
12 KiB
Awk
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

BEGIN {
options=ARGV[1]
ARGV[1]=""
gpdname=ARGV[2]
ARGV[2]=""
resname=ARGV[3]
ARGV[3]=""
InitFontMap();
InitDocOrder();
print "*%"
print "*% Copyright (c) 1997 - 2000 Microsoft Corporation"
print "*% All Rights Reserved."
print "*%"
}
/^\*GPDFileName/ {
print "*GPDFileName: \"" gpdname "\""
print "*CodePage: 1252"
next
}
/^\*ModelName/ {
gsub(/žƒZƒ‰/, "KYOCERA")
if (options ~ /H/)
gsub(/"$/, " (MPS)\"")
}
/^\*ResourceDLL/ {
print "*ResourceDLL: \"" resname "\""
print "*Feature: RESDLL"
print "{"
print " *Option: KyoRes"
print " {"
print " *Name: \"kyores.dll\""
print " }"
print "}"
next
}
/^\*DefaultFont/ || /^\*DeviceFonts/ || /\*Fonts/ || /^\+[ \t]*[0-9]/ {
DoMapFont($0)
next
}
/^\*Feature/ {
feature=$2
if (feature ~ /(MediaType|PrintDensity)/)
SkipBlock = 1
else if (feature ~ /PrintQuality/ && options ~ /M/) {
SkipBlock = 1
print "*Feature: PrintQuality"
print "{"
print " *rcNameID: =TEXT_QUALITY_DISPLAY"
print " *DefaultOption: Option2"
print " *Option: Option1"
print " {"
print " *rcNameID: 355"
print " *Command: CmdSelect"
print " {"
print " *Order: DOC_SETUP.10"
print " *Cmd: \"!R!sir0;exit;\""
print " }"
print " }"
print " *Option: Option2"
print " {"
print " *rcNameID: 356"
print " *Command: CmdSelect"
print " {"
print " *Order: DOC_SETUP.10"
print " *Cmd: \"!R!sir2;exit;\""
print " }"
print " }"
print "}"
}
}
/\*Command/ {
command=$2
if (command ~ /CmdStartDoc/)
SkipBlock = 1
else if (command ~ /CmdStartPage/) {
print "*Command: CmdStartDoc"
print "{"
print " *Order: DOC_SETUP.1"
print " *Cmd: \"!R!;sem6;FFTO0;exit;<1B>%%-12345X@PJL<0D0A>\""
print "}"
} else if (command ~ /(CmdEndJob|CmdCopies)/) {
if (options ~ /H/) {
if (command ~ /CmdEndJob/) {
print "*Command: " command
print "{"
print " *Order: DOC_FINISH.1"
print " *Cmd: \"<1B>E<1B>%%-12345X!R!JOBT;FFTO1;res;exit;\""
print "}"
} else {
print "*Command: " command
print "{"
print " *Order: DOC_SETUP.7"
print " *Cmd: %d{NumOfCopies}\",\""
print "}"
}
} else if (options ~ /R/) {
print "*switch: RamDisk"
print "{"
print " *case: NotInstalled"
print " {"
print " *Command: " command
print " {"
if (command ~ /CmdEndJob/) {
print " *Order: DOC_FINISH.1"
print " *Cmd: \"<1B>E<1B>%%-12345X!R!FFTO1;res;exit;\""
} else {
print " *Order: DOC_SETUP.7"
print " *Cmd: \"<1B>&l\" %d{NumOfCopies}\"X\""
}
print " }"
print " }"
print " *case: Installed"
print " {"
print " *Command: " command
print " {"
if (command ~ /CmdEndJob/) {
print " *Order: DOC_FINISH.1"
print " *Cmd: \"<1B>E<1B>%%-12345X!R!JOBT;FFTO1;res;exit;\""
} else {
print " *Order: DOC_SETUP.7"
print " *Cmd: %d{NumOfCopies}\",0,0,0,%\"%\",%\"%\",%\"%\";EXIT;\""
}
print " }"
print " }"
print "}"
} else {
print "*Command: " command
print "{"
if (command ~ /CmdEndJob/) {
print " *Order: DOC_FINISH.1"
print " *Cmd: \"<1B>E<1B>%%-12345X!R!FFTO1;res;exit;\""
} else {
print " *Order: DOC_SETUP.7"
print " *Cmd: \"<1B>&l\" %d{NumOfCopies}\"X\""
}
print "}"
}
SkipBlock = 1
}
}
/\*Order.*DOC_SETUP/ {
if (command ~ /CmdSelect/)
i = feature
else
i = command
if (i in DocOrder)
gsub(/[0-9]*$/, DocOrder[i])
else
$0 = $0 "???"
}
/^}$/ {
if (SkipBlock) {
SkipBlock = 0
feature=""
next
} else if (feature ~ /Resolution/) {
print "*% *Option: Option3"
print "*% {"
print "*% *Name: \"150 x 150 dots per inch\""
print "*% *DPI: PAIR(150, 150)"
print "*% *TextDPI: PAIR(300, 300)"
print "*% *MinStripBlankPixels: 32"
print "*% EXTERN_GLOBAL: *StripBlanks: LIST(ENCLOSED,TRAILING)"
print "*% *SpotDiameter: 100"
print "*% *Command: CmdBeginRaster { *Cmd : \"<1B>*r1A\" }"
print "*% *Command: CmdEndRaster { *Cmd : \"<1B>*rB\" }"
print "*% *Command: CmdSendBlockData { *Cmd : \"<1B>*b\" %d{NumOfDataBytes}\"W\" }"
print "*% *Command: CmdSelect"
print "*% {"
print "*% *Order: DOC_SETUP.5"
print "*% *Cmd: \"@PJL SET RESOLUTION=300<0D0A>@PJL ENTER LANGUAGE = PCL<0D0A1B>E<1B>*t150R<1B>&u\""
print "*% + \"600D<1B>*r0F\""
print "*% }"
print "*% }"
print "*% *Option: Option4"
print "*% {"
print "*% *Name: \"75 x 75 dots per inch\""
print "*% *DPI: PAIR(75, 75)"
print "*% *TextDPI: PAIR(300, 300)"
print "*% EXTERN_GLOBAL: *StripBlanks: LIST(TRAILING)"
print "*% *SpotDiameter: 100"
print "*% *Command: CmdBeginRaster { *Cmd : \"<1B>*r1A\" }"
print "*% *Command: CmdEndRaster { *Cmd : \"<1B>*rB\" }"
print "*% *Command: CmdSendBlockData { *Cmd : \"<1B>*b\" %d{NumOfDataBytes}\"W\" }"
print "*% *Command: CmdSelect"
print "*% {"
print "*% *Order: DOC_SETUP.5"
print "*% *Cmd: \"@PJL SET RESOLUTION=300<0D0A>@PJL ENTER LANGUAGE = PCL<0D0A1B>E<1B>*t75R<1B>&u6\""
print "*% + \"00D<1B>*r0F\""
print "*% }"
print "*% }"
}
feature=""
}
/\*rcNameID/ {
if (feature ~ /PaperSize/ && $2 !~ /PAPER_SIZE_DISPLAY/) {
print
gsub(/\*rcNameID.*$/, "*PageProtectMem: 2048")
print
next
}
}
{
if (SkipBlock)
next
print
}
END {
file="newfea.txt"
while (getline < file > 0)
print
close(file)
if (options ~ /M/) {
file = "mtype.txt"
while (getline < file > 0)
print
close(file)
}
if (options ~ /H/) {
file = "hdunit.txt"
while (getline < file > 0)
print
close(file)
} else if (options ~ /R/) {
file = "ramdisk.txt"
while (getline < file > 0)
print
close(file)
}
file = "ttfs.txt"
while (getline < file > 0)
print
close(file)
}
#
# functions
#
function DoMapFont(str, n, i, v, c, l, s)
{
n = length(str)
l = 0
v = ""
for (i = 1; i <= n; i++) {
c = substr(str, i, 1)
if (c >= "0" && c <= "9") {
v = (v * 10) + (c - "0")
continue
}
if (v) {
if (v in FontMap)
s = FontMap[v] c
else
s = "??" v c
v = ""
} else
s = c
if (l + length(s) >= 78) {
printf("\n+ ")
l = 4
}
printf("%s", s)
l += length(s)
}
if (v) {
if (v in FontMap)
s = FontMap[v]
else
s = "??" v
if (l + length(s) >= 78)
printf("\n+ ")
printf("%s", s)
}
if (l > 0)
print ""
}
function InitFontMap()
{
FontMap[1] = "RESDLL.KyoRes.92"
FontMap[2] = "RESDLL.KyoRes.90"
FontMap[3] = "RESDLL.KyoRes.86"
FontMap[4] = "RESDLL.KyoRes.91"
FontMap[5] = "RESDLL.KyoRes.87"
FontMap[6] = "RESDLL.KyoRes.88"
FontMap[7] = "RESDLL.KyoRes.85"
FontMap[8] = "RESDLL.KyoRes.89"
FontMap[9] = "RESDLL.KyoRes.96"
FontMap[10] = "RESDLL.KyoRes.94"
FontMap[11] = "RESDLL.KyoRes.93"
FontMap[12] = "RESDLL.KyoRes.95"
FontMap[13] = "RESDLL.KyoRes.102"
FontMap[14] = "RESDLL.KyoRes.107"
FontMap[15] = "RESDLL.KyoRes.108"
FontMap[16] = "RESDLL.KyoRes.109"
FontMap[17] = "RESDLL.KyoRes.110"
FontMap[18] = "RESDLL.KyoRes.111"
FontMap[19] = "RESDLL.KyoRes.112"
FontMap[20] = "RESDLL.KyoRes.113"
FontMap[21] = "RESDLL.KyoRes.118"
FontMap[22] = "RESDLL.KyoRes.119"
FontMap[23] = "RESDLL.KyoRes.120"
FontMap[24] = "RESDLL.KyoRes.121"
FontMap[25] = "RESDLL.KyoRes.122"
FontMap[26] = "RESDLL.KyoRes.123"
FontMap[27] = "RESDLL.KyoRes.124"
FontMap[28] = "RESDLL.KyoRes.127"
FontMap[29] = "RESDLL.KyoRes.129"
FontMap[30] = "RESDLL.KyoRes.130"
FontMap[31] = "RESDLL.KyoRes.131"
FontMap[32] = "RESDLL.KyoRes.132"
FontMap[33] = "RESDLL.KyoRes.133"
FontMap[34] = "RESDLL.KyoRes.134"
FontMap[35] = "RESDLL.KyoRes.135"
FontMap[36] = "RESDLL.KyoRes.136"
FontMap[37] = "RESDLL.KyoRes.137"
FontMap[38] = "RESDLL.KyoRes.138"
FontMap[39] = "RESDLL.KyoRes.139"
FontMap[40] = "RESDLL.KyoRes.140"
FontMap[41] = "RESDLL.KyoRes.141"
FontMap[42] = "RESDLL.KyoRes.142"
FontMap[43] = "1" # SWISSR
FontMap[44] = "2" # SWISSI
FontMap[45] = "3" # SWISSB
FontMap[46] = "4" # SWISSJ
FontMap[47] = "RESDLL.KyoRes.143"
FontMap[48] = "RESDLL.KyoRes.144"
FontMap[49] = "RESDLL.KyoRes.145"
FontMap[50] = "RESDLL.KyoRes.146"
FontMap[51] = "RESDLL.KyoRes.147"
FontMap[52] = "RESDLL.KyoRes.126"
FontMap[53] = "5" # SYMSET
FontMap[54] = "RESDLL.KyoRes.114"
FontMap[55] = "RESDLL.KyoRes.115"
FontMap[56] = "RESDLL.KyoRes.116"
FontMap[57] = "RESDLL.KyoRes.117"
FontMap[58] = "RESDLL.KyoRes.103"
FontMap[59] = "RESDLL.KyoRes.104"
FontMap[60] = "RESDLL.KyoRes.105"
FontMap[61] = "RESDLL.KyoRes.106"
FontMap[62] = "RESDLL.KyoRes.125"
FontMap[63] = "RESDLL.KyoRes.47"
FontMap[64] = "RESDLL.KyoRes.48"
FontMap[65] = "RESDLL.KyoRes.49"
FontMap[66] = "RESDLL.KyoRes.50"
FontMap[67] = "RESDLL.KyoRes.55"
FontMap[68] = "RESDLL.KyoRes.56"
FontMap[69] = "RESDLL.KyoRes.57"
FontMap[70] = "RESDLL.KyoRes.58"
FontMap[71] = "RESDLL.KyoRes.64"
FontMap[72] = "RESDLL.KyoRes.65"
FontMap[73] = "RESDLL.KyoRes.66"
FontMap[74] = "RESDLL.KyoRes.67"
FontMap[75] = "RESDLL.KyoRes.1"
FontMap[76] = "RESDLL.KyoRes.2"
FontMap[77] = "RESDLL.KyoRes.3"
FontMap[78] = "RESDLL.KyoRes.4"
FontMap[79] = "RESDLL.KyoRes.5"
FontMap[80] = "RESDLL.KyoRes.6"
FontMap[81] = "RESDLL.KyoRes.7"
FontMap[82] = "RESDLL.KyoRes.8"
FontMap[83] = "RESDLL.KyoRes.9"
FontMap[84] = "RESDLL.KyoRes.10"
FontMap[85] = "RESDLL.KyoRes.11"
FontMap[86] = "RESDLL.KyoRes.12"
FontMap[87] = "RESDLL.KyoRes.13"
FontMap[88] = "RESDLL.KyoRes.14"
FontMap[89] = "RESDLL.KyoRes.15"
FontMap[90] = "RESDLL.KyoRes.16"
FontMap[91] = "RESDLL.KyoRes.17"
FontMap[92] = "RESDLL.KyoRes.18"
FontMap[93] = "RESDLL.KyoRes.19"
FontMap[94] = "RESDLL.KyoRes.20"
FontMap[95] = "RESDLL.KyoRes.21"
FontMap[96] = "RESDLL.KyoRes.22"
FontMap[97] = "RESDLL.KyoRes.23"
FontMap[98] = "RESDLL.KyoRes.24"
FontMap[99] = "RESDLL.KyoRes.25"
FontMap[100] = "RESDLL.KyoRes.26"
FontMap[101] = "RESDLL.KyoRes.27"
FontMap[102] = "RESDLL.KyoRes.28"
FontMap[103] = "RESDLL.KyoRes.29"
FontMap[104] = "RESDLL.KyoRes.30"
FontMap[105] = "RESDLL.KyoRes.31"
FontMap[106] = "RESDLL.KyoRes.32"
FontMap[107] = "RESDLL.KyoRes.33"
FontMap[108] = "RESDLL.KyoRes.34"
FontMap[109] = "RESDLL.KyoRes.35"
FontMap[110] = "RESDLL.KyoRes.36"
FontMap[111] = "RESDLL.KyoRes.37"
FontMap[112] = "RESDLL.KyoRes.38"
FontMap[113] = "RESDLL.KyoRes.39"
FontMap[114] = "RESDLL.KyoRes.40"
FontMap[115] = "RESDLL.KyoRes.41"
FontMap[116] = "RESDLL.KyoRes.42"
FontMap[117] = "RESDLL.KyoRes.43"
FontMap[118] = "RESDLL.KyoRes.44"
FontMap[119] = "RESDLL.KyoRes.45"
FontMap[120] = "RESDLL.KyoRes.46"
FontMap[121] = "21" # DFMINCH
FontMap[122] = "22" # DFMINCHB
FontMap[123] = "23" # DFMINCHI
FontMap[124] = "24" # DFMINCHZ
FontMap[125] = "25" # DFMINCV
FontMap[126] = "26" # DFMINCVB
FontMap[127] = "27" # DFMINCVI
FontMap[128] = "28" # DFMINCVZ
FontMap[129] = "29" # DFGOTH
FontMap[130] = "30" # DFGOTHB
FontMap[131] = "31" # DFGOTHI
FontMap[132] = "32" # DFGOTHZ
FontMap[133] = "33" # DFGOTV
FontMap[134] = "34" # DFGOTVB
FontMap[135] = "35" # DFGOTVI
FontMap[136] = "36" # DFGOTVZ
FontMap[137] = "37" # MSMINCH
FontMap[138] = "38" # MSMINCHB
FontMap[139] = "39" # MSMINCHI
FontMap[140] = "40" # MSMINCHZ
FontMap[141] = "41" # MSMINCV
FontMap[142] = "42" # MSMINCVB
FontMap[143] = "43" # MSMINCVI
FontMap[144] = "44" # MSMINCVZ
FontMap[145] = "45" # MSGOTH
FontMap[146] = "46" # MSGOTHB
FontMap[147] = "47" # MSGOTHI
FontMap[148] = "48" # MSGOTHZ
FontMap[149] = "49" # MSGOTV
FontMap[150] = "50" # MSGOTVB
FontMap[151] = "51" # MSGOTVI
FontMap[152] = "52" # MSGOTVZ
}
function InitDocOrder()
{
DocOrder["CmdStartDoc"] = 1
DocOrder["Resolution"] = 5
DocOrder["PrintQuality"] = 10
DocOrder["Orientation"] = 11
DocOrder["Duplex"] = 12
DocOrder["InputBin"] = 14
DocOrder["OutputBin"] = 15
DocOrder["PaperSize"] = 16
}