From: Bill McClain <wmcclain@salamander.com>
Subject: Re: Hanging punctuation
Date: Sun, 9 Mar 2003 08:30:33 -0600 [thread overview]
Message-ID: <20030309083033.1abbcf56.wmcclain@salamander.com> (raw)
In-Reply-To: <200303090907.32731.john@wexfordpress.com>
[-- Attachment #1: Type: text/plain, Size: 1063 bytes --]
On Sun, 9 Mar 2003 09:07:32 -0500
John Culleton <john@wexfordpress.com> wrote:
> I have been able to use optical alignment in pdfetex by reading
> carefully Han The Thanh's dissertation, but I haven't puzzled out the
> Context implementation. Perhaps someone who has could post an example
> that works for them.
I've attached an example where I've hand-tuned the margin kerning for
Sabon. Note this is just my subjective evaluation; I adjust the
parameters from time to time and the script is always "in progress".
If anyone wants to see the resulting pdf, just mail me. It's only 29k
but I didn't want to clog the list further.
Very important: note the [hanging] typescript at the bottom of
type-sabon.tex. It won't work without that.
This is also described in the "margin kerning" section at:
http://home.salamander.com/~wmcclain/context-help.html
-Bill
--
Sattre Press Curiosities of the Sky
http://sattre-press.com/ by Garrett Serviss
info@sattre-press.com http://csky.sattre-press.com/
[-- Attachment #2: sample.tex --]
[-- Type: text/plain, Size: 203 bytes --]
\usetypescriptfile[type-sabon]
\usetypescript [serif] [hanging] [sabon]
\usetypescript[Sabon]
\setupbodyfont[Sabon]
\setupalign[hanging]
\showframe
\starttext
\input tufte \input knuth \par
\stoptext
[-- Attachment #3: type-sabon.tex --]
[-- Type: text/plain, Size: 12726 bytes --]
%
% Adobe Sabon
%
\usetypescriptfile[type-buy]
\loadmapfile[texnansi-adobe-sabon.map]
\starttypescript [serif] [sabon, sabon-oldstyle] [texnansi]
\definefontsynonym [Sabon-Roman] [texnansi-sar] [encoding=texnansi]
\definefontsynonym [Sabon-Bold] [texnansi-sab] [encoding=texnansi]
\definefontsynonym [Sabon-Italic] [texnansi-sai] [encoding=texnansi]
\definefontsynonym [Sabon-Bold-Italic] [texnansi-sabi] [encoding=texnansi]
\definefontsynonym [Sabon-Roman-SmallCaps][texnansi-sarsc] [encoding=texnansi]
\definefontsynonym [Sabon-Italic-OSF] [texnansi-saiof] [encoding=texnansi]
\definefontsynonym [Sabon-Bold-OSF] [texnansi-sabof] [encoding=texnansi]
\definefontsynonym [Sabon-Bold-Italic-OSF][texnansi-sabio] [encoding=texnansi]
\stoptypescript
\starttypescript [serif] [sabon] [name]
\usetypescript[serif][fallback]
\definefontsynonym [Serif] [Sabon-Roman]
\definefontsynonym [SerifBold] [Sabon-Bold]
\definefontsynonym [SerifItalic] [Sabon-Italic]
\definefontsynonym [SerifBoldItalic] [Sabon-Bold-Italic]
\definefontsynonym [SerifCaps] [Sabon-Roman-SmallCaps]
% the regular old-style figures are in the small-caps file
\definefontsynonym [OldStyle] [Sabon-Roman-SmallCaps]
\stoptypescript
\starttypescript [Sabon]
\definetypeface [Sabon] [rm] [serif] [sabon] [default] [encoding=texnansi]
\stoptypescript
\starttypescript [serif] [sabon-oldstyle] [name]
\usetypescript[serif][fallback]
\definefontsynonym [Serif] [Sabon-Roman]
\definefontsynonym [SerifBold] [Sabon-Bold-OSF]
\definefontsynonym [SerifItalic] [Sabon-Italic-OSF]
\definefontsynonym [SerifBoldItalic] [Sabon-Bold-Italic-OSF]
\definefontsynonym [SerifCaps] [Sabon-Roman-SmallCaps]
% the regular old-style figures are in the small-caps file
\definefontsynonym [OldStyle] [Sabon-Roman-SmallCaps]
\stoptypescript
\starttypescript [SabonOldStyle]
\definetypeface [SabonOldStyle] [rm] [serif] [sabon-oldstyle] [default] [encoding=texnansi]
\stoptypescript
\startfonthandling [sabon]
\defineprotrudefactor ? 0 .05
\defineprotrudefactor ! 0 0
\defineprotrudefactor ' 0 .4
\defineprotrudefactor ` .4 0
\defineprotrudefactor ( .05 0
\defineprotrudefactor ) 0 .05
\defineprotrudefactor [ .05 0
\defineprotrudefactor ] 0 .05
\defineprotrudefactor , 0 .4 % comma is pretty heavy
\defineprotrudefactor - 0 .5
\defineprotrudefactor . 0 .5
\defineprotrudefactor : 0 .2
\defineprotrudefactor ; 0 .2
\defineprotrudefactor rightupperninequote 0 .5
\defineprotrudefactor leftupperninequote .4 0
\defineprotrudefactor endash 0 .3
\defineprotrudefactor emdash 0 .2
\defineprotrudefactor hyphen 0 .5
\defineprotrudefactor A .05 .05
\defineprotrudefactor B 0 0
\defineprotrudefactor C 0 0
\defineprotrudefactor D 0 0
\defineprotrudefactor E 0 0
\defineprotrudefactor F 0 0
\defineprotrudefactor G 0 0
\defineprotrudefactor H 0 0
\defineprotrudefactor I 0 0
\defineprotrudefactor J 0 0 % .05 seems heavy on the left
\defineprotrudefactor K 0 .05
\defineprotrudefactor L 0 .1
\defineprotrudefactor M .05 .05
\defineprotrudefactor N .05 .05
\defineprotrudefactor O 0 0
\defineprotrudefactor P 0 0
\defineprotrudefactor Q 0 0
\defineprotrudefactor R 0 .05
\defineprotrudefactor S 0 0
\defineprotrudefactor T .1 .1
\defineprotrudefactor U 0 0
\defineprotrudefactor V .1 .1
\defineprotrudefactor W 0 0 % .05 too much?
\defineprotrudefactor X .05 .05
\defineprotrudefactor Y .1 .1
\defineprotrudefactor Z 0 0
\defineprotrudefactor a .1 .05
\defineprotrudefactor b 0 .1
\defineprotrudefactor c .05 .05
\defineprotrudefactor d .05 0
\defineprotrudefactor e .05 .05
\defineprotrudefactor f 0 -.05 % big overhang on the right
\defineprotrudefactor g .05 0
\defineprotrudefactor h 0 0.05
\defineprotrudefactor i 0 0
\defineprotrudefactor j 0 0
\defineprotrudefactor k 0 .12
\defineprotrudefactor l 0 0
\defineprotrudefactor m 0 .05
\defineprotrudefactor n 0 .05
\defineprotrudefactor o .03 .03 % .05 seems too much
\defineprotrudefactor p 0 .1
\defineprotrudefactor q .1 0
\defineprotrudefactor r 0 .1
\defineprotrudefactor s 0 0 % .05 seems too much
\defineprotrudefactor t 0 .05
\defineprotrudefactor u 0 0
\defineprotrudefactor v .05 .05
\defineprotrudefactor w .05 .05
\defineprotrudefactor x .05 .05
\defineprotrudefactor y .05 .1 % long diagonal stroke
\defineprotrudefactor z 0 0
% \inheritprotrudefactor Acircumflex A
% \inheritprotrudefactor acircumflex a
% \inheritprotrudefactor Ccircumflex C
% \inheritprotrudefactor ccircumflex c
% \inheritprotrudefactor Ecircumflex E
% \inheritprotrudefactor ecircumflex e
% \inheritprotrudefactor Gcircumflex G
% \inheritprotrudefactor gcircumflex g
% \inheritprotrudefactor Hcircumflex H
% \inheritprotrudefactor hcircumflex h
% \inheritprotrudefactor Icircumflex I
% \inheritprotrudefactor icircumflex i
% \inheritprotrudefactor Jcircumflex J
% \inheritprotrudefactor jcircumflex j
% \inheritprotrudefactor Ocircumflex O
% \inheritprotrudefactor ocircumflex o
% \inheritprotrudefactor Scircumflex S
% \inheritprotrudefactor scircumflex s
% \inheritprotrudefactor Ucircumflex U
% \inheritprotrudefactor ucircumflex u
% \inheritprotrudefactor Wcircumflex W
% \inheritprotrudefactor wcircumflex w
% \inheritprotrudefactor Ycircumflex Y
% \inheritprotrudefactor ycircumflex y
%
% \inheritprotrudefactor Agrave A
% \inheritprotrudefactor agrave a
% \inheritprotrudefactor Egrave E
% \inheritprotrudefactor egrave e
% \inheritprotrudefactor Igrave I
% \inheritprotrudefactor igrave i
% \inheritprotrudefactor Ograve O
% \inheritprotrudefactor ograve o
% \inheritprotrudefactor Ugrave U
% \inheritprotrudefactor ugrave u
% \inheritprotrudefactor Ygrave Y
% \inheritprotrudefactor ygrave y
%
% \inheritprotrudefactor Atilde A
% \inheritprotrudefactor atilde a
% \inheritprotrudefactor Itilde I
% \inheritprotrudefactor itilde i
% \inheritprotrudefactor Ntilde N
% \inheritprotrudefactor ntilde n
% \inheritprotrudefactor Otilde O
% \inheritprotrudefactor otilde o
% \inheritprotrudefactor Utilde U
% \inheritprotrudefactor utilde u
%
% \inheritprotrudefactor Adiaeresis A
% \inheritprotrudefactor adiaeresis a
% \inheritprotrudefactor Ediaeresis E
% \inheritprotrudefactor ediaeresis e
% \inheritprotrudefactor Idiaeresis I
% \inheritprotrudefactor idiaeresis i
% \inheritprotrudefactor Odiaeresis O
% \inheritprotrudefactor odiaeresis o
% \inheritprotrudefactor Udiaeresis U
% \inheritprotrudefactor udiaeresis u
% \inheritprotrudefactor Ydiaeresis Y
% \inheritprotrudefactor ydiaeresis y
%
% \inheritprotrudefactor Aacute A
% \inheritprotrudefactor aacute a
% \inheritprotrudefactor Cacute C
% \inheritprotrudefactor cacute c
% \inheritprotrudefactor Eacute E
% \inheritprotrudefactor eacute e
% \inheritprotrudefactor Iacute I
% \inheritprotrudefactor iacute i
% \inheritprotrudefactor Lacute L
% \inheritprotrudefactor lacute l
% \inheritprotrudefactor Nacute N
% \inheritprotrudefactor nacute n
% \inheritprotrudefactor Oacute O
% \inheritprotrudefactor oacute o
% \inheritprotrudefactor Racute R
% \inheritprotrudefactor racute r
% \inheritprotrudefactor Sacute s
% \inheritprotrudefactor sacute s
% \inheritprotrudefactor Uacute U
% \inheritprotrudefactor uacute u
% \inheritprotrudefactor Yacute Y
% \inheritprotrudefactor yacute y
% \inheritprotrudefactor Zacute Z
% \inheritprotrudefactor zacute z
%
% \inheritprotrudefactor Dstroke D
% \inheritprotrudefactor dstroke d
% \inheritprotrudefactor Hstroke H
% \inheritprotrudefactor hstroke h
% \inheritprotrudefactor Tstroke T
% \inheritprotrudefactor tstroke t
%
% \inheritprotrudefactor Cdotaccent C
% \inheritprotrudefactor cdotaccent c
% \inheritprotrudefactor Edotaccent E
% \inheritprotrudefactor edotaccent e
% \inheritprotrudefactor Gdotaccent G
% \inheritprotrudefactor gdotaccent g
% \inheritprotrudefactor Idotaccent I
% \inheritprotrudefactor idotaccent i
% \inheritprotrudefactor Zdotaccent Z
% \inheritprotrudefactor zdotaccent z
%
% \inheritprotrudefactor Amacron A
% \inheritprotrudefactor amacron a
% \inheritprotrudefactor Emacron E
% \inheritprotrudefactor emacron e
% \inheritprotrudefactor Imacron I
% \inheritprotrudefactor imacron i
% \inheritprotrudefactor Omacron O
% \inheritprotrudefactor omacron o
% \inheritprotrudefactor Umacron U
% \inheritprotrudefactor umacron u
%
% \inheritprotrudefactor Ccedilla C
% \inheritprotrudefactor ccedilla c
% \inheritprotrudefactor Kcedilla K
% \inheritprotrudefactor kcedilla k
% \inheritprotrudefactor Lcedilla L
% \inheritprotrudefactor lcedilla l
% \inheritprotrudefactor Ncedilla N
% \inheritprotrudefactor ncedilla n
% \inheritprotrudefactor Rcedilla R
% \inheritprotrudefactor rcedilla r
% \inheritprotrudefactor Scedilla S
% \inheritprotrudefactor scedilla s
% \inheritprotrudefactor Tcedilla T
% \inheritprotrudefactor tcedilla t
%
% \inheritprotrudefactor Ohungarumlaut O
% \inheritprotrudefactor ohungarumlaut o
% \inheritprotrudefactor Uhungarumlaut U
% \inheritprotrudefactor uhungarumlaut u
%
% \inheritprotrudefactor Aogonek A
% \inheritprotrudefactor aogonek a
% \inheritprotrudefactor Eogonek E
% \inheritprotrudefactor eogonek e
% \inheritprotrudefactor Iogonek I
% \inheritprotrudefactor iogonek i
% \inheritprotrudefactor Uogonek U
% \inheritprotrudefactor uogonek u
%
% \inheritprotrudefactor Aring A
% \inheritprotrudefactor aring a
% \inheritprotrudefactor Uring U
% \inheritprotrudefactor uring u
%
% \inheritprotrudefactor Abreve A
% \inheritprotrudefactor abreve a
% \inheritprotrudefactor Ebreve E
% \inheritprotrudefactor ebreve e
% \inheritprotrudefactor Gbreve G
% \inheritprotrudefactor gbreve g
% \inheritprotrudefactor Ibreve I
% \inheritprotrudefactor ibreve i
% \inheritprotrudefactor Obreve O
% \inheritprotrudefactor obreve o
% \inheritprotrudefactor Ubreve U
% \inheritprotrudefactor ubreve u
%
% \inheritprotrudefactor Ccaron C
% \inheritprotrudefactor ccaron c
% \inheritprotrudefactor Dcaron D
% \inheritprotrudefactor dcaron d
% \inheritprotrudefactor Ecaron E
% \inheritprotrudefactor ecaron e
% \inheritprotrudefactor Lcaron L
% \inheritprotrudefactor lcaron l
% \inheritprotrudefactor Ncaron N
% \inheritprotrudefactor ncaron n
% \inheritprotrudefactor Rcaron R
% \inheritprotrudefactor rcaron r
% \inheritprotrudefactor Scaron S
% \inheritprotrudefactor scaron s
% \inheritprotrudefactor Tcaron T
% \inheritprotrudefactor tcaron t
% \inheritprotrudefactor Ycaron Y
% \inheritprotrudefactor ycaron y
% \inheritprotrudefactor Zcaron Z
% \inheritprotrudefactor zcaron z
%
% \inheritprotrudefactor AEligature E
% \inheritprotrudefactor aeligature e
% \inheritprotrudefactor Lstroke I
% \inheritprotrudefactor lstroke o
% \inheritprotrudefactor Ostroke O
% \inheritprotrudefactor ostroke o
% \inheritprotrudefactor OEligature O
% \inheritprotrudefactor oeligature o
%
% \inheritprotrudefactor Ssharp S
% \inheritprotrudefactor ssharp s
% \inheritprotrudefactor IJligature J
% \inheritprotrudefactor ijligature j
%
% \inheritprotrudefactor aumlaut a
% \inheritprotrudefactor eumlaut e
% \inheritprotrudefactor iumlaut i
% \inheritprotrudefactor oumlaut o
% \inheritprotrudefactor uumlaut u
%
% \inheritprotrudefactor Aumlaut A
% \inheritprotrudefactor Eumlaut E
% \inheritprotrudefactor Iumlaut I
% \inheritprotrudefactor Oumlaut O
% \inheritprotrudefactor Uumlaut U
%
% \inheritprotrudefactor Lslash L
% \inheritprotrudefactor lslash l
% \inheritprotrudefactor Dslash D
% \inheritprotrudefactor dslash d
% \inheritprotrudefactor Oslash O
% \inheritprotrudefactor oslash o
%
% \inheritprotrudefactor Eszett S
% \inheritprotrudefactor eszett s
%
% \inheritprotrudefactor Thorn P
% \inheritprotrudefactor thorn p
%
\stopfonthandling
\starttypescript [serif] [hanging] [sabon]
\setupfontsynonym [Serif] [handling=sabon]
% not handling these yet
%\setupfontsynonym [SerifBold] [handling=bold]
%\setupfontsynonym [SerifSlanted] [handling=slanted]
%\setupfontsynonym [SerifItalic] [handling=italic]
%\setupfontsynonym [SerifBoldSlanted] [handling=boldslanted]
%\setupfontsynonym [SerifBoldItalic] [handling=bolditalic]
\stoptypescript
next prev parent reply other threads:[~2003-03-09 14:30 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-03-08 21:15 Re: lowerleftdoubleninequote Wolfgang Werners-Lucchini
2003-03-09 14:07 ` Re: Hanging punctuation WAS lowerleftdoubleninequote John Culleton
2003-03-09 14:30 ` Bill McClain [this message]
2003-03-09 21:55 ` lowerleftdoubleninequote Hans Hagen
-- strict thread matches above, loose matches on Subject: below --
2014-06-22 18:51 Hanging punctuation Tomas Hala
2014-06-23 8:39 ` Wolfgang Schuster
2014-06-24 7:42 ` Tomas Hala
2014-06-24 18:56 ` Pablo Rodriguez
2014-06-24 21:36 ` Wolfgang Schuster
2014-07-01 20:20 ` Tomas Hala
2003-01-29 21:29 hanging punctuation Patrick Gundlach
2003-01-29 23:45 ` Hans Hagen
2003-01-30 10:17 ` Patrick Gundlach
2003-01-31 23:02 ` Hans Hagen
2003-02-02 14:34 ` Patrick Gundlach
2003-02-02 17:23 ` Adam Lindsay
2003-02-02 17:49 ` Patrick Gundlach
2002-06-22 4:20 Idris S Hamid
2002-06-22 12:37 ` John Culleton
2002-06-22 14:54 ` Bill McClain
2002-06-23 23:27 ` Idris S Hamid
2002-06-24 13:44 ` Bill McClain
2002-06-22 16:31 ` Idris S Hamid
2002-06-23 23:04 ` Hans Hagen
2002-06-23 23:01 ` Hans Hagen
2002-05-27 6:59 Denis B. Roegel
2002-05-27 11:37 ` Bill McClain
2001-07-10 4:55 Lutz Haseloff
2001-07-10 6:57 ` Hans Hagen
2001-07-10 8:57 ` Lutz Haseloff
2001-07-10 15:00 ` Hans Hagen
2001-07-11 5:02 ` Lutz Haseloff
2001-07-11 9:01 ` Hans Hagen
2001-07-11 15:07 ` Eckhart Guthöhrlein
2001-07-11 15:40 ` Hans Hagen
2001-05-10 14:10 Patrick Gundlach
2001-05-11 16:05 ` Hans Hagen
2001-05-11 18:37 ` Patrick Gundlach
2001-05-13 13:33 ` Hans Hagen
2001-05-13 15:19 ` Patrick Gundlach
2001-05-18 10:03 ` Hans Hagen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20030309083033.1abbcf56.wmcclain@salamander.com \
--to=wmcclain@salamander.com \
--cc=ntg-context@ntg.nl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).