Parameters for the placemat software

Data, quotations, and other non-conversational posts containing reference materials.
User avatar
jdaw1
Dow 1896
Posts: 24118
Joined: 14:03 Thu 21 Jun 2007
Location: London
Contact:

Parameters for the placemat software

Post by jdaw1 »

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
Dow 1896
Posts: 24118
Joined: 14:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Monday 12th March 2012, The Bung Hole, Cynthia in London (placemats, planning and arrangements).
Image Image

Code: Select all

/Names [
	(CJ)  % Cynthia Jenson
	(DRT) (RLC) (BMHR)
	(AHB) % Arriving at 7ish
	(CMAG)  % Will see what I can do. Should be able to make it.
	[(RA) {-0.06 Kern} (Y) {-0.02 Kern} (C)]   [(JDA) {-0.04 Kern} (W)]  % late
	()
] def

/Titles [
	Names {dup length 0 eq {pop} if} forall
	(+) (&)
] def
/Circlearrays [ Titles {[exch]} forall ] def
/Belowtitles [ Titles length {()} repeat ] def

/HeaderLeftText [(The Bung Hole, Monday 12) {SuperscriptOn} (th) {SuperscriptOff} ( March 2012)] def
/HeaderCenterText [(Cynthia) /quoteright (s in Town)] def

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=5796&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/papers/2012/20120312_cynthia.pdf)   (Latest version this placemat)
	(http://www.davy.co.uk/bunghole/)  (The Bunghole)
	(http://malvedos.wordpress.com/)  (The Malvedos Blog)
] def

/TitlesFont  /MyriadPro-Bold def
/FontSizesRatioTitlesMin 999 def

/CrossHatchingTitles true def

/GlassesOnSheets [
	[ 0   1  Titles length 1 sub 2 idiv  {} for ]
	[ Titles length 1 add 2 idiv  1  Titles length 1 sub {} for ]
] def  % /GlassesOnSheets
/GlassesOnTastingNotePages GlassesOnSheets def
/GlassesClusteredOnVoteRecorders [
	GlassesOnTastingNotePages dup
] def  % triple-depth array, same length as VoteRecorderTopTexts and VoteRecorderShowTotalRow
/VoteRecorderTopTexts [
	[ (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
Software version: 20:00 Sunday 11th March 2012.
User avatar
jdaw1
Dow 1896
Posts: 24118
Joined: 14:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Thursday 22nd March 2012, The Bung Hole, JDAW’s oddments (placemats, planning and arrangements).
Image Image

Code: Select all

/Circlearrays [
	[ (Santelmo) (White) (from Lidl) ]
	[ (Santelmo) (Tawny) (from Lidl) ]
	[ (Santelmo) (10Y) (from Lidl) ]
	
	[ (Cruz) (White) (from Franprix) ]
	[ (Sao Pedro das Aguias) (10Y) (from Franprix) ]
	[ [(Roz) /egrave (s)] (Reserve) (from Franprix) ]
	
	[ (Passadouro) (1995) ]
	[ (Passadouro) (1994) ]
	[ (Niepoort) (1994) ]

	[ (&) (And) ]
	[ /plus (Plus) ]
	[ /infinity (Much) ]
] def

/Titles [
	(Sn)
	dup
	dup
	
	(Cz)
	[(SP) {-0.11 Kern} (A)]
	(Rz)

	(Pd)
	(Pd)
	(Ni)
	
	counttomark 1 Circlearrays length 1 sub {Circlearrays exch get 0 get} for
] def

/Overtitles [ Circlearrays {1 get} forall ] def

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

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

/HeaderLeftText [(The Bung Hole, Thursday 22) {SuperscriptOn} (nd) {SuperscriptOff} ( March 2012)] def
/HeaderCenterText [(Some Little Ports)] def

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=5841&view=unread#unread)   (Review thread on ThePortForum.com)
	(http://www.theportforum.com/viewtopic.php?t=5750&view=unread#unread)   (Planning thread on ThePortForum.com)
	(http://www.jdawiseman.com/papers/2012/20120322.pdf)   (Latest version this placemat)
	(http://www.davy.co.uk/bunghole/)  (The Bung Hole)
	(http://www.lidl.fr/)  (Lidl France)
	(http://www.franprix.fr/)  (Franprix)
] def

/SubtitlesTastingNotes Overtitles def

/FontSizesRatioTitlesMin 2 def
/FontSizesRatioAboveBelowOverMin 99 def
/OvertitleMaxFontSizeProportionTitles 0.4 def

/GlassesOnSheets [
	[ 0 3 1 4 2 5 ]
	dup [ exch {6 add} forall ]
] def  % /GlassesOnSheets
/GlassesOnTastingNotePages [
	[ 0 1 5 {} for ]
	dup [ exch {6 add} forall ]
] def

/WaterCountTarget 15 def  % intended number of tickable squares

/VerticalMiddlingTitles {Titles WithinTitles get type /nametype eq {/MatchNone} {/MatchString} ifelse} def
Software version: 14:00 Monday 19th March 2012.

Edit on 2nd Oct 2013: the new parameter VerticalMiddlingTitlesAlwaysMatchNone has eliminated the need for the code in VerticalMiddlingTitles.
User avatar
jdaw1
Dow 1896
Posts: 24118
Joined: 14:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Thursday 29th March 2012, The Bung Hole, The Birthday Boys (placemats, planning and arrangements).
Image Image Image Image

Code: Select all

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

/RubyCount 8 def

/Names [
	(BMHR)
	(CMAG)
	RAYC
	(THRA)
	(AHB)
	(DRT)
	(RLC)
	()

%	(AP)
%	(CSD)
%	[(CSD) /quoteright (s +1)]  % Terry
%	JDAW
] def

/Titles [
	(G)
	(G)
	(Ck)
	(F)
	(N)
	(RP)
	(Rs)
	(TPS)
	
	0 1 Names length 2 sub {Names exch get} for
] def

/Circlearrays [
	[ [(Graham) /quoteright (s Six Grapes)]  (DRT) ]
	[ [(Graham) /quoteright (s Finest Reserve)]  JDAW ]
	[ (Cockburn Special Reserve)  (RLC) ]
	[ [(Fonseca T) {-0.08 Kern} (erra Prima)]  RAYC ]
	[ (Noval Black)  RAYC ]
	[ (Ramos-Pinto Collector)  (RLC) ]
	[ (Quinta de la Rosa Reserve)  RAYC ]
	[ (The Port Society Ruby Reserve)  (RLC) ]
	
	0 1 Names length 2 sub {Names exch get [exch]} for
] def

/Overtitles [
	(Six Grapes)
	(Finest Reserve)
	(Special Reserve)
	[(T) {-0.08 Kern} (erra Prima)]
	(Black)
	(Collector)
	(Reserve)
	(Ruby Reserve)
	
	Circlearrays length RubyCount sub {()} repeat
] def
/SubtitlesTastingNotes Overtitles def
/Belowtitles [ Titles length {()} repeat ] def

/HeaderLeftText [(The Bung Hole, Thursday 29) {SuperscriptOn} (th) {SuperscriptOff} ( March 2012)] def
/HeaderCenterText [
	(The Birthday Boys)
	{TypeOfPagesBeingRendered dup /Glasses eq exch /TastingNotes eq or {SheetNum 1 le {(: Amuse-Bouche)} {(: Plat Principal)} ifelse} if}
	{TypeOfPagesBeingRendered /VoteRecorder eq {SheetNum 0 le {(: Plat Principal)} if} if}
] def

/ExternalLinks [
	(http://www.theportforum.com/viewtopic.php?t=5202&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/papers/2012/20120329_birthday.pdf)   (Latest version this placemat)
	(http://www.davy.co.uk/bunghole/)  (The Bunghole)
	(http://en.wikipedia.org/wiki/1965#March)  (March 1965)
] def

/GlassesOnSheets [
	[ 0 1 3 {} for ]
	[ 4 1 7 {} for ]
	[ 8  1  Circlearrays length 1 sub RubyCount add 2 idiv {} for ]
	dup dup length 1 sub get 1 add  [ exch  1  Circlearrays length 1 sub {} for ]
] def  % /GlassesOnSheets
/GlassesOnTastingNotePages GlassesOnSheets def  % For no tasting note pages at all use  /GlassesOnTastingNotePages [] def

/TitlesFont     /Impact def
/CircletextFont /BookAntiqua-Bold def
/OvertitlesFont  {CircletextFont} def

/FontSizesRatioTitlesMin 99 def
/FontSizesSetsGlassesPages [ 0 0  counttomark GlassesOnSheets length exch sub {1} repeat ] def

/GlassesClusteredOnVoteRecorders [
	GlassesOnTastingNotePages  2  1 index length 2 sub  getinterval
	GlassesOnTastingNotePages
] def
/VoteRecorderTopTexts [  % Must be same length as GlassesClusteredOnVoteRecorders
	[ (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

/CrossHatchingBackground {SheetNum 1 le} def
/CrossHatchingTitles {SheetNum 1 gt} def
/CrossHatchingRadialGapStart 48 def
/CrossHatchingRadialGapAtInfinity 12 def
Software version: 21:00 Monday 26th March 2012.
User avatar
jdaw1
Dow 1896
Posts: 24118
Joined: 14:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Wednesday 11th April 2012, The Bung Hole, A Small Emergency (placemats, planning and arrangements).
Image

Code: Select all

/Names [
	[(JDA) {-0.06 Kern} (W)]
	(DRT)
	(THRA)
	(RLC)
	()
] def

/Circlearrays [
	[ (+) ]
	Names {dup length 0 eq {pop} {[exch]} ifelse} forall
] def

/Titles [ Circlearrays {0 get} forall ] def

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

/HeaderLeftText [(The Bung Hole, Wednesday 11) {SuperscriptOn} (th) {SuperscriptOff} ( April 2012)] def
/HeaderCenterText [(A Small Emergency)] def

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=5889&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2012/20120411_blind.pdf)   (Latest version this placemat)
	(http://www.davy.co.uk/bunghole/)  (The Bunghole)
	(http://oldnickholborn.co.uk/)  (The Old Nick (pre-Port beer))
] def

/TitlesFont     /Century def
/FontSizesRatioTitlesMin 999 def

/VoteRecorderCrossedBox
{
	VoteRecorderShowTotalRow VoteRecorderSheetNum get execU dup
	{
		pop Titles WithinTitles get ThisName eq ThisName length 0 gt ThisName type /arraytype ne and and
		Titles WithinTitles get type /arraytype eq {ThisName (THRA) eq or} if
	} if
} def

/GlassesClusteredOnVoteRecorders [
   {GlassesOnTastingNotePages} dup
] def
/VoteRecorderTopTexts [
   [ (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

/VerticalMiddlingTitles {Titles WithinTitles get type /nametype eq {/MatchNone} {/MatchString} ifelse} def
Software version 21:00 Monday 26th March 2012.

In the used typeface, Century, my initials should have been kerned a bit more.

Edit on 2nd Oct 2013: the new parameter VerticalMiddlingTitlesAlwaysMatchNone has eliminated the need for the code in VerticalMiddlingTitles.
User avatar
jdaw1
Dow 1896
Posts: 24118
Joined: 14:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Tuesday 17th April 2012, The Bung Hole, A Small Horizontal of 1966s (placemats, planning and arrangements).
Image

Code: Select all

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

/Circlearrays [
	[ (Croft)  (1966)  (DRT) ]
	[ (Gould Campbell)  (1966)  RAYC ]
	[ (Fonseca)  (1966)  (AHB) ]
	[ [(W) {-0.12 Kern} (arre)]  (1966)  [JDAW ( & STG)] ]
	[ [(T) {-0.04 Kern} (aylor)]  (1966)  [JDAW ( & STG)] ]
	[ (Quinta do Noval)  (1966)  (WS) ]
] def

/Titles [ (Cr) (GC) (F) (W) (T) (N) ] def

/Belowtitles [ Circlearrays length {()} repeat ] def
/Overtitles [ Circlearrays {0 get} forall ] def
/TitlesTastingNotes Overtitles def
/TitlesVoteRecorder Titles def
/SubtitlesTastingNotes Belowtitles def
/SubtitlesVoteRecorder Overtitles def

/Names [
	JDAW
	(STG) % Stephanie True Galley, right-handed
	RAYC (AHB) (DRT) (WS) ()
] def

/HeaderLeftText [(The Bung Hole, Tuesday 17) {SuperscriptOn} (th) {SuperscriptOff} ( April 2012)] def
/HeaderCenterText (A Small Horizontal of 1966s) def

/ExternalLinks [
	(http://www.theportforum.com/viewtopic.php?t=5905&view=unread#unread)   (Review thread on ThePortForum.com)
	(http://www.theportforum.com/viewtopic.php?t=5858&view=unread#unread)   (Organisation thread on ThePortForum.com)
	(http://www.jdawiseman.com/papers/2012/20120417_1966.pdf)   (Latest version this placemat)
	(http://www.davy.co.uk/bunghole/)  (The Bung Hole)
] def

/TitlesFont     /TimesNewRomanPS-BoldMT def
/OvertitlesFont  TitlesFont def
/CircletextFont /TimesNewRomanPSMT def

/FontSizesRatioAboveBelowOverMin 99 def
/OvertitleMaxFontSizeProportionTitles 0.25 def

/ShapesInTitles true def
/ShapesToUse [/Flower] def  % At least one of: /Flower /Star
/ShapesInAbovetitles false def
/ShapesInBelowtitles false def
/ShapesInOvertitles false def
Software version 18:00 Saturday 14th April 2012.

The /TitlesTastingNotes Overtitles def was new: using one of the sets of subtitles in one place as titles in another.
User avatar
jdaw1
Dow 1896
Posts: 24118
Joined: 14:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Tuesday 24th April 2012, The Bung Hole, Delaforce (placemats, planning and arrangements).
Image Image Image

Code: Select all

/CirclearrayPortNames << /Df (Delaforce)  /DfC [(Delaforce C) /ocircumflex (rte)]  /QC [(Delaforce Quinta da C) /ocircumflex (rte)] >> def
/SubtitlePortNames << /Df (Delaforce)  /DfC [(Delaforce C) /ocircumflex (rte)]  /QC [(Quinta da C) /ocircumflex (rte)] >> def

/VintageData [
	[ (1975) /Df  (AP) ]

	[ (1960) /Df  (THRA) ]
	[ (1963) /Df  (THRA) ]
	[ (1966) /Df  (THRA) ]
	[ (1970) /Df  (AHB) ]
	[ (1974) /QC  (JHG) ]
	[ (1977) /Df  (AHB) ]
	[ (1980) /DfC  (WS) ]
	[ (1982) /Df  (AP) ]
	[ (1984) /QC  (AHB) ]
	[ (1985) /Df  (THRA) ]
	[ (1987) /QC  (WS) ]
	[ (1991) /DfC  (AP) ]
	[ (1992) /Df  (AP) ]
	[ (1994) /Df  (AP) ]
	[ (1997) /DfC  (AP) ]
	[ (2000) /Df  (AP) ]
	[ (2003) /Df  (AP) ]
	[ (2007) /Df  (AP) ]
] def

/Circlearrays [ VintageData {
	[ exch dup  0 get exch  dup 1 get CirclearrayPortNames exch get exch  dup length 2 le {pop} {2 get} ifelse  ]
} forall] def

/Titles [ VintageData {0 get 2 2 getinterval} forall ] def

/Belowtitles [ VintageData {1 get dup /Df ne {pop ()} {SubtitlePortNames exch get} ifelse} forall ] def
/Overtitles  [ VintageData {1 get dup /Df eq {pop ()} {SubtitlePortNames exch get} ifelse} forall ] def
/TitlesTastingNotes [ VintageData {0 get} forall ] def
/SubtitlesTastingNotes [ VintageData {1 get CirclearrayPortNames exch get} forall ] def

/Names [
	(Nick D.)
	[(J) {-0.02 Kern} (ulian W) {-0.15 Kern} (.)]
	(Tom A.)
	(Rob C.)
	[(Axel P) {-0.15 Kern} (.)]
	[(Derek T) {-0.15 Kern} (.)]
	(Alex B.)
	[(J) {-0.04 Kern} (acob H.)]
	(Ben R.)
	[(W) {-0.08 Kern} (olfgang S.)]
	(Ray C.)
	[(Christoper G) {-0.02 Kern} (.)]
	()
] def

/HeaderLeftText [(Delaforce at The Bung Hole, Tuesday 24) {SuperscriptOn} (th) {SuperscriptOff} ( April 2012)] def
/HeaderCenterText [] def

/HeaderRightText [
	(www) {-0.092 Kern} (.) {-0.092 Kern} (Delaforce.com, )
	(www) {-0.092 Kern} (.) {-0.092 Kern} (ThePortForum.com, )
	% (www) {-0.092 Kern} (.) {-0.12 Kern} (W) {-0.092 Kern} (orldOf) {+0.12 Kern} (Port.de, )
	% (www.jacob-head.com/port,)
	(www) {-0.092 Kern} (.jdawiseman.com)
] def

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=5172&view=unread#unread)   (Organisation thread on ThePortForum.com)
	(http://www.theportforum.com/viewtopic.php?t=5922&view=unread#unread)   (Review thread on ThePortForum.com)
	(http://www.jdawiseman.com/2012/20120424_delaforce.pdf)   (Latest version this placemat)
	(http://www.delaforce.com/)  (Delaforce)
	(http://www.davy.co.uk/bunghole/)  (The Bung Hole)
] def

/PlaceNamesNumCopies 1 def
/PrePourNumCopies 1 def
/CorkDisplay true def
/StickyLabelsNumCopies 1 def
/StickyLabelsTypes [0] def

/TitlesFont     /BookmanOldStyle-Bold def
/CircletextFont /BookmanOldStyle def
/HeaderFont CircletextFont def

/GlassesOnSheets [
	[ 0 ]
	dup [ exch dup length 1 sub get 1 add  dup 5 add    1 exch {} for ]
	dup [ exch dup length 1 sub get 1 add  dup 5 add    1 exch {} for ]
	dup [ exch dup length 1 sub get 1 add  dup 5 add    1 exch {} for ]
] def  % /GlassesOnSheets
/GlassesOnTastingNotePages [
	[ 0  GlassesOnSheets 1 get {} forall ]
	2  1  GlassesOnSheets length 1 sub {GlassesOnSheets exch get} for
] def

/NonDecanterLabelGlassesNumCopies {SheetNum 0 eq {0} {1} ifelse} def

/GlassesClusteredOnVoteRecorders [
	GlassesOnSheets
] def  % triple-depth array, same length as VoteRecorderTopTexts and VoteRecorderShowTotalRow

/WaterCountTarget 15 def  % intended number of tickable squares

/PlaceNamesFirstAndThirdFoldsFromEdge 0 def
Software version 23:00 Monday 23rd April 2012.

The Df75, which was surprisingly good, caused some intricacy. It was to be served as an aperitif, so not to appear on the glasses sheets. It would need a pre-pour sheet and a sticky label. But these two contain repeats of the relevant component of the glasses sheet. Not on glasses sheet ⇒ no pre-pour, no sticky. Hmmm: awkward.

What to do? So it was on a glasses sheet, the first, containing just the ’75 (/GlassesOnSheets [ [ 0 ] ! ] def). But zero copies of this sheet were shown (/NonDecanterLabelGlassesNumCopies {SheetNum 0 eq {0} {1} ifelse} def). Thus pre-pour and sticky repeats of the glasses sheet ’75 could appear. Yes, it is a bit awkward, but driven by the desire for a very strong visual similarity between the pre-pour sheets and the sheets to which glasses are then transferred.

However, be careful if generalising this trick. Imagine that there were a dozen ports to appear on pre-pour but not on the glasses sheets. If these were all put on the first glasses sheet (of which zero copies are printed), the computed radius would be much smaller, and that would shrink the radius on other sheets with which it shared a common radius (controlled by ShrinkRadii). Not good. Obviously there would need to be several different glasses sheets to be printed zero times.
User avatar
jdaw1
Dow 1896
Posts: 24118
Joined: 14:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Wednesday 2nd May 2012, The Bung Hole, post-BFT with Johnny Symington and the Graham 1952 Single Harvest Tawny (placemats, planning and arrangements).
Image Image Image

Code: Select all

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

/Names [
	(JDS)
	(AHB) (DRT) (RLC) (PW) (WS)
	(BMHR) (CMAG) JDAW RAYC (THRA)
	()
] def

/Circlearrays [
	1 1 Names length 2 sub {[exch Names exch get]} for
	[ (Graham)  (1952)  [(Single T) {-0.092 Kern} (awny)]  (JDS)  ]
	[/dagger]   [/daggerdbl]   [/lozenge]   [/currency]
] def

/Titles [
	Circlearrays {dup length 2 ge {[exch dup 0 get 0 1 getinterval exch 1 get 2 2 getinterval]} {0 get} ifelse} forall
] def

/Belowtitles [ Circlearrays {dup length 3 ge {2 get} {pop ()} ifelse} forall ] def

/HeaderLeftText [(The Bung Hole, W) {-0.092 Kern} (ednesday 2) {SuperscriptOn} (nd) {SuperscriptOff} ( May 2012)] def
/HeaderCenterText [(Post-BFT: we) /quoteright (ll still be sober, honest guv)] def
/HeaderRightText [
	(www) {-0.092 Kern} (.grahams-port.com, )
	(www) {-0.092 Kern} (.) {-0.092 Kern} (ThePortForum.com, )
	% (www) {-0.092 Kern} (.) {-0.12 Kern} (W) {-0.092 Kern} (orldOf) {+0.12 Kern} (Port.de, )
	% (www.jacob-head.com/port,)
	(www) {-0.092 Kern} (.jdawiseman.com)
] def

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=5890&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2012/20120502.pdf)   (Latest version this placemat)
	(http://www.thebft.co.uk/)  (The Big Fortified Tasting)
	(http://www.davy.co.uk/bunghole/)  (The Bung Hole)
	(http://www.grahams-port.com/)  (Graham's Port)
] def

/TitlesFont     /TrebuchetMS-Bold def
/CircletextFont /Garamond-Bold def
/BelowtitlesFont  CircletextFont def
/HeaderFont /Garamond def

/FontSizesRatioTitlesMin 9999 def

/GlassesClusteredOnVoteRecorders [
	{[ GlassesOnTastingNotePages {[exch {dup Circlearrays exch get length 3 ge {pop} if} forall]} forall ]}
  {GlassesOnTastingNotePages}
] def  % triple-depth array, same length as VoteRecorderTopTexts and VoteRecorderShowTotalRow
/VoteRecorderTopTexts [
   [ (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

/CircletextMaxFontSizeProportionRadius 0.0984 def
Software version 22:00 Sunday 29th April 2012.

The combination of the large titles in TrebuchetMS-Bold (sans-serif, pleasingly weighted, with bright negative spaces) and smaller text in Garamond-Bold and Garamond (ornately seriffed, and slightly antique) works well.
User avatar
jdaw1
Dow 1896
Posts: 24118
Joined: 14:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Tuesday 15th May 2012, The Bung Hole, A Small 1970 Horizontal, Honouring Ronnie Roots (placemats, planning and arrangements).
Image Image

Code: Select all

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

/Circlearrays [
	[ [(Dow)]  (1970)  JDAW ]
	[ [(Fonseca)]  (1970)  (CMAG) ]
	[ [(Graham)]  (1970)  (THRA) ]
	[ (Sandeman)  (1970)  (RLC) ]
	[ [(T) {-0.09 Kern} (aylor)]  (1970)  (RMW) ]
	[ [(W) {-0.06 Kern} (arre)]  (1970)  (AHB) ]

	[ [(Cockburn)]  (1970)  RAYC ]
	[ [(Of) /fl (ey Boa Vista)]  (1970)  (NDS)  ]
	[ [(Royal Oporto)]  (1970)  (DRT) ]
	[ [(Royal Oporto Carvalhas)]  (1970)  [RAYC ( from THRA)] ]
	[ /dagger ]
	[ /daggerdbl ]
] def

/Titles [
	(D)
	(F)
	(G)
	(S)
	(T)
	(W)

	(Ck)
	(OBV)
	(RO)
	(ROC)
	/dagger
	/daggerdbl
] def

/Overtitles  [ Circlearrays {0 get} forall ] def
/Belowtitles [ Circlearrays {dup length 3 ge {1 get} {pop ()} ifelse} forall ] def

/TitlesTastingNotes [ 0 1 Titles length 1 sub {dup Overtitles exch get dup length 0 gt {exch pop} {pop Titles exch get} ifelse} for ] def
/TitlesVoteRecorder Titles def
/TitlesDecantingNotes Titles def
/TitlesCorkDisplay TitlesTastingNotes def

/Names [
	(RMW) (AHB) (CMAG) (DRT) RAYC (RLC) JDAW (THRA)
	(NDS)  % Cookie's friend Sandy
	()
] def


/HeaderLeftText [(The Bung Hole, Tuesday 15) {SuperscriptOn} (th) {SuperscriptOff} ( May 2012)] def
/HeaderCenterText [(A Small 1970 Horizontal, Honouring Ronnie Roots)] def

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=5977&view=unread#unread)   (Review thread on ThePortForum.com)
	(http://www.theportforum.com/viewtopic.php?t=5912&view=unread#unread)   (Planning thread on ThePortForum.com)
	(http://www.jdawiseman.com/2012/20120515_1970.pdf)   (Latest version this placemat)
	(http://www.davy.co.uk/bunghole/)  (The Bung Hole)
	(http://en.wikipedia.org/wiki/1970)  (Wikipedia on 1970)
] def

/TitlesFont     /TrebuchetMS-Bold def
/OvertitlesFont /Garamond-Bold def
/BelowtitlesFont OvertitlesFont def
/CircletextFont OvertitlesFont def

/FontSizesRatioAboveBelowOverMin 999 def

/GlassesOnSheets [
	[ 0  Titles length 1 sub  /e exch def /s exch def  s 1 e {dup e lt e s sub 6 ge and {dup s sub e s sub 1 add dup 6 div ceiling cvi 3 -1 roll 3 copy mul exch idiv 4 1 roll 1 add mul exch idiv ne {][} if} if} for ]
] def  % /GlassesOnSheets

/CircletextMaxFontSizeProportionRadius 0.092 def

/TastingNotesTitlesFontSizeMax 16 def

/CircletextsMaxCopies {  % Needlessly complicated for this use, but reusably general-purpose
	Rays
	{
		dup RaysLinesPerGlass idiv RaysLinesPerGlass mul dup 0 eq
		{pop dup 1 {
			RaysLinesPerGlass 3 mod 0 eq {RaysLinesPerGlass 2 mul 3 idiv 2 copy ge {exch pop exit} {pop} ifelse} if
			2 1 6 {/i exch def
			RaysLinesPerGlass i mod 0 eq {RaysLinesPerGlass       i idiv 2 copy ge {exch pop exit} {pop} ifelse} if
			} for  % i
		} repeat} if  % ... 0 eq
	} {65535} ifelse  % Rays
} def  % Needlessly complicated for this use, but reusably general-purpose

/Rays true def
/RaysLinesToPaperEdge true def
/RaysLinesPerGlass 56 def
Software version 22:00 Sunday 13th May 2012.

I wanted the short Circlearrays to resonate with the Rays, which is why CircletextsMaxCopies is so complicated. This code will be moved into the code proper, perhaps to be activated by a parameter to be called CircletextsAttemptResonateWithRays.

Edit on Sunday 20th May 2012:
User avatar
jdaw1
Dow 1896
Posts: 24118
Joined: 14:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Wednesday 25th July 2012, The Olympic Tasting at the Portuguese Embassy (placemats, planning and arrangements).
Image

Image

Code: Select all

/PeopleData [
	[
		(JdV)
		[
			{TypeOfPagesBeingRendered dup dup /PlaceName eq exch /VoteRecorder eq or exch /DecantingNotes eq or {/JDAW-CFS CurrentFontSize def CurrentFontName JDAW-CFS 3 div selectfont  0 JDAW-CFS 0.25 mul rmoveto} if}
			(H.E. Dr )
			{TypeOfPagesBeingRendered dup dup /PlaceName eq exch /VoteRecorder eq or exch /DecantingNotes eq or {CurrentFontName JDAW-CFS selectfont  0 JDAW-CFS -0.25 mul rmoveto} if}
			{TypeOfPagesBeingRendered /VoteRecorder eq {[(J) {-0.09 Kern} (.)]} {[(J) {-0.03 Kern} (o) /atilde (o)]} ifelse}
			( de V) {-0.15 Kern} (allera)
		]
	]
	[
		(TEB)
		[
			(Lord Boswell)
			{TypeOfPagesBeingRendered dup dup /PlaceName eq exch /VoteRecorder eq or exch /DecantingNotes eq or not {( of Aynho)} if}
		]
	]	
	[  (CM)  (Charles M.)  ]  % Charles Metcalfe
	[  (AWE)    (Alex E.)  ]  % Ambassador's Guest, Alex W. Ellis
	[
		(RB)
		[(Roger B.)  {TypeOfPagesBeingRendered /PlaceName ne {(, Esq)} if}]
	]  % Ambassador's Guest, Lord Roger Bramble, the Deputy Lieutenant of Greater London ?
	[  (RLC)  (Ray C.)  ]
	[  (THRA)  [(T) {-0.08 Kern} (om A.)]  ]
	[  (DRT)  [(Derek T) {-0.09 Kern} (.)]  ]
	[  (WS)  [(W) {-0.12 Kern} (olfgang S.)]  ]
	[  (BMHR)  (Ben R.)  ]
	[  [(JDA) {-0.06 Kern} (W)]  [(J) {-0.03 Kern} (ulian W) {-0.12 Kern} (.)]  ]
	[  [(RA) {-0.06 Kern} (YC)]  (Rob C.)  ]
	[  (OJMQ) [(Oscar Q) {-0.03 Kern} (.)]  ]  % -0.105
	[  (ARK)  (Alex K.)  ]
	[  (CRS)  (Carl S.) ]
	[  (PW)  [(Phil W) {-0.12 Kern} (.)] ]
	[  (GW)  [(Giles W) {-0.12 Kern} (.)] ]  % Giles Wigoder, no middle initial known, right-handed, no special dietary requirements other than an aversion to Pot Noodle
	[
		(GRJ)  % The Right Reverend Graham R James (Bishop of Norwich)
		[
			{TypeOfPagesBeingRendered dup dup /PlaceName eq exch /VoteRecorder eq or exch /DecantingNotes eq or {/JDAW-CFS CurrentFontSize def CurrentFontName JDAW-CFS 3 div selectfont  0 JDAW-CFS 0.25 mul rmoveto} if}
			{TypeOfPagesBeingRendered /TastingNotes eq {(The Right Reverend )} {(T) {-0.09 Kern} (.R.R. )} ifelse}
			{TypeOfPagesBeingRendered dup dup /PlaceName eq exch /VoteRecorder eq or exch /DecantingNotes eq or {CurrentFontName JDAW-CFS selectfont  0 JDAW-CFS -0.25 mul rmoveto} if}
			{TypeOfPagesBeingRendered /VoteRecorder eq {(G.)} {(Graham)} ifelse}
			( James)
			{TypeOfPagesBeingRendered /TastingNotes eq {(, the 71) {SuperscriptOn} (st) {SuperscriptOff} ( Bishop of Norwich)} if}
		]
	]
	[  (LB-S)  (Lorenzo B.-S.)  ]  % Lorenzo Bakewell-Stone
	[  (SF)    [(Steve F) {-0.12 Kern} (.)]  ]  % Steve Filbey
	[  (QA)    (Quentin A.)  ]  % Quentin Archer
	[  (RC)    [/quoteleft (Oz) /quoteright ( C.)]  ]  % Oz Clarke
	[  ()    ()  ]  % Industry guest
	[  ()    ()  ]  % Industry guest
] def

/PortData [
	%  YYYY    City                     Abbreviation  Type           Subtitle shipper     Circlearray shipper
	[ (1948) (London)                   (Mz)          ()             (Martinez)           dup ]
	[ (1952) (Helsinki)                 (Ni)          (Colheita)     (Niepoort)           dup ]
	[ (1956) (Melbourne)                (Ni)          (Experimental) (Niepoort)           dup ]
	[ (1960) (Rome)                     (Cr)          ()             (Croft)              dup ]
	[ (1964) [(T) {-0.06 Kern} (okyo)]  (GM)          ()             (Malvedos)           (Graham Malvedos) ]
	[ (1968) (Mexico City)              (TV)          ()             (Guimaraens)         (Fonseca Guimaraens) ]
	[ (1972) (Munich)                   (OBV)         ()             (Offley Boa Vista)   dup ]
	[ (1976) (Montreal)                 (RP)          ()             [(V) {-0.06 Kern} (argellas)]   [(T) {-0.08 Kern} (aylor Quinta de ) 4 index]  ]
	[ (1980) (Moscow)                   (D)           ()             (Dow)                dup ]
	[ (1984) (Los Angeles)              (WC)          ()             (Cavadinha)          [(W) {-0.09 Kern} (arre Quinta da Cavadinha)] ]
	[ (1988) (Seoul)                    (Rs)          ()             (de la Rosa)         [(Quinta ) 2 index] ]
	[ (1992) (Barcelona)                (T)           ()             (Burmester)          dup ]
	[ (1996) (Atlanta)                  (V)           ()             (Vesuvio)            [(Quinta do V) {-0.15 Kern} (esuvio)] ]
	[ (2000) (Sydney)                   (C)           ()             (Delaforce)          dup ]
	[ (2004) (Athens)                   (Cs)          ()             (Cockburn Canais)    (Cockburn Quinta dos Canais) ]
	[ (2008) (Beijing)                  (Qv)          ()             (Quevedo)            [1 index ( Quinta Vale D) /quoteright {-0.12 Kern} (Agodinho)] ]
] def

/TitlesTastingNotes [ PortData {0 get} forall ] def
/Titles [ TitlesTastingNotes {2 2 getinterval} forall ] def
/Overtitles [ PortData {[exch dup 4 get exch 3 get dup length 0 gt {( ) exch} {pop} ifelse]} forall ] def
/Circlearrays [ PortData {[ exch dup 5 get exch dup 3 get dup length 0 eq {pop} {exch} ifelse  0 get ]} forall ] def
/FillTexts [ PortData {1 get} forall ] def

/Belowtitles [ Titles length {()} repeat ] def
/SubtitlesTastingNotes Overtitles def

/Names [  PeopleData {1 get} forall  ] def

/PaperType /A3 def  % /A4 /A3 /B4 /USL /USLegal /USL2 [SmallerPts LargerPts]
/Orientation /Landscape def  % /Landscape /Portrait

/HeaderLeftText [(The P) {-0.04 Kern} (ortuguese Embassy, London, W) {-0.07 Kern} (ednesday 25) {SuperscriptOn} (th) {SuperscriptOff} ( July 2012)] def
/HeaderCenterText [(P) {-0.04 Kern} (ort from the Y) {-0.12 Kern} (ears of Summer Olympics)] def
/ExternalLinks [
	(http://www.theportforum.com/viewtopic.php?t=4567&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2012/20120725_olympic.pdf)   (Latest version this placemat)
] def

/PlaceNamesNumCopies 1 def
/PrePourNumCopies 2 def
/CorkDisplay true def
/CorkDisplayNumCopies 2 def

/TitlesFont     /Baskerville-SemiBold def  % /Optima-Bold
/OvertitlesFont  /LiberateBold def  % /LiberateNormal  /LiberateBold  /LiberateExtendedNormal  /Harrington  /LucyNormal

/GlassesOnSheets [
	[ 0 1 Titles length 1 sub {} for ]
] def  % /GlassesOnSheets
/GlassesOnTastingNotePages [
	[8 12 0 4] {[ exch dup 3 add 1 exch {} for ]} forall
] def  % For no tasting note pages at all use  /GlassesOnTastingNotePages [] def

/GlassesClusteredOnVoteRecorders [
	[ [2 3 0 1] {GlassesOnTastingNotePages exch get} forall ]
] def  % triple-depth array, same length as VoteRecorderTopTexts and VoteRecorderShowTotalRow
/VoteRecorderTopTexts [  % Must be same length as GlassesClusteredOnVoteRecorders, each sub-array containing some number of TopTexts
	[  (Wine Of The Night)  (Q:)  ]
] def  % Must be same length as GlassesClusteredOnVoteRecorders
/VoteRecorderShowTotalRow [ GlassesClusteredOnVoteRecorders length {false} repeat ] def  % Must be same length as GlassesClusteredOnVoteRecorders
/VoteRecorderOrientation /Landscape def

/GlassesClusteredOnCorkDisplay [ [ GlassesOnTastingNotePages aload pop 4 2 roll ] ] def

/PermittedPackingStyles [ [
	0 1 7 {[ exch dup 2 mod ]} for
	0 1 7 {[ exch dup 2 mod 2.2 add ]} for
] ] def

/FlightSeparations true def
/FlightSeparationLines
[
	[
		[
			[/Left 8
				{
					/JDAW-Rs
					GlassPositions SheetNum get 1 get aload pop
					GlassPositions SheetNum get 8 get aload pop
					3 -1 roll sub dup mul  3 1 roll sub dup mul  add sqrt Radii SheetNum get div 2 div
					def
					JDAW-Rs neg
				}
			]
			[1 8] [1 10] [3 10] [3 12] [5 12] [5 14] [7 14]
			[/Right 7 {JDAW-Rs}]
		]
	]  % SheetNum = 0
] def  % /FlightSeparationLines

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

/FillTitles true def
/FillOvertitles false def
/FillTextPlacename {PeopleData NameNum get 0 get} def

/NamesFontSizeMin 15 def
/NamesFontSizeMax NamesFontSizeMin def

/VerticalMiddlingStringTitles (N) def  % Benchmark characters

/FillTextPrintQuickerDistillSlower true def
Software version 22:00 Sunday 22nd July 2012.

The Olympic placemats were more complicated than is typical.

• Data is mostly in two arrays, PeopleData and PortData, and is decanted from there into the parameter arrays. For large tastings this can be easier, as it keeps together the relevant items of Titles, Overtitles, FillTexts, etc.

• Some of the people have complicated names, containing code that tests TypeOfPagesBeingRendered and chooses a suitably shortened version. The compound strings to be rendered themselves contain code, kerning, shrinking and superscripting.

• These data are decanted into the parameters with lines like ‟/TitlesTastingNotes [ PortData {0 get} forall ] def” followed by ‟/Titles [ TitlesTastingNotes {2 2 getinterval} forall ] def”.

• With the glasses pages being A3 and the tasting-note pages being A4, GlassesOnSheets ≠ GlassesOnTastingNotePages. Also unusually, GlassesClusteredOnVoteRecorders and GlassesClusteredOnCorkDisplay were re-ordered versions of GlassesOnTastingNotePages.

PermittedPackingStyles contains only one possibility, an array: [   [0 0] [1 1] [2 0] [3 1] [4 0] [5 1] [6 0] [7 1]   [0 2.2] [1 3.2] [2 2.2] [3 3.2] [4 2.2] [5 3.2] [6 2.2] [7 3.2]   ]. (Usually PermittedPackingStyles contains contains multiple named arrangements including /RectangularDislocation, /PseudoHexagonal, and /SquareGrid.) But for the array possibility the code chooses the radius and x and y scaling factors, to fill the page less margins. The extra 0.2 in some of the array’s y values slightly separates the top two rows from the bottom two: before and after dinner. But even without this, observe that the ordering of the glasses would be different to that in a /PseudoHexagonal arrangement.

FlightSeparationLines is an array of depth four holding the definitions of lines that separate flights. For the first time at least my first time this contains code. The code calculates half the distance between the Ni52c and D80 centres, and, to give the appearance of neatness, ensures that the line starts on the left the same distance below the D80. So the line starts at [/Left 8 -1.13324], which is on the left margin, at a height equal to the y-centre of circle 8 (as ‟8” is an integer), adjusted by the real × radius. (So ‟8” and ‟8.0” would do different things.) This real is stored in JDAW-Rs, so that it could also be used relative to the TV76 circle on the right.

• Finally FillTextPrintQuickerDistillSlower. With this false, distillation took 34 seconds. With it true, removing copies of FillTexts that were entirely clipped away, it took 1302 seconds, more than 38 × slower. The file size fell from 2,135,094 to 1,482,771 bytes, so a change of about -30%. (Indeed, the placenames weren’t used, and without them distillation would have taken only 199 seconds. Also removing the unused pre-pour sheets would have further reduced the time to only 48 seconds.)



Edit in January 2013: recently added to the code is the function HalfDistanceBetweenCentresProportionRadius, which simplifies part of the above to

Code: Select all

/FlightSeparationLines
[
	[
		[
			[/Left 8   {1 8 HalfDistanceBetweenCentresProportionRadius neg}]
			[1 8] [1 10] [3 10] [3 12] [5 12] [5 14] [7 14]
			[/Right 7  {7 14 HalfDistanceBetweenCentresProportionRadius}]
		]
	]  % SheetNum = 0
] def  % /FlightSeparationLines
Edit in autumn 2013: the handling of name variations has been made easier by the new parameters NamesVoteRecorder and its variants. PermittedPackingStyles has also been re-parameterised since summer ’12.
User avatar
jdaw1
Dow 1896
Posts: 24118
Joined: 14:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Tuesday 4th September 2012, Bung Hole Blinder (placemats, planning and arrangements).
Image Image

Code: Select all

/Circlearrays [
	[ (AHB) ]
	[ (DRT) ]
	[ (PW) ]
	[ [(JDA) {-0.08 Kern} (W)]   (Older) ]
	dup [ exch 0 get  [(Y) {-0.09 Kern} (ounger)] ]

	[ (+) ]
	[ [(RA) {-0.08 Kern} (Y) {-0.03 Kern} (C)]  (One) ]
	dup [ exch 0 get [(T) {-0.09 Kern} (wo)] ]
	dup [ exch 0 get (Three) ]
	dup [ exch 0 get (Four) ]
] def

/Titles [ Circlearrays {0 get} forall ] def

/Belowtitles [ Circlearrays {dup length 1 le {pop ()} {1 get} ifelse} forall ] def

/Names [
	Circlearrays {dup length 0 gt {0 get dup length 1 gt {counttomark 1 sub -1 1 {index 1 index eq {pop exit} if} for} {pop} ifelse} {pop} ifelse} forall
	()
] def

/HeaderLeftText [(T) {-0.09 Kern} (uesday 4) {SuperscriptOn} (th) {SuperscriptOff} ( September 2012)] def
/HeaderCenterText [(Bung Hole Blinder)] def

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=6201&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2012/20120904.pdf)   (Latest version this placemat)
] def

/TitlesFont     /IkariusADFStd-Bold def
/FontSizesRatioTitlesMin 999 def

/ColourSchemeTitles /MidGrey def  % /MidGrey /Black
/ExclusionAnnulusProportionInnerRadiusTitlesAboveBelow 0.025 def

/PermittedPackingStyles [ /RectangularDislocation  {NG 5 eq {/None} {/PseudoHexagonal} ifelse}  ] def  % Put, in order of preference, any of /PseudoHexagonal /SquareGrid /RectangularDislocation /RectangularDislocationV /TwoRowsOrTwoColumns /GaiaElegant /Gaia /Irregular /IrregularMirror /IrregularPortrait /IrregularLandscape /IrregularMirrorPortrait /IrregularMirrorLandscape

/WaterCountTarget 12 def  % intended number of tickable squares

/GlassesClusteredOnVoteRecorders [
	{GlassesOnTastingNotePages} dup
] def  % triple-depth array, same length as VoteRecorderTopTexts and VoteRecorderShowTotalRow
/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

/ShapesInTitles true def
/ShapesToUse [/Star] def  % At least one of: /Flower /Star
/ShapesStarsPointsAndStepsArray [ [7 2] dup [7 3] dup dup dup dup ] def  % Less-polygonal more-pointy: [[3 1.318] [4 1.792] [5 2.278] [6 2.77] [7 3.265] [8 3.762] [9 4.259]]
/ShapesAverageSeparation {7  TypeOfPagesBeingRendered /PlaceName eq {PlaceNamesDetailsScalingFactor mul} if} def

/MarginL 12 def  % Left
/MarginR {MarginL} def  % Right
/MarginT 18 def  % Top
/MarginB {MarginL} def  % Bottom
Software version 23:30 Monday 3rd September 2012.

• The names were auto-generated from the Circlearrays with a nifty stack manipulation that removes duplicates. Careful though: [(JDAW)] [(JDAW)] eq returns false; [(JDAW)] dup eq returns true.

• Unusual values of ShapesStarsPointsAndStepsArray and ShapesAverageSeparation.

• Also unusually, the margins were changed from the default value of 30.
[url=http://www.theportforum.com/viewtopic.php?p=51744#p51744]Here[/url] jdaw1 wrote:Printed, though the margins were too small for the printer used. :-(
User avatar
jdaw1
Dow 1896
Posts: 24118
Joined: 14:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Monday 24th September 2012, Warre and Fonseca, Warre versus Fonseca, 1955 to 1955 (placemats, planning and arrangements).
PhilW, who made the placemats, wrote:

Code: Select all

% Warre's Logo
/warre_logo_source_width 168 def
/warre_logo_source_height 138 def
/warre_logo_source_bpp 8 def
%
/warre_logo
{
    warre_logo_source_width warre_logo_source_height warre_logo_source_bpp  % dimensions of source image
    [ warre_logo_source_width 0 0 warre_logo_source_height 0 0 ]            % coordinate transformation matrix
	{<
%***binary data omitted***
	>}
    image
} def % /warre_logo

% Fonseca Logo
/fonseca_logo_source_width 222 def
/fonseca_logo_source_height 81 def
/fonseca_logo_source_bpp 8 def
%
/fonseca_logo
{
    fonseca_logo_source_width fonseca_logo_source_height fonseca_logo_source_bpp      % dimensions of source image
    [ fonseca_logo_source_width 0 0 fonseca_logo_source_height 0 0 ]                  % coordinate transformation matrix
	{<
%***binary data omitted***
	>}
	image
} def % /fonseca_logo

/warre_logo_dest_width 168 def
/warre_logo_dest_height 138 def
/warre_logo_below_header_space 5 def
/warre_logo_from_margin_space 9 def

/fonseca_logo_dest_width 172 def
/fonseca_logo_dest_height 70 def
/fonseca_logo_below_header_space 15 def
/fonseca_logo_from_margin_space 9 def

/PlaceFonsecaLogoTopLeft
{
    MgnL fonseca_logo_from_margin_space add  PageHeight MgnT sub fonseca_logo_below_header_space sub fonseca_logo_dest_height sub  translate
	fonseca_logo_dest_width fonseca_logo_dest_height scale
	fonseca_logo
} def % /PlaceProducerLogoTopLeft

/PlaceWarreLogoTopRight
{
    PageWidth MgnR sub warre_logo_dest_width sub warre_logo_from_margin_space sub  PageHeight MgnT sub warre_logo_below_header_space sub warre_logo_dest_height sub  translate
	warre_logo_dest_width warre_logo_dest_height scale
	warre_logo
} def % /PlaceProducerLogoTopRight

/PlaceProducerLogo
{
	SheetNum 1 eq { PlaceFonsecaLogoTopLeft } { PlaceWarreLogoTopRight } ifelse
} def % /PlaceProducerLogo

/HeaderLeftText [(London, Monday 24) {SuperscriptOn} (th) {SuperscriptOff} ( September 2012)] def
/HeaderCenterText [(W){-0.09 Kern}(arre's vs Fonseca, double mini vertical)] def
/HeaderRightText [
	(www) {-0.092 Kern} (.) {-0.092 Kern} (ThePortForum.com, )
	(www) {-0.092 Kern} (.jdawiseman.com)
] def


/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?f=3&t=5944)   (Thread on ThePortForum.com)
	(http://www.hallarn.com/placemats/120924_WarreFonseca.pdf)   (Placemat creation software)
] def % /ExternalLinks


/Circlearrays [
	[ [(W) {-0.09 Kern} (arre) /quoteright (s)] (1955) ]
	[ [(W) {-0.09 Kern} (arre) /quoteright (s)]  (1960) ]
	[ [(W) {-0.09 Kern} (arre) /quoteright (s)]  (1963) ]
	[ [(W) {-0.09 Kern} (arre) /quoteright (s)]  (1966) ]
	[ [(W) {-0.09 Kern} (arre) /quoteright (s)]  (1970) ]
	[ [(W) {-0.09 Kern} (arre) /quoteright (s)]  (1977) ]
	[ [(W) {-0.09 Kern} (arre) /quoteright (s)]  (1985) ]
	[ (Fonseca) (1955) ]
	[ (Fonseca) (1960) ]
	[ (Fonseca) (1963) ]
	[ (Fonseca) (1966) ]
	[ (Fonseca) (1970) ]
	[ (Fonseca) (1977) ]
	[ (Fonseca) (1985) ]
] def

/Titles [
	(W55)
	(W60)
	(W63)
	(W66)
	(W70)
	(W77)
	(W85)
	(F55)
	(F60)
	(F63)
	(F66)
	(F70)
	(F77)
	(F85)
] def

/Belowtitles [
	()
	()
	()
	()
	()
	()
	()
	()
	()
	()
	()
	()
	()
	()
] def

/Names [
	[(PW)]
	[(RAYC)]
	[(JDA){-0.08 Kern}(W)]
	[(DRT)]
	[(WS)]
	[(CS)]
	[(CMAG)]
	[(THRA)]
	[(AHB)]
	[(MW)]
	[(BMHR)]
	[(spare1)]
	[(spare2)]
] def

/GlassesOnSheets [	[ 0 1 2 3 4 5 6 ] [ 7 8 9 10 11 12 13 ] ] def  % /GlassesOnSheets

/MarginL 12 def  % Left    11x  12
/MarginR 13 def  % Right   12x  13
/MarginT 19 def  % Top     18x  19
/MarginB 13 def  % Bottom  12x  13

/PermittedPackingStyles [ 
	[ [2 5] [0 4] [4 4] [2 3] [0 2] [4 2] [2 1] ]   % enforce desired layout
] def 

/ExclusionAnnulusProportionInnerRadiusTitlesAboveBelow 0.15 def

/PaintBackgroundCode
{
	TypeOfPagesBeingRendered /Glasses eq
	{
		ThisPageDecanterLabels not
		{
		    % Draw path lines between glasses
			0 1 MakePathConnectingGlasses
			1 2 MakePathConnectingGlasses
			3 2 MakePathConnectingGlasses
			3 4 MakePathConnectingGlasses
			4 5 MakePathConnectingGlasses
			6 5 MakePathConnectingGlasses
			6 setlinewidth  0.5 setgray  0 setlinecap  stroke
			
			% Add Producer Logo to the page
			PlaceProducerLogo
			
		} if  % ThisPageDecanterLabels not
	} if  % TypeOfPagesBeingRendered /Glasses eq
} def  % /PaintBackgroundCode

/ThePortForumIconColour true def

/WaterCounts true def
/WaterCountsOverrideShowEverySheet false def
/WaterCountTarget 14 def
/WaterCountMaxRowLengths [ 7 5 3 ] def
Comments regarding use:
  • Margins were selected as absolute minimum values for which output was not cropped by the printer, in this case a Dell 3110cn. This was in order to maximise glass sizes, which were expected to be borderline.
  • Glass size did work on the night, but was defintely the borderline case (Radius=113.025) for glasses at TBH.
  • Layout was enforced since with minor margin change the default layout was sometimes varying from that intended (rows of 1-2-1-2-1 wanted, default varied between this and 2-2-1-2).
  • Logos were created from images converted to .eps in PaintShopPro, then manually adjusted for use here.
  • Water count boxes appear on each glasses sheet (bug?).
It was a bug, which has been fixed.
User avatar
jdaw1
Dow 1896
Posts: 24118
Joined: 14:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Tuesday 13th November 2012, A Smattering of Graham and Malvedos (placemats, planning and arrangements).
Image
(There are two A3 pages. The right-hand one has been guillotined, and attached to the left, slightly overlapping, with double-sided sticky tape. The green line shows the join.)

Code: Select all

/Graham (Graham) def
/MalvedosShort (Malvedos) def
/MalvedosLong (Graham Malvedos) def
/JDAW [(JDA) {-0.04 Kern} (W)] def
/RAYC [(RA) {-0.04 Kern} (YC)] def

/Circlearrays [
	[ (1942) Graham [(MW & DRT & ) JDAW] ]
	[ (1955) Graham (THRA) ]
	[ (1960) Graham ]
	[ (1963) Graham (WS) ]
	[ (1965) MalvedosLong (AP) ]
	[ (1966) Graham ]
	[ (1968) MalvedosLong ]
	[ (1970) Graham ]
	[ (1975) Graham (PW) ]
	[ (1976) MalvedosLong ]
	[ (1977) Graham (Griff) ]
	[ (1978) MalvedosLong ]
	[ (1979) MalvedosLong (Magnum) (TS-C) ]
	[ (1980) Graham (AHB) ]
	[ (1983) Graham ]
	[ (1984) MalvedosLong ]
	[ (1985) [Graham] (Crusted) ]
	[ (1985) Graham ]
	[ (1987) MalvedosLong  (JGH) ]
	[ (1990) MalvedosLong JDAW ]
	[ (1991) Graham (PW) ]
	[ (1994) Graham ]
] def


/Titles [ Circlearrays {0 get dup length 2 sub 2 exch getinterval} forall ] def
/Belowtitles [ Circlearrays {1 get dup Graham ne {pop ()} if} forall ] def
/Abovetitles [ Circlearrays {dup length 3 ge {2 get dup dup (Crusted) ne exch (Magnum) ne and {pop ()} if} {pop ()} ifelse} forall ] def
/Overtitles [  Circlearrays {1 get dup Graham eq {pop ()} if} forall ] def
/TitlesTastingNotes [ Circlearrays {0 get} forall ] def
/SubtitlesTastingNotes [ 0 1 Circlearrays length 1 sub {dup Abovetitles exch get dup length 0 gt {exch pop} {pop Circlearrays exch get 1 get dup MalvedosLong eq {pop MalvedosShort} if} ifelse} for ] def

/Names [
	(TS-C) (CJ) RAYC (THRA) (WS) (AP) (AHB) JDAW (DRT) (MW) (JGH) (PW)
	(CRS)
	(SCP)
	()
	()
] def

/PaperType /A3 def
/Orientation /Landscape def

/ThePortForumIconPlacement {SheetNum NamesIsLeftHander NameNum get {NumSheets 1 sub} {0} ifelse eq {/LowerNonWaterCount} {/None} ifelse} def  % /None

/HeaderLocation [(The Bung Hole, Tuesday 13) {SuperscriptOn} (th) {SuperscriptOff} ( November 2012)] def
/HeaderTastingName (A Smattering of Graham and Malvedos) def
/HeaderLinks [
	(www) {-0.092 Kern} (.) {-0.092 Kern} (ThePortForum.com, )
	% (www) {-0.092 Kern} (.) {-0.12 Kern} (W) {-0.092 Kern} (orldOf) {+0.12 Kern} (Port.de, )
	% (www.jacob-head.com/port,)
	(www) {-0.092 Kern} (.jdawiseman.com)
] def

/HeaderRightText {TypeOfPagesBeingRendered /Glasses eq {SheetNum 1 eq} {true} ifelse {HeaderLinks} {()} ifelse} def
/HeaderLeftText {TypeOfPagesBeingRendered /Glasses eq {SheetNum 0 eq} {true} ifelse {HeaderLocation} {()} ifelse} def
/HeaderCenterText {TypeOfPagesBeingRendered /Glasses eq {SheetNum 0 eq} {true} ifelse {HeaderTastingName} {()} ifelse} def

/HeaderFooterCenterRelativeX {TypeOfPagesBeingRendered /Glasses eq {GlassPositions SheetNum get 6 get 0 get MgnL sub PageWidth MgnL MgnR add sub div} {0.5} ifelse} def

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=6274&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2012/20121113_graham.pdf)   (Latest version this placemat)
	(http://www.grahams-port.com/)  (Graham\220s Port)
	(http://www.davy.co.uk/bunghole/)  (The Bung Hole)
	(http://www.streetmap.co.uk/map.srf?x=530848&y=181628&pc=WC1V+6DT)  (London WC1V 6DT)
] def

/PrePourNumCopies 1 def
/DecantingNotesNumCopies 1 def
/CorkDisplay true def
/StickyLabelsNumCopies 1 def
/StickyLabelsTypes [0] def

/TitlesFont     /Tahoma-Bold def
/OvertitlesFont  /LiberateBold def
/CircletextFont /BookmanOldStyle def
/AbovetitlesFont  OvertitlesFont def
/BelowtitlesFont  OvertitlesFont def

/OvertitleMaxFontSizeProportionTitles 0.5 def
/FontSizesRatioTitlesMin 99 def
/FontSizesRatioAboveBelowOverMin 99 def

/GlassesOnSheets [
	[
		0   1   2   3
		  6   7   8
		11  12  13  14
		  17  18  19
	]
	[
		            3   4   5
		              9  10
		            14  15  16
		              20  21
	]
] def  % /GlassesOnSheets
/GlassesOnTastingNotePages [
	[ 0  Titles length 1 sub  /e exch def /s exch def  s 1 e {dup e lt e s sub 6 ge and {dup s sub e s sub 1 add dup 6 div ceiling cvi 3 -1 roll 3 copy mul exch idiv 4 1 roll 1 add mul exch idiv ne {][} if} if} for ]
] def

/PermittedPackingStyles [ {SheetNum 1 eq {[ [-1 3 3 3] [1 3 3 3] [3 3]  [0 2 3 2] [2 2 3 2]  [-1 1 3 1] [1 1 3 1] [3 1]  [0 0 3 0] [2 0 3 0] ]} {/PseudoHexagonal} ifelse} ] def  % Put, in order of preference, any of /PseudoHexagonal /SquareGrid /RectangularDislocation /RectangularDislocationV /TwoRowsOrTwoColumns /GaiaElegant /Gaia /Irregular /IrregularMirror /IrregularPortrait /IrregularLandscape /IrregularMirrorPortrait /IrregularMirrorLandscape

/WaterCountsOverrideShowEverySheet false def

/CircletextsMinCopies 4 def

/InlineTitles {Overtitles WithinTitles get length 0 gt} def
/InlineTitlesMaxNumberContours {Abovetitles WithinTitles get (Crusted) eq {1} {12} ifelse} def
/InlineAbovetitles false def
/InlineBelowtitles false def

/RowsMinNum 4 def
/RowsMaxNum 4 def

/MarginL 18 def  % Left
/MarginT 27 def  % Top
Software version 19:00 Monday 12th November 2012.

Lots going on.

• Typically, if the same string is to be used for many ports, I assign it to a variable name. That helps with changes, including the addition of kerning.

• The Circlearrays used these strings, a lot.

• The Titles, Belowtitles, Abovetitles, Overtitles, TitlesTastingNotes, and SubtitlesTastingNotes were then derived from the Circlearrays. Depending on how many cases there are, that can be intricate.

• The glass decoration then derived from these observe the code in InlineTitles and InlineTitlesMaxNumberContours.

• The layout on the A3 glasses pages was unusual. The problem was a shortage of table space. We just didn’t have room for 2×A3 each, but the 22 glasses wouldn’t quite fit on 1×A3 + 1×A4. So two A3s were to be used, the right one to be trimmed and the whole held together with double-sided sticky tape. That meant the headers weren’t constant. For simplicity three constants (HeaderLocation, HeaderTastingName, HeaderLinks) were def’d, and then HeaderRightText, HeaderLeftText, and HeaderCenterText set to code that chose between one of these and blank. Also the position of centre header needed to be changed, for which the code had been altered to add the parameter HeaderFooterCenterRelativeX. This was then assigned to some 132 characters of code, the complication of which might suggest that the form of this parameter was not optimally chosen. (See software thread.)

• The strange layout of the pages required an unusual value for GlassesOnSheets (note the pseudo-graphical layout), and a different value for GlassesOnTastingNotePages.

• The PermittedPackingStyles for the first sheet was /PseudoHexagonal, with both RowsMinNum and RowsMaxNum set to 4. But the second sheet was more complicated, circles being laid in a fixed topology, and then shunted right ([ [-1 3 3 3] [1 3 3 3] [3 3] [0 2 3 2] [2 2 3 2] [-1 1 3 1] [1 1 3 1] [3 1] [0 0 3 0] [2 0 3 0] ]).

• The layout semi-compelled WaterCountsOverrideShowEverySheet to be false. In that it would have compelled had there been any left-handers present.

• Having recently added the parameter CircletextsSameFontSizeIfRadiiShrunkToBeSame, there would be good behaviour from setting /CircletextsMinCopies 4 def. So I did.

• Because of the shortage of space the margins were slightly trimmed.

• There’s an imperfection in the pre-pour sheets, as the ’63 and ’83 appear twice, later fixed:
The author of [url=http://www.jdawiseman.com/papers/placemat/placemat.html#prepour]the manual[/url] wrote:There can, rarely, be an additional complication. If a placemat is made from several A3 placemats, guillotined and overlapped !, then the same glass will appear on two sheets. But it should not have twice as many pre-pour sheets. This technicality is fixed with PrePourRemoveDuplicatesByWithinTitles, which, if true, removes duplicates, equivalence being determined by GlassesOnSheets having the same value of WithinTitles. The guillotine-and-overlap trick also messes with the order of the pre-pour sheets, sometimes fixable with PrePourSortByWithinTitles.
User avatar
jdaw1
Dow 1896
Posts: 24118
Joined: 14:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Thursday 13th December 2012, The Unknown Shipper and His Peculiar Friends, at The Bell (‘placemats’, being TN sheets and sticky labels, planning and arrangements).

Image Image

Code: Select all

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

/Overtitles NumberWords 0 26 getinterval def
/Titles [ 1 1 Overtitles length {5 string cvs} for ] def
/Circlearrays [ 0 1 Overtitles length 1 sub {[ exch dup  Overtitles exch get exch Titles exch get ]} for ] def
/Belowtitles [ Titles length {()} repeat ] def

/SubtitlesTastingNotes Overtitles def

/Names [
	(Dirk)
	[(T) {-0.04 Kern} (om)]
	(Ray) (Alex) (Christopher) (Julian) (Jacob) (Axel) (Phil) (Rob)
	[(Wolfgang)]
	()
] def

/TastingNotesCirclesBehind true def

/HeaderLeftText [(The Bell, Thursday 13) {SuperscriptOn} (th) {SuperscriptOff} ( December 2012)] def
/HeaderCenterText [(The Even More Familiar Unknown Shipper and His Peculiar Friends)] def


/ExternalLinks [
	(http://www.theportforum.com/viewtopic.php?t=5914&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2012/20121213_bell.pdf)   (Latest version this placemat)
	(http://www.thebellatwenden.co.uk/)  (The Bell, Wendens Ambo, Saffron Walden)
	(http://www.streetmap.co.uk/map.srf?x=551093&y=236398&pc=CB11+4JY)  (Map, CB11 4JY)
] def

/NonDecanterLabelGlassesNumCopies 0 def
/StickyLabelsNumCopies {StickyLabelsTypeThis 0 eq {2} {1} ifelse} def

/TitlesFont     /Tahoma-Bold def
/OvertitlesFont  /Harrington def
/CircletextFont /Tahoma def
/HeaderFont /Tahoma def

/FontSizesRatioTitlesMin 99 def
/FontSizesRatioAboveBelowOverMin 99 def

/StickyLabelsOrientationAutomatic {[true false] StickyLabelsTypeThis get} def

/GlassesClusteredOnVoteRecorders [  {GlassesOnTastingNotePages} dup  ] def
/VoteRecorderTopTexts [
	[
		(What is it?)
	]
	[
		(Wine Of The Night)
		[/quoteleft (Peculiar) /quoteright ( Of The Night)]
		[/quoteleft (Unknown) /quoteright ( Of The Night)]
		(Non-Port Of The Night)
	]
] def  % Must be same length as GlassesClusteredOnVoteRecorders
/VoteRecorderShowTotalRow [ true false ] def  % Must be same length as GlassesClusteredOnVoteRecorders
Software version 19:30 Sunday 25th November 2012.

The array NumberWords holds words as numbers, item 0 being (One). That drives much of the data.

There is a trickiness. The sticky labels can only contain copies of what is on the glasses sheets. The TN sheets have, faded, copies of what is on the glasses sheets. But there are no glasses sheets! Oh yes there are, but zero copies are shown: /NonDecanterLabelGlassesNumCopies 0 def. Also observe /StickyLabelsOrientationAutomatic {[true false] StickyLabelsTypeThis get} def, which allows automatic rotation of the bottle labels (2×4 on A4) but not of the glass labels (5×13).
User avatar
jdaw1
Dow 1896
Posts: 24118
Joined: 14:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Friday 22nd March 2013, Taylor Vertical, at The Bung Hole (placemats, planning and arrangements, review of the evening).

Image

Code: Select all

/taylor [(T) {-0.03 Kern} (aylor)] def
/specialquintaShort [(Special Quinta)] def
/vargellasShort [(V) {-0.06 Kern} (argellas)] def
/terrafeitaShort [(T) {-0.06 Kern} (erra Feita)] def
/specialquintaLong [taylor aload pop ( ) specialquintaShort aload pop] def
/vargellasLong [(Quinta de ) vargellasShort aload pop] def
/terrafeitaLong [(Quinta de ) terrafeitaShort aload pop] def

/Circlearrays [
	[ (1920)  taylor ]
	[ (1924)  taylor ]
	[ (1927)  taylor ]
	[ (1935)  taylor ]
	[ (1945)  taylor ]
	[ (1948)  taylor ]
	[ (1950)  specialquintaLong ]
	[ (1955)  taylor ]
	[ (1960)  taylor ]
	[ (1963)  taylor ]
	[ (1965)  vargellasLong ]
	[ (1966)  taylor ]
	[ (1970)  taylor ]
	[ (1970)  vargellasLong ]
	[ (1976)  vargellasLong ]
	[ (1977)  taylor ]
	[ (1980)  taylor ]
	[ (1983)  taylor ]
	[ (1985)  taylor ]
	[ (1986)  terrafeitaLong ]
] def

/TitlesTastingNotes [ Circlearrays {0 get} forall ] def
/Titles [ TitlesTastingNotes {dup cvi 1912 gt {2 2 getinterval} if} forall ] def
/TitlesVoteRecorder TitlesTastingNotes def

/Belowtitles [ Circlearrays {1 get dup taylor ne {pop ()} if} forall ] def 
/Overtitles [ Circlearrays {1 get
	1 {
		dup vargellasLong eq {pop vargellasShort exit} if
		dup specialquintaLong eq {pop specialquintaShort exit} if
		dup terrafeitaLong eq {pop terrafeitaShort exit} if
		pop ()
	} repeat
} forall ] def
/SubtitlesTastingNotes [ Circlearrays {1 get} forall ] def
/SubtitlesVoteRecorder [
	0  1  Belowtitles length 1 sub
	{1 {
		dup Belowtitles exch get dup length 0 gt {exch pop exit} {pop} ifelse
		dup Overtitles  exch get dup length 0 gt {exch pop exit} {pop} ifelse
		pop ()
	} repeat} for
] def  % /SubtitlesVoteRecorder
/SubtitlesDecantingNotes SubtitlesVoteRecorder def
/SubtitlesCorkDisplay SubtitlesTastingNotes def

/Names [
	(DBFG)  (DRT)
	[(JDA) {-0.06 Kern} (W)]  (THRA)  [(RA) {-0.06 Kern} (YC)]
	(MW)  (AHB)  (WS)  (DB)  (CMAG)  (TF)  (BMHR)  (CS)  (AP)  ()
] def

/PaperType /A3 def  % /A4 /A3 /B4 /USL /USLegal /USL2 [SmallerPts LargerPts]
/Orientation /Landscape def  % /Landscape /Portrait

/TastingNotesCirclesBehind true def

/HeaderLeftText [(The Bung Hole WC1V 6DT, Friday 22) {SuperscriptOn} (nd) {SuperscriptOff} ( March 2013)] def
/HeaderCenterText {TypeOfPagesBeingRendered /Glasses eq {SheetNum 0 eq} {true} ifelse {[taylor (, and relatives)]} {()} ifelse} def

/HeaderRightText {TypeOfPagesBeingRendered /Glasses eq {SheetNum 1 eq} {true} ifelse {[
	(www) {-0.092 Kern} (.taylor.pt, )
	(www) {-0.092 Kern} (.) {-0.092 Kern} (ThePortForum.com, )
	% (www) {-0.092 Kern} (.) {-0.12 Kern} (W) {-0.092 Kern} (orldOf) {+0.12 Kern} (Port.de, )
	% (www.jacob-head.com/port,)
	(www) {-0.092 Kern} (.jdawiseman.com)
]} {()} ifelse} def
/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=6731&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2013/20130322_taylor.pdf)   (Latest version this placemat)
	(http://www.taylor.pt/)  (Taylor)
	(http://www.davy.co.uk/bunghole/)  (The Bung Hole)
	(http://www.streetmap.co.uk/map.srf?x=530848&y=181628&pc=WC1V+6DT)  (London WC1V 6DT)
] def
/HeaderFooterCenterX {TypeOfPagesBeingRendered /Glasses eq {GlassPositions SheetNum get dup 6 get 0 get exch 2 get 0 get add 2 div} {0.5} ifelse} def

/PrePourNumCopies 1 def
/DecantingNotesNumCopies 1 def
/CorkDisplay true def
/StickyLabelsNumCopies 2 def
/StickyLabelsTypes [ 0 ] def

/TitlesFont     /Tahoma-Bold def
/OvertitlesFont  /LiberateBold def
/CircletextFont /BookmanOldStyle def
/BelowtitlesFont  OvertitlesFont def

/ColourSchemeTitles /MidGrey def  % /MidGrey /Black

/GlassesOnSheets [
	[
		 0   1   2   3
		   5   6   7
		10  11  12  13
		  15  16  17
	]
	[
								 3   4
								   8   9
								13  14
								  18  19
								 
	]
] def  % /GlassesOnSheets

/PermittedPackingStyles [ {SheetNum 0 eq {/PseudoHexagonal} {[ [0 3 3 3] [2 3 3 3]  [1 2 3 2] [3 2]  [0 1 3 1] [2 1 3 1]  [1 0 3 0] [3 0] ]} ifelse} ] def

/WaterCountTarget 10 def  % intended number of tickable squares
/WaterCountMaxRowLengths [ 4 3 2 1 ] def
/WaterCountsOverrideShowEverySheet false def
/WaterCountShowLeft [  true false ] def
/WaterCountShowRight [ false true ] def

/CircletextsMinCopies 6 def

/BelowtitleMaxFontSizeProportionTitles 0.75 def
/OvertitleMaxFontSizeProportionTitles 0.75 def
/FontSizesRatioTitlesMin 1.4 def
/FontSizesRatioAboveBelowOverMin 99 def

/ShapesInTitles {specialquintaLong Circlearrays WithinTitles get 1 get eq} def
/ShapesInOvertitles false def
/ShapesToUse [/Star] def  % At least one of: /Flower /Star
/ShapesTitlesFill {1 setgray fill} def

/CrossHatchingTitles {taylor Circlearrays WithinTitles get 1 get eq} def
/CrossHatchingBelowtitles false def
/CrossHatchingOvertitles false def
/CrossHatchingCentreX {GlassPositions SheetNum get  SheetNum 0 eq {0 get 0 get} {dup 0 get 0 get 4 mul exch 1 get 0 get -3 mul add} ifelse} def  % /Name /Left /Center /Right

/InlineTitles {Circlearrays WithinTitles get 1 get dup vargellasLong eq exch terrafeitaLong eq or} def
/InlineTitlesMaxNumberContours {Circlearrays WithinTitles get 1 get vargellasLong eq {8} {2} ifelse} def

/MarginL 18 def  % Left
/MarginB {TypeOfPagesBeingRendered dup /PrePour eq exch /VoteRecorder eq or {30} {MarginL} ifelse} def  % Bottom
Software version: 18:00 Friday 15th March 2013.

Lots happening.

• Various strings were used multiple times, so given identities (taylor, specialquintaShort, vargellasShort, terrafeitaShort, specialquintaLong, vargellasLong, terrafeitaLong).

• As is usual, much of the wine-specific action driven by the data in Circlearrays. Logic on this used in Titles (alas some its logic being redundant), Overtitles, SubtitlesVoteRecorder, ShapesInTitles, CrossHatchingTitles, InlineTitles, and InlineTitlesMaxNumberContours.

One of the two A3 pages to be guillotined and overlapped on the other, being affixed with double-sided sticky tape. That caused complications.

• Observe the layout of GlassesOnSheets, and complicated value of the only item of PermittedPackingStyles when SheetNum == 1.

• There were also complications for HeaderCenterText and HeaderRightText, and careful positioning of the centre with HeaderFooterCenterX, which was recently re-named.

• The full-declaration Taylors had CrossHatching. Because there was to be one physical sheet, the CrossHatchingTitles needed a common centre, requiring code in CrossHatchingCentreX.

• Because of the shortage of table space, the left/bottom/right margins were slightly compressed, from the usual 30, to 18. Except in the ‘backstage’ papers, which tend to have a footer, for which the bottom margin wasn’t compressed. Hence the code in MarginB.

And one thing not happening properly.

• Because the T35 and TV70 appear on both glasses sheets, they have twice as many labels as the others. Error. What to do? This could have been fixed in the parameters by making StickyLabelsNumCopies much more complicated, but that would be nasty. Of course there can’t be a !StickyLabels! equivalent of GlassesClusteredOnVoteRecorders, so it can’t be fixed that way. So instead I will code StickyLabels! equivalents to PrePourRemoveDuplicatesByWithinTitles and PrePourSortByWithinTitles.
User avatar
jdaw1
Dow 1896
Posts: 24118
Joined: 14:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Tuesday 2nd April 2013, 1983-1985 double Horizontal, at The Bung Hole (placemats, planning and arrangements, review of the evening).

Image Image Image Image

Code: Select all

/Warre [(W) {-0.06 Kern} (arre)] def
/Taylor [(T) {-0.06 Kern} (aylor)] def

/Circlearrays [
	[ (Dow) (1983) ]
	[ (Dow) (1985) ]
	[ (Graham) (1983) ]
	[ (Graham) (1985) ]
	[ Warre (1983) ]
	[ Warre (1985) ]
	[ Taylor (1983) ]
	[ Taylor (1985) ]
	[ (Fonseca) (1983) ]
	[ (Fonseca) (1985) ]
] def

/Titles [
	(D83)  (D85)
	(G83)  (G85)
	(W83)  (W85)
	(T83)  (T85)
	(F83)  (F85)
] def

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

/Names [
	(DJ)
	(MDB)  % DRT's +1, Daniel, right-handed
	(DRT)
	[(JDA) {-0.06 Kern} (W)]
	(THRA) (PW) (AHB)
	()
] def

/HeaderLeftText [(The Bung Hole, Tuesday 2) {SuperscriptOn} (nd) {SuperscriptOff} ( April 2013)] def
/HeaderCenterText [(1983 versus 1985)] def

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=6813&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2013/20130402_1983_1985.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&pc=WC1V+6DT)  (London WC1V 6DT)
	(http://en.wikipedia.org/wiki/1983)  (1983 at Wikipedia)
	(http://en.wikipedia.org/wiki/1985)  (1985 at Wikipedia)
] def

/DecanterLabelsNumCopies {SheetNum 1 eq {1} {0} ifelse} def
/CorkDisplay true def

/TitlesFont     /BlueHighwayFreeCondensed def
/CircletextFont /Cochin-Bold def

/FontSizesRatioTitlesMin 1.1 def

/GlassesOnSheets [  0 1 1 {[exch 2 Titles length 1 sub {} for]} for  ] def
/GlassesOnTastingNotePages GlassesOnSheets def

/GlassesClusteredOnVoteRecorders [
	GlassesOnTastingNotePages 0 1 getinterval
	GlassesOnTastingNotePages 1 1 getinterval
	GlassesOnTastingNotePages
] def  % triple-depth array, same length as VoteRecorderTopTexts and VoteRecorderShowTotalRow
/VoteRecorderShowTotalRow [ false false false ] def  % Must be same length as GlassesClusteredOnVoteRecorders

/VoteRecorderTopTexts [  % Must be same length as GlassesClusteredOnVoteRecorders, each sub-array containing some number of TopTexts
	[ [/quoteright (83 Of The Night)] ]
	[ [/quoteright (85 Of The Night)] ]
	[ (Wine Of The Night)  (Q:) ]
] def  % Must be same length as GlassesClusteredOnVoteRecorders

/BackgroundTextsGlasses true def
/BackgroundTextsGlassesTexts [ (83) (85) ] def
Software version 23:45 Monday 1st April 2013.

• The code in DecanterLabelsNumCopies, as only an F85 label was needed. At first attempt this didn’t work code was fixed so that DecanterLabelsNumCopies could depend on SheetNum.

• Cute definition of GlassesOnSheets.
User avatar
jdaw1
Dow 1896
Posts: 24118
Joined: 14:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Wednesday 17th April 2013, Oscar in London at The Bung Hole on the day of the funeral of Baroness Thatcher (placemats, planning and arrangements).

Image   Image   Image   Image

Code: Select all

/Names [
	(OJMQ)  % OJMQ = Oscar Quevedo
	(AHB)
	(CMAG)
	[(DR) {+0.04 Kern} (T)]
	[(JDA) {-0.12 Kern} (W)]
	(BMHR)
	[(ID) {+0.02 Kern} (J)]  % Ian Johns
	(WS)
	(RMW)  % Ronnie Roots
	()
] def

/Circlearrays [
	[ (Oscar Quevedo) ]
	[ (Alex Bridgeman) ]
	[ [(Christ) {+0.04 Kern} (opher Gee)] ]
	[ [(Derek Turn) {-0.04 Kern} (bull)] ]
	[ [(J) {-0.04 Kern} (ulian Wiseman)] ]
	[ (Ben Read) ]
	[ (Ian Johns) ]
	[ [(W) {-0.08 Kern} (olfgang S) {-0.04 Kern} (t) {+0.04 Kern} (arz)] ]
	[ [(Ronnie Root) {+0.04 Kern} (s)] ]
	[ (+) ]
	[ /dagger ]
	[ /daggerdbl ]
] def

/Titles [
	(OJMQ)  % OJMQ = Oscar Quevedo
	(AHB)
	(CMAG)
	[(DR) {+0.02 Kern} (T)]
	[(JDA) {-0.02 Kern} (W)]
	(BMHR)
	(IDJ)
	(WS)
	(RMW)  % Ronnie Roots
	counttomark dup Circlearrays length exch sub Circlearrays 3 1 roll getinterval aload pop
] def

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

/TastingNotesCirclesBehind true def

/HeaderLeftText [(At The Bung Hole on the day of the funeral of Baroness Thatcher)] def
/HeaderCenterText [(Oscar in London)] def
/HeaderRightText [
	(www) {-0.02 Kern} (.QuevedoPortWine.com, )
	(www) {-0.02 Kern} (.) {-0.092 Kern} (ThePortForum.com, )
	(www) {-0.02 Kern} (.) {-0.04 Kern} (jdawiseman.com)
] def

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=6834&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2013/20130417_oscar.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&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.quevedoportwine.com/)  (QuevedoPortWine.com)
	(http://www.margaretthatcher.org/)  (MargaretThatcher.org)
] def

/StickyLabelsNumCopies 1 def
/StickyLabelsTypes [0] def

/GlassesClusteredOnVoteRecorders [
	{GlassesOnTastingNotePages} dup
] def  % triple-depth array, same length as VoteRecorderTopTexts and VoteRecorderShowTotalRow
/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

/VoteRecorderCrossedBox {VoteRecorderShowTotalRow VoteRecorderSheetNum get  NameNum WithinTitles eq  NameNum Names length 1 sub lt  and and} def  % replace 'false' with code referring to WithinTitles and NameNum

/TitlesFont     /AvenirNextCondensed-DemiBold def
/CircletextFont /Modern-Regular def  % Very sloppy letter spacing: don't use again.

/FontSizesRatioTitlesMin 9999 def

/CrossHatchingTitles true def
/CrossHatchingCentreY /Name def  % /Name /Bottom /Middle /Top
Software version 18:00 Monday 15th April 2013.

• Don’t use the font /Modern-Regular as it has sloppy letter spacing.
User avatar
jdaw1
Dow 1896
Posts: 24118
Joined: 14:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Tuesday 10th September 2013, at The Bung Hole (placemats, planning and arrangements).

Image Image

Code: Select all

/Names [
	(THRA) (AHB) (DRT)
	[(JDA) {-0.03 Kern} (W)]
	()
] def

/Circlearrays [  [(+)]  Names {dup length 0 eq {pop} {[exch]} ifelse} forall  ] def
/Titles Circlearrays def

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

/HeadersLeft [
	0  [(The Bung Hole, T) {-0.03 Kern} (uesday 10) {SuperscriptOn} (th) {SuperscriptOff} ( September 2013)]
] def  % /HeadersLeft
/HeadersCenter [
	0  [/quotedblleft (Bring a bottle wrapped in foil) /quotedblright]
] def  % /HeadersCenter

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=7370&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2013/20130910.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

/VoteRecorderCrossedBox
{
	VoteRecorderShowTotalRow VoteRecorderSheetNum GetEU dup
	{
		pop Titles WithinTitles get ASCIIfy ThisName ASCIIfy eq ThisName length 0 gt and
		Titles WithinTitles get ASCIIfy (DRT) eq {pop ThisName ASCIIfy (JDAW) eq} if
	} if
} def


/TitlesFont     /GillSansMT-Condensed def
/CircletextFont /BookmanOldStyle def

/VerticalMiddlingTitles {Titles WithinTitles get ASCIIfy (+) eq {/MatchNone} {/MatchString} ifelse} def  % /MatchNone /MatchRow /MatchPage /MatchAll /MatchString
Software version: 11:00 Monday 9th September 2013.

Most of this is vanilla. Perhaps worthy of note:

• Recent re-parametrisation of HeadersLeft etc, compound strings being preceded by the PageOrdering! integer from which they apply. In this case easy, as all pages have the same headers.

VoteRecorderCrossedBox is mostly its default, with one extra line as JDAW knows more about DRT’s bottle than does DRT.

VerticalMiddlingTitles also mostly its default, except that it looks wrong for a ‟+” which would be too high. So the ‟+” is centred without regard for the vertical position of others it does not need to match anything.

Edit on 2nd Oct 2013: the new parameter VerticalMiddlingTitlesAlwaysMatchNone has eliminated the need for the code in VerticalMiddlingTitles.
User avatar
jdaw1
Dow 1896
Posts: 24118
Joined: 14:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Wednesday 25th September 2013, at The Bung Hole (placemats, planning and arrangements).

Image Image

Code: Select all

/JDAW [(JDA) {-0.05 Kern} (W)] def

/Circlearrays [
	[ (+) ]
	[ (Unknown)               (AHB) ]
	[ (Gonzalez Byass) (1970) JDAW ]
	[ [(T) {-0.05 Kern} (aylor)]  (1970)   (AJM) ]
	[ (Graham)         (1970) (Magnum) (WS) ]
] def

/Titles [
	(+)
	(???)
	(GB70)
	(T70)
	(G70)
] def

/Belowtitles [ Circlearrays {dup length 4 ge {2 get} {pop ()} ifelse} forall ] def

/Names [
	(AHB) JDAW (WS)
	(AJM)  % Alex M, rightie
	[(RA) {-0.05 Kern} (YC)]
	()
] def

/HeadersLeft [
	0  [(The Bung Hole, W) {-0.06 Kern} (ednesday 25) {SuperscriptOn} (th) {SuperscriptOff} ( September 2013)]
] def  % /HeadersLeft
/HeadersCenter [
	0  [(Bring A Bottle of Vintage Port)]
] def  % /HeadersCenter

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=7389&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2013/20130925.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

/PermittedPackingStyles [
	[ /RectangularDislocation /Mirror ]
	/Diamonds
	/DiamondsAndRectangular
] def  % /PermittedPackingStyles

/TitlesFont     /GillSansMT-Condensed def
/CircletextFont /BookmanOldStyle def

/CircletextsMinCopies 4 def

/VerticalMiddlingTitles {Titles WithinTitles get ASCIIfy (+) eq {/MatchNone} {/MatchString} ifelse} def
/VerticalMiddlingStringTitles (GB70) def  % Benchmark characters
Software version: 22:00 Monday 22nd September 2013

Again, mostly vanilla.
  • In PermittedPackingStyles the first possibility, the used possibility, is [ /RectangularDislocation /Mirror ], in which the /Mirror is non-standard.
  • Copied from the placemats of the 10th of the same month, VerticalMiddlingTitles, and also a non-standard value of VerticalMiddlingStringTitles which probably made little difference.
Edit on 2nd Oct 2013: the new parameter VerticalMiddlingTitlesAlwaysMatchNone has eliminated the need for the code in VerticalMiddlingTitles.
User avatar
jdaw1
Dow 1896
Posts: 24118
Joined: 14:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Wednesday 2nd October 2013, at The Bung Hole (placemats, and planning and arrangements).

Image Image

Code: Select all

/Names [ (TLW) (AHB) (JDAW) (RAYC) (THRA) (KZZM) () ] def

/Circlearrays [ Names {[exch]} forall pop ] def
/Titles Circlearrays def
/Belowtitles [ Circlearrays length {()} repeat ] def

/HeadersLeft [
	0  [(The Bung Hole, Wednesday 3) {SuperscriptOn} (rd) {SuperscriptOff} ( October 2013)]
] def  % /HeadersLeft
/HeadersCenter [
	0  [(Port)]
] def  % /HeadersCenter

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=7372&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2013/20131003.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

/TitlesFont     /Harrington def
/CircletextFont /Harrington def
/NamesFont      /Optima-Bold 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
Software version: 23:00 Sunday 29th September 2013

Oops: wrong date on the placemats, it being the 2nd rather than the 3rd.
User avatar
jdaw1
Dow 1896
Posts: 24118
Joined: 14:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Tuesday 8th October 2013, at The Bung Hole, because Andy Velebil was visiting from California (placemats, planning and arrangements, review).

Image Image Image

Code: Select all

/Taylor [(T) {-0.05 Kern} (aylor)] def
/Pinhao [(Pinh) /atilde (o)] def
/JDAW [(JDA) {-0.05 Kern} (W)] def
/RAYC [(RA) {-0.05 Kern} (YC)] def

/Circlearrays [
	[ [ Taylor ( ) Pinhao]  (1931)  (CMAG) ]
	[ [(C) /aacute (lem)]  (1935)  (THRA) ]
	[ (Graham)  (DRT) ]
	[ Taylor  (1970)  JDAW ]
	[ (Croft)  (1970)  (PW) ]
	[ (Martinez)  (1970)  (AHB) ]
	[ [(W) {-0.05 Kern} (arre)]  (1970)  (ADV) ]
	[ (Cockburn)  (1970)  (IDJ) ]
	[ (Quarles Harris)  (1970)  RAYC ]
	[ (Fonseca)  (1970)  (CPR) ]
	[ (+) ]
	[ (*) ]
] def

/Titles [
	[(T3) {-0.04 Kern} (1)]
	[(C) /aacute {-0.02 Kern} (3) {-0.04 Kern} (5)]
	[(G7) {-0.04 Kern} (0)]
	[(T) {+0.04 Kern} (7) {-0.04 Kern} (0)]
	[(Cr) {-0.08 Kern} (7) {-0.04 Kern} (0)]
	[(Mz) {-0.08 Kern} (7) {-0.04 Kern} (0)]
	[(W7) {-0.04 Kern} (0)]
	[(Ck) {-0.08 Kern} (7) {-0.04 Kern} (0)]
	[(Q) {-0.04 Kern} (H) {-0.04 Kern} (7) {-0.04 Kern} (0)]
	(F77)
	(+)
	(*)
] def

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

/Names [
	(ADV) (DRT) JDAW (IDJ) (CMAG) (PW) (THRA) (AHB) (CPR) RAYC
	()
] def

/HeadersLeft [
	0  [(The Bung Hole, T) {-0.05 Kern} (uesday 8) {SuperscriptOn} (th) {SuperscriptOff} ( October 2013)]
] def  % /HeadersLeft
/HeadersCenter [
	0  [(Port with Andy Velebil)]
] def  % /HeadersCenter
/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=7329&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2013/20131008.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

/TitlesFont     /GilliusADFNo2-BoldCond def
/CircletextFont /BookmanOldStyle def

/BelowtitleMaxFontSizeProportionTitles 0.25 def
/FontSizesRatioTitlesMin 99 def
Software version: 23:00 Thursday 3rd October 2013.

FontSizesRatioTitlesMin is a numeric parameter, defaulting to 2. So either the font sizes of the titles must be the same, or they must differ by a ratio ≥2. The purpose is that there shouldn’t be a Title at 180 point, and another at 175, and another at 160. Make them all 160. But if one Title is very long, so fits only if ≤75 point, have that at 75 and the others at 160. (If it would fit at 82 point, then the 160 shrinks to 82, and the 180 to 175, thus maintaining ratio condition.) So, in effect, /FontSizesRatioTitlesMin 99 def forces all the Titles to be the same size. In this particular case, it shrinks the ‟+” and ‟*” to the same font size as the others.

Edit: at the table, an error was noticed. There was a conflict of dates between the Title ‟(F77)” and the Circlearray ‟[ (Fonseca) (1970) (CPR) ]”. Oops: both should have been !77. Two oops in a row: oops oops.
User avatar
jdaw1
Dow 1896
Posts: 24118
Joined: 14:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

On Friday 11th and Saturday 12th October 2013, at The Cantley House Hotel and The Walter Arms, in Wokingham, to celebrate the Quinquagenary of AHB’s 1963 birth with a horizontal (placemats for 1963 VPs, Review of the event as a whole).

First session, Evening Friday 11th, PageOrdering = 0
Image Image Image

Second session, Afternoon Saturday 12th, PageOrdering = 10
Image Image Image

Third session, Evening Saturday 12th, PageOrdering = 20
Image Image Image

Various sessions, though mostly from the first
Image Image Image
Image Image
Image

Code: Select all

/Vintage [(1) {-0.09 Kern} (963)] def

% [ Title LongName Vintage ]
/PortData [
	% Friday evening
	[  (VS)   (Viera de Souza)  Vintage  ]
	[  (QH)   (Quarles Harris)  Vintage  ]
	[  (GC)   (Gould Campbell)  Vintage  ]
	[  (Ck)   (Cockburn)  Vintage  ]
	[  (G)    [(Graham) {-0.06 Kern} /quoteright (s)]  Vintage  ]

	[  (Kh)   (Krohn)  Vintage  ]
	[  [(P) /ccedilla]  [(Po) /ccedilla (as)]  Vintage  ]
	[  (Mg)   (Morgan)  Vintage  ]
	[  (Av)   (Avery)  Vintage  ]
	[  (F)    [(F) {-0.03 Kern} (onseca)]  Vintage  ]

	[  (RV)   [(Rebello V) {-0.06 Kern} (alente)]  Vintage  ]
	[  (Rs)   (Quinta de la Rosa)  Vintage  ]
	[  (S)    (Sandeman)  Vintage  ]
	[  (Dl)   (Dalva)  Vintage  ]
	[  (Cn)   (Constantino)  Vintage  ]


	% Saturday afternoon
	[  (Sb)   (Quinta do Sibio)  Vintage  ]
	[  (RVi)  (Real Vinicola)  Vintage  ]
	[  (RCV)  [(Real Companhia V) {-0.06 Kern} (elha)]  Vintage  ]
	[  (Ad)   (Adams)  Vintage  ]
	[  (RO)   (Royal Oporto)  Vintage  ]

	[  (Dm)   (Dolamore)  Vintage  ]
	[
		[(B) {-0.02 Kern} (B) {-0.02 Kern} (R)]
		[
			(Berr) {+0.04 Kern} (y Bro) 
			{
				/BrosOriginalFontSize CurrentFontSize def
				/BrosHeight-s (s) StringHeight def
				/BrosHeight-dot (.) StringHeight def
				/BrosHeight-o (o) StringHeight def
				/BrosVerticalOffset  BrosHeight-o  BrosHeight-s 1.5 div BrosHeight-dot div 1 add  div  def
				CurrentFontName   
				BrosOriginalFontSize BrosHeight-o mul  BrosHeight-dot 1.5 mul BrosHeight-s add  div   
				selectfont
				/BrosWidth-s (s) StringWidthRecursive def
				/BrosWidth-dot (.) StringWidthRecursive def

				BrosWidth-dot BrosWidth-s gt {BrosWidth-dot BrosWidth-s sub 2 div} {0} ifelse  BrosVerticalOffset  rmoveto
			}
			(s)
			{BrosWidth-s BrosWidth-dot add -2 div   BrosVerticalOffset neg   rmoveto}
			(.)
			{
				BrosWidth-s BrosWidth-dot gt {BrosWidth-s BrosWidth-dot sub 2 div 0 rmoveto} if
				CurrentFontName BrosOriginalFontSize selectfont
			}
			( & Rudd)
		]  % Berry Bros & Rudd
		Vintage
	]
	[  (T)    [(T) {-0.06 Kern} (aylor)]  Vintage  ]
	[  (Cr)   (Croft)  Vintage  ]
	[  (Ni)   (Niepoort)  Vintage  ]

	[  []  ]
	[  (Mk)   (Mackenzie)  Vintage  ]
	[  (Fd)   [(F) {-0.03 Kern} (euerheerd)]  Vintage  ]
	[  (O)    [(Of) /fl (ey)]  Vintage  ]
	[  (Mz)   (Martinez)  Vintage  ]


	% Saturday evening
	[  (MC)   [(Messias Quinta do Cach) /atilde (o)]  Vintage  ]
	[  (W)    [(W) {-0.06 Kern} (arre)]  Vintage  ]
	[  (D)    (Dow)  Vintage  ]
	[  (N)    (Quinta do Noval)  Vintage  ]
	[  (NN)   (Quinta do Noval Nacional)  Vintage  ]

	[  (A)    (J. H. Andresen)  Vintage  ]
	[  (B&I)  [(Borges & Irm) /atilde (o)]  Vintage  ]
	[  (Df)   (Delaforce)  Vintage  ]
	[  (PS)   (Pinto dos Santos)  Vintage  ]
	[  (Cv)   (Cavendish)  Vintage  ]

	[  (GB)   (Gonzalez Byass)  Vintage  ]
	[  [(C) /aacute]  [(C) /aacute (lem)]  Vintage  ]
	[  [(C) /aacute {-0.015 Kern} (F)]  [(C) /aacute (lem Quinta da Foz)]  Vintage  ]
	[  (B)    (Burmester)  Vintage  ]
	[  (Fr)   [(F) {-0.03 Kern} (erreira)]  Vintage  ]
] bind def  % PortData




/Circlearrays [ PortData {dup length 1 sub 1 exch getinterval} forall ] def
/Titles [ PortData {0 get} forall ] def
/Belowtitles [ PortData {dup length 4 ge {3 get} {dup length 3 ge {2 get dup Vintage eq {pop ()} if} {pop ()} ifelse} ifelse} forall ] def
/TitlesCorkDisplay [ PortData {dup length 2 ge {1 get} {pop ()} ifelse} forall ] def

/Names [
	(Alex)  % AHB, the birthday boy
	(Andy) (Axel) (Ben) (Chris) (Christopher) (Derek) (Julian) (Nicos) (Ray) (Rob) (Roy)
	[(T) {-0.05 Kern} (om)]
	[(W) {-0.04 Kern} (olfgang)]
	()
] def
/LeftHanders [ (Chris)  (CSD) (Chris D.) ] def


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


/HeadersLeft [
	21   [(Friday 11) {SuperscriptOn} (th) {SuperscriptOff} ( and Saturday 12) {SuperscriptOn} (th) {SuperscriptOff} ( October 2013)]
	300  1 index

	0   [(Evening, Friday 11) {SuperscriptOn} (th) {SuperscriptOff} ( October 2013)]
	200   1 index

	10   [(Afternoon, Saturday 12) {SuperscriptOn} (th) {SuperscriptOff} ( October 2013)]
	210   1 index

	20   [(Evening, Saturday 12) {SuperscriptOn} (th) {SuperscriptOff} ( October 2013)]
	22   1 index
	220   1 index
] def  % /HeadersLeft


/HeadersCenter [
	21   [(1963 Quinquagenary Celebration)]
	300  1 index

	0   [(1963 Quinquagenary Celebration, Part I)]
	200   1 index

	10   [(1963 Quinquagenary Celebration, Part II)]
	210   1 index

	20   [(1963 Quinquagenary Celebration, Part III)]
	22   1 index
	220   1 index
] def  % /HeadersCenter


/HeadersRight [
	21   [(W) {-0.08 Kern} (okingham)]
	300  1 index

	0   [(The Cantley House Hotel, W) {-0.08 Kern} (okingham)]
	20   1 index
	22   1 index
	200   1 index
	220   1 index

	10   [(The W) {-0.08 Kern} (alter Arms, W) {-0.08 Kern} (okingham)]
	210   1 index
] def  % /HeadersCenter


/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=7404&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2013/20131011_1963_ahb.pdf)   (Latest version this placemat)
	(http://www.cantleyhotel.co.uk/)  (Cantley House Hotel)
	(http://www.thewalterarms.com/)  (The Walter Arms)
%	(http://www.streetmap.co.uk/map.srf?x=480926&y=169738&z=106&pc=RG40+5QG)  (RG40 5QG, streetmap.co.uk)
%	(https://maps.google.co.uk/maps?q=RG40+5QG&sll=52.83,-2.3278&z=17)  (RG40 5QG, maps.google.co.uk)
%	(http://www.bing.com/maps/default.aspx?where1=RG40+5QG&cp=51.4205~-0.8381)  (RG40 5QG, bing.com)
] def
/FooterCenterText-Backstage  ExternalLinks 0 get  def


/DecanterLabelsNumCopies 0 def
/PrePourNumCopies {Circlearrays WithinTitles get length 0 eq {0} {1} ifelse} def
/DecantingNotesNumCopies 1 def
/PrePourReverseOrder false def
/StickyLabelsNumCopies /PrePourNumCopies load def
/StickyLabelsTypes [0] def

/NamesPlaceNames [
	Names dup dup
	[ % Friday evening
		[(Scallops; Black & blue; ) /emdash]  % Alex
		[(T) {-0.05 Kern} (errine; Medium-rare, chips; ) /emdash]  % Andy
		[(T) {-0.05 Kern} (errine; Medium-rare, chips; Cheese)]  % Axel
		(Antipasti; Medallions; Cheese)  % Ben
		[(T) {-0.05 Kern} (errine; Medallions, chips; Cheesecake)]  % Chris
		[(Scallops; Medium-rare, chips; T) {-0.06 Kern} (offee)]  % Christopher
		[(T) {-0.05 Kern} (errine; Medium-rare, chips; ) /emdash]  % Derek
		[(Asparagus; Pork & black pud.; Cr) /egrave (me br) /ucircumflex (l) /eacute (e)]  % Julian
		[(Cray) /fi (sh; Medium-rare, chips; T) {-0.06 Kern} (orte)]  % Nicos
		[(Scallops; Pork & black pud.; ) /emdash]  % Ray
		[(Cray) /fi (sh; Medallions; Cheese)]  % Rob
		[(Scallops; Medium-rare, chips; ) /emdash]  % Roy
		(Soup; Medium-rare, new p., peppercorn; Cheesecake)  % Tom
		[(T) {-0.05 Kern} (errine; Medium-rare, chips; Lemon tart)]  % Wolfgang
		()  % _
	]
	[ % Saturday lunch
		(Lamb kidneys; Duck & bacon salad, small)  % Alex
		[(Hummus; Pizza, F) {-0.12 Kern} (.d.Capra, big)]  % Andy
		(Soup; Duck & bacon salad, small)  % Axel
		[(Lamb kidneys; T) {-0.05 Kern} (agliatelle, big)]  % Ben
		[(Mushroom; Pizza, F) {-0.12 Kern} (.d.Capra; )]  % Chris
		(Lamb kidneys; Duck & bacon salad, big)  % Christopher
		(Parfait; Duck & bacon salad, small)  % Derek
		(Soup; Moussaka)  % Julian
		(Crab; Duck & bacon salad, big)  % Nicos
		(Parfait; Duck & bacon salad, big)  % Ray
		(Parfait; Linguini, big)  % Rob
		[(Prawns; T) {-0.05 Kern} (agliatelle, big)]  % Roy
		(Soup; Spaghetti, big)  % Tom
		(Parfait; Moussaka)  % Wolfgang
		()  % _
	]
	[ % Saturday evening
		[(Melon; Roast beef; Pro) /fi (teroles)]  % Alex
		[(Melon; Roast beef; Fruit)]  % Andy
		(Melon; Roast beef; Cheese)  % Axel
		(Melon; Roast beef; Cheese)  % Ben
		[(T) {-0.05 Kern} (errine; Risotto; Cheese)]  % Chris
		(Soup; Roast beef; Cheese)  % Christopher
		(Melon; Roast beef; Cheese)  % Derek
		[(Soup; Roast beef; Pro) /fi (teroles)]  % Julian
		[(T) {-0.05 Kern} (errine; Roast beef; Eton)]  % Nicos
		[(T) {-0.05 Kern} (errine; Roast beef; Cheese)]  % Ray
		(Soup; Roast beef; Eton)  % Rob
		(Soup; Roast beef; Eton)  % Roy
		(Soup; Roast beef; Cheese)  % Tom
		[(T) {-0.05 Kern} (errine; Roast beef; Cheese)] % Wolfgang
		[]  % _
	]
] def  % /NamesPlaceNames

/GlassesOnSheets [
	0 5 PortData length 1 sub {[ exch dup 4 add 1 exch {} for ]} for
] def  % /GlassesOnSheets
/GlassesOnTastingNotePages [ GlassesOnSheets {[ exch {dup PortData exch get length 1 le {pop} if} forall ]} forall ] def

/PermittedPackingStyles [
	/RectangularDislocation
	/Diamonds
	/DiamondsAndRectangular
	[ /Adjusted5  /OnlyIfOrientation /Landscape ]
	[ /Adjusted7 ]
%	[ /PostsAndLintel  /CentralGlasses 1  /GlassesNumMin 7  /OnlyIfOrientation /Landscape ]
%	[ /Arch            /CentralGlasses 1  /GlassesNumMin 6  /OnlyIfOrientation /Landscape ]
	[ /DiamondsPlus  /ImprovementPointsMin 0 ]
	[ /RectangularAlternateSplitNudge  /GlassesNumMin 10 ]
	[ /RectangularAlternateNudge  /ImprovementPointsMin 2 ]
] def  % /PermittedPackingStyles

/VoteRecorderTopTexts [  % Must be same length as GlassesClusteredOnVoteRecorders, each sub-array containing some number of TopTexts
	[ (1963 Vintage Port Of The Session)  (Q:) ]
	dup dup
	[ (Port Of The Weekend)  (Q:) ]
] def  % Must be same length as GlassesClusteredOnVoteRecorders
/VoteRecorderShowTotalRow [ VoteRecorderTopTexts length {false} repeat ] def  % Must be same length as GlassesClusteredOnVoteRecorders
/GlassesClusteredOnVoteRecorders [
	GlassesOnTastingNotePages 0 3 getinterval
	GlassesOnTastingNotePages 3 3 getinterval
	GlassesOnTastingNotePages 6 3 getinterval
	GlassesOnTastingNotePages
] def  % triple-depth array, same length as VoteRecorderTopTexts and VoteRecorderShowTotalRow

/VoteRecorderTotalColTitle [(T) {-0.05 Kern} (otal)] def

/GlassesClusteredOnCorkDisplay [ GlassesOnTastingNotePages 0 3 getinterval  GlassesOnTastingNotePages 3 3 getinterval  GlassesOnTastingNotePages 6 3 getinterval ] def

/Rotate180AlternateNames true def
/PageOrderingNonDecanterLabelGlasses [ 0 0 0  10 10 10  20 20 20 ] def
/PageOrderingTastingNotePages PageOrderingNonDecanterLabelGlasses def
/PageOrderingVoteRecorder [  0  10  20 21  ] def
/PageOrderingDecantingNotes [ PageOrderingNonDecanterLabelGlasses {dup 20 eq {pop 22} if} forall ] def
/PageOrderingCorkDisplay [ 0 10 22 ] def
/PageOrderingPrePourPages PageOrderingDecantingNotes def  % Of length the same as GlassesOnSheets, not necessarily being of length PrePourNumCopies
/PageOrderingPlaceNames [ 2  12  23   3 copy ] def  % Possible change, if one is folding place-name pages in advance, is to replace this 0 with 1.
/PageOrderingDecanterLabels [ 200 dup dup   210 dup dup  220 dup dup ] def  % By default decanter-label pages appear together at the end, to facilitate advance manufacture
/PageOrderingStickyLabels [ GlassesOnSheets length {300} repeat ] def  % Of length the same as GlassesOnSheets, not necessarily being of length StickyLabelsNumCopies
/PageOrderingSections [
	  0  ()
	  0  [/section ( Friday evening, Cantley House)]
	 10  ()
	 10  [/section ( Saturday afternoon, Walter Arms)]
	 20  ()
	 20  [/section ( Saturday evening, Cantley House)]
	200  ()
	200  [/section ( Multiple sessions)]
] def  % Array of even length, alternately elements of the PageOrder...s, and compound strings

/TitlesFont     {TypeOfPagesBeingRendered /CorkDisplay eq {CircletextFont} {/GillSansMT-Condensed} ifelse} def
/CircletextFont /BookmanOldStyle def
/NamesFont      /TitlesFont load def
/BackgroundTextsGlassesFont /GillSansMT-ExtCondensedBold def


/TitleMaxHeightProportionInnerRadius 1.5 def

/CircletextsMinCopies 4 def
/CircletextMaxFontSizeProportionRadius 0.0973 def

/BackgroundTextsGlasses true def
/BackgroundTextsGlassesTexts [ GlassesOnSheets length {(63)} repeat ] def
/BackgroundTextsPrePour false def
/BackgroundTextsGlassesPaintCode {clip 8.64 setlinewidth 0.90625 setgray stroke} def  % On AHB's printer, "Grey intensity 90625 looks perfect." 

/PlaceNamesMaxFontSizeAbsolute 288 def

/MarginT 24      def  % Top
Software version: 23:00 Thursday 3rd October 2013.

At 433 pages + 2 log pages = 435 pages, the longest set of placemats yet made by me, and hence probably by this software. There is lots going on.
  • The port data starts in PortData, and is then decanted in to Titles, Circlearrays, and TitlesCorkDisplay. This simplified re-ordering of the wines as draft placemats were made, arrays automatically being kept synchronised. The decanting is slightly more general-case than was used. PortData contains arrays of length 3: an abbreviation, a long name, a vintage. But what if an item is of length ≥4? Then the fourth item would be in Belowtitles. But this complexity was redundant: all are of length 3, and all have the same Vintage.
  • Observe the long definition of the ‟Bros” part of BBR, all just to get a dot under a smaller ‘s’. Perhaps it was gratuitous. The code was copied from one of the more obscure manual pages (in early 2021 moved to GitHub).
  • In August 2013 the headers were re-parameterised, greatly simplifying having different headers in different sessions.
  • PrePourNumCopies was zero for blank ports.
  • NamesPlaceNames is a new parameter, also coded in August 2013 for this tasting. It is an array of Names-like arrays. Indeed, its first three items are plain Names, being the PlaceNames for the three sessions. Next come the ‘food names’ for the three sessions. (After printing it emerged that more names would have been better: at each session, Names for the drinking table, Names for the eating table, and food names for the latter. Even more pages!)
  • GlassesOnSheets has every page being exactly five glasses, even if one of those glasses is blank. GlassesOnTastingNotePages is the same but with the blanks removed.
  • GlassesClusteredOnVoteRecorders contains parts of GlassesOnTastingNotePages for the ‟1963 Vintage Port Of The Session” questions, but the whole of GlassesOnTastingNotePages for ‟Port Of The Weekend”. GlassesClusteredOnCorkDisplay omits the last of those.
  • Three sessions? Which meant lots of use of the PageOrdering! parameters: PageOrderingNonDecanterLabelGlasses, PageOrderingTastingNotePages, PageOrderingDecantingNotes, PageOrderingVoteRecorder, PageOrderingCorkDisplay, PageOrderingDecanterLabels and PageOrderingPlaceNames. Also the new parameter again coded for this placemat PageOrderingSections, which breaks the PDF’s table of contents into sections. (It was easy to do, and adds elegance; see example on right.)
  • /GillSansMT-Condensed: me like. Expect to see this again. But the cork-display pages showed the long shipper name rather than the abbreviation, so on these pages the titles were shown in CircletextFont (= /BookmanOldStyle) for consistency of kerning.
  • An uncomplicated but worthwhile use of BackgroundTextsGlasses. However, the default grey in BackgroundTextsGlassesPaintCode is 15÷16 = 0.9375, which was ‟a little too light” on AHB’s printer, so replaced with 0.90625 = 29÷32 = 14½÷16. 
User avatar
jdaw1
Dow 1896
Posts: 24118
Joined: 14:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Thursday 31st October 2013, at The Bung Hole, with the theme ‟All Hallows’ Eve: Remember the Dead (Blinded and Decorated)” (placemats, review of the evening as a whole, planning and arrangements).

Image Image Image

Code: Select all

/Circlearrays [
	[ (Julian Wiseman) ]
	[ (Tom Archer) ]
	[ (Dirk Niepoort) ]
	[ (Wolfgang Starz) ]
	[ (Ray Cook) ]
	[ (Dave Mitchell) ]
	[ (Rob Coombes) ]
	[ (+) ]
] def

/Titles [
	(JDAW)
	(THRA)
	(EDN)
	(WS)
	(RLC)
	(DFM)
	(RAYC)
	(+)
] def

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

/Names [ Titles aload pop pop () ] def

/HeadersLeft [
	0  [(The Bung Hole, Thursday 31) {SuperscriptOn} (st) {SuperscriptOff} ( October 2013)]
] def  % /HeadersLeft
/HeadersCenter [
	0  [(All Hallows) /quoteright ( Eve: Remember the Dead (Blinded and Decorated))]
] def  % /HeadersCenter

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=7627&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2013/20131031_all_hallows_eve.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

/TitlesFont     /Firecat-Medium def
/CircletextFont /LucidaBlackletter def
/NamesFont      /AmericanTypewriter-Light def
Software version: 23:00 Thursday 3rd October 2013.

Elementary use of parameters, despite the fancy fonts.
User avatar
jdaw1
Dow 1896
Posts: 24118
Joined: 14:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Thursday 19st December 2013, at The Bell, with the traditional theme of ‟Unknown Shipper, Peculiar Friends, Revisited” (sticky labels and other paperwork, planning and arrangements).

(In following diagram lilac is edge of label, green is boundary of writing zone; neither of these colours will print.)
Image
Image

Code: Select all

/NumberWords [
	(One) 
	[(T) {-0.09 Kern} (wo)]
	(Three) 
	[(F) {-0.09 Kern} (our)] 
	(Five) (Six) (Seven) (Eight) (Nine) 
	[(T) {-0.09 Kern} (en)]
	(Eleven) 
	[(T) {-0.09 Kern} (welve)] 
	(Thirteen) 
	[(F) {-0.09 Kern} (ourteen)]
	(Fifteen) (Sixteen) (Seventeen) (Eighteen) (Nineteen) 
	[(T) {-0.09 Kern} (wenty)] 
	[(T) {-0.09 Kern} (wenty-One)]
	[(T) {-0.09 Kern} (wenty-) {-0.09 Kern} (T) {-0.09 Kern} (wo)]
	[(T) {-0.09 Kern} (wenty-) {-0.09 Kern} (Three)]
	[(T) {-0.09 Kern} (wenty-F) {-0.09 Kern} (our)]
	[(T) {-0.09 Kern} (wenty-Five)]
	[(T) {-0.09 Kern} (wenty-Six)]
] def  % /NumberWords

/JDAW [(JDA) {-0.10 Kern} (W)] def
/Wolfgang [(W) {-0.092 Kern} (olfgang)] def

/SnowTopCapsSuperscriptOn {0 CurrentFontSize 0.4 mul rmoveto  CurrentFontName CurrentFontSize 2 div selectfont} bind def
/SnowTopCapsSuperscriptOff {CurrentFontName CurrentFontSize 2 mul selectfont  0 CurrentFontSize -0.4 mul rmoveto} bind def

/Titles [
	[JDAW {SnowTopCapsSuperscriptOn} (1) {SnowTopCapsSuperscriptOff}]  [JDAW {+0.03 Kern SnowTopCapsSuperscriptOn} (2) {SnowTopCapsSuperscriptOff}]  (SV99)  (SV00)
	[(THRA) {-0.08 Kern SnowTopCapsSuperscriptOn} (1) {SnowTopCapsSuperscriptOff}]  [(THRA) {-0.04 Kern SnowTopCapsSuperscriptOn} (2) {SnowTopCapsSuperscriptOff}]
	[(PW) {SnowTopCapsSuperscriptOn} (1) {SnowTopCapsSuperscriptOff}]  [(PW) {+0.03 Kern SnowTopCapsSuperscriptOn} (2) {SnowTopCapsSuperscriptOff}]
	[(DJ) {-0.02 Kern SnowTopCapsSuperscriptOn} (1) {SnowTopCapsSuperscriptOff}]  [(DJ) {+0.03 Kern SnowTopCapsSuperscriptOn} (2) {SnowTopCapsSuperscriptOff}]
	(RLC)
	(HM58)
	counttomark 24 exch sub 1 exch 1 exch {5 string cvs} for
] def  % /Titles

/Circlearrays [
	0 1 Titles length 1 sub {/i exch def Titles i get dup (1) eq {pop exit} {[exch dup (HM58) eq {pop (Hatch Mansfield) (1858)} if]} ifelse} for
	i 1 Titles length 1 sub {[ exch dup  NumberWords exch i sub get exch Titles exch get ]} for
] def
/Belowtitles [ Titles length {()} repeat ] def
/Overtitles [ Titles length {()} repeat ] def

/SubtitlesTastingNotes Overtitles def

/Names [
	[(T) {-0.04 Kern} (om)]
	(Alex) (Rob) (Ray) (Axel) (Phil) (Christopher) (Julian)
	Wolfgang
	(Daniel) 
	() dup
] def

/NamesVoteRecorder [ Names {
	dup Wolfgang eq {pop [(W) {-0.09 Kern} (o.)]} if
	dup (Christopher) eq {pop [(Ch.)]} if
	dup (Julian) eq {pop [(J) {-0.02 Kern} (u.)]} if
	dup (Daniel) eq {pop [(Da.)]} if
} forall ] def


/HeadersLeft [
	0  [(The Bell, Thursday 19) {SuperscriptOn} (th) {SuperscriptOff} ( December 2013)]
] def  % /HeadersLeft
/HeadersCenter [
	0  [(Unknown Shipper, Peculiar Friends, Revisited)]
] def  % /HeadersCenter
/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=6804&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2013/20131219_bell.pdf)   (Latest version this placemat)
	(http://www.thebellatwenden.co.uk/)  (The Bell, Wendens Ambo, Saffron Walden)
	(http://www.streetmap.co.uk/map.srf?x=551093&y=236398&pc=CB11+4JY)  (Map, CB11 4JY)
] def

/DecanterLabelsNumCopies 1 def
/PlaceNames false def
/PrePourNumCopies  0  def
/CorkDisplay false def
/NonDecanterLabelGlassesNumCopies 0 def
/StickyLabelsNumCopies {StickyLabelsTypeThis 0 eq {2} {1} ifelse} def
/StickyLabelsOrientationAutomatic {[true false] StickyLabelsTypeThis get} def  % of labels, not of paper. Boolean.

/GlassesClusteredOnVoteRecorders [  {GlassesOnTastingNotePages} dup  ] def  % triple-depth array, same length as VoteRecorderTopTexts and VoteRecorderShowTotalRow

/TitlesFont     /SnowtopCaps def
/OvertitlesFont  /Helvetica-Bold def

/FontSizesRatioTitlesMin 1.056 def  % enough keep "9" and "10" the same size

/VoteRecorderTopTexts [  % Must be same length as GlassesClusteredOnVoteRecorders, each sub-array containing some number of TopTexts
	[
		(What is it?)
	]
	[
		(Wine Of The Night?)
		[/quoteleft (Peculiar) /quoteright ( Of The Night?)]
		[/quoteleft (Unknown) /quoteright ( Of The Night?)]
		(Non-Port Of The Night?)
		(Q:)
	]
] def  % Must be same length as GlassesClusteredOnVoteRecorders
/VoteRecorderShowTotalRow [ true false ] def  % Must be same length as GlassesClusteredOnVoteRecorders
/VoteRecorderTotalColTitle [(T) {-0.04 Kern} (ot.)] def
/VoteRecorderTotalRowTitle [(Total)] def
Software version: 12:30 Wednesday 18th December 2013.
  • As always for The Bell, sticky labels contain what is on the glasses sheets, but there aren’t glasses sheets! Yes there are, but zero copies are printed: /NonDecanterLabelGlassesNumCopies 0 def.
  • Kludgey construction of Titles and Circlearrays.
  • NamesVoteRecorder constructed from Names, with some long names shortened.
User avatar
jdaw1
Dow 1896
Posts: 24118
Joined: 14:03 Thu 21 Jun 2007
Location: London
Contact:

Re: Parameters for the placemat software

Post by jdaw1 »

Thursday 2nd January 2014, in The Bung Hole, Blind (placemats, planning and arrangements, review).

Image Image

Code: Select all

/Names [
	(DB)  % Dr Dirk
	(WPS)
	[(RA) {-0.06 Kern} (YC)]
	[(JDA) {-0.06 Kern} (W)]
	()
] def

/Circlearrays [
	[ [(Dr) {-0.06 Kern} (. Dirk)] ]
	[ [(Mr) {-0.06 Kern} (. Starz)] ]
	[ [(Mr) {-0.06 Kern} (. Coombes)] ]
	[ [(Mr) {-0.06 Kern} (. Wiseman)] ]
	[ /dagger ]
	[ /daggerdbl ]
] def

/Titles [
	Names aload pop pop
	Circlearrays counttomark 1 sub 1 index length 1 index sub getinterval {0 get} forall
] def

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

/HeadersLeft [
	0  [(The Bung Hole, Thursday 2) {SuperscriptOn} (nd) {SuperscriptOff} ( January 2014)]
] def  % /HeadersLeft
/HeadersCenter [
	0  [(Bring a Bottle to Share)]
] def  % /HeadersCenter

/ExternalLinks [  % Even-length array of strings: http://URL0, Descriptor0, http://URL1, Descriptor1, ...
	(http://www.theportforum.com/viewtopic.php?t=7868&view=unread#unread)   (Thread on ThePortForum.com)
	(http://www.jdawiseman.com/2014/20140102_blind.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

/CrossHatchingTitles true def

/VoteRecorderCrossedBox {VoteRecorderShowTotalRow VoteRecorderSheetNum GetEU dup {pop Titles WithinTitles get ASCIIfy ThisName ASCIIfy eq ThisName Names 3 get ne and ThisName length 0 gt and} if} def
Software version: 00:30 Sunday 29th December 2013.

Other than an addition clause in VoteRecorderCrossedBox, all vanilla.
User avatar
jdaw1
Dow 1896
Posts: 24118
Joined: 14: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
Dow 1896
Posts: 24118
Joined: 14: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
Dow 1896
Posts: 24118
Joined: 14: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
Dow 1896
Posts: 24118
Joined: 14: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
Dow 1896
Posts: 24118
Joined: 14: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
Dow 1896
Posts: 24118
Joined: 14: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
Dow 1896
Posts: 24118
Joined: 14: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
Dow 1896
Posts: 24118
Joined: 14: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
Dow 1896
Posts: 24118
Joined: 14: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
Dow 1896
Posts: 24118
Joined: 14: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
Dow 1896
Posts: 24118
Joined: 14: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
Dow 1896
Posts: 24118
Joined: 14: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
Dow 1896
Posts: 24118
Joined: 14: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
Dow 1896
Posts: 24118
Joined: 14: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
Dow 1896
Posts: 24118
Joined: 14: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
Dow 1896
Posts: 24118
Joined: 14: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
Dow 1896
Posts: 24118
Joined: 14: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
Dow 1896
Posts: 24118
Joined: 14: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
Dow 1896
Posts: 24118
Joined: 14: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
Dow 1896
Posts: 24118
Joined: 14: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
Dow 1896
Posts: 24118
Joined: 14: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
Dow 1896
Posts: 24118
Joined: 14: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
Dow 1896
Posts: 24118
Joined: 14: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
Dow 1896
Posts: 24118
Joined: 14: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
Dow 1896
Posts: 24118
Joined: 14: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