Parameters for the placemat software

Data, quotations, and other non-conversational posts containing reference materials.
User avatar
jdaw1
Cockburn 1851
Posts: 23568
Joined: 15:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Page 2
To help users of the placemat software, in this thread will be posted the used parameters of the placemat software. The intention is that placemats made by JDAW can be used as examples of how the software’s features can be invoked.

This thread is not to hold discussion of these examples, which should be in the usual thread for discussion of the placemat software. For this reason this thread will typically be locked.

These placemats were generally made with the then-current version. Later versions of the software have changed the names or usage or defaults or existence of some of the parameters. Hence readers might prefer to start reading at the end.
User avatar
jdaw1
Cockburn 1851
Posts: 23568
Joined: 15:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Wednesday 8th January 2014, Blind in The Bung Hole ∵ Ronnie Roots was visiting London (placemats, planning and arrangements).

Image Image

Code: Select all

/Circlearrays [
	[ (Ronnie) ]
	[ (Derek) ]
	[ [(W) {-0.06 Kern} (olfgang)] ]
	[ (Alex) ]
	[ (Julian) ]
	[ (*) ]
] def

/Titles [
	(RMW)
	(DRT)
	(WPS)
	(AHB)
	[(JDA) {-0.06 Kern} (W)]
	(*)
] def

/Belowtitles [ Circlearrays length {()} repeat ] def

/Names [ Titles aload pop pop () ] def

/HeadersLeft [
	0  [(The Bung Hole, Wednesday 8) {SuperscriptOn} (th) {SuperscriptOff} ( January 2014)]
] def  % /HeadersLeft
/HeadersCenter [
	0  [(Ronnie Visitis London)]
] def  % /HeadersCenter

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=7872&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2014/20140108_RMW.pdf)   (Latest version this placemat)
	(http://www.davy.co.uk/bunghole/)  (The Bung Hole)
	(http://www.streetmap.co.uk/map.srf?x=530848&y=181628&z=106&pc=WC1V+6DT)  (WC1V 6DT, streetmap.co.uk)
	(https://maps.google.co.uk/maps?z=20&t=k&layer=c&cbll=51.5182,-0.1154&cbp=11,15,,0,0)  (WC1V 6DT, maps.google.co.uk)
	(http://www.bing.com/maps/default.aspx?where1=WC1V+6DT&cp=51.5182~-0.1154)  (WC1V 6DT, bing.com)
] def

/PlaceNames false def

/VoteRecorderTopTexts [  % Must be same length as GlassesClusteredOnVoteRecorders, each sub-array containing some number of TopTexts
	[ (What is it?) ]
	[ (Wine Of The Night)  (Q:) ]
] def  % Must be same length as GlassesClusteredOnVoteRecorders
/VoteRecorderShowTotalRow [ true false ] def  % Must be same length as GlassesClusteredOnVoteRecorders

/TitleMaxHeightProportionInnerRadius 1 def
Software version: 00:30 Sunday 29th December 2013.

Other than /TitleMaxHeightProportionInnerRadius 1 def, all vanilla.
User avatar
jdaw1
Cockburn 1851
Posts: 23568
Joined: 15:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Monday 27th January 2014, Taylor 1985, at The Bung Hole (Placemats, Planning and arrangements, Review).

Image Image

A detail:
Image

Code: Select all

/Taylor [(T) {-0.06 Kern} (aylor)] def
/Vintage (1985) def

/Greeks [
	/alpha /beta /gamma /delta /epsilon /zeta
] def

/Circlearrays [ Greeks {
	[ exch 7 string cvs  [Taylor ( ) Vintage] ]
} forall ] def
/Titles Greeks def
/Belowtitles [ Titles length {()} repeat ] def

/Names [
	(WPS)
	[(JDA) {-0.06 Kern} (W)]
	(AHB)
	[(RA) {-0.06 Kern} (YC)]
	(PW)
	()
] def

/HeadersLeft [
	0  [(The Bung Hole, Monday 27) {SuperscriptOn} (th) {SuperscriptOff} ( January 2014)]
] def  % /HeadersLeft
/HeadersCenter [
	0  [ Taylor ( ) Vintage (: a trial)]
] def  % /HeadersCenter

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=7928&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2014/20140127_Taylor1985.pdf)   (Latest version this placemat)
	(http://www.davy.co.uk/bunghole/)  (The Bung Hole)
	(http://www.streetmap.co.uk/map.srf?x=530848&y=181628&z=106&pc=WC1V+6DT)  (WC1V 6DT, streetmap.co.uk)
	(https://maps.google.co.uk/maps?z=20&t=k&layer=c&cbll=51.5182,-0.1154&cbp=11,15,,0,0)  (WC1V 6DT, maps.google.co.uk)
	(http://www.bing.com/maps/default.aspx?where1=WC1V+6DT&cp=51.5182~-0.1154)  (WC1V 6DT, bing.com)
] def

/DecanterLabelsNumCopies 1 def
/PlaceNames false def

/ShapesInTitles false def
/ShapesInAbovetitles false def

/FillTitles true def
/FillTexts [ Titles length {(T85)} repeat ] def  % ignored if no filling. If used typically set to a custom array (of same length as Titles).
/FillTextPrintQuickerDistillSlower true def

/SubtitlesTastingNotes FillTexts def

/TitleMaxHeightProportionInnerRadius 9999 def

/VerticalMiddlingTitles /MatchNone def % /MatchNone /MatchRow /MatchPage /MatchAll /MatchString
Code version: 11:00 Wednesday 15th January 2014.

The aesthetics were slightly improved by /VerticalMiddlingTitles /MatchNone def.
User avatar
jdaw1
Cockburn 1851
Posts: 23568
Joined: 15:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Saturday 1st February 2014, the 59th Annual Dinner of the Cambridge University Tiddlywinks Club, decanter labels only (those decanter labels).

Code: Select all

/Circlearrays [
	[ (SV97) ] dup dup dup
	[ (SV99) ] dup dup dup
	[ (SV00) ] dup dup dup
	[ (Cr55) ]
] def

/Titles [ Circlearrays {0 get} forall ] def

/Belowtitles [ Circlearrays length {()} repeat ] def

/Names [] def

/HeadersLeft [
	0  [(Saturday 1) {SuperscriptOn} (st) {SuperscriptOff} ( February 2014)]
] def  % /HeadersLeft
/HeadersCenter [
	0  [(The CUTwC Annual Dinner)]
] def  % /HeadersCenter
/HeadersRight [
	0
	[
		(www) {-0.092 Kern} (.jdawiseman.com)
	]
] def  % /HeadersRight

/ExternalLinks [
	(http://www.jdawiseman.com/2014/20140201_cutwc_decanter_labels.pdf)   (Latest version this placemat)
	(http://www.cutwc.org/)  (CUTwC)
	(http://www.sel.cam.ac.uk/)  (Selwyn College)
] def

/DecanterLabelsNumCopies 1 def
/PlaceNames false def
/CorkDisplay false def
/VoteRecorders false def
/TastingNotePagesNumCopies 0 def

/FillTitles true def
/FillTexts [ Titles length {(CUTwC)} repeat ] def
/FillTextAngle /LowerRight def
User avatar
jdaw1
Cockburn 1851
Posts: 23568
Joined: 15:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Tuesday 18th February 2014, in The Bung Hole, Thirsty at Half term (placemats, planning and arrangements, review of the evening as a whole).

Image Image

Code: Select all

/Names [
	(DRT)
	[(JDAW)]
	(MPM)  % flash_uk = Mike Patrick Meehan
	(RAYC)
	()
	()
] def

/Circlearrays [
%	[ (Crossed Swords)      [{TitlesFont CurrentFontSize selectfont} /uni2694 {CircletextFont CurrentFontSize selectfont}]  ]
	[ (Maltese cross)       [{TitlesFont CurrentFontSize selectfont} /uni2720 {CircletextFont CurrentFontSize selectfont}]  ]
	[ (Cross of Jerusalem)  [{TitlesFont CurrentFontSize selectfont} /uni2629 {CircletextFont CurrentFontSize selectfont}]  Names 3 get  1 index ]
	[ (West Syriac cross)   [{TitlesFont CurrentFontSize selectfont} /uni2670 {CircletextFont CurrentFontSize selectfont}]  Names 2 get  1 index ]
	[ (East Syriac cross)   [{TitlesFont CurrentFontSize selectfont} /uni2671 {CircletextFont CurrentFontSize selectfont}]  Names 2 get  1 index ]
%	[ (Skull & Crossbones)  [{TitlesFont CurrentFontSize selectfont} /uni2620 {CircletextFont CurrentFontSize selectfont}]  ]
%	[ (Latin cross)         [{TitlesFont CurrentFontSize selectfont} /uni271D {CircletextFont CurrentFontSize selectfont}]  ]
%	[ (Greek cross)         [{TitlesFont CurrentFontSize selectfont} /uni271A {CircletextFont CurrentFontSize selectfont}]  ]
	[ (Cross of Lorraine)   [{TitlesFont CurrentFontSize selectfont} /uni2628 {CircletextFont CurrentFontSize selectfont}]  Names 1 get  1 index ]
	[ (Russian cross)       [{TitlesFont CurrentFontSize selectfont} /uni2626 {CircletextFont CurrentFontSize selectfont}]  Names 0 get  1 index ]
] def
/Titles [ Circlearrays {1 get 1 get} forall ] def
/Belowtitles [ Circlearrays length {()} repeat ] def

/HeadersLeft [
	0  [(The Bung Hole, Tuesday 28) {SuperscriptOn} (th) {SuperscriptOff} ( February 2014)]
] def  % /HeadersLeft
/HeadersCenter [
	0  (Thirsty at Half Term)
] def  % /HeadersCenter
/HeadersRight [
	0  [(www.) {-0.36 Kern} (ThePortForum.com, www.jdawiseman.com)]
] def  % /HeadersRight

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=8008&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2014/20140218_half_term.pdf)   (Latest version this placemat)
	(http://www.davy.co.uk/bunghole/)  (The Bung Hole)
	(http://www.streetmap.co.uk/map.srf?x=530848&y=181628&z=106&pc=WC1V+6DT)  (WC1V 6DT, streetmap.co.uk)
	(https://maps.google.co.uk/maps?z=20&t=k&layer=c&cbll=51.5182,-0.1154&cbp=11,15,,0,0)  (WC1V 6DT, maps.google.co.uk)
	(http://www.bing.com/maps/default.aspx?where1=WC1V+6DT&cp=51.5182~-0.1154)  (WC1V 6DT, bing.com)
] def

/DecanterLabelsNumCopies 1 def
/PlaceNames false def

/TitlesFont     /Menlo-Regular def  % /Menlo-Regular /AppleSymbols
/CircletextFont /AmazeNormal def
/NamesFont      /AmazeBold def

/TitleMaxHeightProportionInnerRadius 999 def

/VoteRecorderTopTexts [  % Must be same length as GlassesClusteredOnVoteRecorders, each sub-array containing some number of TopTexts
	[ (What is it?) ]
	[ (Wine Of The Night)  (Q:) ]
] def  % Must be same length as GlassesClusteredOnVoteRecorders
/VoteRecorderShowTotalRow [ true false ] def  % Must be same length as GlassesClusteredOnVoteRecorders
/VoteRecorderTotalRowTitle [ {CircletextFont CurrentFontSize selectfont} {VoteRecorderTotalColTitle} ] def

/VerticalMiddlingTitles /MatchNone def % /MatchNone /MatchRow /MatchPage /MatchAll /MatchString
Software version: 15:30 Friday 14th February 2014.

• Note that some inner items of the Circlearrays change the font, of course then changing it back.

• Some items of Circlearrays are commented out. If de-commented, there would be ten circles, with Titles ⚔ ✠  ☩ ♰ ♱ ☠ ✝ ✚ ☨ ☦. But four are commented, leaving just ✠  ☩ ♰ ♱ ☨ ☦.
User avatar
jdaw1
Cockburn 1851
Posts: 23568
Joined: 15:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Friday 21st March 2014, in The Square, The Doty Cup (placemats, review of the evening, and planning and arrangements).

Image Image Image

Code: Select all

/Circlearrays [
	[ [ (If)  [( Man) /quoteright (s ) /fi (rst disobedience, and the fruit)] ] ]
	[ [ (High)  ( on a throne of royal state, which far) ] ]
	[ [ (Hail)  [(, holy Light, offspring of Heaven ) /fi (rstborn,)] ] ]
	[ [ (O)  (, for that warning voice, which he, who saw) ] ]
	[ [ (Now)  ( Morn, her rosy steps in the eastern clime) ] ]
	[ [ (All)  ( night the dreadless Angel, unpursued,) ] ]
	[ [ (Descend)  ( from Heaven, Urania, by that name) ] ]
	[ [ (The)  [( Angel ended, and in Adam) /quoteright (s ear)] ] ]
	[ [ (No)  ( more of talk where God or Angel guest) ] ]
	[ [ (Mean)  ( while the heinous and despiteful act) ] ]
	[ [ (Thus)  ( they, in lowliest plight, repentant stood) ] ]
	[ [ (As)  ( one who in his journey bates at noon,) ] ]
] def

/Titles [ Circlearrays {0 get 0 get} forall ] def

/Belowtitles [ Circlearrays length {()} repeat ] def

/Names [
	(Chris)
	[(RA) {-0.04 Kern} (YC)]
	(Liz)
	(Laurie)
	(Richard Z)
	[(T) {-0.08 Kern} (okyo Tim)]
	(Jerome F)
	[{/LucidaSansUnicode CurrentFontSize selectfont} /arrowdown {NamesFont CurrentFontSize selectfont -0.08 Kern} (Jajow)]
	(Reed)
	(Musta)
	(Muggins)
	()
] def
/LeftHanders [ Names 0 get ] def

/TastingNotesCirclesBehind true def

/HeadersLeft [
	0  [(The Square, Friday 21) {SuperscriptOn} (st) {SuperscriptOff} ( March 2014)]
] def  % /HeadersLeft
/HeadersCenter [
	0  [(The Doty Cup, after Milton) /quoteright (s Paradise Lost)]
] def  % /HeadersCenter

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=7939&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2014/20140321_doty_cup.pdf)   (Latest version this placemat)
	(http://www.squarerestaurant.com/)  (The Square)
	(http://www.streetmap.co.uk/map.srf?x=528893&y=180709&sv=W1J+6PU)  (W1J 6PU, streetmap.co.uk)
	(https://maps.google.co.uk/maps?z=20&t=k&layer=c&cbll=51.5108,-0.144&cbp=11,180,,0,0)  (W1J 6PU, maps.google.co.uk)
	(http://www.bing.com/maps/default.aspx?where1=W1J+6PU&cp=51.5108~-0.144)  (W1J 6PU, bing.com)
] def

/PlaceNames false def
/DecanterLabelsNumCopies 1 def
/StickyLabelsNumCopies 1 def
/StickyLabelsTypes [0] def

/VoteRecorderTopTexts [  % Must be same length as GlassesClusteredOnVoteRecorders, each sub-array containing some number of TopTexts
	[ (What is it?) ]
	[ (Wine Of The Night)  (Q:) ]
] def  % Must be same length as GlassesClusteredOnVoteRecorders
/VoteRecorderShowTotalRow [ true false ] def  % Must be same length as GlassesClusteredOnVoteRecorders

/TitlesFont     /GillSansMT-Condensed def % /GilliusADFNo2-BoldCond
/CircletextFont /Garamond-Bold def

/FontSizesRatioTitlesMin 1 def
/FontSizesTitlesEquivalences [
	0 0 0 0 0 0
	1 0 0 0 0 0
] def  % /FontSizesTitlesEquivalences

/CircletextsMinCopies {WithinTitles 3 eq {5} {1} ifelse} def

/PrePourReverseOrder false def
Software version: 22:30 Wednesday 12th March 2014.

• Unusual construction of Circlearrays, to simplify creation of Titles.

• The first use of FontSizesTitlesEquivalences, a parameter added for this purpose. Titles with equal elements of FontSizesTitlesEquivalences are forced to the same size. (However, in other circumstances this can interact with FontSizesTitlesNotSmallerIfTitlesNotLonger to force most or all to the same size: be careful.)
User avatar
jdaw1
Cockburn 1851
Posts: 23568
Joined: 15:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Wednesday 2nd April 2014, a trial of Graham 1980 in The Bunghole (placemats, planning and arrangements, review).

Image Image Image Image

Code: Select all

/Shipper (Graham) def
/Vintage (1980) def
/ShipperVintage [Shipper ( ) Vintage] def

/Greeks [
	/alpha /beta /gamma /delta /epsilon /zeta /eta /theta
] def

/NumTrialBottles 6 def

/Circlearrays [
	0 1 Greeks length 1 sub
	{
		dup NumTrialBottles lt
			{[ exch Greeks exch get dup dup 7 string cvs exch  [Shipper ( ) Vintage]  4 -1 roll ]}
			{[ exch Greeks exch get dup 7 string cvs exch]}
		ifelse
	} for
	[ (AHB) ]
	[ (CPR) ]
	[ (DRT) ]
	[ (MPM) ]
] def
/Titles [
	Greeks aload pop
	Circlearrays Greeks length 2 copy exch length exch sub getinterval {0 get} forall
] def

/Belowtitles [ Circlearrays length {()} repeat ] def
/SubtitlesTastingNotes [ 0 1 Greeks length 1 sub {Circlearrays exch get 0 get} for   Circlearrays length Greeks length sub {()} repeat ] def

/Names [
	(MW)  [(JDA) {-0.08 Kern} (W)]  (AHB)  (CPR)  (DRT)  (MPM)  ()
] def

/TastingNotesCirclesBehind true def
/TastingNotesCirclesBehindFitAndCentreInRow false def

/HeadersLeft [
	0  [(The Bung Hole, Wednesday 2) {SuperscriptOn} (nd) {SuperscriptOff} ( April 2014)]
] def  % /HeadersLeft
/HeadersCenter [
	0  [ShipperVintage (: a trial)]
] def  % /HeadersCenter
/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=7962&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2014/20140402_g80.pdf)   (Latest version this placemat)
	(http://www.davy.co.uk/bunghole/)  (The Bung Hole)
	(http://www.streetmap.co.uk/map.srf?x=530848&y=181628&z=106&pc=WC1V+6DT)  (WC1V 6DT, streetmap.co.uk)
	(https://maps.google.co.uk/maps?z=20&t=k&layer=c&cbll=51.5182,-0.1154&cbp=11,15,,0,0)  (WC1V 6DT, maps.google.co.uk)
	(http://www.bing.com/maps/default.aspx?where1=WC1V+6DT&cp=51.5182~-0.1154)  (WC1V 6DT, bing.com)
] def

/DecanterLabelsNumCopies 1 def
/PlaceNames false def

/GlassesOnSheets [
	[ 0 1 NumTrialBottles 1 sub {} for ]
	[ NumTrialBottles 1 Titles length 1 sub {} for ]
] def  % /GlassesOnSheets
/GlassesOnTastingNotePages GlassesOnSheets def


/VoteRecorderTopTexts [  % Must be same length as GlassesClusteredOnVoteRecorders, each sub-array containing some number of TopTexts
	[ (What is it?) ]
	[ (Wine Of The Night)  (Q:) ]
] def  % Must be same length as GlassesClusteredOnVoteRecorders
/VoteRecorderShowTotalRow [ true false ] def  % Must be same length as GlassesClusteredOnVoteRecorders
/GlassesClusteredOnVoteRecorders [
	[ [ NumTrialBottles 1 Circlearrays length 1 sub {} for ] ]
	{GlassesOnTastingNotePages}
] def  % triple-depth array, same length as VoteRecorderTopTexts and VoteRecorderShowTotalRow

/TitleMaxHeightProportionInnerRadius 1.5 def
/FontSizesRatioTitlesMin 1 def

/CircletextsMinNumSpacesBetween 2 def

/InlineTitles true def
/InlineTitlesMaxNumberContours 7 def

/VerticalMiddlingTitles /MatchNone def % /MatchNone /MatchRow /MatchPage /MatchAll /MatchString
Software version: 22:00 Friday 28th March 2014

• Lots of fiddly details in the Circlearrays etc, as the number of G80s was fixed at six, but the number of other bottles was more variable. This could have been less automatically. Likewise GlassesOnSheets.

• A rare change of GlassesClusteredOnVoteRecorders from the default, as we all knew what the G80s were (G80!), but didn’t know the others.

• Research is ongoing about whether InlineTitlesMaxNumberContours can be set automatically. Some printers handle this slowly, so having this at the minimum would be of use. Can the minimum be computed automagically? That question has been asked on comp.lang.postscript.
User avatar
jdaw1
Cockburn 1851
Posts: 23568
Joined: 15:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Saturday 5th April 2014, in Lucksall Caravan and Camping Park, SGL9 Star Party Tasting (placemats, planning and arrangements).

Image

Code: Select all

/Circlearrays [
	[ (Mars)      [{TitlesFont CurrentFontSize selectfont} /uni2642 {CircletextFont CurrentFontSize selectfont}]  ]
	[ (Jupiter)   [{TitlesFont CurrentFontSize selectfont} /uni2643 {CircletextFont CurrentFontSize selectfont}]  ]
	[ (Saturn)    [{TitlesFont CurrentFontSize selectfont} /uni2644 {CircletextFont CurrentFontSize selectfont}]  ]
	[ (Uranus)    [{TitlesFont CurrentFontSize selectfont} /uni2645 {CircletextFont CurrentFontSize selectfont}]  ]
	[ (Neptune)   [{TitlesFont CurrentFontSize selectfont} /uni2646 {CircletextFont CurrentFontSize selectfont}]  ]
	[ (Pluto)     [{TitlesFont CurrentFontSize selectfont} /uni2647 {CircletextFont CurrentFontSize selectfont}]  ]
] def

/Titles [ Circlearrays {1 get 1 get} forall ] def
/Belowtitles [ Circlearrays length {()} repeat ] def
/SubtitlesTastingNotes [ Circlearrays {0 get} forall ] def

/Names [
	(Derek)
	(Grant)
	(Ian)  % Astromonkey
	(Rowan)
	(Mike)
	(Shane)  % Moonshane
	(Eddie)
	() dup
] def

/ThePortForumIconPlacement /None def  % /None
/ThePortForumIconTastingNotePlacement /None def  % /None

/HeadersLeft [
	0  [(Lucksall Caravan and Camping Park, Saturday 5) {SuperscriptOn} (th) {SuperscriptOff} ( April 2014)]  % Hereford
] def  % /HeadersLeft
/HeadersCenter [
	0  [(SGL9 Star Party T) {-0.092 Kern} (asting)]
] def  % /HeadersCenter
/HeadersRight [
	0
	[
		(www) {-0.092 Kern} (.StarGazersLounge.com, )
		(www) {-0.092 Kern} (.jdawiseman.com)
	]
] def  % /HeadersRight
/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://stargazerslounge.com/topic/212813-a-long-shot-any-port-at-a-star-party/)   (Organisation thread)
	(http://www.lucksallpark.co.uk/)   (Lucksall Caravan and Camping Park)
	(http://www.jdawiseman.com/2014/20140405_star_party.pdf)   (Latest version this placemat)
] def

/PlaceNames false def
/CorkDisplay false def

/TitlesFont     /AppleSymbols def
/CircletextFont /Optima-Regular def
/NamesFont      /Optima-Bold def

/TitleMaxHeightProportionInnerRadius 9999 def

/InlineTitles true def
/InlineTitlesMaxNumberContours 5 def

/VerticalMiddlingTitles /MatchNone def
Code version: 22:00 Friday 28th March 2014.

• Other than the font changing in Circlearrays, all fairly vanilla.
User avatar
jdaw1
Cockburn 1851
Posts: 23568
Joined: 15:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Tuesday 22nd April 2014, at The Bung Hole, A Flight of 1966 (planning and arrangements, placemats, review).

Image Image Image Image

Code: Select all

/Vintage (1966) def
/JDAW [(JDA) {-0.05 Kern} (W)] def
/RAYC [(RA) {-0.06 Kern} (YC)] def

/Circlearrays [
	[ (Souza)         (Colheita 1966 bottled 1992)  (IDJ)  1 index ]
	[ (Croft)                              Vintage  (WPS)  Vintage ]
	[ (Dow)                                Vintage  (AP)   Vintage ]
	[ (Fonseca)                            Vintage  (IDJ)  Vintage ]
	[ (Graham)                             Vintage  (MPM)  Vintage ]
	[ (Sandeman)                           Vintage  (DRT)  Vintage ]
	[ [(T) {-0.08 Kern} (aylor)]           Vintage  (AHB)  Vintage ]
	[ [(W) {-0.05 Kern} (arre)]            Vintage  JDAW   Vintage ]
	[ /dagger ]

	[ (Constantino)                        Vintage  (DN)   Vintage ]  % Daniel Niepoort
	[ (Delaforce)                          Vintage  (PC)   Vintage ]
	[ (Gould Campbell)                     Vintage  (DJ)   Vintage ]
	[ (Niepoort)                           Vintage  (EDN)  Vintage ]  % Dirk Niepoort
	[ (Quinta do Noval)                    Vintage  (THRA) Vintage ]
	[ [(Of) /fl (ey)]                      Vintage  (CMAG) Vintage ]
	[ (Quarles Harris)                     Vintage  RAYC   Vintage ]
	[ [(Rebello V) {-0.08 Kern} (alente)]  Vintage  (JES)  Vintage ]
	[ (Niepoort)            (Crusted bottled 2011)  (CMAG) 1 index ]
] def

/Titles [
	(Sz)
	(Cr)
	(D)
	(F)
	(G)
	(S)
	(T)
	(W)
	/dagger

	(Cn)
	(Df)
	(GC)
	(Ni)
	(N)
	(O)
	(QH)
	(RV)
	(Ni)
] def

/Belowtitles [ Circlearrays {dup length 2 ge {1 get dup Vintage eq {pop [(Vintage ) Vintage]} if} {pop ()} ifelse} forall ] def
/SubtitlesTastingNotes Belowtitles def
/SubtitlesVoteRecorder [ Circlearrays {dup length 4 eq {dup 0 get (Souza) eq {pop (Colheita)} {1 get Vintage eq {Vintage} {(Crusted)} ifelse} ifelse} {pop ()} ifelse} forall ] def
/TitlesTastingNotes [ Circlearrays {0 get} forall ] def
/TitlesCorkDisplay TitlesTastingNotes def
/SubtitlesCorkDisplay SubtitlesTastingNotes def

/Names [
	Circlearrays {dup length 2 ge {2 get dup (DRT) eq {pop} if} {pop} ifelse} forall
	counttomark -1 roll pop  % Removes IDJ duplicate
	pop  % Outer pop removes CMAG duplicate
	()
] def

/TastingNotesCirclesBehind true def
/TastingNotesCirclesBehindFitAndCentreInRow false def

/HeadersLeft [
	0  [(The Bung Hole, Tuesday 22) {SuperscriptOn} (nd) {SuperscriptOff} ( April 2014)]
] def  % /HeadersLeft
/HeadersCenter [
	0  [(A Flight of 1966 Vintage Port)]
] def  % /HeadersCenter

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=8130&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2014/20140422_1966.pdf)   (Latest version this placemat)
	(http://www.davy.co.uk/bunghole/)  (The Bung Hole)
	(http://www.streetmap.co.uk/map.srf?x=530848&y=181628&z=106&pc=WC1V+6DT)  (WC1V 6DT, streetmap.co.uk)
	(https://maps.google.co.uk/maps?z=20&t=k&layer=c&cbll=51.5182,-0.1154&cbp=11,15,,0,0)  (WC1V 6DT, maps.google.co.uk)
	(http://www.bing.com/maps/default.aspx?where1=WC1V+6DT&cp=51.5182~-0.1154)  (WC1V 6DT, bing.com)
] def

/PlaceNames false def
/PrePourReverseOrder false def

/TitlesFont     /Optima-Bold def
/CircletextFont /Optima-Bold def
/BelowtitleMaxFontSizeProportionTitles {CirclearraysFontSizes SheetNum get WithinPage get TitleFontSizes SheetNum get WithinPage get div} def

/FontSizesRatioTitlesMin 999 def
/TitleMaxHeightProportionInnerRadius 999 def
/FontSizesTitlesEquivalences [ Circlearrays {length 2 ge {0} {1} ifelse} forall ] def
/TitleMinHeightForBelowtitleProportionInnerRadius 0.2 def

/TastingNotesTitlesFontSizeMax 16 def

/InlineTitles true def
/InlineTitlesMaxNumberContours {Circlearrays WithinTitles get dup length 2 ge {1 get Vintage eq} {pop false} ifelse {99} {1} ifelse} def

/VoteRecorderTotalColTitle [(T) {-0.08 Kern} (otal)] def
Software version: 10:00 Easter Monday, 21st April 2014

BelowtitleMaxFontSizeProportionTitles was used to force the Belowtitles to be the same size as the Circlearrays.

• The construction of Names was rather ugly.

• Lots of faffing with SubtitlesTastingNotes, SubtitlesVoteRecorder, TitlesTastingNotes, TitlesCorkDisplay, SubtitlesCorkDisplay.

• Code in InlineTitlesMaxNumberContours.
User avatar
jdaw1
Cockburn 1851
Posts: 23568
Joined: 15:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Wednesday 23rd April 2014, at The Bung Hole, 1960 versus 1963 (planning and arrangements, placemats).

Blinding plan. The team decants into properly labelled decanters (labels: “D60”, “D63”, …). Then one person over-staples with pairs of identical cards, other people not seeing (labels: “0”, “0”, “1”, …). Finally a different person over-staples with pairs of Roman/Italic cards, other people not seeing (labels: “a”, “a”, “b”, …).

Image Image Image Image Image Image Image Image

Code: Select all

/Shippers
[
	[ (D)  (Dow) ]
	[ (F)  (Fonseca) ]
	[ (G)  (Graham) ]
	[ [(N) {-0.04 Kern} (i) {-0.02 Kern}] (Niepoort) ]
	[ (N)  (Quinta do Noval) ]
	[ (S)  (Sandeman) ]
	[ [(T) {-0.04 Kern}]  [(T) {-0.03 Kern} (aylor)] ]
	[ [(W) {-0.04 Kern}]  [(W) {-0.08 Kern} (arre)] ]
] def

/ExtraCircles [
	[ /dagger ]
	[ /daggerdbl ]
] def

/TitlesRomanFont /AvenirNextCondensed-DemiBold def
/TitlesItalicFont /AvenirNextCondensed-DemiBoldItalic def
/CircletextRomanFont /NewBostonCondensedNormal def
/CircletextItalicFont /NewBostonCondensedItalic def

/GlassOfItalicType {/WithinTitles where {pop WithinTitles IsNumber} {false} ifelse {WithinTitles 2 mod 1 eq   WithinTitles Shippers length 4 mul ExtraCircles length 2 mul add ge   WithinTitles Shippers length 6 mul ExtraCircles length 2 mul add lt  and and} {false} ifelse} def  % returns boolean

/TitlesFont     {GlassOfItalicType {TitlesItalicFont} {TitlesRomanFont} ifelse} def
/CircletextFont {GlassOfItalicType {CircletextItalicFont} {CircletextRomanFont} ifelse} def

/NamesFont  TitlesRomanFont def
/HeaderFont TitlesRomanFont def

/Circlearrays [
	Shippers {1 get dup [ exch (1960) ] exch [ exch (1963) ]} forall
	ExtraCircles aload pop
	0 1 Shippers length 1 sub {2 string cvs [ exch ] dup} for
	ExtraCircles aload pop
	0 1 Shippers length 1 sub {(a) 0 get add 1 string dup 3 -1 roll 0 exch put dup [exch (Roman)] exch [exch (Italic)] } for
	ExtraCircles aload pop
] def

/Titles [
	Shippers {0 get dup [ exch (60) ] exch [ exch (63) ]} forall
	ExtraCircles {0 get} forall
	0 1 Shippers length 1 sub {2 string cvs dup} for
	ExtraCircles aload pop
	Circlearrays Shippers length 2 mul dup ExtraCircles length add 2 mul exch getinterval {0 get} forall
	ExtraCircles {0 get} forall
] def

/Belowtitles [
	0 1 Circlearrays length 1 sub {dup dup Shippers length 4 mul ExtraCircles length 2 mul add ge exch Shippers length 6 mul ExtraCircles length 2 mul add lt and {2 mod 0 eq {(Roman)} {(Italic)} ifelse} {pop ()} ifelse} for
] def


/Names [
	(Dirk N.)
	(Daniel N.)  % EDN Junior
	[(T) {-0.06 Kern} (om A.)]
	[(Axel P) {-0.15 Kern} (.)]
	(Rob C.)
	(Charles R.)
	(Dave M.)  % DFM
	(Kurt M.)
	[(W) {-0.04 Kern} (olfgang G.)]  % Wolfgang Giehrl
	(Mike M.)
	(Marie)
	()
] def

/LogThisExtra (Sample bottles to be sent to Wolfgang Starz, who is unable to attend.) def

/TastingNotesCirclesBehind true def

/HeadersLeft [
	0  [(The Bung Hole, W) {-0.06 Kern} (ednesday 23) {SuperscriptOn} (rd) {SuperscriptOff} ( April 2014)]
] def  % /HeadersLeft
/HeadersCenter [
	0  [(1960 versus 1963)]
] def  % /HeadersCenter
/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=7652&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2014/20140423_1960_1963.pdf)   (Latest version this placemat)
	(http://www.davy.co.uk/bunghole/)  (The Bung Hole)
	(http://www.streetmap.co.uk/map.srf?x=530848&y=181628&z=106&pc=WC1V+6DT)  (WC1V 6DT, streetmap.co.uk)
	(https://maps.google.co.uk/maps?z=20&t=k&layer=c&cbll=51.5182,-0.1154&cbp=11,15,,0,0)  (WC1V 6DT, maps.google.co.uk)
	(http://www.bing.com/maps/default.aspx?where1=WC1V+6DT&cp=51.5182~-0.1154)  (WC1V 6DT, bing.com)
] def


/DecanterLabelsNumCopies 1 def
/PrePourNumCopies {PageOrderingNonDecanterLabelGlasses SheetNum get} def
/CorkDisplay false def
/NonDecanterLabelGlassesNumCopies {PageOrderingNonDecanterLabelGlasses SheetNum get} def

/GlassesOnTastingNotePages {GlassesOnSheets 6 3 getinterval} def  % /GlassesOnTastingNotePages

/PageOrderingNonDecanterLabelGlasses [ 0 0 0  0 0 0  1 1 1 ] def

/VoteRecorderTopTexts [  % Must be same length as GlassesClusteredOnVoteRecorders, each sub-array containing some number of TopTexts
	[ (The Romans: 1960 or 1963?) ]
	[ (Wine Of The Night)  (Q:) ]
] def  % Must be same length as GlassesClusteredOnVoteRecorders
/VoteRecorderShowTotalRow [ true false ] def  % Must be same length as GlassesClusteredOnVoteRecorders
/GlassesClusteredOnVoteRecorders [
	{[ GlassesOnTastingNotePages {[ exch {dup Belowtitles exch get (Italic) eq {pop} if} forall ]} forall ]}
	{GlassesOnTastingNotePages}
] def  % triple-depth array, same length as VoteRecorderTopTexts and VoteRecorderShowTotalRow

/ColourSchemeTitles {PageOrderingNonDecanterLabelGlasses SheetNum get 0 eq {/MidGrey} {/Black} ifelse} def  % /MidGrey /Black
/BelowtitleMaxFontSizeProportionTitles 0.25 def
/TitleMinHeightForBelowtitleProportionInnerRadius 0.2 def
/VerticalMiddlingStringTitles (ae) def  % Benchmark characters

/CrossHatchingTitles {TypeOfPagesBeingRendered /Glasses eq {PageOrderingNonDecanterLabelGlasses SheetNum get 1 eq} {//true} ifelse} def

/PrePourReverseOrder false def
Software version: 23:00 Easter Monday, 21st April 2014

• Lots going on here. Mostly what is happening is many glasses pages are created, and then now shown. The not shown pages are the decanter labels of the form “D60” and of the form “0”. So /PageOrderingNonDecanterLabelGlasses [ 0 0 0 0 0 0 1 1 1 ] def, these numbers both separating the shown pages for font-size purposes, and also being how many copies are shown: /NonDecanterLabelGlassesNumCopies {PageOrderingNonDecanterLabelGlasses SheetNum get} def.

• Also note required faffing with GlassesClusteredOnVoteRecorders.
User avatar
jdaw1
Cockburn 1851
Posts: 23568
Joined: 15:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Wednesday 30th April 2014, at The Bung Hole, ‘Crazy 8s’ (planning and arrangements, placemats, review).

Image Image

Code: Select all

/Circlearrays [
	[ (+) ]
	[ [(Fonseca Guimaraens 197) {UnderlineBegin} (8) {UnderlinePaint}]  (JES) ]
	[ [(Dow 197) {UnderlineBegin} (8) {UnderlinePaint}]  (WPS) ]
	[ [(Graham 19) {UnderlineBegin} (8) {UnderlinePaint} (0)]  (JDAW) ]
	[ [(Churchill 19) {UnderlineBegin} (8) {UnderlinePaint} (5)]  (JES) ]
] def

/Titles [
	(+)
	[(FG7) {UnderlineBegin} (8) {UnderlinePaint}]
	[(D7) {UnderlineBegin} (8) {UnderlinePaint}]
	[(G) {UnderlineBegin} (8) {UnderlinePaint} (0)]
	[(Ch) {UnderlineBegin} (8) {UnderlinePaint} (5)]
] def

/Belowtitles [ Circlearrays length {()} repeat ] def

/Names [
	(JES)  % SushiNorth
	[(JDA) {-0.08 Kern} (W)]
	(WPS)
	()
] def

/TastingNotesCirclesBehind true def

/HeadersLeft [
	0  [(The Bung Hole, W) {-0.06 Kern} (ednesday 30) {SuperscriptOn} (th) {SuperscriptOff} ( April 2014)]
] def  % /HeadersLeft
/HeadersCenter [
	0  [/quoteleft (Crazy ) {UnderlineBegin} (8) {UnderlinePaint} (s) /quoteright]
] def  % /HeadersCenter

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=8191&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2014/20140430_Crazy8s.pdf)   (Latest version this placemat)
	(http://www.davy.co.uk/bunghole/)  (The Bung Hole)
	(http://www.streetmap.co.uk/map.srf?x=530848&y=181628&z=106&pc=WC1V+6DT)  (WC1V 6DT, streetmap.co.uk)
	(https://maps.google.co.uk/maps?z=20&t=k&layer=c&cbll=51.5182,-0.1154&cbp=11,15,,0,0)  (WC1V 6DT, maps.google.co.uk)
	(http://www.bing.com/maps/default.aspx?where1=WC1V+6DT&cp=51.5182~-0.1154)  (WC1V 6DT, bing.com)
] def

/DecanterLabelsNumCopies 1 def
/PlaceNames false def
/CorkDisplay false def

/TitlesFont     /Optima-Bold def
/CircletextFont /CoffeeMilkCrazy def
/NamesFont      TitlesFont def
/HeaderFont     TitlesFont def

/TitleMaxHeightProportionInnerRadius 1 def

/ShapesInTitles true def
/ShapesToUse [/Star] def
Software version: 15:00 Tuesday 29th April 2014

• All fairly vanilla, except the underlining code around the ‘8’s.

One other thing was tested, but doesn’t appear in the final PDF. Pre-tube-strike there were more of us, and two pages of glasses. Then there were fewer, and one page. There are circumstances in which editing posts of images would be hard, but removing content from images would be easy. So, to make
Image
the parameters also said, temporarily,

Code: Select all

/EmptyGlassesPageAtStart true def
from which the .png was made, the code then reverting to

Code: Select all

/EmptyGlassesPageAtStart false def
Comment welcomed (in the thread entitled Software that makes placemats).
User avatar
jdaw1
Cockburn 1851
Posts: 23568
Joined: 15:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Wednesday 14th May 2014, requested at short notice by Oscar Quevedo (placemats).

Image Image Image Image

Code: Select all

/Circlearrays [
	[ (2013) (Colheita) ]
	[ (2012) (Colheita) ]
	[ (2010) [(L.B.) {-0.12 Kern} (V) {-0.12 Kern} (.)] ]
	[ (2007) (Colheita) ]
	[ (2003) (Colheita) ]
	[ (2000) (Colheita) ]
	[ (1996) (Colheita) ]
	[ (1992) (Colheita) ]
	[ (1970) (Red Colheita) ]
	[ (1970) (White Colheita) ]
	
	[ (2013) [(Oscar) /quoteright (s White)] ]
	[ (2012) [(Oscar) /quoteright (s Red)] ]
	[ (2011) [(Claudia) /quoteright (s Red)] ]
] def

/TitlesTastingNotes [ Circlearrays {0 get} forall ] def
/Titles [ TitlesTastingNotes {2 2 getinterval} forall ] def
/Belowtitles [ Circlearrays {1 get} forall ] def
/TitlesCorkDisplay TitlesTastingNotes def
/SubtitlesVoteRecorder [
	Belowtitles 0 8 getinterval aload pop
	(Red C.)
	(White C.)
	[(O.) {(.) stringwidth pop -2 div 0 rmoveto}  /quoteright (s W.)]
	[(O.) {(.) stringwidth pop -2 div 0 rmoveto}  /quoteright (s R.)]
	[(C.) {(.) stringwidth pop -2 div 0 rmoveto}  /quoteright (s R.)]
] def

/Names [
	(Oscar)
	(Claudia)
	[(T) {-0.08 Kern} (eresa)]
	
	[(Martina Abb) /eacute]
	(Christine Barker)
	(Bernadette Schlegel)
	[(V) {-0.08 Kern} (olker Schlegel)]
	[(Caroline V) {-0.08 Kern} (an Laere)]
	(Ulrich Duschek)
	(Angelika Langner-Stumpf)
	(Peter Stumpf)
	(Josef Hahner)
	(Petra Hahner)
	[(Elke R) /adieresis (tze)]
	[(Klaus R) /adieresis (tze)]
	[(Mirko T) {-0.08 Kern} (aufer)]
	[(Antje T) {-0.08 Kern} (aufer-Schneidewind)]
	(Reinhard Kroh)
	(Cornelia Kroh)
	(Albert Geith)
	(Rosemarie Geith)
	(Andreas Idelberger)
	(Stephan Mahlmann)
	(Kurt Fallnit)
	[(Norbert H) /odieresis (tten)]
	[(Kirsten H) /odieresis (tten)]
	(Joachim Rehorik)
	(Lars Seyfrid)
	(Dirk Lehmitz)
	(Marco Lehmitz)
	()
] def

/ThePortForumIconPlacement /None def  % /None
/ThePortForumIconTastingNotePlacement /None def  % /None

/HeadersLeft [
	0  [(Quevedo, W) {-0.08 Kern} (ednesday 14) {SuperscriptOn} (th) {SuperscriptOff} ( May 2014)]
] def  % /HeadersLeft
/HeadersCenter [
	0  [()]
] def  % /HeadersCenter
/HeadersRight [
	0
	[
		(www) {-0.092 Kern} (.QuevedoPortWine.com, )
		(www) {-0.092 Kern} (.jdawiseman.com)
	]
] def  % /HeadersRight

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.quevedoportwine.com/)   (Quevedo Port Wine)
	(http://www.jdawiseman.com/2014/20140514_quevedo.pdf)   (Latest version this placemat)
] def

/PrePourNumCopies 0 def
/VoteRecorders true def

/GlassesOnSheets [
	[ 0 1 2 3 4 ]
	[ 5 6 7 8 9 ]
	[ 10  1  Circlearrays length 1 sub {} for ]
] def
/GlassesOnTastingNotePages GlassesOnSheets def

/InlineTitles {WithinTitles 9 le} def

/ShrinkRadii [ 0 0 1 ] def  % /NotAtAll | /ToSmallest | /ToSmallestSamePageOrdering | array denoting equivalence classes
/MaxRadius 180 def  % Maximum radius of circles
Software version: 20:30 Tuesday 13th May 2014.

• Slightly fiddly construction of SubtitlesVoteRecorder.

• Unusually, GlassesOnSheets user-defined, rather than being computed from GlassesOnSheetsMaxPerSheet.

/ShrinkRadii [ 0 0 1 ] def and /MaxRadius 180 def allowed the table wines to have circles of different size than the Ports, and allowed that size to be maximal for the paper.

• And the two types also had different patterning: /InlineTitles {WithinTitles 9 le} def.

• The longest name was so long that a problem was revealed, though rather too late to be resolved here. Detail of page 97:
Image
To be fixed, at least eventually. Pro tem, use names shorter than this.

Edit: even though fixed too late for these placemats, it has been fixed (software version ≥ 22:00 Wednesday 14th May 2014): Names that would be too big are now automatically resized.
Image
User avatar
jdaw1
Cockburn 1851
Posts: 23568
Joined: 15:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Tuesday 3rd June 2014, at The Bung Hole, Blind 1958s with Oscar Quevedo (planning and arrangements, placemats, review of the evening as a whole).

Image Image Image


Blinding plan

Decanting is into decanters labelled with
Image Image

Two people then over-staple with blank cards. They leave, and two different people over-staple with decanter labels made from
Image Image

Code: Select all

/JDAW [(JDA) {-0.08 Kern} (W)] def
/Vintage (1958) def
/Greeks [
	/alpha /beta /gamma /delta /epsilon /zeta
	/eta /theta /iota /kappa /lambda /mu
	/nu /xi /omicron /pi /rho /sigma
	/tau /upsilon /phi /chi /psi /omega
] def


/Circlearrays [
	[ (Burmester)                (BMHR from THRA)    Vintage ]
	[ (Constantino)              (THRA)              Vintage ]
	[ (Delaforce)                (PW from THRA)       Vintage ]
	[ (Dow)                      (IDJ)               Vintage ]
	[ (Fonseca Guimaraens)       (OJMQ from AHB)     Vintage ]
	[ (Martinez)                 (WPS)               Vintage ]
	[ (Quinta do Noval)          [JDAW ( from IDJ)]  Vintage ]
	[ [(W) {-0.04 Kern} (arre)]  (AHB)               Vintage ]

	[ /dagger ]
	0 1 7 {[ exch Greeks exch get dup 7 string cvs exch Vintage exch 1 index ]} for
	[ /daggerdbl ]  5 1 roll
] def

/Titles [
	(B) (Cn) (Df) (D) (FG) (Mz) (N) (W)
	
	counttomark  1  Circlearrays length 1 sub {Circlearrays exch get dup length 1 eq {0} {2} ifelse get} for
] def

/Belowtitles [ Circlearrays length {()} repeat ] def

/Names [ (OJMQ) (THRA) (WPS) (IDJ) (AHB) JDAW (BMHR) (PW) () ] def

/HeadersLeft [
	0  [(The Bung Hole, Tuesday 3) {SuperscriptOn} (rd) {SuperscriptOff} ( June 2014)]
] def  % /HeadersLeft
/HeadersCenter [
	0  [(Blind 1958s for Oscar Quevedo)]
] def  % /HeadersCenter

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=8506&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2014/20140603_1958_OJMQ.pdf)   (Latest version this placemat)
	(http://www.theportforum.com/viewtopic.php?p=76433#p76433)   [(Placemat) /quoteright (s parameters)]
	(http://www.davy.co.uk/bunghole/)  (The Bung Hole)
	(http://www.streetmap.co.uk/map.srf?x=530848&y=181628&z=106&pc=WC1V+6DT)  (WC1V 6DT, streetmap.co.uk)
	(https://maps.google.co.uk/maps?z=20&t=k&layer=c&cbll=51.5182,-0.1154&cbp=11,15,,0,0)  (WC1V 6DT, maps.google.co.uk)
	(http://www.bing.com/maps/default.aspx?where1=WC1V+6DT&cp=51.5182~-0.1154)  (WC1V 6DT, bing.com)
] def

/DecanterLabelsNumCopies 1 def
/PlaceNames false def
/NonDecanterLabelGlassesNumCopies {SheetNum 2 ge {1} {0} ifelse} def

/GlassesOnSheets [
	[ 0 1 2 3 ]
	[ 4 5 6 7 ]
	[ 08 09 10 11 12 ]
	[ 13 14 15 16 17 ]
] def  % /GlassesOnSheets
/GlassesOnTastingNotePages GlassesOnSheets 2 2 getinterval def  % /GlassesOnTastingNotePages
/PageOrderingNonDecanterLabelGlasses [ 0 0 1 1 ] def
/PageOrderingDecanterLabels [ 0 dup dup dup ] def  % By default decanter-label pages appear together at the end, to facilitate advance manufacture

/GlassesClusteredOnCorkDisplay [ {GlassesOnSheets 0 2 getinterval} ] def

/VoteRecorderTopTexts [  % Must be same length as GlassesClusteredOnVoteRecorders, each sub-array containing some number of TopTexts
	[ (What is it?) ]
	[ (Wine Of The Night)  (Q:) ]
] def  % Must be same length as GlassesClusteredOnVoteRecorders
/VoteRecorderShowTotalRow [ true false ] def  % Must be same length as GlassesClusteredOnVoteRecorders

/TitlesFont     /Helvetica-Bold def
/CircletextFont /Gemerald def

/DecanterLabelAllowedOrientations /Portrait def  % /Landscape /Portrait /Either

/TitleMaxHeightProportionInnerRadius 999 def
/OvertitleMaxFontSizeProportionTitles 0.2 def

/ColourSchemeTitles /Black def  % /MidGrey /Black
/ColourSchemeOvertitles /Black def  % /MidGrey /Black

/CircletextMaxFontSizeProportionRadius 99 def
/CircletextsMinCopies 4 def

/InlineTitles true def

/VerticalMiddlingTitles /MatchNone def % /MatchNone /MatchRow /MatchPage /MatchAll /MatchString
Software version: 21:30 Saturday 31st May 2014.

It might help to start by understanding the blinding technique.

SheetNums 0 and 1 were the shippers, 2 and 3 were the Greeks. This drove the construction of GlassesOnSheets, of NonDecanterLabelGlassesNumCopies, of GlassesOnTastingNotePages, of the PageOrderings, and of GlassesClusteredOnCorkDisplay.

• Because my eyes are accustomed to Roman text much much more than Greek, I don’t see a Greek letter and automatically know where is its baseline. Hence /VerticalMiddlingTitles /MatchNone def.

• Observe that the shipper names are used for some of the decanter labels, and the cork-display, and nothing else.
User avatar
jdaw1
Cockburn 1851
Posts: 23568
Joined: 15:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Monday 16th June 2014, at The Bung Hole, 1997 Maturity Evaluation (planning and arrangements, placemats, review of the evening as a whole).

Image Image

Code: Select all

/MarginL {TypeOfPagesBeingRendered /Glasses ne {30} {15} ifelse} def
/MarginR {TypeOfPagesBeingRendered /Glasses ne {30} {15} ifelse} def
/MarginT {TypeOfPagesBeingRendered /Glasses ne {30} {15 HeaderFontSize add} ifelse} def
/MarginB {TypeOfPagesBeingRendered /Glasses ne {30} {
	284.7
	UserScratchDict /OutputTrimmedHeight known not {dup mark exch (Trimmed page height = ) exch PageHeight exch sub MarginL add 72 div 100 mul round 100 div ( inches) ConcatenateToMark OutputToLog  UserScratchDict /OutputTrimmedHeight null put} if
} ifelse} def

/Vintage (1997) def
/JDAW [(JDA) {-0.06 Kern} (W)] def
/AWGH [(A) {-0.06 Kern} (WGH)] def
/JDAWAWGH [JDAW {-0.04 Kern} (+) {-0.08 Kern} AWGH] def

/PortData [
	[ (D)   (Dow)                                     Vintage  (IDJ)  ]
	[ (F)   (Fonseca)                                 Vintage  (DRL)  ]
	[ (G)   (Graham)                                  Vintage  (CPR) ]
	[ (N)   (Quinta do Noval)                         Vintage  (CMAG) ]
	[ (T)   [(T) {-0.06 Kern} (aylor)]                Vintage  (DRL) ]
	[ (V)   [(Quinta do V) {-0.06 Kern} (esuvio)]     Vintage  (THRA) ]
	[ (W)   [(W) {-0.06 Kern} (arre)]                 Vintage  ]

	[ (Fr)  (Ferreira)                                Vintage  (IDJ)  ]
	[ (GC)  (Gould Campbell)                          Vintage  ]
	[ (RP)  (Ramos-Pinto)                             Vintage  ]
	[ (S)   (Sandeman)                                Vintage  JDAWAWGH  ]
	[ (SV)  [(Sandeman V) {-0.06 Kern} (au)]          Vintage  (Single)  JDAWAWGH ]
	[ (SV)  [(Sandeman V) {-0.06 Kern} (au)]          Vintage  (Double Magnum)  JDAW ]
	[ (SW)  [(Smith W) {-0.06 Kern} (oodhouse)]       Vintage  (MPM) ]

	[ (Ck)  (Cockburn)                                Vintage  ]
	[ (CR)  [(Croft Quinta da Ro) /ecircumflex (da)]  Vintage  (THRA) ]
	[ (I)   (Quinta do Infantado)                     Vintage  (MPM) ]
	[ (Mg)  (Morgan)                                  Vintage  ]
	[ (O)   [(Of) /fl (ey)]                           Vintage  JDAWAWGH  ]
	[ (Ps)  [(Quinta do Passadouro)]                  Vintage  [(V) {-0.06 Kern} (.W) {-0.06 Kern} (.&P) {(.) stringwidth pop -2 div 0 rmoveto} (.)] ]
] def

/Circlearrays [ PortData {dup 1 exch length 1 sub getinterval} forall ] def
/Titles [ PortData {0 get} forall ] def
/Belowtitles [ PortData {dup length 5 ge {3 get} {pop ()} ifelse } forall ] def
/SubtitlesVoteRecorder [ Circlearrays length {()} repeat ] def

/Names [
	(MPM)  JDAW  AWGH
	(DJ)  (IJ)  % DJ senior
	(THRA)  (CPR)  (IDJ)  (CMAG)  (DRL)  (RDA)
	()
] def

/PaperType /A2 def  % /A4 /A3 /USL = 8.5"x11", /USLegal = 8.5"x14", /USL2 = 11"x17", [SmallerPts LargerPts]
/Orientation {PaperType /A4 eq {/Portrait} {/Landscape} ifelse} def  % /Landscape /Portrait

/HeadersLeft [
	0  [(The Bung Hole, Monday 16) {SuperscriptOn} (th) {SuperscriptOff} ( June 2014)]
] def  % /HeadersLeft
/HeadersCenter [
	0  [Vintage ( Maturity Evaluation)]
] def  % /HeadersCenter

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=8612&view=unread#unread)   (Review thread on ThePortForum.com)
	(http://www.theportforum.com/viewtopic.php?t=7655&view=unread#unread)   (Planning thread on ThePortForum.com)
	(http://www.jdawiseman.com/2014/20140616_1997s.pdf)   (Latest version this placemat)
	(http://www.stevensgarnier.co.uk/sogrape-brands/)   (Stevens Garnier (Sogrape))
	(http://www.vintagewineandport.com/)   (VintageWineAndPort.com)
	(http://www.davy.co.uk/bunghole/)  (The Bung Hole)
	(http://www.streetmap.co.uk/map.srf?x=530848&y=181628&z=106&pc=WC1V+6DT)  (WC1V 6DT, streetmap.co.uk)
	(https://maps.google.co.uk/maps?z=20&t=k&layer=c&cbll=51.5182,-0.1154&cbp=11,15,,0,0)  (WC1V 6DT, maps.google.co.uk)
	(http://www.bing.com/maps/default.aspx?where1=WC1V+6DT&cp=51.5182~-0.1154)  (WC1V 6DT, bing.com)
] def

/PlaceNames false def
/PrePourNumCopies {WithinTitles 7 mod 0 eq {1} {0} ifelse} def
/StickyLabelsNumCopies 1 def
/StickyLabelsTypes [0] def

/GlassesOnSheets [
	[
		  00  07  09  11  13
		01  02  08  10  12
		  03  04  15  17  19
		05  06  14  16  18
	]
] def  % /GlassesOnSheets
/GlassesOnTastingNotePages [
	00 06                    [ 3 1 roll 1 exch {} for ]
	07 13                    [ 3 1 roll 1 exch {} for ]
	14 Titles length 1 sub   [ 3 1 roll 1 exch {} for ]
] def  % /GlassesOnTastingNotePages

/VoteRecorderTopTexts [  % Must be same length as GlassesClusteredOnVoteRecorders, each sub-array containing some number of TopTexts
	% [ (What is it?) ]
	[ (Wine Of The Flight)  (Wine Of The Night)  (Q:) ]
] def  % Must be same length as GlassesClusteredOnVoteRecorders

/TitlesFont     /GillSans-CondensedBold def
/CircletextFont /Garamond def

/InlineTitles true def
/InlineBelowtitles true def

/PrePourReverseOrder false def

/FlightSeparations true def
/FlightSeparationLines
[
	[  % SheetNum=0 start

		% Loop surrounding Dow flight
		[ /Closed [/Top 0 1] [0 1] /Curve [1 6] /Curve [6 7] /Curve [7 11] /Curve [11 12] /Curve [11 17] /Curve [16 17] [/Bottom 16 17] [/Left 15 -1.0] [/Top 5 -1.0] ]

		% Loop surrounding Ferreira flight
		[ /Closed [/Top 0 1] [0 1] /Curve [1 6] /Curve [6 7] /Curve [7 11] /Curve [7 12] [/Clockwise 12] [/Widdershins 8] [/Clockwise 13] [/Widdershins 9] [/Clockwise 14] [/Right 9 14] [/Top 4 +1.0] ]

		% Loop surrounding Cockburn flight
		[ /Closed [/Bottom 16 17] [16 17] /Curve [11 17] /Curve [11 12] /Curve [7 12] [/Clockwise 12] [/Widdershins 8] [/Clockwise 13] [/Widdershins 9] [/Clockwise 14] [/Right 9 14] [/Bottom 14 +1.0] ]

		% Three pieces of separation lines, each starting at centre
		[ [7 12] /Curve [7 11] /Curve [6 7] /Curve [1 6] /Curve [0 1] [/Top 0 1] ]
		[ [11 12] /Curve [7 12] [/Clockwise 12] [/Widdershins 8] [/Clockwise 13] [/Widdershins 9] [/Clockwise 14] [/Right 9 14] ]
		[ [7 11]  /Curve [11 12] /Curve [11 17] /Curve [16 17] [/Bottom 16 17] ]
	]  % SheetNum=0 finish
] def  % /FlightSeparationLines

/FlightSeparationPaintSeparately true def

/FlightSeparationPaintCode
{
	/FSGap GlassPositions SheetNum get dup 0 get 1 get exch 5 get 1 get sub 7 div def
	0.12 setlinewidth 0 setgray 0 setlinecap [] 0 setdash

	FlightSeparationLineNum 0 eq
	{
		clipsave clip newpath
		MgnL 0.06 add  FSGap  GlassPositions SheetNum get dup 1 get 0 get exch 2 get 0 get add 2 div {dup MgnB moveto PageHeight MgnT sub lineto  stroke} for
		cliprestore
	} if  % Dow loop
	
	FlightSeparationLineNum 1 eq
	{
		clipsave clip newpath
		PageHeight MgnT sub 0.06 sub  FSGap neg  GlassPositions SheetNum get 12 get 1 get {dup MgnL exch moveto PageWidth MgnR sub exch lineto  stroke} for
		cliprestore
	} if  % Ferreira loop
	
	FlightSeparationLineNum 2 eq
	{
		clipsave clip newpath
		FSGap  FSGap  PageWidth MgnR sub NamePlacementBottomX SheetNum get sub dup mul  PageHeight MgnB MgnT add sub 2 div dup mul  add sqrt
			{GlassPositions SheetNum get 2 get 0 get MgnB 3 -1 roll   PageWidth MgnR sub NamePlacementBottomX SheetNum get sub 2 copy gt {2 copy dup mul exch dup mul exch sub sqrt exch atan 40  1 setlinecap} {pop 0 180  0 setlinecap} ifelse arc  stroke}
		for  cliprestore
	} if  % Cockburn loop

	FlightSeparationLineNum FlightSeparationLines SheetNum get length 1 sub eq
	{
		gsave 0 setlinecap 2.4 setlinewidth 0 setgray stroke grestore 1 setlinecap 0.96 setlinewidth 1 setgray stroke
	} if  % All subsequent boundaries, done at once for correct black-then-white
} def  % /FlightSeparationPaintCode


/PaintForegroundCode
{
	TypeOfPagesBeingRendered /Glasses eq
	{
		/GillSans-Light 0 BelowtitleFontSizes {Max 2 copy lt {exch} if pop} forall selectfont
		/FlightLabelUpperOffset 1 def
		/FlightLabelLowerOffset FlightLabelUpperOffset neg  gsave 0 0 moveto (Flight) false charpath PathBBox grestore 4 1 roll pop pop pop sub  def  % Assumes letters on baseline

		MgnL   GlassPositions SheetNum get 0 get 1 get   2 copy
		FlightLabelUpperOffset add moveto [(Fir) {+0.04 Kern} (st)] ShowRecursive FlightLabelLowerOffset add moveto (Flight) show

		PageWidth MgnR sub (Second) stringwidth pop sub  GlassPositions SheetNum get 9 get 1 get   2 copy
		FlightLabelUpperOffset add moveto (Second) show FlightLabelLowerOffset add moveto (Flight) show
		
		PageWidth MgnR sub (Second) stringwidth pop sub  GlassPositions SheetNum get 19 get 1 get   2 copy
		FlightLabelUpperOffset add moveto [(Thir) {+0.03 Kern} (d)] ShowRecursive FlightLabelLowerOffset add moveto (Flight) show
		
	} if  % ... /Glasses
} def  % Paints a pattern on top of everything. Will probably refer to TypeOfPagesBeingRendered and then to SheetNum or TastingSheetNum.
Software version: 11:30 Sunday 15th June 2014.

Edit, April 2021: it is possible that the FlightSeparations flag /Curve will be retired. Even if it isn’t, the new flag /Arc is neater, and should be preferred. See issue entitled Simplifying FlightSeparations: removal of some possibilities.

Lots of cunning usage of the parameters.

MarginL etc set to be small on the glasses pages, but less small on others. Glasses-page space at a premium. However MarginB is massive on the glasses pages, with the heavy paper to be trimmed.

• As is typical of large tastings, the array PortData holds the information which is then decanted into Circlearrays, Titles, Belowtitles and SubtitlesVoteRecorder.

• The plan was to pre-pour only the first Port of each flight, to set the measure by which people were to self-pour the rest. Hence the complication of PrePourNumCopies.

/FlightSeparations true def, and, joy!, the most complicated use yet of this feature. Start by observing /FlightSeparationPaintSeparately true def. The first three items of FlightSeparationLines define closed paths, used by FlightSeparationPaintCode (“FlightSeparationLineNum 0 eq”, then 1, then 2) as clipping regions. Decorative lines, very thin, are drawn. The remainder of FlightSeparationLines defines the boundary paths, some with /Curve and some without. FlightSeparationPaintCode does nothing with these until the last one, so these are in effect not …PaintSeparately’d. And that last item paints a thick black line inside a gsavegrestore, and then a less thick white line. The setlinecaps avoid bleed.

Those tracing through the FlightSeparationLines might be helped by the following diagram, showing where stuff is. Observe that the Titles have been replaced with the values of WithinPage, and the Belowtitles with WithinTitles. Also, some text has been moved to keep it on the page, most obviously that referring to the corners.
Image

• Finally, the texts “First Flight” etc are shown by PaintForegroundCode.


Broader lesson

There is a broader lesson from these complicated parameters. The program is written in PostScript, and is structured to allow, perhaps even encourage, code injection. In almost all parameters the user has full access to the whole of PostScript, and to the values of the variables maintained by the code. E.g., FlightSeparationLineNum is there to seen. That gives great power, but full access to that power requires being able to use PostScript.
User avatar
jdaw1
Cockburn 1851
Posts: 23568
Joined: 15:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

There are a few fortified wines that make multiple appearances in the Wiseman household, and decanted. It was decided that decanter labels should be used.

If your household needs like, request (in the thread entitled House decanter labels or by private message) and I’ll oblige.

Image

Code: Select all

/LBV [(LBV) {+0.25 Kern}] def

/Croft [(Crof) {+0.06 Kern} (t)] def
/Grahams [(Graham) {-0.03 Kern} /quoteright {-0.08 Kern} (s)] def
/Madeira [(Mad) {-0.02 Kern} (eira)] def

/Year1998 [(1) {-0.06 Kern} (998)] def
/Year1999 [(1) {-0.06 Kern} (999)] def
/Year2001 [(200) {-0.06 Kern} (1)] def

/Circlearrays [
	[ Croft  [LBV ( 2004)] ]
	[ Grahams  [(Crusted ) Year1998] ]
	[ Grahams  [(Malvedos ) Year1999] ]
	[ Grahams  [(Malvedos ) Year2001] ]
	[ Madeira  [(Sainsbury) /quoteright {-0.08 Kern} (s)] ]
	[ Madeira  (Terrantez) ]
] def

/Titles [ Circlearrays {0 get} forall ] def

/Belowtitles [ Circlearrays {1 get} forall ] def

/Names [ ] def

/ThePortForumIconPlacement /None def  % /None
/ThePortForumIconTastingNotePlacement /None def  % /None

% Headers... are arrays of even length, alternately an item of PageOrdering, and the relevant compound string.
/HeadersLeft [
	0  [(Labels made in August 2014 by JDA) {-0.01 Kern} (W)]
] def  % /HeadersLeft
/HeadersCenter [
	0  (House Decanter Labels)
] def  % /HeadersCenter
/HeadersRight [
	0  [(www) {-0.06 Kern} (.jdawiseman.com/2014/201408_house_decanter_labels.pdf)]
] def  % /HeadersRight
/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=8855&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2014/201408_house_decanter_labels.pdf)   (These labels)
	(http://www.jdawiseman.com/)   (jdawiseman.com)
] def

/DecanterLabelsNumCopies 1 def
/PlaceNames false def
/CorkDisplay false def
/VoteRecorders false def

/TitlesFont     /CentimeThinNormal def  % RapidThinNormal
/BelowtitlesFont  /AmazeNormal def
/CircletextFont TitlesFont def
Software version: 17:30 Wednesday 20th August 2014.

• Apart from the fiddly kerning, simple parameters.

• But observe that the default value of TitleAboveBelowOverToFitInCircle is in effect Names length 0 ne. Here Names is of zero length, so the Titles etc can bust out of the circle, even though not out of the circle’s bounding square. (But decanter labels were re-parameterised in Oct 2014, when this parameter and observation became redundant.)
User avatar
jdaw1
Cockburn 1851
Posts: 23568
Joined: 15:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Tuesday 26th August 2014, at The Bung Hole, AHB’s Cellar Reduction Party (planning and arrangements, placemats, review of the evening as a whole).

Image Image Image

Code: Select all

/NumberWordsEnglish [
	(One)
	[(T) {CurrentFontSize -0.06 mul 0 rmoveto} (wo)]
	(Three)
	[(F) {CurrentFontSize -0.06 mul 0 rmoveto} (our)]
	(Five) (Six) (Seven) (Eight) (Nine)
	[(T) {CurrentFontSize -0.06 mul 0 rmoveto} (en)]
	(Eleven)
	[(T) {CurrentFontSize -0.06 mul 0 rmoveto} (welve)]
	(Thirteen)
	[(F) {CurrentFontSize -0.03 mul 0 rmoveto} (ourteen)]
	(Fifteen) (Sixteen) (Seventeen) (Eighteen) (Nineteen)
	[(T) {CurrentFontSize -0.06 mul 0 rmoveto} (wenty)]
	[(T) {CurrentFontSize -0.06 mul 0 rmoveto} (wenty-One)]
	[(T) {CurrentFontSize -0.06 mul 0 rmoveto} (wenty-T) {CurrentFontSize -0.06 mul 0 rmoveto} (wo)]
	[(T) {CurrentFontSize -0.06 mul 0 rmoveto} (wenty-Three)]
] def  % /NumberWordsEnglish

/Circlearrays [
	12    1 exch 1 exch {[ exch dup 1 sub NumberWordsEnglish exch get  exch 2 string cvs ]} for
] def

/Titles [ 1 1 Circlearrays length {2 string cvs dup length 2 ge {[exch dup 0 1 getinterval exch 1 1 getinterval {-0.08 Kern} exch]} if} for ] def
/Belowtitles [ Circlearrays length {()} repeat ] def

/Names [
	(AHB)  (ARM)  (WPS)  (BMHR)
	[(JDA) {-0.08 Kern} (W)]
	(CMAG)  (IDJ)  (CPR)  (RLC)  (THRA)
	()
] def

/HeadersLeft [
	0  [(The Bung Hole, Tuesday 26) {SuperscriptOn} (th) {SuperscriptOff} ( August 2014)]
] def  % /HeadersLeft
/HeadersCenter [
	0  [(A Cellar Reduction Party \(of AHB) /quoteright (s\))]
] def  % /HeadersCenter

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=8861&view=unread#unread)   (Review thread on ThePortForum.com)
	(http://www.theportforum.com/viewtopic.php?t=8753&view=unread#unread)   (Planning thread on ThePortForum.com)
	(http://www.jdawiseman.com/2014/20140826_cellar_reduction.pdf)   (Latest version this placemat)
	(http://www.davy.co.uk/bunghole/)  (The Bung Hole)
	(http://www.streetmap.co.uk/map.srf?x=530848&y=181628&z=106&pc=WC1V+6DT)  (WC1V 6DT, streetmap.co.uk)
	(https://maps.google.co.uk/maps?z=20&t=k&layer=c&cbll=51.5182,-0.1154&cbp=11,15,,0,0)  (WC1V 6DT, maps.google.co.uk)
	(http://www.bing.com/maps/default.aspx?where1=WC1V+6DT&cp=51.5182~-0.1154)  (WC1V 6DT, bing.com)
] def

/PlaceNames false def
/PrePourNumCopies 0 def

/VoteRecorderTopTexts [  % Must be same length as GlassesClusteredOnVoteRecorders, each sub-array containing some number of TopTexts
	[ (What is it?) ]
	[ (Wine Of The Night)  (Q:) ]
] def  % Must be same length as GlassesClusteredOnVoteRecorders
/VoteRecorderShowTotalRow [ true false ] def  % Must be same length as GlassesClusteredOnVoteRecorders
/VoteRecorderTotalColTitle [(T) {-0.092 Kern} (otal)] def
/VoteRecorderNamesOrientation /Vertical def  % /Horizontal /Vertical /Either

/CircletextFont /TimesNewRomanPSMT def
/TitlesFont     CircletextFont def

/TitleMaxHeightProportionInnerRadius 2 def

/InlineTitles true def
/InlineTitlesMaxNumberContours 1 def
Software version: 00:30 Sunday 24th August 2014.

• Other than being the first use of VoteRecorderNamesOrientation, all the parameters are vanilla.

• Also observe small change in the vote-recorder sheets.

An early version of the parameters also defined

Code: Select all

/VoteRecorderCrossedBox
{
	VoteRecorderShowTotalRow VoteRecorderSheetNum GetEU
	{
		ThisName ASCIIfy (AHB)  eq  WithinTitles 8 lt  and
		ThisName ASCIIfy (THRA) eq  WithinTitles 8 eq  and  or
		ThisName ASCIIfy (WPS)  eq  WithinTitles Titles length 2 sub ge  and  or
		ThisName ASCIIfy (JDAW) eq  WithinTitles 0 eq  and  or
	} {false} ifelse
} def  % /VoteRecorderCrossedBox
These crosses were removed at AHB’s request.
User avatar
jdaw1
Cockburn 1851
Posts: 23568
Joined: 15:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Thursday 28th August 2014, at The Bung Hole, One Bottler — during the evening revealed to be Hedges & Butler (planning and arrangements, placemats, review of the evening as a whole).

Image Image

Code: Select all

/NumberRomanUpper [
	(I) (II) (III) (IV) (V) (VI) (VII) (VIII) (IX) (X)
	(XI) (XII) (XIII) (XIV) (XV) (XVI) (XVII) (XVIII) (XIX) (XX)
	(XXI) (XXII) (XXIII) (XXIV) (XXV) (XXVI) (XXVII) (XXVIII) (XXIX) (XXX)
] def  % /NumberRomanUpper

% Font = Helvetica-Bold; KernChar = "I"; GapProportionKernChar = 0.25; Forbid +ve kern
% Kernings calculated by www.jdawiseman.com/papers/placemat/kernings_calculator.ps
/NumberRomanUpperKernII {-0.0909181 Kern} def
/NumberRomanUpperKernIV {-0.0494335 Kern} def
/NumberRomanUpperKernVI {-0.0402003 Kern} def
/NumberRomanUpperKernIX {-0.0426367 Kern} def
/NumberRomanUpperKernXI {-0.0392188 Kern} def
/NumberRomanUpperKernXV {} def  % {0.00226575 Kern}
/NumberRomanUpperKernXX {} def  % {0.00906259 Kern}

/NumberRomanUpperKerned [
	(I)
	[(I) {NumberRomanUpperKernII} (I)]
	[(I) {NumberRomanUpperKernII} (I) {NumberRomanUpperKernII} (I)]
	[(I) {NumberRomanUpperKernIV} (V)]
	(V)
	[(V) {NumberRomanUpperKernVI} (I)]
	[(V) {NumberRomanUpperKernVI} (I) {NumberRomanUpperKernII} (I)]
	[(V) {NumberRomanUpperKernVI} (I) {NumberRomanUpperKernII} (I) {NumberRomanUpperKernII} (I)]
	[(I) {NumberRomanUpperKernIX} (X)]
	(X)
	[(X) {NumberRomanUpperKernXI} (I)]
	[(X) {NumberRomanUpperKernXI} (I) {NumberRomanUpperKernII} (I)]
	[(X) {NumberRomanUpperKernXI} (I) {NumberRomanUpperKernII} (I) {NumberRomanUpperKernII} (I)]
	[(X) {NumberRomanUpperKernXI} (I) {NumberRomanUpperKernIV} (V)]
	[(X) {NumberRomanUpperKernXV} (V)]
	[(X) {NumberRomanUpperKernXV} (V) {NumberRomanUpperKernVI} (I)]
	[(X) {NumberRomanUpperKernXV} (V) {NumberRomanUpperKernVI} (I) {NumberRomanUpperKernII} (I)]
	[(X) {NumberRomanUpperKernXV} (V) {NumberRomanUpperKernVI} (I) {NumberRomanUpperKernII} (I) {NumberRomanUpperKernII} (I)]
	[(X) {NumberRomanUpperKernXI} (I) {NumberRomanUpperKernIX} (X)]
	[(X) {NumberRomanUpperKernXX} (X)]
	[(X) {NumberRomanUpperKernXX} (X) {NumberRomanUpperKernXI} (I)]
	[(X) {NumberRomanUpperKernXX} (X) {NumberRomanUpperKernXI} (I) {NumberRomanUpperKernII} (I)]
	[(X) {NumberRomanUpperKernXX} (X) {NumberRomanUpperKernXI} (I) {NumberRomanUpperKernII} (I) {NumberRomanUpperKernII} (I)]
	[(X) {NumberRomanUpperKernXX} (X) {NumberRomanUpperKernXI} (I) {NumberRomanUpperKernIV} (V)]
	[(X) {NumberRomanUpperKernXX} (X) {NumberRomanUpperKernXV} (V)]
	[(X) {NumberRomanUpperKernXX} (X) {NumberRomanUpperKernXV} (V) {NumberRomanUpperKernVI} (I)]
	[(X) {NumberRomanUpperKernXX} (X) {NumberRomanUpperKernXV} (V) {NumberRomanUpperKernVI} (I) {NumberRomanUpperKernII} (I)]
	[(X) {NumberRomanUpperKernXX} (X) {NumberRomanUpperKernXV} (V) {NumberRomanUpperKernVI} (I) {NumberRomanUpperKernII} (I) {NumberRomanUpperKernII} (I)]
	[(X) {NumberRomanUpperKernXX} (X) {NumberRomanUpperKernXI} (I) {NumberRomanUpperKernIX} (X)]
	[(X) {NumberRomanUpperKernXX} (X) {NumberRomanUpperKernXX} (X)]
] def  % /NumberRomanUpperKerned


/NumberWordsEnglish [
	(One)
	[(T) {CurrentFontSize -0.06 mul 0 rmoveto} (wo)]
	(Three)
	[(F) {CurrentFontSize -0.06 mul 0 rmoveto} (our)]
	(Five) (Six) (Seven) (Eight) (Nine)
	[(T) {CurrentFontSize -0.06 mul 0 rmoveto} (en)]
	(Eleven)
	[(T) {CurrentFontSize -0.06 mul 0 rmoveto} (welve)]
	(Thirteen)
	[(F) {CurrentFontSize -0.03 mul 0 rmoveto} (ourteen)]
	(Fifteen) (Sixteen) (Seventeen) (Eighteen) (Nineteen)
	[(T) {CurrentFontSize -0.06 mul 0 rmoveto} (wenty)]
	[(T) {CurrentFontSize -0.06 mul 0 rmoveto} (wenty-One)]
	[(T) {CurrentFontSize -0.06 mul 0 rmoveto} (wenty-T) {CurrentFontSize -0.06 mul 0 rmoveto} (wo)]
	[(T) {CurrentFontSize -0.06 mul 0 rmoveto} (wenty-Three)]
] def  % /NumberWordsEnglish

/Circlearrays [
	5        1 sub 0 exch 1 exch {[ exch dup NumberWordsEnglish exch get exch NumberRomanUpper exch get ]} for
] def  % /Circlearrays
% [ (One) (I) ]
Circlearrays 0 get ==


/Titles  NumberRomanUpperKerned  0  Circlearrays length  getinterval  def
/TitlesTastingNotes NumberRomanUpper  0  Circlearrays length  getinterval def
/TitlesVoteRecorder TitlesTastingNotes def
/Belowtitles [ Circlearrays length {()} repeat ] def

/Names [ (THRA)  (AHB)  [(JDA) {-0.092 Kern} (W)]  () dup dup ] def

/HeadersLeft [
	0  [(The Bung Hole, Thursday 27) {SuperscriptOn} (th) {SuperscriptOff} ( August 2014)]
] def  % /HeadersLeft
/HeadersCenter [
	0  [(One Bottler)]
] def  % /HeadersCenter

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=8863&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2014/20140827_one_bottler.pdf)   (Latest version this placemat)
	(http://www.davy.co.uk/bunghole/)  (The Bung Hole)
	(http://www.streetmap.co.uk/map.srf?x=530848&y=181628&z=106&pc=WC1V+6DT)  (WC1V 6DT, streetmap.co.uk)
	(https://maps.google.co.uk/maps?z=20&t=k&layer=c&cbll=51.5182,-0.1154&cbp=11,15,,0,0)  (WC1V 6DT, maps.google.co.uk)
	(http://www.bing.com/maps/default.aspx?where1=WC1V+6DT&cp=51.5182~-0.1154)  (WC1V 6DT, bing.com)
] def

/PlaceNames false def

/VoteRecorderTopTexts [  % Must be same length as GlassesClusteredOnVoteRecorders, each sub-array containing some number of TopTexts
	[ (What is it?) ]
	[ (Wine Of The Night)  (Q:) ]
] def  % Must be same length as GlassesClusteredOnVoteRecorders
/VoteRecorderShowTotalRow [ true false ] def  % Must be same length as GlassesClusteredOnVoteRecorders
/VoteRecorderTotalColTitle [(T) {-0.092 Kern} (otal)] def
/VoteRecorderCrossedBox {VoteRecorderShowTotalRow VoteRecorderSheetNum GetEU dup {pop NameNum 0 eq WithinTitles 4 lt and} if} def

/CrossHatchingTitles true def
Software version: 16:45 Wednesday 27th August 2014.

Fairly vanilla.

• Having realised that one can see the wine better with more white underneath, by default /InlineTitles true def. That goes rather well with the new complicated default of CrossHatchingBackgroundStrokeCode, so I also /CrossHatchingTitles true def.

• Nobody noticed, not me not anybody else, that Thursday was the 28th not the 27th. This error is regretted.


After making these placemats I realised that it would be neater to define NumberRomanUpperKerned with:

Code: Select all

/NumberRomanUpperKerned
[
	NumberRomanUpper
	{
		/s exch def
		s length 1 gt
		{[
			s 0 1 getinterval
			1 1 s length 1 sub
			{
				/i exch def
				(NumberRomanUpperKern--) dup dup 20 s i 1 sub 1 getinterval putinterval 21 s i 1 getinterval putinterval cvn load
				dup length 0 eq {pop s exch length dup i exch sub exch 1 add getinterval} {s i 1 getinterval} ifelse
			} for  % i
		] dup length 1 eq {0 get} if} {s} ifelse  % s length 1 gt
	} forall
] def  % /NumberRomanUpperKerned
User avatar
jdaw1
Cockburn 1851
Posts: 23568
Joined: 15:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Tuesday 21st October 2014, at The Bung Hole, A Vertical of Ramos-Pinto (review, planning and arrangements, placemats).

Image Image

Code: Select all

/JDAW [(JDA) {-0.06 Kern} (W)] def
/RamosPinto (Ramos Pinto) def
/Ervamoira (Ervamoira) def
/QdErvamoira [(Quinta da ) Ervamoira] def
/RamosPintoErvamoira [RamosPinto ( ) QdErvamoira] def

/Circlearrays [
	[ (1909)  RamosPinto  (JNdA) ]
	[ (1924)  RamosPinto  (THRA)  [/approxequal (65cl)] ]
	[ (1931)  RamosPinto  JDAW ]
	[ (1960)  RamosPinto  (AP) ]
	[ (1964)  RamosPinto  (AP) ]
	[ (1970)  RamosPinto  (AP) ]
	[ (1980)  RamosPinto  (THRA) ]
	[ (1982)  RamosPinto  (AP) ]
	[ (1983)  RamosPinto  (JNdA) ]
	[ (1985)  RamosPinto  (AP) ]
	[ (1991)  RamosPinto  (THRA) ]
	[ (1994)  RamosPintoErvamoira  (AP) ]
	[ (1994)  RamosPinto  JDAW ]
	[ (1997)  RamosPinto  JDAW ]
] def

/TitlesTastingNotes [ Circlearrays {0 get [exch dup 0 1 getinterval exch {-0.09 Kern} exch 1 3 getinterval]} forall ] def  % To make the likes of [(1) {-0.09 Kern} (931)]
/Titles [
	0  1  Circlearrays length 1 sub
	{
		dup  Circlearrays exch get 0 get dup cvi 1900 ge {2 2 getinterval exch pop} {pop TitlesTastingNotes exch get} ifelse
	} for
] def
/TitlesVoteRecorder TitlesTastingNotes def
/Belowtitles [ Circlearrays {1 get RamosPintoErvamoira eq {Ervamoira} {()} ifelse} forall ] def
/Overtitles [ Circlearrays {dup length 4 ge {3 get} {pop ()} ifelse} forall ] def
/SubtitlesTastingNotes [ 0 1 Belowtitles length 1 sub {dup Belowtitles exch get dup length 0 gt {exch pop} {pop Overtitles exch get} ifelse} for ] def
/SubtitlesCorkDisplay [ Circlearrays {dup length 4 ge {[exch dup 1 get exch 3 get (, ) exch]} {1 get} ifelse} forall ] def

/Names [
	[(Jo) /atilde (o N) {-0.06 Kern} (.d) {-0.06 Kern} (.A.)]
	(Mark B.)
	(Ana Rato)
	[(Julian W) {-0.092 Kern} (.)]
	[(Phil W) {-0.092 Kern} (.)]
	[(T) {-0.04 Kern} (om A.)]
	[(W) {-0.08 Kern} (olfgang S.)]
	[(Axel P) {-0.15 Kern} (.)]
	(Alex B.)
	[(Daniel J) {-0.04 Kern} (.)]
	(Mike M.)
	(Rob C.)
	()
] def

/PaperType /A3 def  % /A4 /A3 /USL = 8.5"x11", /USLegal = 8.5"x14", /USL2 = 11"x17", [SmallerPts LargerPts]
/Orientation /Landscape def  % /Landscape /Portrait

/HeadersLeft [
	0  [(Davy) /quoteright (s at Woolgate, 25 Basinghall Street EC2V 5HA; T) {-0.04 Kern} (uesday 21) {SuperscriptOn} (st) {SuperscriptOff} ( October 2014)]
] def  % /HeadersLeft
/HeadersCenter [
	0  [(Ramos Pinto)]
] def  % /HeadersCenter
/HeadersRight [
	0
	[
		(www) {-0.092 Kern} (.RamosPinto.pt, )
		(www) {-0.092 Kern} (.) {-0.092 Kern} (ThePortForum.com, )
		(www) {-0.092 Kern} (.jdawiseman.com)
	]
] def  % /HeadersRight

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.ramospinto.pt/)  (RamosPinto.pt)
	(http://www.theportforum.com/viewtopic.php?t=8009&view=unread#unread)   (Planning thread on ThePortForum.com)
	(http://www.theportforum.com/viewtopic.php?t=8971&view=unread#unread)   (Review thread on ThePortForum.com)
	(http://www.jdawiseman.com/2014/20141021_ramos_pinto.pdf)   (Latest version this placemat)
	(http://www.theportforum.com/viewtopic.php?p=81478#p81478)  [/ellipsis ( and parameters by which made)]
	(http://www.davy.co.uk/woolgate/)  [(Davy) /quoteright (s at Woolgate)]
	(http://www.streetmap.co.uk/map.srf?x=532560&y=181440&z=106&pc=EC2V+5HA)  (EC2V 5HA, streetmap.co.uk)
	(https://maps.google.co.uk/maps?z=20&t=k&layer=c&cbll=51.51652,-0.091&cbp=11,80,,0,0)  (EC2V 5HA, maps.google.co.uk)
	(http://www.bing.com/maps/default.aspx?where1=EC2V+5HA&cp=51.5162~-0.09084)  (EC2V 5HA, bing.com)
] def

/PlaceNames false def
/StickyLabelsNumCopies 1 def
/StickyLabelsTypes [0] def

/GlassesOnSheetsMaxPerTNSheet 7 def  % 8 gives per page leaves just enough writing space.

/PermittedPackingStyles [
	[ /RectangularDislocation /PackingNestingColumnMajor true ]
	[ /Diamonds /PackingNestingColumnMajor true ]
	[ /DiamondsAndRectangular /PackingNestingColumnMajor true ]
	[ /RectangularAlternateNudge  /ImprovementPointsMin 2  /PackingNestingColumnMajor true ]
] def  % /PermittedPackingStyles
% Notes. A3, with 18pt margins, is 1-by-0.697984132.
% Packomania has results for 1-by-0.7, and on that size its best radius is 0.1081619.
% http://hydra.nat.uni-magdeburg.de/packing/crc_700/d3.html   http://hydra.nat.uni-magdeburg.de/packing/crc_700/pdf/d3.pdf
% Same layout as used on RP, but on 1-by-0.7, has radius of ( 127 - 10 * Sqrt(67) ) / 420 ~= 0.1074916.
% Mathematica: Solve[{6 R + 4 R Cos[Theta] == 1, 2 R + 8 R Sin[Theta] == 7/10}, {R, Theta}]
% So Packomania better by a factor of ~= 1.006235837.
% If same ratio at this nearly-0.7 page with radius currently 124.172pt, worth an extra 0.77pt ~= 0.273mm of radius.
% So about that close to the optimum.
% Judgement call: not worth Packomania's asymmetry to gain that small radius.

/FontSizesRatioTitlesMin 1.01 def

/TitlesFont     /AvenirNextCondensed-DemiBold def  % LucidaSans-Demi
/CircletextFont /Garamond def  % LucidaBright

/FontSizesSetsAboveBelowOver [ 0 0 1 ] def  % Array of length 3, representing which of Abovetitles, Belowtitles, and Overtitles are considered together for font-size purposes

/ColourSchemeTitles /Black def  % /MidGrey /Black
/ColourSchemeOvertitles /Black def  % /MidGrey /Black

/OvertitleMaxFontSizeProportionTitles 0.083333333 def

/CircletextsMinCopies 3 def

/InlineTitlesMaxNumberContours {Belowtitles WithinTitles get length 0 eq {2} {1} ifelse} def

/BackgroundTextsGlasses true def
/BackgroundTextsGlassesTexts [ [(RP)] ] def
/BackgroundTextsSquooshMax 1 def
/BackgroundTextsGlassesPaintCode
{
	clip
	2 -1 1
	{
		4 mul dup 3 sub exch  2 {FontSizeX 80 div mul exch} repeat
		[ 1 0.9375 ] {gsave setgray setlinewidth stroke grestore} forall
	} for
	newpath
} def  % /BackgroundTextsGlassesPaintCode

/TastingNotesCirclesBehindFitAndCentreInRow false def

/MarginT {TypeOfPagesBeingRendered /Glasses eq {18} {30} ifelse} def  % Top

/EmptyGlassesPageAtStart false def
/MarginL /MarginT load def  % Left
/MarginR /MarginL load def  % Right
/MarginB /MarginL load def  % Bottom
Software version: 10:30 Monday 20th October 2014

An early draft of the parameters had a fancier background, as in the image (background contrast artificially enhanced) and code fragment.
Image

Code: Select all

/BackgroundTextsGlassesPaintCode
{
	5 dict begin  clip  newpath
	/BackgroundTextsAngleConstant 3 def

	TypeOfPagesBeingRendered /Glasses eq
	{
		31 32 div setgray  % though to make the extra-contrast bitmap, 11 12 div setgray
		0  2  359.99 BackgroundTextsAngleConstant div floor cvi
		{
			% By luck, the top-left and bottom-left corners of the 'R' are white. If this weren't so, extra handling would have been needed.
			0.5 add BackgroundTextsAngleConstant mul /a exch def
			/aTan a cos dup 0 ne {a sin exch div} {pop Infinity} ifelse def
			/x PageWidth  MgnL MgnR add sub 2 div  a 90 gt a 270 lt and {neg} if  def
			/y PageHeight MgnB MgnT add sub        a 180 gt {neg} if  def
			x aTan mul dup abs  y abs  le {/y exch} {pop /x y aTan div} ifelse  def
			PageWidth  MgnL MgnR sub add 2 div dup  y 0 gt {MgnB} {PageHeight MgnT sub} ifelse  moveto
			x add
			y 0 gt {MgnB y add} {PageHeight MgnT y sub sub} ifelse
			lineto
			
			/x PageWidth  MgnL MgnR add sub 2 div  a 90 gt a 270 lt and {neg} if  def
			/y PageHeight MgnB MgnT add sub        a 180 gt {neg} if  def
			/a a BackgroundTextsAngleConstant add def
			/aTan a cos dup 0 ne {a sin exch div} {pop Infinity} ifelse def
			x aTan mul dup abs  y abs  le {/y exch} {pop /x y aTan div} ifelse  def
			PageWidth  MgnL MgnR sub add 2 div  x add
			y 0 gt {MgnB y add} {PageHeight MgnT y sub sub} ifelse
			lineto closepath
		} for
		eofill
	} if  % TypeOfPagesBeingRendered /Glasses eq

	0.06 setlinewidth  0 setgray  1 setlinecap
	0  1  359.99 BackgroundTextsAngleConstant div floor cvi
	{
		0.5 add BackgroundTextsAngleConstant mul /a exch def
		/aTan a cos dup 0 ne {a sin exch div} {pop Infinity} ifelse def
		/x PageWidth  MgnL MgnR add sub 2 div  a 90 gt a 270 lt and {neg} if  def
		/y PageHeight MgnB MgnT add sub        a 180 gt {neg} if  def
		x aTan mul dup abs  y abs  le {/y exch} {pop /x y aTan div} ifelse  def
		PageWidth  MgnL MgnR sub add 2 div dup  y 0 gt {MgnB} {PageHeight MgnT sub} ifelse  moveto
		x add
		y 0 gt {MgnB y add} {PageHeight MgnT y sub sub} ifelse
		lineto stroke
	} for

	end
} def  % /BackgroundTextsGlassesPaintCode
User avatar
jdaw1
Cockburn 1851
Posts: 23568
Joined: 15:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Wednesday 29th October 2014, at and to test Davy’s at Plantation Place, a small vertical of Croft (review, planning and arrangements, placemats).

Image Image Image

Code: Select all

/JDAW [(JDA) {-0.06 Kern} (W)] def
/RAYC [(RA) {-0.06 Kern} (Y) {-0.02 Kern} (C)] def

/Croft (Croft) def
/CroftRoeda [{TypeOfPagesBeingRendered dup /Glasses ne exch /TastingNotes ne and{ (Croft Roeda)} {(Croft Quinta da Roeda)} ifelse}] def  % /Multiple /Glasses /TastingNotes /PlaceName /PrePour /StickyLabels /VoteRecorder /DecantingNotes
/LBV [(L.B.) {-0.12 Kern} (V) {-0.12 Kern} (.)] def

/Century19 [(1) {-0.16 Kern} (9)] def

/Circlearrays [
	[ [//Century19 {-0.04 Kern}  (2) {-0.06 Kern}     (7)]   JDAW    Croft ]
	[ [//Century19 {-0.04 Kern}  (5) {-0.04 Kern}     (0)]   (IDJ)   Croft ]
	[ [//Century19 {-0.04 Kern}  (5) {-0.06 Kern} 1 index]   (THRA)   Croft ]
	[ [//Century19 []            (6) {-0.04 Kern}     (3)]   (THRA for MPM)   Croft ]
	[ [//Century19 {-0.04 Kern}  (7) {-0.02 Kern}     (0)]   (THRA for DRT)   Croft ]
	[ [//Century19 {-0.04 Kern}  (7) {-0.04 Kern}     (5)]   (RLC)   Croft ]
	[ [//Century19 {-0.04 Kern}  (7) {-0.04 Kern}     (7)]   (RLC)   Croft ]
	[ [//Century19 {-0.04 Kern}  (8) {-0.06 Kern}     (5)]   (BMHR)   Croft ]
	[ /dagger ]
	[ /daggerdbl ]
	[ [(20)        {-0.04 Kern}  (0) {-0.04 Kern}     (2)]   LBV  JDAW   Croft ]
	[ [(20)        {-0.04 Kern}  (04)                    ]   LBV  JDAW   Croft ]
] def

/TitlesTastingNotes [ Circlearrays {dup length 1 ge {dup length 2 ge {dup 1 get LBV eq} {false} ifelse {[exch 0 get ( ) LBV]} {0 get} ifelse} {pop ()} ifelse} forall ] def
/Titles [ TitlesTastingNotes {dup type /nametype ne {dup dup length 1 sub get LBV eq {0 get} if dup length 2 sub 2 exch getinterval} if} forall ] def

/Overtitles [ Circlearrays {dup length 4 ge {1 get} {pop ()} ifelse} forall ] def
/Abovetitles [ Circlearrays {dup length 2 ge {dup length 1 sub get dup Croft ne {pop ()} if} {pop ()} ifelse} forall] def
/Belowtitles  [ Circlearrays {dup length 2 ge {dup length 1 sub get dup Croft eq {pop ()} if} {pop ()} ifelse} forall] def

/SubtitlesTastingNotes [ Circlearrays {dup length 2 ge {dup length 1 sub get} {pop ()} ifelse} forall ] def
/SubtitlesVoteRecorder [ Circlearrays {dup length 2 ge {dup 1 get LBV eq {pop LBV} {dup length 1 sub get} ifelse} {pop ()} ifelse} forall ] def
/TitlesCorkDisplay TitlesTastingNotes def
/SubtitlesCorkDisplay SubtitlesTastingNotes def

/Names [
	JDAW  (DRT)  (MPM)  (THRA)  (IDJ)  (RLC)  (BMHR)
%	RAYC (AHB)
	()
] def

/HeadersLeft [
	0  [(Davy) /quoteright (s at Plantation Place: a trial)]
] def  % /HeadersLeft
/HeadersCenter [
	0  [(Croft)]
] def  % /HeadersCenter
/HeadersRight [
	0  [(W) {-0.04 Kern} (ednesday 29) {SuperscriptOn} (th) {SuperscriptOff} ( October 2014)]
] def  % /HeadersRight
/FootersLeft [
	0  [(www) {-0.092 Kern} (.Davy.co.uk/plantationplace)]
] def
/FootersCenter [
	0  [(www) {-0.092 Kern} (.CroftPort.com)]
] def
/FootersRight [
	0  (ThePortForum.com, jdawiseman.com)
] def

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.davy.co.uk/plantationplace/)  [(Davy) /quoteright (s at Plantation Place)]
	(http://www.streetmap.co.uk/map.srf?x=533205&y=180840&z=106&pc=EC3R+7BD)  (EC3R 7BD, streetmap.co.uk)
	(https://maps.google.co.uk/maps?z=20&t=k&layer=c&cbll=51.5108,-0.0815&cbp=11,260,,0,0)  (EC3R 7BD, maps.google.co.uk)
	(http://www.bing.com/maps/default.aspx?where1=EC3R+7BD&cp=51.5108~-0.0815)  (EC3R 7BD, bing.com)
	(http://www.croftport.com/en/)  (Croft)
	(http://www.theportforum.com/viewtopic.php?t=9001&view=unread#unread)   (Planning thread on ThePortForum.com)
	(http://www.theportforum.com/viewtopic.php?t=9133&view=unread#unread)   (Review thread on ThePortForum.com)
	(http://www.jdawiseman.com/2014/20141029_croft.pdf)   (Latest version this placemat)
	(http://www.theportforum.com/viewtopic.php?p=83315#p83315)  [/ellipsis ( and parameters by which made)]
] def

/PlaceNames false def

/Rotate180AlternateNames true def

/TitlesFont     /LucidaSans-Demi def
/CircletextFont /LucidaSans def
/NamesFont      /LucidaSans-Italic def
/HeaderFont     NamesFont def

/ColourSchemeTitles /Black def  % /MidGrey /Black
/ColourSchemeOvertitles /Black def  % /MidGrey /Black
/TitleMaxHeightProportionInnerRadius 1.5 def
/AbovetitleMaxFontSizeProportionTitles 0.122969 def  % copied from http://www.jdawiseman.com/2012/20120116_croft.pdf
/OvertitleMaxFontSizeProportionTitles 0.122969 def

/DecanterLabelsMaxSmallerDimension 51 4 sub 360 mul 127 div def  % JDAW's TRG business card
/DecanterLabelsMaxLargerDimension  89 4 sub 360 mul 127 div def

/InlineAbovetitles false def
/InlineBelowtitles false def
/InlineTitlesMaxNumberContours {Overtitles WithinTitles get NonEmptyCompoundObject {1} {2} ifelse} def
/InlineTitlesBlackWidth 0.96 def  % Black isn't always black. Sometimes it's grey.

/TastingNotesCirclesBehind false def

/VoteRecorderTotalColTitle [(T) {-0.092 Kern} (otal)] def
Software version: 14:30 Wednesday 29th October 2014
User avatar
jdaw1
Cockburn 1851
Posts: 23568
Joined: 15:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Monday 2nd March 2015, at The Boot & Flogger, non-Symington non-TFP ≤1994 Ports, in the presence of Henry Shotton (review, planning and arrangements, placemats).

Image Image Image Image

Code: Select all

/PeopleData [
	[  (HJS)   [(Henr) {+0.06 Kern} (y S.)] ]  % Henry Shotton
	[  (DJ)  [(Daniel J) {-0.03 Kern} (.)] ]
	[  (TC)   [(T) {-0.12 Kern} (ony C.)] ]
	[  (IDJ)  [(Ian J) {-0.03 Kern} (.)] ]
	[  [(C) {+0.08 Kern} (PR)]  (Charles R.) ]
	[  (DRT)  [(Derek T) {-0.12 Kern} (.)] ]
	[  (AHB)  [(Alex B.)] ]
	[  (MPM)  (Mike M.) ]
	[  [(JDAW)]  [(Julian W) {-0.12 Kern} (.)] ]
	[  (JWEW)  [(Jon W) {-0.12 Kern} (.)] ]
	[  (CMAG)  (Christopher G.) ]
	[  (BMHR)  (Ben R.) ]
] def

/Names [ PeopleData {1 get} forall () ] def
/NamesVoteRecorder [ Names {dup (Christopher G.) eq {pop (Chris. G.)} if} forall ]  def

/Circlearrays [
	PeopleData {[ exch 0 get ]} forall
	[ (+) ] 13 1 roll
	[ (++) ] 9 1 roll
	[ (+++) ] 5 1 roll
] def

/Titles Circlearrays def

/Belowtitles [ Circlearrays length {()} repeat ] def

/HeadersLeft [
	0  [(Boot & Flogger, Monday 2) {SuperscriptOn} (nd) {SuperscriptOff} ( March 2015)]
] def  % /HeadersLeft
/HeadersCenter [
	0  [(Henry Shotton, and blind non-SFE non-TFP Port)]
] def  % /HeadersCenter
/HeadersRight [
	0
	[
		(www) {-0.06 Kern} (.) {-0.06 Kern} (ThePortForum.com, )
		(www) {-0.06 Kern} (.jdawiseman.com)
	]
] def  % /HeadersRight

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=9645&view=unread#unread)   (Review thread on ThePortForum.com)
	(http://www.theportforum.com/viewtopic.php?t=8994&view=unread#unread)   (Planning thread on ThePortForum.com)
	(http://www.jdawiseman.com/2015/20150302_shotton.pdf)   (Latest version this placemat)
	(http://www.theportforum.com/viewtopic.php?p=89679#p89679)   [/ellipsis ( and parameters by which made)]
	(http://www.symington.com/)  (Symington Family Estates)
	(http://www.davy.co.uk/bootandflogger/)  (Boot & Flogger)
	(http://www.streetmap.co.uk/map.srf?x=532409&y=180083&z=106&pc=SE1+1TA)  (SE1 1TA, streetmap.co.uk)
	(https://maps.google.co.uk/maps?z=20&t=k&layer=c&cbll=51.50428,-0.0935&cbp=11,260,,0,0)  (SE1 1TA, maps.google.co.uk)
	(http://www.bing.com/maps/default.aspx?where1=SE1+1TA&cp=51.50428~-0.0935)  (SE1 1TA, bing.com)
] def

/PlaceNames true def

/VoteRecorderTopTexts [  % Must be same length as GlassesClusteredOnVoteRecorders, each sub-array containing some number of TopTexts
	[ (What is it?) ]
	[ (Wine Of The Night?)  /questiondown ]
] def  % Must be same length as GlassesClusteredOnVoteRecorders
/VoteRecorderShowTotalRow [ true false ] def  % Must be same length as GlassesClusteredOnVoteRecorders
/VoteRecorderTotalColTitle [(T) {-0.12 Kern} (otal)] def
/VoteRecorderTotalRowTitle [(T) {-0.06 Kern} (otal)] def

/VoteRecorderCrossedBox {VoteRecorderShowTotalRow VoteRecorderSheetNum GetEU dup {pop 
	false PeopleData {dup 0 get Titles WithinTitles get 0 get eq exch 1 get Names NameNum get eq and {pop true exit} if} forall
} if} def


/TitlesFont     /Harrington def
/CircletextFont TitlesFont def
/NamesFont      /LucidaSans def
/HeaderFont     NamesFont def
/FontSizesRatioTitlesMin 9999 def

/InlineTitles false def

/PrePourReverseOrder false def
Software version: 21:00 Monday 23rd February 2015


• The blind design is new, with bottles being initials, and people being in the form “Julian W.”. /Harrington was a good font choice for the initials.

• Data driven by array of arrays called PeopleData.

• Some intricacy in VoteRecorderCrossedBox.

• Otherwise vanilla.
User avatar
jdaw1
Cockburn 1851
Posts: 23568
Joined: 15:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Thursday 26th March 2015, at The Boot & Flogger, Blind With A Clue (review, planning and arrangements, placemats).

Image Image

Code: Select all

/Circlearrays [
	[ /dagger ]
	[ [(Charles Redshaw) {-0.09 Kern} (, One)]   (CPR1)  ]
	[ [(Charles Redshaw) {-0.09 Kern} (, T) {-0.09 Kern} (wo)]   (CPR2)  ]
	[ [(J) {-0.03 Kern} (ulian Wiseman)]         (JDAW) ]
	[ [(T) {-0.09 Kern} (om Archer)]             (THRA) ]
] def

/Titles [
	/dagger
	(CPR1)
	(CPR2)
	[(J) {-0.02 Kern} (D) {-0.03 Kern} (A) {-0.09 Kern} (W)]
	[(THR) {+0.02 Kern} (A)]
] def

/Belowtitles [ Circlearrays length {()} repeat ] def

/Names [
	Circlearrays 1 get 0 get 0 get
	3  1 Circlearrays length 1 sub {Circlearrays exch get 0 get} for
	()
] def


/HeadersLeft [
	0  [(Boot & Flogger, Thursday 26) {SuperscriptOn} (th) {SuperscriptOff} ( March 2015)]
] def  % /HeadersLeft
/HeadersCenter [
	0  [(Blind with a clue)]
] def  % /HeadersCenter

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=9662&view=unread#unread)   (Planning thread on ThePortForum.com)
	(http://www.theportforum.com/viewtopic.php?t=9755&view=unread#unread)   (Review thread on ThePortForum.com)
	(http://www.jdawiseman.com/2015/20150326_blind_with_clue.pdf)   (Latest version this placemat)
	(http://www.theportforum.com/viewtopic.php?p=90460#p90460)  [/ellipsis (and parameters by which made)]
	(http://www.davy.co.uk/bootandflogger/)  (Boot & Flogger)
	(http://www.streetmap.co.uk/map.srf?x=532409&y=180083&z=106&pc=SE1+1TA)  (SE1 1TA, streetmap.co.uk)
	(https://maps.google.co.uk/maps?z=20&t=k&layer=c&cbll=51.50428,-0.0935&cbp=11,260,,0,0)  (SE1 1TA, maps.google.co.uk)
	(http://www.bing.com/maps/default.aspx?where1=SE1+1TA&cp=51.50428~-0.0935)  (SE1 1TA, bing.com)
] def

/DecanterLabelsNumCopies 0 def
/CorkDisplay false def

/VoteRecorderTopTexts [  % Must be same length as GlassesClusteredOnVoteRecorders, each sub-array containing some number of TopTexts
	[ (What is it?) ]
	[ (Wine Of The Night?)  /questiondown ]
] def  % Must be same length as GlassesClusteredOnVoteRecorders
/VoteRecorderShowTotalRow [ true false ] def  % Must be same length as GlassesClusteredOnVoteRecorders
/VoteRecorderTotalColTitle [(T) {-0.09 Kern} (otal)] def
/VoteRecorderCrossedBox {VoteRecorderShowTotalRow VoteRecorderSheetNum GetEU dup {
	pop
	Circlearrays WithinTitles get length 2 ge ThisName length 2 ge and dup
	{
		pop
		Circlearrays WithinTitles get 0 get ASCIIfy 0 6 getinterval ThisName ASCIIfy 0 6 getinterval eq
	} if
} if} def


/TitlesFont     /TrebuchetMS-Bold def  % sans-serif, pleasingly weighted, with bright negative spaces
/CircletextFont /Garamond def

/CircletextMaxFontSizeProportionRadius 0.75 def
/CircletextMaxFontSizeAbsolute 96 def
/CircletextsMinNumSpacesBetween 2 def
/CircletextsMinCopies 2 def
/CircletextsMaxCopies {dup 16 gt {dup 4 div cvi 4 mul} {65535} ifelse} def
Software version: 21:00 Monday 23rd February 2015

• In populating the list of placemats with some of the earliest examples, it was noticed that the very earliest examples, made by hand in Illustrator, had much larger ‘Circlearrays’ than has recently been usual. Which inspired here setting them to a giant size which was trimmed by /CircletextsMinCopies 2 def.
User avatar
jdaw1
Cockburn 1851
Posts: 23568
Joined: 15:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Tuesday 5th May 2015, at The Boot & Flogger, Bicentenary Fonseca (review, planning and arrangements, placemats).

Image Image Image Image

Code: Select all

/Fonseca (Fonseca) def
/JDAW [(JDA) {-0.06 Kern} (W)] def
/Waterloo [(W) {-0.06 Kern} (aterloo)] def
/Bicentenary (Bicentenary) def

/Circlearrays [
	[  (1948)  Fonseca  (AHB)  ]
	[  (1955)  Fonseca  (IDJ)  ]
	[  (1960)  Fonseca  (IDJ)  ]
	[  (1963)  Fonseca  (TC)  ]
	[  (1966)  Fonseca  (IDJ)  ]
	[  (1970)  Fonseca  (RLC)  ]
	[  (1975)  Fonseca  (TC)  ]
	[  (1977)  Fonseca  (PW)  ]
	[  (1980)  Fonseca  (RLC)  ]
	[  (1983)  Fonseca  (CPR)  ]
	[  (1985)  Fonseca  (Single)  (DRL)  ]
	[  (1985)  Fonseca  (Magnum)  JDAW  ]
	[  (1992)  Fonseca  (MPM) ]
	[  (1994)  Fonseca  (CPR) ]
	[ /dagger ]
	[  Waterloo  Fonseca  (MPM)  ]
	[  Bicentenary  (Crusted)  Fonseca  (MPM)  ]
] def  % /Circlearrays

/KerningConstants [
	-0.040  % 48
	-0.053  % 55
	-0.064  % 60
	-0.043  % 63
	-0.058  % 66
	-0.079  % 70
	-0.058  % 75
	-0.015  % 77
	-0.078  % 80
	-0.057  % 83
	-0.064  % 85
	-0.064  % 85
	-0.062  % 92
	-0.050  % 94
] def  % /KerningConstants

/TitlesTastingNotes [ Circlearrays {0 get} forall ] def
/Titles [
	0  1  Circlearrays length 4 sub
	{
		[ exch dup Circlearrays exch get 0 get dup 2 1 getinterval exch 3 1 getinterval  3 -1 roll KerningConstants exch get [ exch /Kern cvx ] cvx exch ]
	} for
	Circlearrays dup length 3 sub 3 getinterval {0 get} forall
] def
/TitlesVoteRecorder [ TitlesTastingNotes aload pop   pop pop  [(W) /quoteright (loo)]   (CC)  ] def
% /Overtitles [ Circlearrays {dup 0 get (1970) eq {2 get} {pop ()} ifelse} forall ] def
/Overtitles [ Circlearrays length {()} repeat ] def
/Belowtitles [ Circlearrays {dup 0 get (1985) eq {2 get} {pop ()} ifelse} forall ] def
/Abovetitles [ Circlearrays {dup length 2 ge {1 get dup (Crusted) ne {pop ()} if} {pop ()} ifelse} forall ] def
/SubtitlesTastingNotes [ 0 1 Belowtitles length 1 sub {dup Belowtitles exch get dup length 0 eq {pop Abovetitles exch get} {exch pop} ifelse} for ] def

/Names [  (MPM)  (AHB)  (DJ)  JDAW  (PW)  (IDJ)  (JWEW)  (CPR)  (DRL)  (TC)  (RLC)  (BMHR)  (THRA)  ()  ] def

/PaperType Circlearrays length 14 le {/A3} {/A4} ifelse def  % /A4 /A3 /USL = 8.5"x11", /USLegal = 8.5"x14", /USL2 = 11"x17", [SmallerPts LargerPts]
/Orientation PaperType /A3 eq {/Landscape} {/Portrait} ifelse def  % /Landscape /Portrait

/HeadersLeft [
	0  [(The Red Room, The Boot & Flogger, Tuesday 5) {SuperscriptOn} (th) {SuperscriptOff} ( May 2015)]
] def  % /HeadersLeft
/HeadersCenter [
	0  [ Fonseca /quoteright (s Bicentenary)]
] def  % /HeadersCenter
/HeadersRight [
	0
	[
		(www) {-0.092 Kern} (.Fonseca.pt, )
		(www) {-0.092 Kern} (.) {-0.092 Kern} (ThePortForum.com, )
		(www) {-0.092 Kern} (.jdawiseman.com)
	]
] def  % /HeadersRight

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=9849&view=unread#unread)   (Review thread on ThePortForum.com)
	(http://www.theportforum.com/viewtopic.php?t=9674&view=unread#unread)   (Planning thread on ThePortForum.com)
	(http://www.jdawiseman.com/2015/20150505_fonseca.pdf)   (Latest version this placemat)
	(http://www.theportforum.com/viewtopic.php?p=91280#p91280)  [/ellipsis (and parameters by which made)]
	(http://www.fonseca.pt/)  (Fonseca.pt)
	(http://www.davy.co.uk/bootandflogger/)  (Boot & Flogger)
	(http://www.streetmap.co.uk/map.srf?x=532409&y=180083&z=106&pc=SE1+1TA)  (SE1 1TA, streetmap.co.uk)
	(https://maps.google.co.uk/maps?z=20&t=k&layer=c&cbll=51.50428,-0.0935&cbp=11,260,,0,0)  (SE1 1TA, maps.google.co.uk)
	(http://www.bing.com/maps/default.aspx?where1=SE1+1TA&cp=51.50428~-0.0935)  (SE1 1TA, bing.com)
] def

/GlassesOnSheets [
	PaperType /A3 eq
	{
		[ 0 1 Circlearrays length 1 sub {} for ]
	}
	{
		[ 0 1 5 {} for ]
		[ 6 1 11 {} for ]
		[ 12 1 Circlearrays length 1 sub {} for ]
	} ifelse  % /A3
] def  % /GlassesOnSheets
/GlassesOnSheetsMaxPerTNSheet  7  def  % 8 gives per page leaves just enough writing space.
/GlassesOnTastingNotePages
	PaperType /A3 eq
	{[
		<< /p Titles length GlassesOnSheetsMaxPerTNSheet div ceiling cvi  /g 0 >> begin 0 1 p 1 sub {[exch p sub g Titles length sub exch div floor cvi {g /g g 1 add def} repeat]} for end
	]} {GlassesOnSheets} ifelse  % /A3
def  % /GlassesOnTastingNotePages

/PermittedPackingStyles [
	[ /Diamonds               /OnlyIfOrientation /Portrait  /PackingNestingColumnMajor false ]
	[ /DiamondsAndRectangular /OnlyIfOrientation /Portrait  /PackingNestingColumnMajor false ]
	[ /RectangularDislocation /OnlyIfOrientation /Portrait  /PackingNestingColumnMajor false ]

	[ /Diamonds               /OnlyIfOrientation /Landscape /PackingNestingColumnMajor true  ]
	[ /RectangularDislocation /OnlyIfOrientation /Landscape /PackingNestingColumnMajor true  ]
	[ /DiamondsAndRectangular /OnlyIfOrientation /Landscape /PackingNestingColumnMajor true  ]
] def  % /PermittedPackingStyles

/TitlesFont     /GilliusADF-BoldCond def  % /AlpsCondensedBold /Geo112ThinBold
/CircletextFont /Garamond def

/ColourSchemeTitles /Black def  % /MidGrey /Black
/ColourSchemeOvertitles /Black def  % /MidGrey /Black

/TitleMaxHeightProportionInnerRadius 2 def
/FontSizesSetsAboveBelowOver [ 0 1 0 ] def  % Array of length 3, representing which of Abovetitles, Belowtitles, and Overtitles are considered together for font-size purposes
/FontSizesRatioTitlesMin 2 def
/FontSizesRatioAboveBelowOverMin 99 def
/TitleMinHeightForBelowtitleProportionInnerRadius 0.15 def
/VerticalMiddlingStringTitles (02356789) def  % Benchmark characters

/InlineTitles {Titles WithinTitles get LengthCompoundObject 4 le} def
/InlineAbovetitles /InlineTitles load def
/InlineBelowtitles /InlineTitles load def
/InlineTitlesMaxNumberContours {Belowtitles WithinTitles get (Magnum) eq {2} {1} ifelse} def
/InlineBelowtitlesBlackWidth {1.44 2 div} def  % Black isn't always black. Sometimes it's grey.
/InlineBelowtitlesWhiteWidth {1.44} def  % White isn't always white. Sometimes it's grey.

/Rays {PaperType /A3 eq} def
/RaysLinesPerGlass 40 def

/TastingNotesCirclesBehindFitAndCentreInRow false def
Software version: 12:30 Wednesday 29th April 2015

• The number of glasses flitted back and forth from ≤14 to ≥15. The former, ≤14, fits nicely on one A3. The latter doesn’t. So the parameters acquired conditionality to flit for me. Hence the complexity of GlassesOnSheets, of GlassesOnTastingNotePages, and of Rays. In PermittedPackingStyles the conditionality was implemented with sub-parameters [ … /OnlyIfOrientation /Portrait ].

• Much faffing with TitlesTastingNotes, Titles (into which KerningConstants inserted), and TitlesVoteRecorder.

• Because, eventually, there were too many glasses for A3, Rays was false. But for a while it was true, and a question about setstrokeadjust/currentstrokeadjust was asked on comp.lang.postscript.

InlineTitlesMaxNumberContours different for the magnum.

• Rare change from defaults for TitleMinHeightForBelowtitleProportionInnerRadius, for FontSizesSetsAboveBelowOver, and for TastingNotesCirclesBehindFitAndCentreInRow.
User avatar
jdaw1
Cockburn 1851
Posts: 23568
Joined: 15:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Saturday 9th May 2015, at The RAF Club, 1945s (announcement, placemats, review of the evening as a whole).

Image Image Image Image Image

Code: Select all

/JDAW [(JDA) {-0.05 Kern} (W)] def
/RAYC [(RA) {-0.05 Kern} (YC)] def
/Vintage (1945) def

/PortData [
	[ (THRA)  (RO)  (Royal Oporto) ]
	[ (GW)    (RV)  [(Rebello V) {-0.10 Kern} (alente)] ]
	[ (CP)    [(F) {-0.06 Kern} (d)]  (Feuerheerd)   ]
	[ (WPS)   (Rz)  [(Roz) /egrave (s)]   ]
	[ (DRT)   [(M) {TypeOfPagesBeingRendered /VoteRecorder ne {0 CurrentFontSize 0.077 mul rmoveto} if} (g)]  (Morgan)      ]
	[ (DRT)   (EV)  [(Eira V) {-0.06 Kern} (elha)]  ]
	[ (GW)    (N)   (Quinta do Noval) ]
	[ (AP)    (Cn)  (Constantino)  ]
	[ (THRA)  (O)   [(Of) /fl (ey)] ]
	[ (CP)    [(F) {-0.04 Kern} (r)]  (Ferreira)     ]
	[ (AP)    (Ck)  (Cockburn)     ]
	[ (GTDS)  (S)   (Sandeman)  ]
	[ [(V) {-0.04 Kern} (v) {+0.04 Kern} (C)]   (RP)  (Ramos Pinto) ]
	[ (PW)    (W)   [(W) {-0.06 Kern} (arre)]   ]
	[ JDAW    (D)   (Dow)          ]
	[ (WG)    (G)   (Graham)       ]
	[ (AHB)   (F)   (Fonseca)      ]
	[ (WPS)   (K)   (Kopke)       ]
	[ RAYC    (Ni)  (Niepoort)    ]
	[ (AHB)   (T)   [(T) {-0.06 Kern} (aylor)] ]
	[ (DJ)    (Cr)  (Croft)         ]
] def  % /PortData

/Circlearrays [
	PortData {[ exch dup 2 get exch 0 get Vintage exch Vintage ]} forall
] def  % /Circlearrays

/Titles [ PortData {1 get} forall ] def
/TitlesTastingNotes [ PortData {2 get} forall ] def
/Belowtitles [ Circlearrays length {()} repeat ] def

/Names [
	(Alex B.)  % Bridgeman
	[(Axel P) {-0.12 Kern} (.)]
	[(Christopher P) {-0.12 Kern} (.)]
	(Daniel J.)
	(Daniel N.)
	[(Derek T) {-0.12 Kern} (.)]
	[(Giles W) {-0.12 Kern} (.)]
	[(Julian W) {-0.12 Kern} (.)]
	[(Phil W) {-0.12 Kern} (.)]
	(Rob C.)
	[(T) {-0.06 Kern} (om A.)]
	[(Viola v) {-0.092 Kern} (. C.)]
	[(W) {-0.06 Kern} (olfgang G.)]
	[(W) {-0.06 Kern} (olfgang S.)]
	()
] def

/ThePortForumIconPlacement /None def  % /None
/ThePortForumIconTastingNotePlacement /None def  % /None

% Headers... are arrays of even length, alternately an item of PageOrdering, and the relevant compound string.
/HeadersLeft [
	0  [(The RAF Club, Saturday 9) {SuperscriptOn} (th) {SuperscriptOff} ( May 2015)]
] def  % /HeadersLeft
/HeadersCenter [
	0  [(Nineteen Forty-Five)]
] def  % /HeadersCenter
/HeadersRight [
	0
	[
		(www) {-0.07 Kern} (.) {-0.14 Kern} (W) {-0.092 Kern} (orldOf) {+0.12 Kern} (Port.de, )
		(www) {-0.092 Kern} (.jdawiseman.com)
	]
] def  % /HeadersRight
/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=9816&view=unread#unread)  (Announcement thread on ThePortForum.com)
	(http://www.theportforum.com/viewtopic.php?t=9912&view=unread#unread)  (Review thread on ThePortForum.com)
	(http://www.jdawiseman.com/2015/20150509_1945.pdf)  (Latest version this placemat)
	(http://www.theportforum.com/viewtopic.php?p=91375#p91375)  [/ellipsis (and parameters by which made)]
	(http://www.worldofport.de/index%20EN.html)  (WorldOfPort.de)
	(https://www.rafclub.org.uk/)  (The Royal Air Force Club)
	(http://www.streetmap.co.uk/map.srf?x=528568&y=179998&z=106&pc=W1J+7PY)  (W1J 7PY, streetmap.co.uk)
	(https://maps.google.co.uk/maps?z=20&t=k&layer=c&cbll=51.5043,-0.1487&cbp=11,330,,0,0)  (W1J 7PY, maps.google.co.uk)
	(http://www.bing.com/maps/default.aspx?where1=W1J+7PY&cp=51.5043~-0.1487)  (W1J 7PY, bing.com)
] def

/VoteRecorderTopTexts [
	[ (Wine Of The Flight?)  (Wine Of The Night?)  /questiondown ]
] def
/VoteRecorderTotalColTitle [(T) {-0.06 Kern} (otal)] def

/BackgroundTextsGlassesFont /TrebuchetMS-Bold def  % sans-serif, pleasingly weighted, with bright negative spaces
/CircletextFont /Garamond def
/TitlesFont     {TypeOfPagesBeingRendered dup /TastingNotes eq exch /CorkDisplay eq or {CircletextFont} {BackgroundTextsGlassesFont} ifelse} def
/TitleMaxHeightProportionInnerRadius 2 def

/DecanterLabelsMaxSmallerDimension 53.98 2 sub 360 mul 127 div def  % Size of business card in points, ISO 7810 ID1 being 53.98mm x 85.60mm wide.
/DecanterLabelsMaxLargerDimension  85.60 2 sub 360 mul 127 div def

/BackgroundTextsGlasses true def
/BackgroundTextsGlassesTexts [ [(4) {-0.15 Kern} (5)] dup dup dup ] def

/PrePourReverseOrder false def
Software version: 22:30 Wednesday 6th May 2015.

• Because TitlesTastingNotes held the long names (e.g. “Rozès” rather than “Rz”), TitlesFont was the CircletextFont on tasting-note and cork-display pages.

/BackgroundTextsGlasses true def

• The ‘g’ in Morgan’s “Mg” was slightly superscripted, by 0.077 × the font size, to enlarge the Titles. The constant was chosen by interval bisection, done manually. Without this the g would have descended by so much that it would have been the binding constraint on the size of the Titles.
User avatar
jdaw1
Cockburn 1851
Posts: 23568
Joined: 15:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Sunday 17th May 2015, at Left Bank New York, blind and atonal (planning and arrangements, placemats).

Image Image Image

Code: Select all

/Names [
	(Daniel)
	(Josh)
	(Dave)
	(Miguel)
	(Jeff)
	(Rachel)
	(Conor)
	()
] def

/Circlearrays [
	Names {[ exch ]} forall   pop
	[ /dagger ]
	[ /daggerdbl ]
	[ (#) ]
] def

/Titles Circlearrays def

/Belowtitles [ Circlearrays length {()} repeat ] def

/PaperType /USL def
/TastingNotesPaperType /USL def

/HeadersLeft [
	0  [(Left Bank NY 10014-2311, Sunday 17) {SuperscriptOn} (th) {SuperscriptOff} ( May 2015)]
] def  % /HeadersLeft
/HeadersCenter [
	0  [(Bring a bottle, wrapped in foil)]
] def  % /HeadersCenter
/HeadersRight [
	0
	[
		(www) {-0.092 Kern} (.) {-0.092 Kern} (ThePortForum.com, )
		(www) {-0.092 Kern} (.jdawiseman.com)
	]
] def  % /HeadersRight

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=9516&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2015/20150517_NewYork_blind.pdf)   (Latest version this placemat)
	(http://www.theportforum.com/viewtopic.php?p=91722#p91722)  [/ellipsis (and parameters by which made)]
	(http://www.leftbanknewyork.com/)  (Left Bank New York)
	(https://www.google.com/maps/place/117+Perry+St,+New+York,+NY+10014,+USA/@40.7351272,-74.0067308,17z/)  (117 Perry Street, maps.google.com)
] def

/TitlesFont     /GillSans def
/CircletextFont /Harrington def

/VoteRecorderTopTexts [  % Must be same length as GlassesClusteredOnVoteRecorders, each sub-array containing some number of TopTexts
	[ (What is it?) ]
	[ (Wine Of The Night?)  /questiondown ]
] def  % Must be same length as GlassesClusteredOnVoteRecorders
/VoteRecorderShowTotalRow [ true false ] def  % Must be same length as GlassesClusteredOnVoteRecorders
Software version: 18:30 Monday 11th May 2015.

• All vanilla.
User avatar
jdaw1
Cockburn 1851
Posts: 23568
Joined: 15:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Wednesday 17th June 2015, at Davy’s Woolgate, the Sweet-Spot Tasting tasting (review, planning and arrangements, placemats).

Image Image Image Image Image Image Image

Code: Select all

/NumberRomanUpper [
	(I) (II) (III) (IV) (V) (VI) (VII) (VIII) (IX) (X)
	(XI) (XII) (XIII) (XIV) (XV) (XVI) (XVII) (XVIII) (XIX) (XX)
	(XXI) (XXII) (XXIII) (XXIV) (XXV) (XXVI) (XXVII) (XXVIII) (XXIX) (XXX)
] def  % /NumberRomanUpper

% Kernings calculated by www.jdawiseman.com/papers/placemat/kernings_calculator.ps
% Font = AvenirNextCondensed-DemiBold; KernChar = "I"; GapProportionKernChar = 0.25; Forbid +ve kern
/NumberRomanUpperKernII {-0.114 Kern} def
/NumberRomanUpperKernIV {-0.0450938 Kern} def
/NumberRomanUpperKernVI {-0.0448675 Kern} def
/NumberRomanUpperKernIX {-0.0469688 Kern} def
/NumberRomanUpperKernXI {-0.04699 Kern} def
/NumberRomanUpperKernXV {} def  % {0.0219163 Kern}
/NumberRomanUpperKernXX {} def  % {0.0200414 Kern}

/NumberRomanUpperKerned
[
	NumberRomanUpper
	{
		/s exch def
		s length 1 gt
		{[
			s 0 1 getinterval
			1 1 s length 1 sub
			{
				/i exch def
				(NumberRomanUpperKern--) dup dup 20 s i 1 sub 1 getinterval putinterval 21 s i 1 getinterval putinterval cvn load
				dup length 0 eq {pop s exch length dup i exch sub exch 1 add getinterval} {s i 1 getinterval} ifelse
			} for  % i
		] dup length 1 eq {0 get} if} {s} ifelse  % s length 1 gt
	} forall
] def  % /NumberRomanUpperKerned


/NumberWordsEnglish [
	(One)
	[(T) {CurrentFontSize -0.06 mul 0 rmoveto} (wo)]
	(Three)
	[(F) {CurrentFontSize -0.06 mul 0 rmoveto} (our)]
	(Five) (Six) (Seven) (Eight) (Nine)
	[(T) {CurrentFontSize -0.06 mul 0 rmoveto} (en)]
	(Eleven)
	[(T) {CurrentFontSize -0.06 mul 0 rmoveto} (welve)]
	(Thirteen)
	[(F) {CurrentFontSize -0.03 mul 0 rmoveto} (ourteen)]
	(Fifteen) (Sixteen) (Seventeen) (Eighteen) (Nineteen)
	[(T) {CurrentFontSize -0.06 mul 0 rmoveto} (wenty)]
	[(T) {CurrentFontSize -0.06 mul 0 rmoveto} (wenty-One)]
	[(T) {CurrentFontSize -0.06 mul 0 rmoveto} (wenty-T) {CurrentFontSize -0.06 mul 0 rmoveto} (wo)]
	[(T) {CurrentFontSize -0.06 mul 0 rmoveto} (wenty-Three)]
] def  % /NumberWordsEnglish

/ShippersLong [ (Dow)  (Graham)  [(T) {-0.08 Kern} (aylor)]  [(W) {-0.08 Kern} (arre)] ] def
/ShippersShort [ (D)  (G)  (T)  (W) ] def
/Vintages [ (1966) (1970) (1977) ] def
/NumPorts ShippersLong length Vintages length mul def
/Extras [  % Circlearray Title
%	[ [(Fonseca)  (1966) ]   (F66) ]
	[ [ (Leonardo)     ]   (Leo) ]
	[ [ (Michelangelo) ]   (Mikey) ]
	[ [ (Raphael)      ]   (Raph) ]
	[ [ (Donatello)    ]   (Don) ]
] def  % /Extras


/Circlearrays [
	NumPorts        1 sub 0 exch 1 exch {[ exch dup NumberWordsEnglish exch get exch NumberRomanUpper exch get ]} for
	Extras {0 get} forall
	ShippersLong
	{
		Vintages
		{
			[ exch 2 index exch ] 	exch
		} forall
		pop
	} forall
] def  % /Circlearrays

/Titles [
	NumberRomanUpperKerned  0  NumPorts  getinterval aload pop
	Extras {1 get} forall
	ShippersShort
	{
		Vintages
		{
			[ exch 2 2 getinterval 2 index exch ] 	exch
		} forall
		pop
	} forall
] def
/TitlesTastingNotes [
	NumberRomanUpper  0  NumPorts  getinterval aload pop
	Extras {1 get} forall
	Titles dup length NumPorts sub NumPorts getinterval aload pop
] def
/TitlesVoteRecorder TitlesTastingNotes def
/Belowtitles [ Circlearrays length {()} repeat ] def

/Names [
	[(Mike M) {-0.06 Kern} (.)]
	(Charles R.)
	[(Julian W) {-0.08 Kern} (.)]
	[(Phil W) {-0.08 Kern} (.)]
	[(Ian J) {-0.06 Kern} (.)]
	(Alex B.)
	(Rupert A.)
	(Chris A.)  % Chris Appleby, Stevens Garner
	[(Stephen M) {-0.06 Kern} (.)]  % Guest of AHB
	(Rob C.)
	[(T) {-0.06 Kern} (ony A.)]
	()
] def

/HeadersLeft [
	0  [(Davy) /quoteright (s Woolgate, Wednesday 17) {SuperscriptOn} (th) {SuperscriptOff} ( June 2015)]
] def  % /HeadersLeft
/HeadersCenter [
	0  [(The Sweet-Spot Vintages)]
] def  % /HeadersCenter

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=9830&view=unread#unread)   (Planning thread on ThePortForum.com)
	(http://www.theportforum.com/viewtopic.php?t=9989&view=unread#unread)   (Review thread on ThePortForum.com)
	(http://www.jdawiseman.com/2015/20150617_sweet-spot_vintages.pdf)   (Latest version this placemat)
	(http://www.theportforum.com/viewtopic.php?p=92351#p92351)  (: parameters by which made)
	(http://www.jdawiseman.com/papers/placemat/placemats_list.html#a20150617)  (: in list of placemats)
	(http://www.planetmeehan.com/dlfiles/150617/20150617_ThePortForum_food.pdf)  (Food order)
	()  ()
	(http://www.dows-port.com/)  (Dow)
	(http://www.grahams-port.com/)  (Graham)
	(http://www.taylor.pt/en/)  (Taylor)
	(http://www.warre.com/)  (Warre)
	()  ()
	(http://www.davy.co.uk/)  [(Davy) /quoteright (s)]
	(http://www.streetmap.co.uk/map.srf?x=532560&y=181440&z=106&pc=EC2V+5HA)  (EC2V 5HA, streetmap.co.uk)
	(http://www.bing.com/maps/default.aspx?where1=EC2V+5HA&cp=51.5162~-0.09084)  (EC2V 5HA, bing.com)
	(https://maps.google.co.uk/maps?z=20&t=k&layer=c&cbll=51.51652,-0.091&cbp=11,80,,0,0)  (EC2V 5HA, maps.google.co.uk)
	(https://plus.google.com/115233829966484950403/)  [(Davy) /quoteright (s at Woolgate, plus.google.com)]	
] def

/PrePourNumCopies Names length 13 ge { {SheetNum 3 lt {1} {0} ifelse} } {0} ifelse def
/PlaceNames true def
/GlassesNumCopies {SheetNum 3 lt {1} {0} ifelse} def
/DecanterLabelsNumCopies 1 def
/StickyLabelsNumCopies { [1 1 0 2 2] SheetNum get } def
/StickyLabelsTypes [1] def  % 0 = 2x4 on A4; 1 = 5x13 on A4
/TastingNotePagesNumCopies {TastingSheetNum 3 lt {1} {0} ifelse} def

/GlassesOnSheets [
	[  0  1  2  3  4  5 ]	
	[  6  7  8  9 10 11 ]	
	[ 12 13 14 15 ]
	[ 16 17 18 19 20 21 ]
	[ 22 23 24 25 26 27 ]
] def  % /GlassesOnSheets
/GlassesOnTastingNotePages GlassesOnSheets 0 3 getinterval def

/VoteRecorderTopTexts [  % Must be same length as GlassesClusteredOnVoteRecorders, each sub-array containing some number of TopTexts
	[ (What is it?) ]
	[ (Wine Of The Night?)  /questiondown ]
] def  % Must be same length as GlassesClusteredOnVoteRecorders
/VoteRecorderShowTotalRow [ true false ] def  % Must be same length as GlassesClusteredOnVoteRecorders
/VoteRecorderTotalColTitle [(T) {-0.08 Kern} (otal)] def
/VoteRecorderTotalRowTitle [(T) {-0.04 Kern} (otal)] def
/GlassesClusteredOnVoteRecorders [ VoteRecorderTopTexts length {GlassesOnTastingNotePages 0 3 getinterval} repeat ] def  % triple-depth array, same length as VoteRecorderTopTexts and VoteRecorderShowTotalRow

/FontSizesRatioTitlesMin 1 def
/TitleMaxHeightProportionInnerRadius 1.75 def
/FontSizesTitlesNotSmallerIfTitlesNotLonger false def  % If using FontSizesTitlesEquivalences then this probably should be false. If true then font size of "W" cannot be smaller than that of "II"; and "Df" must be same as "Dl".
/FontSizesTitlesEquivalences [
	12 {0} repeat
	GlassesOnSheets 2 get length 4 sub {1} repeat
	4 {2} repeat
	counttomark Circlearrays length exch sub  {1} repeat
] def  % If using this then FontSizesTitlesNotSmallerIfTitlesNotLonger probably should be false.

/TitlesFont     /AvenirNextCondensed-DemiBold def
/CircletextFont /Garamond def

/DecanterLabelsOrientation /Landscape def  % of labels, not of paper. /Landscape /Portrait /Automatic

/StickyLabelsAvoidAcrossPages false def  % Ignored unless StickyLabelsByNameWhichReplaceCirclearrays

/GlassesClusteredOnCorkDisplay [ GlassesOnSheets 2 3 getinterval ] def
Software version: 22:45 Monday 15th June 2015.

Two layers of complexity.

• As previously used, blinding with upper-case Roman numbers, aggressively and semi-automatically kerned in the Titles, but not in the likes of TitlesTastingNotes.

• Then there are three types of item of Titles/TitlesTastingNotes/etc. There are the Roman numbers, appearing on the glasses sheets and vote recorders and decanter labels. There are the four extra circles, names after Teenage Mutant Ninj Turtles (why not?), appearing everywhere. There was to be another of these, “F66”, but plans changed — leaving vestigial lines in the code. And there are the un-blinded names of the Ports: “D70” etc, which appear on the cork display, on the decanter labels, and the sticky labels.

• Unusually, FontSizesTitlesEquivalences set explicitly, such that the Romans are all the same size, the TMNT the same, and the likes of “D70” all the same.

• Maiden usage of /DecanterLabelsOrientation /Landscape def, added to the code to facilitate over-stapling.
Locked